| author | Alan Dipert
<alan@tailrecursion.com> 2026-08-09 21:18:54 UTC |
| committer | Alan Dipert
<alan@tailrecursion.com> 2026-08-09 21:18:54 UTC |
| parent | 7725460af74c2f2a8e9349e772d10d2cddea48a6 |
| archive/techworks/SHA256SUMS | +102 | -0 |
| archive/techworks/items/2013-trilug-raspberry-pi/event.headers | +19 | -0 |
| archive/techworks/items/2013-trilug-raspberry-pi/event.html | +318 | -0 |
| archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.en-orig.vtt | +16792 | -0 |
| archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.en.vtt | +16792 | -0 |
| archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.ffprobe.json | +130 | -0 |
| archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.info.json | +1 | -0 |
| archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.mkv | +3 | -0 |
| archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.webp | +0 | -0 |
| archive/techworks/items/2013-trilug-raspberry-pi/redirect.headers | +19 | -0 |
| archive/techworks/items/2013-trilug-raspberry-pi/redirect.html | +7 | -0 |
| archive/techworks/items/2013-trilug-raspberry-pi/slides.headers | +11 | -0 |
| archive/techworks/items/2019-software-engineering-shiny/BBSW_2019_program.pdf | +0 | -0 |
| archive/techworks/items/2019-software-engineering-shiny/program.headers | +20 | -0 |
| archive/techworks/items/clojure-brave-true-foreword/source.headers | +25 | -0 |
| archive/techworks/items/clojure-brave-true-foreword/source.html | +180 | -0 |
| archive/techworks/items/pluralsight-clojure-fundamentals/source.headers | +20 | -0 |
| archive/techworks/items/pluralsight-clojure-fundamentals/source.html | +8627 | -0 |
| archive/techworks/items/pluralsight-clojure-fundamentals/thumbnail.headers | +18 | -0 |
| archive/techworks/items/pluralsight-clojure-fundamentals/thumbnail.jpg | +0 | -0 |
| archive/techworks/manifest.tsv | +104 | -0 |
| md/TechWorks.md | +8 | -3 |
| md/TechWorks/2009-09-03-Scala-a-Scalable-Language.pdf | +0 | -0 |
| md/TechWorks/2013-01-10_RaspberryPi.pdf | +0 | -0 |
| md/TechWorks/ClojureBraveTrueForeword.html | +44 | -0 |
| md/TechWorks/berrycam-d24a0c8.tar.gz | +0 | -0 |
| md/TechWorks/clojurebridge-curriculum-c8605f6.tar.gz | +0 | -0 |
| md/TechWorks/decks/barcamp-2012/index.html | +419 | -0 |
| md/TechWorks/decks/barcamp-2012/slide-assets/cheating.jpg | +0 | -0 |
| md/TechWorks/decks/barcamp-2012/slide-assets/common.css | +57 | -0 |
| md/TechWorks/decks/barcamp-2012/slide-assets/compilers.jpg | +0 | -0 |
| md/TechWorks/decks/barcamp-2012/slide-assets/lisp.png | +0 | -0 |
| md/TechWorks/decks/barcamp-2012/slide-assets/org-html-slideshow.js | +193 | -0 |
| md/TechWorks/decks/barcamp-2012/slide-assets/presenter.css | +97 | -0 |
| md/TechWorks/decks/barcamp-2012/slide-assets/projection.css | +118 | -0 |
| md/TechWorks/decks/barcamp-2012/slide-assets/retina_wood.png | +0 | -0 |
| md/TechWorks/decks/barcamp-2012/slide-assets/screen.css | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/BFF.gif | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/adder_code.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/bg.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/cooldog.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/devflow.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/ferris.jpg | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/git-repo-1.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/git-repo-2.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/git-repo-5.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/git-repo-6.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/git1.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/git2.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/git3.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/git4.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/git5.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/git6.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/git7.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/git8.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/git9.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/kittcar.jpg | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/linus_beer.jpg | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/pdp11-unix.jpg | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/tada.jpg | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/testsyo.png | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/images/who-cares.jpg | +0 | -0 |
| md/TechWorks/decks/gitrubytesting/index.html | +5264 | -0 |
| md/TechWorks/decks/oscon2012-clojure/index.html | +3354 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/Clojure.svg | +87 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/arrow-right.png | +0 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/background.jpeg | +0 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/clojure-interactive-evaluation.svg | +693 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/clojurescript-browser-repl.svg | +907 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/clojurescript-compilation.svg | +606 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-linked-list-1.svg | +328 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-linked-list-2.svg | +385 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-first.svg | +393 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-initial.svg | +322 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-rest.svg | +445 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-second.svg | +464 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-first.svg | +445 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-initial.svg | +479 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-rest.svg | +425 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-second.svg | +446 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-structural-sharing.svg | +551 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-tree-1.svg | +477 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-tree-2.svg | +694 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/common.css | +62 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-01.svg | +278 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-02.svg | +287 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-03.svg | +645 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-04.svg | +853 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-05.svg | +421 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/john-mccarthy.jpg | +0 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/macro-evaluation.svg | +515 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/org-html-slideshow.js | +193 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/presenter.css | +97 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/projection.css | +120 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/screen.css | +0 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/structure-and-semantics.svg | +260 | -0 |
| md/TechWorks/decks/oscon2012-clojure/slide-assets/traditional-evaluation.svg | +420 | -0 |
| md/TechWorks/demos/flapjax/Glass_TTY_VT220.ttf | +0 | -0 |
| md/TechWorks/demos/flapjax/cljs_flapjax_frp.pdf | +0 | -0 |
| md/TechWorks/demos/flapjax/demo.css | +50 | -0 |
| md/TechWorks/demos/flapjax/index.html | +24 | -0 |
| md/TechWorks/demos/flapjax/main.js | +20887 | -0 |
| md/TechWorks/gitrubytesting-presentation-84744ec.tar.gz | +0 | -0 |
| md/TechWorks/scala-presentation-82e2d00.tar.gz | +0 | -0 |
| md/TechWorks/triclojure-hoplon-deck-7afa060.tar.gz | +0 | -0 |
| md/TechWorksArchive.md | +12 | -0 |
diff --git a/archive/techworks/SHA256SUMS b/archive/techworks/SHA256SUMS
index c307215..dff48a5 100644
--- a/archive/techworks/SHA256SUMS
+++ b/archive/techworks/SHA256SUMS
@@ -1,49 +1,87 @@
+006d48a0aef9f25d336b70f2449d8d3f54b5d1f776b666d1d42aab10ac473435 md/TechWorks/decks/gitrubytesting/images/git1.png
011e0d9a2fe99efd195230d320a217e221cb640acef5537698e245fb3892724f archive/techworks/items/rstudio-make-shiny-fast/original.ffprobe.json
0262515e872a123dfe8d026dd00464f221a4c980261be636c5bfa557fa6872f8 md/TechWorks/media/video/vimeo-144997124.oembed.json
03c08f2783b560406102e762f3763fc4ae31ffd75d13d941c01583ba85160cd3 md/TechWorks/authored/jlt/index.html
+04d20f97d66d4e35fc1878a910c1a7340e3d4675ad94bf91ea2cf61d6fccc639 md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-linked-list-1.svg
05eadbd88559a3e786d88b11c9b92f248ef7fbc226de0d52239f585c2f7eed8b md/TechWorks/ShinyServer154.html
06b57f9625fa07b949d4620e81fe6ad739e6d77c23737af0ef616d9420e7e342 md/TechWorks/authored/wondr/posts/querying-trees-in-r.html
+0706d38fb5ecdd3722fa5d4694bae768c113aaf22af8a78f1da3a34117fa67b3 archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.webp
08e4b9fc431b0b77df656df5989870b0c16af396fcb1dc09af96ce94b116143d archive/techworks/items/rstudio-integrating-react-shiny/captions.en.vtt
+094b38dafb55def06ed22df8b866ec2c7a09a3295fb5852d537cef2f3577d27d md/TechWorks/decks/gitrubytesting/images/devflow.png
0adfe2c4588a6fc2f1fc39863924cc1a4a01c56c80c2e23982e3c79dee2b259a md/TechWorks/media/video/xaxF5RDdVRE.mp4
+0d429f85eb02fc6e046eec7ee1ef1ae9507007c4978e0b83dd1994a70df62e3e archive/techworks/items/2013-trilug-raspberry-pi/redirect.headers
0e17f2b1f5a0e76d542824cc778049a830661f2f2b617d8eaa40c35c47121726 archive/techworks/items/2005-netbsd-workstation/linux-com-live.html
0e8252a4757f6fe252b6a2122f0bc15a8818ef12cfa47164c70f4d99caab9433 md/TechWorks/authored/jlt/style.css
+131afee7583c98dfe76d36d6860e66357a9c695f68cb15732b9847465acca3e1 md/TechWorks/decks/gitrubytesting/images/git3.png
1576ebf4bb6d964314fa18bb78a60efdf5c3b518b6a7ac69549cb2b9a63a7bef archive/techworks/items/2019-ocrug-interview/2022-replay.headers
15db67752d75ddcdb3faead339302cb38d88ba30d3d860d499c9ef9768c47290 archive/techworks/items/rstudio-shiny-server-releases/1.5.4-source.headers
16c40b3f183bd656dda0303c53a56a85ec20e2426909b60b4b7904e920002208 md/TechWorks/flapjax-demo-b719782.tar.gz
+18416d9b0edcfde7b86485b460d1b1e2f112efdd3c099a23c10df42fdde21689 archive/techworks/items/pluralsight-clojure-fundamentals/thumbnail.headers
+1ac1525f93a95e3154969ce154f791d98e34ebae554b8c8b6ccbdda7234fc210 md/TechWorks/demos/flapjax/main.js
1e876de98c65f221e3b437892e93a5c1ef911b023e85e78975769e015d95152e md/TechWorks/media/video/tSw3x0rVh88.info.json
1e9951de2d98335c45976f7dce0b5429469343eab20a5c17e5d3ed597f1fd7b4 md/TechWorks/2018-12-17-CommonLispOrangeCombinator.pdf
1ffaf85e002e59c2069268881878ee5b63a85ed26a930ae79d0dfb9ea1124afb archive/techworks/items/rstudio-make-shiny-fast/source.html
+2037688dd8f3a3cc7781133ed521e1502c2fa1c9673ca96ed414c6f69c8d90fc md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-first.svg
2058ab1dd1f4ce00ad2dc7df9c5bab0bb2fec352de7264bafb4066cf92d67cd5 archive/techworks/items/cognicast/111-cover.jpg
2119a64870a684d6f0e67527129948096aab553aa08da38503200ec85f11c11f archive/techworks/items/infoq-programming-with-values/source.headers
+21aa34ee7e3ad4dd597164ddeb104e591c7d95ef0330c79226373e9e43ccfbd8 archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.info.json
227727c95169600d4f300d37f76215997bb343697679baf2025f2340b016b9c3 archive/techworks/items/clojurestream-s4-e19/soundcloud-2020.headers
+235d968a0c9d8ddfc4d5a33ddac2aa0980758e408014f43e041c670fdef3fc1f md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-tree-2.svg
23aa4b7e40ecb6f2cf4e3835ed2e0742361c247fc27b4b5c919ddf65215787e5 md/TechWorks/media/video/wVXjExRiFy0.jpg
23d791b87ee82d998e6c8a01614555b475acc106e3b302f59600eae9380d127e archive/techworks/items/clojurestream-s4-e19/soundcloud-cdn-cdx.json
2451f37102f046afd1262e68006a28ea7c64cefa66e040f946e85947a42427b4 archive/techworks/items/clojurestream-s4-e19/artwork-replay.headers
+267b61f459c7bf7d16de4c6f4e57deafa13a21cc00624059fc2a837e66fda5fd md/TechWorks/decks/oscon2012-clojure/slide-assets/arrow-right.png
268c30cc7e1400e9e8b9d5d1b6d8e19cf53291de68b0adda0847bc0b09e50732 archive/techworks/items/infoq-programming-with-values/video.ffprobe.json
+27bd5cc2bbd6bccdd71020249aa8d7b58dcd2d8cb5b36ee476d9523876f8eb8f md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-second.svg
+285db7a349583cd968584174296508081643906051c2de0cbd8018ec5068729d archive/techworks/items/2013-trilug-raspberry-pi/event.html
+28cb36d3ab40511699c72b4008929220cf01f2ff378b92892a8fba5425233832 md/TechWorks/decks/barcamp-2012/slide-assets/projection.css
295dcd7f2ea293bb9e3bb46417d787a934e739739a98bccf7031276c6366a280 md/TechWorks/ocrug-2018-11-27-71dd0b1.tar.gz
+29da8f29b6711962dede7b2f5ecbdf981526b89a972c562b99e41fe03f382a08 md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-second.svg
2a2b25998617233beb48a5e213dc22fe80a561f0d576c625beeb34f9feae1c4d md/TechWorks/media/video/HGuTqsVh59w.mp4
+2c20ea08804b073be81b41cc7dbff29e0184ebffda4455bb58647ba95521f721 md/TechWorks/decks/gitrubytesting/images/git5.png
+2c721a3fb085f73cc1f4364d3d628bd252e13d4854baa9c96e25008043593873 md/TechWorks/decks/barcamp-2012/slide-assets/compilers.jpg
+2db45a0e2da01c336fea6b6d4c49207519e1083b224e0a3a1c1b926bdc4e960c md/TechWorks/decks/barcamp-2012/slide-assets/cheating.jpg
2fa46c61ffce23593ef18c65bdeea96bff452d233c0b75f348709ee58f85a040 md/TechWorks/media/video/wVXjExRiFy0.info.json
+2fee1bfcf5ada10104fa724c8a51dab8cefb49006a0011fef1a1e4369fbb1805 md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-02.svg
301d5486cbfa0fa2ea20587884084cbc82f46785f0d650bc388d6e7b6d906fbe archive/techworks/items/rstudio-load-testing-shiny/original.mp4
+3213965bbe547e4faa41620fd84623a0a43c962b08bd88c93fd8045b331aa4ce md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-05.svg
33b3861b8d5deeb4596682207f44dbe534bcea015f25849d53f5d696c9decfec archive/techworks/items/cognicast/052.html
348263dc01b3b86799759f5bcbfce0afe32726a675580a520ddc7a39ca868d83 archive/techworks/items/cognicast/112-cover.jpg
3499a6da9bdce3dd105c4f8faf8bdcb7310f3bc64deb09096c8f5937518e40cc archive/techworks/items/infoq-programming-with-values/source.html
+354755d0a0eeb772b110844a7d17100a2137cc9f3ec153d9b9aa668bc947c113 md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-initial.svg
36efb38dd1f1fc8682b6f2e70e4ce21bad65e0b235bc236fb105d79911fd337b md/TechWorks/barcamp2012-jsonscript-7e4dcf7.tar.gz
37bd6847601d6bb5c25639fa100b9d0db33a3694679ea780761ab1c417249ccf archive/techworks/items/infoq-frp-javelin/audio.ffprobe.json
37eb2a8885fae16fc6f45b7910a272d9564246cf140ecd72db756fbdc3efa852 md/TechWorks/oscon2012-clojure-5ac233f.tar.gz
380d401a5861632a524375c92f278598dda20a84fd51110a394e5b8e56c95726 archive/techworks/items/cognicast/112.html
+38da91f7c836f694697ce8be4b998fea809fefa2f8f744b6a0766696d7295d20 md/TechWorks/decks/oscon2012-clojure/slide-assets/common.css
39071c475b53ebb55c213f4dbb0cc731b9f9da31f7afe5591afbe8f59cd80789 md/TechWorks/OCRUGInterview/headshot.jpg
39d6df4a9fa92d1c897cf40b79f79efaba56d0862ed8bcf80a7c7aa65ef73b63 md/TechWorks/media/audio/s4-e19-hoplon-with-alan-dipert-source.html
+3a00e044698d556109cd605696506244452c74dbf962b854d1e76bb5456d8986 archive/techworks/items/2019-software-engineering-shiny/BBSW_2019_program.pdf
3a1a72783cd199b05cfb3073931edba2742a3f45264af748d09142e4ff6a4e90 md/TechWorks/authored/wondr/posts/tail-recursion-in-r.html
+3a5b95ac0b1d82b7022fa51989f0e7bddd7ebbbd0eb4793d18cc000f8424843f md/TechWorks/decks/oscon2012-clojure/slide-assets/clojure-interactive-evaluation.svg
3aad0c50ebc6588f3a86aa4dde39e312f72c80680a6781ea7afb52dfc9780499 md/TechWorks/media/video/wVXjExRiFy0.en-orig.vtt
3aad0c50ebc6588f3a86aa4dde39e312f72c80680a6781ea7afb52dfc9780499 md/TechWorks/media/video/wVXjExRiFy0.en.vtt
+3c0bb4bd8b9ab59ccf3128ec66cfb775f98fee4dee25783a00987de1c92f8416 md/TechWorks/decks/gitrubytesting/images/git6.png
3c2821ff1e6fd6306e4a47397a545248546faae0814fb1bb1ae1b44d1fe4109d md/TechWorks/authored/wondr/style.css
+3c668ca8dbb0338dfbfda72e866c6151a202c26fdf1f94fba39227106f17cd88 md/TechWorks/decks/gitrubytesting/images/git7.png
3ced799f7d1d7972530d496fd448c560d97e02f0654c266df205ebb20627e450 archive/techworks/items/2019-ocrug-interview/headshot.headers
3e53dd7268fc07f4b2c65d3915fce2ab4c227f00e37ccef6a07467b334ce7455 archive/techworks/items/rstudio-make-shiny-fast/wistia.json
+4118ef817d78a47ac3ca5669bff4a0388b9ea15eee05d78cd2d237ad4b845a13 md/TechWorks/decks/gitrubytesting/images/adder_code.png
+430df79c889d233683733960864a6059e13fa3be5ae656b2883bddb411794c0f archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.en-orig.vtt
+430df79c889d233683733960864a6059e13fa3be5ae656b2883bddb411794c0f archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.en.vtt
+43480288b281d39fc7f09d3a0bc7c05449359ba6fd2f01468e8d74cfe498e177 md/TechWorks/decks/barcamp-2012/slide-assets/common.css
438ca7957efe63073364b69b0fecb6385d7b9ddcc9efdc0943198847927401cb archive/techworks/items/2005-netbsd-workstation/linux-com-live.warc.gz
+43fc439246201eb4bbb0f0acdacae02752b34eff1052960711c20df435d3bb75 md/TechWorks/decks/barcamp-2012/index.html
446379435661cd8a75647936a7b4ca130dfdfffb7e5fcc4f767aa11d2f922d13 md/TechWorks/2020-01-28-RStudio-Conf-Integration-Testing-ePoster.pdf
+44c6ccd9e3a63d7b73961428f329a19f574e2ccf997b9fb3bf01851f300f8a4f md/TechWorks/decks/gitrubytesting/images/cooldog.png
4562fcd751a5331289d86e3f40eb67870160e637b88b8ff3be0cf33524a1bc5a md/TechWorks/media/audio/cognicast-111.mp3
+46a6c0183f8e8078948d38be02c66bcaf0681331e8effe36be542eead2a27b95 md/TechWorks/decks/gitrubytesting/images/git2.png
+46f9c948966705d938d81ca2dc5cc5ccfab10ceb81d8a2c8d35d60b7bc72520d md/TechWorks/decks/barcamp-2012/slide-assets/retina_wood.png
+489ad1ba18a4a8e2838e4a11528b07be789394ecf8c27e23be87ab0a3a537e07 md/TechWorks/decks/gitrubytesting/images/kittcar.jpg
48f8a2f70c107f2791976d16a9a8aaeab187504a87ca8ad9f7e18a4cf0de15b8 archive/techworks/items/rstudio-integrating-react-shiny/source.html
+490741c3ce341bd990bba77ef3ffae8e49f03b605c2eec899b36c39fad855f41 md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-rest.svg
491e8c06c61655acec516828ae148acbc14c4c108e0605f4937fcbbeae7cd4ef archive/techworks/items/rstudio-load-testing-shiny/still.png
+49b66e273df5e2f9c47c19f8a8b0ef4b5efb68a89fa457bb8aef566169fab398 md/TechWorks/decks/gitrubytesting/index.html
49b6ec526b72e3c2a8655557e715b51ca8c999b2ebef8bad5a0efb19fc69b94c md/TechWorks/media/video/44Q9ew9JH_U.en-orig.vtt
49b6ec526b72e3c2a8655557e715b51ca8c999b2ebef8bad5a0efb19fc69b94c md/TechWorks/media/video/44Q9ew9JH_U.en.vtt
4a2815c9d0b1cf0de5cba85b0b1cf22944a910fb28de1f90afb1e9c50717d987 md/TechWorks/Dipert-FRP_in_ClojureScript_with_Javelin.pdf
@@ -52,21 +90,36 @@
4c5d6c5356688e57b2b1fdf7f99772903b113c7c3359f80ed8c58b17fe22d4a2 archive/techworks/items/clojurestream-s4-e19/soundcloud-cdx.json
4cee7dddb59d50de9c253f43481e2ce8c4f9db06280cb2dd7fadba7f782c2eed archive/techworks/items/2019-ocrug-interview/cdx.json
4d1a8c2ba5ab3f962cabf7079fbe683fbc223b78e91c87da038f2069b49ef9a7 archive/techworks/items/rstudio-shiny-server-releases/1.5.4-source.html
+4ddcbaf994e67562646cdcee1123e798457d017c691ab27feeb414bfef8bd40e md/TechWorks/decks/gitrubytesting/images/git9.png
4fa2b18b4df657cc4fe0b1dcc61fac3a179bb7da636cf90c06de98b38efe7e6f md/TechWorks/wombat-dbd34f4.tar.gz
+4ff4af718350ab5471be22487bb3c9ee77946e276b0f0dd66ce3b024c0a96206 md/TechWorks/decks/barcamp-2012/slide-assets/lisp.png
524effc3bebb5cf18cf08ddbc8cf3c05dcc3160bdd15687a791f1953b9c8d95c archive/techworks/items/rstudio-integrating-react-shiny/original.ffprobe.json
529d418b5641a4389c1f45381cd83410a773232b1abd98d5613f50b80d5faa03 archive/techworks/items/clojurestream-s4-e19/soundcloud-rss-2021.xml
5330706e824804a97059a9ea78e04ec5b30f3b35cde21e51ca9c999fb9203854 md/TechWorks/media/video/bmHTFo2Rf2w.info.json
53e30a56cab4e4c0e77bb34a6a9fb4ad9604ef15939726d992e0e8b581bf1b1d archive/techworks/items/clojurestream-s4-e19/track-metadata.json
+54e1c5d7fa0cfa998de9431c8ac5396a02ed924c7767b736f6d38391bc5823a8 md/TechWorks/decks/oscon2012-clojure/slide-assets/macro-evaluation.svg
+56b21a1533bdd4dee097b2afb2d37600e46d6cbcdb1b0cb8583f83ff212bd900 md/TechWorks/decks/oscon2012-clojure/slide-assets/structure-and-semantics.svg
572f5d65365c1e07e496613ab5014dfb4d9cdb6483425aa4eea21c046263f88a archive/techworks/items/rstudio-make-shiny-fast/source.headers
+587381cccc4525cd300170bc250d3aca514bbc4c84e3789683842fef91c5bf02 archive/techworks/items/pluralsight-clojure-fundamentals/thumbnail.jpg
+590b349dfcd02ada6e0994e8e2b4ea020aadcfaf6ca04733b2f0dfb1da168c96 md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-linked-list-2.svg
592cd602f71f74cafbafc385156eaa90e1af01eb24373d4d53cb07642c2451f3 archive/techworks/items/cognicast/111.headers
+598574173e60c90655a88c6f5a0ea5f3139c8b69796fe086fbe648b77b77c311 archive/techworks/items/2019-software-engineering-shiny/program.headers
+5bedc4c82781e2d478b53d1779f0dcae0bb536a6e2c40579b0c5c9bcd14867c8 md/TechWorks/decks/gitrubytesting/images/git-repo-5.png
5c3ad4d267d56d117cbfd4de702de2223a4bd2c57ca46727ed7213bf4cfe8742 archive/techworks/items/rstudio-load-testing-shiny/wistia.headers
+5e6bce4030e5151bdf7aa3c9986246953a70e4638a7c12be426bb7ecd24886c2 md/TechWorks/2013-01-10_RaspberryPi.pdf
+635386ec918673b0a650119c29fc1ab96fe7c85105342d585a2f4fa2d3ee53a4 archive/techworks/items/2013-trilug-raspberry-pi/redirect.html
66326358232546ee1a467dc983d144d777d8f039f1b4377a140554fe3b527781 md/TechWorks/media/video/HGuTqsVh59w.en-orig.vtt
66326358232546ee1a467dc983d144d777d8f039f1b4377a140554fe3b527781 md/TechWorks/media/video/HGuTqsVh59w.en.vtt
+69d0276a7a55e4c54dab59bf73fc333a5a272ef23e429811188f00febd2d9780 md/TechWorks/decks/oscon2012-clojure/slide-assets/background.jpeg
+6b0dcc368fa9670e815d1967ad097bba27c2920223460f8a11280e098e3ce515 md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-structural-sharing.svg
7042815f96c300ca25ff9083eb34b6bd63fcb9e68d0892ec283acc07bd9c1f38 archive/techworks/items/rstudio-load-testing-shiny/original.ffprobe.json
+70678f56b3d687a793d0649cd7f5d38d2ded1f788357c12ecbe7f3acac037590 md/TechWorks/scala-presentation-82e2d00.tar.gz
+70babbc4df02b0920bae65598b8ed2d0fa9a08f0ffc377fa3fb1756187ccc017 archive/techworks/items/pluralsight-clojure-fundamentals/source.headers
710b7267a79fe63ee5a3c776dc80d2ca27819149095349387aeb5772767388ac md/TechWorks/ShinyServer156.html
718dea32362c630c4756f539298cddfdc7cb3f941ebd25e303c55e174edd5aa3 md/TechWorks/media/video/44Q9ew9JH_U.webp
72cdfd85e16cd5805fedada83623629eea48ced71b1bdc686e6f513fd7abfa78 archive/techworks/items/rstudio-integrating-react-shiny/original.mp4
733ec4b8005a8be7d96d2ba7daf76263066c9d49c095a1fb6232e7638e4d6adc md/TechWorks/media/video/infoq-programming-with-values.mp4
+734494ecef0a50458ab02416d7a38ca757b10d0fbcbd3fbc9dcd15579b5f1454 md/TechWorks/demos/flapjax/demo.css
7355773d7c4efd3beefc0b75481b20722d33b75c5fb13a2802850eb493a24837 archive/techworks/items/cognicast/052-cover.jpg
73c7a51dec9b771029efe866ccdc013dfdd6807b98e64b853c85e91c2858fe41 archive/techworks/items/2005-netbsd-workstation/linux-com-live.headers
746135f37df7aa246fa753ce0a39d2e7f347424ee65e26eb1ec4343a1d13addd md/TechWorks/authored/wondr/posts/assertions-and-postconditions.html
@@ -74,77 +127,126 @@
76fe6f5dcebea899924ed50454fd1e8a83fc1ebcb3833a1996b14ac22d8d442f md/TechWorks/media/video/xaxF5RDdVRE.en.vtt
7792adfab4495d154d22bcc34d14ea5690dba64ebdebaaf3b3b6105b9d2f2de4 md/TechWorks/authored/wondr/atom.xml
779d526c75f997ad3c12419c9ad9e46c8ea9d905d8181f3c39c790270371a71b md/TechWorks/media/video/TcnzB2tB-8Q.webp
+77ac82b763c36b55cd9dfd145cc64fa8673da529d1b4123934a31f327ab32c19 md/TechWorks/decks/gitrubytesting/images/tada.jpg
+7beddc663de419b9cb3d0f13c29dd4eb1c191664e837531c1baf0878b2dad3f7 archive/techworks/items/clojure-brave-true-foreword/source.headers
7df0a6c61f415cb3f43edb5ac551badb5cb6463e3d2d3ea9167af30f2355ca8b md/TechWorks/media/video/HGuTqsVh59w.webp
7f3712a90c6a608ebdb452fcaf94272babd93a66a93b38c801ba19cfab126fd9 md/TechWorks/media/video/TcnzB2tB-8Q.en-orig.vtt
7f3712a90c6a608ebdb452fcaf94272babd93a66a93b38c801ba19cfab126fd9 md/TechWorks/media/video/TcnzB2tB-8Q.en.vtt
+7f390ec3a82ecf99b291e96990d9ba815c5eb1bd908bdebe01782b703398681f md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-04.svg
816f55d9c770f781381223768e01890064afa345992ed413fce9c5a841d4f8ce archive/techworks/items/clojurestream-s4-e19/artwork-original.jpg
82dd73f4495d57fa0a7235728f5bd6cc5c050acaa341cdc8c00b80d7760a25aa archive/techworks/items/rstudio-load-testing-shiny/source.html
+82ec8c361441b58cdef9e221e8d53edb5931e7ece3a97dde5d575bc7e20ab7c6 md/TechWorks/decks/gitrubytesting/images/git8.png
+830a4af66d2897630624777882ffe794dd8efb61cb10fed7b671d9625124fe79 md/TechWorks/clojurebridge-curriculum-c8605f6.tar.gz
83272bbfc8c1576d7695152609e9bad5ca2441b563405aa6f6da5ba147b73b7e md/TechWorks/authored/wondr/index.html
+835e2eebdfd34fa92880bf32e76041e76ad796907b8390d13ae3e98bb589dd82 md/TechWorks/decks/gitrubytesting/images/pdp11-unix.jpg
+873f0b046d38d6e1690e53d837cbc5dcaa31020192c23b516b95169d7e8aae4e md/TechWorks/decks/oscon2012-clojure/slide-assets/projection.css
87dca0f7c7702bd05c05bc865756d988ff845f10d6e2acb287fe6dcab9b9341e archive/techworks/items/clojurestream-s4-e19/audio-replay.headers
+8932b1b9386c5ff2f6a7fc98bc1fbc133ae327567bc64f4e6b39adfe053201f2 md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-initial.svg
89dc9b1d2ee6c37d3f3ba3892d648d3eb9e9b3c8f93727146eeb19e8d1d6967b archive/techworks/items/rstudio-make-shiny-fast/still.jpg
89fa28704da1fb2151177a109d7321e9168d3616f25fd0f429e4e7ac10bc11f9 archive/techworks/items/rstudio-make-shiny-fast/wistia.headers
8bb253146b27ce8a8b08520b0064b0b34659b1460296ffcd69439c53a401ceab md/TechWorks/authored/jlt/atom.xml
+8c9eb665eecebb5a8199f3297339a490028966fee1cba65f36511247d2d3e53c md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-rest.svg
8dad6ca17579e26ec0c9a1c09ef6a5d2e7a405bbd0f16e7d54f8e66c425c7909 archive/techworks/items/infoq-frp-javelin/video.ffprobe.json
9115f3072d5134e05b08efcea45eb06d8de734fa4931f60250380c77fb9d0ee9 archive/techworks/items/rstudio-integrating-react-shiny/wistia.headers
9156d187f09855a7d1d6fa026dec4956912ac1ce768edbefe721f6565a57f0ba md/TechWorks/media/audio/clojurestream-s4-e19.mp3
+92c2feb1c52804fa75d23f59995b77e23ad108358c6240074f8162e0a331be13 md/TechWorks/ClojureBraveTrueForeword.html
934c2bd9997b9e6603f28308b6fccf0a72d2e30c3bb422effbcf4224ee8d7282 md/TechWorks/gherkin-76dc034.tar.gz
935c7f008b22184aa5f2c494c3b4f085adc4091e400fd616b31d57e23d5cc7ac archive/techworks/items/2019-ocrug-interview/2019-original.html
+947286867e69ad7e8a0f78d92bf7cbd5cfed69de03a6bf061aa898cd5e285563 md/TechWorks/decks/gitrubytesting/images/git4.png
94d65c64f26cc5ba9bfd7377b2ffa8dd7bdb27a93db1cf47a33fc013283312a0 md/TechWorks/media/video/vimeo-144696304.oembed.json
9545dbac6a9c02f1ec6cae11e0c61610a402746309531cf3f67de231dcf6ef3f archive/techworks/items/rstudio-integrating-react-shiny/still.png
9839ad172d31b2915e3eeb9cdf98830d4baf218fab8a5ff804ccedb17e6970d1 md/TechWorks/Cognicast111.html
9840899887818adced5ce626826cc3941dd511312924cd7b77fd83c6d8cc1133 archive/techworks/items/rstudio-shiny-server-releases/1.5.6-source.html
9b5b40432bc71b1da7aeb72a106c524136112e12be1da250e8b01a8d482a262b md/TechWorks/media/video/tSw3x0rVh88.mp4
9b5d26799ed7c9f6d78240a10c09f934444d393e506323b6e2320459f8474533 md/TechWorks/OCRUGInterview.html
+9ba1478796fb333177434674d7c0cfa697c1572031b4fa8cf6963a4515985cd4 md/TechWorks/decks/gitrubytesting/images/testsyo.png
9bdd689419033e4120dad5da97c5da162614f4c13528a49f6e3955d692fed341 md/TechWorks/MyWorkstationOSNetBSD.html
+9c84cbb3d5d485cac72323a10f6372c17767d054bf92471886bc512ce3d133c0 md/TechWorks/decks/gitrubytesting/images/BFF.gif
+9f8a8f129824e123e32d3d96d31374e9d72b20fd1a2d87d2393a390e596fcf41 md/TechWorks/2009-09-03-Scala-a-Scalable-Language.pdf
9ffc964563d278119bf8a0feec54ab7cd41c1dbb1c4e0de058d7d370603cc0d3 md/TechWorks/media/video/44Q9ew9JH_U.info.json
a14dc4ce3d83b1688b13575405f6b2d725d508fa1551d8ebd0b5a81a0b9de46a md/TechWorks/media/video/infoq-frp-javelin.mp4
a15dd034225897ddf87849d027c48c7d3ef0979b2bb17329172c5103e5b7e794 md/TechWorks/media/video/bmHTFo2Rf2w.en-orig.vtt
a15dd034225897ddf87849d027c48c7d3ef0979b2bb17329172c5103e5b7e794 md/TechWorks/media/video/bmHTFo2Rf2w.en.vtt
+a27b8236df5872c6226c65d6adc1a77c69bcc8c16e201c5f61befdaf6dffaf19 md/TechWorks/decks/gitrubytesting/images/git-repo-1.png
a36e25592798eb869f27aefea9fadaa00de5622ef5eb268edd335af69a03c36d archive/techworks/items/cognicast/111.html
a429d707d087867e6fcc7cead42c61dd0204e74e615e90599d56b3ba2357cbb8 archive/techworks/items/rstudio-integrating-react-shiny/captions.headers
a4f289f053abcdb02ac7ff433f4f1aacf279e4470c999cb5e292c31a1f28f4e8 md/TechWorks/2015-04-20_ClojureWestBoot.pdf
a73794c8dd4a4550f2098db3a854959449c0adf623ea4877d3dc13e959b7cacc md/TechWorks/media/video/xaxF5RDdVRE.webp
a7d709bd9848acd265ee0a8837f1045cc29522ec544467b1922d926bbab7a0a7 md/TechWorks/media/video/wVXjExRiFy0.mp4
+a8065e4a0e243e5b2c6e98bdf60400bfad222e7cfd7ef4a21375a92a22d7ee9a archive/techworks/items/2013-trilug-raspberry-pi/event.headers
+a807a73a042bcdf6574169e8abdb5584819ab3f534d40d9013c7009fde81ac1c md/TechWorks/decks/oscon2012-clojure/slide-assets/john-mccarthy.jpg
a85d3c8db5b8b03b215d958101912af1ed776c780ba1a4fcc5a05f1c7819beed archive/techworks/items/cognicast/052.headers
a906f29ababff5e39751e14dcd9e14f74545dd3571d5a0f5c41a3c7641af25d2 md/TechWorks/authored/jlt/code_highlight.css
a906f29ababff5e39751e14dcd9e14f74545dd3571d5a0f5c41a3c7641af25d2 md/TechWorks/authored/wondr/code_highlight.css
+a9aff348b8a3820611205db6d0c5c82c5d452390947c02883ea62cd07e07700f md/TechWorks/decks/oscon2012-clojure/slide-assets/traditional-evaluation.svg
ab2d9ced7bb28bd15e591e765d6b057900460bfef92fb09bc44eae5e68dc0195 archive/techworks/items/rstudio-integrating-react-shiny/source.headers
+ab4d1e461dd03bd236b128de9c76238f58d321dea6b2baa9a17f2e1232c6c39f archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.ffprobe.json
ac5b60c328ac78786f03d96cf889ec4b236f5f0b5aa984e5d318ff6c644cc044 archive/techworks/items/cognicast/112.headers
ace070cf982b935b701a28b767194b82a59b2322986c065e7159aefdfab3dc58 md/TechWorks/media/audio/cognicast-052.mp3
+ad6bd060e8651a883b5b5c0c5d2b0fe776115783f2c8864927549cf7bd03ae93 md/TechWorks/gitrubytesting-presentation-84744ec.tar.gz
+addb9b5c134b189a024bf6b859a7be3a1227023ee7714cc33b2b7ed62a60d6b1 md/TechWorks/decks/gitrubytesting/images/who-cares.jpg
b2872d41daa107619377bd61c92289d562dc78ac69060a5c8bc5e89f817f0ee9 archive/techworks/items/rstudio-make-shiny-fast/original.mp4
b329888a9c0e528192cb24eb4a5dd7644b0e0126d975a8329c5a49fe7b7c0e14 archive/techworks/items/2019-ocrug-interview/2022-replay.html
b439b4b8993805b0163a467d8f18090e3044526ed7e50cd97bb5a32b09cbbc8a md/TechWorks/media/video/HGuTqsVh59w.info.json
+b44ce2cc585d09d97c1f62f8e196600437eac29aca1e9bdc2742f8e553e4203e md/TechWorks/decks/oscon2012-clojure/slide-assets/clojurescript-compilation.svg
+b4e735e4accb6e99cd65fa25ba20f5d01f65b051ad20d624d0941b9bf820d8da md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-first.svg
b720141f594781805b58b0cf682a2aa6227d358df9b5ef27d1fd711737437ea9 archive/techworks/items/infoq-programming-with-values/audio.ffprobe.json
b729a86e1f47a1d797082844e09495a5dab473d5e91b4ccf3973b7644b4a796d archive/techworks/items/rstudio-shiny-server-releases/author.png
+bb4fab43fb5d8ef0fa84f3f977bf63f6eca8642eaa850f0327e432de104bf71e archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.mkv
+bc1cb40c406f0edf0cd7c63a0e01b5dfc941af4afe3a9aff910f9dbc5f057ab8 md/TechWorks/demos/flapjax/cljs_flapjax_frp.pdf
c0b942c1ec79ed851fc8810fc224b3e357c01bce98f957bf63786f4e467a2ed8 md/TechWorks/media/video/TcnzB2tB-8Q.mp4
+c1a3b92d893c4945f2e5465da527a35043aca1d68075417486477a701e89b949 md/TechWorks/decks/barcamp-2012/slide-assets/org-html-slideshow.js
+c1a3b92d893c4945f2e5465da527a35043aca1d68075417486477a701e89b949 md/TechWorks/decks/oscon2012-clojure/slide-assets/org-html-slideshow.js
c318fdba4c6c5caa69baefa238a7b6ecd94afefc8d2c8826a7931028d989fa51 md/TechWorks/media/video/bmHTFo2Rf2w.mp4
c41eb86d39e4e8b46b3340d43b67ef62908132bb62cf81b8d8b66d6665ba5e55 md/TechWorks/media/audio/infoq-frp-javelin.mp3
c44f5ca43719a56aa8b4146dac88674026912bef67d01f7f7661184cd0b470b9 archive/techworks/items/2019-ocrug-interview/timemap.json
+c79729f248f11364c5920f342dfe2a90e7aa5d453bfd37df4cb6e101b382367c md/TechWorks/decks/oscon2012-clojure/slide-assets/clojurescript-browser-repl.svg
cbdb7e0a11b8566c73453ca401b7cc4ef9d2a424eff8d00dee4f1a6e435d89c3 md/TechWorks/media/SHA256SUMS
cff200708de3e324faa0e5a7cd4fce4beaaa9100921c47ac4d81bcb698e151f6 md/TechWorks/media/audio/cognicast-112.mp3
d04ff1f53296811517fd27fb2ed11b4092709558723c36d07f9719a9a4850ca4 md/TechWorks/media/video/bmHTFo2Rf2w.jpg
d13182021b1963e5c6acfcee2e0d65081e914f5842b66ad7612d0f8d900cc9bf archive/techworks/items/rstudio-shiny-server-releases/1.5.6-source.headers
+d1689b5d52035006bf5479bc9819d700e4e239ee60ab695f178da38ba676726d archive/techworks/items/clojure-brave-true-foreword/source.html
d18e8f815f977dec70111afd99457a3f488f516df3e0ffd05015d52b9a8ef05d archive/techworks/items/infoq-frp-javelin/source.headers
d3bc604551b9f39837f4d619d8b61c324b95e6e26afed30a291092bc8d975d02 md/TechWorks/authored/wondr/posts/package-development-windows.html
+d3df1c308d6d98051b51e06a5421ac56dc63cf308b3a94024a480b30c8496613 archive/techworks/items/2013-trilug-raspberry-pi/slides.headers
d6c2893c17b5a2eae5f02674b42253a731cc6ee96fd1b8713d5a759811541590 archive/techworks/items/rstudio-load-testing-shiny/source.headers
d7008a80eacfc904a8c51334564027aa12a579306f668685f3d9934c4ec3d4fc archive/techworks/items/clojurestream-s4-e19/soundcloud-rss-2021.headers
d82843df799752ff13fef3f75599bc683cf22ce5957590aa199a2bbbd018c315 md/TechWorks/authored/jlt/posts/collecting.html
d86e150c967934e25e3c637f4cbf14322e2cfe9fe80aed75d5898dc7fb6f9af6 archive/techworks/items/rstudio-load-testing-shiny/wistia.json
+d8d60969258daf549ebaa75dee72e303bb4032cfd202f977b807b7b83a0b2cee md/TechWorks/demos/flapjax/Glass_TTY_VT220.ttf
d977b0b3706d214f78878695dc9c7870d3ee78bc639f9f5b5774d051a8367df8 md/TechWorks/media/audio/infoq-programming-with-values.mp3
d9feaebbf7dd5f8037be7b60226c1e773f304b479f331a2bea3c1a16338684d4 md/TechWorks/media/video/tSw3x0rVh88.en-orig.vtt
d9feaebbf7dd5f8037be7b60226c1e773f304b479f331a2bea3c1a16338684d4 md/TechWorks/media/video/tSw3x0rVh88.en.vtt
dbdf9ad5674803b9eb8537c17c7b8f2d4a97a00e9e2d83b6c614e1d91dc02643 archive/techworks/items/2019-ocrug-interview/2019-original.headers
+dc07b0df8e99bd30fc28d0bfa5829fdf8bd58bab1ed24dac2dcaeecbcf549557 archive/techworks/items/pluralsight-clojure-fundamentals/source.html
+dc6b504e3d3291965cb18cd875833987f7b47ffc8e897408a26c7e18d1329984 md/TechWorks/decks/gitrubytesting/images/linus_beer.jpg
dd9a11ba5b00ffa08f88a10dce60f10eb61ac83d5439f0a95e7637a8f76d084b md/TechWorks/media/video/TcnzB2tB-8Q.info.json
+dfabdb080e00e53092b72e02b3e8f638e07fe568ebb8c4c639d91cb51762a2d2 md/TechWorks/decks/gitrubytesting/images/ferris.jpg
e307e14633721e10ecdd576af6458d4b1409ddf6f9e42cf3daa4e15e7ffa9b8c md/TechWorks/Cognicast112.html
+e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 md/TechWorks/decks/barcamp-2012/slide-assets/screen.css
+e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 md/TechWorks/decks/oscon2012-clojure/slide-assets/screen.css
+e3b57442ae6b25fb49db2a581422d26f8def1a2dc383747236cdafe393d7ef33 md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-03.svg
+e4898a3525451733e71c17c22b74710a6dca68c65064c20cbc764ee9922ce966 md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-01.svg
e5e57746ea11987744b1acacd6255d24951fddd939b57f1ceaf1b873a3b786bc md/TechWorks/media/video/xaxF5RDdVRE.info.json
e692d52425f09aa632a8c4605dbdb7674d515b20b662fff6fdf441a1f5e60dbf archive/techworks/items/clojurestream-s4-e19/soundcloud-2020.html
e755294547f5b9a19054d29eb837069fe8320fe0aa972872c94becdd8b7d8246 archive/techworks/items/rstudio-shiny-server-releases/author.headers
ea6820d653957fcc86d231b37fab642418a9f8a8991003a30d2a4d70adbd6ce3 md/TechWorks/fast-shiny-da0ea10.tar.gz
eb519fb5da6646d808dc1801803b3d8e35d5d90bf164775c10833cc43be9b340 md/TechWorks/authored/wondr/posts/shiny-inline-markdown.html
ef306bbebe80ee481cf012cf446c563828d93902ee927b0a14dc86e60e7b5efc md/TechWorks/authored/jlt/posts/collecting-macro-edition.html
+f05b26751ae23d5e6352a2a1877e037d8e6e1dd262492db9915150f2dbd6a638 md/TechWorks/berrycam-d24a0c8.tar.gz
+f0923164a543d0fb63691ff1cf564076bd3febad61647703227696d8ac71dead md/TechWorks/decks/gitrubytesting/images/git-repo-6.png
+f0c4046c5705f57ae9b5a3de8db5cb3a4f8a1199d183c570aa305578cf583fc9 md/TechWorks/decks/gitrubytesting/images/bg.png
+f1b637093671124100844ab1aa75702de55de535fca32327116c01ec500df150 md/TechWorks/decks/gitrubytesting/images/git-repo-2.png
f413f0be7acdb4780a2698c2f1b363a5d656cb4b3635cd0352c30a4cd4f0be19 archive/techworks/items/infoq-frp-javelin/source.html
f451fd97f3990482d1ab98a6fe1d335bceb30601b2114289e3937879a437d395 archive/techworks/items/rstudio-integrating-react-shiny/wistia.json
f50e8de09c6a01a8ac8178eec634fb42151ecd83e9fa1de49ee76e862b8b0507 md/TechWorks/media/video/tSw3x0rVh88.jpg
+f79b7668eb5466d2119cfe00b055642e8245af28044a2d52d47be67d8817d23e md/TechWorks/demos/flapjax/index.html
+f7f4733dd10d5bca2c171a9fca48d356f533c7ca8c10ef7ef46db7c16fb5cadb md/TechWorks/decks/oscon2012-clojure/index.html
f878cc08851e69e0a757b86400729bbe6a3882e875a6330e4f178e58887e713a archive/techworks/items/clojurestream-s4-e19/soundcloud-rss-cdx.json
+f89ad0977d130d2fff7597f37dec8914e14d1388c29d1a1c356ebc9389bd064c md/TechWorks/decks/barcamp-2012/slide-assets/presenter.css
+f89ad0977d130d2fff7597f37dec8914e14d1388c29d1a1c356ebc9389bd064c md/TechWorks/decks/oscon2012-clojure/slide-assets/presenter.css
f93ac829f7ae73c768197eb4f47c634a38f123a1f7bacd3b4065927ac1c86c9a md/TechWorks/media/video/44Q9ew9JH_U.mp4
+f9f103a2e4ded6dd619e5c27d43e141736257d2a93043a6150e01aa35826dcb5 md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-tree-1.svg
+fb24fd1e710fa026de230de0cdd6b8fe1208b690d7780f620b9eee638e6f7097 md/TechWorks/triclojure-hoplon-deck-7afa060.tar.gz
fcdc53d3785a9eef7989b3fd4b4cb3ec1715015ba61aaa3cf6a8887aa74822c1 md/TechWorks/2018-09-06-load-testing-shiny-archive.html
+ff2e0fd7602db3c079c43f6506ab569e776ec85b453a22dbb78b14949374adc2 md/TechWorks/decks/oscon2012-clojure/slide-assets/Clojure.svg
diff --git a/archive/techworks/items/2013-trilug-raspberry-pi/event.headers b/archive/techworks/items/2013-trilug-raspberry-pi/event.headers
new file mode 100644
index 0000000..484b7d0
--- /dev/null
+++ b/archive/techworks/items/2013-trilug-raspberry-pi/event.headers
@@ -0,0 +1,19 @@
+HTTP/1.1 301 Moved Permanently
+Date: Sun, 09 Aug 2026 20:54:10 GMT
+Server: Apache
+Strict-Transport-Security: max-age=31536000
+Location: https://trilug.org/2012/11/27/jan-10-meeting-raspberry-pi/
+Content-Length: 327
+Content-Type: text/html; charset=iso-8859-1
+
+HTTP/1.1 200 OK
+Date: Sun, 09 Aug 2026 20:54:10 GMT
+Server: Apache
+Strict-Transport-Security: max-age=31536000
+Last-Modified: Thu, 09 Jul 2026 01:12:13 GMT
+ETag: "5b052-2bdf-656235073c573"
+Accept-Ranges: bytes
+Content-Length: 11231
+X-Ponies: flying pink ones, of course
+Content-Type: text/html
+
diff --git a/archive/techworks/items/2013-trilug-raspberry-pi/event.html b/archive/techworks/items/2013-trilug-raspberry-pi/event.html
new file mode 100644
index 0000000..e94e98d
--- /dev/null
+++ b/archive/techworks/items/2013-trilug-raspberry-pi/event.html
@@ -0,0 +1,318 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+ <!--
+ **
+ * Author: waylau.com
+ * Theme Name: jekyll-bootstrap-blog
+ **
+ -->
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>Jan 10 Meeting: Raspberry Pi</title>
+ <meta name="description" content="">
+ <meta name="keywords" content="" />
+
+ <link rel="stylesheet" href="/css/bootstrap.min.css">
+ <link rel="stylesheet" href="/css/font-awesome.min.css">
+ <link rel="canonical" href="https://trilug.org/2012/11/27/jan-10-meeting-raspberry-pi/">
+ <link rel="alternate" type="application/rss+xml" title="Triangle Linux Users Group" href="https://trilug.org/feed.xml" />
+ <link rel="stylesheet" href="/css/nprogress.css">
+ <link rel="stylesheet" href="/css/lightbox.css">
+ <link rel="stylesheet" href="/css/main.css">
+ <link rel="stylesheet" href="/css/highlight/agate.css">
+ <script src="/scripts/jquery-1.11.2.min.js"></script>
+
+ <script src="/scripts/highlight.pack.js"></script>
+
+ <script>hljs.initHighlightingOnLoad();</script>
+</head>
+
+
+ <body>
+
+ <nav class="navbar navbar-static-top navbar-inverse">
+ <div class="container">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">[TriLUG] Triangle Linux Users Group</a>
+ </div>
+ <div id="navbar" class="navbar-collapse collapse">
+ <ul class="nav navbar-nav navbar-right">
+ <li><a href="/about">About</a></li>
+ <li><a href="/meetings">Meetings</a><li>
+ <li><a href="/interact">Interact</a><li>
+ <li><a href="http://trilug.org/wiki">Wiki</a><li>
+ <li><a href="/contact">Contact</a><li>
+ </ul>
+ </div><!--/.nav-collapse -->
+ </div>
+</nav>
+
+
+ <div class="container">
+ <div class="row">
+ <div class="col-sm-8 blog-main">
+ <div class="post">
+
+ <header class="post-header">
+ <h1 class="post-title">Jan 10 Meeting: Raspberry Pi</h1>
+ </header>
+
+ <article class="post-content">
+ <p><a href="http://raspberrypi.org/"><img src="http://trilug.org/~bfarrow/Raspi_Colour_R-small.png" align=right width=100></a></p>
+
+<p><strong>Topic:</strong> <a href="http://www.raspberrypi.org">Raspberry Pi</a><br />
+<strong>Presenter:</strong> Main Speaker Pete Soper coordinating with a group of Splat Space hackers of Durham NC <br />
+<strong>When:</strong> Thursday, January 10, 7pm<br />
+<strong>Where:</strong> Red Hat HQ, NCSU Centennial Campus, 1801 Varsity Dr, Raleigh, NC<br />
+<strong>Map:</strong> <a href="href=https://maps.google.com/maps?q=red+hat+1801+Varsity+Drive,+Raleigh,+NC&hl=en&sll=35.77418,-78.6761&sspn=0.009592,0.021136&hq=red+hat+1801+Varsity+Drive,+Raleigh,+NC">Google Maps</a><br />
+<strong>Slides:</strong> <a href="/~porter/meetings/2013-01-10_RaspberryPi.pdf">PDF</a><br />
+<strong>Video:</strong> <a href="https://www.youtube.com/watch?v=fDjpAHbB-Mg">YouTube</a><br /></p>
+
+<p>® Raspberry Pi is a trademark of the Raspberry Pi Foundation</p>
+
+<p><strong>Raspberry Pi:</strong></p>
+
+<p>Raspberry Pi is a very inexpensive, richly capable single board computer (SBC)
+designed for educational settings. It features a modest speed ARM chip, a half
+gigabyte of RAM, flash SD, USB, ethernet, graphic and direct digital I/O
+interfaces that work together with a highly capable port of Debian Linux as a
+general purpose computing system that can as easily host your home web server
+or LAN engine as it can keep an eye on your thermostat or dispense cat food
+while you're away.</p>
+
+<p><strong>Synopsis:</strong></p>
+
+<p>In this introduction to Raspberry Pi attendees will get up close and personal
+with the hardware and software combination that is setting a new high water
+mark for price, performance, and useability. Multiple RPi demos in the main
+and conference rooms will be in operation during the meeting to provide the
+best opportunity for hands on experience. Traditional slide presentations
+will cover where RPi came from, what its capabilities are, and its charter
+for driving a wide range of educational opportunities while serving as an
+"instant platform" for a wide range of applications in hobby and light
+commercial settings. The bulk of the meeting will offer demos that go from
+"close to the metal," low level apps encroaching on the traditional domain of
+the Arduino family of SBCs to high level tools such as Clojure (Lisp
+implemented with the Java virtual machine). Join a group of Splat Space
+hackers coordinated by the main speaker as they and other volunteers provide
+a rich introduction to this remarkable $35 device.</p>
+
+<p><strong>Bio:</strong></p>
+
+<p>Alan Dipert is a Clojure programmer working for LonoCloud, Inc. Clojure is a
+Lisp for the JVM that runs nicely on the Raspberry Pi, and in his spare time
+Alan enjoys writing Clojure programs on his Pi to do mostly useless but
+occasionally entertaining things.</p>
+
+<p>Inspired by electronic music to study Electronics, Physics, and Computer
+Science in the 1970's. Peter Reintjes currently uses his skills to make
+interactive music and video projects for SparkCon and to develop and maintain
+exhibits at the North Carolina Museum of Life and Science. He works with
+Arduino, PIC, and a few micro-controllers you haven't heard of, but now keeps a
+Raspberry PI in his toolbag.</p>
+
+<p>Pete Soper is an underemployed software engineer who wrote and worked on system
+software like OS kernels, virtual machines, data communication protocols,
+compilers and runtime environments for five OEMs, three of which he helped
+start from scratch and saw bought by bigger fish. Recently he's looped back to
+embedded development to make data loggers and other gadgets out of off the
+shelf boards and custom PCBs.</p>
+
+
+ </article>
+
+
+
+</div>
+
+ </div>
+
+ <div class="col-sm-3 col-sm-offset-1 blog-sidebar">
+ <div class="row">
+ <img alt="" class="avatar" src="/images/logo.png" >
+ <div >
+ <h4>[TriLUG]</h4>
+ <p>The Linux Users Group of the Triangle. Serving Raleigh, Durham, Chapel Hill, and RTP.</p>
+ </div>
+ </div>
+
+ <div class="row">
+ <h4>Contact</h4>
+ <ul >
+
+ <li>
+ <a href="mailto:trilug@trilug.org">
+ <i class="fa fa-envelope"></i>
+ <span class="username">trilug@trilug.org</span>
+ </a>
+ </li>
+
+
+
+ <li>
+ <a href="https://github.com/trilug">
+ <i class="fa fa-github"></i>
+ <span class="username">trilug</span>
+ </a>
+ </li>
+
+
+
+ <li>
+ <a href="https://twitter.com/trilug">
+ <i class="fa fa-twitter"></i>
+ <span class="username">trilug</span>
+ </a>
+ </li>
+
+
+
+
+
+ <li>
+ <a href="/feed.xml">
+ <i class="fa fa-rss"></i>
+ <span class="username"> RSS</span></a>
+ </li>
+
+ </ul>
+ </div>
+ <!--
+ <div class="row">
+ <h4>Categories</h4>
+
+
+
+<div class="category-box">
+ <ul>
+
+ </ul>
+</div>
+
+ </div>
+
+ <div class="row">
+ <h4>Tags</h4>
+
+
+<div id='tag_cloud'>
+
+</div>
+<script src="/scripts/jquery.tagcloud.js" ></script>
+<script >
+ var jq = jQuery.noConflict();
+
+ jq.fn.tagcloud.defaults = {
+ size: {
+ start: 12,
+ end: 22,
+ unit: 'px'
+ },
+ color: {
+ start: '#F01F00', end: '#C2AF22'
+ }
+ };
+
+ jq(function() {
+ jq('#tag_cloud a').tagcloud();
+ });
+</script>
+ </div>
+-->
+<!-- <div class="row">
+ <h4>Latest Comments</h4>
+ <ul class="ds-recent-comments" data-num-items="10" data-show-avatars="0" data-show-time="0" data-show-title="0" data-show-admin="0" data-excerpt-length="18"></ul>
+ </div>
+ <div class="row">
+ <h4>Recently Visitors</h4>
+ <ul class="ds-recent-visitors" data-num-items="16" data-avatar-size="45" style="margin-top:10px;"></ul>
+ </div>
+-->
+<div class="row">
+ <h4>Donate</h4>
+ <ul>
+ <li><a href="https://triangle-linux-users-group.square.site">Donate with Square</a>
+ </li>
+ </ul>
+</div>
+
+<div class="row">
+ <h4>Links</h4>
+ <ul>
+ <li><a href="/mailing-lists">Mailing Lists</a></li>
+ <li><a href="/meetings">Meetings</a></li>
+ <li><a href="/sponsors">Sponsors</a> and <a href="/sponsor-faq">Sponsorship</a></li>
+ <li><a href="/about-steering">Steering Committee</a></li>
+ <li><a href="/interact">TriLUG IRC</a></li>
+ <li><a href="//trilug.org/wiki/Frequently_Asked_Questions">TriLUG FAQ</a></li>
+ <li><a href="//trilug.org/wiki/Frequently_Asked_Questions#TriLUG_Services">Member Services FAQ</a></li>
+ <li><a href="/articlesofincorporation">Articles of Incorporation</a></li>
+ <li><a href="/policies">By-Laws and Policies</a></li>
+ <li><a href="/speaking">Speaking at TriLUG</a></li>
+ <li><a href="https://trilug.org/cgi-bin/request_membership">Request Membership</a></li>
+ </ul>
+</div>
+
+<div class="row">
+ <h4>Sponsors</h4>
+ <p>Our monthly meetings are hosted by:<br/>
+ <div align="center">
+ <br/>
+ <span style="font-size: 150%"><a href="https://textiles.ncsu.edu/directory/people/wjasper"><img src="/sites/www.trilug.org/images/Warren-Jasper.jpg" style="width: 90px; height: 90px"/><br/>
+ Dr. Warren Jasper</a><br/>
+ <br/>
+ <a href="https://textiles.ncsu.edu/"><img src="/sites/www.trilug.org/images/ncsu_college_of_textiles.png" style="width: 168px"/></a></span><br/>
+ </div>
+ <h4>Hosting Sponsor</h4>
+ <p>Hosting for TriLUG's infrastructure is provided by:<br/>
+ <div align="center">
+ <!-- <span style="font-size: 150%; font-family: sans-serif; font-weight: bold"><a href="https://www.netactuate.com">NetActuate</a></span>-->
+ <a href="http://www.netactuate.com/"><img src="/images/NetActuateColorHorizontal.svg" alt="NetActuate" style="width: 230px"/></a></p>
+ </div>
+ <br/>
+ 3D Printed "TriTuxes" provided by:<br/>
+ <div align="center">
+ <span style="font-size: 150%; font-family: sans-serif; font-weight: bold">Brian Henning</span><br/>
+ </div>
+ </p>
+</div>
+
+
+ </div>
+ </div>
+ </div>
+
+ <hr/>
+
+<footer class="footer">
+ <div class="container">
+ <div> Code licensed under <a rel="license" href="LICENSE">MIT</a>,documentation under <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">CC BY-NC-SA 3.0</a></div>
+ <div>Copyright © 2026 <a href="https://trilug.org">[TriLUG] Triangle Linux Users Group</a><br/></div>
+ <div>Powered by <a href="https://github.com/waylau/jekyll-bootstrap-blog" target="_blank">jekyll-bootstrap-blog</a></div>
+ </div>
+</footer>
+
+
+ <a id="goToTop" href="#">
+ <i class="fa fa-chevron-up fa-3x"></i>
+ </a>
+
+</body>
+
+<script src="/scripts/jquery-1.11.2.min.js"></script>
+<script src="/scripts/nprogress.js"></script>
+<script src="/scripts/bootstrap.min.js"></script>
+<script src="/scripts/main.js" ></script>
+
+
+
+</html>
diff --git a/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.en-orig.vtt b/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.en-orig.vtt
new file mode 100644
index 0000000..f5d8816
--- /dev/null
+++ b/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.en-orig.vtt
@@ -0,0 +1,16792 @@
+WEBVTT
+Kind: captions
+Language: en
+
+00:00:10.799 --> 00:00:14.549 align:start position:0%
+
+do<00:00:11.799><c> you</c><00:00:11.920><c> don't</c><00:00:12.080><c> know</c><00:00:12.240><c> how</c><00:00:12.320><c> to</c><00:00:12.519><c> do</c><00:00:12.639><c> it</c><00:00:13.240><c> it's</c>
+
+00:00:14.549 --> 00:00:14.559 align:start position:0%
+do you don't know how to do it it's
+
+
+00:00:14.559 --> 00:00:17.429 align:start position:0%
+do you don't know how to do it it's
+a<00:00:15.559><c> okay</c>
+
+00:00:17.429 --> 00:00:17.439 align:start position:0%
+a okay
+
+
+00:00:17.439 --> 00:00:19.710 align:start position:0%
+a okay
+so<00:00:18.439><c> um</c><00:00:18.640><c> I'm</c><00:00:18.800><c> going</c><00:00:18.960><c> to</c><00:00:19.160><c> introduce</c><00:00:19.560><c> our</c>
+
+00:00:19.710 --> 00:00:19.720 align:start position:0%
+so um I'm going to introduce our
+
+
+00:00:19.720 --> 00:00:21.750 align:start position:0%
+so um I'm going to introduce our
+steering<00:00:20.160><c> committee</c><00:00:21.119><c> the</c><00:00:21.400><c> steering</c>
+
+00:00:21.750 --> 00:00:21.760 align:start position:0%
+steering committee the steering
+
+
+00:00:21.760 --> 00:00:24.990 align:start position:0%
+steering committee the steering
+committee<00:00:22.119><c> at</c><00:00:22.199><c> the</c><00:00:22.320><c> moment</c><00:00:22.800><c> is</c><00:00:23.240><c> um</c><00:00:24.000><c> myself</c>
+
+00:00:24.990 --> 00:00:25.000 align:start position:0%
+committee at the moment is um myself
+
+
+00:00:25.000 --> 00:00:26.109 align:start position:0%
+committee at the moment is um myself
+Bill
+
+00:00:26.109 --> 00:00:26.119 align:start position:0%
+Bill
+
+
+00:00:26.119 --> 00:00:31.749 align:start position:0%
+Bill
+phah<00:00:27.119><c> Christ</c><00:00:27.519><c> Bal</c><00:00:27.760><c> Homer</c>
+
+00:00:31.749 --> 00:00:31.759 align:start position:0%
+
+
+
+00:00:31.759 --> 00:00:33.990 align:start position:0%
+
+Porter<00:00:32.759><c> and</c>
+
+00:00:33.990 --> 00:00:34.000 align:start position:0%
+Porter and
+
+
+00:00:34.000 --> 00:00:35.590 align:start position:0%
+Porter and
+where
+
+00:00:35.590 --> 00:00:35.600 align:start position:0%
+where
+
+
+00:00:35.600 --> 00:00:41.270 align:start position:0%
+where
+Jeremy<00:00:36.600><c> sorry</c><00:00:36.800><c> you're</c><00:00:37.040><c> hiding</c>
+
+00:00:41.270 --> 00:00:41.280 align:start position:0%
+
+
+
+00:00:41.280 --> 00:00:44.709 align:start position:0%
+
+from<00:00:42.280><c> so</c><00:00:43.000><c> as</c><00:00:43.120><c> you</c><00:00:43.320><c> heard</c><00:00:43.800><c> we</c><00:00:43.960><c> do</c><00:00:44.120><c> not</c><00:00:44.320><c> have</c><00:00:44.440><c> a</c>
+
+00:00:44.709 --> 00:00:44.719 align:start position:0%
+from so as you heard we do not have a
+
+
+00:00:44.719 --> 00:00:46.990 align:start position:0%
+from so as you heard we do not have a
+sponsor<00:00:45.160><c> tonight</c><00:00:45.520><c> so</c><00:00:45.719><c> if</c><00:00:45.840><c> you</c><00:00:46.039><c> feel</c><00:00:46.320><c> generous</c>
+
+00:00:46.990 --> 00:00:47.000 align:start position:0%
+sponsor tonight so if you feel generous
+
+
+00:00:47.000 --> 00:00:48.950 align:start position:0%
+sponsor tonight so if you feel generous
+uh<00:00:47.199><c> feel</c><00:00:47.399><c> free</c><00:00:47.719><c> to</c><00:00:48.199><c> put</c><00:00:48.399><c> more</c><00:00:48.559><c> money</c><00:00:48.840><c> will</c>
+
+00:00:48.950 --> 00:00:48.960 align:start position:0%
+uh feel free to put more money will
+
+
+00:00:48.960 --> 00:00:52.470 align:start position:0%
+uh feel free to put more money will
+leave<00:00:49.199><c> put</c><00:00:49.399><c> them</c><00:00:49.559><c> out</c><00:00:49.719><c> till</c><00:00:50.000><c> the</c><00:00:50.120><c> end</c>
+
+00:00:52.470 --> 00:00:52.480 align:start position:0%
+leave put them out till the end
+
+
+00:00:52.480 --> 00:00:56.029 align:start position:0%
+leave put them out till the end
+um<00:00:53.480><c> Community</c><00:00:54.079><c> announcements</c><00:00:54.879><c> so</c><00:00:55.600><c> who</c><00:00:55.800><c> here</c>
+
+00:00:56.029 --> 00:00:56.039 align:start position:0%
+um Community announcements so who here
+
+
+00:00:56.039 --> 00:00:57.990 align:start position:0%
+um Community announcements so who here
+knows<00:00:56.280><c> of</c><00:00:56.440><c> an</c><00:00:56.640><c> upcoming</c><00:00:57.120><c> meeting</c><00:00:57.520><c> the</c><00:00:57.719><c> next</c>
+
+00:00:57.990 --> 00:00:58.000 align:start position:0%
+knows of an upcoming meeting the next
+
+
+00:00:58.000 --> 00:01:00.029 align:start position:0%
+knows of an upcoming meeting the next
+month<00:00:58.239><c> or</c><00:00:58.399><c> two</c><00:00:58.879><c> that</c><00:00:59.079><c> folks</c><00:00:59.359><c> in</c><00:00:59.519><c> this</c><00:00:59.680><c> room</c>
+
+00:01:00.029 --> 00:01:00.039 align:start position:0%
+month or two that folks in this room
+
+
+00:01:00.039 --> 00:01:01.189 align:start position:0%
+month or two that folks in this room
+with<00:01:00.239><c> find</c>
+
+00:01:01.189 --> 00:01:01.199 align:start position:0%
+with find
+
+
+00:01:01.199 --> 00:01:05.149 align:start position:0%
+with find
+interest
+
+00:01:05.149 --> 00:01:05.159 align:start position:0%
+
+
+
+00:01:05.159 --> 00:01:09.429 align:start position:0%
+
+very<00:01:06.159><c> hey</c><00:01:06.600><c> everyone</c><00:01:07.600><c> um</c><00:01:07.880><c> so</c><00:01:08.360><c> uh</c><00:01:08.560><c> every</c><00:01:08.799><c> year</c><00:01:09.040><c> NC</c>
+
+00:01:09.429 --> 00:01:09.439 align:start position:0%
+very hey everyone um so uh every year NC
+
+
+00:01:09.439 --> 00:01:10.830 align:start position:0%
+very hey everyone um so uh every year NC
+state<00:01:09.720><c> has</c><00:01:09.920><c> a</c><00:01:10.040><c> free</c><00:01:10.240><c> and</c><00:01:10.360><c> open</c><00:01:10.560><c> source</c>
+
+00:01:10.830 --> 00:01:10.840 align:start position:0%
+state has a free and open source
+
+
+00:01:10.840 --> 00:01:12.910 align:start position:0%
+state has a free and open source
+software<00:01:11.200><c> Fair</c><00:01:11.880><c> um</c><00:01:12.000><c> it's</c><00:01:12.119><c> an</c><00:01:12.240><c> unconference</c>
+
+00:01:12.910 --> 00:01:12.920 align:start position:0%
+software Fair um it's an unconference
+
+
+00:01:12.920 --> 00:01:15.469 align:start position:0%
+software Fair um it's an unconference
+style<00:01:13.200><c> event</c><00:01:13.520><c> so</c><00:01:14.080><c> uh</c><00:01:14.280><c> bar</c><00:01:14.600><c> camp</c><00:01:14.960><c> that</c><00:01:15.240><c> camp</c>
+
+00:01:15.469 --> 00:01:15.479 align:start position:0%
+style event so uh bar camp that camp
+
+
+00:01:15.479 --> 00:01:18.030 align:start position:0%
+style event so uh bar camp that camp
+food
+
+00:01:18.030 --> 00:01:18.040 align:start position:0%
+
+
+
+00:01:18.040 --> 00:01:20.270 align:start position:0%
+
+Camp<00:01:19.040><c> bar</c><00:01:19.280><c> camp</c><00:01:19.520><c> that</c><00:01:19.640><c> camp</c><00:01:19.880><c> boot</c><00:01:20.079><c> camp</c>
+
+00:01:20.270 --> 00:01:20.280 align:start position:0%
+Camp bar camp that camp boot camp
+
+
+00:01:20.280 --> 00:01:22.390 align:start position:0%
+Camp bar camp that camp boot camp
+unconference<00:01:21.000><c> so</c><00:01:21.320><c> you</c><00:01:21.520><c> come</c><00:01:21.680><c> in</c><00:01:21.880><c> you</c><00:01:22.079><c> pitch</c><00:01:22.280><c> a</c>
+
+00:01:22.390 --> 00:01:22.400 align:start position:0%
+unconference so you come in you pitch a
+
+
+00:01:22.400 --> 00:01:24.190 align:start position:0%
+unconference so you come in you pitch a
+talk<00:01:22.560><c> and</c><00:01:22.720><c> you</c><00:01:22.840><c> give</c><00:01:22.960><c> a</c><00:01:23.159><c> talk</c><00:01:23.840><c> um</c><00:01:24.040><c> it's</c><00:01:24.119><c> going</c>
+
+00:01:24.190 --> 00:01:24.200 align:start position:0%
+talk and you give a talk um it's going
+
+
+00:01:24.200 --> 00:01:26.149 align:start position:0%
+talk and you give a talk um it's going
+to<00:01:24.280><c> be</c><00:01:24.360><c> on</c><00:01:24.479><c> February</c><00:01:24.880><c> 9th</c><00:01:25.360><c> on</c><00:01:25.520><c> Saturday</c><00:01:25.960><c> over</c>
+
+00:01:26.149 --> 00:01:26.159 align:start position:0%
+to be on February 9th on Saturday over
+
+
+00:01:26.159 --> 00:01:28.510 align:start position:0%
+to be on February 9th on Saturday over
+at<00:01:26.320><c> NC</c><00:01:26.680><c> State</c><00:01:27.119><c> Engineering</c><00:01:27.479><c> Building</c><00:01:27.840><c> 2</c><00:01:28.400><c> which</c>
+
+00:01:28.510 --> 00:01:28.520 align:start position:0%
+at NC State Engineering Building 2 which
+
+
+00:01:28.520 --> 00:01:30.310 align:start position:0%
+at NC State Engineering Building 2 which
+is<00:01:28.720><c> right</c><00:01:28.880><c> across</c><00:01:29.079><c> the</c><00:01:29.159><c> street</c><00:01:29.400><c> from</c><00:01:29.560><c> here</c><00:01:30.159><c> um</c>
+
+00:01:30.310 --> 00:01:30.320 align:start position:0%
+is right across the street from here um
+
+
+00:01:30.320 --> 00:01:32.789 align:start position:0%
+is right across the street from here um
+so<00:01:30.479><c> if</c><00:01:30.560><c> you</c><00:01:30.640><c> want</c><00:01:30.759><c> to</c><00:01:30.920><c> go</c><00:01:31.159><c> just</c><00:01:31.680><c> Google</c><00:01:32.119><c> Nate</c>
+
+00:01:32.789 --> 00:01:32.799 align:start position:0%
+so if you want to go just Google Nate
+
+
+00:01:32.799 --> 00:01:38.469 align:start position:0%
+so if you want to go just Google Nate
+phosphere<00:01:33.280><c> and</c><00:01:33.399><c> you'll</c><00:01:33.799><c> find</c><00:01:34.000><c> the</c>
+
+00:01:38.469 --> 00:01:38.479 align:start position:0%
+
+
+
+00:01:38.479 --> 00:01:41.510 align:start position:0%
+
+information<00:01:39.479><c> two</c><00:01:39.720><c> weeks</c><00:01:40.000><c> from</c><00:01:40.280><c> today</c><00:01:41.159><c> I</c><00:01:41.240><c> will</c>
+
+00:01:41.510 --> 00:01:41.520 align:start position:0%
+information two weeks from today I will
+
+
+00:01:41.520 --> 00:01:44.109 align:start position:0%
+information two weeks from today I will
+be<00:01:41.880><c> presenting</c>
+
+00:01:44.109 --> 00:01:44.119 align:start position:0%
+be presenting
+
+
+00:01:44.119 --> 00:01:48.870 align:start position:0%
+be presenting
+a<00:01:45.119><c> a</c><00:01:45.360><c> review</c><00:01:45.759><c> of</c><00:01:46.680><c> an</c><00:01:46.880><c> edex</c><00:01:47.399><c> course</c><00:01:47.759><c> that</c><00:01:47.880><c> I</c><00:01:48.040><c> took</c>
+
+00:01:48.870 --> 00:01:48.880 align:start position:0%
+a a review of an edex course that I took
+
+
+00:01:48.880 --> 00:01:50.190 align:start position:0%
+a a review of an edex course that I took
+I'll<00:01:49.119><c> take</c>
+
+00:01:50.190 --> 00:01:50.200 align:start position:0%
+I'll take
+
+
+00:01:50.200 --> 00:01:54.429 align:start position:0%
+I'll take
+thanks<00:01:51.200><c> uh</c><00:01:51.560><c> on</c><00:01:52.159><c> AI</c><00:01:53.159><c> in</c><00:01:53.360><c> which</c><00:01:53.640><c> I</c><00:01:53.880><c> wrote</c><00:01:54.159><c> a</c>
+
+00:01:54.429 --> 00:01:54.439 align:start position:0%
+thanks uh on AI in which I wrote a
+
+
+00:01:54.439 --> 00:01:58.109 align:start position:0%
+thanks uh on AI in which I wrote a
+solver<00:01:54.840><c> for</c><00:01:55.159><c> Pac-Man</c><00:01:55.799><c> in</c><00:01:56.560><c> Python</c><00:01:57.560><c> um</c><00:01:57.840><c> so</c><00:01:58.000><c> if</c>
+
+00:01:58.109 --> 00:01:58.119 align:start position:0%
+solver for Pac-Man in Python um so if
+
+
+00:01:58.119 --> 00:02:00.190 align:start position:0%
+solver for Pac-Man in Python um so if
+you're<00:01:58.320><c> interested</c><00:01:58.680><c> in</c><00:01:58.920><c> that</c><00:01:59.079><c> it</c><00:01:59.159><c> will</c><00:01:59.280><c> be</c><00:01:59.399><c> a</c><00:01:59.520><c> b</c>
+
+00:02:00.190 --> 00:02:00.200 align:start position:0%
+you're interested in that it will be a b
+
+
+00:02:00.200 --> 00:02:01.749 align:start position:0%
+you're interested in that it will be a b
+Consulting
+
+00:02:01.749 --> 00:02:01.759 align:start position:0%
+Consulting
+
+
+00:02:01.759 --> 00:02:05.310 align:start position:0%
+Consulting
+Group<00:02:02.759><c> offices</c><00:02:03.360><c> in</c><00:02:03.759><c> carb</c><00:02:04.759><c> it's</c><00:02:04.920><c> two</c><00:02:05.079><c> weeks</c>
+
+00:02:05.310 --> 00:02:05.320 align:start position:0%
+Group offices in carb it's two weeks
+
+
+00:02:05.320 --> 00:02:11.510 align:start position:0%
+Group offices in carb it's two weeks
+from<00:02:05.479><c> today</c><00:02:06.439><c> on</c>
+
+00:02:11.510 --> 00:02:11.520 align:start position:0%
+
+
+
+00:02:11.520 --> 00:02:16.070 align:start position:0%
+
+trz<00:02:12.520><c> all</c><00:02:12.640><c> right</c>
+
+00:02:16.070 --> 00:02:16.080 align:start position:0%
+
+
+
+00:02:16.080 --> 00:02:18.990 align:start position:0%
+
+Ruth<00:02:17.080><c> stand</c><00:02:17.400><c> front</c><00:02:17.560><c> of</c><00:02:17.640><c> our</c><00:02:17.840><c> camera</c><00:02:18.760><c> hey</c>
+
+00:02:18.990 --> 00:02:19.000 align:start position:0%
+Ruth stand front of our camera hey
+
+
+00:02:19.000 --> 00:02:21.350 align:start position:0%
+Ruth stand front of our camera hey
+camera<00:02:20.000><c> uh</c><00:02:20.319><c> somebody</c><00:02:20.640><c> else</c><00:02:20.879><c> might</c><00:02:21.000><c> be</c><00:02:21.120><c> able</c><00:02:21.239><c> to</c>
+
+00:02:21.350 --> 00:02:21.360 align:start position:0%
+camera uh somebody else might be able to
+
+
+00:02:21.360 --> 00:02:23.990 align:start position:0%
+camera uh somebody else might be able to
+fill<00:02:21.519><c> in</c><00:02:21.680><c> better</c><00:02:21.879><c> detail</c><00:02:22.239><c> a</c><00:02:22.400><c> week</c><00:02:22.680><c> from</c><00:02:23.120><c> today</c>
+
+00:02:23.990 --> 00:02:24.000 align:start position:0%
+fill in better detail a week from today
+
+
+00:02:24.000 --> 00:02:26.670 align:start position:0%
+fill in better detail a week from today
+there<00:02:24.239><c> is</c><00:02:24.400><c> a</c><00:02:24.560><c> worldwide</c><00:02:25.000><c> Raspberry</c><00:02:25.440><c> Pi</c><00:02:25.680><c> Meetup</c>
+
+00:02:26.670 --> 00:02:26.680 align:start position:0%
+there is a worldwide Raspberry Pi Meetup
+
+
+00:02:26.680 --> 00:02:28.110 align:start position:0%
+there is a worldwide Raspberry Pi Meetup
+as<00:02:26.840><c> of</c><00:02:27.080><c> this</c><00:02:27.200><c> morning</c><00:02:27.519><c> there's</c><00:02:27.720><c> not</c><00:02:27.879><c> one</c>
+
+00:02:28.110 --> 00:02:28.120 align:start position:0%
+as of this morning there's not one
+
+
+00:02:28.120 --> 00:02:30.670 align:start position:0%
+as of this morning there's not one
+locally<00:02:28.519><c> listed</c><00:02:28.879><c> on</c><00:02:29.000><c> the</c><00:02:29.080><c> Meetup</c><00:02:29.480><c> site</c>
+
+00:02:30.670 --> 00:02:30.680 align:start position:0%
+locally listed on the Meetup site
+
+
+00:02:30.680 --> 00:02:34.229 align:start position:0%
+locally listed on the Meetup site
+we<00:02:30.800><c> can</c><00:02:31.040><c> fix</c><00:02:31.319><c> that</c><00:02:31.760><c> okay</c><00:02:32.519><c> so</c><00:02:33.000><c> uh</c><00:02:33.319><c> the</c><00:02:33.480><c> deal</c><00:02:33.800><c> is</c><00:02:34.200><c> I</c>
+
+00:02:34.229 --> 00:02:34.239 align:start position:0%
+we can fix that okay so uh the deal is I
+
+
+00:02:34.239 --> 00:02:35.589 align:start position:0%
+we can fix that okay so uh the deal is I
+was<00:02:34.360><c> waiting</c><00:02:34.560><c> for</c><00:02:34.640><c> somebody</c><00:02:34.840><c> to</c><00:02:34.920><c> be</c><00:02:35.040><c> like</c><00:02:35.239><c> no</c><00:02:35.480><c> I</c>
+
+00:02:35.589 --> 00:02:35.599 align:start position:0%
+was waiting for somebody to be like no I
+
+
+00:02:35.599 --> 00:02:36.710 align:start position:0%
+was waiting for somebody to be like no I
+just<00:02:35.760><c> I</c><00:02:35.800><c> was</c><00:02:35.920><c> going</c><00:02:36.000><c> to</c><00:02:36.080><c> do</c><00:02:36.200><c> it</c><00:02:36.280><c> tonight</c><00:02:36.560><c> I</c>
+
+00:02:36.710 --> 00:02:36.720 align:start position:0%
+just I was going to do it tonight I
+
+
+00:02:36.720 --> 00:02:39.390 align:start position:0%
+just I was going to do it tonight I
+swear<00:02:37.720><c> um</c><00:02:37.920><c> Make</c><00:02:38.200><c> magazine</c><00:02:38.599><c> is</c><00:02:38.760><c> sponsoring</c><00:02:39.200><c> it</c>
+
+00:02:39.390 --> 00:02:39.400 align:start position:0%
+swear um Make magazine is sponsoring it
+
+
+00:02:39.400 --> 00:02:41.030 align:start position:0%
+swear um Make magazine is sponsoring it
+and<00:02:39.519><c> Sean</c><00:02:39.840><c> Wallace</c><00:02:40.239><c> and</c><00:02:40.400><c> the</c><00:02:40.480><c> other</c><00:02:40.680><c> guy</c><00:02:40.879><c> his</c>
+
+00:02:41.030 --> 00:02:41.040 align:start position:0%
+and Sean Wallace and the other guy his
+
+
+00:02:41.040 --> 00:02:42.630 align:start position:0%
+and Sean Wallace and the other guy his
+name<00:02:41.239><c> I</c><00:02:41.319><c> forgot</c><00:02:41.800><c> who</c><00:02:42.120><c> are</c><00:02:42.280><c> writing</c><00:02:42.519><c> the</c>
+
+00:02:42.630 --> 00:02:42.640 align:start position:0%
+name I forgot who are writing the
+
+
+00:02:42.640 --> 00:02:45.270 align:start position:0%
+name I forgot who are writing the
+beginner<00:02:43.040><c> book</c><00:02:43.200><c> for</c><00:02:43.360><c> raspberry</c><00:02:43.760><c> pie</c><00:02:44.720><c> um</c><00:02:44.959><c> are</c>
+
+00:02:45.270 --> 00:02:45.280 align:start position:0%
+beginner book for raspberry pie um are
+
+
+00:02:45.280 --> 00:02:48.030 align:start position:0%
+beginner book for raspberry pie um are
+hosting<00:02:45.680><c> it</c><00:02:45.879><c> the</c><00:02:46.000><c> Google</c><00:02:46.280><c> Hangout</c><00:02:46.879><c> and</c><00:02:47.080><c> so</c><00:02:47.840><c> uh</c>
+
+00:02:48.030 --> 00:02:48.040 align:start position:0%
+hosting it the Google Hangout and so uh
+
+
+00:02:48.040 --> 00:02:49.869 align:start position:0%
+hosting it the Google Hangout and so uh
+you<00:02:48.200><c> get</c><00:02:48.400><c> together</c><00:02:48.680><c> meetup</c><00:02:49.000><c> group</c><00:02:49.319><c> and</c><00:02:49.519><c> the</c>
+
+00:02:49.869 --> 00:02:49.879 align:start position:0%
+you get together meetup group and the
+
+
+00:02:49.879 --> 00:02:52.229 align:start position:0%
+you get together meetup group and the
+top<00:02:50.319><c> three</c><00:02:50.800><c> I</c><00:02:50.920><c> think</c><00:02:51.200><c> with</c><00:02:51.480><c> attendance</c><00:02:52.040><c> wise</c>
+
+00:02:52.229 --> 00:02:52.239 align:start position:0%
+top three I think with attendance wise
+
+
+00:02:52.239 --> 00:02:54.550 align:start position:0%
+top three I think with attendance wise
+are<00:02:52.360><c> going</c><00:02:52.480><c> to</c><00:02:52.560><c> get</c><00:02:52.640><c> $200</c><00:02:53.280><c> for</c><00:02:53.480><c> food</c><00:02:54.280><c> which</c><00:02:54.400><c> is</c>
+
+00:02:54.550 --> 00:02:54.560 align:start position:0%
+are going to get $200 for food which is
+
+
+00:02:54.560 --> 00:02:57.630 align:start position:0%
+are going to get $200 for food which is
+awesome<00:02:55.000><c> because</c><00:02:55.159><c> you</c><00:02:55.319><c> know</c><00:02:56.040><c> food</c><00:02:57.040><c> um</c><00:02:57.319><c> so</c><00:02:57.519><c> if</c>
+
+00:02:57.630 --> 00:02:57.640 align:start position:0%
+awesome because you know food um so if
+
+
+00:02:57.640 --> 00:02:59.030 align:start position:0%
+awesome because you know food um so if
+somebody<00:02:57.879><c> wants</c><00:02:58.080><c> to</c><00:02:58.200><c> organize</c><00:02:58.640><c> that</c><00:02:58.840><c> making</c>
+
+00:02:59.030 --> 00:02:59.040 align:start position:0%
+somebody wants to organize that making
+
+
+00:02:59.040 --> 00:03:02.830 align:start position:0%
+somebody wants to organize that making
+it<00:02:59.200><c> happen</c><00:02:59.400><c> I'll</c><00:02:59.519><c> be</c><00:02:59.640><c> in</c><00:02:59.879><c> Kansas</c><00:03:00.200><c> so</c><00:03:00.319><c> it's</c><00:03:00.480><c> not</c>
+
+00:03:02.830 --> 00:03:02.840 align:start position:0%
+
+
+
+00:03:02.840 --> 00:03:05.149 align:start position:0%
+
+me<00:03:03.840><c> would</c><00:03:03.920><c> you</c><00:03:04.080><c> be</c><00:03:04.200><c> interested</c><00:03:04.799><c> oh</c><00:03:04.959><c> and</c>
+
+00:03:05.149 --> 00:03:05.159 align:start position:0%
+me would you be interested oh and
+
+
+00:03:05.159 --> 00:03:07.229 align:start position:0%
+me would you be interested oh and
+everybody<00:03:05.720><c> who</c><00:03:06.040><c> attends</c><00:03:06.519><c> gets</c><00:03:06.680><c> a</c><00:03:06.840><c> PDF</c>
+
+00:03:07.229 --> 00:03:07.239 align:start position:0%
+everybody who attends gets a PDF
+
+
+00:03:07.239 --> 00:03:08.630 align:start position:0%
+everybody who attends gets a PDF
+download<00:03:07.640><c> of</c><00:03:07.799><c> the</c><00:03:07.920><c> next</c><00:03:08.080><c> issue</c><00:03:08.360><c> of</c><00:03:08.440><c> Make</c>
+
+00:03:08.630 --> 00:03:08.640 align:start position:0%
+download of the next issue of Make
+
+
+00:03:08.640 --> 00:03:12.789 align:start position:0%
+download of the next issue of Make
+magazine<00:03:09.040><c> which</c><00:03:09.120><c> is</c><00:03:09.200><c> all</c><00:03:09.319><c> about</c><00:03:09.480><c> the</c>
+
+00:03:12.789 --> 00:03:12.799 align:start position:0%
+
+
+
+00:03:12.799 --> 00:03:15.270 align:start position:0%
+
+P<00:03:13.799><c> the</c><00:03:14.080><c> North</c><00:03:14.360><c> Carolina</c><00:03:14.840><c> system</c>
+
+00:03:15.270 --> 00:03:15.280 align:start position:0%
+P the North Carolina system
+
+
+00:03:15.280 --> 00:03:17.470 align:start position:0%
+P the North Carolina system
+administrative<00:03:15.879><c> group</c><00:03:16.440><c> has</c><00:03:16.640><c> a</c><00:03:16.799><c> meeting</c><00:03:17.200><c> on</c>
+
+00:03:17.470 --> 00:03:17.480 align:start position:0%
+administrative group has a meeting on
+
+
+00:03:17.480 --> 00:03:33.149 align:start position:0%
+administrative group has a meeting on
+Monday<00:03:18.159><c> the</c><00:03:18.360><c> 14th</c><00:03:19.519><c> Monday</c><00:03:20.519><c> on</c>
+
+00:03:33.149 --> 00:03:33.159 align:start position:0%
+
+
+
+00:03:33.159 --> 00:03:36.149 align:start position:0%
+
+for<00:03:33.400><c> dessert</c><00:03:34.120><c> uh</c><00:03:34.280><c> we</c><00:03:34.560><c> have</c><00:03:35.560><c> cheesecake</c>
+
+00:03:36.149 --> 00:03:36.159 align:start position:0%
+for dessert uh we have cheesecake
+
+
+00:03:36.159 --> 00:03:38.789 align:start position:0%
+for dessert uh we have cheesecake
+raspberry<00:03:36.640><c> pies</c><00:03:36.959><c> and</c><00:03:37.120><c> my</c><00:03:37.280><c> wife</c><00:03:37.480><c> made</c><00:03:38.360><c> be</c><00:03:38.560><c> out</c>
+
+00:03:38.789 --> 00:03:38.799 align:start position:0%
+raspberry pies and my wife made be out
+
+
+00:03:38.799 --> 00:03:42.190 align:start position:0%
+raspberry pies and my wife made be out
+about<00:03:39.040><c> five</c><00:03:39.319><c> minutes</c><00:03:40.280><c> pretty</c><00:03:40.640><c> good</c>
+
+00:03:42.190 --> 00:03:42.200 align:start position:0%
+about five minutes pretty good
+
+
+00:03:42.200 --> 00:03:46.470 align:start position:0%
+about five minutes pretty good
+[Applause]
+
+00:03:46.470 --> 00:03:46.480 align:start position:0%
+[Applause]
+
+
+00:03:46.480 --> 00:03:50.670 align:start position:0%
+[Applause]
+so<00:03:47.480><c> so</c><00:03:48.000><c> um</c><00:03:48.519><c> who</c><00:03:48.680><c> in</c><00:03:48.840><c> the</c><00:03:49.080><c> audience</c><00:03:50.080><c> develops</c>
+
+00:03:50.670 --> 00:03:50.680 align:start position:0%
+so so um who in the audience develops
+
+
+00:03:50.680 --> 00:03:52.390 align:start position:0%
+so so um who in the audience develops
+games<00:03:51.080><c> would</c><00:03:51.280><c> like</c><00:03:51.439><c> to</c><00:03:51.640><c> develop</c><00:03:52.040><c> games</c><00:03:52.280><c> or</c>
+
+00:03:52.390 --> 00:03:52.400 align:start position:0%
+games would like to develop games or
+
+
+00:03:52.400 --> 00:03:55.350 align:start position:0%
+games would like to develop games or
+would<00:03:52.519><c> like</c><00:03:52.640><c> to</c><00:03:52.799><c> hang</c><00:03:52.959><c> out</c><00:03:53.120><c> with</c><00:03:53.319><c> people</c>
+
+00:03:55.350 --> 00:03:55.360 align:start position:0%
+would like to hang out with people
+
+
+00:03:55.360 --> 00:03:59.229 align:start position:0%
+would like to hang out with people
+developing<00:03:56.360><c> okay</c><00:03:56.640><c> so</c><00:03:57.280><c> um</c><00:03:57.959><c> NC</c><00:03:58.439><c> State</c><00:03:58.799><c> is</c><00:03:59.079><c> going</c>
+
+00:03:59.229 --> 00:03:59.239 align:start position:0%
+developing okay so um NC State is going
+
+
+00:03:59.239 --> 00:04:02.270 align:start position:0%
+developing okay so um NC State is going
+to<00:03:59.439><c> be</c><00:03:59.840><c> hosting</c><00:04:00.239><c> our</c><00:04:00.599><c> local</c><00:04:01.319><c> uh</c><00:04:01.519><c> chapter</c><00:04:02.079><c> of</c>
+
+00:04:02.270 --> 00:04:02.280 align:start position:0%
+to be hosting our local uh chapter of
+
+
+00:04:02.280 --> 00:04:04.589 align:start position:0%
+to be hosting our local uh chapter of
+the<00:04:02.439><c> global</c><00:04:02.879><c> game</c><00:04:03.120><c> Jam</c><00:04:03.640><c> which</c><00:04:03.840><c> happens</c><00:04:04.200><c> around</c>
+
+00:04:04.589 --> 00:04:04.599 align:start position:0%
+the global game Jam which happens around
+
+
+00:04:04.599 --> 00:04:07.190 align:start position:0%
+the global game Jam which happens around
+this<00:04:04.799><c> time</c><00:04:05.120><c> every</c><00:04:05.400><c> year</c><00:04:06.120><c> and</c><00:04:06.319><c> it</c><00:04:06.439><c> is</c><00:04:06.720><c> going</c><00:04:06.959><c> to</c>
+
+00:04:07.190 --> 00:04:07.200 align:start position:0%
+this time every year and it is going to
+
+
+00:04:07.200 --> 00:04:11.110 align:start position:0%
+this time every year and it is going to
+be<00:04:07.560><c> on</c><00:04:08.040><c> the</c><00:04:08.280><c> weekend</c><00:04:09.000><c> of</c><00:04:09.400><c> January</c><00:04:09.920><c> 25th</c><00:04:10.560><c> 26th</c>
+
+00:04:11.110 --> 00:04:11.120 align:start position:0%
+be on the weekend of January 25th 26th
+
+
+00:04:11.120 --> 00:04:14.030 align:start position:0%
+be on the weekend of January 25th 26th
+and<00:04:11.519><c> 27th</c><00:04:12.519><c> so</c><00:04:12.760><c> that's</c><00:04:13.000><c> starting</c><00:04:13.560><c> on</c><00:04:13.840><c> the</c>
+
+00:04:14.030 --> 00:04:14.040 align:start position:0%
+and 27th so that's starting on the
+
+
+00:04:14.040 --> 00:04:17.430 align:start position:0%
+and 27th so that's starting on the
+evening<00:04:14.400><c> of</c><00:04:14.599><c> Friday</c><00:04:15.079><c> January</c><00:04:15.759><c> 25th</c><00:04:16.759><c> um</c><00:04:17.239><c> I've</c>
+
+00:04:17.430 --> 00:04:17.440 align:start position:0%
+evening of Friday January 25th um I've
+
+
+00:04:17.440 --> 00:04:18.830 align:start position:0%
+evening of Friday January 25th um I've
+been<00:04:17.680><c> promised</c><00:04:18.120><c> that</c><00:04:18.239><c> I</c><00:04:18.320><c> will</c><00:04:18.519><c> get</c><00:04:18.639><c> a</c>
+
+00:04:18.830 --> 00:04:18.840 align:start position:0%
+been promised that I will get a
+
+
+00:04:18.840 --> 00:04:20.710 align:start position:0%
+been promised that I will get a
+promotional<00:04:19.400><c> email</c><00:04:19.799><c> about</c><00:04:20.120><c> this</c><00:04:20.320><c> that</c><00:04:20.440><c> I</c><00:04:20.560><c> can</c>
+
+00:04:20.710 --> 00:04:20.720 align:start position:0%
+promotional email about this that I can
+
+
+00:04:20.720 --> 00:04:23.390 align:start position:0%
+promotional email about this that I can
+send<00:04:20.959><c> to</c><00:04:21.120><c> the</c><00:04:21.239><c> trilog</c><00:04:21.680><c> mailing</c><00:04:22.079><c> list</c><00:04:22.919><c> so</c><00:04:23.280><c> if</c>
+
+00:04:23.390 --> 00:04:23.400 align:start position:0%
+send to the trilog mailing list so if
+
+
+00:04:23.400 --> 00:04:25.110 align:start position:0%
+send to the trilog mailing list so if
+you're<00:04:23.600><c> not</c><00:04:24.000><c> already</c><00:04:24.440><c> subscribed</c><00:04:24.880><c> to</c><00:04:25.000><c> the</c>
+
+00:04:25.110 --> 00:04:25.120 align:start position:0%
+you're not already subscribed to the
+
+
+00:04:25.120 --> 00:04:27.469 align:start position:0%
+you're not already subscribed to the
+trial<00:04:25.400><c> of</c><00:04:25.520><c> mailing</c><00:04:25.919><c> list</c><00:04:26.360><c> subscribe</c><00:04:27.199><c> and</c><00:04:27.320><c> I'll</c>
+
+00:04:27.469 --> 00:04:27.479 align:start position:0%
+trial of mailing list subscribe and I'll
+
+
+00:04:27.479 --> 00:04:29.189 align:start position:0%
+trial of mailing list subscribe and I'll
+forward<00:04:27.880><c> that</c><00:04:28.040><c> email</c><00:04:28.360><c> when</c><00:04:28.440><c> it</c><00:04:28.600><c> comes</c><00:04:28.919><c> in</c><00:04:29.039><c> the</c>
+
+00:04:29.189 --> 00:04:29.199 align:start position:0%
+forward that email when it comes in the
+
+
+00:04:29.199 --> 00:04:30.270 align:start position:0%
+forward that email when it comes in the
+meantime
+
+00:04:30.270 --> 00:04:30.280 align:start position:0%
+meantime
+
+
+00:04:30.280 --> 00:04:32.629 align:start position:0%
+meantime
+Google<00:04:30.759><c> Global</c><00:04:31.160><c> game</c><00:04:31.440><c> jam</c><00:04:32.039><c> and</c><00:04:32.199><c> look</c><00:04:32.360><c> for</c><00:04:32.520><c> the</c>
+
+00:04:32.629 --> 00:04:32.639 align:start position:0%
+Google Global game jam and look for the
+
+
+00:04:32.639 --> 00:04:35.189 align:start position:0%
+Google Global game jam and look for the
+local<00:04:32.919><c> Raleigh</c><00:04:33.320><c> version</c><00:04:34.240><c> um</c><00:04:34.680><c> you</c><00:04:34.800><c> don't</c><00:04:35.080><c> have</c>
+
+00:04:35.189 --> 00:04:35.199 align:start position:0%
+local Raleigh version um you don't have
+
+
+00:04:35.199 --> 00:04:37.710 align:start position:0%
+local Raleigh version um you don't have
+to<00:04:35.360><c> be</c><00:04:35.479><c> a</c><00:04:35.639><c> developer</c><00:04:36.320><c> I</c><00:04:36.520><c> imagine</c><00:04:37.160><c> that</c><00:04:37.360><c> if</c><00:04:37.479><c> you</c>
+
+00:04:37.710 --> 00:04:37.720 align:start position:0%
+to be a developer I imagine that if you
+
+
+00:04:37.720 --> 00:04:39.710 align:start position:0%
+to be a developer I imagine that if you
+have<00:04:37.919><c> systems</c><00:04:38.400><c> Administration</c><00:04:39.120><c> skills</c><00:04:39.520><c> can</c>
+
+00:04:39.710 --> 00:04:39.720 align:start position:0%
+have systems Administration skills can
+
+
+00:04:39.720 --> 00:04:41.950 align:start position:0%
+have systems Administration skills can
+help<00:04:39.960><c> people</c><00:04:40.240><c> post</c><00:04:40.520><c> a</c><00:04:40.720><c> game</c><00:04:41.039><c> particularly</c><00:04:41.720><c> web</c>
+
+00:04:41.950 --> 00:04:41.960 align:start position:0%
+help people post a game particularly web
+
+
+00:04:41.960 --> 00:04:44.590 align:start position:0%
+help people post a game particularly web
+application<00:04:42.560><c> style</c><00:04:42.919><c> games</c><00:04:43.639><c> you</c><00:04:43.720><c> will</c><00:04:43.919><c> be</c><00:04:44.280><c> very</c>
+
+00:04:44.590 --> 00:04:44.600 align:start position:0%
+application style games you will be very
+
+
+00:04:44.600 --> 00:04:47.150 align:start position:0%
+application style games you will be very
+appreciated<00:04:45.320><c> so</c><00:04:45.800><c> developers</c><00:04:46.320><c> can</c><00:04:46.560><c> focus</c><00:04:46.880><c> on</c>
+
+00:04:47.150 --> 00:04:47.160 align:start position:0%
+appreciated so developers can focus on
+
+
+00:04:47.160 --> 00:04:49.749 align:start position:0%
+appreciated so developers can focus on
+that<00:04:47.639><c> if</c><00:04:47.720><c> you</c><00:04:47.880><c> can</c><00:04:48.120><c> write</c><00:04:48.400><c> code</c><00:04:48.800><c> great</c><00:04:49.520><c> and</c><00:04:49.680><c> if</c>
+
+00:04:49.749 --> 00:04:49.759 align:start position:0%
+that if you can write code great and if
+
+
+00:04:49.759 --> 00:04:51.790 align:start position:0%
+that if you can write code great and if
+you<00:04:49.880><c> can</c><00:04:50.080><c> design</c><00:04:50.560><c> if</c><00:04:50.639><c> you</c><00:04:50.880><c> have</c><00:04:51.080><c> any</c><00:04:51.360><c> aesthetic</c>
+
+00:04:51.790 --> 00:04:51.800 align:start position:0%
+you can design if you have any aesthetic
+
+
+00:04:51.800 --> 00:04:55.629 align:start position:0%
+you can design if you have any aesthetic
+or<00:04:52.000><c> artistic</c><00:04:52.759><c> talent</c><00:04:53.440><c> that's</c><00:04:53.680><c> also</c><00:04:54.000><c> useful</c>
+
+00:04:55.629 --> 00:04:55.639 align:start position:0%
+or artistic talent that's also useful
+
+
+00:04:55.639 --> 00:04:57.830 align:start position:0%
+or artistic talent that's also useful
+too<00:04:56.639><c> any</c><00:04:56.880><c> additional</c><00:04:57.360><c> Community</c>
+
+00:04:57.830 --> 00:04:57.840 align:start position:0%
+too any additional Community
+
+
+00:04:57.840 --> 00:04:59.909 align:start position:0%
+too any additional Community
+announcements
+
+00:04:59.909 --> 00:04:59.919 align:start position:0%
+announcements
+
+
+00:04:59.919 --> 00:05:01.870 align:start position:0%
+announcements
+okay<00:05:00.120><c> now</c><00:05:00.280><c> we</c><00:05:00.400><c> move</c><00:05:00.639><c> on</c><00:05:00.800><c> to</c><00:05:01.000><c> the</c><00:05:01.199><c> have</c><00:05:01.360><c> a</c><00:05:01.560><c> job</c>
+
+00:05:01.870 --> 00:05:01.880 align:start position:0%
+okay now we move on to the have a job
+
+
+00:05:01.880 --> 00:05:04.590 align:start position:0%
+okay now we move on to the have a job
+need<00:05:02.120><c> a</c><00:05:02.800><c> job</c>
+
+00:05:04.590 --> 00:05:04.600 align:start position:0%
+need a job
+
+
+00:05:04.600 --> 00:05:07.270 align:start position:0%
+need a job
+Anns
+
+00:05:07.270 --> 00:05:07.280 align:start position:0%
+Anns
+
+
+00:05:07.280 --> 00:05:11.469 align:start position:0%
+Anns
+list<00:05:08.280><c> yeah</c><00:05:09.120><c> absolutely</c><00:05:10.120><c> so</c><00:05:10.759><c> those</c><00:05:10.919><c> of</c><00:05:11.080><c> you</c><00:05:11.240><c> who</c>
+
+00:05:11.469 --> 00:05:11.479 align:start position:0%
+list yeah absolutely so those of you who
+
+
+00:05:11.479 --> 00:05:13.469 align:start position:0%
+list yeah absolutely so those of you who
+announc<00:05:11.960><c> something</c><00:05:12.479><c> that</c><00:05:12.680><c> you</c><00:05:12.840><c> would</c><00:05:13.039><c> like</c><00:05:13.199><c> to</c>
+
+00:05:13.469 --> 00:05:13.479 align:start position:0%
+announc something that you would like to
+
+
+00:05:13.479 --> 00:05:15.469 align:start position:0%
+announc something that you would like to
+make<00:05:13.639><c> sure</c><00:05:14.080><c> everyone</c><00:05:14.440><c> else</c><00:05:14.720><c> actually</c><00:05:15.039><c> attends</c>
+
+00:05:15.469 --> 00:05:15.479 align:start position:0%
+make sure everyone else actually attends
+
+
+00:05:15.479 --> 00:05:17.029 align:start position:0%
+make sure everyone else actually attends
+please<00:05:15.720><c> forward</c><00:05:16.120><c> to</c><00:05:16.320><c> the</c>
+
+00:05:17.029 --> 00:05:17.039 align:start position:0%
+please forward to the
+
+
+00:05:17.039 --> 00:05:20.950 align:start position:0%
+please forward to the
+trog<00:05:18.039><c> um</c><00:05:18.280><c> trog</c><00:05:19.039><c> tr.</c><00:05:19.840><c> org</c><00:05:20.440><c> you</c><00:05:20.560><c> got</c><00:05:20.680><c> to</c><00:05:20.800><c> be</c>
+
+00:05:20.950 --> 00:05:20.960 align:start position:0%
+trog um trog tr. org you got to be
+
+
+00:05:20.960 --> 00:05:23.070 align:start position:0%
+trog um trog tr. org you got to be
+subscribed<00:05:21.520><c> first</c><00:05:21.759><c> so</c><00:05:21.960><c> go</c><00:05:22.080><c> to</c><00:05:22.199><c> tr</c><00:05:22.400><c> log.org</c><00:05:22.880><c> and</c>
+
+00:05:23.070 --> 00:05:23.080 align:start position:0%
+subscribed first so go to tr log.org and
+
+
+00:05:23.080 --> 00:05:25.550 align:start position:0%
+subscribed first so go to tr log.org and
+there<00:05:23.160><c> are</c><00:05:23.360><c> instructions</c><00:05:24.080><c> there</c><00:05:24.919><c> all</c><00:05:25.039><c> right</c>
+
+00:05:25.550 --> 00:05:25.560 align:start position:0%
+there are instructions there all right
+
+
+00:05:25.560 --> 00:05:27.510 align:start position:0%
+there are instructions there all right
+Last<00:05:25.800><c> Call</c><00:05:26.039><c> on</c><00:05:26.319><c> community</c>
+
+00:05:27.510 --> 00:05:27.520 align:start position:0%
+Last Call on community
+
+
+00:05:27.520 --> 00:05:29.790 align:start position:0%
+Last Call on community
+announcements<00:05:28.520><c> have</c><00:05:28.680><c> a</c><00:05:28.880><c> job</c><00:05:29.120><c> need</c><00:05:29.319><c> a</c><00:05:29.440><c> job</c>
+
+00:05:29.790 --> 00:05:29.800 align:start position:0%
+announcements have a job need a job
+
+
+00:05:29.800 --> 00:05:32.029 align:start position:0%
+announcements have a job need a job
+we're<00:05:29.960><c> going</c><00:05:30.039><c> to</c><00:05:30.199><c> start</c><00:05:30.479><c> with</c><00:05:30.680><c> have</c><00:05:30.840><c> a</c><00:05:31.039><c> job</c><00:05:31.880><c> if</c>
+
+00:05:32.029 --> 00:05:32.039 align:start position:0%
+we're going to start with have a job if
+
+
+00:05:32.039 --> 00:05:34.270 align:start position:0%
+we're going to start with have a job if
+you<00:05:32.440><c> know</c><00:05:32.680><c> of</c><00:05:32.840><c> an</c><00:05:33.000><c> opening</c><00:05:33.360><c> for</c><00:05:33.560><c> a</c><00:05:33.759><c> position</c>
+
+00:05:34.270 --> 00:05:34.280 align:start position:0%
+you know of an opening for a position
+
+
+00:05:34.280 --> 00:05:35.950 align:start position:0%
+you know of an opening for a position
+particularly<00:05:34.759><c> if</c><00:05:34.880><c> it's</c><00:05:35.000><c> at</c><00:05:35.160><c> your</c><00:05:35.280><c> own</c><00:05:35.520><c> company</c>
+
+00:05:35.950 --> 00:05:35.960 align:start position:0%
+particularly if it's at your own company
+
+
+00:05:35.960 --> 00:05:43.350 align:start position:0%
+particularly if it's at your own company
+you<00:05:36.080><c> can</c><00:05:36.280><c> describe</c><00:05:36.680><c> it</c><00:05:37.560><c> please</c><00:05:38.560><c> come</c><00:05:38.720><c> on</c>
+
+00:05:43.350 --> 00:05:43.360 align:start position:0%
+
+
+
+00:05:43.360 --> 00:05:46.550 align:start position:0%
+
+Scott<00:05:44.360><c> everybody</c><00:05:45.000><c> um</c><00:05:45.240><c> my</c><00:05:45.360><c> name</c><00:05:45.479><c> is</c><00:05:45.680><c> Scott</c><00:05:46.440><c> and</c>
+
+00:05:46.550 --> 00:05:46.560 align:start position:0%
+Scott everybody um my name is Scott and
+
+
+00:05:46.560 --> 00:05:49.510 align:start position:0%
+Scott everybody um my name is Scott and
+I<00:05:46.720><c> work</c><00:05:47.039><c> for</c><00:05:47.880><c> a</c><00:05:48.120><c> company</c><00:05:48.440><c> called</c><00:05:48.600><c> Jew</c><00:05:48.919><c> buug</c><00:05:49.319><c> we</c>
+
+00:05:49.510 --> 00:05:49.520 align:start position:0%
+I work for a company called Jew buug we
+
+
+00:05:49.520 --> 00:05:52.070 align:start position:0%
+I work for a company called Jew buug we
+made<00:05:49.960><c> a</c><00:05:50.199><c> iPhone</c><00:05:50.600><c> app</c><00:05:50.919><c> about</c><00:05:51.600><c> sustainable</c>
+
+00:05:52.070 --> 00:05:52.080 align:start position:0%
+made a iPhone app about sustainable
+
+
+00:05:52.080 --> 00:05:54.909 align:start position:0%
+made a iPhone app about sustainable
+behaviors<00:05:52.520><c> and</c><00:05:52.720><c> sustainable</c><00:05:53.440><c> living</c><00:05:54.440><c> um</c>
+
+00:05:54.909 --> 00:05:54.919 align:start position:0%
+behaviors and sustainable living um
+
+
+00:05:54.919 --> 00:05:56.749 align:start position:0%
+behaviors and sustainable living um
+we're<00:05:55.360><c> currently</c><00:05:55.720><c> in</c><00:05:55.800><c> a</c><00:05:55.960><c> buildout</c><00:05:56.479><c> phase</c>
+
+00:05:56.749 --> 00:05:56.759 align:start position:0%
+we're currently in a buildout phase
+
+
+00:05:56.759 --> 00:05:59.270 align:start position:0%
+we're currently in a buildout phase
+we're<00:05:56.919><c> getting</c><00:05:57.160><c> ready</c><00:05:57.520><c> to</c><00:05:58.520><c> develop</c><00:05:59.039><c> our</c>
+
+00:05:59.270 --> 00:05:59.280 align:start position:0%
+we're getting ready to develop our
+
+
+00:05:59.280 --> 00:06:00.710 align:start position:0%
+we're getting ready to develop our
+Android<00:05:59.840><c> version</c><00:06:00.000><c> of</c><00:06:00.120><c> the</c><00:06:00.240><c> app</c><00:06:00.440><c> with</c><00:06:00.560><c> an</c>
+
+00:06:00.710 --> 00:06:00.720 align:start position:0%
+Android version of the app with an
+
+
+00:06:00.720 --> 00:06:04.270 align:start position:0%
+Android version of the app with an
+iPhone<00:06:01.039><c> only</c><00:06:01.919><c> um</c><00:06:02.520><c> and</c><00:06:03.240><c> we</c><00:06:03.400><c> use</c><00:06:03.560><c> a</c><00:06:03.759><c> lot</c><00:06:03.880><c> of</c><00:06:04.160><c> kind</c>
+
+00:06:04.270 --> 00:06:04.280 align:start position:0%
+iPhone only um and we use a lot of kind
+
+
+00:06:04.280 --> 00:06:08.390 align:start position:0%
+iPhone only um and we use a lot of kind
+of<00:06:04.520><c> cool</c><00:06:04.960><c> Technologies</c><00:06:05.759><c> we</c><00:06:06.280><c> building</c><00:06:06.680><c> on</c><00:06:07.400><c> uh</c>
+
+00:06:08.390 --> 00:06:08.400 align:start position:0%
+of cool Technologies we building on uh
+
+
+00:06:08.400 --> 00:06:11.870 align:start position:0%
+of cool Technologies we building on uh
+got<00:06:08.520><c> our</c><00:06:09.319><c> services</c><00:06:09.800><c> hosted</c><00:06:10.120><c> at</c><00:06:10.720><c> Amazon</c><00:06:11.720><c> the</c>
+
+00:06:11.870 --> 00:06:11.880 align:start position:0%
+got our services hosted at Amazon the
+
+
+00:06:11.880 --> 00:06:15.670 align:start position:0%
+got our services hosted at Amazon the
+Amazon<00:06:12.520><c> web</c><00:06:12.720><c> services</c><00:06:13.280><c> Cloud</c><00:06:14.280><c> U</c><00:06:14.520><c> we're</c><00:06:15.240><c> using</c>
+
+00:06:15.670 --> 00:06:15.680 align:start position:0%
+Amazon web services Cloud U we're using
+
+
+00:06:15.680 --> 00:06:17.749 align:start position:0%
+Amazon web services Cloud U we're using
+mongod<00:06:16.039><c> DV</c><00:06:16.360><c> for</c><00:06:16.479><c> our</c><00:06:16.639><c> database</c><00:06:17.120><c> back</c><00:06:17.319><c> end</c>
+
+00:06:17.749 --> 00:06:17.759 align:start position:0%
+mongod DV for our database back end
+
+
+00:06:17.759 --> 00:06:19.909 align:start position:0%
+mongod DV for our database back end
+doing<00:06:17.960><c> a</c><00:06:18.080><c> lot</c><00:06:18.199><c> of</c><00:06:18.400><c> work</c><00:06:19.080><c> in</c><00:06:19.199><c> a</c><00:06:19.319><c> new</c><00:06:19.560><c> language</c>
+
+00:06:19.909 --> 00:06:19.919 align:start position:0%
+doing a lot of work in a new language
+
+
+00:06:19.919 --> 00:06:23.309 align:start position:0%
+doing a lot of work in a new language
+called<00:06:20.160><c> Scala</c><00:06:20.800><c> which</c><00:06:21.440><c> is</c><00:06:22.039><c> really</c><00:06:23.039><c> pretty</c>
+
+00:06:23.309 --> 00:06:23.319 align:start position:0%
+called Scala which is really pretty
+
+
+00:06:23.319 --> 00:06:25.270 align:start position:0%
+called Scala which is really pretty
+fascinating<00:06:23.840><c> when</c><00:06:24.000><c> you</c><00:06:24.319><c> look</c><00:06:24.479><c> at</c><00:06:24.639><c> it</c><00:06:25.039><c> uh</c><00:06:25.160><c> we</c>
+
+00:06:25.270 --> 00:06:25.280 align:start position:0%
+fascinating when you look at it uh we
+
+
+00:06:25.280 --> 00:06:28.070 align:start position:0%
+fascinating when you look at it uh we
+are<00:06:25.440><c> looking</c><00:06:25.840><c> to</c><00:06:26.599><c> know</c><00:06:26.880><c> possibly</c><00:06:27.319><c> expand</c><00:06:27.840><c> so</c>
+
+00:06:28.070 --> 00:06:28.080 align:start position:0%
+are looking to know possibly expand so
+
+
+00:06:28.080 --> 00:06:30.150 align:start position:0%
+are looking to know possibly expand so
+we're<00:06:28.479><c> trying</c><00:06:28.680><c> to</c><00:06:28.840><c> find</c><00:06:29.000><c> some</c><00:06:29.160><c> people</c><00:06:30.000><c> might</c>
+
+00:06:30.150 --> 00:06:30.160 align:start position:0%
+we're trying to find some people might
+
+
+00:06:30.160 --> 00:06:32.950 align:start position:0%
+we're trying to find some people might
+be<00:06:30.319><c> interested</c><00:06:30.759><c> in</c><00:06:30.960><c> that</c><00:06:31.160><c> if</c><00:06:31.319><c> you</c><00:06:31.880><c> have</c><00:06:32.199><c> some</c>
+
+00:06:32.950 --> 00:06:32.960 align:start position:0%
+be interested in that if you have some
+
+
+00:06:32.960 --> 00:06:35.629 align:start position:0%
+be interested in that if you have some
+real<00:06:33.319><c> skills</c><00:06:33.919><c> with</c><00:06:34.240><c> either</c><00:06:34.919><c> something</c><00:06:35.199><c> like</c>
+
+00:06:35.629 --> 00:06:35.639 align:start position:0%
+real skills with either something like
+
+
+00:06:35.639 --> 00:06:40.510 align:start position:0%
+real skills with either something like
+longb<00:06:36.639><c> or</c><00:06:37.639><c> Scola</c><00:06:38.520><c> or</c><00:06:39.199><c> experience</c><00:06:39.720><c> the</c><00:06:39.840><c> Android</c>
+
+00:06:40.510 --> 00:06:40.520 align:start position:0%
+longb or Scola or experience the Android
+
+
+00:06:40.520 --> 00:06:44.070 align:start position:0%
+longb or Scola or experience the Android
+platform<00:06:41.520><c> Uh</c><00:06:41.759><c> current</c><00:06:42.319><c> HTML</c><00:06:43.000><c> 5</c><00:06:43.240><c> css3</c>
+
+00:06:44.070 --> 00:06:44.080 align:start position:0%
+platform Uh current HTML 5 css3
+
+
+00:06:44.080 --> 00:06:46.510 align:start position:0%
+platform Uh current HTML 5 css3
+JavaScript<00:06:44.759><c> skills</c><00:06:45.759><c> we'd</c><00:06:45.919><c> be</c><00:06:46.039><c> interested</c><00:06:46.360><c> to</c>
+
+00:06:46.510 --> 00:06:46.520 align:start position:0%
+JavaScript skills we'd be interested to
+
+
+00:06:46.520 --> 00:06:49.870 align:start position:0%
+JavaScript skills we'd be interested to
+talk<00:06:46.680><c> to</c><00:06:46.800><c> you</c><00:06:47.039><c> so</c><00:06:47.280><c> I</c><00:06:47.440><c> guess</c><00:06:48.400><c> come</c><00:06:49.400><c> come</c><00:06:49.560><c> see</c><00:06:49.800><c> me</c>
+
+00:06:49.870 --> 00:06:49.880 align:start position:0%
+talk to you so I guess come come see me
+
+
+00:06:49.880 --> 00:06:50.909 align:start position:0%
+talk to you so I guess come come see me
+and<00:06:50.000><c> I</c><00:06:50.080><c> can</c><00:06:50.199><c> give</c><00:06:50.280><c> you</c><00:06:50.360><c> some</c><00:06:50.560><c> contact</c>
+
+00:06:50.909 --> 00:06:50.919 align:start position:0%
+and I can give you some contact
+
+
+00:06:50.919 --> 00:06:52.990 align:start position:0%
+and I can give you some contact
+information<00:06:51.919><c> bre</c><00:06:52.160><c> is</c><00:06:52.280><c> that</c><00:06:52.479><c> right</c><00:06:52.759><c> you'll</c>
+
+00:06:52.990 --> 00:06:53.000 align:start position:0%
+information bre is that right you'll
+
+
+00:06:53.000 --> 00:07:00.869 align:start position:0%
+information bre is that right you'll
+hang<00:06:53.160><c> out</c><00:06:53.280><c> for</c><00:06:53.400><c> a</c><00:06:53.479><c> while</c><00:06:53.840><c> I'll</c><00:06:53.960><c> hang</c>
+
+00:07:00.869 --> 00:07:00.879 align:start position:0%
+
+
+
+00:07:00.879 --> 00:07:07.950 align:start position:0%
+
+sure<00:07:01.879><c> all</c><00:07:02.080><c> right</c><00:07:03.080><c> have</c><00:07:03.160><c> a</c>
+
+00:07:07.950 --> 00:07:07.960 align:start position:0%
+
+
+
+00:07:07.960 --> 00:07:10.869 align:start position:0%
+
+job<00:07:08.960><c> so</c><00:07:09.199><c> last</c><00:07:09.360><c> time</c><00:07:09.560><c> I</c><00:07:09.720><c> gave</c><00:07:09.919><c> away</c><00:07:10.199><c> my</c><00:07:10.319><c> own</c><00:07:10.560><c> job</c>
+
+00:07:10.869 --> 00:07:10.879 align:start position:0%
+job so last time I gave away my own job
+
+
+00:07:10.879 --> 00:07:13.589 align:start position:0%
+job so last time I gave away my own job
+this<00:07:11.039><c> time</c><00:07:11.199><c> I</c><00:07:11.280><c> want</c><00:07:11.440><c> an</c><00:07:11.599><c> extra</c><00:07:11.919><c> me</c><00:07:12.560><c> so</c><00:07:13.039><c> I</c><00:07:13.360><c> I</c><00:07:13.440><c> work</c>
+
+00:07:13.589 --> 00:07:13.599 align:start position:0%
+this time I want an extra me so I I work
+
+
+00:07:13.599 --> 00:07:15.550 align:start position:0%
+this time I want an extra me so I I work
+for<00:07:13.800><c> red</c><00:07:14.080><c> hat</c><00:07:14.400><c> and</c><00:07:14.639><c> work</c><00:07:14.800><c> on</c><00:07:15.080><c> marketing</c>
+
+00:07:15.550 --> 00:07:15.560 align:start position:0%
+for red hat and work on marketing
+
+
+00:07:15.560 --> 00:07:17.629 align:start position:0%
+for red hat and work on marketing
+related<00:07:15.879><c> to</c><00:07:16.000><c> Upstream</c><00:07:16.599><c> projects</c><00:07:17.080><c> so</c><00:07:17.360><c> I</c><00:07:17.440><c> want</c>
+
+00:07:17.629 --> 00:07:17.639 align:start position:0%
+related to Upstream projects so I want
+
+
+00:07:17.639 --> 00:07:19.869 align:start position:0%
+related to Upstream projects so I want
+somebody<00:07:18.479><c> who's</c><00:07:18.800><c> good</c><00:07:18.919><c> at</c><00:07:19.080><c> marketing</c><00:07:19.680><c> and</c>
+
+00:07:19.869 --> 00:07:19.879 align:start position:0%
+somebody who's good at marketing and
+
+
+00:07:19.879 --> 00:07:21.390 align:start position:0%
+somebody who's good at marketing and
+knows<00:07:20.120><c> what</c><00:07:20.240><c> open</c><00:07:20.479><c> source</c><00:07:20.720><c> software</c><00:07:21.080><c> is</c><00:07:21.199><c> and</c><00:07:21.319><c> I</c>
+
+00:07:21.390 --> 00:07:21.400 align:start position:0%
+knows what open source software is and I
+
+
+00:07:21.400 --> 00:07:22.749 align:start position:0%
+knows what open source software is and I
+know<00:07:21.560><c> that's</c><00:07:21.720><c> really</c><00:07:22.000><c> vague</c><00:07:22.319><c> but</c><00:07:22.440><c> we'll</c><00:07:22.599><c> work</c>
+
+00:07:22.749 --> 00:07:22.759 align:start position:0%
+know that's really vague but we'll work
+
+
+00:07:22.759 --> 00:07:24.710 align:start position:0%
+know that's really vague but we'll work
+on<00:07:22.879><c> the</c><00:07:23.000><c> detail</c><00:07:23.440><c> part</c><00:07:23.840><c> so</c><00:07:24.080><c> if</c><00:07:24.240><c> that's</c><00:07:24.479><c> you</c><00:07:24.599><c> or</c>
+
+00:07:24.710 --> 00:07:24.720 align:start position:0%
+on the detail part so if that's you or
+
+
+00:07:24.720 --> 00:07:26.110 align:start position:0%
+on the detail part so if that's you or
+your<00:07:24.919><c> awesome</c><00:07:25.160><c> friend</c><00:07:25.440><c> I</c><00:07:25.520><c> should</c><00:07:25.720><c> meet</c><00:07:26.000><c> you</c>
+
+00:07:26.110 --> 00:07:26.120 align:start position:0%
+your awesome friend I should meet you
+
+
+00:07:26.120 --> 00:07:30.430 align:start position:0%
+your awesome friend I should meet you
+should
+
+00:07:30.430 --> 00:07:30.440 align:start position:0%
+
+
+
+00:07:30.440 --> 00:07:34.869 align:start position:0%
+
+anybody<00:07:30.840><c> else</c><00:07:31.199><c> offering</c><00:07:31.520><c> a</c>
+
+00:07:34.869 --> 00:07:34.879 align:start position:0%
+
+
+
+00:07:34.879 --> 00:07:38.110 align:start position:0%
+
+job<00:07:35.879><c> we</c><00:07:36.039><c> for</c><00:07:36.160><c> brono</c><00:07:36.639><c> software</c><00:07:37.120><c> we're</c><00:07:37.840><c> web</c>
+
+00:07:38.110 --> 00:07:38.120 align:start position:0%
+job we for brono software we're web
+
+
+00:07:38.120 --> 00:07:40.790 align:start position:0%
+job we for brono software we're web
+application<00:07:39.080><c> development</c><00:07:39.479><c> company</c><00:07:40.400><c> we</c><00:07:40.520><c> have</c>
+
+00:07:40.790 --> 00:07:40.800 align:start position:0%
+application development company we have
+
+
+00:07:40.800 --> 00:07:42.790 align:start position:0%
+application development company we have
+email<00:07:41.080><c> marketing</c><00:07:41.400><c> application</c><00:07:42.000><c> but</c><00:07:42.560><c> we</c><00:07:42.680><c> are</c>
+
+00:07:42.790 --> 00:07:42.800 align:start position:0%
+email marketing application but we are
+
+
+00:07:42.800 --> 00:07:45.910 align:start position:0%
+email marketing application but we are
+looking<00:07:43.039><c> for</c><00:07:43.360><c> a</c><00:07:43.560><c> DBA</c><00:07:44.039><c> or</c><00:07:44.240><c> my</c><00:07:44.639><c> performance</c>
+
+00:07:45.910 --> 00:07:45.920 align:start position:0%
+looking for a DBA or my performance
+
+
+00:07:45.920 --> 00:07:52.589 align:start position:0%
+looking for a DBA or my performance
+[Music]
+
+00:07:52.589 --> 00:07:52.599 align:start position:0%
+
+
+
+00:07:52.599 --> 00:07:55.469 align:start position:0%
+
+engineer<00:07:53.599><c> Java</c><00:07:53.879><c> web</c>
+
+00:07:55.469 --> 00:07:55.479 align:start position:0%
+engineer Java web
+
+
+00:07:55.479 --> 00:08:00.390 align:start position:0%
+engineer Java web
+Developers<00:07:56.479><c> youcom</c>
+
+00:08:00.390 --> 00:08:00.400 align:start position:0%
+
+
+
+00:08:00.400 --> 00:08:02.950 align:start position:0%
+
+all<00:08:00.560><c> right</c><00:08:00.879><c> have</c><00:08:01.039><c> a</c>
+
+00:08:02.950 --> 00:08:02.960 align:start position:0%
+all right have a
+
+
+00:08:02.960 --> 00:08:05.270 align:start position:0%
+all right have a
+job<00:08:03.960><c> who</c><00:08:04.080><c> would</c><00:08:04.280><c> like</c><00:08:04.440><c> a</c>
+
+00:08:05.270 --> 00:08:05.280 align:start position:0%
+job who would like a
+
+
+00:08:05.280 --> 00:08:09.070 align:start position:0%
+job who would like a
+job<00:08:06.280><c> a</c><00:08:06.520><c> light</c><00:08:06.800><c> different</c><00:08:07.199><c> job</c><00:08:07.879><c> anyone</c><00:08:08.280><c> want</c>
+
+00:08:09.070 --> 00:08:09.080 align:start position:0%
+job a light different job anyone want
+
+
+00:08:09.080 --> 00:08:20.550 align:start position:0%
+job a light different job anyone want
+anyone<00:08:09.360><c> to</c><00:08:09.520><c> come</c><00:08:09.680><c> up</c><00:08:09.840><c> here</c><00:08:09.960><c> and</c><00:08:10.120><c> tell</c><00:08:10.319><c> us</c><00:08:10.520><c> about</c>
+
+00:08:20.550 --> 00:08:20.560 align:start position:0%
+
+
+
+00:08:20.560 --> 00:08:24.950 align:start position:0%
+
+yourself<00:08:21.560><c> hi</c><00:08:22.080><c> I've</c><00:08:22.240><c> been</c><00:08:22.400><c> here</c><00:08:22.680><c> before</c><00:08:23.680><c> but</c><00:08:24.199><c> um</c>
+
+00:08:24.950 --> 00:08:24.960 align:start position:0%
+yourself hi I've been here before but um
+
+
+00:08:24.960 --> 00:08:27.390 align:start position:0%
+yourself hi I've been here before but um
+now<00:08:25.319><c> decided</c><00:08:25.720><c> it's</c><00:08:25.919><c> time</c><00:08:26.039><c> to</c><00:08:26.159><c> go</c><00:08:26.280><c> back</c><00:08:26.400><c> to</c><00:08:26.599><c> work</c>
+
+00:08:27.390 --> 00:08:27.400 align:start position:0%
+now decided it's time to go back to work
+
+
+00:08:27.400 --> 00:08:29.909 align:start position:0%
+now decided it's time to go back to work
+uh<00:08:27.680><c> my</c><00:08:28.280><c> previous</c><00:08:28.639><c> emplo</c><00:08:29.000><c> employment</c><00:08:29.520><c> I</c><00:08:29.639><c> was</c>
+
+00:08:29.909 --> 00:08:29.919 align:start position:0%
+uh my previous emplo employment I was
+
+
+00:08:29.919 --> 00:08:31.550 align:start position:0%
+uh my previous emplo employment I was
+division<00:08:30.319><c> information</c><00:08:30.800><c> officer</c><00:08:31.120><c> at</c><00:08:31.240><c> division</c>
+
+00:08:31.550 --> 00:08:31.560 align:start position:0%
+division information officer at division
+
+
+00:08:31.560 --> 00:08:34.350 align:start position:0%
+division information officer at division
+Europe<00:08:31.840><c> for</c><00:08:32.039><c> Gate</c><00:08:32.880><c> International</c><00:08:33.880><c> um</c><00:08:34.000><c> so</c><00:08:34.200><c> I've</c>
+
+00:08:34.350 --> 00:08:34.360 align:start position:0%
+Europe for Gate International um so I've
+
+
+00:08:34.360 --> 00:08:36.430 align:start position:0%
+Europe for Gate International um so I've
+got<00:08:34.719><c> extensive</c><00:08:35.200><c> it</c><00:08:35.519><c> management</c><00:08:35.959><c> experience</c>
+
+00:08:36.430 --> 00:08:36.440 align:start position:0%
+got extensive it management experience
+
+
+00:08:36.440 --> 00:08:38.149 align:start position:0%
+got extensive it management experience
+specifically<00:08:37.039><c> International</c><00:08:37.719><c> experience</c>
+
+00:08:38.149 --> 00:08:38.159 align:start position:0%
+specifically International experience
+
+
+00:08:38.159 --> 00:08:40.190 align:start position:0%
+specifically International experience
+anybody<00:08:38.599><c> looking</c><00:08:39.000><c> for</c><00:08:39.399><c> International</c>
+
+00:08:40.190 --> 00:08:40.200 align:start position:0%
+anybody looking for International
+
+
+00:08:40.200 --> 00:08:42.909 align:start position:0%
+anybody looking for International
+Management<00:08:41.200><c> um</c><00:08:41.519><c> training</c><00:08:41.919><c> development</c><00:08:42.680><c> I'm</c>
+
+00:08:42.909 --> 00:08:42.919 align:start position:0%
+Management um training development I'm
+
+
+00:08:42.919 --> 00:08:44.790 align:start position:0%
+Management um training development I'm
+on<00:08:43.080><c> the</c><00:08:43.200><c> board</c><00:08:43.360><c> of</c><00:08:43.519><c> directors</c><00:08:43.919><c> for</c><00:08:44.120><c> a</c><00:08:44.320><c> training</c>
+
+00:08:44.790 --> 00:08:44.800 align:start position:0%
+on the board of directors for a training
+
+
+00:08:44.800 --> 00:08:47.990 align:start position:0%
+on the board of directors for a training
+organization<00:08:45.800><c> nonprofit</c><00:08:46.800><c> um</c><00:08:47.440><c> the</c><00:08:47.640><c> problem</c><00:08:47.880><c> is</c>
+
+00:08:47.990 --> 00:08:48.000 align:start position:0%
+organization nonprofit um the problem is
+
+
+00:08:48.000 --> 00:08:49.790 align:start position:0%
+organization nonprofit um the problem is
+I've<00:08:48.160><c> got</c><00:08:48.240><c> a</c><00:08:48.399><c> gap</c><00:08:48.560><c> in</c><00:08:48.680><c> my</c><00:08:48.839><c> resume</c><00:08:49.399><c> because</c><00:08:49.640><c> when</c>
+
+00:08:49.790 --> 00:08:49.800 align:start position:0%
+I've got a gap in my resume because when
+
+
+00:08:49.800 --> 00:08:51.670 align:start position:0%
+I've got a gap in my resume because when
+my<00:08:49.959><c> son</c><00:08:50.160><c> was</c><00:08:50.320><c> born</c><00:08:50.720><c> I</c><00:08:51.000><c> had</c><00:08:51.120><c> the</c><00:08:51.240><c> luxury</c><00:08:51.560><c> of</c>
+
+00:08:51.670 --> 00:08:51.680 align:start position:0%
+my son was born I had the luxury of
+
+
+00:08:51.680 --> 00:08:53.470 align:start position:0%
+my son was born I had the luxury of
+taking<00:08:51.920><c> some</c><00:08:52.160><c> time</c><00:08:52.399><c> off</c><00:08:52.959><c> while</c><00:08:53.120><c> that</c><00:08:53.240><c> was</c><00:08:53.320><c> a</c>
+
+00:08:53.470 --> 00:08:53.480 align:start position:0%
+taking some time off while that was a
+
+
+00:08:53.480 --> 00:08:55.509 align:start position:0%
+taking some time off while that was a
+respected<00:08:53.880><c> life</c><00:08:54.120><c> decision</c><00:08:54.440><c> in</c><00:08:54.600><c> Europe</c><00:08:55.320><c> here</c>
+
+00:08:55.509 --> 00:08:55.519 align:start position:0%
+respected life decision in Europe here
+
+
+00:08:55.519 --> 00:08:57.710 align:start position:0%
+respected life decision in Europe here
+it's<00:08:55.720><c> just</c><00:08:55.839><c> a</c><00:08:56.000><c> gap</c><00:08:56.160><c> in</c><00:08:56.279><c> my</c><00:08:56.399><c> resume</c>
+
+00:08:57.710 --> 00:08:57.720 align:start position:0%
+it's just a gap in my resume
+
+
+00:08:57.720 --> 00:08:59.829 align:start position:0%
+it's just a gap in my resume
+so<00:08:58.720><c> I'm</c><00:08:58.839><c> looking</c><00:08:59.040><c> to</c><00:08:59.160><c> go</c><00:08:59.240><c> back</c><00:08:59.600><c> do</c><00:08:59.720><c> the</c>
+
+00:08:59.829 --> 00:08:59.839 align:start position:0%
+so I'm looking to go back do the
+
+
+00:08:59.839 --> 00:09:03.430 align:start position:0%
+so I'm looking to go back do the
+workforce<00:09:00.200><c> and</c><00:09:00.320><c> I</c><00:09:00.440><c> have</c><00:09:00.680><c> the</c><00:09:01.519><c> flexibility</c><00:09:02.440><c> to</c>
+
+00:09:03.430 --> 00:09:03.440 align:start position:0%
+workforce and I have the flexibility to
+
+
+00:09:03.440 --> 00:09:06.110 align:start position:0%
+workforce and I have the flexibility to
+entertain
+
+00:09:06.110 --> 00:09:06.120 align:start position:0%
+
+
+
+00:09:06.120 --> 00:09:09.550 align:start position:0%
+
+options<00:09:07.120><c> who</c><00:09:07.240><c> else</c><00:09:07.519><c> would</c><00:09:07.680><c> like</c><00:09:07.839><c> to</c><00:09:08.000><c> change</c>
+
+00:09:09.550 --> 00:09:09.560 align:start position:0%
+options who else would like to change
+
+
+00:09:09.560 --> 00:09:13.550 align:start position:0%
+options who else would like to change
+jobs<00:09:10.560><c> everyone's</c><00:09:11.320><c> happy</c>
+
+00:09:13.550 --> 00:09:13.560 align:start position:0%
+jobs everyone's happy
+
+
+00:09:13.560 --> 00:09:17.030 align:start position:0%
+jobs everyone's happy
+awesome<00:09:14.560><c> all</c><00:09:14.720><c> right</c><00:09:15.000><c> so</c><00:09:15.360><c> um</c><00:09:16.200><c> who</c><00:09:16.440><c> here</c><00:09:16.600><c> is</c><00:09:16.880><c> not</c>
+
+00:09:17.030 --> 00:09:17.040 align:start position:0%
+awesome all right so um who here is not
+
+
+00:09:17.040 --> 00:09:18.990 align:start position:0%
+awesome all right so um who here is not
+a<00:09:17.279><c> member</c><00:09:17.600><c> of</c>
+
+00:09:18.990 --> 00:09:19.000 align:start position:0%
+a member of
+
+
+00:09:19.000 --> 00:09:22.430 align:start position:0%
+a member of
+trilog<00:09:20.000><c> not</c><00:09:20.120><c> a</c><00:09:20.279><c> member</c><00:09:20.959><c> all</c><00:09:21.120><c> right</c><00:09:21.880><c> I</c><00:09:22.000><c> think</c><00:09:22.279><c> we</c>
+
+00:09:22.430 --> 00:09:22.440 align:start position:0%
+trilog not a member all right I think we
+
+
+00:09:22.440 --> 00:09:24.310 align:start position:0%
+trilog not a member all right I think we
+have<00:09:22.680><c> that</c><00:09:22.839><c> many</c><00:09:23.079><c> membership</c><00:09:23.600><c> form</c><00:09:23.920><c> so</c>
+
+00:09:24.310 --> 00:09:24.320 align:start position:0%
+have that many membership form so
+
+
+00:09:24.320 --> 00:09:26.389 align:start position:0%
+have that many membership form so
+sitting<00:09:24.760><c> over</c><00:09:24.959><c> here</c><00:09:25.079><c> on</c><00:09:25.279><c> this</c>
+
+00:09:26.389 --> 00:09:26.399 align:start position:0%
+sitting over here on this
+
+
+00:09:26.399 --> 00:09:29.550 align:start position:0%
+sitting over here on this
+table<00:09:27.399><c> uh</c><00:09:27.560><c> is</c><00:09:27.680><c> that</c><00:09:27.920><c> right</c><00:09:28.320><c> over</c><00:09:28.519><c> here</c><00:09:28.680><c> on</c><00:09:28.920><c> that</c>
+
+00:09:29.550 --> 00:09:29.560 align:start position:0%
+table uh is that right over here on that
+
+
+00:09:29.560 --> 00:09:32.710 align:start position:0%
+table uh is that right over here on that
+C<00:09:29.920><c> Crescent</c><00:09:30.399><c> table</c><00:09:30.880><c> in</c><00:09:31.000><c> this</c><00:09:31.160><c> green</c><00:09:31.720><c> folder</c>
+
+00:09:32.710 --> 00:09:32.720 align:start position:0%
+C Crescent table in this green folder
+
+
+00:09:32.720 --> 00:09:35.590 align:start position:0%
+C Crescent table in this green folder
+here<00:09:32.959><c> on</c><00:09:33.240><c> this</c><00:09:33.480><c> table</c><00:09:34.480><c> you</c><00:09:34.600><c> can</c><00:09:34.800><c> fill</c><00:09:35.079><c> out</c><00:09:35.320><c> our</c>
+
+00:09:35.590 --> 00:09:35.600 align:start position:0%
+here on this table you can fill out our
+
+
+00:09:35.600 --> 00:09:37.710 align:start position:0%
+here on this table you can fill out our
+very<00:09:35.920><c> brief</c><00:09:36.279><c> membership</c><00:09:36.760><c> form</c><00:09:37.079><c> it</c><00:09:37.360><c> cost</c>
+
+00:09:37.710 --> 00:09:37.720 align:start position:0%
+very brief membership form it cost
+
+
+00:09:37.720 --> 00:09:40.550 align:start position:0%
+very brief membership form it cost
+absolutely<00:09:38.360><c> nothing</c><00:09:39.360><c> it</c><00:09:39.560><c> gains</c><00:09:39.839><c> you</c><00:09:40.040><c> bragging</c>
+
+00:09:40.550 --> 00:09:40.560 align:start position:0%
+absolutely nothing it gains you bragging
+
+
+00:09:40.560 --> 00:09:42.829 align:start position:0%
+absolutely nothing it gains you bragging
+rights<00:09:41.160><c> and</c><00:09:41.360><c> a</c><00:09:41.600><c> discount</c><00:09:42.079><c> at</c>
+
+00:09:42.829 --> 00:09:42.839 align:start position:0%
+rights and a discount at
+
+
+00:09:42.839 --> 00:09:46.470 align:start position:0%
+rights and a discount at
+INX<00:09:43.839><c> um</c><00:09:44.279><c> and</c><00:09:44.839><c> if</c><00:09:44.959><c> you</c><00:09:45.200><c> come</c><00:09:45.560><c> back</c><00:09:45.760><c> to</c><00:09:46.040><c> the</c><00:09:46.240><c> next</c>
+
+00:09:46.470 --> 00:09:46.480 align:start position:0%
+INX um and if you come back to the next
+
+
+00:09:46.480 --> 00:09:48.350 align:start position:0%
+INX um and if you come back to the next
+meeting<00:09:46.880><c> or</c><00:09:47.040><c> the</c><00:09:47.160><c> meeting</c><00:09:47.519><c> right</c><00:09:47.720><c> after</c><00:09:48.120><c> that</c>
+
+00:09:48.350 --> 00:09:48.360 align:start position:0%
+meeting or the meeting right after that
+
+
+00:09:48.360 --> 00:09:50.030 align:start position:0%
+meeting or the meeting right after that
+and<00:09:48.600><c> let</c><00:09:48.720><c> us</c><00:09:48.920><c> know</c><00:09:49.120><c> we'll</c><00:09:49.320><c> have</c><00:09:49.440><c> a</c><00:09:49.600><c> membership</c>
+
+00:09:50.030 --> 00:09:50.040 align:start position:0%
+and let us know we'll have a membership
+
+
+00:09:50.040 --> 00:09:52.550 align:start position:0%
+and let us know we'll have a membership
+card<00:09:50.279><c> for</c>
+
+00:09:52.550 --> 00:09:52.560 align:start position:0%
+
+
+
+00:09:52.560 --> 00:09:56.590 align:start position:0%
+
+you<00:09:53.560><c> all</c><00:09:53.680><c> right</c><00:09:53.920><c> so</c><00:09:54.279><c> now</c><00:09:54.920><c> on</c><00:09:55.120><c> to</c><00:09:55.360><c> our</c><00:09:55.600><c> main</c>
+
+00:09:56.590 --> 00:09:56.600 align:start position:0%
+you all right so now on to our main
+
+
+00:09:56.600 --> 00:09:59.590 align:start position:0%
+you all right so now on to our main
+attraction<00:09:57.600><c> Raspberry</c><00:09:58.200><c> Pi</c><00:09:58.560><c> as</c><00:09:58.760><c> presented</c>
+
+00:09:59.590 --> 00:09:59.600 align:start position:0%
+attraction Raspberry Pi as presented
+
+
+00:09:59.600 --> 00:10:01.990 align:start position:0%
+attraction Raspberry Pi as presented
+Splat<00:10:00.000><c> space</c><00:10:00.320><c> our</c><00:10:00.560><c> speakers</c><00:10:01.040><c> tonight</c><00:10:01.440><c> will</c><00:10:01.680><c> be</c>
+
+00:10:01.990 --> 00:10:02.000 align:start position:0%
+Splat space our speakers tonight will be
+
+
+00:10:02.000 --> 00:10:03.470 align:start position:0%
+Splat space our speakers tonight will be
+P
+
+00:10:03.470 --> 00:10:03.480 align:start position:0%
+P
+
+
+00:10:03.480 --> 00:10:05.949 align:start position:0%
+P
+soer<00:10:04.480><c> Alan</c>
+
+00:10:05.949 --> 00:10:05.959 align:start position:0%
+soer Alan
+
+
+00:10:05.959 --> 00:10:08.350 align:start position:0%
+soer Alan
+diaper<00:10:06.959><c> Clinton</c>
+
+00:10:08.350 --> 00:10:08.360 align:start position:0%
+diaper Clinton
+
+
+00:10:08.360 --> 00:10:11.470 align:start position:0%
+diaper Clinton
+DB<00:10:09.360><c> and</c><00:10:09.680><c> Peter</c>
+
+00:10:11.470 --> 00:10:11.480 align:start position:0%
+DB and Peter
+
+
+00:10:11.480 --> 00:10:14.750 align:start position:0%
+DB and Peter
+wrenches<00:10:12.480><c> and</c><00:10:12.720><c> with</c><00:10:13.000><c> that</c><00:10:13.800><c> I</c><00:10:13.920><c> would</c><00:10:14.200><c> like</c><00:10:14.399><c> to</c>
+
+00:10:14.750 --> 00:10:14.760 align:start position:0%
+wrenches and with that I would like to
+
+
+00:10:14.760 --> 00:10:17.710 align:start position:0%
+wrenches and with that I would like to
+hand<00:10:15.079><c> for</c><00:10:15.680><c> microphone</c><00:10:16.680><c> okay</c><00:10:17.360><c> I've</c><00:10:17.480><c> got</c><00:10:17.600><c> a</c>
+
+00:10:17.710 --> 00:10:17.720 align:start position:0%
+hand for microphone okay I've got a
+
+
+00:10:17.720 --> 00:10:22.509 align:start position:0%
+hand for microphone okay I've got a
+wireless<00:10:18.240><c> mic</c><00:10:19.160><c> fantastic</c><00:10:19.800><c> right</c>
+
+00:10:22.509 --> 00:10:22.519 align:start position:0%
+wireless mic fantastic right
+
+
+00:10:22.519 --> 00:10:25.750 align:start position:0%
+wireless mic fantastic right
+thanks<00:10:23.519><c> uh</c><00:10:24.440><c> I'm</c><00:10:24.600><c> get</c><00:10:24.760><c> help</c><00:10:24.920><c> with</c><00:10:25.040><c> bronchitis</c>
+
+00:10:25.750 --> 00:10:25.760 align:start position:0%
+thanks uh I'm get help with bronchitis
+
+
+00:10:25.760 --> 00:10:27.470 align:start position:0%
+thanks uh I'm get help with bronchitis
+and<00:10:25.920><c> I'm</c><00:10:26.040><c> going</c><00:10:26.120><c> to</c><00:10:26.360><c> try</c><00:10:26.640><c> real</c><00:10:26.880><c> hard</c><00:10:27.079><c> to</c><00:10:27.279><c> hit</c>
+
+00:10:27.470 --> 00:10:27.480 align:start position:0%
+and I'm going to try real hard to hit
+
+
+00:10:27.480 --> 00:10:30.990 align:start position:0%
+and I'm going to try real hard to hit
+this<00:10:27.640><c> Muse</c><00:10:28.320><c> button</c><00:10:29.360><c> before</c><00:10:29.560><c> I</c><00:10:29.720><c> talk</c><00:10:30.240><c> so</c>
+
+00:10:30.990 --> 00:10:31.000 align:start position:0%
+this Muse button before I talk so
+
+
+00:10:31.000 --> 00:10:34.910 align:start position:0%
+this Muse button before I talk so
+apologies<00:10:31.680><c> in</c><00:10:31.839><c> advance</c><00:10:32.320><c> if</c><00:10:32.519><c> I</c><00:10:33.160><c> have</c><00:10:33.279><c> a</c><00:10:34.160><c> but</c><00:10:34.720><c> I</c>
+
+00:10:34.910 --> 00:10:34.920 align:start position:0%
+apologies in advance if I have a but I
+
+
+00:10:34.920 --> 00:10:36.870 align:start position:0%
+apologies in advance if I have a but I
+think<00:10:35.079><c> I'm</c><00:10:35.200><c> on</c><00:10:35.320><c> the</c><00:10:35.440><c> right</c><00:10:35.600><c> side</c><00:10:35.720><c> of</c><00:10:35.920><c> that</c><00:10:36.720><c> U</c>
+
+00:10:36.870 --> 00:10:36.880 align:start position:0%
+think I'm on the right side of that U
+
+
+00:10:36.880 --> 00:10:38.710 align:start position:0%
+think I'm on the right side of that U
+tonight<00:10:37.120><c> we're</c><00:10:37.279><c> going</c><00:10:37.399><c> to</c><00:10:38.200><c> uh</c><00:10:38.360><c> provide</c><00:10:38.600><c> an</c>
+
+00:10:38.710 --> 00:10:38.720 align:start position:0%
+tonight we're going to uh provide an
+
+
+00:10:38.720 --> 00:10:40.590 align:start position:0%
+tonight we're going to uh provide an
+introduction<00:10:39.160><c> to</c><00:10:39.240><c> the</c><00:10:39.320><c> Rasberry</c><00:10:39.760><c> P</c><00:10:40.200><c> next</c>
+
+00:10:40.590 --> 00:10:40.600 align:start position:0%
+introduction to the Rasberry P next
+
+
+00:10:40.600 --> 00:10:44.910 align:start position:0%
+introduction to the Rasberry P next
+slide<00:10:41.600><c> and</c><00:10:42.160><c> this</c><00:10:42.320><c> is</c><00:10:42.680><c> the</c><00:10:43.320><c> upline</c><00:10:44.320><c> we'll</c><00:10:44.800><c> go</c>
+
+00:10:44.910 --> 00:10:44.920 align:start position:0%
+slide and this is the upline we'll go
+
+
+00:10:44.920 --> 00:10:48.470 align:start position:0%
+slide and this is the upline we'll go
+over<00:10:45.120><c> what</c><00:10:45.200><c> it</c><00:10:45.440><c> is</c><00:10:46.360><c> history</c><00:10:47.360><c> and</c><00:10:47.760><c> some</c><00:10:48.240><c> high</c>
+
+00:10:48.470 --> 00:10:48.480 align:start position:0%
+over what it is history and some high
+
+
+00:10:48.480 --> 00:10:53.110 align:start position:0%
+over what it is history and some high
+level<00:10:49.200><c> resources</c><00:10:50.200><c> and</c><00:10:50.480><c> then</c><00:10:50.920><c> into</c><00:10:51.880><c> uh</c><00:10:52.440><c> some</c>
+
+00:10:53.110 --> 00:10:53.120 align:start position:0%
+level resources and then into uh some
+
+
+00:10:53.120 --> 00:10:56.269 align:start position:0%
+level resources and then into uh some
+different<00:10:53.519><c> sets</c><00:10:53.880><c> of</c><00:10:54.079><c> use</c><00:10:54.399><c> cases</c><00:10:54.959><c> and</c><00:10:55.360><c> uh</c><00:10:55.720><c> demos</c>
+
+00:10:56.269 --> 00:10:56.279 align:start position:0%
+different sets of use cases and uh demos
+
+
+00:10:56.279 --> 00:11:01.710 align:start position:0%
+different sets of use cases and uh demos
+and<00:10:56.440><c> so</c><00:10:56.639><c> on</c><00:10:57.120><c> and</c><00:10:57.320><c> then</c><00:10:57.880><c> uh</c><00:10:58.279><c> Q&A</c>
+
+00:11:01.710 --> 00:11:01.720 align:start position:0%
+
+
+
+00:11:01.720 --> 00:11:03.710 align:start position:0%
+
+next<00:11:02.720><c> tonight</c><00:11:02.959><c> we're</c><00:11:03.079><c> going</c><00:11:03.200><c> to</c><00:11:03.360><c> do</c>
+
+00:11:03.710 --> 00:11:03.720 align:start position:0%
+next tonight we're going to do
+
+
+00:11:03.720 --> 00:11:04.829 align:start position:0%
+next tonight we're going to do
+presentations<00:11:04.279><c> and</c><00:11:04.440><c> we've</c><00:11:04.600><c> got</c><00:11:04.720><c> some</c>
+
+00:11:04.829 --> 00:11:04.839 align:start position:0%
+presentations and we've got some
+
+
+00:11:04.839 --> 00:11:06.310 align:start position:0%
+presentations and we've got some
+machines<00:11:05.240><c> set</c><00:11:05.360><c> up</c><00:11:05.519><c> in</c><00:11:05.600><c> the</c><00:11:05.760><c> back</c><00:11:05.959><c> that</c><00:11:06.040><c> you</c><00:11:06.160><c> can</c>
+
+00:11:06.310 --> 00:11:06.320 align:start position:0%
+machines set up in the back that you can
+
+
+00:11:06.320 --> 00:11:08.350 align:start position:0%
+machines set up in the back that you can
+play<00:11:06.560><c> with</c><00:11:07.399><c> well</c><00:11:07.560><c> the</c><00:11:07.680><c> one</c><00:11:07.800><c> on</c><00:11:07.920><c> the</c><00:11:08.040><c> right</c><00:11:08.240><c> with</c>
+
+00:11:08.350 --> 00:11:08.360 align:start position:0%
+play with well the one on the right with
+
+
+00:11:08.360 --> 00:11:09.750 align:start position:0%
+play with well the one on the right with
+the<00:11:08.480><c> big</c><00:11:08.600><c> monitor</c><00:11:09.000><c> you</c><00:11:09.079><c> can</c><00:11:09.240><c> play</c><00:11:09.480><c> with</c><00:11:09.639><c> the</c>
+
+00:11:09.750 --> 00:11:09.760 align:start position:0%
+the big monitor you can play with the
+
+
+00:11:09.760 --> 00:11:11.430 align:start position:0%
+the big monitor you can play with the
+others<00:11:10.079><c> you</c><00:11:10.200><c> can</c><00:11:10.680><c> talk</c><00:11:10.839><c> to</c><00:11:11.000><c> other</c><00:11:11.200><c> people</c>
+
+00:11:11.430 --> 00:11:11.440 align:start position:0%
+others you can talk to other people
+
+
+00:11:11.440 --> 00:11:13.870 align:start position:0%
+others you can talk to other people
+about<00:11:12.440><c> uh</c><00:11:12.600><c> right</c><00:11:12.760><c> after</c><00:11:13.079><c> presentation</c><00:11:13.760><c> you</c>
+
+00:11:13.870 --> 00:11:13.880 align:start position:0%
+about uh right after presentation you
+
+
+00:11:13.880 --> 00:11:16.030 align:start position:0%
+about uh right after presentation you
+can<00:11:14.320><c> feel</c><00:11:14.519><c> free</c><00:11:14.680><c> to</c><00:11:14.800><c> go</c><00:11:14.920><c> over</c><00:11:15.160><c> and</c><00:11:15.560><c> uh</c><00:11:15.760><c> quiz</c>
+
+00:11:16.030 --> 00:11:16.040 align:start position:0%
+can feel free to go over and uh quiz
+
+
+00:11:16.040 --> 00:11:18.870 align:start position:0%
+can feel free to go over and uh quiz
+them<00:11:16.240><c> about</c><00:11:16.560><c> that</c><00:11:17.480><c> um</c><00:11:17.680><c> on</c><00:11:17.959><c> Saturday</c><00:11:18.600><c> we</c><00:11:18.760><c> going</c>
+
+00:11:18.870 --> 00:11:18.880 align:start position:0%
+them about that um on Saturday we going
+
+
+00:11:18.880 --> 00:11:23.030 align:start position:0%
+them about that um on Saturday we going
+to<00:11:19.160><c> have</c><00:11:19.639><c> at</c><00:11:19.800><c> Splat</c><00:11:20.279><c> space</c><00:11:21.279><c> downtown</c><00:11:22.040><c> Durham</c>
+
+00:11:23.030 --> 00:11:23.040 align:start position:0%
+to have at Splat space downtown Durham
+
+
+00:11:23.040 --> 00:11:25.470 align:start position:0%
+to have at Splat space downtown Durham
+uh<00:11:23.519><c> a</c><00:11:23.720><c> workshop</c><00:11:24.399><c> all</c><00:11:24.639><c> day</c>
+
+00:11:25.470 --> 00:11:25.480 align:start position:0%
+uh a workshop all day
+
+
+00:11:25.480 --> 00:11:28.990 align:start position:0%
+uh a workshop all day
+95<00:11:26.480><c> uh</c><00:11:26.680><c> for</c><00:11:27.279><c> additional</c><00:11:27.800><c> activities</c><00:11:28.680><c> and</c><00:11:28.839><c> in</c>
+
+00:11:28.990 --> 00:11:29.000 align:start position:0%
+95 uh for additional activities and in
+
+
+00:11:29.000 --> 00:11:31.790 align:start position:0%
+95 uh for additional activities and in
+particular<00:11:29.639><c> particular</c><00:11:30.639><c> uh</c><00:11:30.959><c> since</c><00:11:31.279><c> Raspberry</c>
+
+00:11:31.790 --> 00:11:31.800 align:start position:0%
+particular particular uh since Raspberry
+
+
+00:11:31.800 --> 00:11:35.030 align:start position:0%
+particular particular uh since Raspberry
+Pi<00:11:32.079><c> was</c><00:11:32.279><c> designed</c><00:11:32.959><c> with</c><00:11:33.120><c> education</c><00:11:33.600><c> in</c><00:11:34.040><c> mind</c>
+
+00:11:35.030 --> 00:11:35.040 align:start position:0%
+Pi was designed with education in mind
+
+
+00:11:35.040 --> 00:11:37.949 align:start position:0%
+Pi was designed with education in mind
+anybody<00:11:35.480><c> that</c><00:11:35.600><c> is</c><00:11:35.880><c> interested</c><00:11:36.560><c> in</c><00:11:37.440><c> uh</c>
+
+00:11:37.949 --> 00:11:37.959 align:start position:0%
+anybody that is interested in uh
+
+
+00:11:37.959 --> 00:11:40.750 align:start position:0%
+anybody that is interested in uh
+discussing<00:11:38.959><c> uh</c><00:11:39.560><c> educational</c><00:11:40.240><c> aspects</c><00:11:40.600><c> of</c>
+
+00:11:40.750 --> 00:11:40.760 align:start position:0%
+discussing uh educational aspects of
+
+
+00:11:40.760 --> 00:11:44.110 align:start position:0%
+discussing uh educational aspects of
+Raspberry<00:11:41.279><c> Pi</c><00:11:42.040><c> should</c><00:11:43.040><c> Conta</c><00:11:43.480><c> touchbased</c>
+
+00:11:44.110 --> 00:11:44.120 align:start position:0%
+Raspberry Pi should Conta touchbased
+
+
+00:11:44.120 --> 00:11:46.550 align:start position:0%
+Raspberry Pi should Conta touchbased
+with<00:11:44.279><c> Elliot</c><00:11:44.639><c> Hower</c><00:11:45.279><c> is's</c><00:11:45.560><c> right</c><00:11:45.800><c> here</c><00:11:46.320><c> his</c>
+
+00:11:46.550 --> 00:11:46.560 align:start position:0%
+with Elliot Hower is's right here his
+
+
+00:11:46.560 --> 00:11:50.230 align:start position:0%
+with Elliot Hower is's right here his
+email<00:11:46.880><c> is</c><00:11:47.160><c> right</c><00:11:47.360><c> there</c><00:11:48.360><c> and</c><00:11:48.880><c> Elliott</c><00:11:49.399><c> will</c><00:11:49.639><c> be</c>
+
+00:11:50.230 --> 00:11:50.240 align:start position:0%
+email is right there and Elliott will be
+
+
+00:11:50.240 --> 00:11:52.550 align:start position:0%
+email is right there and Elliott will be
+coordinating<00:11:51.240><c> uh</c><00:11:51.399><c> discussions</c><00:11:52.079><c> related</c><00:11:52.399><c> to</c>
+
+00:11:52.550 --> 00:11:52.560 align:start position:0%
+coordinating uh discussions related to
+
+
+00:11:52.560 --> 00:11:56.750 align:start position:0%
+coordinating uh discussions related to
+education<00:11:53.320><c> on</c><00:11:53.959><c> uh</c><00:11:54.480><c> Saturday</c><00:11:55.480><c> say</c><00:11:55.720><c> also</c><00:11:56.440><c> um</c><00:11:56.600><c> we</c>
+
+00:11:56.750 --> 00:11:56.760 align:start position:0%
+education on uh Saturday say also um we
+
+
+00:11:56.760 --> 00:11:58.790 align:start position:0%
+education on uh Saturday say also um we
+got<00:11:56.920><c> grant</c><00:11:57.240><c> funding</c><00:11:57.560><c> we're</c><00:11:57.720><c> going</c><00:11:57.800><c> to</c><00:11:57.959><c> buy</c><00:11:58.279><c> 20</c>
+
+00:11:58.790 --> 00:11:58.800 align:start position:0%
+got grant funding we're going to buy 20
+
+
+00:11:58.800 --> 00:12:01.069 align:start position:0%
+got grant funding we're going to buy 20
+pi<00:11:59.360><c> at</c><00:11:59.519><c> UNC</c><00:12:00.079><c> I'm</c><00:12:00.200><c> going</c><00:12:00.279><c> to</c><00:12:00.399><c> be</c><00:12:00.560><c> teaching</c><00:12:00.839><c> a</c>
+
+00:12:01.069 --> 00:12:01.079 align:start position:0%
+pi at UNC I'm going to be teaching a
+
+
+00:12:01.079 --> 00:12:04.230 align:start position:0%
+pi at UNC I'm going to be teaching a
+programming<00:12:01.560><c> class</c><00:12:02.000><c> using</c><00:12:03.000><c> uh</c><00:12:03.160><c> the</c><00:12:03.360><c> pi</c><00:12:03.839><c> as</c><00:12:04.040><c> the</c>
+
+00:12:04.230 --> 00:12:04.240 align:start position:0%
+programming class using uh the pi as the
+
+
+00:12:04.240 --> 00:12:05.509 align:start position:0%
+programming class using uh the pi as the
+textbook
+
+00:12:05.509 --> 00:12:05.519 align:start position:0%
+textbook
+
+
+00:12:05.519 --> 00:12:08.389 align:start position:0%
+textbook
+and<00:12:06.519><c> workbench</c><00:12:07.000><c> for</c><00:12:07.120><c> that</c><00:12:07.399><c> class</c><00:12:07.680><c> so</c><00:12:08.160><c> come</c>
+
+00:12:08.389 --> 00:12:08.399 align:start position:0%
+and workbench for that class so come
+
+
+00:12:08.399 --> 00:12:09.750 align:start position:0%
+and workbench for that class so come
+come<00:12:08.560><c> by</c><00:12:08.680><c> and</c><00:12:08.800><c> talk</c><00:12:09.000><c> to</c>
+
+00:12:09.750 --> 00:12:09.760 align:start position:0%
+come by and talk to
+
+
+00:12:09.760 --> 00:12:12.629 align:start position:0%
+come by and talk to
+this<00:12:10.760><c> so</c><00:12:11.079><c> what</c><00:12:11.240><c> is</c><00:12:11.360><c> the</c><00:12:11.519><c> Raspberry</c><00:12:12.040><c> p</c><00:12:12.360><c> well</c>
+
+00:12:12.629 --> 00:12:12.639 align:start position:0%
+this so what is the Raspberry p well
+
+
+00:12:12.639 --> 00:12:16.829 align:start position:0%
+this so what is the Raspberry p well
+it's<00:12:13.079><c> it's</c><00:12:14.000><c> uh</c><00:12:15.000><c> a</c><00:12:15.240><c> very</c><00:12:15.399><c> flexible</c><00:12:16.279><c> very</c><00:12:16.480><c> low</c>
+
+00:12:16.829 --> 00:12:16.839 align:start position:0%
+it's it's uh a very flexible very low
+
+
+00:12:16.839 --> 00:12:19.910 align:start position:0%
+it's it's uh a very flexible very low
+powerered<00:12:16.959><c> very</c><00:12:18.079><c> cheap</c><00:12:19.079><c> um</c><00:12:19.360><c> computer</c>
+
+00:12:19.910 --> 00:12:19.920 align:start position:0%
+powerered very cheap um computer
+
+
+00:12:19.920 --> 00:12:22.509 align:start position:0%
+powerered very cheap um computer
+designed<00:12:20.360><c> and</c><00:12:20.720><c> built</c><00:12:21.160><c> in</c><00:12:21.320><c> the</c><00:12:21.480><c> UK</c><00:12:22.279><c> it's</c>
+
+00:12:22.509 --> 00:12:22.519 align:start position:0%
+designed and built in the UK it's
+
+
+00:12:22.519 --> 00:12:23.910 align:start position:0%
+designed and built in the UK it's
+manufactured<00:12:23.079><c> in</c>
+
+00:12:23.910 --> 00:12:23.920 align:start position:0%
+manufactured in
+
+
+00:12:23.920 --> 00:12:27.870 align:start position:0%
+manufactured in
+Wales<00:12:24.920><c> uh</c><00:12:25.160><c> it's</c><00:12:25.639><c> a</c><00:12:25.959><c> mostly</c><00:12:26.720><c> open</c><00:12:27.720><c> uh</c>
+
+00:12:27.870 --> 00:12:27.880 align:start position:0%
+Wales uh it's a mostly open uh
+
+
+00:12:27.880 --> 00:12:30.230 align:start position:0%
+Wales uh it's a mostly open uh
+educational<00:12:28.480><c> platform</c><00:12:29.600><c> the</c><00:12:29.800><c> only</c><00:12:30.040><c> thing</c>
+
+00:12:30.230 --> 00:12:30.240 align:start position:0%
+educational platform the only thing
+
+
+00:12:30.240 --> 00:12:32.790 align:start position:0%
+educational platform the only thing
+that's<00:12:30.600><c> not</c><00:12:30.920><c> completely</c><00:12:31.440><c> open</c><00:12:32.079><c> is</c><00:12:32.320><c> the</c><00:12:32.480><c> blob</c>
+
+00:12:32.790 --> 00:12:32.800 align:start position:0%
+that's not completely open is the blob
+
+
+00:12:32.800 --> 00:12:35.750 align:start position:0%
+that's not completely open is the blob
+of<00:12:32.959><c> code</c><00:12:33.720><c> uh</c><00:12:34.440><c> constituting</c><00:12:34.959><c> the</c><00:12:35.120><c> firmware</c><00:12:35.600><c> and</c>
+
+00:12:35.750 --> 00:12:35.760 align:start position:0%
+of code uh constituting the firmware and
+
+
+00:12:35.760 --> 00:12:39.230 align:start position:0%
+of code uh constituting the firmware and
+inside<00:12:36.079><c> one</c><00:12:36.199><c> of</c><00:12:36.279><c> the</c><00:12:36.680><c> chips</c><00:12:37.680><c> uh</c><00:12:37.800><c> it's</c><00:12:38.120><c> also</c><00:12:39.120><c> uh</c>
+
+00:12:39.230 --> 00:12:39.240 align:start position:0%
+inside one of the chips uh it's also uh
+
+
+00:12:39.240 --> 00:12:41.790 align:start position:0%
+inside one of the chips uh it's also uh
+can<00:12:39.440><c> be</c><00:12:39.639><c> a</c><00:12:39.800><c> standalone</c><00:12:40.560><c> system</c><00:12:40.839><c> running</c><00:12:41.240><c> a</c><00:12:41.639><c> a</c>
+
+00:12:41.790 --> 00:12:41.800 align:start position:0%
+can be a standalone system running a a
+
+
+00:12:41.800 --> 00:12:44.030 align:start position:0%
+can be a standalone system running a a
+variety<00:12:42.120><c> of</c><00:12:42.279><c> operating</c><00:12:42.720><c> systems</c><00:12:43.560><c> and</c><00:12:43.680><c> it's</c><00:12:43.839><c> a</c>
+
+00:12:44.030 --> 00:12:44.040 align:start position:0%
+variety of operating systems and it's a
+
+
+00:12:44.040 --> 00:12:47.550 align:start position:0%
+variety of operating systems and it's a
+powerful<00:12:45.040><c> uh</c><00:12:45.800><c> programming</c><00:12:46.560><c> environment</c>
+
+00:12:47.550 --> 00:12:47.560 align:start position:0%
+powerful uh programming environment
+
+
+00:12:47.560 --> 00:12:50.750 align:start position:0%
+powerful uh programming environment
+quick<00:12:47.839><c> history</c><00:12:48.680><c> um</c><00:12:48.920><c> Brit</c><00:12:49.279><c> named</c><00:12:49.839><c> uh</c><00:12:50.279><c> Evan</c>
+
+00:12:50.750 --> 00:12:50.760 align:start position:0%
+quick history um Brit named uh Evan
+
+
+00:12:50.760 --> 00:12:54.230 align:start position:0%
+quick history um Brit named uh Evan
+Upton<00:12:51.760><c> uh</c><00:12:51.880><c> was</c><00:12:52.040><c> director</c><00:12:52.399><c> of</c><00:12:53.000><c> studies</c><00:12:53.440><c> at</c><00:12:53.880><c> at</c>
+
+00:12:54.230 --> 00:12:54.240 align:start position:0%
+Upton uh was director of studies at at
+
+
+00:12:54.240 --> 00:12:56.870 align:start position:0%
+Upton uh was director of studies at at
+Cambridge<00:12:55.240><c> and</c><00:12:55.440><c> he</c><00:12:55.600><c> noticed</c><00:12:56.240><c> that</c><00:12:56.639><c> the</c>
+
+00:12:56.870 --> 00:12:56.880 align:start position:0%
+Cambridge and he noticed that the
+
+
+00:12:56.880 --> 00:12:58.550 align:start position:0%
+Cambridge and he noticed that the
+computer<00:12:57.279><c> science</c><00:12:57.600><c> students</c><00:12:58.079><c> were</c><00:12:58.360><c> not</c>
+
+00:12:58.550 --> 00:12:58.560 align:start position:0%
+computer science students were not
+
+
+00:12:58.560 --> 00:13:00.230 align:start position:0%
+computer science students were not
+nearly<00:12:58.839><c> as</c><00:12:59.240><c> prepared</c><00:12:59.680><c> in</c><00:12:59.800><c> terms</c><00:13:00.040><c> of</c>
+
+00:13:00.230 --> 00:13:00.240 align:start position:0%
+nearly as prepared in terms of
+
+
+00:13:00.240 --> 00:13:01.870 align:start position:0%
+nearly as prepared in terms of
+programming<00:13:00.680><c> and</c><00:13:00.880><c> Hardware</c><00:13:01.440><c> as</c><00:13:01.600><c> they</c><00:13:01.760><c> had</c>
+
+00:13:01.870 --> 00:13:01.880 align:start position:0%
+programming and Hardware as they had
+
+
+00:13:01.880 --> 00:13:05.590 align:start position:0%
+programming and Hardware as they had
+been<00:13:02.079><c> in</c><00:13:02.279><c> previous</c><00:13:02.920><c> years</c><00:13:03.920><c> uh</c><00:13:04.440><c> yet</c><00:13:04.880><c> uh</c><00:13:05.440><c> for</c>
+
+00:13:05.590 --> 00:13:05.600 align:start position:0%
+been in previous years uh yet uh for
+
+
+00:13:05.600 --> 00:13:08.030 align:start position:0%
+been in previous years uh yet uh for
+example<00:13:06.000><c> one</c><00:13:06.320><c> one</c><00:13:06.560><c> student</c><00:13:07.320><c> uh</c><00:13:07.519><c> came</c><00:13:07.720><c> and</c><00:13:07.839><c> said</c>
+
+00:13:08.030 --> 00:13:08.040 align:start position:0%
+example one one student uh came and said
+
+
+00:13:08.040 --> 00:13:10.030 align:start position:0%
+example one one student uh came and said
+he<00:13:08.120><c> wanted</c><00:13:08.399><c> to</c><00:13:08.760><c> do</c><00:13:09.000><c> game</c><00:13:09.320><c> programming</c><00:13:09.880><c> and</c>
+
+00:13:10.030 --> 00:13:10.040 align:start position:0%
+he wanted to do game programming and
+
+
+00:13:10.040 --> 00:13:13.910 align:start position:0%
+he wanted to do game programming and
+Evan<00:13:10.320><c> said</c><00:13:10.560><c> well</c><00:13:10.760><c> that's</c><00:13:11.160><c> great</c><00:13:12.279><c> um</c><00:13:13.279><c> I</c><00:13:13.480><c> I</c><00:13:13.560><c> can</c>
+
+00:13:13.910 --> 00:13:13.920 align:start position:0%
+Evan said well that's great um I I can
+
+
+00:13:13.920 --> 00:13:16.310 align:start position:0%
+Evan said well that's great um I I can
+uh<00:13:14.079><c> show</c><00:13:14.320><c> you</c><00:13:14.440><c> some</c><00:13:14.639><c> books</c><00:13:15.120><c> uh</c><00:13:15.800><c> related</c><00:13:16.120><c> to</c>
+
+00:13:16.310 --> 00:13:16.320 align:start position:0%
+uh show you some books uh related to
+
+
+00:13:16.320 --> 00:13:17.910 align:start position:0%
+uh show you some books uh related to
+programming<00:13:17.079><c> what</c><00:13:17.199><c> kind</c><00:13:17.320><c> of</c><00:13:17.399><c> tools</c><00:13:17.680><c> do</c><00:13:17.800><c> you</c>
+
+00:13:17.910 --> 00:13:17.920 align:start position:0%
+programming what kind of tools do you
+
+
+00:13:17.920 --> 00:13:19.670 align:start position:0%
+programming what kind of tools do you
+have<00:13:18.040><c> at</c><00:13:18.199><c> home</c><00:13:18.399><c> and</c><00:13:18.519><c> he</c><00:13:18.639><c> says</c><00:13:18.880><c> I've</c><00:13:19.040><c> got</c><00:13:19.160><c> a</c><00:13:19.320><c> Wii</c>
+
+00:13:19.670 --> 00:13:19.680 align:start position:0%
+have at home and he says I've got a Wii
+
+
+00:13:19.680 --> 00:13:23.110 align:start position:0%
+have at home and he says I've got a Wii
+and<00:13:19.880><c> an</c>
+
+00:13:23.110 --> 00:13:23.120 align:start position:0%
+
+
+
+00:13:23.120 --> 00:13:25.829 align:start position:0%
+
+Xbox<00:13:24.120><c> so</c><00:13:24.399><c> he</c><00:13:24.560><c> kind</c><00:13:24.639><c> of</c><00:13:24.800><c> reacted</c><00:13:25.199><c> to</c><00:13:25.360><c> that</c><00:13:25.639><c> and</c>
+
+00:13:25.829 --> 00:13:25.839 align:start position:0%
+Xbox so he kind of reacted to that and
+
+
+00:13:25.839 --> 00:13:28.310 align:start position:0%
+Xbox so he kind of reacted to that and
+was<00:13:26.040><c> looking</c><00:13:26.839><c> was</c><00:13:27.120><c> was</c><00:13:27.360><c> interested</c><00:13:27.880><c> in</c><00:13:28.079><c> this</c>
+
+00:13:28.310 --> 00:13:28.320 align:start position:0%
+was looking was was interested in this
+
+
+00:13:28.320 --> 00:13:31.230 align:start position:0%
+was looking was was interested in this
+project<00:13:28.839><c> but</c><00:13:29.199><c> number</c><00:13:29.360><c> of</c><00:13:29.440><c> years</c><00:13:29.639><c> ago</c><00:13:30.639><c> but</c><00:13:31.079><c> it</c>
+
+00:13:31.230 --> 00:13:31.240 align:start position:0%
+project but number of years ago but it
+
+
+00:13:31.240 --> 00:13:34.790 align:start position:0%
+project but number of years ago but it
+didn't<00:13:31.519><c> really</c><00:13:32.160><c> percolate</c><00:13:32.760><c> until</c><00:13:33.120><c> he</c><00:13:34.040><c> uh</c><00:13:34.560><c> left</c>
+
+00:13:34.790 --> 00:13:34.800 align:start position:0%
+didn't really percolate until he uh left
+
+
+00:13:34.800 --> 00:13:37.069 align:start position:0%
+didn't really percolate until he uh left
+the<00:13:34.920><c> university</c><00:13:35.600><c> and</c><00:13:35.760><c> joined</c><00:13:36.040><c> broadcom</c><00:13:36.760><c> as</c><00:13:36.880><c> a</c>
+
+00:13:37.069 --> 00:13:37.079 align:start position:0%
+the university and joined broadcom as a
+
+
+00:13:37.079 --> 00:13:41.310 align:start position:0%
+the university and joined broadcom as a
+chip<00:13:37.560><c> architect</c><00:13:38.560><c> hit</c><00:13:38.760><c> the</c><00:13:38.880><c> next</c><00:13:39.279><c> slide</c><00:13:40.279><c> and</c><00:13:41.240><c> uh</c>
+
+00:13:41.310 --> 00:13:41.320 align:start position:0%
+chip architect hit the next slide and uh
+
+
+00:13:41.320 --> 00:13:44.790 align:start position:0%
+chip architect hit the next slide and uh
+over<00:13:41.519><c> a</c><00:13:41.639><c> few</c><00:13:41.880><c> years</c><00:13:42.360><c> time</c><00:13:43.360><c> he</c><00:13:43.519><c> brought</c><00:13:43.760><c> into</c><00:13:44.600><c> uh</c>
+
+00:13:44.790 --> 00:13:44.800 align:start position:0%
+over a few years time he brought into uh
+
+
+00:13:44.800 --> 00:13:47.269 align:start position:0%
+over a few years time he brought into uh
+mind<00:13:45.360><c> a</c><00:13:45.680><c> design</c><00:13:46.120><c> for</c><00:13:46.440><c> a</c><00:13:46.600><c> machine</c><00:13:46.959><c> that</c><00:13:47.079><c> he</c>
+
+00:13:47.269 --> 00:13:47.279 align:start position:0%
+mind a design for a machine that he
+
+
+00:13:47.279 --> 00:13:48.949 align:start position:0%
+mind a design for a machine that he
+imagined<00:13:47.760><c> would</c><00:13:47.920><c> just</c><00:13:48.079><c> run</c><00:13:48.399><c> Python</c><00:13:48.760><c> and</c><00:13:48.880><c> it</c>
+
+00:13:48.949 --> 00:13:48.959 align:start position:0%
+imagined would just run Python and it
+
+
+00:13:48.959 --> 00:13:51.990 align:start position:0%
+imagined would just run Python and it
+would<00:13:49.120><c> be</c><00:13:49.279><c> kind</c><00:13:49.360><c> of</c><00:13:49.480><c> like</c><00:13:50.160><c> the</c><00:13:50.279><c> old</c><00:13:50.480><c> BBC</c><00:13:51.440><c> uh</c>
+
+00:13:51.990 --> 00:13:52.000 align:start position:0%
+would be kind of like the old BBC uh
+
+
+00:13:52.000 --> 00:13:54.150 align:start position:0%
+would be kind of like the old BBC uh
+basic<00:13:52.519><c> computer</c><00:13:52.920><c> from</c><00:13:53.199><c> years</c><00:13:53.440><c> ago</c><00:13:53.800><c> that</c><00:13:53.959><c> was</c>
+
+00:13:54.150 --> 00:13:54.160 align:start position:0%
+basic computer from years ago that was
+
+
+00:13:54.160 --> 00:13:56.550 align:start position:0%
+basic computer from years ago that was
+sponsored<00:13:54.639><c> by</c><00:13:54.759><c> the</c><00:13:54.880><c> BBC</c><00:13:55.480><c> and</c><00:13:55.800><c> uh</c><00:13:56.000><c> became</c><00:13:56.320><c> very</c>
+
+00:13:56.550 --> 00:13:56.560 align:start position:0%
+sponsored by the BBC and uh became very
+
+
+00:13:56.560 --> 00:13:59.110 align:start position:0%
+sponsored by the BBC and uh became very
+popular<00:13:56.880><c> in</c><00:13:57.000><c> Britain</c><00:13:58.000><c> here's</c><00:13:58.279><c> a</c><00:13:58.560><c> an</c><00:13:58.639><c> early</c>
+
+00:13:59.110 --> 00:13:59.120 align:start position:0%
+popular in Britain here's a an early
+
+
+00:13:59.120 --> 00:14:02.550 align:start position:0%
+popular in Britain here's a an early
+protype<00:13:59.759><c> if</c><00:13:59.920><c> you</c><00:14:00.440><c> can</c><00:14:01.440><c> on</c><00:14:01.560><c> the</c><00:14:01.720><c> left</c><00:14:01.920><c> is</c><00:14:02.040><c> a</c><00:14:02.160><c> USB</c>
+
+00:14:02.550 --> 00:14:02.560 align:start position:0%
+protype if you can on the left is a USB
+
+
+00:14:02.560 --> 00:14:04.030 align:start position:0%
+protype if you can on the left is a USB
+connector<00:14:02.880><c> and</c><00:14:03.000><c> on</c><00:14:03.079><c> the</c><00:14:03.199><c> right</c><00:14:03.320><c> is</c><00:14:03.440><c> an</c><00:14:03.560><c> HDMI</c>
+
+00:14:04.030 --> 00:14:04.040 align:start position:0%
+connector and on the right is an HDMI
+
+
+00:14:04.040 --> 00:14:05.790 align:start position:0%
+connector and on the right is an HDMI
+video<00:14:04.360><c> connector</c><00:14:05.040><c> give</c><00:14:05.160><c> you</c><00:14:05.279><c> an</c><00:14:05.399><c> idea</c><00:14:05.600><c> of</c><00:14:05.680><c> the</c>
+
+00:14:05.790 --> 00:14:05.800 align:start position:0%
+video connector give you an idea of the
+
+
+00:14:05.800 --> 00:14:10.189 align:start position:0%
+video connector give you an idea of the
+scale<00:14:06.079><c> it's</c><00:14:06.360><c> really</c><00:14:06.880><c> small</c><00:14:08.079><c> um</c><00:14:09.079><c> he</c><00:14:09.839><c> discovered</c>
+
+00:14:10.189 --> 00:14:10.199 align:start position:0%
+scale it's really small um he discovered
+
+
+00:14:10.199 --> 00:14:13.790 align:start position:0%
+scale it's really small um he discovered
+that<00:14:10.720><c> the</c><00:14:11.320><c> bank</c><00:14:11.600><c> for</c><00:14:11.920><c> buck</c><00:14:12.920><c> available</c><00:14:13.519><c> using</c>
+
+00:14:13.790 --> 00:14:13.800 align:start position:0%
+that the bank for buck available using
+
+
+00:14:13.800 --> 00:14:18.870 align:start position:0%
+that the bank for buck available using
+broadcom<00:14:14.759><c> uh</c><00:14:14.920><c> system</c><00:14:15.240><c> on</c><00:14:15.440><c> chips</c><00:14:16.720><c> but</c><00:14:17.720><c> uh</c>
+
+00:14:18.870 --> 00:14:18.880 align:start position:0%
+broadcom uh system on chips but uh
+
+
+00:14:18.880 --> 00:14:21.749 align:start position:0%
+broadcom uh system on chips but uh
+allowed<00:14:19.880><c> much</c><00:14:20.040><c> more</c><00:14:20.240><c> enthusiastic</c><00:14:20.959><c> design</c>
+
+00:14:21.749 --> 00:14:21.759 align:start position:0%
+allowed much more enthusiastic design
+
+
+00:14:21.759 --> 00:14:26.269 align:start position:0%
+allowed much more enthusiastic design
+with<00:14:21.959><c> more</c><00:14:22.360><c> power</c><00:14:23.360><c> for</c><00:14:23.600><c> reasonable</c><00:14:24.600><c> price</c><00:14:25.600><c> uh</c>
+
+00:14:26.269 --> 00:14:26.279 align:start position:0%
+with more power for reasonable price uh
+
+
+00:14:26.279 --> 00:14:29.470 align:start position:0%
+with more power for reasonable price uh
+this<00:14:26.560><c> developed</c><00:14:27.160><c> into</c><00:14:27.959><c> a</c><00:14:28.160><c> partnership</c><00:14:29.240><c> with</c>
+
+00:14:29.470 --> 00:14:29.480 align:start position:0%
+this developed into a partnership with
+
+
+00:14:29.480 --> 00:14:32.030 align:start position:0%
+this developed into a partnership with
+some<00:14:29.639><c> of</c><00:14:29.800><c> the</c><00:14:30.160><c> commercial</c><00:14:31.160><c> uh</c><00:14:31.320><c> entities</c><00:14:31.880><c> in</c>
+
+00:14:32.030 --> 00:14:32.040 align:start position:0%
+some of the commercial uh entities in
+
+
+00:14:32.040 --> 00:14:35.870 align:start position:0%
+some of the commercial uh entities in
+the<00:14:32.680><c> UK</c><00:14:33.680><c> and</c><00:14:34.639><c> it</c><00:14:34.839><c> just</c><00:14:35.000><c> got</c><00:14:35.199><c> bigger</c><00:14:35.480><c> and</c><00:14:35.639><c> bigger</c>
+
+00:14:35.870 --> 00:14:35.880 align:start position:0%
+the UK and it just got bigger and bigger
+
+
+00:14:35.880 --> 00:14:37.189 align:start position:0%
+the UK and it just got bigger and bigger
+and<00:14:36.040><c> bigger</c><00:14:36.399><c> to</c><00:14:36.560><c> the</c><00:14:36.680><c> point</c><00:14:36.839><c> where</c><00:14:37.079><c> they</c>
+
+00:14:37.189 --> 00:14:37.199 align:start position:0%
+and bigger to the point where they
+
+
+00:14:37.199 --> 00:14:38.870 align:start position:0%
+and bigger to the point where they
+decided<00:14:37.639><c> okay</c><00:14:37.800><c> well</c><00:14:37.920><c> we're</c><00:14:38.079><c> going</c><00:14:38.199><c> to</c><00:14:38.720><c> we're</c>
+
+00:14:38.870 --> 00:14:38.880 align:start position:0%
+decided okay well we're going to we're
+
+
+00:14:38.880 --> 00:14:40.590 align:start position:0%
+decided okay well we're going to we're
+going<00:14:39.000><c> to</c><00:14:39.320><c> arrange</c><00:14:39.759><c> for</c><00:14:39.920><c> the</c><00:14:40.079><c> contract</c>
+
+00:14:40.590 --> 00:14:40.600 align:start position:0%
+going to arrange for the contract
+
+
+00:14:40.600 --> 00:14:42.509 align:start position:0%
+going to arrange for the contract
+manufacturer<00:14:41.279><c> to</c><00:14:41.399><c> make</c><00:14:41.680><c> 10,000</c><00:14:42.240><c> of</c><00:14:42.360><c> these</c>
+
+00:14:42.509 --> 00:14:42.519 align:start position:0%
+manufacturer to make 10,000 of these
+
+
+00:14:42.519 --> 00:14:45.389 align:start position:0%
+manufacturer to make 10,000 of these
+boards<00:14:43.320><c> and</c><00:14:43.480><c> everybody</c><00:14:43.800><c> will</c><00:14:44.000><c> be</c><00:14:44.199><c> happy</c><00:14:45.000><c> and</c>
+
+00:14:45.389 --> 00:14:45.399 align:start position:0%
+boards and everybody will be happy and
+
+
+00:14:45.399 --> 00:14:48.310 align:start position:0%
+boards and everybody will be happy and
+they<00:14:45.519><c> made</c><00:14:45.720><c> them</c><00:14:45.839><c> for</c><00:14:46.120><c> sale</c><00:14:46.920><c> uh</c><00:14:47.120><c> available</c><00:14:47.759><c> on</c>
+
+00:14:48.310 --> 00:14:48.320 align:start position:0%
+they made them for sale uh available on
+
+
+00:14:48.320 --> 00:14:52.629 align:start position:0%
+they made them for sale uh available on
+uh<00:14:48.800><c> February</c><00:14:49.240><c> 29th</c><00:14:50.040><c> last</c><00:14:50.320><c> year</c><00:14:51.040><c> and</c><00:14:51.480><c> that</c><00:14:51.800><c> day</c>
+
+00:14:52.629 --> 00:14:52.639 align:start position:0%
+uh February 29th last year and that day
+
+
+00:14:52.639 --> 00:14:56.670 align:start position:0%
+uh February 29th last year and that day
+100,000<00:14:53.360><c> people</c><00:14:54.160><c> hit</c><00:14:54.519><c> the</c><00:14:54.880><c> order</c><00:14:55.680><c> button</c>
+
+00:14:56.670 --> 00:14:56.680 align:start position:0%
+100,000 people hit the order button
+
+
+00:14:56.680 --> 00:14:59.670 align:start position:0%
+100,000 people hit the order button
+actually<00:14:57.000><c> they</c><00:14:57.199><c> crashed</c><00:14:57.600><c> the</c><00:14:58.040><c> websites</c><00:14:59.120><c> and</c>
+
+00:14:59.670 --> 00:14:59.680 align:start position:0%
+actually they crashed the websites and
+
+
+00:14:59.680 --> 00:15:01.629 align:start position:0%
+actually they crashed the websites and
+those<00:14:59.880><c> of</c><00:15:00.079><c> us</c><00:15:00.279><c> that</c><00:15:00.360><c> were</c><00:15:00.519><c> trying</c><00:15:00.759><c> to</c><00:15:00.920><c> buy</c><00:15:01.199><c> them</c>
+
+00:15:01.629 --> 00:15:01.639 align:start position:0%
+those of us that were trying to buy them
+
+
+00:15:01.639 --> 00:15:03.629 align:start position:0%
+those of us that were trying to buy them
+spent<00:15:02.639><c> hours</c><00:15:02.880><c> and</c><00:15:03.000><c> hours</c><00:15:03.199><c> and</c><00:15:03.320><c> hours</c><00:15:03.519><c> and</c>
+
+00:15:03.629 --> 00:15:03.639 align:start position:0%
+spent hours and hours and hours and
+
+
+00:15:03.639 --> 00:15:10.030 align:start position:0%
+spent hours and hours and hours and
+hours<00:15:04.759><c> with</c><00:15:05.759><c> web</c><00:15:06.079><c> timeouts</c><00:15:06.519><c> and</c><00:15:06.680><c> so</c><00:15:06.959><c> on</c><00:15:07.959><c> uh</c><00:15:09.040><c> and</c>
+
+00:15:10.030 --> 00:15:10.040 align:start position:0%
+hours with web timeouts and so on uh and
+
+
+00:15:10.040 --> 00:15:12.030 align:start position:0%
+hours with web timeouts and so on uh and
+there<00:15:10.160><c> was</c><00:15:10.279><c> a</c><00:15:10.360><c> long</c><00:15:10.560><c> lead</c><00:15:10.920><c> time</c><00:15:11.279><c> during</c><00:15:11.680><c> the</c>
+
+00:15:12.030 --> 00:15:12.040 align:start position:0%
+there was a long lead time during the
+
+
+00:15:12.040 --> 00:15:15.509 align:start position:0%
+there was a long lead time during the
+the<00:15:12.240><c> year</c><00:15:13.000><c> but</c><00:15:13.959><c> the</c><00:15:14.480><c> popularity</c><00:15:15.040><c> of</c><00:15:15.160><c> the</c><00:15:15.320><c> thing</c>
+
+00:15:15.509 --> 00:15:15.519 align:start position:0%
+the year but the popularity of the thing
+
+
+00:15:15.519 --> 00:15:19.990 align:start position:0%
+the year but the popularity of the thing
+just<00:15:16.040><c> continue</c><00:15:16.600><c> to</c><00:15:17.279><c> mushroom</c><00:15:18.000><c> next</c><00:15:18.480><c> slide</c><00:15:19.480><c> and</c>
+
+00:15:19.990 --> 00:15:20.000 align:start position:0%
+just continue to mushroom next slide and
+
+
+00:15:20.000 --> 00:15:22.470 align:start position:0%
+just continue to mushroom next slide and
+at<00:15:20.199><c> this</c><00:15:20.440><c> point</c><00:15:21.279><c> uh</c><00:15:21.519><c> the</c><00:15:21.639><c> estimate</c><00:15:22.040><c> is</c><00:15:22.279><c> they're</c>
+
+00:15:22.470 --> 00:15:22.480 align:start position:0%
+at this point uh the estimate is they're
+
+
+00:15:22.480 --> 00:15:25.470 align:start position:0%
+at this point uh the estimate is they're
+about<00:15:22.600><c> a</c><00:15:22.959><c> million</c><00:15:23.959><c> out</c><00:15:24.079><c> in</c><00:15:24.240><c> the</c><00:15:24.360><c> world</c><00:15:25.000><c> right</c>
+
+00:15:25.470 --> 00:15:25.480 align:start position:0%
+about a million out in the world right
+
+
+00:15:25.480 --> 00:15:26.990 align:start position:0%
+about a million out in the world right
+now
+
+00:15:26.990 --> 00:15:27.000 align:start position:0%
+now
+
+
+00:15:27.000 --> 00:15:29.949 align:start position:0%
+now
+but<00:15:28.000><c> returning</c><00:15:28.480><c> to</c><00:15:28.759><c> the</c>
+
+00:15:29.949 --> 00:15:29.959 align:start position:0%
+but returning to the
+
+
+00:15:29.959 --> 00:15:32.509 align:start position:0%
+but returning to the
+the<00:15:30.199><c> the</c><00:15:30.360><c> key</c><00:15:30.639><c> point</c><00:15:31.519><c> the</c><00:15:31.680><c> motivation</c><00:15:32.240><c> for</c>
+
+00:15:32.509 --> 00:15:32.519 align:start position:0%
+the the key point the motivation for
+
+
+00:15:32.519 --> 00:15:34.910 align:start position:0%
+the the key point the motivation for
+this<00:15:33.079><c> piece</c><00:15:33.240><c> of</c><00:15:33.399><c> Hardware</c><00:15:34.199><c> was</c><00:15:34.399><c> not</c><00:15:34.560><c> to</c><00:15:34.720><c> make</c>
+
+00:15:34.910 --> 00:15:34.920 align:start position:0%
+this piece of Hardware was not to make
+
+
+00:15:34.920 --> 00:15:38.749 align:start position:0%
+this piece of Hardware was not to make
+money<00:15:35.519><c> it</c><00:15:35.720><c> wasn't</c><00:15:36.480><c> to</c><00:15:36.880><c> provide</c><00:15:37.440><c> a</c><00:15:37.680><c> cool</c><00:15:38.040><c> toy</c>
+
+00:15:38.749 --> 00:15:38.759 align:start position:0%
+money it wasn't to provide a cool toy
+
+
+00:15:38.759 --> 00:15:41.590 align:start position:0%
+money it wasn't to provide a cool toy
+for<00:15:39.440><c> run-ups</c><00:15:40.440><c> uh</c><00:15:40.560><c> it's</c><00:15:40.800><c> oriented</c><00:15:41.240><c> towards</c>
+
+00:15:41.590 --> 00:15:41.600 align:start position:0%
+for run-ups uh it's oriented towards
+
+
+00:15:41.600 --> 00:15:45.150 align:start position:0%
+for run-ups uh it's oriented towards
+education<00:15:42.360><c> and</c><00:15:42.480><c> it's</c><00:15:42.720><c> oriented</c><00:15:43.519><c> towards</c><00:15:44.519><c> uh</c>
+
+00:15:45.150 --> 00:15:45.160 align:start position:0%
+education and it's oriented towards uh
+
+
+00:15:45.160 --> 00:15:48.309 align:start position:0%
+education and it's oriented towards uh
+improving<00:15:46.160><c> the</c><00:15:46.920><c> uh</c><00:15:47.079><c> skills</c><00:15:47.440><c> and</c><00:15:47.680><c> backgrounds</c>
+
+00:15:48.309 --> 00:15:48.319 align:start position:0%
+improving the uh skills and backgrounds
+
+
+00:15:48.319 --> 00:15:51.309 align:start position:0%
+improving the uh skills and backgrounds
+of<00:15:48.759><c> kids</c><00:15:49.240><c> as</c><00:15:49.360><c> they</c><00:15:49.519><c> grow</c><00:15:49.800><c> up</c><00:15:50.759><c> Evan</c><00:15:51.120><c> was</c>
+
+00:15:51.309 --> 00:15:51.319 align:start position:0%
+of kids as they grow up Evan was
+
+
+00:15:51.319 --> 00:15:54.230 align:start position:0%
+of kids as they grow up Evan was
+originally<00:15:51.959><c> targeting</c><00:15:52.639><c> University</c><00:15:53.279><c> students</c>
+
+00:15:54.230 --> 00:15:54.240 align:start position:0%
+originally targeting University students
+
+
+00:15:54.240 --> 00:15:57.189 align:start position:0%
+originally targeting University students
+but<00:15:54.440><c> it's</c><00:15:55.199><c> the</c><00:15:55.600><c> the</c><00:15:56.160><c> scope</c><00:15:56.480><c> and</c><00:15:56.720><c> power</c><00:15:56.920><c> of</c><00:15:57.040><c> this</c>
+
+00:15:57.189 --> 00:15:57.199 align:start position:0%
+but it's the the scope and power of this
+
+
+00:15:57.199 --> 00:15:59.590 align:start position:0%
+but it's the the scope and power of this
+machine<00:15:57.800><c> in</c><00:15:58.000><c> particular</c><00:15:58.560><c> it's</c><00:15:59.240><c> to</c><00:15:59.319><c> run</c>
+
+00:15:59.590 --> 00:15:59.600 align:start position:0%
+machine in particular it's to run
+
+
+00:15:59.600 --> 00:16:01.829 align:start position:0%
+machine in particular it's to run
+scratch<00:16:00.240><c> which</c><00:16:00.480><c> you'll</c><00:16:00.639><c> be</c><00:16:00.759><c> seeing</c><00:16:01.639><c> in</c><00:16:01.720><c> a</c>
+
+00:16:01.829 --> 00:16:01.839 align:start position:0%
+scratch which you'll be seeing in a
+
+
+00:16:01.839 --> 00:16:06.269 align:start position:0%
+scratch which you'll be seeing in a
+little<00:16:02.279><c> bit</c><00:16:03.279><c> uh</c><00:16:03.680><c> allows</c><00:16:04.079><c> it</c><00:16:04.600><c> to</c><00:16:05.319><c> be</c><00:16:05.759><c> very</c><00:16:06.040><c> very</c>
+
+00:16:06.269 --> 00:16:06.279 align:start position:0%
+little bit uh allows it to be very very
+
+
+00:16:06.279 --> 00:16:09.309 align:start position:0%
+little bit uh allows it to be very very
+accessible<00:16:07.240><c> even</c><00:16:07.519><c> to</c><00:16:08.040><c> uh</c><00:16:08.279><c> grade</c><00:16:08.600><c> school</c>
+
+00:16:09.309 --> 00:16:09.319 align:start position:0%
+accessible even to uh grade school
+
+
+00:16:09.319 --> 00:16:13.509 align:start position:0%
+accessible even to uh grade school
+children<00:16:10.319><c> so</c><00:16:10.560><c> that's</c><00:16:10.800><c> what</c><00:16:10.959><c> it's</c><00:16:11.199><c> about</c>
+
+00:16:13.509 --> 00:16:13.519 align:start position:0%
+children so that's what it's about
+
+
+00:16:13.519 --> 00:16:16.870 align:start position:0%
+children so that's what it's about
+next<00:16:14.519><c> this</c><00:16:14.680><c> is</c><00:16:15.680><c> uh</c><00:16:15.959><c> blown</c><00:16:16.240><c> up</c><00:16:16.440><c> picture</c><00:16:16.680><c> of</c>
+
+00:16:16.870 --> 00:16:16.880 align:start position:0%
+next this is uh blown up picture of
+
+
+00:16:16.880 --> 00:16:19.150 align:start position:0%
+next this is uh blown up picture of
+raspberry
+
+00:16:19.150 --> 00:16:19.160 align:start position:0%
+raspberry
+
+
+00:16:19.160 --> 00:16:22.110 align:start position:0%
+raspberry
+pie<00:16:20.160><c> very</c><00:16:20.440><c> good</c>
+
+00:16:22.110 --> 00:16:22.120 align:start position:0%
+pie very good
+
+
+00:16:22.120 --> 00:16:24.710 align:start position:0%
+pie very good
+um<00:16:23.120><c> you</c><00:16:23.199><c> can</c><00:16:23.360><c> see</c><00:16:23.560><c> them</c><00:16:23.880><c> they're</c><00:16:24.040><c> sitting</c><00:16:24.600><c> over</c>
+
+00:16:24.710 --> 00:16:24.720 align:start position:0%
+um you can see them they're sitting over
+
+
+00:16:24.720 --> 00:16:26.389 align:start position:0%
+um you can see them they're sitting over
+on<00:16:24.839><c> the</c><00:16:24.959><c> table</c><00:16:25.319><c> back</c><00:16:25.519><c> there</c><00:16:25.680><c> there's</c><00:16:25.920><c> one</c><00:16:26.199><c> here</c>
+
+00:16:26.389 --> 00:16:26.399 align:start position:0%
+on the table back there there's one here
+
+
+00:16:26.399 --> 00:16:27.509 align:start position:0%
+on the table back there there's one here
+there's<00:16:26.560><c> one</c><00:16:26.680><c> on</c><00:16:26.800><c> the</c><00:16:26.920><c> back</c><00:16:27.120><c> of</c><00:16:27.240><c> this</c>
+
+00:16:27.509 --> 00:16:27.519 align:start position:0%
+there's one on the back of this
+
+
+00:16:27.519 --> 00:16:29.309 align:start position:0%
+there's one on the back of this
+workstation<00:16:28.519><c> uh</c><00:16:28.600><c> they're</c><00:16:28.720><c> all</c><00:16:28.920><c> all</c><00:16:29.000><c> over</c><00:16:29.120><c> the</c>
+
+00:16:29.309 --> 00:16:29.319 align:start position:0%
+workstation uh they're all all over the
+
+
+00:16:29.319 --> 00:16:31.110 align:start position:0%
+workstation uh they're all all over the
+place<00:16:29.800><c> but</c><00:16:30.120><c> this</c><00:16:30.199><c> is</c><00:16:30.319><c> what</c><00:16:30.440><c> it</c><00:16:30.519><c> looks</c><00:16:30.720><c> like</c><00:16:30.880><c> up</c>
+
+00:16:31.110 --> 00:16:31.120 align:start position:0%
+place but this is what it looks like up
+
+
+00:16:31.120 --> 00:16:33.670 align:start position:0%
+place but this is what it looks like up
+close<00:16:31.959><c> and</c><00:16:32.120><c> as</c><00:16:32.199><c> you</c><00:16:32.319><c> can</c><00:16:32.519><c> see</c><00:16:32.800><c> it</c><00:16:33.000><c> has</c><00:16:33.199><c> a</c><00:16:33.440><c> great</c>
+
+00:16:33.670 --> 00:16:33.680 align:start position:0%
+close and as you can see it has a great
+
+
+00:16:33.680 --> 00:16:34.790 align:start position:0%
+close and as you can see it has a great
+deal<00:16:33.880><c> of</c>
+
+00:16:34.790 --> 00:16:34.800 align:start position:0%
+deal of
+
+
+00:16:34.800 --> 00:16:38.550 align:start position:0%
+deal of
+IO<00:16:35.800><c> that's</c><00:16:36.000><c> about</c><00:16:36.199><c> the</c><00:16:36.360><c> size</c><00:16:36.519><c> of</c><00:16:36.600><c> a</c><00:16:36.720><c> CR</c><00:16:37.720><c> yeah</c>
+
+00:16:38.550 --> 00:16:38.560 align:start position:0%
+IO that's about the size of a CR yeah
+
+
+00:16:38.560 --> 00:16:40.189 align:start position:0%
+IO that's about the size of a CR yeah
+yeah
+
+00:16:40.189 --> 00:16:40.199 align:start position:0%
+yeah
+
+
+00:16:40.199 --> 00:16:41.990 align:start position:0%
+yeah
+um
+
+00:16:41.990 --> 00:16:42.000 align:start position:0%
+um
+
+
+00:16:42.000 --> 00:16:47.189 align:start position:0%
+um
+we<00:16:43.000><c> here</c><00:16:43.360><c> here</c><00:16:43.680><c> here</c><00:16:43.880><c> is</c><00:16:44.319><c> a</c><00:16:44.480><c> res</c><00:16:45.319><c> high</c><00:16:46.079><c> card</c><00:16:47.079><c> as</c>
+
+00:16:47.189 --> 00:16:47.199 align:start position:0%
+we here here here is a res high card as
+
+
+00:16:47.199 --> 00:16:48.829 align:start position:0%
+we here here here is a res high card as
+he<00:16:47.319><c> said</c><00:16:47.519><c> it's</c><00:16:47.720><c> slightly</c><00:16:48.079><c> bigger</c><00:16:48.360><c> than</c><00:16:48.519><c> a</c>
+
+00:16:48.829 --> 00:16:48.839 align:start position:0%
+he said it's slightly bigger than a
+
+
+00:16:48.839 --> 00:16:52.269 align:start position:0%
+he said it's slightly bigger than a
+credit<00:16:49.319><c> card</c><00:16:50.319><c> so</c><00:16:51.120><c> just</c><00:16:51.480><c> kind</c><00:16:51.600><c> of</c><00:16:51.759><c> going</c><00:16:52.040><c> around</c>
+
+00:16:52.269 --> 00:16:52.279 align:start position:0%
+credit card so just kind of going around
+
+
+00:16:52.279 --> 00:16:54.790 align:start position:0%
+credit card so just kind of going around
+the<00:16:52.480><c> clock</c><00:16:52.800><c> here</c><00:16:53.399><c> we've</c><00:16:53.680><c> got</c><00:16:54.079><c> a</c><00:16:54.319><c> composite</c>
+
+00:16:54.790 --> 00:16:54.800 align:start position:0%
+the clock here we've got a composite
+
+
+00:16:54.800 --> 00:16:58.550 align:start position:0%
+the clock here we've got a composite
+video<00:16:55.519><c> output</c><00:16:56.519><c> uh</c><00:16:57.319><c> a</c><00:16:57.560><c> high</c><00:16:58.079><c> reasonable</c>
+
+00:16:58.550 --> 00:16:58.560 align:start position:0%
+video output uh a high reasonable
+
+
+00:16:58.560 --> 00:17:00.949 align:start position:0%
+video output uh a high reasonable
+quality<00:16:58.880><c> quity</c><00:16:59.399><c> TV</c><00:16:59.720><c> monitor</c><00:17:00.240><c> allows</c>
+
+00:17:00.949 --> 00:17:00.959 align:start position:0%
+quality quity TV monitor allows
+
+
+00:17:00.959 --> 00:17:04.590 align:start position:0%
+quality quity TV monitor allows
+excellent<00:17:01.959><c> uh</c><00:17:02.519><c> sound</c><00:17:03.519><c> uh</c><00:17:03.680><c> I</c><00:17:03.800><c> mean</c><00:17:04.160><c> uh</c><00:17:04.319><c> sorry</c>
+
+00:17:04.590 --> 00:17:04.600 align:start position:0%
+excellent uh sound uh I mean uh sorry
+
+
+00:17:04.600 --> 00:17:07.870 align:start position:0%
+excellent uh sound uh I mean uh sorry
+video<00:17:05.199><c> quality</c><00:17:06.199><c> got</c><00:17:06.400><c> B</c><00:17:06.720><c> sound</c>
+
+00:17:07.870 --> 00:17:07.880 align:start position:0%
+video quality got B sound
+
+
+00:17:07.880 --> 00:17:10.909 align:start position:0%
+video quality got B sound
+output<00:17:08.880><c> um</c><00:17:09.439><c> two</c><00:17:09.720><c> USB</c><00:17:10.120><c> connectors</c><00:17:10.559><c> on</c><00:17:10.760><c> the</c>
+
+00:17:10.909 --> 00:17:10.919 align:start position:0%
+output um two USB connectors on the
+
+
+00:17:10.919 --> 00:17:14.590 align:start position:0%
+output um two USB connectors on the
+model<00:17:11.319><c> B</c><00:17:11.679><c> which</c><00:17:11.799><c> is</c><00:17:11.919><c> the</c><00:17:12.240><c> $35</c><00:17:13.240><c> unit</c><00:17:14.160><c> one</c><00:17:14.319><c> on</c><00:17:14.480><c> the</c>
+
+00:17:14.590 --> 00:17:14.600 align:start position:0%
+model B which is the $35 unit one on the
+
+
+00:17:14.600 --> 00:17:16.549 align:start position:0%
+model B which is the $35 unit one on the
+model<00:17:14.919><c> A</c><00:17:15.679><c> is</c>
+
+00:17:16.549 --> 00:17:16.559 align:start position:0%
+model A is
+
+
+00:17:16.559 --> 00:17:20.350 align:start position:0%
+model A is
+$25<00:17:17.559><c> uh</c><00:17:17.760><c> wired</c><00:17:18.160><c> ethernet</c><00:17:19.160><c> uh</c><00:17:19.280><c> for</c><00:17:19.520><c> 10</c><00:17:19.720><c> or</c><00:17:20.160><c> 100</c>
+
+00:17:20.350 --> 00:17:20.360 align:start position:0%
+$25 uh wired ethernet uh for 10 or 100
+
+
+00:17:20.360 --> 00:17:23.069 align:start position:0%
+$25 uh wired ethernet uh for 10 or 100
+megabit<00:17:20.839><c> ethernet</c><00:17:21.760><c> uh</c><00:17:21.880><c> on</c><00:17:22.039><c> the</c><00:17:22.199><c> model</c><00:17:22.480><c> B</c><00:17:22.919><c> the</c>
+
+00:17:23.069 --> 00:17:23.079 align:start position:0%
+megabit ethernet uh on the model B the
+
+
+00:17:23.079 --> 00:17:25.230 align:start position:0%
+megabit ethernet uh on the model B the
+model<00:17:23.360><c> A</c><00:17:23.600><c> does</c><00:17:23.839><c> not</c><00:17:24.160><c> have</c>
+
+00:17:25.230 --> 00:17:25.240 align:start position:0%
+model A does not have
+
+
+00:17:25.240 --> 00:17:27.510 align:start position:0%
+model A does not have
+ethernet<00:17:26.240><c> HDMI</c>
+
+00:17:27.510 --> 00:17:27.520 align:start position:0%
+ethernet HDMI
+
+
+00:17:27.520 --> 00:17:29.789 align:start position:0%
+ethernet HDMI
+video<00:17:28.520><c> um</c>
+
+00:17:29.789 --> 00:17:29.799 align:start position:0%
+video um
+
+
+00:17:29.799 --> 00:17:33.990 align:start position:0%
+video um
+this<00:17:30.120><c> is</c><00:17:30.840><c> the</c><00:17:31.520><c> main</c><00:17:32.520><c> unit</c><00:17:32.880><c> it's</c><00:17:33.039><c> a</c><00:17:33.280><c> broadcom</c>
+
+00:17:33.990 --> 00:17:34.000 align:start position:0%
+this is the main unit it's a broadcom
+
+
+00:17:34.000 --> 00:17:37.470 align:start position:0%
+this is the main unit it's a broadcom
+chip<00:17:34.280><c> on</c><00:17:34.840><c> Silicon</c><00:17:35.280><c> on</c>
+
+00:17:37.470 --> 00:17:37.480 align:start position:0%
+chip on Silicon on
+
+
+00:17:37.480 --> 00:17:40.870 align:start position:0%
+chip on Silicon on
+chip<00:17:38.679><c> underneath</c><00:17:39.679><c> sorry</c><00:17:40.000><c> system</c><00:17:40.280><c> on</c><00:17:40.559><c> chip</c>
+
+00:17:40.870 --> 00:17:40.880 align:start position:0%
+chip underneath sorry system on chip
+
+
+00:17:40.880 --> 00:17:43.190 align:start position:0%
+chip underneath sorry system on chip
+underneath<00:17:41.480><c> and</c><00:17:41.640><c> sitting</c><00:17:41.960><c> on</c><00:17:42.240><c> top</c><00:17:42.440><c> of</c><00:17:42.600><c> it</c><00:17:42.960><c> is</c>
+
+00:17:43.190 --> 00:17:43.200 align:start position:0%
+underneath and sitting on top of it is
+
+
+00:17:43.200 --> 00:17:46.909 align:start position:0%
+underneath and sitting on top of it is
+the<00:17:43.400><c> RAM</c><00:17:44.280><c> memory</c><00:17:45.280><c> which</c><00:17:45.440><c> is</c><00:17:45.919><c> a</c><00:17:46.080><c> half</c><00:17:46.240><c> a</c>
+
+00:17:46.909 --> 00:17:46.919 align:start position:0%
+the RAM memory which is a half a
+
+
+00:17:46.919 --> 00:17:50.070 align:start position:0%
+the RAM memory which is a half a
+gigabyte<00:17:47.919><c> uh</c><00:17:48.039><c> for</c><00:17:48.400><c> the</c><00:17:48.640><c> model</c><00:17:48.919><c> B</c><00:17:49.320><c> which</c><00:17:49.480><c> is</c><00:17:49.880><c> the</c>
+
+00:17:50.070 --> 00:17:50.080 align:start position:0%
+gigabyte uh for the model B which is the
+
+
+00:17:50.080 --> 00:17:52.190 align:start position:0%
+gigabyte uh for the model B which is the
+the<00:17:50.280><c> vast</c><00:17:50.640><c> majority</c><00:17:51.039><c> of</c><00:17:51.200><c> sales</c><00:17:51.720><c> up</c><00:17:51.840><c> to</c><00:17:52.039><c> this</c>
+
+00:17:52.190 --> 00:17:52.200 align:start position:0%
+the vast majority of sales up to this
+
+
+00:17:52.200 --> 00:17:55.990 align:start position:0%
+the vast majority of sales up to this
+point<00:17:52.480><c> have</c><00:17:52.640><c> been</c><00:17:52.880><c> of</c><00:17:53.400><c> model</c><00:17:53.640><c> B</c><00:17:53.840><c> is</c><00:17:54.039><c> the</c><00:17:54.120><c> $35</c>
+
+00:17:55.990 --> 00:17:56.000 align:start position:0%
+point have been of model B is the $35
+
+
+00:17:56.000 --> 00:17:59.270 align:start position:0%
+point have been of model B is the $35
+unit<00:17:57.000><c> uh</c><00:17:57.080><c> the</c><00:17:57.200><c> model</c><00:17:57.440><c> A</c><00:17:57.640><c> has</c><00:17:57.880><c> a</c><00:17:58.039><c> Quarter</c><00:17:58.640><c> G</c><00:17:59.080><c> of</c>
+
+00:17:59.270 --> 00:17:59.280 align:start position:0%
+unit uh the model A has a Quarter G of
+
+
+00:17:59.280 --> 00:18:02.470 align:start position:0%
+unit uh the model A has a Quarter G of
+RAM<00:18:00.240><c> and</c><00:18:00.400><c> then</c><00:18:00.880><c> uh</c><00:18:01.320><c> working</c><00:18:01.600><c> our</c><00:18:01.799><c> way</c><00:18:02.000><c> around</c>
+
+00:18:02.470 --> 00:18:02.480 align:start position:0%
+RAM and then uh working our way around
+
+
+00:18:02.480 --> 00:18:04.510 align:start position:0%
+RAM and then uh working our way around
+here<00:18:02.640><c> is</c><00:18:02.880><c> the</c><00:18:03.120><c> power</c><00:18:03.400><c> connector</c><00:18:03.960><c> which</c><00:18:04.080><c> is</c><00:18:04.200><c> a</c>
+
+00:18:04.510 --> 00:18:04.520 align:start position:0%
+here is the power connector which is a
+
+
+00:18:04.520 --> 00:18:07.669 align:start position:0%
+here is the power connector which is a
+standard<00:18:04.960><c> micro</c><00:18:05.640><c> USB</c><00:18:06.600><c> like</c><00:18:06.799><c> you</c><00:18:06.919><c> would</c><00:18:07.120><c> use</c>
+
+00:18:07.669 --> 00:18:07.679 align:start position:0%
+standard micro USB like you would use
+
+
+00:18:07.679 --> 00:18:09.549 align:start position:0%
+standard micro USB like you would use
+with<00:18:07.880><c> a</c><00:18:08.039><c> cell</c><00:18:08.320><c> phone</c><00:18:08.679><c> and</c><00:18:08.880><c> a</c><00:18:09.039><c> cell</c><00:18:09.280><c> phone</c>
+
+00:18:09.549 --> 00:18:09.559 align:start position:0%
+with a cell phone and a cell phone
+
+
+00:18:09.559 --> 00:18:12.470 align:start position:0%
+with a cell phone and a cell phone
+charger<00:18:10.080><c> that</c><00:18:10.240><c> puts</c><00:18:10.440><c> out</c><00:18:10.760><c> adequate</c><00:18:11.480><c> current</c>
+
+00:18:12.470 --> 00:18:12.480 align:start position:0%
+charger that puts out adequate current
+
+
+00:18:12.480 --> 00:18:15.830 align:start position:0%
+charger that puts out adequate current
+uh<00:18:12.799><c> typically</c><00:18:13.159><c> a</c><00:18:13.280><c> minimum</c><00:18:13.640><c> of</c><00:18:13.799><c> 710</c><00:18:14.400><c> but</c><00:18:14.840><c> Amper</c>
+
+00:18:15.830 --> 00:18:15.840 align:start position:0%
+uh typically a minimum of 710 but Amper
+
+
+00:18:15.840 --> 00:18:18.789 align:start position:0%
+uh typically a minimum of 710 but Amper
+uh<00:18:16.000><c> works</c><00:18:16.440><c> great</c><00:18:16.840><c> as</c><00:18:16.960><c> a</c><00:18:17.120><c> power</c><00:18:17.480><c> source</c><00:18:18.480><c> you</c><00:18:18.600><c> see</c>
+
+00:18:18.789 --> 00:18:18.799 align:start position:0%
+uh works great as a power source you see
+
+
+00:18:18.799 --> 00:18:22.430 align:start position:0%
+uh works great as a power source you see
+that<00:18:19.000><c> little</c><00:18:19.880><c> cylinder</c><00:18:20.480><c> right</c><00:18:20.840><c> there</c><00:18:21.840><c> do</c><00:18:22.080><c> not</c>
+
+00:18:22.430 --> 00:18:22.440 align:start position:0%
+that little cylinder right there do not
+
+
+00:18:22.440 --> 00:18:25.470 align:start position:0%
+that little cylinder right there do not
+put<00:18:22.640><c> your</c><00:18:22.880><c> thumb</c><00:18:23.200><c> on</c><00:18:23.559><c> that</c><00:18:24.400><c> to</c><00:18:24.640><c> get</c><00:18:24.880><c> leverage</c>
+
+00:18:25.470 --> 00:18:25.480 align:start position:0%
+put your thumb on that to get leverage
+
+
+00:18:25.480 --> 00:18:26.630 align:start position:0%
+put your thumb on that to get leverage
+to<00:18:25.679><c> push</c><00:18:25.880><c> the</c>
+
+00:18:26.630 --> 00:18:26.640 align:start position:0%
+to push the
+
+
+00:18:26.640 --> 00:18:31.390 align:start position:0%
+to push the
+micro<00:18:27.640><c> uh</c><00:18:28.960><c> connector</c><00:18:29.360><c> in</c><00:18:30.039><c> it's</c><00:18:30.280><c> surface</c><00:18:31.039><c> mount</c>
+
+00:18:31.390 --> 00:18:31.400 align:start position:0%
+micro uh connector in it's surface mount
+
+
+00:18:31.400 --> 00:18:33.830 align:start position:0%
+micro uh connector in it's surface mount
+soldered<00:18:31.840><c> and</c><00:18:31.960><c> it'll</c><00:18:32.159><c> just</c><00:18:32.360><c> pop</c><00:18:32.679><c> right</c><00:18:32.840><c> off</c>
+
+00:18:33.830 --> 00:18:33.840 align:start position:0%
+soldered and it'll just pop right off
+
+
+00:18:33.840 --> 00:18:36.270 align:start position:0%
+soldered and it'll just pop right off
+and<00:18:34.200><c> if</c><00:18:34.400><c> that</c><00:18:34.640><c> happens</c><00:18:34.960><c> to</c><00:18:35.159><c> you</c><00:18:35.640><c> I</c><00:18:35.760><c> can</c><00:18:35.960><c> solder</c>
+
+00:18:36.270 --> 00:18:36.280 align:start position:0%
+and if that happens to you I can solder
+
+
+00:18:36.280 --> 00:18:41.310 align:start position:0%
+and if that happens to you I can solder
+it<00:18:36.400><c> back</c><00:18:36.640><c> on</c><00:18:37.640><c> I'm</c><00:18:37.760><c> an</c>
+
+00:18:41.310 --> 00:18:41.320 align:start position:0%
+
+
+
+00:18:41.320 --> 00:18:43.909 align:start position:0%
+
+expert<00:18:42.320><c> um</c><00:18:42.880><c> and</c><00:18:43.039><c> then</c><00:18:43.240><c> working</c><00:18:43.480><c> our</c><00:18:43.679><c> way</c>
+
+00:18:43.909 --> 00:18:43.919 align:start position:0%
+expert um and then working our way
+
+
+00:18:43.919 --> 00:18:46.830 align:start position:0%
+expert um and then working our way
+around<00:18:44.520><c> the</c><00:18:44.799><c> the</c><00:18:44.919><c> main</c><00:18:45.159><c> connectors</c><00:18:45.799><c> this</c><00:18:45.919><c> is</c><00:18:46.240><c> a</c>
+
+00:18:46.830 --> 00:18:46.840 align:start position:0%
+around the the main connectors this is a
+
+
+00:18:46.840 --> 00:18:50.590 align:start position:0%
+around the the main connectors this is a
+uh<00:18:47.080><c> 26</c><00:18:47.679><c> pin</c><00:18:48.080><c> header</c><00:18:49.080><c> uh</c><00:18:49.200><c> that</c><00:18:49.320><c> supports</c><00:18:49.760><c> gpio</c>
+
+00:18:50.590 --> 00:18:50.600 align:start position:0%
+uh 26 pin header uh that supports gpio
+
+
+00:18:50.600 --> 00:18:55.110 align:start position:0%
+uh 26 pin header uh that supports gpio
+about<00:18:51.600><c> several</c><00:18:51.919><c> bits</c><00:18:52.120><c> of</c><00:18:52.679><c> parallel</c><00:18:53.919><c> i</c><00:18:54.919><c> i</c>
+
+00:18:55.110 --> 00:18:55.120 align:start position:0%
+about several bits of parallel i i
+
+
+00:18:55.120 --> 00:18:59.950 align:start position:0%
+about several bits of parallel i i
+squared<00:18:55.480><c> C</c><00:18:55.960><c> SPI</c><00:18:56.679><c> and</c><00:18:57.320><c> plain</c><00:18:57.919><c> asynchronous</c><00:18:59.000><c> Ur</c>
+
+00:18:59.950 --> 00:18:59.960 align:start position:0%
+squared C SPI and plain asynchronous Ur
+
+
+00:18:59.960 --> 00:19:04.029 align:start position:0%
+squared C SPI and plain asynchronous Ur
+iio<00:19:00.960><c> um</c><00:19:01.640><c> it's</c><00:19:01.880><c> 3.3</c><00:19:02.760><c> volt</c><00:19:03.120><c> logic</c><00:19:03.640><c> and</c><00:19:03.760><c> it</c><00:19:03.880><c> will</c>
+
+00:19:04.029 --> 00:19:04.039 align:start position:0%
+iio um it's 3.3 volt logic and it will
+
+
+00:19:04.039 --> 00:19:06.430 align:start position:0%
+iio um it's 3.3 volt logic and it will
+not<00:19:04.240><c> tolerate</c><00:19:04.720><c> 5</c><00:19:05.039><c> volts</c><00:19:05.440><c> it</c><00:19:05.520><c> won't</c><00:19:05.799><c> tolerate</c>
+
+00:19:06.430 --> 00:19:06.440 align:start position:0%
+not tolerate 5 volts it won't tolerate
+
+
+00:19:06.440 --> 00:19:08.750 align:start position:0%
+not tolerate 5 volts it won't tolerate
+shorts<00:19:07.440><c> these</c><00:19:07.640><c> signals</c><00:19:08.120><c> are</c><00:19:08.280><c> going</c><00:19:08.600><c> right</c>
+
+00:19:08.750 --> 00:19:08.760 align:start position:0%
+shorts these signals are going right
+
+
+00:19:08.760 --> 00:19:11.870 align:start position:0%
+shorts these signals are going right
+into<00:19:09.039><c> that</c><00:19:09.240><c> chip</c><00:19:10.039><c> and</c><00:19:10.280><c> anything</c><00:19:10.880><c> bad</c><00:19:11.440><c> that</c>
+
+00:19:11.870 --> 00:19:11.880 align:start position:0%
+into that chip and anything bad that
+
+
+00:19:11.880 --> 00:19:14.750 align:start position:0%
+into that chip and anything bad that
+happens<00:19:12.880><c> will</c><00:19:13.360><c> blow</c><00:19:14.000><c> that</c><00:19:14.159><c> part</c><00:19:14.280><c> of</c><00:19:14.400><c> the</c><00:19:14.480><c> chip</c>
+
+00:19:14.750 --> 00:19:14.760 align:start position:0%
+happens will blow that part of the chip
+
+
+00:19:14.760 --> 00:19:16.590 align:start position:0%
+happens will blow that part of the chip
+up<00:19:15.159><c> so</c><00:19:15.720><c> be</c>
+
+00:19:16.590 --> 00:19:16.600 align:start position:0%
+up so be
+
+
+00:19:16.600 --> 00:19:18.230 align:start position:0%
+up so be
+cautious
+
+00:19:18.230 --> 00:19:18.240 align:start position:0%
+cautious
+
+
+00:19:18.240 --> 00:19:20.789 align:start position:0%
+cautious
+um<00:19:19.240><c> there's</c><00:19:19.400><c> a</c><00:19:19.559><c> little</c><00:19:20.080><c> there's</c><00:19:20.280><c> some</c><00:19:20.440><c> extra</c>
+
+00:19:20.789 --> 00:19:20.799 align:start position:0%
+um there's a little there's some extra
+
+
+00:19:20.799 --> 00:19:24.230 align:start position:0%
+um there's a little there's some extra
+IO<00:19:21.280><c> here</c><00:19:22.440><c> um</c><00:19:23.440><c> these</c><00:19:23.640><c> funny</c><00:19:23.960><c> looking</c>
+
+00:19:24.230 --> 00:19:24.240 align:start position:0%
+IO here um these funny looking
+
+
+00:19:24.240 --> 00:19:27.549 align:start position:0%
+IO here um these funny looking
+connectors<00:19:25.240><c> are</c><00:19:25.640><c> for</c><00:19:26.120><c> this</c><00:19:26.280><c> one</c><00:19:26.640><c> is</c><00:19:26.880><c> for</c><00:19:27.240><c> a</c>
+
+00:19:27.549 --> 00:19:27.559 align:start position:0%
+connectors are for this one is for a
+
+
+00:19:27.559 --> 00:19:29.270 align:start position:0%
+connectors are for this one is for a
+camera<00:19:28.320><c> interface</c>
+
+00:19:29.270 --> 00:19:29.280 align:start position:0%
+camera interface
+
+
+00:19:29.280 --> 00:19:31.789 align:start position:0%
+camera interface
+an<00:19:29.440><c> emerging</c><00:19:30.120><c> camera</c><00:19:30.440><c> interface</c><00:19:30.840><c> standard</c>
+
+00:19:31.789 --> 00:19:31.799 align:start position:0%
+an emerging camera interface standard
+
+
+00:19:31.799 --> 00:19:34.270 align:start position:0%
+an emerging camera interface standard
+there<00:19:32.000><c> is</c><00:19:32.280><c> a</c><00:19:32.480><c> camera</c><00:19:33.440><c> I've</c><00:19:33.559><c> got</c><00:19:33.640><c> a</c><00:19:33.760><c> picture</c><00:19:34.080><c> of</c>
+
+00:19:34.270 --> 00:19:34.280 align:start position:0%
+there is a camera I've got a picture of
+
+
+00:19:34.280 --> 00:19:37.230 align:start position:0%
+there is a camera I've got a picture of
+a<00:19:34.440><c> prototype</c><00:19:34.960><c> camera</c><00:19:35.679><c> that's</c><00:19:36.120><c> in</c><00:19:36.240><c> the</c><00:19:36.400><c> pipes</c>
+
+00:19:37.230 --> 00:19:37.240 align:start position:0%
+a prototype camera that's in the pipes
+
+
+00:19:37.240 --> 00:19:41.390 align:start position:0%
+a prototype camera that's in the pipes
+and<00:19:37.480><c> this</c><00:19:37.679><c> is</c><00:19:37.880><c> a</c><00:19:38.039><c> DSi</c><00:19:38.960><c> spec</c><00:19:39.799><c> uh</c><00:19:39.960><c> LCD</c><00:19:40.679><c> panel</c>
+
+00:19:41.390 --> 00:19:41.400 align:start position:0%
+and this is a DSi spec uh LCD panel
+
+
+00:19:41.400 --> 00:19:44.310 align:start position:0%
+and this is a DSi spec uh LCD panel
+interface<00:19:41.919><c> for</c><00:19:42.200><c> directly</c><00:19:42.799><c> driving</c><00:19:43.799><c> LCD</c>
+
+00:19:44.310 --> 00:19:44.320 align:start position:0%
+interface for directly driving LCD
+
+
+00:19:44.320 --> 00:19:46.909 align:start position:0%
+interface for directly driving LCD
+panels
+
+00:19:46.909 --> 00:19:46.919 align:start position:0%
+panels
+
+
+00:19:46.919 --> 00:19:50.870 align:start position:0%
+panels
+next<00:19:47.919><c> so</c><00:19:48.480><c> there</c><00:19:48.559><c> are</c><00:19:48.720><c> two</c><00:19:49.360><c> models</c><00:19:50.360><c> and</c><00:19:50.760><c> there</c>
+
+00:19:50.870 --> 00:19:50.880 align:start position:0%
+next so there are two models and there
+
+
+00:19:50.880 --> 00:19:53.909 align:start position:0%
+next so there are two models and there
+are<00:19:51.120><c> two</c><00:19:51.919><c> Hardware</c><00:19:52.919><c> sorry</c><00:19:53.480><c> they're</c><00:19:53.679><c> two</c>
+
+00:19:53.909 --> 00:19:53.919 align:start position:0%
+are two Hardware sorry they're two
+
+
+00:19:53.919 --> 00:19:59.950 align:start position:0%
+are two Hardware sorry they're two
+Hardware<00:19:54.720><c> versions</c><00:19:56.200><c> um</c><00:19:57.200><c> uh</c><00:19:57.720><c> but</c><00:19:58.200><c> the</c>
+
+00:19:59.950 --> 00:19:59.960 align:start position:0%
+Hardware versions um uh but the
+
+
+00:19:59.960 --> 00:20:03.390 align:start position:0%
+Hardware versions um uh but the
+the<00:20:00.960><c> second</c><00:20:01.559><c> version</c><00:20:02.039><c> I</c><00:20:02.120><c> think</c><00:20:02.400><c> came</c><00:20:02.640><c> in</c><00:20:03.080><c> with</c>
+
+00:20:03.390 --> 00:20:03.400 align:start position:0%
+the second version I think came in with
+
+
+00:20:03.400 --> 00:20:06.390 align:start position:0%
+the second version I think came in with
+the<00:20:04.039><c> with</c><00:20:04.320><c> the</c><00:20:04.679><c> ship</c><00:20:05.200><c> initial</c><00:20:05.559><c> shipments</c><00:20:06.159><c> of</c>
+
+00:20:06.390 --> 00:20:06.400 align:start position:0%
+the with the ship initial shipments of
+
+
+00:20:06.400 --> 00:20:08.789 align:start position:0%
+the with the ship initial shipments of
+the<00:20:06.679><c> model</c><00:20:07.120><c> A</c>
+
+00:20:08.789 --> 00:20:08.799 align:start position:0%
+the model A
+
+
+00:20:08.799 --> 00:20:12.270 align:start position:0%
+the model A
+so<00:20:09.840><c> really</c><00:20:10.840><c> there's</c><00:20:11.200><c> two</c><00:20:11.480><c> versions</c><00:20:12.000><c> of</c><00:20:12.159><c> the</c>
+
+00:20:12.270 --> 00:20:12.280 align:start position:0%
+so really there's two versions of the
+
+
+00:20:12.280 --> 00:20:15.070 align:start position:0%
+so really there's two versions of the
+one<00:20:12.559><c> that</c><00:20:12.760><c> was</c><00:20:13.280><c> most</c><00:20:13.720><c> that</c><00:20:13.919><c> that</c><00:20:14.039><c> sold</c><00:20:14.480><c> to</c><00:20:14.720><c> most</c>
+
+00:20:15.070 --> 00:20:15.080 align:start position:0%
+one that was most that that sold to most
+
+
+00:20:15.080 --> 00:20:19.990 align:start position:0%
+one that was most that that sold to most
+people<00:20:15.799><c> the</c><00:20:15.960><c> model</c><00:20:16.760><c> B</c><00:20:17.840><c> um</c><00:20:18.840><c> and</c><00:20:19.320><c> it's</c>
+
+00:20:19.990 --> 00:20:20.000 align:start position:0%
+people the model B um and it's
+
+
+00:20:20.000 --> 00:20:22.270 align:start position:0%
+people the model B um and it's
+relatively<00:20:20.520><c> minor</c><00:20:20.840><c> I'll</c><00:20:21.039><c> go</c><00:20:21.159><c> into</c><00:20:21.400><c> the</c><00:20:22.120><c> the</c>
+
+00:20:22.270 --> 00:20:22.280 align:start position:0%
+relatively minor I'll go into the the
+
+
+00:20:22.280 --> 00:20:26.789 align:start position:0%
+relatively minor I'll go into the the
+actual<00:20:22.679><c> changes</c><00:20:23.919><c> but</c><00:20:24.919><c> the</c><00:20:25.280><c> two</c><00:20:25.520><c> basic</c><00:20:25.880><c> models</c>
+
+00:20:26.789 --> 00:20:26.799 align:start position:0%
+actual changes but the two basic models
+
+
+00:20:26.799 --> 00:20:30.190 align:start position:0%
+actual changes but the two basic models
+as<00:20:26.919><c> I</c><00:20:27.080><c> mentioned</c><00:20:27.720><c> are</c><00:20:28.480><c> uh</c><00:20:28.760><c> 35</c><00:20:29.120><c> and</c><00:20:29.200><c> $25</c><00:20:30.039><c> and</c>
+
+00:20:30.190 --> 00:20:30.200 align:start position:0%
+as I mentioned are uh 35 and $25 and
+
+
+00:20:30.200 --> 00:20:32.789 align:start position:0%
+as I mentioned are uh 35 and $25 and
+they're<00:20:30.400><c> aimed</c>
+
+00:20:32.789 --> 00:20:32.799 align:start position:0%
+
+
+
+00:20:32.799 --> 00:20:37.830 align:start position:0%
+
+at<00:20:33.799><c> Cost</c><00:20:34.159><c> sensitive</c><00:20:34.640><c> people</c><00:20:35.120><c> and</c><00:20:35.440><c> super</c><00:20:35.880><c> cost</c>
+
+00:20:37.830 --> 00:20:37.840 align:start position:0%
+at Cost sensitive people and super cost
+
+
+00:20:37.840 --> 00:20:41.110 align:start position:0%
+at Cost sensitive people and super cost
+sensitive
+
+00:20:41.110 --> 00:20:41.120 align:start position:0%
+
+
+
+00:20:41.120 --> 00:20:45.710 align:start position:0%
+
+next<00:20:42.120><c> so</c><00:20:43.000><c> as</c><00:20:43.159><c> we've</c><00:20:43.400><c> said</c><00:20:44.280><c> uh</c><00:20:44.480><c> the</c><00:20:44.679><c> basic</c><00:20:45.520><c> uh</c>
+
+00:20:45.710 --> 00:20:45.720 align:start position:0%
+next so as we've said uh the basic uh
+
+
+00:20:45.720 --> 00:20:50.789 align:start position:0%
+next so as we've said uh the basic uh
+unit<00:20:46.039><c> is</c><00:20:46.159><c> a</c><00:20:46.799><c> broadcom</c><00:20:47.799><c> uh</c><00:20:48.000><c> system</c><00:20:48.280><c> on</c><00:20:48.679><c> chip</c><00:20:49.679><c> it</c>
+
+00:20:50.789 --> 00:20:50.799 align:start position:0%
+unit is a broadcom uh system on chip it
+
+
+00:20:50.799 --> 00:20:55.230 align:start position:0%
+unit is a broadcom uh system on chip it
+contains<00:20:51.799><c> a</c><00:20:52.520><c> uh</c><00:20:53.039><c> CPU</c><00:20:53.960><c> a</c><00:20:54.159><c> graphics</c><00:20:54.640><c> processing</c>
+
+00:20:55.230 --> 00:20:55.240 align:start position:0%
+contains a uh CPU a graphics processing
+
+
+00:20:55.240 --> 00:20:59.950 align:start position:0%
+contains a uh CPU a graphics processing
+unit<00:20:56.240><c> and</c><00:20:57.120><c> a</c><00:20:57.360><c> lot</c><00:20:57.720><c> of</c><00:20:58.039><c> the</c>
+
+00:20:59.950 --> 00:20:59.960 align:start position:0%
+unit and a lot of the
+
+
+00:20:59.960 --> 00:21:01.190 align:start position:0%
+unit and a lot of the
+uh
+
+00:21:01.190 --> 00:21:01.200 align:start position:0%
+uh
+
+
+00:21:01.200 --> 00:21:23.789 align:start position:0%
+uh
+system<00:21:02.559><c> um</c><00:21:03.559><c> the</c><00:21:04.280><c> CPU</c><00:21:05.000><c> core</c><00:21:05.840><c> inside</c><00:21:06.240><c> the</c>
+
+00:21:23.789 --> 00:21:23.799 align:start position:0%
+
+
+
+00:21:23.799 --> 00:21:27.710 align:start position:0%
+
+chip<00:21:24.799><c> it's</c><00:21:25.600><c> extremely</c><00:21:26.200><c> popular</c><00:21:27.200><c> in</c><00:21:27.400><c> cell</c>
+
+00:21:27.710 --> 00:21:27.720 align:start position:0%
+chip it's extremely popular in cell
+
+
+00:21:27.720 --> 00:21:29.110 align:start position:0%
+chip it's extremely popular in cell
+phones
+
+00:21:29.110 --> 00:21:29.120 align:start position:0%
+phones
+
+
+00:21:29.120 --> 00:21:35.390 align:start position:0%
+phones
+and<00:21:30.120><c> um</c><00:21:30.360><c> the</c><00:21:30.559><c> support</c><00:21:31.000><c> for</c><00:21:31.240><c> it</c><00:21:32.000><c> is</c><00:21:32.880><c> building</c>
+
+00:21:35.390 --> 00:21:35.400 align:start position:0%
+and um the support for it is building
+
+
+00:21:35.400 --> 00:21:38.110 align:start position:0%
+and um the support for it is building
+quickly<00:21:36.400><c> the</c><00:21:36.600><c> default</c><00:21:36.919><c> speed</c><00:21:37.200><c> 700</c>
+
+00:21:38.110 --> 00:21:38.120 align:start position:0%
+quickly the default speed 700
+
+
+00:21:38.120 --> 00:21:41.789 align:start position:0%
+quickly the default speed 700
+MHz<00:21:39.120><c> uh</c><00:21:39.279><c> if</c><00:21:39.440><c> you</c><00:21:39.760><c> you're</c><00:21:39.960><c> into</c><00:21:40.240><c> that</c><00:21:40.520><c> you</c><00:21:40.679><c> can</c>
+
+00:21:41.789 --> 00:21:41.799 align:start position:0%
+MHz uh if you you're into that you can
+
+
+00:21:41.799 --> 00:21:44.350 align:start position:0%
+MHz uh if you you're into that you can
+explore<00:21:42.799><c> a</c><00:21:42.880><c> mild</c><00:21:43.200><c> amount</c><00:21:43.360><c> of</c><00:21:43.520><c> overclocking</c>
+
+00:21:44.350 --> 00:21:44.360 align:start position:0%
+explore a mild amount of overclocking
+
+
+00:21:44.360 --> 00:21:46.750 align:start position:0%
+explore a mild amount of overclocking
+without<00:21:44.840><c> voiding</c><00:21:45.200><c> your</c><00:21:45.400><c> warranty</c>
+
+00:21:46.750 --> 00:21:46.760 align:start position:0%
+without voiding your warranty
+
+
+00:21:46.760 --> 00:21:50.350 align:start position:0%
+without voiding your warranty
+and<00:21:47.760><c> a</c><00:21:47.919><c> more</c><00:21:48.600><c> aggressive</c><00:21:49.600><c> uh</c><00:21:49.720><c> amount</c><00:21:49.919><c> of</c>
+
+00:21:50.350 --> 00:21:50.360 align:start position:0%
+and a more aggressive uh amount of
+
+
+00:21:50.360 --> 00:21:52.710 align:start position:0%
+and a more aggressive uh amount of
+overclocking<00:21:51.360><c> which</c><00:21:51.520><c> will</c><00:21:51.720><c> set</c><00:21:52.000><c> a</c><00:21:52.159><c> bit</c><00:21:52.400><c> in</c><00:21:52.559><c> the</c>
+
+00:21:52.710 --> 00:21:52.720 align:start position:0%
+overclocking which will set a bit in the
+
+
+00:21:52.720 --> 00:21:56.870 align:start position:0%
+overclocking which will set a bit in the
+chip<00:21:53.039><c> that</c><00:21:53.200><c> says</c><00:21:54.120><c> this</c><00:21:54.320><c> guy</c><00:21:54.559><c> did</c><00:21:54.799><c> that</c><00:21:55.760><c> or</c><00:21:56.000><c> this</c>
+
+00:21:56.870 --> 00:21:56.880 align:start position:0%
+chip that says this guy did that or this
+
+
+00:21:56.880 --> 00:22:00.990 align:start position:0%
+chip that says this guy did that or this
+girl<00:21:57.880><c> and</c><00:21:58.039><c> there's</c><00:21:58.240><c> no</c><00:21:58.840><c> in</c><00:21:58.960><c> this</c><00:21:59.080><c> chip</c><00:21:59.799><c> now</c><00:22:00.799><c> uh</c>
+
+00:22:00.990 --> 00:22:01.000 align:start position:0%
+girl and there's no in this chip now uh
+
+
+00:22:01.000 --> 00:22:04.909 align:start position:0%
+girl and there's no in this chip now uh
+but<00:22:01.120><c> it</c><00:22:01.320><c> can</c><00:22:01.600><c> be</c><00:22:02.279><c> um</c><00:22:03.200><c> uh</c><00:22:03.600><c> easily</c><00:22:04.320><c> boosted</c><00:22:04.799><c> by</c>
+
+00:22:04.909 --> 00:22:04.919 align:start position:0%
+but it can be um uh easily boosted by
+
+
+00:22:04.919 --> 00:22:09.990 align:start position:0%
+but it can be um uh easily boosted by
+say<00:22:05.240><c> 15%</c><00:22:06.080><c> with</c><00:22:06.400><c> no</c><00:22:07.400><c> noticeable</c>
+
+00:22:09.990 --> 00:22:10.000 align:start position:0%
+
+
+
+00:22:10.000 --> 00:22:12.710 align:start position:0%
+
+consequences<00:22:11.000><c> the</c><00:22:11.240><c> mass</c><00:22:11.679><c> basic</c><00:22:11.960><c> mass</c><00:22:12.240><c> storage</c>
+
+00:22:12.710 --> 00:22:12.720 align:start position:0%
+consequences the mass basic mass storage
+
+
+00:22:12.720 --> 00:22:14.830 align:start position:0%
+consequences the mass basic mass storage
+is<00:22:12.880><c> an</c><00:22:13.080><c> SD</c><00:22:13.400><c> card</c><00:22:13.600><c> slot</c><00:22:14.000><c> that's</c><00:22:14.159><c> on</c><00:22:14.320><c> the</c><00:22:14.559><c> back</c><00:22:14.720><c> of</c>
+
+00:22:14.830 --> 00:22:14.840 align:start position:0%
+is an SD card slot that's on the back of
+
+
+00:22:14.840 --> 00:22:17.470 align:start position:0%
+is an SD card slot that's on the back of
+the<00:22:15.039><c> card</c><00:22:15.720><c> so</c><00:22:15.960><c> the</c><00:22:16.080><c> SD</c><00:22:16.400><c> card</c><00:22:16.640><c> slides</c><00:22:17.279><c> I</c><00:22:17.360><c> mean</c>
+
+00:22:17.470 --> 00:22:17.480 align:start position:0%
+the card so the SD card slides I mean
+
+
+00:22:17.480 --> 00:22:19.830 align:start position:0%
+the card so the SD card slides I mean
+the<00:22:17.640><c> SD</c><00:22:18.000><c> card</c><00:22:18.480><c> uh</c><00:22:18.600><c> slides</c><00:22:18.960><c> in</c><00:22:19.120><c> the</c><00:22:19.240><c> socket</c><00:22:19.600><c> on</c>
+
+00:22:19.830 --> 00:22:19.840 align:start position:0%
+the SD card uh slides in the socket on
+
+
+00:22:19.840 --> 00:22:24.669 align:start position:0%
+the SD card uh slides in the socket on
+the<00:22:20.559><c> underside</c><00:22:21.559><c> of</c><00:22:21.840><c> the</c><00:22:22.720><c> insert</c><00:22:23.400><c> card</c><00:22:24.400><c> uh</c><00:22:24.559><c> it</c>
+
+00:22:24.669 --> 00:22:24.679 align:start position:0%
+the underside of the insert card uh it
+
+
+00:22:24.679 --> 00:22:27.870 align:start position:0%
+the underside of the insert card uh it
+supports<00:22:25.600><c> standard</c><00:22:26.039><c> SD</c><00:22:26.400><c> cards</c><00:22:27.400><c> there</c><00:22:27.559><c> was</c><00:22:27.720><c> a</c>
+
+00:22:27.870 --> 00:22:27.880 align:start position:0%
+supports standard SD cards there was a
+
+
+00:22:27.880 --> 00:22:31.110 align:start position:0%
+supports standard SD cards there was a
+bug<00:22:28.120><c> in</c><00:22:28.200><c> the</c><00:22:28.279><c> front</c><00:22:28.520><c> firware</c><00:22:29.600><c> that</c><00:22:30.600><c> messed</c><00:22:30.919><c> up</c>
+
+00:22:31.110 --> 00:22:31.120 align:start position:0%
+bug in the front firware that messed up
+
+
+00:22:31.120 --> 00:22:33.830 align:start position:0%
+bug in the front firware that messed up
+compatibility<00:22:31.880><c> with</c><00:22:32.039><c> some</c><00:22:32.440><c> of</c><00:22:32.679><c> the</c><00:22:33.320><c> uh</c><00:22:33.520><c> class</c>
+
+00:22:33.830 --> 00:22:33.840 align:start position:0%
+compatibility with some of the uh class
+
+
+00:22:33.840 --> 00:22:37.110 align:start position:0%
+compatibility with some of the uh class
+10<00:22:34.400><c> very</c><00:22:34.640><c> very</c><00:22:34.880><c> highspeed</c><00:22:35.600><c> SD</c><00:22:35.960><c> cards</c><00:22:36.960><c> that</c>
+
+00:22:37.110 --> 00:22:37.120 align:start position:0%
+10 very very highspeed SD cards that
+
+
+00:22:37.120 --> 00:22:39.710 align:start position:0%
+10 very very highspeed SD cards that
+bug's<00:22:37.440><c> been</c><00:22:37.640><c> fixed</c><00:22:38.360><c> but</c><00:22:38.559><c> the</c><00:22:38.799><c> vast</c><00:22:39.159><c> majority</c>
+
+00:22:39.710 --> 00:22:39.720 align:start position:0%
+bug's been fixed but the vast majority
+
+
+00:22:39.720 --> 00:22:44.590 align:start position:0%
+bug's been fixed but the vast majority
+of<00:22:40.720><c> Boards</c><00:22:41.240><c> out</c><00:22:41.400><c> in</c><00:22:41.559><c> the</c><00:22:41.880><c> world</c><00:22:42.880><c> have</c><00:22:43.080><c> the</c><00:22:43.600><c> bug</c>
+
+00:22:44.590 --> 00:22:44.600 align:start position:0%
+of Boards out in the world have the bug
+
+
+00:22:44.600 --> 00:22:47.870 align:start position:0%
+of Boards out in the world have the bug
+so<00:22:45.559><c> unless</c><00:22:45.880><c> you</c><00:22:46.400><c> bought</c><00:22:46.640><c> your</c><00:22:46.799><c> unit</c><00:22:47.159><c> fairly</c>
+
+00:22:47.870 --> 00:22:47.880 align:start position:0%
+so unless you bought your unit fairly
+
+
+00:22:47.880 --> 00:22:50.310 align:start position:0%
+so unless you bought your unit fairly
+recently<00:22:48.880><c> uh</c><00:22:48.960><c> you</c><00:22:49.080><c> should</c><00:22:49.279><c> check</c><00:22:49.720><c> the</c><00:22:49.880><c> list</c>
+
+00:22:50.310 --> 00:22:50.320 align:start position:0%
+recently uh you should check the list
+
+
+00:22:50.320 --> 00:22:52.510 align:start position:0%
+recently uh you should check the list
+before<00:22:50.600><c> you</c><00:22:51.080><c> plump</c><00:22:51.440><c> down</c><00:22:51.600><c> your</c><00:22:51.760><c> 30</c><00:22:52.039><c> or</c><00:22:52.200><c> 50</c>
+
+00:22:52.510 --> 00:22:52.520 align:start position:0%
+before you plump down your 30 or 50
+
+
+00:22:52.520 --> 00:22:54.590 align:start position:0%
+before you plump down your 30 or 50
+bucks<00:22:52.760><c> for</c><00:22:52.960><c> the</c><00:22:53.159><c> super</c><00:22:53.480><c> duper</c><00:22:53.840><c> SD</c><00:22:54.240><c> card</c><00:22:54.520><c> you</c>
+
+00:22:54.590 --> 00:22:54.600 align:start position:0%
+bucks for the super duper SD card you
+
+
+00:22:54.600 --> 00:22:58.950 align:start position:0%
+bucks for the super duper SD card you
+should<00:22:54.880><c> check</c><00:22:55.159><c> the</c><00:22:55.320><c> list</c><00:22:56.320><c> uh</c><00:22:56.440><c> it's</c><00:22:56.640><c> HTTP</c><00:22:57.640><c> colon</c>
+
+00:22:58.950 --> 00:22:58.960 align:start position:0%
+should check the list uh it's HTTP colon
+
+
+00:22:58.960 --> 00:23:00.269 align:start position:0%
+should check the list uh it's HTTP colon
+that
+
+00:23:00.269 --> 00:23:00.279 align:start position:0%
+that
+
+
+00:23:00.279 --> 00:23:04.269 align:start position:0%
+that
+URL<00:23:01.720><c> um</c><00:23:02.720><c> the</c><00:23:02.919><c> colel</c><00:23:03.240><c> always</c><00:23:03.440><c> boots</c><00:23:03.799><c> off</c><00:23:03.919><c> the</c><00:23:04.000><c> SD</c>
+
+00:23:04.269 --> 00:23:04.279 align:start position:0%
+URL um the colel always boots off the SD
+
+
+00:23:04.279 --> 00:23:05.830 align:start position:0%
+URL um the colel always boots off the SD
+card<00:23:04.480><c> it</c><00:23:04.600><c> doesn't</c><00:23:04.760><c> know</c><00:23:04.880><c> how</c><00:23:05.000><c> to</c><00:23:05.120><c> do</c><00:23:05.279><c> anything</c>
+
+00:23:05.830 --> 00:23:05.840 align:start position:0%
+card it doesn't know how to do anything
+
+
+00:23:05.840 --> 00:23:07.750 align:start position:0%
+card it doesn't know how to do anything
+else
+
+00:23:07.750 --> 00:23:07.760 align:start position:0%
+else
+
+
+00:23:07.760 --> 00:23:13.669 align:start position:0%
+else
+except<00:23:09.159><c> uh</c><00:23:10.240><c> in</c><00:23:11.240><c> very</c><00:23:11.520><c> weird</c><00:23:11.799><c> circumstances</c>
+
+00:23:13.669 --> 00:23:13.679 align:start position:0%
+except uh in very weird circumstances
+
+
+00:23:13.679 --> 00:23:16.870 align:start position:0%
+except uh in very weird circumstances
+but<00:23:14.679><c> in</c><00:23:14.960><c> practic</c><00:23:15.760><c> at</c><00:23:15.840><c> a</c><00:23:16.039><c> practical</c><00:23:16.440><c> level</c><00:23:16.760><c> it</c>
+
+00:23:16.870 --> 00:23:16.880 align:start position:0%
+but in practic at a practical level it
+
+
+00:23:16.880 --> 00:23:19.669 align:start position:0%
+but in practic at a practical level it
+boots<00:23:17.440><c> off</c><00:23:17.600><c> the</c><00:23:17.720><c> SD</c><00:23:18.039><c> card</c><00:23:18.880><c> however</c><00:23:19.159><c> it's</c><00:23:19.480><c> very</c>
+
+00:23:19.669 --> 00:23:19.679 align:start position:0%
+boots off the SD card however it's very
+
+
+00:23:19.679 --> 00:23:23.029 align:start position:0%
+boots off the SD card however it's very
+easy<00:23:19.960><c> to</c><00:23:20.279><c> steer</c><00:23:21.279><c> all</c><00:23:21.600><c> subsequent</c><00:23:22.159><c> steps</c><00:23:22.720><c> for</c>
+
+00:23:23.029 --> 00:23:23.039 align:start position:0%
+easy to steer all subsequent steps for
+
+
+00:23:23.039 --> 00:23:26.950 align:start position:0%
+easy to steer all subsequent steps for
+example<00:23:24.039><c> setting</c><00:23:24.400><c> up</c><00:23:24.760><c> and</c><00:23:25.279><c> and</c><00:23:25.720><c> uh</c><00:23:26.520><c> running</c>
+
+00:23:26.950 --> 00:23:26.960 align:start position:0%
+example setting up and and uh running
+
+
+00:23:26.960 --> 00:23:28.950 align:start position:0%
+example setting up and and uh running
+the<00:23:27.159><c> uh</c><00:23:27.320><c> root</c><00:23:27.600><c> file</c><00:23:27.919><c> system</c><00:23:28.640><c> on</c><00:23:28.840><c> an</c>
+
+00:23:28.950 --> 00:23:28.960 align:start position:0%
+the uh root file system on an
+
+
+00:23:28.960 --> 00:23:32.029 align:start position:0%
+the uh root file system on an
+alternative<00:23:29.520><c> device</c><00:23:30.240><c> so</c><00:23:30.440><c> for</c><00:23:30.640><c> example</c><00:23:31.559><c> I</c><00:23:31.720><c> get</c>
+
+00:23:32.029 --> 00:23:32.039 align:start position:0%
+alternative device so for example I get
+
+
+00:23:32.039 --> 00:23:36.390 align:start position:0%
+alternative device so for example I get
+SD<00:23:32.400><c> cards</c><00:23:33.279><c> that</c><00:23:34.279><c> that</c><00:23:34.600><c> are</c><00:23:35.600><c> that</c><00:23:35.840><c> started</c><00:23:36.200><c> out</c>
+
+00:23:36.390 --> 00:23:36.400 align:start position:0%
+SD cards that that are that started out
+
+
+00:23:36.400 --> 00:23:38.870 align:start position:0%
+SD cards that that are that started out
+at<00:23:36.559><c> 4</c><00:23:36.919><c> gig</c><00:23:37.279><c> SD</c><00:23:37.640><c> cards</c><00:23:38.039><c> and</c><00:23:38.200><c> due</c><00:23:38.360><c> to</c><00:23:38.520><c> Hardware</c>
+
+00:23:38.870 --> 00:23:38.880 align:start position:0%
+at 4 gig SD cards and due to Hardware
+
+
+00:23:38.880 --> 00:23:41.310 align:start position:0%
+at 4 gig SD cards and due to Hardware
+failures<00:23:39.520><c> they</c><00:23:39.760><c> they're</c><00:23:40.679><c> turned</c><00:23:41.080><c> themselves</c>
+
+00:23:41.310 --> 00:23:41.320 align:start position:0%
+failures they they're turned themselves
+
+
+00:23:41.320 --> 00:23:42.710 align:start position:0%
+failures they they're turned themselves
+into<00:23:41.559><c> 700</c>
+
+00:23:42.710 --> 00:23:42.720 align:start position:0%
+into 700
+
+
+00:23:42.720 --> 00:23:46.909 align:start position:0%
+into 700
+Meg<00:23:43.720><c> but</c><00:23:44.159><c> the</c><00:23:44.520><c> first</c><00:23:45.039><c> part</c><00:23:45.840><c> of</c><00:23:46.000><c> the</c><00:23:46.159><c> system</c><00:23:46.720><c> can</c>
+
+00:23:46.909 --> 00:23:46.919 align:start position:0%
+Meg but the first part of the system can
+
+
+00:23:46.919 --> 00:23:50.029 align:start position:0%
+Meg but the first part of the system can
+boot<00:23:47.600><c> perfectly</c><00:23:48.039><c> fine</c><00:23:48.520><c> without</c><00:23:48.880><c> that</c><00:23:49.240><c> and</c><00:23:49.559><c> uh</c>
+
+00:23:50.029 --> 00:23:50.039 align:start position:0%
+boot perfectly fine without that and uh
+
+
+00:23:50.039 --> 00:23:51.269 align:start position:0%
+boot perfectly fine without that and uh
+well<00:23:50.279><c> this</c><00:23:50.360><c> is</c><00:23:50.520><c> one</c><00:23:50.640><c> of</c><00:23:50.720><c> the</c><00:23:50.840><c> things</c><00:23:51.000><c> that</c><00:23:51.159><c> we</c>
+
+00:23:51.269 --> 00:23:51.279 align:start position:0%
+well this is one of the things that we
+
+
+00:23:51.279 --> 00:23:54.950 align:start position:0%
+well this is one of the things that we
+can<00:23:51.440><c> go</c><00:23:51.640><c> in</c><00:23:52.240><c> to</c><00:23:52.799><c> on</c><00:23:53.320><c> Saturday</c><00:23:54.000><c> to</c><00:23:54.240><c> help</c><00:23:54.480><c> people</c>
+
+00:23:54.950 --> 00:23:54.960 align:start position:0%
+can go in to on Saturday to help people
+
+
+00:23:54.960 --> 00:23:57.430 align:start position:0%
+can go in to on Saturday to help people
+do<00:23:55.200><c> this</c><00:23:55.720><c> for</c><00:23:55.880><c> example</c><00:23:56.200><c> you</c><00:23:56.320><c> can</c><00:23:56.520><c> get</c><00:23:57.159><c> some</c>
+
+00:23:57.430 --> 00:23:57.440 align:start position:0%
+do this for example you can get some
+
+
+00:23:57.440 --> 00:23:59.750 align:start position:0%
+do this for example you can get some
+performance<00:23:57.880><c> boost</c><00:23:58.240><c> off</c><00:23:58.559><c> the</c><00:23:58.760><c> low</c><00:23:59.200><c> powered</c>
+
+00:23:59.750 --> 00:23:59.760 align:start position:0%
+performance boost off the low powered
+
+
+00:23:59.760 --> 00:24:01.990 align:start position:0%
+performance boost off the low powered
+over<00:24:00.039><c> the</c><00:24:00.159><c> low</c><00:24:00.440><c> powered</c><00:24:00.679><c> SD</c><00:24:01.000><c> cards</c><00:24:01.440><c> by</c><00:24:01.640><c> using</c>
+
+00:24:01.990 --> 00:24:02.000 align:start position:0%
+over the low powered SD cards by using
+
+
+00:24:02.000 --> 00:24:08.149 align:start position:0%
+over the low powered SD cards by using
+thumb<00:24:02.360><c> drives</c><00:24:03.360><c> you</c><00:24:03.440><c> can</c><00:24:03.640><c> also</c><00:24:03.960><c> use</c><00:24:04.520><c> USB</c><00:24:04.919><c> hard</c>
+
+00:24:08.149 --> 00:24:08.159 align:start position:0%
+
+
+
+00:24:08.159 --> 00:24:10.630 align:start position:0%
+
+drives<00:24:09.159><c> uh</c><00:24:09.279><c> the</c><00:24:09.400><c> video</c><00:24:09.679><c> I've</c><00:24:09.840><c> already</c><00:24:10.039><c> gone</c>
+
+00:24:10.630 --> 00:24:10.640 align:start position:0%
+drives uh the video I've already gone
+
+
+00:24:10.640 --> 00:24:14.190 align:start position:0%
+drives uh the video I've already gone
+over<00:24:11.640><c> uh</c><00:24:12.120><c> handles</c><00:24:12.600><c> a</c><00:24:12.799><c> wide</c><00:24:13.279><c> variety</c><00:24:13.720><c> of</c>
+
+00:24:14.190 --> 00:24:14.200 align:start position:0%
+over uh handles a wide variety of
+
+
+00:24:14.200 --> 00:24:16.029 align:start position:0%
+over uh handles a wide variety of
+resolutions
+
+00:24:16.029 --> 00:24:16.039 align:start position:0%
+resolutions
+
+
+00:24:16.039 --> 00:24:19.830 align:start position:0%
+resolutions
+but<00:24:17.039><c> it's</c><00:24:17.559><c> composite</c><00:24:18.279><c> out</c><00:24:18.400><c> of</c><00:24:18.520><c> that</c><00:24:18.640><c> RCA</c><00:24:19.159><c> jack</c>
+
+00:24:19.830 --> 00:24:19.840 align:start position:0%
+but it's composite out of that RCA jack
+
+
+00:24:19.840 --> 00:24:22.590 align:start position:0%
+but it's composite out of that RCA jack
+or<00:24:20.080><c> HDMI</c><00:24:21.039><c> it</c><00:24:21.200><c> doesn't</c><00:24:21.440><c> do</c><00:24:21.640><c> VGA</c><00:24:22.080><c> it</c><00:24:22.159><c> doesn't</c><00:24:22.400><c> do</c>
+
+00:24:22.590 --> 00:24:22.600 align:start position:0%
+or HDMI it doesn't do VGA it doesn't do
+
+
+00:24:22.600 --> 00:24:26.149 align:start position:0%
+or HDMI it doesn't do VGA it doesn't do
+analog<00:24:23.080><c> video</c><00:24:23.840><c> period</c><00:24:24.640><c> doesn't</c><00:24:24.960><c> do</c><00:24:25.120><c> it</c><00:24:25.840><c> so</c><00:24:26.080><c> if</c>
+
+00:24:26.149 --> 00:24:26.159 align:start position:0%
+analog video period doesn't do it so if
+
+
+00:24:26.159 --> 00:24:28.870 align:start position:0%
+analog video period doesn't do it so if
+you<00:24:26.320><c> want</c><00:24:26.520><c> to</c><00:24:26.760><c> use</c><00:24:27.520><c> BGA</c>
+
+00:24:28.870 --> 00:24:28.880 align:start position:0%
+you want to use BGA
+
+
+00:24:28.880 --> 00:24:30.269 align:start position:0%
+you want to use BGA
+uh<00:24:29.000><c> I</c><00:24:29.120><c> can't</c><00:24:29.320><c> show</c><00:24:29.520><c> you</c><00:24:29.720><c> this</c><00:24:29.880><c> thing</c><00:24:30.120><c> but</c>
+
+00:24:30.269 --> 00:24:30.279 align:start position:0%
+uh I can't show you this thing but
+
+
+00:24:30.279 --> 00:24:32.590 align:start position:0%
+uh I can't show you this thing but
+there's<00:24:30.399><c> a</c><00:24:30.600><c> little</c><00:24:31.320><c> blob</c><00:24:31.760><c> that</c><00:24:31.880><c> you</c><00:24:32.000><c> can</c><00:24:32.279><c> get</c>
+
+00:24:32.590 --> 00:24:32.600 align:start position:0%
+there's a little blob that you can get
+
+
+00:24:32.600 --> 00:24:35.710 align:start position:0%
+there's a little blob that you can get
+for<00:24:32.880><c> 30</c><00:24:33.120><c> or</c><00:24:33.240><c> 40</c><00:24:33.559><c> bucks</c><00:24:34.559><c> that</c><00:24:34.760><c> will</c><00:24:35.240><c> or</c><00:24:35.399><c> cheaper</c>
+
+00:24:35.710 --> 00:24:35.720 align:start position:0%
+for 30 or 40 bucks that will or cheaper
+
+
+00:24:35.720 --> 00:24:38.350 align:start position:0%
+for 30 or 40 bucks that will or cheaper
+from<00:24:35.919><c> Ada</c><00:24:36.279><c> fruit</c><00:24:37.279><c> um</c>
+
+00:24:38.350 --> 00:24:38.360 align:start position:0%
+from Ada fruit um
+
+
+00:24:38.360 --> 00:24:41.470 align:start position:0%
+from Ada fruit um
+a.com<00:24:39.360><c> uh</c><00:24:39.520><c> that</c><00:24:39.600><c> will</c><00:24:39.799><c> convert</c><00:24:40.200><c> the</c><00:24:40.320><c> HDMI</c><00:24:41.240><c> to</c>
+
+00:24:41.470 --> 00:24:41.480 align:start position:0%
+a.com uh that will convert the HDMI to
+
+
+00:24:41.480 --> 00:24:44.470 align:start position:0%
+a.com uh that will convert the HDMI to
+VGA<00:24:42.279><c> works</c><00:24:42.600><c> really</c>
+
+00:24:44.470 --> 00:24:44.480 align:start position:0%
+VGA works really
+
+
+00:24:44.480 --> 00:24:48.230 align:start position:0%
+VGA works really
+well<00:24:45.480><c> there</c><00:24:46.360><c> monoprice.com</c><00:24:47.360><c> sells</c><00:24:47.960><c> a</c>
+
+00:24:48.230 --> 00:24:48.240 align:start position:0%
+well there monoprice.com sells a
+
+
+00:24:48.240 --> 00:24:52.070 align:start position:0%
+well there monoprice.com sells a
+composite<00:24:48.880><c> to</c><00:24:49.159><c> BGA</c><00:24:49.720><c> adapter</c><00:24:50.279><c> for</c><00:24:50.720><c> 20</c><00:24:51.120><c> bucks</c>
+
+00:24:52.070 --> 00:24:52.080 align:start position:0%
+composite to BGA adapter for 20 bucks
+
+
+00:24:52.080 --> 00:24:55.990 align:start position:0%
+composite to BGA adapter for 20 bucks
+right<00:24:52.440><c> and</c><00:24:52.600><c> the</c><00:24:53.159><c> Adafruit</c><00:24:54.159><c> HDMI</c><00:24:54.880><c> to</c><00:24:55.039><c> BGA</c><00:24:55.799><c> that</c>
+
+00:24:55.990 --> 00:24:56.000 align:start position:0%
+right and the Adafruit HDMI to BGA that
+
+
+00:24:56.000 --> 00:24:59.549 align:start position:0%
+right and the Adafruit HDMI to BGA that
+includes<00:24:56.399><c> a</c><00:24:56.600><c> sound</c><00:24:57.159><c> jack</c><00:24:57.720><c> is</c><00:24:57.919><c> 20</c><00:24:58.159><c> bucks</c>
+
+00:24:59.549 --> 00:24:59.559 align:start position:0%
+includes a sound jack is 20 bucks
+
+
+00:24:59.559 --> 00:25:03.310 align:start position:0%
+includes a sound jack is 20 bucks
+yeah<00:24:59.760><c> adafruit.com</c><00:25:01.000><c> is</c><00:25:02.000><c> a</c><00:25:02.320><c> fabulous</c>
+
+00:25:03.310 --> 00:25:03.320 align:start position:0%
+yeah adafruit.com is a fabulous
+
+
+00:25:03.320 --> 00:25:04.750 align:start position:0%
+yeah adafruit.com is a fabulous
+commercial
+
+00:25:04.750 --> 00:25:04.760 align:start position:0%
+commercial
+
+
+00:25:04.760 --> 00:25:06.510 align:start position:0%
+commercial
+Source<00:25:05.760><c> the</c>
+
+00:25:06.510 --> 00:25:06.520 align:start position:0%
+Source the
+
+
+00:25:06.520 --> 00:25:12.669 align:start position:0%
+Source the
+audio<00:25:07.520><c> uh</c><00:25:08.120><c> is</c><00:25:08.559><c> just</c><00:25:09.440><c> plain</c><00:25:10.000><c> stereo</c><00:25:10.640><c> output</c><00:25:11.679><c> uh</c>
+
+00:25:12.669 --> 00:25:12.679 align:start position:0%
+audio uh is just plain stereo output uh
+
+
+00:25:12.679 --> 00:25:17.470 align:start position:0%
+audio uh is just plain stereo output uh
+it's<00:25:13.640><c> it</c><00:25:13.799><c> uses</c><00:25:14.240><c> a</c><00:25:14.799><c> uh</c><00:25:15.520><c> D</c><00:25:16.080><c> converter</c><00:25:16.679><c> in</c><00:25:16.919><c> the</c>
+
+00:25:17.470 --> 00:25:17.480 align:start position:0%
+it's it uses a uh D converter in the
+
+
+00:25:17.480 --> 00:25:22.029 align:start position:0%
+it's it uses a uh D converter in the
+main<00:25:18.480><c> chip</c><00:25:19.279><c> and</c><00:25:20.279><c> seems</c><00:25:20.640><c> to</c><00:25:20.880><c> be</c><00:25:21.600><c> kind</c><00:25:21.720><c> of</c>
+
+00:25:22.029 --> 00:25:22.039 align:start position:0%
+main chip and seems to be kind of
+
+
+00:25:22.039 --> 00:25:24.470 align:start position:0%
+main chip and seems to be kind of
+lagging<00:25:22.679><c> I</c><00:25:22.760><c> mean</c><00:25:23.279><c> everything</c><00:25:23.600><c> else</c><00:25:23.960><c> seems</c><00:25:24.240><c> to</c>
+
+00:25:24.470 --> 00:25:24.480 align:start position:0%
+lagging I mean everything else seems to
+
+
+00:25:24.480 --> 00:25:28.590 align:start position:0%
+lagging I mean everything else seems to
+just<00:25:24.679><c> work</c><00:25:25.039><c> great</c><00:25:25.600><c> and</c><00:25:26.200><c> is</c>
+
+00:25:28.590 --> 00:25:28.600 align:start position:0%
+just work great and is
+
+
+00:25:28.600 --> 00:25:32.750 align:start position:0%
+just work great and is
+all<00:25:28.960><c> joy</c><00:25:29.399><c> and</c><00:25:29.760><c> smiles</c><00:25:30.520><c> and</c><00:25:30.720><c> the</c><00:25:31.200><c> audio</c><00:25:32.200><c> uh</c><00:25:32.600><c> can</c>
+
+00:25:32.750 --> 00:25:32.760 align:start position:0%
+all joy and smiles and the audio uh can
+
+
+00:25:32.760 --> 00:25:36.630 align:start position:0%
+all joy and smiles and the audio uh can
+be<00:25:33.039><c> problematic</c><00:25:34.000><c> and</c><00:25:34.360><c> uh</c><00:25:34.760><c> Linux</c><00:25:35.320><c> bad</c><00:25:35.520><c> audio</c>
+
+00:25:36.630 --> 00:25:36.640 align:start position:0%
+be problematic and uh Linux bad audio
+
+
+00:25:36.640 --> 00:25:40.950 align:start position:0%
+be problematic and uh Linux bad audio
+never<00:25:37.640><c> it</c><00:25:37.760><c> makes</c><00:25:38.000><c> no</c><00:25:38.399><c> audio</c><00:25:39.399><c> until</c><00:25:39.679><c> you</c><00:25:39.880><c> figure</c>
+
+00:25:40.950 --> 00:25:40.960 align:start position:0%
+never it makes no audio until you figure
+
+
+00:25:40.960 --> 00:25:45.310 align:start position:0%
+never it makes no audio until you figure
+out<00:25:41.960><c> how</c><00:25:42.039><c> to</c><00:25:42.200><c> hold</c><00:25:42.360><c> your</c><00:25:42.600><c> face</c><00:25:43.600><c> uh</c><00:25:43.799><c> next</c>
+
+00:25:45.310 --> 00:25:45.320 align:start position:0%
+out how to hold your face uh next
+
+
+00:25:45.320 --> 00:25:47.389 align:start position:0%
+out how to hold your face uh next
+Slide<00:25:46.320><c> the</c><00:25:46.480><c> networking</c><00:25:46.960><c> I've</c><00:25:47.120><c> already</c>
+
+00:25:47.389 --> 00:25:47.399 align:start position:0%
+Slide the networking I've already
+
+
+00:25:47.399 --> 00:25:50.950 align:start position:0%
+Slide the networking I've already
+covered<00:25:48.279><c> but</c><00:25:48.600><c> except</c><00:25:48.880><c> to</c><00:25:49.080><c> say</c><00:25:49.399><c> that</c><00:25:50.320><c> um</c><00:25:50.799><c> there</c>
+
+00:25:50.950 --> 00:25:50.960 align:start position:0%
+covered but except to say that um there
+
+
+00:25:50.960 --> 00:25:54.389 align:start position:0%
+covered but except to say that um there
+is<00:25:51.159><c> good</c><00:25:51.399><c> support</c><00:25:51.960><c> for</c><00:25:52.600><c> wireless</c><00:25:53.600><c> uh</c><00:25:53.799><c> and</c>
+
+00:25:54.389 --> 00:25:54.399 align:start position:0%
+is good support for wireless uh and
+
+
+00:25:54.399 --> 00:25:57.269 align:start position:0%
+is good support for wireless uh and
+wired<00:25:54.919><c> ethernet</c><00:25:55.880><c> uh</c><00:25:56.080><c> adapters</c><00:25:56.679><c> that</c><00:25:56.799><c> run</c><00:25:57.039><c> on</c>
+
+00:25:57.269 --> 00:25:57.279 align:start position:0%
+wired ethernet uh adapters that run on
+
+
+00:25:57.279 --> 00:26:01.350 align:start position:0%
+wired ethernet uh adapters that run on
+USB<00:25:58.360><c> so</c><00:25:58.799><c> one</c><00:25:59.039><c> approach</c><00:25:59.840><c> you</c><00:26:00.320><c> for</c><00:26:00.640><c> a</c><00:26:00.840><c> cost</c>
+
+00:26:01.350 --> 00:26:01.360 align:start position:0%
+USB so one approach you for a cost
+
+
+00:26:01.360 --> 00:26:03.230 align:start position:0%
+USB so one approach you for a cost
+sensitive<00:26:02.360><c> uh</c>
+
+00:26:03.230 --> 00:26:03.240 align:start position:0%
+sensitive uh
+
+
+00:26:03.240 --> 00:26:06.110 align:start position:0%
+sensitive uh
+application<00:26:04.240><c> um</c><00:26:04.679><c> is</c><00:26:04.880><c> to</c><00:26:05.320><c> go</c><00:26:05.520><c> with</c><00:26:05.600><c> a</c><00:26:05.760><c> powered</c>
+
+00:26:06.110 --> 00:26:06.120 align:start position:0%
+application um is to go with a powered
+
+
+00:26:06.120 --> 00:26:09.830 align:start position:0%
+application um is to go with a powered
+Hub<00:26:07.120><c> or</c><00:26:07.960><c> even</c><00:26:08.440><c> a</c><00:26:08.559><c> plane</c><00:26:08.840><c> Hub</c><00:26:09.159><c> if</c><00:26:09.559><c> you're</c><00:26:09.720><c> going</c>
+
+00:26:09.830 --> 00:26:09.840 align:start position:0%
+Hub or even a plane Hub if you're going
+
+
+00:26:09.840 --> 00:26:11.110 align:start position:0%
+Hub or even a plane Hub if you're going
+to
+
+00:26:11.110 --> 00:26:11.120 align:start position:0%
+to
+
+
+00:26:11.120 --> 00:26:15.070 align:start position:0%
+to
+use<00:26:12.120><c> just</c><00:26:12.399><c> very</c><00:26:12.600><c> low</c><00:26:12.960><c> powered</c><00:26:13.559><c> um</c><00:26:14.080><c> peripherals</c>
+
+00:26:15.070 --> 00:26:15.080 align:start position:0%
+use just very low powered um peripherals
+
+
+00:26:15.080 --> 00:26:22.110 align:start position:0%
+use just very low powered um peripherals
+and<00:26:15.919><c> use</c><00:26:16.640><c> the</c><00:26:17.640><c> USB</c><00:26:18.559><c> or</c><00:26:19.559><c> wired</c><00:26:19.919><c> or</c><00:26:20.440><c> Wireless</c><00:26:21.440><c> EET</c>
+
+00:26:22.110 --> 00:26:22.120 align:start position:0%
+and use the USB or wired or Wireless EET
+
+
+00:26:22.120 --> 00:26:23.149 align:start position:0%
+and use the USB or wired or Wireless EET
+go
+
+00:26:23.149 --> 00:26:23.159 align:start position:0%
+go
+
+
+00:26:23.159 --> 00:26:26.990 align:start position:0%
+go
+ahead<00:26:24.159><c> USB</c><00:26:24.720><c> support</c><00:26:25.559><c> I've</c><00:26:25.720><c> already</c>
+
+00:26:26.990 --> 00:26:27.000 align:start position:0%
+ahead USB support I've already
+
+
+00:26:27.000 --> 00:26:29.510 align:start position:0%
+ahead USB support I've already
+covered<00:26:28.000><c> um</c><00:26:28.360><c> oops</c>
+
+00:26:29.510 --> 00:26:29.520 align:start position:0%
+covered um oops
+
+
+00:26:29.520 --> 00:26:31.630 align:start position:0%
+covered um oops
+sorry<00:26:30.520><c> key</c>
+
+00:26:31.630 --> 00:26:31.640 align:start position:0%
+sorry key
+
+
+00:26:31.640 --> 00:26:33.149 align:start position:0%
+sorry key
+thing
+
+00:26:33.149 --> 00:26:33.159 align:start position:0%
+thing
+
+
+00:26:33.159 --> 00:26:37.430 align:start position:0%
+thing
+the<00:26:34.159><c> power</c><00:26:35.120><c> on</c><00:26:35.480><c> the</c><00:26:36.360><c> all</c><00:26:36.480><c> of</c><00:26:36.600><c> the</c><00:26:37.120><c> all</c><00:26:37.240><c> of</c><00:26:37.360><c> the</c>
+
+00:26:37.430 --> 00:26:37.440 align:start position:0%
+the power on the all of the all of the
+
+
+00:26:37.440 --> 00:26:41.350 align:start position:0%
+the power on the all of the all of the
+wards<00:26:37.880><c> up</c><00:26:38.039><c> till</c><00:26:38.799><c> late</c><00:26:39.080><c> last</c><00:26:39.559><c> year</c><00:26:40.559><c> was</c><00:26:40.840><c> limited</c>
+
+00:26:41.350 --> 00:26:41.360 align:start position:0%
+wards up till late last year was limited
+
+
+00:26:41.360 --> 00:26:43.230 align:start position:0%
+wards up till late last year was limited
+the<00:26:41.520><c> power</c><00:26:41.840><c> that</c><00:26:41.960><c> could</c><00:26:42.159><c> be</c><00:26:42.360><c> fed</c><00:26:42.760><c> from</c><00:26:43.000><c> that</c>
+
+00:26:43.230 --> 00:26:43.240 align:start position:0%
+the power that could be fed from that
+
+
+00:26:43.240 --> 00:26:44.870 align:start position:0%
+the power that could be fed from that
+connector<00:26:43.720><c> the</c><00:26:43.880><c> power</c><00:26:44.080><c> connector</c><00:26:44.480><c> I</c><00:26:44.600><c> showed</c>
+
+00:26:44.870 --> 00:26:44.880 align:start position:0%
+connector the power connector I showed
+
+
+00:26:44.880 --> 00:26:48.789 align:start position:0%
+connector the power connector I showed
+you<00:26:45.440><c> to</c><00:26:45.679><c> the</c><00:26:45.840><c> USB</c><00:26:46.399><c> sockets</c><00:26:46.919><c> was</c><00:26:47.080><c> limited</c><00:26:47.600><c> by</c><00:26:47.960><c> a</c>
+
+00:26:48.789 --> 00:26:48.799 align:start position:0%
+you to the USB sockets was limited by a
+
+
+00:26:48.799 --> 00:26:53.789 align:start position:0%
+you to the USB sockets was limited by a
+a<00:26:49.240><c> fuse</c><00:26:50.240><c> that</c><00:26:51.080><c> basically</c><00:26:52.159><c> open</c><00:26:53.159><c> temporarily</c>
+
+00:26:53.789 --> 00:26:53.799 align:start position:0%
+a fuse that basically open temporarily
+
+
+00:26:53.799 --> 00:26:55.870 align:start position:0%
+a fuse that basically open temporarily
+opens<00:26:54.520><c> when</c><00:26:54.679><c> the</c><00:26:54.799><c> power</c><00:26:55.360><c> when</c><00:26:55.480><c> the</c><00:26:55.559><c> current</c>
+
+00:26:55.870 --> 00:26:55.880 align:start position:0%
+opens when the power when the current
+
+
+00:26:55.880 --> 00:26:57.190 align:start position:0%
+opens when the power when the current
+exceeds<00:26:56.200><c> about</c><00:26:56.360><c> a</c><00:26:56.440><c> half</c><00:26:56.559><c> an</c><00:26:56.720><c> amp</c><00:26:56.960><c> and</c><00:26:57.039><c> then</c>
+
+00:26:57.190 --> 00:26:57.200 align:start position:0%
+exceeds about a half an amp and then
+
+
+00:26:57.200 --> 00:27:00.430 align:start position:0%
+exceeds about a half an amp and then
+closes<00:26:57.600><c> back</c><00:26:57.760><c> down</c><00:26:58.520><c> the</c><00:26:58.679><c> net</c><00:26:58.919><c> of</c><00:26:59.159><c> that</c><00:26:59.480><c> is</c><00:27:00.279><c> you</c>
+
+00:27:00.430 --> 00:27:00.440 align:start position:0%
+closes back down the net of that is you
+
+
+00:27:00.440 --> 00:27:02.549 align:start position:0%
+closes back down the net of that is you
+can't<00:27:00.679><c> get</c><00:27:00.880><c> there</c><00:27:01.039><c> from</c><00:27:01.240><c> here</c><00:27:01.760><c> trying</c><00:27:02.039><c> to</c><00:27:02.200><c> run</c>
+
+00:27:02.549 --> 00:27:02.559 align:start position:0%
+can't get there from here trying to run
+
+
+00:27:02.559 --> 00:27:05.789 align:start position:0%
+can't get there from here trying to run
+say<00:27:02.919><c> a</c><00:27:03.080><c> USB</c><00:27:03.559><c> hard</c><00:27:03.840><c> drive</c><00:27:04.640><c> off</c><00:27:04.760><c> of</c><00:27:04.919><c> the</c><00:27:05.039><c> USB</c>
+
+00:27:05.789 --> 00:27:05.799 align:start position:0%
+say a USB hard drive off of the USB
+
+
+00:27:05.799 --> 00:27:08.029 align:start position:0%
+say a USB hard drive off of the USB
+connector<00:27:06.720><c> just</c><00:27:06.880><c> from</c><00:27:07.080><c> the</c><00:27:07.240><c> power</c><00:27:07.559><c> going</c><00:27:07.840><c> in</c>
+
+00:27:08.029 --> 00:27:08.039 align:start position:0%
+connector just from the power going in
+
+
+00:27:08.039 --> 00:27:10.750 align:start position:0%
+connector just from the power going in
+through<00:27:08.200><c> the</c><00:27:08.360><c> micro</c><00:27:08.760><c> USB</c><00:27:09.760><c> power</c><00:27:10.480><c> power</c>
+
+00:27:10.750 --> 00:27:10.760 align:start position:0%
+through the micro USB power power
+
+
+00:27:10.760 --> 00:27:14.029 align:start position:0%
+through the micro USB power power
+connection<00:27:11.640><c> you</c><00:27:11.880><c> have</c><00:27:12.000><c> to</c><00:27:12.120><c> use</c><00:27:12.279><c> a</c><00:27:12.399><c> powered</c><00:27:13.039><c> Hub</c>
+
+00:27:14.029 --> 00:27:14.039 align:start position:0%
+connection you have to use a powered Hub
+
+
+00:27:14.039 --> 00:27:19.029 align:start position:0%
+connection you have to use a powered Hub
+and<00:27:14.640><c> and</c><00:27:15.640><c> uh</c><00:27:16.080><c> if</c><00:27:16.200><c> you've</c><00:27:16.520><c> got</c><00:27:17.240><c> a</c><00:27:17.520><c> REV</c><00:27:17.919><c> two</c><00:27:18.360><c> board</c>
+
+00:27:19.029 --> 00:27:19.039 align:start position:0%
+and and uh if you've got a REV two board
+
+
+00:27:19.039 --> 00:27:21.269 align:start position:0%
+and and uh if you've got a REV two board
+and<00:27:19.159><c> you</c><00:27:19.240><c> can</c><00:27:19.399><c> tell</c><00:27:19.720><c> rev</c><00:27:20.080><c> rev</c><00:27:20.399><c> two</c><00:27:20.679><c> board</c><00:27:21.080><c> has</c>
+
+00:27:21.269 --> 00:27:21.279 align:start position:0%
+and you can tell rev rev two board has
+
+
+00:27:21.279 --> 00:27:22.909 align:start position:0%
+and you can tell rev rev two board has
+two<00:27:21.440><c> holes</c><00:27:21.720><c> in</c><00:27:21.880><c> it</c><00:27:22.080><c> it's</c><00:27:22.279><c> got</c><00:27:22.399><c> two</c><00:27:22.559><c> mounting</c>
+
+00:27:22.909 --> 00:27:22.919 align:start position:0%
+two holes in it it's got two mounting
+
+
+00:27:22.919 --> 00:27:25.870 align:start position:0%
+two holes in it it's got two mounting
+holes<00:27:23.600><c> it's</c><00:27:23.760><c> a</c><00:27:23.880><c> good</c><00:27:24.039><c> way</c><00:27:24.200><c> to</c><00:27:24.520><c> to</c><00:27:24.760><c> spot</c><00:27:25.080><c> it</c><00:27:25.760><c> uh</c>
+
+00:27:25.870 --> 00:27:25.880 align:start position:0%
+holes it's a good way to to spot it uh
+
+
+00:27:25.880 --> 00:27:27.230 align:start position:0%
+holes it's a good way to to spot it uh
+they<00:27:26.000><c> started</c><00:27:26.279><c> shipping</c><00:27:26.640><c> those</c><00:27:26.919><c> towards</c><00:27:27.159><c> the</c>
+
+00:27:27.230 --> 00:27:27.240 align:start position:0%
+they started shipping those towards the
+
+
+00:27:27.240 --> 00:27:28.669 align:start position:0%
+they started shipping those towards the
+end<00:27:27.360><c> of</c><00:27:27.520><c> last</c><00:27:27.760><c> year</c>
+
+00:27:28.669 --> 00:27:28.679 align:start position:0%
+end of last year
+
+
+00:27:28.679 --> 00:27:30.789 align:start position:0%
+end of last year
+that<00:27:29.279><c> they</c><00:27:29.399><c> got</c><00:27:29.559><c> rid</c><00:27:29.679><c> of</c><00:27:29.760><c> the</c><00:27:29.880><c> fuse</c><00:27:30.440><c> so</c><00:27:30.600><c> now</c><00:27:30.720><c> you</c>
+
+00:27:30.789 --> 00:27:30.799 align:start position:0%
+that they got rid of the fuse so now you
+
+
+00:27:30.799 --> 00:27:32.430 align:start position:0%
+that they got rid of the fuse so now you
+can<00:27:30.919><c> get</c><00:27:31.039><c> all</c><00:27:31.159><c> the</c><00:27:31.320><c> current</c><00:27:31.919><c> through</c><00:27:32.240><c> there</c>
+
+00:27:32.430 --> 00:27:32.440 align:start position:0%
+can get all the current through there
+
+
+00:27:32.440 --> 00:27:34.389 align:start position:0%
+can get all the current through there
+but<00:27:32.559><c> the</c><00:27:32.720><c> vast</c><00:27:32.960><c> majority</c><00:27:33.360><c> of</c><00:27:33.559><c> you</c><00:27:33.960><c> that</c>
+
+00:27:34.389 --> 00:27:34.399 align:start position:0%
+but the vast majority of you that
+
+
+00:27:34.399 --> 00:27:37.710 align:start position:0%
+but the vast majority of you that
+already<00:27:34.679><c> have</c><00:27:34.880><c> rpis</c><00:27:35.880><c> got</c><00:27:36.080><c> that</c><00:27:36.720><c> limitation</c>
+
+00:27:37.710 --> 00:27:37.720 align:start position:0%
+already have rpis got that limitation
+
+
+00:27:37.720 --> 00:27:40.110 align:start position:0%
+already have rpis got that limitation
+the<00:27:37.919><c> solution</c><00:27:38.399><c> again</c><00:27:38.640><c> is</c><00:27:39.120><c> just</c><00:27:39.240><c> a</c><00:27:39.399><c> power</c><00:27:39.840><c> hub</c>
+
+00:27:40.110 --> 00:27:40.120 align:start position:0%
+the solution again is just a power hub
+
+
+00:27:40.120 --> 00:27:43.990 align:start position:0%
+the solution again is just a power hub
+with<00:27:40.360><c> adequate</c><00:27:40.760><c> power</c><00:27:41.000><c> L</c><00:27:41.799><c> I</c><00:27:41.919><c> recommend</c><00:27:42.279><c> two</c>
+
+00:27:43.990 --> 00:27:44.000 align:start position:0%
+with adequate power L I recommend two
+
+
+00:27:44.000 --> 00:27:48.549 align:start position:0%
+with adequate power L I recommend two
+amps<00:27:45.000><c> oh</c><00:27:45.519><c> just</c><00:27:46.360><c> go</c><00:27:46.559><c> back</c><00:27:46.720><c> one</c><00:27:46.840><c> more</c><00:27:47.480><c> time</c><00:27:48.480><c> this</c>
+
+00:27:48.549 --> 00:27:48.559 align:start position:0%
+amps oh just go back one more time this
+
+
+00:27:48.559 --> 00:27:50.029 align:start position:0%
+amps oh just go back one more time this
+is
+
+00:27:50.029 --> 00:27:50.039 align:start position:0%
+is
+
+
+00:27:50.039 --> 00:27:52.909 align:start position:0%
+is
+the<00:27:51.039><c> yeah</c><00:27:51.360><c> this</c><00:27:51.480><c> is</c><00:27:51.799><c> the</c><00:27:52.200><c> the</c><00:27:52.399><c> Ultimate</c>
+
+00:27:52.909 --> 00:27:52.919 align:start position:0%
+the yeah this is the the Ultimate
+
+
+00:27:52.919 --> 00:27:54.870 align:start position:0%
+the yeah this is the the Ultimate
+Raspberry<00:27:53.519><c> Pie</c><00:27:53.799><c> box</c><00:27:54.120><c> that's</c><00:27:54.240><c> a</c><00:27:54.399><c> raspberry</c>
+
+00:27:54.870 --> 00:27:54.880 align:start position:0%
+Raspberry Pie box that's a raspberry
+
+
+00:27:54.880 --> 00:28:00.310 align:start position:0%
+Raspberry Pie box that's a raspberry
+brulee
+
+00:28:00.310 --> 00:28:00.320 align:start position:0%
+
+
+
+00:28:00.320 --> 00:28:03.310 align:start position:0%
+
+next
+
+00:28:03.310 --> 00:28:03.320 align:start position:0%
+next
+
+
+00:28:03.320 --> 00:28:08.630 align:start position:0%
+next
+um<00:28:04.320><c> I</c><00:28:05.320><c> just</c><00:28:05.480><c> said</c><00:28:06.039><c> that</c>
+
+00:28:08.630 --> 00:28:08.640 align:start position:0%
+um I just said that
+
+
+00:28:08.640 --> 00:28:12.630 align:start position:0%
+um I just said that
+cool<00:28:09.640><c> general</c><00:28:10.000><c> purpose</c><00:28:10.440><c> iio</c><00:28:11.440><c> um</c><00:28:11.679><c> there's</c><00:28:11.960><c> a</c><00:28:12.120><c> 26</c>
+
+00:28:12.630 --> 00:28:12.640 align:start position:0%
+cool general purpose iio um there's a 26
+
+
+00:28:12.640 --> 00:28:15.470 align:start position:0%
+cool general purpose iio um there's a 26
+pin<00:28:12.840><c> header</c><00:28:13.159><c> that</c><00:28:13.360><c> I</c><00:28:13.679><c> mentioned</c><00:28:14.120><c> earlier</c><00:28:15.120><c> and</c>
+
+00:28:15.470 --> 00:28:15.480 align:start position:0%
+pin header that I mentioned earlier and
+
+
+00:28:15.480 --> 00:28:20.070 align:start position:0%
+pin header that I mentioned earlier and
+these<00:28:15.679><c> are</c><00:28:15.919><c> the</c><00:28:16.519><c> signals</c><00:28:17.960><c> available</c><00:28:18.960><c> um</c><00:28:19.760><c> three</c>
+
+00:28:20.070 --> 00:28:20.080 align:start position:0%
+these are the signals available um three
+
+
+00:28:20.080 --> 00:28:21.990 align:start position:0%
+these are the signals available um three
+flavors<00:28:20.720><c> of</c><00:28:20.880><c> Serial</c>
+
+00:28:21.990 --> 00:28:22.000 align:start position:0%
+flavors of Serial
+
+
+00:28:22.000 --> 00:28:25.710 align:start position:0%
+flavors of Serial
+IO<00:28:23.000><c> um</c><00:28:23.240><c> that</c><00:28:23.440><c> cover</c><00:28:23.960><c> the</c><00:28:24.120><c> majority</c><00:28:24.760><c> of</c><00:28:25.200><c> low</c><00:28:25.480><c> and</c>
+
+00:28:25.710 --> 00:28:25.720 align:start position:0%
+IO um that cover the majority of low and
+
+
+00:28:25.720 --> 00:28:28.710 align:start position:0%
+IO um that cover the majority of low and
+high<00:28:26.039><c> speed</c><00:28:26.840><c> peripherals</c><00:28:27.840><c> uh</c><00:28:28.159><c> it</c><00:28:28.360><c> has</c><00:28:28.519><c> a</c>
+
+00:28:28.710 --> 00:28:28.720 align:start position:0%
+high speed peripherals uh it has a
+
+
+00:28:28.720 --> 00:28:32.310 align:start position:0%
+high speed peripherals uh it has a
+regular<00:28:29.120><c> asynchronous</c><00:28:30.399><c> serial</c><00:28:31.399><c> IO</c>
+
+00:28:32.310 --> 00:28:32.320 align:start position:0%
+regular asynchronous serial IO
+
+
+00:28:32.320 --> 00:28:34.430 align:start position:0%
+regular asynchronous serial IO
+connection<00:28:32.960><c> that</c><00:28:33.080><c> you</c><00:28:33.200><c> can</c><00:28:33.480><c> use</c><00:28:34.159><c> there's</c>
+
+00:28:34.430 --> 00:28:34.440 align:start position:0%
+connection that you can use there's
+
+
+00:28:34.440 --> 00:28:36.470 align:start position:0%
+connection that you can use there's
+there's<00:28:34.600><c> full</c><00:28:34.880><c> support</c><00:28:35.279><c> for</c><00:28:35.440><c> it</c><00:28:35.679><c> as</c><00:28:35.799><c> a</c><00:28:36.080><c> Linux</c>
+
+00:28:36.470 --> 00:28:36.480 align:start position:0%
+there's full support for it as a Linux
+
+
+00:28:36.480 --> 00:28:40.029 align:start position:0%
+there's full support for it as a Linux
+console<00:28:36.960><c> for</c><00:28:37.399><c> example</c><00:28:38.399><c> uh</c><00:28:38.559><c> and</c><00:28:38.679><c> then</c><00:28:39.039><c> there's</c>
+
+00:28:40.029 --> 00:28:40.039 align:start position:0%
+console for example uh and then there's
+
+
+00:28:40.039 --> 00:28:44.269 align:start position:0%
+console for example uh and then there's
+general<00:28:40.399><c> purpose</c><00:28:40.799><c> parallel</c><00:28:41.360><c> IO</c><00:28:42.360><c> this</c><00:28:42.519><c> is</c><00:28:43.279><c> a</c>
+
+00:28:44.269 --> 00:28:44.279 align:start position:0%
+general purpose parallel IO this is a
+
+
+00:28:44.279 --> 00:28:46.950 align:start position:0%
+general purpose parallel IO this is a
+accessory<00:28:44.919><c> that</c><00:28:45.039><c> adaa</c><00:28:45.320><c> fruit</c><00:28:45.760><c> cells</c><00:28:46.760><c> just</c>
+
+00:28:46.950 --> 00:28:46.960 align:start position:0%
+accessory that adaa fruit cells just
+
+
+00:28:46.960 --> 00:28:50.350 align:start position:0%
+accessory that adaa fruit cells just
+plugs<00:28:47.279><c> into</c><00:28:47.679><c> a</c><00:28:47.840><c> prototyping</c><00:28:48.679><c> board</c><00:28:49.679><c> and</c><00:28:49.960><c> it's</c>
+
+00:28:50.350 --> 00:28:50.360 align:start position:0%
+plugs into a prototyping board and it's
+
+
+00:28:50.360 --> 00:28:52.990 align:start position:0%
+plugs into a prototyping board and it's
+called<00:28:51.200><c> a</c>
+
+00:28:52.990 --> 00:28:53.000 align:start position:0%
+called a
+
+
+00:28:53.000 --> 00:28:55.549 align:start position:0%
+called a
+cobbler<00:28:54.000><c> raspberry</c><00:28:54.440><c> pie</c>
+
+00:28:55.549 --> 00:28:55.559 align:start position:0%
+cobbler raspberry pie
+
+
+00:28:55.559 --> 00:28:59.350 align:start position:0%
+cobbler raspberry pie
+cobbler<00:28:56.559><c> next</c>
+
+00:28:59.350 --> 00:28:59.360 align:start position:0%
+cobbler next
+
+
+00:28:59.360 --> 00:29:01.750 align:start position:0%
+cobbler next
+more<00:28:59.720><c> iio</c><00:29:00.480><c> and</c><00:29:00.720><c> I</c><00:29:00.960><c> I've</c><00:29:01.120><c> already</c><00:29:01.360><c> mentioned</c>
+
+00:29:01.750 --> 00:29:01.760 align:start position:0%
+more iio and I I've already mentioned
+
+
+00:29:01.760 --> 00:29:04.870 align:start position:0%
+more iio and I I've already mentioned
+that<00:29:02.039><c> the</c><00:29:02.320><c> uh</c><00:29:02.440><c> CSI</c><00:29:03.000><c> camera</c><00:29:03.919><c> there's</c><00:29:04.200><c> also</c>
+
+00:29:04.870 --> 00:29:04.880 align:start position:0%
+that the uh CSI camera there's also
+
+
+00:29:04.880 --> 00:29:08.470 align:start position:0%
+that the uh CSI camera there's also
+actually<00:29:05.240><c> a</c><00:29:05.480><c> second</c><00:29:06.080><c> iPad</c><00:29:06.640><c> C</c><00:29:07.559><c> Port</c><00:29:08.000><c> hiding</c><00:29:08.279><c> out</c>
+
+00:29:08.470 --> 00:29:08.480 align:start position:0%
+actually a second iPad C Port hiding out
+
+
+00:29:08.480 --> 00:29:10.710 align:start position:0%
+actually a second iPad C Port hiding out
+on<00:29:08.640><c> one</c><00:29:08.760><c> of</c><00:29:08.880><c> the</c><00:29:09.000><c> other</c><00:29:09.440><c> connectors</c><00:29:10.440><c> and</c><00:29:10.640><c> there</c>
+
+00:29:10.710 --> 00:29:10.720 align:start position:0%
+on one of the other connectors and there
+
+
+00:29:10.720 --> 00:29:14.789 align:start position:0%
+on one of the other connectors and there
+are<00:29:10.960><c> some</c><00:29:11.600><c> J</c><00:29:11.960><c> JTAG</c><00:29:12.840><c> ports</c><00:29:13.760><c> those</c><00:29:13.919><c> of</c><00:29:14.120><c> you</c><00:29:14.399><c> that</c>
+
+00:29:14.789 --> 00:29:14.799 align:start position:0%
+are some J JTAG ports those of you that
+
+
+00:29:14.799 --> 00:29:18.269 align:start position:0%
+are some J JTAG ports those of you that
+can<00:29:15.000><c> appreciate</c><00:29:15.559><c> what</c><00:29:15.720><c> that</c><00:29:15.880><c> is</c>
+
+00:29:18.269 --> 00:29:18.279 align:start position:0%
+can appreciate what that is
+
+
+00:29:18.279 --> 00:29:22.350 align:start position:0%
+can appreciate what that is
+next<00:29:19.440><c> um</c><00:29:20.440><c> this</c><00:29:20.640><c> goes</c><00:29:20.840><c> over</c><00:29:21.120><c> the</c><00:29:21.320><c> version</c><00:29:21.600><c> two</c>
+
+00:29:22.350 --> 00:29:22.360 align:start position:0%
+next um this goes over the version two
+
+
+00:29:22.360 --> 00:29:24.789 align:start position:0%
+next um this goes over the version two
+changes<00:29:23.360><c> as</c><00:29:23.480><c> I</c><00:29:23.600><c> said</c><00:29:23.799><c> it</c><00:29:24.000><c> D</c><00:29:24.200><c> they</c><00:29:24.320><c> doubled</c><00:29:24.640><c> the</c>
+
+00:29:24.789 --> 00:29:24.799 align:start position:0%
+changes as I said it D they doubled the
+
+
+00:29:24.799 --> 00:29:28.870 align:start position:0%
+changes as I said it D they doubled the
+ram<00:29:25.480><c> to</c><00:29:25.760><c> half</c><00:29:25.960><c> a</c><00:29:26.799><c> gig</c><00:29:27.159><c> for</c><00:29:27.360><c> model</c><00:29:27.600><c> B</c>
+
+00:29:28.870 --> 00:29:28.880 align:start position:0%
+ram to half a gig for model B
+
+
+00:29:28.880 --> 00:29:31.909 align:start position:0%
+ram to half a gig for model B
+uh<00:29:29.039><c> and</c><00:29:29.360><c> corate</c><00:29:29.880><c> from</c><00:29:30.080><c> Model</c><00:29:30.559><c> A</c><00:29:31.559><c> remove</c><00:29:31.840><c> the</c>
+
+00:29:31.909 --> 00:29:31.919 align:start position:0%
+uh and corate from Model A remove the
+
+
+00:29:31.919 --> 00:29:34.909 align:start position:0%
+uh and corate from Model A remove the
+current<00:29:32.159><c> limiting</c><00:29:33.159><c> rearrange</c><00:29:33.600><c> the</c><00:29:33.720><c> gopo</c>
+
+00:29:34.909 --> 00:29:34.919 align:start position:0%
+current limiting rearrange the gopo
+
+
+00:29:34.919 --> 00:29:37.990 align:start position:0%
+current limiting rearrange the gopo
+slightly<00:29:35.919><c> uh</c><00:29:36.519><c> added</c><00:29:36.840><c> the</c><00:29:36.919><c> two</c><00:29:37.080><c> mounting</c><00:29:37.480><c> holes</c>
+
+00:29:37.990 --> 00:29:38.000 align:start position:0%
+slightly uh added the two mounting holes
+
+
+00:29:38.000 --> 00:29:41.149 align:start position:0%
+slightly uh added the two mounting holes
+so<00:29:38.640><c> if</c><00:29:38.840><c> you</c><00:29:39.039><c> see</c><00:29:39.480><c> these</c><00:29:39.679><c> two</c><00:29:39.960><c> holes</c><00:29:40.559><c> you</c><00:29:40.760><c> have</c><00:29:40.960><c> a</c>
+
+00:29:41.149 --> 00:29:41.159 align:start position:0%
+so if you see these two holes you have a
+
+
+00:29:41.159 --> 00:29:45.669 align:start position:0%
+so if you see these two holes you have a
+REV<00:29:41.480><c> two</c><00:29:41.840><c> BO</c><00:29:42.320><c> so</c><00:29:42.559><c> just</c><00:29:43.080><c> two</c><00:29:43.320><c> holes</c><00:29:43.880><c> rev</c><00:29:44.519><c> two</c><00:29:45.519><c> and</c>
+
+00:29:45.669 --> 00:29:45.679 align:start position:0%
+REV two BO so just two holes rev two and
+
+
+00:29:45.679 --> 00:29:48.950 align:start position:0%
+REV two BO so just two holes rev two and
+they<00:29:45.919><c> also</c><00:29:46.360><c> put</c><00:29:46.600><c> in</c><00:29:47.320><c> a</c><00:29:47.559><c> reset</c><00:29:48.279><c> circuit</c><00:29:48.720><c> so</c><00:29:48.880><c> if</c>
+
+00:29:48.950 --> 00:29:48.960 align:start position:0%
+they also put in a reset circuit so if
+
+
+00:29:48.960 --> 00:29:51.470 align:start position:0%
+they also put in a reset circuit so if
+you<00:29:49.080><c> short</c><00:29:49.480><c> these</c><00:29:49.720><c> two</c><00:29:50.600><c> connections</c><00:29:51.200><c> right</c>
+
+00:29:51.470 --> 00:29:51.480 align:start position:0%
+you short these two connections right
+
+
+00:29:51.480 --> 00:29:55.389 align:start position:0%
+you short these two connections right
+here<00:29:52.480><c> uh</c><00:29:52.640><c> it</c><00:29:52.760><c> triggers</c><00:29:53.760><c> reset</c>
+
+00:29:55.389 --> 00:29:55.399 align:start position:0%
+here uh it triggers reset
+
+
+00:29:55.399 --> 00:29:58.029 align:start position:0%
+here uh it triggers reset
+next<00:29:56.399><c> software</c><00:29:57.080><c> there</c><00:29:57.159><c> are</c><00:29:57.279><c> a</c><00:29:57.360><c> lot</c><00:29:57.480><c> of</c><00:29:57.640><c> OS</c>
+
+00:29:58.029 --> 00:29:58.039 align:start position:0%
+next software there are a lot of OS
+
+
+00:29:58.039 --> 00:30:03.029 align:start position:0%
+next software there are a lot of OS
+reports<00:29:58.320><c> in</c><00:29:58.960><c> progress</c><00:29:59.960><c> um</c><00:30:00.360><c> the</c><00:30:00.840><c> most</c><00:30:01.840><c> uh</c><00:30:02.159><c> well</c>
+
+00:30:03.029 --> 00:30:03.039 align:start position:0%
+reports in progress um the most uh well
+
+
+00:30:03.039 --> 00:30:05.669 align:start position:0%
+reports in progress um the most uh well
+supported<00:30:04.039><c> just</c><00:30:04.240><c> out</c><00:30:04.360><c> of</c><00:30:04.519><c> the</c><00:30:04.679><c> box</c><00:30:05.240><c> it</c><00:30:05.440><c> just</c>
+
+00:30:05.669 --> 00:30:05.679 align:start position:0%
+supported just out of the box it just
+
+
+00:30:05.679 --> 00:30:10.190 align:start position:0%
+supported just out of the box it just
+works<00:30:06.679><c> OS</c><00:30:07.360><c> is</c><00:30:07.600><c> a</c><00:30:07.760><c> version</c><00:30:08.000><c> of</c><00:30:08.159><c> Debian</c><00:30:09.000><c> Linux</c><00:30:10.000><c> uh</c>
+
+00:30:10.190 --> 00:30:10.200 align:start position:0%
+works OS is a version of Debian Linux uh
+
+
+00:30:10.200 --> 00:30:13.190 align:start position:0%
+works OS is a version of Debian Linux uh
+it's<00:30:10.519><c> the</c><00:30:10.960><c> uh</c><00:30:11.399><c> code</c><00:30:12.120><c> code</c><00:30:12.399><c> name</c><00:30:12.679><c> a</c><00:30:12.919><c> project</c>
+
+00:30:13.190 --> 00:30:13.200 align:start position:0%
+it's the uh code code name a project
+
+
+00:30:13.200 --> 00:30:16.110 align:start position:0%
+it's the uh code code name a project
+named<00:30:13.640><c> Wheezy</c><00:30:14.279><c> which</c><00:30:14.399><c> is</c><00:30:14.760><c> a</c><00:30:15.519><c> short</c><00:30:15.799><c> for</c>
+
+00:30:16.110 --> 00:30:16.120 align:start position:0%
+named Wheezy which is a short for
+
+
+00:30:16.120 --> 00:30:19.509 align:start position:0%
+named Wheezy which is a short for
+version<00:30:17.120><c> seven</c><00:30:17.799><c> and</c><00:30:18.360><c> I'm</c><00:30:18.440><c> going</c><00:30:18.559><c> to</c><00:30:18.679><c> go</c><00:30:18.840><c> over</c>
+
+00:30:19.509 --> 00:30:19.519 align:start position:0%
+version seven and I'm going to go over
+
+
+00:30:19.519 --> 00:30:25.350 align:start position:0%
+version seven and I'm going to go over
+few<00:30:20.080><c> minutes</c><00:30:21.240><c> uh</c><00:30:22.320><c> the</c><00:30:23.320><c> current</c><00:30:23.640><c> version</c><00:30:24.200><c> is</c><00:30:25.120><c> uh</c>
+
+00:30:25.350 --> 00:30:25.360 align:start position:0%
+few minutes uh the current version is uh
+
+
+00:30:25.360 --> 00:30:28.789 align:start position:0%
+few minutes uh the current version is uh
+dated<00:30:25.720><c> mid</c><00:30:26.279><c> December</c><00:30:27.279><c> of</c><00:30:27.559><c> last</c><00:30:27.760><c> year</c><00:30:28.039><c> here</c><00:30:28.640><c> uh</c>
+
+00:30:28.789 --> 00:30:28.799 align:start position:0%
+dated mid December of last year here uh
+
+
+00:30:28.799 --> 00:30:30.750 align:start position:0%
+dated mid December of last year here uh
+there's<00:30:28.960><c> an</c><00:30:29.120><c> earlier</c><00:30:29.679><c> one</c><00:30:30.279><c> that</c><00:30:30.399><c> uses</c>
+
+00:30:30.750 --> 00:30:30.760 align:start position:0%
+there's an earlier one that uses
+
+
+00:30:30.760 --> 00:30:32.190 align:start position:0%
+there's an earlier one that uses
+software<00:30:31.120><c> floating</c><00:30:31.519><c> Point</c><00:30:31.760><c> emulated</c>
+
+00:30:32.190 --> 00:30:32.200 align:start position:0%
+software floating Point emulated
+
+
+00:30:32.200 --> 00:30:34.350 align:start position:0%
+software floating Point emulated
+floating<00:30:32.559><c> point</c><00:30:33.279><c> that</c><00:30:33.399><c> is</c><00:30:33.600><c> necessary</c><00:30:33.960><c> to</c><00:30:34.120><c> run</c>
+
+00:30:34.350 --> 00:30:34.360 align:start position:0%
+floating point that is necessary to run
+
+
+00:30:34.360 --> 00:30:36.269 align:start position:0%
+floating point that is necessary to run
+Oracle
+
+00:30:36.269 --> 00:30:36.279 align:start position:0%
+Oracle
+
+
+00:30:36.279 --> 00:30:39.990 align:start position:0%
+Oracle
+Java<00:30:37.279><c> the</c><00:30:37.760><c> easy</c><00:30:38.120><c> way</c><00:30:38.240><c> to</c><00:30:38.440><c> get</c><00:30:38.600><c> started</c><00:30:39.519><c> is</c><00:30:39.760><c> with</c>
+
+00:30:39.990 --> 00:30:40.000 align:start position:0%
+Java the easy way to get started is with
+
+
+00:30:40.000 --> 00:30:41.110 align:start position:0%
+Java the easy way to get started is with
+a
+
+00:30:41.110 --> 00:30:41.120 align:start position:0%
+a
+
+
+00:30:41.120 --> 00:30:45.789 align:start position:0%
+a
+pre<00:30:42.120><c> installed</c><00:30:42.880><c> SD</c><00:30:43.279><c> card</c><00:30:44.200><c> you</c><00:30:44.320><c> can</c><00:30:44.519><c> buy</c><00:30:44.919><c> from</c>
+
+00:30:45.789 --> 00:30:45.799 align:start position:0%
+pre installed SD card you can buy from
+
+
+00:30:45.799 --> 00:30:47.789 align:start position:0%
+pre installed SD card you can buy from
+many<00:30:46.080><c> sources</c><00:30:46.760><c> and</c><00:30:47.039><c> uh</c><00:30:47.120><c> we'll</c><00:30:47.320><c> cover</c><00:30:47.559><c> that</c><00:30:47.679><c> in</c>
+
+00:30:47.789 --> 00:30:47.799 align:start position:0%
+many sources and uh we'll cover that in
+
+
+00:30:47.799 --> 00:30:51.630 align:start position:0%
+many sources and uh we'll cover that in
+just<00:30:47.919><c> a</c><00:30:48.360><c> second</c><00:30:49.360><c> um</c><00:30:50.200><c> but</c><00:30:50.360><c> it's</c><00:30:50.559><c> also</c><00:30:51.159><c> very</c><00:30:51.440><c> very</c>
+
+00:30:51.630 --> 00:30:51.640 align:start position:0%
+just a second um but it's also very very
+
+
+00:30:51.640 --> 00:30:54.509 align:start position:0%
+just a second um but it's also very very
+easy<00:30:52.120><c> to</c><00:30:52.360><c> prepare</c><00:30:52.919><c> an</c><00:30:53.120><c> SD</c><00:30:53.440><c> card</c><00:30:53.720><c> for</c><00:30:53.919><c> use</c><00:30:54.360><c> and</c>
+
+00:30:54.509 --> 00:30:54.519 align:start position:0%
+easy to prepare an SD card for use and
+
+
+00:30:54.519 --> 00:30:58.230 align:start position:0%
+easy to prepare an SD card for use and
+on<00:30:54.799><c> Saturday</c><00:30:55.720><c> we'll</c><00:30:56.039><c> have</c><00:30:56.399><c> a</c><00:30:56.600><c> factory</c><00:30:57.440><c> set</c><00:30:57.679><c> up</c>
+
+00:30:58.230 --> 00:30:58.240 align:start position:0%
+on Saturday we'll have a factory set up
+
+
+00:30:58.240 --> 00:31:00.149 align:start position:0%
+on Saturday we'll have a factory set up
+to<00:30:59.000><c> to</c><00:30:59.200><c> do</c>
+
+00:31:00.149 --> 00:31:00.159 align:start position:0%
+to to do
+
+
+00:31:00.159 --> 00:31:01.870 align:start position:0%
+to to do
+that
+
+00:31:01.870 --> 00:31:01.880 align:start position:0%
+that
+
+
+00:31:01.880 --> 00:31:05.269 align:start position:0%
+that
+um<00:31:02.880><c> the</c><00:31:03.159><c> starting</c><00:31:03.559><c> point</c><00:31:03.760><c> for</c>
+
+00:31:05.269 --> 00:31:05.279 align:start position:0%
+um the starting point for
+
+
+00:31:05.279 --> 00:31:10.190 align:start position:0%
+um the starting point for
+beginner<00:31:06.279><c> to</c><00:31:07.279><c> find</c><00:31:07.639><c> the</c><00:31:08.399><c> quick</c><00:31:08.639><c> start</c><00:31:09.200><c> guide</c>
+
+00:31:10.190 --> 00:31:10.200 align:start position:0%
+beginner to find the quick start guide
+
+
+00:31:10.200 --> 00:31:12.430 align:start position:0%
+beginner to find the quick start guide
+find<00:31:10.440><c> your</c><00:31:10.679><c> operating</c><00:31:11.120><c> system</c><00:31:11.519><c> image</c><00:31:12.000><c> for</c>
+
+00:31:12.430 --> 00:31:12.440 align:start position:0%
+find your operating system image for
+
+
+00:31:12.440 --> 00:31:16.470 align:start position:0%
+find your operating system image for
+instructions<00:31:13.200><c> for</c><00:31:14.200><c> not</c><00:31:14.720><c> doing</c><00:31:15.080><c> that</c><00:31:15.840><c> uh</c><00:31:16.080><c> is</c><00:31:16.320><c> at</c>
+
+00:31:16.470 --> 00:31:16.480 align:start position:0%
+instructions for not doing that uh is at
+
+
+00:31:16.480 --> 00:31:19.870 align:start position:0%
+instructions for not doing that uh is at
+the<00:31:16.639><c> download</c><00:31:17.120><c> site</c><00:31:17.960><c> next</c><00:31:18.960><c> okay</c><00:31:19.200><c> resources</c><00:31:19.799><c> I</c>
+
+00:31:19.870 --> 00:31:19.880 align:start position:0%
+the download site next okay resources I
+
+
+00:31:19.880 --> 00:31:21.750 align:start position:0%
+the download site next okay resources I
+think<00:31:20.039><c> I'm</c><00:31:20.679><c> three</c>
+
+00:31:21.750 --> 00:31:21.760 align:start position:0%
+think I'm three
+
+
+00:31:21.760 --> 00:31:26.110 align:start position:0%
+think I'm three
+slides<00:31:23.159><c> um</c><00:31:24.159><c> the</c><00:31:24.559><c> nonprofit</c><00:31:25.240><c> Foundation</c>
+
+00:31:26.110 --> 00:31:26.120 align:start position:0%
+slides um the nonprofit Foundation
+
+
+00:31:26.120 --> 00:31:28.549 align:start position:0%
+slides um the nonprofit Foundation
+that's<00:31:26.360><c> behind</c><00:31:26.679><c> Raspberry</c><00:31:27.200><c> Pi</c>
+
+00:31:28.549 --> 00:31:28.559 align:start position:0%
+that's behind Raspberry Pi
+
+
+00:31:28.559 --> 00:31:31.310 align:start position:0%
+that's behind Raspberry Pi
+um<00:31:29.000><c> is</c><00:31:29.279><c> at</c><00:31:29.519><c> raspberrypi.org</c>
+
+00:31:31.310 --> 00:31:31.320 align:start position:0%
+um is at raspberrypi.org
+
+
+00:31:31.320 --> 00:31:35.870 align:start position:0%
+um is at raspberrypi.org
+and<00:31:32.320><c> that</c><00:31:32.840><c> uh</c><00:31:32.919><c> it</c><00:31:33.080><c> has</c><00:31:33.279><c> a</c><00:31:34.120><c> very</c><00:31:34.360><c> very</c><00:31:34.519><c> good</c><00:31:34.720><c> blog</c>
+
+00:31:35.870 --> 00:31:35.880 align:start position:0%
+and that uh it has a very very good blog
+
+
+00:31:35.880 --> 00:31:40.190 align:start position:0%
+and that uh it has a very very good blog
+site<00:31:36.880><c> uh</c><00:31:37.000><c> a</c><00:31:37.159><c> whole</c><00:31:37.440><c> bunch</c><00:31:37.639><c> of</c><00:31:37.880><c> forums</c><00:31:39.200><c> with</c>
+
+00:31:40.190 --> 00:31:40.200 align:start position:0%
+site uh a whole bunch of forums with
+
+
+00:31:40.200 --> 00:31:43.230 align:start position:0%
+site uh a whole bunch of forums with
+more<00:31:40.399><c> than</c><00:31:40.880><c> 100,000</c><00:31:41.880><c> uh</c><00:31:42.080><c> people</c><00:31:42.519><c> on</c><00:31:42.679><c> the</c>
+
+00:31:43.230 --> 00:31:43.240 align:start position:0%
+more than 100,000 uh people on the
+
+
+00:31:43.240 --> 00:31:48.029 align:start position:0%
+more than 100,000 uh people on the
+forums<00:31:44.279><c> and</c><00:31:45.279><c> uh</c><00:31:45.480><c> just</c><00:31:45.799><c> tons</c><00:31:46.039><c> of</c><00:31:46.600><c> community</c><00:31:47.600><c> uh</c>
+
+00:31:48.029 --> 00:31:48.039 align:start position:0%
+forums and uh just tons of community uh
+
+
+00:31:48.039 --> 00:31:50.350 align:start position:0%
+forums and uh just tons of community uh
+efforts<00:31:48.440><c> that</c><00:31:48.559><c> are</c><00:31:48.760><c> being</c><00:31:49.200><c> uh</c><00:31:49.360><c> published</c>
+
+00:31:50.350 --> 00:31:50.360 align:start position:0%
+efforts that are being uh published
+
+
+00:31:50.360 --> 00:31:54.909 align:start position:0%
+efforts that are being uh published
+there<00:31:50.960><c> and</c><00:31:51.399><c> is</c><00:31:51.720><c> a</c><00:31:52.320><c> very</c><00:31:52.559><c> good</c><00:31:53.159><c> source</c><00:31:54.159><c> uh</c><00:31:54.480><c> of</c>
+
+00:31:54.909 --> 00:31:54.919 align:start position:0%
+there and is a very good source uh of
+
+
+00:31:54.919 --> 00:31:58.870 align:start position:0%
+there and is a very good source uh of
+what's<00:31:55.600><c> happening</c><00:31:56.600><c> the</c><00:31:56.799><c> next</c><00:31:57.240><c> link</c><00:31:58.000><c> is</c><00:31:58.639><c> the</c>
+
+00:31:58.870 --> 00:31:58.880 align:start position:0%
+what's happening the next link is the
+
+
+00:31:58.880 --> 00:32:01.149 align:start position:0%
+what's happening the next link is the
+place<00:31:59.120><c> to</c><00:31:59.320><c> go</c><00:31:59.760><c> for</c><00:32:00.080><c> information</c><00:32:00.960><c> about</c>
+
+00:32:01.149 --> 00:32:01.159 align:start position:0%
+place to go for information about
+
+
+00:32:01.159 --> 00:32:05.750 align:start position:0%
+place to go for information about
+Raspberry<00:32:02.080><c> Pi</c><00:32:03.080><c> uh</c><00:32:03.279><c> the</c><00:32:03.519><c> elinux</c><00:32:04.519><c> um</c><00:32:04.639><c> RPI</c><00:32:05.159><c> Hub</c><00:32:05.519><c> is</c>
+
+00:32:05.750 --> 00:32:05.760 align:start position:0%
+Raspberry Pi uh the elinux um RPI Hub is
+
+
+00:32:05.760 --> 00:32:11.230 align:start position:0%
+Raspberry Pi uh the elinux um RPI Hub is
+a<00:32:06.600><c> Wiki</c><00:32:07.600><c> and</c><00:32:08.399><c> has</c><00:32:09.399><c> vast</c><00:32:10.000><c> quantities</c><00:32:11.000><c> of</c>
+
+00:32:11.230 --> 00:32:11.240 align:start position:0%
+a Wiki and has vast quantities of
+
+
+00:32:11.240 --> 00:32:15.029 align:start position:0%
+a Wiki and has vast quantities of
+reference<00:32:12.159><c> material</c><00:32:13.159><c> and</c><00:32:13.880><c> in</c><00:32:14.039><c> particular</c><00:32:14.919><c> if</c>
+
+00:32:15.029 --> 00:32:15.039 align:start position:0%
+reference material and in particular if
+
+
+00:32:15.039 --> 00:32:17.669 align:start position:0%
+reference material and in particular if
+you're<00:32:15.240><c> interested</c><00:32:15.679><c> in</c><00:32:16.039><c> buying</c><00:32:16.760><c> Raspberry</c><00:32:17.279><c> Pi</c>
+
+00:32:17.669 --> 00:32:17.679 align:start position:0%
+you're interested in buying Raspberry Pi
+
+
+00:32:17.679 --> 00:32:19.710 align:start position:0%
+you're interested in buying Raspberry Pi
+or<00:32:17.919><c> an</c><00:32:18.159><c> accessory</c><00:32:18.600><c> or</c><00:32:18.760><c> something</c><00:32:19.120><c> like</c><00:32:19.320><c> that</c>
+
+00:32:19.710 --> 00:32:19.720 align:start position:0%
+or an accessory or something like that
+
+
+00:32:19.720 --> 00:32:21.990 align:start position:0%
+or an accessory or something like that
+URL<00:32:20.120><c> at</c><00:32:20.240><c> the</c><00:32:20.360><c> bottom</c>
+
+00:32:21.990 --> 00:32:22.000 align:start position:0%
+URL at the bottom
+
+
+00:32:22.000 --> 00:32:24.629 align:start position:0%
+URL at the bottom
+cover<00:32:23.000><c> Publications</c><00:32:23.679><c> there's</c><00:32:23.840><c> a</c><00:32:24.000><c> free</c><00:32:24.240><c> online</c>
+
+00:32:24.629 --> 00:32:24.639 align:start position:0%
+cover Publications there's a free online
+
+
+00:32:24.639 --> 00:32:26.029 align:start position:0%
+cover Publications there's a free online
+magazine<00:32:25.240><c> called</c>
+
+00:32:26.029 --> 00:32:26.039 align:start position:0%
+magazine called
+
+
+00:32:26.039 --> 00:32:28.669 align:start position:0%
+magazine called
+Magpie<00:32:27.039><c> uh</c><00:32:27.159><c> at</c><00:32:27.320><c> that</c><00:32:27.480><c> link</c><00:32:28.240><c> there's</c><00:32:28.480><c> an</c>
+
+00:32:28.669 --> 00:32:28.679 align:start position:0%
+Magpie uh at that link there's an
+
+
+00:32:28.679 --> 00:32:31.230 align:start position:0%
+Magpie uh at that link there's an
+educational<00:32:29.240><c> manual</c><00:32:30.120><c> which</c><00:32:30.360><c> someone</c>
+
+00:32:31.230 --> 00:32:31.240 align:start position:0%
+educational manual which someone
+
+
+00:32:31.240 --> 00:32:33.909 align:start position:0%
+educational manual which someone
+mentioned<00:32:32.240><c> uh</c><00:32:32.360><c> that's</c><00:32:32.600><c> available</c><00:32:33.159><c> and</c><00:32:33.440><c> the</c>
+
+00:32:33.909 --> 00:32:33.919 align:start position:0%
+mentioned uh that's available and the
+
+
+00:32:33.919 --> 00:32:36.230 align:start position:0%
+mentioned uh that's available and the
+the<00:32:34.120><c> URL</c><00:32:34.600><c> is</c><00:32:34.799><c> about</c><00:32:35.080><c> that</c><00:32:35.320><c> wide</c><00:32:35.600><c> so</c><00:32:35.880><c> I</c><00:32:36.000><c> made</c><00:32:36.120><c> a</c>
+
+00:32:36.230 --> 00:32:36.240 align:start position:0%
+the URL is about that wide so I made a
+
+
+00:32:36.240 --> 00:32:38.269 align:start position:0%
+the URL is about that wide so I made a
+tiny<00:32:36.480><c> URL</c><00:32:36.919><c> and</c><00:32:37.039><c> it's</c><00:32:37.240><c> stable</c><00:32:37.639><c> it</c><00:32:37.799><c> points</c><00:32:38.080><c> to</c>
+
+00:32:38.269 --> 00:32:38.279 align:start position:0%
+tiny URL and it's stable it points to
+
+
+00:32:38.279 --> 00:32:40.669 align:start position:0%
+tiny URL and it's stable it points to
+the<00:32:38.440><c> official</c><00:32:39.159><c> it</c><00:32:39.320><c> expands</c><00:32:39.760><c> to</c><00:32:39.919><c> the</c><00:32:40.039><c> official</c>
+
+00:32:40.669 --> 00:32:40.679 align:start position:0%
+the official it expands to the official
+
+
+00:32:40.679 --> 00:32:44.909 align:start position:0%
+the official it expands to the official
+URL<00:32:41.679><c> and</c><00:32:42.159><c> uh</c><00:32:42.279><c> they</c><00:32:42.399><c> are</c><00:32:42.639><c> updating</c><00:32:43.440><c> it</c><00:32:44.440><c> but</c><00:32:44.799><c> uh</c>
+
+00:32:44.909 --> 00:32:44.919 align:start position:0%
+URL and uh they are updating it but uh
+
+
+00:32:44.919 --> 00:32:46.950 align:start position:0%
+URL and uh they are updating it but uh
+you<00:32:45.000><c> can</c><00:32:45.200><c> find</c><00:32:45.399><c> that</c><00:32:45.559><c> educational</c><00:32:46.120><c> man</c><00:32:46.480><c> manual</c>
+
+00:32:46.950 --> 00:32:46.960 align:start position:0%
+you can find that educational man manual
+
+
+00:32:46.960 --> 00:32:50.470 align:start position:0%
+you can find that educational man manual
+with<00:32:47.279><c> Google</c><00:32:47.559><c> in</c><00:32:47.720><c> about</c><00:32:48.200><c> 10</c><00:32:48.840><c> seconds</c><00:32:49.840><c> uh</c>
+
+00:32:50.470 --> 00:32:50.480 align:start position:0%
+with Google in about 10 seconds uh
+
+
+00:32:50.480 --> 00:32:52.909 align:start position:0%
+with Google in about 10 seconds uh
+communities<00:32:51.480><c> there</c><00:32:51.600><c> are</c><00:32:52.120><c> uh</c><00:32:52.320><c> a</c><00:32:52.440><c> ton</c><00:32:52.639><c> of</c>
+
+00:32:52.909 --> 00:32:52.919 align:start position:0%
+communities there are uh a ton of
+
+
+00:32:52.919 --> 00:32:57.509 align:start position:0%
+communities there are uh a ton of
+communities<00:32:53.639><c> listed</c><00:32:54.519><c> at</c><00:32:54.960><c> the</c><00:32:55.639><c> U</c><00:32:56.600><c> the</c><00:32:56.720><c> elinux</c>
+
+00:32:57.509 --> 00:32:57.519 align:start position:0%
+communities listed at the U the elinux
+
+
+00:32:57.519 --> 00:33:03.070 align:start position:0%
+communities listed at the U the elinux
+wiki<00:32:58.200><c> site</c><00:32:59.440><c> and</c><00:33:00.440><c> uh</c><00:33:00.840><c> also</c><00:33:01.639><c> via</c><00:33:02.240><c> the</c><00:33:02.600><c> raspberry</c>
+
+00:33:03.070 --> 00:33:03.080 align:start position:0%
+wiki site and uh also via the raspberry
+
+
+00:33:03.080 --> 00:33:05.230 align:start position:0%
+wiki site and uh also via the raspberry
+p.org
+
+00:33:05.230 --> 00:33:05.240 align:start position:0%
+p.org
+
+
+00:33:05.240 --> 00:33:08.509 align:start position:0%
+p.org
+site<00:33:06.240><c> here</c><00:33:06.360><c> are</c><00:33:06.480><c> a</c><00:33:06.600><c> few</c><00:33:07.159><c> books</c><00:33:08.159><c> I've</c><00:33:08.320><c> heard</c>
+
+00:33:08.509 --> 00:33:08.519 align:start position:0%
+site here are a few books I've heard
+
+
+00:33:08.519 --> 00:33:10.870 align:start position:0%
+site here are a few books I've heard
+that<00:33:08.720><c> top</c><00:33:08.960><c> one</c><00:33:09.120><c> is</c><00:33:09.360><c> really</c><00:33:10.039><c> popular</c><00:33:10.519><c> oh</c><00:33:10.720><c> there</c>
+
+00:33:10.870 --> 00:33:10.880 align:start position:0%
+that top one is really popular oh there
+
+
+00:33:10.880 --> 00:33:12.789 align:start position:0%
+that top one is really popular oh there
+it
+
+00:33:12.789 --> 00:33:12.799 align:start position:0%
+it
+
+
+00:33:12.799 --> 00:33:16.629 align:start position:0%
+it
+is<00:33:13.799><c> we'll</c><00:33:13.960><c> be</c><00:33:14.120><c> giving</c><00:33:14.799><c> away</c><00:33:15.799><c> two</c><00:33:16.120><c> copies</c><00:33:16.440><c> of</c>
+
+00:33:16.629 --> 00:33:16.639 align:start position:0%
+is we'll be giving away two copies of
+
+
+00:33:16.639 --> 00:33:18.629 align:start position:0%
+is we'll be giving away two copies of
+this<00:33:17.000><c> courtesy</c><00:33:17.600><c> of</c><00:33:17.840><c> the</c>
+
+00:33:18.629 --> 00:33:18.639 align:start position:0%
+this courtesy of the
+
+
+00:33:18.639 --> 00:33:22.750 align:start position:0%
+this courtesy of the
+publisher<00:33:19.639><c> uh</c><00:33:20.120><c> at</c><00:33:20.240><c> the</c><00:33:20.360><c> end</c><00:33:20.519><c> of</c><00:33:20.720><c> the</c><00:33:21.760><c> session</c>
+
+00:33:22.750 --> 00:33:22.760 align:start position:0%
+publisher uh at the end of the session
+
+
+00:33:22.760 --> 00:33:26.230 align:start position:0%
+publisher uh at the end of the session
+um<00:33:23.159><c> the</c><00:33:23.519><c> next</c><00:33:23.720><c> one</c><00:33:24.200><c> uh</c><00:33:24.320><c> was</c><00:33:24.480><c> written</c><00:33:24.880><c> by</c><00:33:25.720><c> uh</c><00:33:26.120><c> one</c>
+
+00:33:26.230 --> 00:33:26.240 align:start position:0%
+um the next one uh was written by uh one
+
+
+00:33:26.240 --> 00:33:29.789 align:start position:0%
+um the next one uh was written by uh one
+of<00:33:26.320><c> the</c><00:33:26.519><c> creators</c><00:33:27.200><c> uh</c><00:33:28.000><c> Upton</c><00:33:28.840><c> and</c><00:33:28.960><c> is</c><00:33:29.120><c> a</c><00:33:29.320><c> good</c>
+
+00:33:29.789 --> 00:33:29.799 align:start position:0%
+of the creators uh Upton and is a good
+
+
+00:33:29.799 --> 00:33:32.669 align:start position:0%
+of the creators uh Upton and is a good
+starting<00:33:30.240><c> point</c><00:33:31.000><c> but</c><00:33:31.200><c> really</c><00:33:31.799><c> if</c><00:33:31.919><c> you</c><00:33:32.159><c> search</c>
+
+00:33:32.669 --> 00:33:32.679 align:start position:0%
+starting point but really if you search
+
+
+00:33:32.679 --> 00:33:35.470 align:start position:0%
+starting point but really if you search
+Amazon<00:33:33.320><c> and</c><00:33:33.519><c> Barnes</c><00:33:33.799><c> &</c><00:33:33.960><c> Noble</c><00:33:34.720><c> you'll</c><00:33:34.919><c> see</c>
+
+00:33:35.470 --> 00:33:35.480 align:start position:0%
+Amazon and Barnes & Noble you'll see
+
+
+00:33:35.480 --> 00:33:39.669 align:start position:0%
+Amazon and Barnes & Noble you'll see
+dozens<00:33:36.480><c> of</c><00:33:36.679><c> books</c><00:33:37.519><c> that</c><00:33:37.880><c> that</c><00:33:38.399><c> that</c><00:33:38.559><c> go</c><00:33:38.720><c> into</c>
+
+00:33:39.669 --> 00:33:39.679 align:start position:0%
+dozens of books that that that go into
+
+
+00:33:39.679 --> 00:33:44.629 align:start position:0%
+dozens of books that that that go into
+different
+
+00:33:44.629 --> 00:33:44.639 align:start position:0%
+
+
+
+00:33:44.639 --> 00:33:48.629 align:start position:0%
+
+specializations<00:33:46.000><c> and</c><00:33:47.000><c> here's</c><00:33:47.519><c> the</c><00:33:48.399><c> how</c><00:33:48.519><c> do</c>
+
+00:33:48.629 --> 00:33:48.639 align:start position:0%
+specializations and here's the how do
+
+
+00:33:48.639 --> 00:33:49.590 align:start position:0%
+specializations and here's the how do
+you<00:33:48.840><c> get</c>
+
+00:33:49.590 --> 00:33:49.600 align:start position:0%
+you get
+
+
+00:33:49.600 --> 00:33:52.310 align:start position:0%
+you get
+started<00:33:50.760><c> so</c>
+
+00:33:52.310 --> 00:33:52.320 align:start position:0%
+started so
+
+
+00:33:52.320 --> 00:33:57.830 align:start position:0%
+started so
+you<00:33:53.720><c> um</c><00:33:54.720><c> insert</c><00:33:55.159><c> your</c><00:33:55.360><c> SD</c><00:33:55.799><c> card</c>
+
+00:33:57.830 --> 00:33:57.840 align:start position:0%
+you um insert your SD card
+
+
+00:33:57.840 --> 00:34:02.789 align:start position:0%
+you um insert your SD card
+you<00:33:58.480><c> connect</c><00:33:58.799><c> the</c><00:33:59.080><c> display</c><00:34:00.080><c> either</c><00:34:00.960><c> RCA</c><00:34:01.480><c> or</c>
+
+00:34:02.789 --> 00:34:02.799 align:start position:0%
+you connect the display either RCA or
+
+
+00:34:02.799 --> 00:34:06.789 align:start position:0%
+you connect the display either RCA or
+HDMI<00:34:03.799><c> connect</c><00:34:04.399><c> the</c><00:34:05.039><c> USB</c><00:34:05.519><c> C</c><00:34:05.960><c> keyboard</c><00:34:06.240><c> and</c>
+
+00:34:06.789 --> 00:34:06.799 align:start position:0%
+HDMI connect the USB C keyboard and
+
+
+00:34:06.799 --> 00:34:09.430 align:start position:0%
+HDMI connect the USB C keyboard and
+mouse<00:34:07.799><c> connect</c><00:34:08.119><c> the</c>
+
+00:34:09.430 --> 00:34:09.440 align:start position:0%
+mouse connect the
+
+
+00:34:09.440 --> 00:34:12.310 align:start position:0%
+mouse connect the
+network<00:34:10.440><c> turn</c><00:34:10.639><c> on</c><00:34:10.839><c> the</c>
+
+00:34:12.310 --> 00:34:12.320 align:start position:0%
+network turn on the
+
+
+00:34:12.320 --> 00:34:14.909 align:start position:0%
+network turn on the
+power<00:34:13.320><c> and</c><00:34:14.000><c> that's</c>
+
+00:34:14.909 --> 00:34:14.919 align:start position:0%
+power and that's
+
+
+00:34:14.919 --> 00:34:17.750 align:start position:0%
+power and that's
+it
+
+00:34:17.750 --> 00:34:17.760 align:start position:0%
+it
+
+
+00:34:17.760 --> 00:34:24.109 align:start position:0%
+it
+next<00:34:18.760><c> so</c><00:34:19.079><c> that'll</c><00:34:19.359><c> turn</c><00:34:19.520><c> it</c><00:34:19.679><c> over</c><00:34:20.240><c> to</c><00:34:21.240><c> Alan</c>
+
+00:34:24.109 --> 00:34:24.119 align:start position:0%
+
+
+
+00:34:24.119 --> 00:34:28.589 align:start position:0%
+
+and<00:34:25.119><c> if</c><00:34:25.560><c> you</c><00:34:26.560><c> push</c><00:34:26.879><c> that</c><00:34:27.079><c> button</c>
+
+00:34:28.589 --> 00:34:28.599 align:start position:0%
+and if you push that button
+
+
+00:34:28.599 --> 00:34:38.909 align:start position:0%
+and if you push that button
+mute<00:34:29.599><c> muted</c>
+
+00:34:38.909 --> 00:34:38.919 align:start position:0%
+
+
+
+00:34:38.919 --> 00:34:46.349 align:start position:0%
+
+now<00:34:39.919><c> on</c>
+
+00:34:46.349 --> 00:34:46.359 align:start position:0%
+
+
+
+00:34:46.359 --> 00:34:48.310 align:start position:0%
+
+your<00:34:47.359><c> mic</c>
+
+00:34:48.310 --> 00:34:48.320 align:start position:0%
+your mic
+
+
+00:34:48.320 --> 00:34:51.909 align:start position:0%
+your mic
+check<00:34:49.320><c> is</c><00:34:49.399><c> that</c><00:34:49.760><c> okay</c><00:34:50.320><c> oh</c><00:34:50.480><c> yeah</c>
+
+00:34:51.909 --> 00:34:51.919 align:start position:0%
+check is that okay oh yeah
+
+
+00:34:51.919 --> 00:34:56.630 align:start position:0%
+check is that okay oh yeah
+cool
+
+00:34:56.630 --> 00:34:56.640 align:start position:0%
+
+
+
+00:34:56.640 --> 00:35:00.110 align:start position:0%
+
+so<00:34:57.680><c> start</c><00:34:57.800><c> a</c><00:34:57.880><c> slow</c><00:34:58.040><c> clap</c><00:34:58.320><c> repeat</c><00:34:58.640><c> that</c><00:34:58.720><c> was</c>
+
+00:35:00.110 --> 00:35:00.120 align:start position:0%
+so start a slow clap repeat that was
+
+
+00:35:00.120 --> 00:35:03.470 align:start position:0%
+so start a slow clap repeat that was
+[Applause]
+
+00:35:03.470 --> 00:35:03.480 align:start position:0%
+
+
+
+00:35:03.480 --> 00:35:05.430 align:start position:0%
+
+awesome<00:35:04.480><c> that's</c><00:35:04.720><c> enough</c><00:35:04.920><c> it</c><00:35:05.000><c> wasn't</c><00:35:05.240><c> that</c>
+
+00:35:05.430 --> 00:35:05.440 align:start position:0%
+awesome that's enough it wasn't that
+
+
+00:35:05.440 --> 00:35:07.230 align:start position:0%
+awesome that's enough it wasn't that
+great<00:35:05.800><c> it</c><00:35:05.960><c> was</c>
+
+00:35:07.230 --> 00:35:07.240 align:start position:0%
+great it was
+
+
+00:35:07.240 --> 00:35:09.990 align:start position:0%
+great it was
+okay<00:35:08.240><c> um</c><00:35:08.680><c> so</c><00:35:08.920><c> thank</c><00:35:09.079><c> you</c><00:35:09.200><c> guys</c><00:35:09.320><c> for</c><00:35:09.480><c> coming</c><00:35:09.680><c> out</c>
+
+00:35:09.990 --> 00:35:10.000 align:start position:0%
+okay um so thank you guys for coming out
+
+
+00:35:10.000 --> 00:35:12.510 align:start position:0%
+okay um so thank you guys for coming out
+my<00:35:10.119><c> name</c><00:35:10.320><c> is</c><00:35:10.520><c> Alan</c><00:35:10.839><c> diaper</c><00:35:11.480><c> and</c><00:35:12.079><c> I</c><00:35:12.240><c> and</c><00:35:12.400><c> the</c>
+
+00:35:12.510 --> 00:35:12.520 align:start position:0%
+my name is Alan diaper and I and the
+
+
+00:35:12.520 --> 00:35:13.870 align:start position:0%
+my name is Alan diaper and I and the
+rest<00:35:12.640><c> of</c><00:35:12.800><c> these</c><00:35:12.920><c> folks</c><00:35:13.160><c> are</c><00:35:13.280><c> from</c><00:35:13.400><c> a</c><00:35:13.560><c> place</c>
+
+00:35:13.870 --> 00:35:13.880 align:start position:0%
+rest of these folks are from a place
+
+
+00:35:13.880 --> 00:35:16.510 align:start position:0%
+rest of these folks are from a place
+called<00:35:14.320><c> Splat</c><00:35:14.760><c> space</c><00:35:15.240><c> which</c><00:35:15.480><c> is</c><00:35:15.720><c> a</c><00:35:16.079><c> haacker</c>
+
+00:35:16.510 --> 00:35:16.520 align:start position:0%
+called Splat space which is a haacker
+
+
+00:35:16.520 --> 00:35:19.109 align:start position:0%
+called Splat space which is a haacker
+space<00:35:17.359><c> maker</c><00:35:17.800><c> space</c><00:35:18.280><c> allar</c><00:35:18.520><c> around</c><00:35:18.800><c> cool</c>
+
+00:35:19.109 --> 00:35:19.119 align:start position:0%
+space maker space allar around cool
+
+
+00:35:19.119 --> 00:35:22.069 align:start position:0%
+space maker space allar around cool
+place<00:35:19.520><c> in</c><00:35:19.800><c> Dura</c><00:35:20.720><c> and</c><00:35:21.119><c> um</c><00:35:21.680><c> one</c><00:35:21.760><c> of</c><00:35:21.800><c> the</c><00:35:21.880><c> things</c>
+
+00:35:22.069 --> 00:35:22.079 align:start position:0%
+place in Dura and um one of the things
+
+
+00:35:22.079 --> 00:35:23.550 align:start position:0%
+place in Dura and um one of the things
+we<00:35:22.200><c> do</c><00:35:22.359><c> there</c><00:35:22.520><c> is</c><00:35:22.640><c> fiddle</c><00:35:23.000><c> with</c><00:35:23.200><c> the</c><00:35:23.320><c> latest</c>
+
+00:35:23.550 --> 00:35:23.560 align:start position:0%
+we do there is fiddle with the latest
+
+
+00:35:23.560 --> 00:35:24.990 align:start position:0%
+we do there is fiddle with the latest
+and<00:35:23.680><c> greatest</c><00:35:24.040><c> new</c><00:35:24.200><c> technologies</c><00:35:24.800><c> and</c>
+
+00:35:24.990 --> 00:35:25.000 align:start position:0%
+and greatest new technologies and
+
+
+00:35:25.000 --> 00:35:27.470 align:start position:0%
+and greatest new technologies and
+Raspberry<00:35:25.480><c> Pi</c><00:35:26.079><c> certainly</c><00:35:26.520><c> qualifies</c><00:35:27.200><c> as</c><00:35:27.359><c> one</c>
+
+00:35:27.470 --> 00:35:27.480 align:start position:0%
+Raspberry Pi certainly qualifies as one
+
+
+00:35:27.480 --> 00:35:31.390 align:start position:0%
+Raspberry Pi certainly qualifies as one
+of<00:35:28.119><c> those</c><00:35:29.119><c> quick</c><00:35:29.480><c> show</c><00:35:29.800><c> of</c><00:35:30.000><c> hands</c><00:35:30.599><c> who</c><00:35:30.920><c> has</c>
+
+00:35:31.390 --> 00:35:31.400 align:start position:0%
+of those quick show of hands who has
+
+
+00:35:31.400 --> 00:35:33.910 align:start position:0%
+of those quick show of hands who has
+written<00:35:31.760><c> a</c><00:35:31.920><c> computer</c><00:35:32.480><c> program</c>
+
+00:35:33.910 --> 00:35:33.920 align:start position:0%
+written a computer program
+
+
+00:35:33.920 --> 00:35:36.470 align:start position:0%
+written a computer program
+before<00:35:34.920><c> keep</c><00:35:35.240><c> that</c><00:35:35.440><c> up</c><00:35:35.720><c> if</c><00:35:35.839><c> you</c><00:35:36.000><c> learned</c><00:35:36.359><c> how</c>
+
+00:35:36.470 --> 00:35:36.480 align:start position:0%
+before keep that up if you learned how
+
+
+00:35:36.480 --> 00:35:39.109 align:start position:0%
+before keep that up if you learned how
+to<00:35:36.680><c> program</c><00:35:37.119><c> on</c><00:35:37.359><c> one</c><00:35:37.599><c> of</c><00:35:38.200><c> the</c><00:35:38.359><c> Vic</c><00:35:38.599><c> 20</c><00:35:39.000><c> the</c>
+
+00:35:39.109 --> 00:35:39.119 align:start position:0%
+to program on one of the Vic 20 the
+
+
+00:35:39.119 --> 00:35:42.430 align:start position:0%
+to program on one of the Vic 20 the
+congro<00:35:39.560><c> 64</c><00:35:40.240><c> the</c><00:35:40.359><c> Apple</c><00:35:40.599><c> 2</c><00:35:40.920><c> or</c><00:35:41.160><c> any</c><00:35:41.440><c> Apple</c><00:35:42.320><c> you</c>
+
+00:35:42.430 --> 00:35:42.440 align:start position:0%
+congro 64 the Apple 2 or any Apple you
+
+
+00:35:42.440 --> 00:35:46.829 align:start position:0%
+congro 64 the Apple 2 or any Apple you
+know<00:35:42.599><c> back</c><00:35:42.760><c> when</c><00:35:42.880><c> they</c><00:35:42.960><c> were</c><00:35:43.280><c> good</c><00:35:44.280><c> and</c><00:35:44.920><c> um</c>
+
+00:35:46.829 --> 00:35:46.839 align:start position:0%
+know back when they were good and um
+
+
+00:35:46.839 --> 00:35:50.750 align:start position:0%
+know back when they were good and um
+800<00:35:47.920><c> 360</c><00:35:48.920><c> yeah</c><00:35:49.680><c> anybody</c><00:35:50.000><c> learn</c><00:35:50.280><c> you</c><00:35:50.359><c> learn</c><00:35:50.680><c> out</c>
+
+00:35:50.750 --> 00:35:50.760 align:start position:0%
+800 360 yeah anybody learn you learn out
+
+
+00:35:50.760 --> 00:35:53.589 align:start position:0%
+800 360 yeah anybody learn you learn out
+of<00:35:51.000><c> 360</c><00:35:51.640><c> yeah</c><00:35:51.839><c> yeah</c><00:35:52.000><c> ANM</c><00:35:52.760><c> sure</c><00:35:53.000><c> assembly</c>
+
+00:35:53.589 --> 00:35:53.599 align:start position:0%
+of 360 yeah yeah ANM sure assembly
+
+
+00:35:53.599 --> 00:35:56.270 align:start position:0%
+of 360 yeah yeah ANM sure assembly
+assembly<00:35:54.240><c> language</c><00:35:55.240><c> got</c><00:35:55.359><c> a</c><00:35:55.440><c> few</c><00:35:55.560><c> of</c><00:35:55.720><c> those</c>
+
+00:35:56.270 --> 00:35:56.280 align:start position:0%
+assembly language got a few of those
+
+
+00:35:56.280 --> 00:35:58.630 align:start position:0%
+assembly language got a few of those
+hands<00:35:56.520><c> for</c><00:35:56.800><c> those</c><00:35:57.440><c> wow</c>
+
+00:35:58.630 --> 00:35:58.640 align:start position:0%
+hands for those wow
+
+
+00:35:58.640 --> 00:36:00.270 align:start position:0%
+hands for those wow
+so<00:35:59.040><c> I'm</c><00:35:59.240><c> I'm</c><00:35:59.400><c> happy</c><00:35:59.560><c> to</c><00:35:59.720><c> announce</c><00:36:00.040><c> you</c><00:36:00.160><c> guys</c>
+
+00:36:00.270 --> 00:36:00.280 align:start position:0%
+so I'm I'm happy to announce you guys
+
+
+00:36:00.280 --> 00:36:01.990 align:start position:0%
+so I'm I'm happy to announce you guys
+that<00:36:00.400><c> computers</c><00:36:00.760><c> have</c><00:36:00.880><c> gotten</c><00:36:01.079><c> a</c><00:36:01.200><c> lot</c><00:36:01.400><c> smaller</c>
+
+00:36:01.990 --> 00:36:02.000 align:start position:0%
+that computers have gotten a lot smaller
+
+
+00:36:02.000 --> 00:36:04.950 align:start position:0%
+that computers have gotten a lot smaller
+and<00:36:02.200><c> one</c><00:36:02.560><c> of</c><00:36:03.560><c> one</c><00:36:03.680><c> of</c><00:36:03.880><c> those</c><00:36:04.160><c> is</c><00:36:04.319><c> the</c><00:36:04.440><c> Raspberry</c>
+
+00:36:04.950 --> 00:36:04.960 align:start position:0%
+and one of one of those is the Raspberry
+
+
+00:36:04.960 --> 00:36:07.550 align:start position:0%
+and one of one of those is the Raspberry
+Pi<00:36:05.319><c> so</c><00:36:05.760><c> myself</c><00:36:06.160><c> I'm</c><00:36:06.280><c> a</c><00:36:06.440><c> computer</c><00:36:06.800><c> programmer</c>
+
+00:36:07.550 --> 00:36:07.560 align:start position:0%
+Pi so myself I'm a computer programmer
+
+
+00:36:07.560 --> 00:36:10.190 align:start position:0%
+Pi so myself I'm a computer programmer
+and<00:36:08.000><c> um</c><00:36:08.800><c> one</c><00:36:08.920><c> of</c><00:36:09.000><c> the</c><00:36:09.160><c> pieces</c><00:36:09.440><c> of</c><00:36:09.760><c> Hardware</c>
+
+00:36:10.190 --> 00:36:10.200 align:start position:0%
+and um one of the pieces of Hardware
+
+
+00:36:10.200 --> 00:36:11.630 align:start position:0%
+and um one of the pieces of Hardware
+that<00:36:10.400><c> that</c><00:36:10.560><c> came</c><00:36:10.720><c> out</c><00:36:10.880><c> fairly</c><00:36:11.160><c> recently</c><00:36:11.520><c> is</c>
+
+00:36:11.630 --> 00:36:11.640 align:start position:0%
+that that came out fairly recently is
+
+
+00:36:11.640 --> 00:36:13.630 align:start position:0%
+that that came out fairly recently is
+the<00:36:11.760><c> Arduino</c><00:36:12.359><c> and</c><00:36:12.520><c> I</c><00:36:12.760><c> suspect</c><00:36:13.119><c> a</c><00:36:13.200><c> lot</c><00:36:13.319><c> of</c><00:36:13.400><c> folks</c>
+
+00:36:13.630 --> 00:36:13.640 align:start position:0%
+the Arduino and I suspect a lot of folks
+
+
+00:36:13.640 --> 00:36:17.030 align:start position:0%
+the Arduino and I suspect a lot of folks
+in<00:36:13.760><c> this</c><00:36:13.920><c> room</c><00:36:14.599><c> have</c><00:36:15.200><c> arduinos</c><00:36:16.200><c> and</c><00:36:16.560><c> arduinos</c>
+
+00:36:17.030 --> 00:36:17.040 align:start position:0%
+in this room have arduinos and arduinos
+
+
+00:36:17.040 --> 00:36:19.349 align:start position:0%
+in this room have arduinos and arduinos
+are<00:36:17.160><c> certainly</c><00:36:17.599><c> an</c><00:36:17.760><c> awesome</c><00:36:18.400><c> if</c><00:36:18.520><c> not</c><00:36:18.800><c> radical</c>
+
+00:36:19.349 --> 00:36:19.359 align:start position:0%
+are certainly an awesome if not radical
+
+
+00:36:19.359 --> 00:36:21.710 align:start position:0%
+are certainly an awesome if not radical
+piece<00:36:19.520><c> of</c><00:36:19.760><c> technology</c><00:36:20.760><c> but</c><00:36:21.200><c> uh</c><00:36:21.359><c> the</c>
+
+00:36:21.710 --> 00:36:21.720 align:start position:0%
+piece of technology but uh the
+
+
+00:36:21.720 --> 00:36:23.829 align:start position:0%
+piece of technology but uh the
+development<00:36:22.359><c> process</c><00:36:22.720><c> for</c><00:36:22.920><c> an</c><00:36:23.079><c> arduo</c><00:36:23.640><c> is</c>
+
+00:36:23.829 --> 00:36:23.839 align:start position:0%
+development process for an arduo is
+
+
+00:36:23.839 --> 00:36:26.109 align:start position:0%
+development process for an arduo is
+actually<00:36:24.079><c> fairly</c><00:36:24.520><c> convoluted</c><00:36:25.520><c> namely</c><00:36:26.000><c> you</c>
+
+00:36:26.109 --> 00:36:26.119 align:start position:0%
+actually fairly convoluted namely you
+
+
+00:36:26.119 --> 00:36:29.670 align:start position:0%
+actually fairly convoluted namely you
+need<00:36:26.319><c> to</c><00:36:26.640><c> have</c><00:36:26.960><c> a</c><00:36:27.160><c> PC</c><00:36:27.680><c> a</c><00:36:27.839><c> real</c><00:36:28.280><c> computer</c><00:36:29.280><c> to</c><00:36:29.480><c> do</c>
+
+00:36:29.670 --> 00:36:29.680 align:start position:0%
+need to have a PC a real computer to do
+
+
+00:36:29.680 --> 00:36:31.589 align:start position:0%
+need to have a PC a real computer to do
+work<00:36:29.920><c> on</c><00:36:30.040><c> an</c><00:36:30.160><c> Arduino</c><00:36:30.680><c> you</c><00:36:30.839><c> can't</c><00:36:31.160><c> program</c>
+
+00:36:31.589 --> 00:36:31.599 align:start position:0%
+work on an Arduino you can't program
+
+
+00:36:31.599 --> 00:36:34.349 align:start position:0%
+work on an Arduino you can't program
+directly<00:36:31.960><c> on</c><00:36:32.119><c> the</c><00:36:32.240><c> Arduino</c><00:36:33.079><c> and</c><00:36:33.240><c> in</c><00:36:33.440><c> fact</c><00:36:34.240><c> uh</c>
+
+00:36:34.349 --> 00:36:34.359 align:start position:0%
+directly on the Arduino and in fact uh
+
+
+00:36:34.359 --> 00:36:36.710 align:start position:0%
+directly on the Arduino and in fact uh
+about<00:36:34.520><c> a</c><00:36:34.680><c> year</c><00:36:34.839><c> and</c><00:36:34.960><c> a</c><00:36:35.079><c> half</c><00:36:35.319><c> ago</c><00:36:35.880><c> I</c><00:36:36.280><c> myself</c><00:36:36.560><c> and</c>
+
+00:36:36.710 --> 00:36:36.720 align:start position:0%
+about a year and a half ago I myself and
+
+
+00:36:36.720 --> 00:36:40.230 align:start position:0%
+about a year and a half ago I myself and
+another<00:36:36.960><c> friend</c><00:36:37.240><c> became</c><00:36:37.520><c> so</c><00:36:38.160><c> uh</c><00:36:39.079><c> uh</c><00:36:39.880><c> annoyed</c>
+
+00:36:40.230 --> 00:36:40.240 align:start position:0%
+another friend became so uh uh annoyed
+
+
+00:36:40.240 --> 00:36:41.750 align:start position:0%
+another friend became so uh uh annoyed
+at<00:36:40.400><c> this</c><00:36:40.520><c> that</c><00:36:40.640><c> we</c><00:36:40.800><c> tried</c><00:36:41.040><c> to</c><00:36:41.200><c> write</c><00:36:41.440><c> a</c><00:36:41.560><c> high</c>
+
+00:36:41.750 --> 00:36:41.760 align:start position:0%
+at this that we tried to write a high
+
+
+00:36:41.760 --> 00:36:43.030 align:start position:0%
+at this that we tried to write a high
+level<00:36:42.000><c> programming</c><00:36:42.440><c> language</c><00:36:42.800><c> that</c><00:36:42.880><c> would</c>
+
+00:36:43.030 --> 00:36:43.040 align:start position:0%
+level programming language that would
+
+
+00:36:43.040 --> 00:36:44.870 align:start position:0%
+level programming language that would
+run<00:36:43.280><c> on</c><00:36:43.599><c> directly</c><00:36:43.880><c> on</c><00:36:44.040><c> the</c><00:36:44.119><c> Arduino</c><00:36:44.680><c> and</c><00:36:44.800><c> it</c>
+
+00:36:44.870 --> 00:36:44.880 align:start position:0%
+run on directly on the Arduino and it
+
+
+00:36:44.880 --> 00:36:46.430 align:start position:0%
+run on directly on the Arduino and it
+was<00:36:45.040><c> a</c><00:36:45.200><c> just</c><00:36:45.319><c> a</c><00:36:45.440><c> miserable</c><00:36:45.839><c> failure</c><00:36:46.200><c> so</c><00:36:46.359><c> it</c>
+
+00:36:46.430 --> 00:36:46.440 align:start position:0%
+was a just a miserable failure so it
+
+
+00:36:46.440 --> 00:36:48.349 align:start position:0%
+was a just a miserable failure so it
+wasn't<00:36:46.800><c> possible</c><00:36:47.400><c> the</c><00:36:47.480><c> Arduino</c><00:36:47.920><c> certainly</c><00:36:48.200><c> is</c>
+
+00:36:48.349 --> 00:36:48.359 align:start position:0%
+wasn't possible the Arduino certainly is
+
+
+00:36:48.359 --> 00:36:49.710 align:start position:0%
+wasn't possible the Arduino certainly is
+fun<00:36:48.640><c> and</c><00:36:48.720><c> it's</c><00:36:48.920><c> still</c><00:36:49.160><c> cheaper</c><00:36:49.520><c> than</c><00:36:49.640><c> the</c>
+
+00:36:49.710 --> 00:36:49.720 align:start position:0%
+fun and it's still cheaper than the
+
+
+00:36:49.720 --> 00:36:51.349 align:start position:0%
+fun and it's still cheaper than the
+Raspberry<00:36:50.160><c> Pi</c><00:36:50.359><c> and</c><00:36:50.520><c> still</c><00:36:50.640><c> a</c><00:36:50.760><c> great</c><00:36:51.000><c> platform</c>
+
+00:36:51.349 --> 00:36:51.359 align:start position:0%
+Raspberry Pi and still a great platform
+
+
+00:36:51.359 --> 00:36:53.870 align:start position:0%
+Raspberry Pi and still a great platform
+for<00:36:51.480><c> a</c><00:36:51.640><c> lot</c><00:36:51.760><c> of</c><00:36:51.920><c> stuff</c><00:36:52.839><c> um</c><00:36:53.119><c> but</c><00:36:53.440><c> you</c><00:36:53.599><c> can't</c>
+
+00:36:53.870 --> 00:36:53.880 align:start position:0%
+for a lot of stuff um but you can't
+
+
+00:36:53.880 --> 00:36:55.470 align:start position:0%
+for a lot of stuff um but you can't
+develop<00:36:54.280><c> on</c><00:36:54.440><c> it</c><00:36:54.640><c> it</c><00:36:54.800><c> requires</c><00:36:55.200><c> another</c>
+
+00:36:55.470 --> 00:36:55.480 align:start position:0%
+develop on it it requires another
+
+
+00:36:55.480 --> 00:36:56.950 align:start position:0%
+develop on it it requires another
+computer<00:36:56.280><c> and</c><00:36:56.400><c> I</c><00:36:56.480><c> think</c><00:36:56.640><c> from</c><00:36:56.800><c> the</c>
+
+00:36:56.950 --> 00:36:56.960 align:start position:0%
+computer and I think from the
+
+
+00:36:56.960 --> 00:36:59.630 align:start position:0%
+computer and I think from the
+perspective<00:36:57.359><c> of</c><00:36:57.680><c> people</c><00:36:58.599><c> uh</c><00:36:59.000><c> learning</c><00:36:59.400><c> to</c>
+
+00:36:59.630 --> 00:36:59.640 align:start position:0%
+perspective of people uh learning to
+
+
+00:36:59.640 --> 00:37:00.990 align:start position:0%
+perspective of people uh learning to
+program<00:37:00.040><c> it's</c><00:37:00.240><c> really</c><00:37:00.480><c> important</c><00:37:00.880><c> that</c>
+
+00:37:00.990 --> 00:37:01.000 align:start position:0%
+program it's really important that
+
+
+00:37:01.000 --> 00:37:03.790 align:start position:0%
+program it's really important that
+you're<00:37:01.200><c> able</c><00:37:01.480><c> to</c><00:37:01.800><c> to</c><00:37:02.240><c> interactively</c><00:37:03.200><c> program</c>
+
+00:37:03.790 --> 00:37:03.800 align:start position:0%
+you're able to to interactively program
+
+
+00:37:03.800 --> 00:37:05.589 align:start position:0%
+you're able to to interactively program
+on<00:37:04.200><c> whatever</c><00:37:04.520><c> it</c><00:37:04.599><c> is</c><00:37:04.720><c> you're</c><00:37:04.920><c> programming</c><00:37:05.280><c> for</c>
+
+00:37:05.589 --> 00:37:05.599 align:start position:0%
+on whatever it is you're programming for
+
+
+00:37:05.599 --> 00:37:07.630 align:start position:0%
+on whatever it is you're programming for
+that's<00:37:05.720><c> how</c><00:37:05.839><c> we</c><00:37:05.960><c> learn</c><00:37:06.680><c> I'm</c><00:37:06.880><c> I'm</c><00:37:07.000><c> hesitant</c><00:37:07.359><c> to</c>
+
+00:37:07.630 --> 00:37:07.640 align:start position:0%
+that's how we learn I'm I'm hesitant to
+
+
+00:37:07.640 --> 00:37:09.829 align:start position:0%
+that's how we learn I'm I'm hesitant to
+to<00:37:08.440><c> tell</c><00:37:08.720><c> people</c><00:37:08.920><c> to</c><00:37:09.040><c> learn</c><00:37:09.280><c> how</c><00:37:09.359><c> to</c><00:37:09.520><c> program</c>
+
+00:37:09.829 --> 00:37:09.839 align:start position:0%
+to tell people to learn how to program
+
+
+00:37:09.839 --> 00:37:11.910 align:start position:0%
+to tell people to learn how to program
+in<00:37:10.000><c> ways</c><00:37:10.240><c> that</c><00:37:10.359><c> I</c><00:37:10.480><c> did</c><00:37:10.680><c> not</c><00:37:11.280><c> but</c><00:37:11.440><c> I</c><00:37:11.599><c> definitely</c>
+
+00:37:11.910 --> 00:37:11.920 align:start position:0%
+in ways that I did not but I definitely
+
+
+00:37:11.920 --> 00:37:13.109 align:start position:0%
+in ways that I did not but I definitely
+know<00:37:12.119><c> there</c><00:37:12.200><c> were</c><00:37:12.359><c> a</c><00:37:12.440><c> lot</c><00:37:12.520><c> of</c><00:37:12.640><c> late</c><00:37:12.880><c> nights</c>
+
+00:37:13.109 --> 00:37:13.119 align:start position:0%
+know there were a lot of late nights
+
+
+00:37:13.119 --> 00:37:14.309 align:start position:0%
+know there were a lot of late nights
+where<00:37:13.240><c> it</c><00:37:13.319><c> was</c><00:37:13.440><c> me</c><00:37:13.599><c> in</c><00:37:13.720><c> the</c><00:37:13.839><c> computer</c>
+
+00:37:14.309 --> 00:37:14.319 align:start position:0%
+where it was me in the computer
+
+
+00:37:14.319 --> 00:37:16.230 align:start position:0%
+where it was me in the computer
+interacting<00:37:15.280><c> and</c><00:37:15.480><c> that's</c><00:37:15.800><c> that's</c><00:37:16.000><c> just</c><00:37:16.160><c> how</c>
+
+00:37:16.230 --> 00:37:16.240 align:start position:0%
+interacting and that's that's just how
+
+
+00:37:16.240 --> 00:37:18.150 align:start position:0%
+interacting and that's that's just how
+you<00:37:16.400><c> learn</c><00:37:16.839><c> and</c><00:37:17.200><c> the</c><00:37:17.319><c> most</c><00:37:17.520><c> exciting</c><00:37:17.880><c> thing</c><00:37:18.000><c> to</c>
+
+00:37:18.150 --> 00:37:18.160 align:start position:0%
+you learn and the most exciting thing to
+
+
+00:37:18.160 --> 00:37:20.030 align:start position:0%
+you learn and the most exciting thing to
+me<00:37:18.280><c> about</c><00:37:18.440><c> the</c><00:37:18.560><c> Raspberry</c><00:37:19.000><c> Pi</c><00:37:19.640><c> is</c><00:37:19.800><c> that</c><00:37:19.920><c> it</c>
+
+00:37:20.030 --> 00:37:20.040 align:start position:0%
+me about the Raspberry Pi is that it
+
+
+00:37:20.040 --> 00:37:21.550 align:start position:0%
+me about the Raspberry Pi is that it
+makes<00:37:20.280><c> that</c><00:37:20.440><c> level</c><00:37:20.680><c> of</c><00:37:20.800><c> interaction</c>
+
+00:37:21.550 --> 00:37:21.560 align:start position:0%
+makes that level of interaction
+
+
+00:37:21.560 --> 00:37:23.790 align:start position:0%
+makes that level of interaction
+incredibly<00:37:22.560><c> affordable</c><00:37:23.119><c> for</c><00:37:23.400><c> pretty</c><00:37:23.599><c> much</c>
+
+00:37:23.790 --> 00:37:23.800 align:start position:0%
+incredibly affordable for pretty much
+
+
+00:37:23.800 --> 00:37:28.069 align:start position:0%
+incredibly affordable for pretty much
+anybody<00:37:24.160><c> to</c><00:37:24.359><c> get</c><00:37:24.520><c> into</c><00:37:25.599><c> so</c><00:37:26.599><c> um</c><00:37:27.520><c> Pete</c><00:37:27.960><c> uh</c>
+
+00:37:28.069 --> 00:37:28.079 align:start position:0%
+anybody to get into so um Pete uh
+
+
+00:37:28.079 --> 00:37:30.230 align:start position:0%
+anybody to get into so um Pete uh
+intimated<00:37:28.720><c> that</c><00:37:28.960><c> the</c><00:37:29.119><c> Raspberry</c><00:37:29.640><c> Pi</c><00:37:30.000><c> comes</c>
+
+00:37:30.230 --> 00:37:30.240 align:start position:0%
+intimated that the Raspberry Pi comes
+
+
+00:37:30.240 --> 00:37:33.470 align:start position:0%
+intimated that the Raspberry Pi comes
+loaded<00:37:30.599><c> with</c><00:37:30.920><c> scratch</c><00:37:31.920><c> uh</c><00:37:32.079><c> scratch</c><00:37:32.839><c> is</c><00:37:33.200><c> a</c>
+
+00:37:33.470 --> 00:37:33.480 align:start position:0%
+loaded with scratch uh scratch is a
+
+
+00:37:33.480 --> 00:37:35.510 align:start position:0%
+loaded with scratch uh scratch is a
+development<00:37:34.040><c> environment</c><00:37:35.040><c> uh</c><00:37:35.200><c> that</c><00:37:35.280><c> was</c>
+
+00:37:35.510 --> 00:37:35.520 align:start position:0%
+development environment uh that was
+
+
+00:37:35.520 --> 00:37:38.309 align:start position:0%
+development environment uh that was
+developed<00:37:36.079><c> by</c><00:37:36.640><c> the</c><00:37:36.760><c> media</c><00:37:37.119><c> lab</c><00:37:37.359><c> at</c><00:37:37.520><c> MIT</c><00:37:38.160><c> it's</c>
+
+00:37:38.309 --> 00:37:38.319 align:start position:0%
+developed by the media lab at MIT it's
+
+
+00:37:38.319 --> 00:37:40.430 align:start position:0%
+developed by the media lab at MIT it's
+based<00:37:38.560><c> on</c><00:37:38.800><c> squeak</c><00:37:39.280><c> or</c><00:37:39.680><c> just</c><00:37:39.839><c> a</c><00:37:40.000><c> kind</c><00:37:40.079><c> of</c><00:37:40.200><c> small</c>
+
+00:37:40.430 --> 00:37:40.440 align:start position:0%
+based on squeak or just a kind of small
+
+
+00:37:40.440 --> 00:37:42.150 align:start position:0%
+based on squeak or just a kind of small
+talk<00:37:40.640><c> but</c><00:37:40.720><c> it</c><00:37:40.800><c> doesn't</c><00:37:41.040><c> matter</c><00:37:41.280><c> anyway</c><00:37:41.560><c> it's</c><00:37:41.640><c> a</c>
+
+00:37:42.150 --> 00:37:42.160 align:start position:0%
+talk but it doesn't matter anyway it's a
+
+
+00:37:42.160 --> 00:37:45.069 align:start position:0%
+talk but it doesn't matter anyway it's a
+cool<00:37:43.160><c> uh</c><00:37:43.560><c> IDE</c><00:37:44.119><c> that's</c><00:37:44.319><c> incredibly</c><00:37:44.760><c> easy</c><00:37:44.960><c> to</c>
+
+00:37:45.069 --> 00:37:45.079 align:start position:0%
+cool uh IDE that's incredibly easy to
+
+
+00:37:45.079 --> 00:37:47.109 align:start position:0%
+cool uh IDE that's incredibly easy to
+use<00:37:45.240><c> and</c><00:37:45.400><c> it's</c><00:37:45.599><c> extremely</c><00:37:46.040><c> visual</c><00:37:46.720><c> it</c><00:37:46.839><c> comes</c>
+
+00:37:47.109 --> 00:37:47.119 align:start position:0%
+use and it's extremely visual it comes
+
+
+00:37:47.119 --> 00:37:49.349 align:start position:0%
+use and it's extremely visual it comes
+loaded<00:37:47.520><c> on</c><00:37:47.760><c> many</c><00:37:48.040><c> of</c><00:37:48.240><c> the</c><00:37:48.560><c> operating</c><00:37:49.000><c> system</c>
+
+00:37:49.349 --> 00:37:49.359 align:start position:0%
+loaded on many of the operating system
+
+
+00:37:49.359 --> 00:37:51.190 align:start position:0%
+loaded on many of the operating system
+distributions<00:37:50.280><c> uh</c><00:37:50.359><c> for</c><00:37:50.560><c> the</c><00:37:50.680><c> Raspberry</c><00:37:51.040><c> p</c>
+
+00:37:51.190 --> 00:37:51.200 align:start position:0%
+distributions uh for the Raspberry p
+
+
+00:37:51.200 --> 00:37:52.589 align:start position:0%
+distributions uh for the Raspberry p
+including<00:37:51.560><c> the</c><00:37:51.680><c> official</c><00:37:51.960><c> one</c><00:37:52.240><c> from</c><00:37:52.480><c> the</c>
+
+00:37:52.589 --> 00:37:52.599 align:start position:0%
+including the official one from the
+
+
+00:37:52.599 --> 00:37:54.910 align:start position:0%
+including the official one from the
+Raspberry<00:37:53.079><c> Pi</c><00:37:53.359><c> foundation</c><00:37:54.359><c> so</c><00:37:54.599><c> one</c><00:37:54.680><c> of</c><00:37:54.800><c> the</c>
+
+00:37:54.910 --> 00:37:54.920 align:start position:0%
+Raspberry Pi foundation so one of the
+
+
+00:37:54.920 --> 00:37:56.670 align:start position:0%
+Raspberry Pi foundation so one of the
+things<00:37:55.160><c> I</c><00:37:55.280><c> hope</c><00:37:55.480><c> to</c><00:37:55.560><c> do</c><00:37:55.720><c> for</c><00:37:55.880><c> you</c><00:37:56.040><c> guys</c><00:37:56.240><c> tonight</c>
+
+00:37:56.670 --> 00:37:56.680 align:start position:0%
+things I hope to do for you guys tonight
+
+
+00:37:56.680 --> 00:37:58.710 align:start position:0%
+things I hope to do for you guys tonight
+is<00:37:56.920><c> introduce</c><00:37:57.599><c> to</c><00:37:57.720><c> scratch</c><00:37:58.040><c> and</c><00:37:58.160><c> show</c><00:37:58.359><c> you</c><00:37:58.520><c> how</c>
+
+00:37:58.710 --> 00:37:58.720 align:start position:0%
+is introduce to scratch and show you how
+
+
+00:37:58.720 --> 00:38:00.510 align:start position:0%
+is introduce to scratch and show you how
+easy<00:37:58.960><c> and</c><00:37:59.160><c> fun</c><00:37:59.440><c> it</c><00:37:59.520><c> is</c><00:37:59.640><c> to</c><00:37:59.839><c> write</c><00:38:00.119><c> computer</c>
+
+00:38:00.510 --> 00:38:00.520 align:start position:0%
+easy and fun it is to write computer
+
+
+00:38:00.520 --> 00:38:02.589 align:start position:0%
+easy and fun it is to write computer
+programs<00:38:01.440><c> with</c><00:38:01.599><c> scratch</c><00:38:02.119><c> scratch</c><00:38:02.440><c> is</c>
+
+00:38:02.589 --> 00:38:02.599 align:start position:0%
+programs with scratch scratch is
+
+
+00:38:02.599 --> 00:38:04.990 align:start position:0%
+programs with scratch scratch is
+absolutely<00:38:03.040><c> cool</c><00:38:03.960><c> before</c><00:38:04.280><c> I</c><00:38:04.440><c> do</c><00:38:04.640><c> that</c><00:38:04.839><c> though</c>
+
+00:38:04.990 --> 00:38:05.000 align:start position:0%
+absolutely cool before I do that though
+
+
+00:38:05.000 --> 00:38:06.670 align:start position:0%
+absolutely cool before I do that though
+I<00:38:05.079><c> wanted</c><00:38:05.280><c> to</c><00:38:05.480><c> dig</c><00:38:05.640><c> in</c><00:38:05.800><c> a</c><00:38:05.920><c> little</c><00:38:06.119><c> more</c><00:38:06.280><c> on</c><00:38:06.560><c> how</c>
+
+00:38:06.670 --> 00:38:06.680 align:start position:0%
+I wanted to dig in a little more on how
+
+
+00:38:06.680 --> 00:38:09.790 align:start position:0%
+I wanted to dig in a little more on how
+you<00:38:06.800><c> develop</c><00:38:07.240><c> software</c><00:38:08.040><c> for</c><00:38:08.839><c> other</c><00:38:09.440><c> using</c>
+
+00:38:09.790 --> 00:38:09.800 align:start position:0%
+you develop software for other using
+
+
+00:38:09.800 --> 00:38:11.390 align:start position:0%
+you develop software for other using
+other<00:38:10.000><c> programming</c><00:38:10.400><c> languages</c><00:38:10.960><c> on</c><00:38:11.280><c> the</c>
+
+00:38:11.390 --> 00:38:11.400 align:start position:0%
+other programming languages on the
+
+
+00:38:11.400 --> 00:38:15.510 align:start position:0%
+other programming languages on the
+Raspberry<00:38:12.119><c> Pi</c><00:38:13.119><c> uh</c><00:38:13.920><c> so</c><00:38:14.160><c> it</c><00:38:14.319><c> being</c><00:38:14.720><c> a</c><00:38:14.960><c> full-blown</c>
+
+00:38:15.510 --> 00:38:15.520 align:start position:0%
+Raspberry Pi uh so it being a full-blown
+
+
+00:38:15.520 --> 00:38:18.270 align:start position:0%
+Raspberry Pi uh so it being a full-blown
+Linux<00:38:15.839><c> machine</c><00:38:16.160><c> you</c><00:38:16.280><c> can</c><00:38:16.400><c> do</c><00:38:16.720><c> any</c><00:38:16.920><c> manner</c><00:38:17.319><c> of</c><00:38:17.599><c> C</c>
+
+00:38:18.270 --> 00:38:18.280 align:start position:0%
+Linux machine you can do any manner of C
+
+
+00:38:18.280 --> 00:38:21.190 align:start position:0%
+Linux machine you can do any manner of C
+C++<00:38:19.280><c> pretty</c><00:38:19.480><c> much</c><00:38:19.680><c> any</c><00:38:20.240><c> compiled</c><00:38:20.720><c> language</c><00:38:21.079><c> or</c>
+
+00:38:21.190 --> 00:38:21.200 align:start position:0%
+C++ pretty much any compiled language or
+
+
+00:38:21.200 --> 00:38:22.670 align:start position:0%
+C++ pretty much any compiled language or
+even<00:38:21.480><c> interpreted</c><00:38:22.000><c> language</c><00:38:22.359><c> that</c><00:38:22.440><c> you're</c>
+
+00:38:22.670 --> 00:38:22.680 align:start position:0%
+even interpreted language that you're
+
+
+00:38:22.680 --> 00:38:24.670 align:start position:0%
+even interpreted language that you're
+used<00:38:22.920><c> to</c><00:38:23.079><c> developing</c><00:38:23.560><c> with</c><00:38:23.839><c> on</c><00:38:24.200><c> some</c><00:38:24.400><c> kind</c><00:38:24.520><c> of</c>
+
+00:38:24.670 --> 00:38:24.680 align:start position:0%
+used to developing with on some kind of
+
+
+00:38:24.680 --> 00:38:27.109 align:start position:0%
+used to developing with on some kind of
+Unix<00:38:25.079><c> will</c><00:38:25.319><c> probably</c><00:38:25.720><c> work</c><00:38:26.359><c> on</c><00:38:26.520><c> the</c><00:38:26.640><c> Raspberry</c>
+
+00:38:27.109 --> 00:38:27.119 align:start position:0%
+Unix will probably work on the Raspberry
+
+
+00:38:27.119 --> 00:38:30.470 align:start position:0%
+Unix will probably work on the Raspberry
+Pi<00:38:27.520><c> so</c><00:38:27.640><c> you</c><00:38:27.720><c> can</c><00:38:28.040><c> all</c><00:38:28.200><c> that</c><00:38:28.400><c> all</c><00:38:28.520><c> that</c><00:38:28.920><c> works</c>
+
+00:38:30.470 --> 00:38:30.480 align:start position:0%
+Pi so you can all that all that works
+
+
+00:38:30.480 --> 00:38:33.670 align:start position:0%
+Pi so you can all that all that works
+um<00:38:31.480><c> professionally</c><00:38:32.079><c> I</c><00:38:32.160><c> do</c><00:38:32.359><c> a</c><00:38:32.440><c> lot</c><00:38:32.599><c> of</c><00:38:32.880><c> jbm</c><00:38:33.440><c> or</c>
+
+00:38:33.670 --> 00:38:33.680 align:start position:0%
+um professionally I do a lot of jbm or
+
+
+00:38:33.680 --> 00:38:36.309 align:start position:0%
+um professionally I do a lot of jbm or
+Java<00:38:34.359><c> closure</c><00:38:34.880><c> Scala</c><00:38:35.319><c> jrv</c><00:38:36.000><c> kind</c><00:38:36.119><c> of</c>
+
+00:38:36.309 --> 00:38:36.319 align:start position:0%
+Java closure Scala jrv kind of
+
+
+00:38:36.319 --> 00:38:39.069 align:start position:0%
+Java closure Scala jrv kind of
+development<00:38:37.319><c> uh</c><00:38:37.440><c> so</c><00:38:37.640><c> for</c><00:38:37.839><c> me</c><00:38:38.560><c> the</c><00:38:38.720><c> cool</c><00:38:38.920><c> thing</c>
+
+00:38:39.069 --> 00:38:39.079 align:start position:0%
+development uh so for me the cool thing
+
+
+00:38:39.079 --> 00:38:40.910 align:start position:0%
+development uh so for me the cool thing
+about<00:38:39.240><c> the</c><00:38:39.359><c> raspber</c><00:38:39.839><c> pi</c><00:38:40.079><c> is</c><00:38:40.240><c> that</c><00:38:40.400><c> Oracle</c>
+
+00:38:40.910 --> 00:38:40.920 align:start position:0%
+about the raspber pi is that Oracle
+
+
+00:38:40.920 --> 00:38:42.390 align:start position:0%
+about the raspber pi is that Oracle
+distributes<00:38:41.480><c> a</c><00:38:41.599><c> version</c><00:38:41.880><c> of</c><00:38:42.000><c> the</c><00:38:42.119><c> Java</c>
+
+00:38:42.390 --> 00:38:42.400 align:start position:0%
+distributes a version of the Java
+
+
+00:38:42.400 --> 00:38:44.550 align:start position:0%
+distributes a version of the Java
+virtual<00:38:42.760><c> machine</c><00:38:43.480><c> that</c><00:38:43.680><c> runs</c><00:38:44.119><c> on</c><00:38:44.440><c> the</c>
+
+00:38:44.550 --> 00:38:44.560 align:start position:0%
+virtual machine that runs on the
+
+
+00:38:44.560 --> 00:38:46.150 align:start position:0%
+virtual machine that runs on the
+Raspberry<00:38:45.040><c> Pi</c><00:38:45.200><c> and</c><00:38:45.319><c> actually</c><00:38:45.640><c> they'</c><00:38:45.920><c> they've</c>
+
+00:38:46.150 --> 00:38:46.160 align:start position:0%
+Raspberry Pi and actually they' they've
+
+
+00:38:46.160 --> 00:38:48.069 align:start position:0%
+Raspberry Pi and actually they' they've
+dedicated<00:38:46.680><c> they</c><00:38:46.800><c> have</c><00:38:47.040><c> staff</c><00:38:47.480><c> dedicated</c><00:38:47.920><c> to</c>
+
+00:38:48.069 --> 00:38:48.079 align:start position:0%
+dedicated they have staff dedicated to
+
+
+00:38:48.079 --> 00:38:50.430 align:start position:0%
+dedicated they have staff dedicated to
+improving<00:38:48.480><c> and</c><00:38:48.680><c> maintaining</c><00:38:49.680><c> this</c><00:38:49.920><c> version</c>
+
+00:38:50.430 --> 00:38:50.440 align:start position:0%
+improving and maintaining this version
+
+
+00:38:50.440 --> 00:38:53.589 align:start position:0%
+improving and maintaining this version
+of<00:38:50.720><c> the</c><00:38:50.839><c> jbm</c><00:38:51.520><c> so</c><00:38:52.119><c> Oracle</c><00:38:52.560><c> has</c><00:38:52.760><c> invested</c><00:38:53.359><c> in</c><00:38:53.440><c> a</c>
+
+00:38:53.589 --> 00:38:53.599 align:start position:0%
+of the jbm so Oracle has invested in a
+
+
+00:38:53.599 --> 00:38:55.670 align:start position:0%
+of the jbm so Oracle has invested in a
+sense<00:38:53.960><c> in</c><00:38:54.119><c> in</c><00:38:54.240><c> the</c><00:38:54.359><c> Raspberry</c><00:38:54.800><c> Pi</c><00:38:55.000><c> and</c><00:38:55.079><c> the</c><00:38:55.200><c> jbm</c>
+
+00:38:55.670 --> 00:38:55.680 align:start position:0%
+sense in in the Raspberry Pi and the jbm
+
+
+00:38:55.680 --> 00:38:57.950 align:start position:0%
+sense in in the Raspberry Pi and the jbm
+they<00:38:55.839><c> make</c><00:38:56.000><c> for</c><00:38:56.160><c> it</c><00:38:56.280><c> is</c><00:38:56.480><c> good</c><00:38:57.119><c> um</c><00:38:57.520><c> do</c><00:38:57.680><c> need</c><00:38:57.800><c> to</c>
+
+00:38:57.950 --> 00:38:57.960 align:start position:0%
+they make for it is good um do need to
+
+
+00:38:57.960 --> 00:39:00.829 align:start position:0%
+they make for it is good um do need to
+make<00:38:58.119><c> sure</c><00:38:58.359><c> to</c><00:38:58.599><c> install</c><00:38:59.480><c> the</c><00:38:59.720><c> soft</c><00:39:00.119><c> float</c>
+
+00:39:00.829 --> 00:39:00.839 align:start position:0%
+make sure to install the soft float
+
+
+00:39:00.839 --> 00:39:04.190 align:start position:0%
+make sure to install the soft float
+version<00:39:01.520><c> of</c><00:39:02.240><c> uh</c><00:39:03.119><c> uh</c><00:39:03.280><c> rasbian</c><00:39:03.880><c> which</c><00:39:03.960><c> is</c><00:39:04.079><c> the</c>
+
+00:39:04.190 --> 00:39:04.200 align:start position:0%
+version of uh uh rasbian which is the
+
+
+00:39:04.200 --> 00:39:05.190 align:start position:0%
+version of uh uh rasbian which is the
+Linux
+
+00:39:05.190 --> 00:39:05.200 align:start position:0%
+Linux
+
+
+00:39:05.200 --> 00:39:09.349 align:start position:0%
+Linux
+yes<00:39:06.200><c> just</c>
+
+00:39:09.349 --> 00:39:09.359 align:start position:0%
+
+
+
+00:39:09.359 --> 00:39:18.069 align:start position:0%
+
+released<00:39:10.359><c> early</c><00:39:10.760><c> access</c><00:39:11.599><c> I</c><00:39:11.720><c> gotta</c>
+
+00:39:18.069 --> 00:39:18.079 align:start position:0%
+
+
+
+00:39:18.079 --> 00:39:21.270 align:start position:0%
+
+go<00:39:19.079><c> oh</c><00:39:19.280><c> that's</c>
+
+00:39:21.270 --> 00:39:21.280 align:start position:0%
+go oh that's
+
+
+00:39:21.280 --> 00:39:25.950 align:start position:0%
+go oh that's
+awesome<00:39:22.280><c> that</c><00:39:22.359><c> is</c><00:39:23.319><c> mind-blowingly</c>
+
+00:39:25.950 --> 00:39:25.960 align:start position:0%
+awesome that is mind-blowingly
+
+
+00:39:25.960 --> 00:39:30.430 align:start position:0%
+awesome that is mind-blowingly
+epic<00:39:26.960><c> wow</c><00:39:27.560><c> wow</c><00:39:27.839><c> thank</c><00:39:28.000><c> you</c><00:39:28.599><c> yes</c><00:39:29.319><c> um</c><00:39:29.560><c> a</c><00:39:30.160><c> today</c>
+
+00:39:30.430 --> 00:39:30.440 align:start position:0%
+epic wow wow thank you yes um a today
+
+
+00:39:30.440 --> 00:39:33.150 align:start position:0%
+epic wow wow thank you yes um a today
+was<00:39:30.560><c> a</c><00:39:30.680><c> new</c><00:39:30.880><c> zero</c>
+
+00:39:33.150 --> 00:39:33.160 align:start position:0%
+was a new zero
+
+
+00:39:33.160 --> 00:39:37.990 align:start position:0%
+was a new zero
+day<00:39:34.160><c> so</c><00:39:34.880><c> I</c><00:39:35.000><c> don't</c><00:39:35.240><c> know</c>
+
+00:39:37.990 --> 00:39:38.000 align:start position:0%
+
+
+
+00:39:38.000 --> 00:39:40.910 align:start position:0%
+
+that<00:39:39.000><c> in</c><00:39:39.160><c> mind</c><00:39:39.760><c> that's</c><00:39:40.000><c> actually</c><00:39:40.319><c> really</c><00:39:40.800><c> I'm</c>
+
+00:39:40.910 --> 00:39:40.920 align:start position:0%
+that in mind that's actually really I'm
+
+
+00:39:40.920 --> 00:39:42.150 align:start position:0%
+that in mind that's actually really I'm
+sorry<00:39:41.160><c> to</c><00:39:41.280><c> hear</c><00:39:41.400><c> that</c><00:39:41.560><c> because</c><00:39:41.760><c> much</c><00:39:41.880><c> of</c><00:39:42.040><c> my</c>
+
+00:39:42.150 --> 00:39:42.160 align:start position:0%
+sorry to hear that because much of my
+
+
+00:39:42.160 --> 00:39:43.990 align:start position:0%
+sorry to hear that because much of my
+mission<00:39:42.480><c> critical</c><00:39:42.920><c> Cloud</c><00:39:43.240><c> infrastructure</c><00:39:43.800><c> is</c>
+
+00:39:43.990 --> 00:39:44.000 align:start position:0%
+mission critical Cloud infrastructure is
+
+
+00:39:44.000 --> 00:39:46.109 align:start position:0%
+mission critical Cloud infrastructure is
+Raspberry<00:39:44.400><c> Pi</c>
+
+00:39:46.109 --> 00:39:46.119 align:start position:0%
+Raspberry Pi
+
+
+00:39:46.119 --> 00:39:48.950 align:start position:0%
+Raspberry Pi
+based<00:39:47.119><c> that's</c>
+
+00:39:48.950 --> 00:39:48.960 align:start position:0%
+based that's
+
+
+00:39:48.960 --> 00:39:51.950 align:start position:0%
+based that's
+worrisome<00:39:49.960><c> rry</c>
+
+00:39:51.950 --> 00:39:51.960 align:start position:0%
+worrisome rry
+
+
+00:39:51.960 --> 00:39:56.349 align:start position:0%
+worrisome rry
+PI<00:39:53.200><c> right</c><00:39:54.200><c> anyway</c><00:39:55.000><c> thank</c><00:39:55.160><c> you</c><00:39:55.520><c> the</c><00:39:55.720><c> uh</c><00:39:55.839><c> the</c><00:39:55.920><c> RAS</c>
+
+00:39:56.349 --> 00:39:56.359 align:start position:0%
+PI right anyway thank you the uh the RAS
+
+
+00:39:56.359 --> 00:39:59.270 align:start position:0%
+PI right anyway thank you the uh the RAS
+Pi<00:39:56.560><c> runs</c><00:39:56.960><c> Java</c><00:39:57.640><c> maybe</c><00:39:58.160><c> a</c><00:39:58.280><c> fly</c><00:39:58.720><c> flaw</c><00:39:59.000><c> and</c><00:39:59.079><c> easy</c>
+
+00:39:59.270 --> 00:39:59.280 align:start position:0%
+Pi runs Java maybe a fly flaw and easy
+
+
+00:39:59.280 --> 00:40:00.589 align:start position:0%
+Pi runs Java maybe a fly flaw and easy
+to<00:39:59.440><c> hack</c><00:39:59.599><c> versions</c><00:39:59.839><c> of</c><00:39:59.960><c> java</c><00:40:00.200><c> yes</c><00:40:00.359><c> another</c>
+
+00:40:00.589 --> 00:40:00.599 align:start position:0%
+to hack versions of java yes another
+
+
+00:40:00.599 --> 00:40:03.069 align:start position:0%
+to hack versions of java yes another
+question<00:40:01.240><c> is</c><00:40:01.760><c> the</c><00:40:01.920><c> Oracle</c><00:40:02.359><c> version</c><00:40:02.599><c> of</c><00:40:02.760><c> java</c>
+
+00:40:03.069 --> 00:40:03.079 align:start position:0%
+question is the Oracle version of java
+
+
+00:40:03.079 --> 00:40:06.150 align:start position:0%
+question is the Oracle version of java
+the<00:40:03.200><c> only</c><00:40:03.520><c> Java</c><00:40:04.000><c> that</c><00:40:04.480><c> that</c><00:40:04.560><c> can</c><00:40:04.720><c> run</c><00:40:04.880><c> on</c><00:40:05.160><c> arm</c>
+
+00:40:06.150 --> 00:40:06.160 align:start position:0%
+the only Java that that can run on arm
+
+
+00:40:06.160 --> 00:40:07.510 align:start position:0%
+the only Java that that can run on arm
+uh<00:40:06.319><c> the</c><00:40:06.440><c> question</c><00:40:06.760><c> was</c><00:40:06.960><c> is</c><00:40:07.079><c> the</c><00:40:07.200><c> Oracle</c>
+
+00:40:07.510 --> 00:40:07.520 align:start position:0%
+uh the question was is the Oracle
+
+
+00:40:07.520 --> 00:40:09.309 align:start position:0%
+uh the question was is the Oracle
+version<00:40:07.839><c> the</c><00:40:07.920><c> only</c><00:40:08.200><c> version</c><00:40:08.440><c> that</c><00:40:08.560><c> runs</c><00:40:09.079><c> uh</c><00:40:09.240><c> I</c>
+
+00:40:09.309 --> 00:40:09.319 align:start position:0%
+version the only version that runs uh I
+
+
+00:40:09.319 --> 00:40:10.670 align:start position:0%
+version the only version that runs uh I
+don't<00:40:09.560><c> know</c><00:40:09.839><c> but</c><00:40:09.960><c> it's</c><00:40:10.079><c> the</c><00:40:10.200><c> only</c><00:40:10.359><c> one</c><00:40:10.520><c> I've</c>
+
+00:40:10.670 --> 00:40:10.680 align:start position:0%
+don't know but it's the only one I've
+
+
+00:40:10.680 --> 00:40:12.230 align:start position:0%
+don't know but it's the only one I've
+ever<00:40:10.880><c> used</c><00:40:11.480><c> and</c><00:40:11.599><c> it's</c><00:40:11.720><c> the</c><00:40:11.800><c> easiest</c><00:40:12.079><c> to</c>
+
+00:40:12.230 --> 00:40:12.240 align:start position:0%
+ever used and it's the easiest to
+
+
+00:40:12.240 --> 00:40:21.550 align:start position:0%
+ever used and it's the easiest to
+install<00:40:12.520><c> as</c><00:40:12.640><c> far</c><00:40:12.720><c> as</c><00:40:12.800><c> I</c><00:40:13.200><c> know</c>
+
+00:40:21.550 --> 00:40:21.560 align:start position:0%
+
+
+
+00:40:21.560 --> 00:40:25.150 align:start position:0%
+
+yes<00:40:22.560><c> oh</c>
+
+00:40:25.150 --> 00:40:25.160 align:start position:0%
+
+
+
+00:40:25.160 --> 00:40:27.430 align:start position:0%
+
+okay<00:40:26.160><c> okay</c><00:40:26.480><c> so</c><00:40:26.640><c> it</c><00:40:26.720><c> sounds</c><00:40:26.920><c> like</c><00:40:27.079><c> there's</c><00:40:27.319><c> some</c>
+
+00:40:27.430 --> 00:40:27.440 align:start position:0%
+okay okay so it sounds like there's some
+
+
+00:40:27.440 --> 00:40:28.990 align:start position:0%
+okay okay so it sounds like there's some
+Alternatives<00:40:28.359><c> again</c><00:40:28.560><c> I've</c><00:40:28.680><c> only</c><00:40:28.839><c> had</c>
+
+00:40:28.990 --> 00:40:29.000 align:start position:0%
+Alternatives again I've only had
+
+
+00:40:29.000 --> 00:40:30.390 align:start position:0%
+Alternatives again I've only had
+experience<00:40:29.319><c> with</c><00:40:29.480><c> oral</c><00:40:29.920><c> and</c><00:40:30.119><c> now</c><00:40:30.240><c> that</c>
+
+00:40:30.390 --> 00:40:30.400 align:start position:0%
+experience with oral and now that
+
+
+00:40:30.400 --> 00:40:31.870 align:start position:0%
+experience with oral and now that
+they're<00:40:30.760><c> have</c><00:40:30.880><c> a</c><00:40:30.960><c> hard</c><00:40:31.160><c> FL</c><00:40:31.400><c> version</c><00:40:31.720><c> that's</c>
+
+00:40:31.870 --> 00:40:31.880 align:start position:0%
+they're have a hard FL version that's
+
+
+00:40:31.880 --> 00:40:36.150 align:start position:0%
+they're have a hard FL version that's
+probably<00:40:32.119><c> the</c><00:40:32.200><c> one</c><00:40:32.280><c> I'll</c><00:40:32.480><c> continue</c><00:40:32.720><c> to</c><00:40:32.880><c> use</c><00:40:34.160><c> um</c>
+
+00:40:36.150 --> 00:40:36.160 align:start position:0%
+probably the one I'll continue to use um
+
+
+00:40:36.160 --> 00:40:39.390 align:start position:0%
+probably the one I'll continue to use um
+so<00:40:37.160><c> uh</c><00:40:38.119><c> that's</c><00:40:38.359><c> pretty</c><00:40:38.560><c> much</c><00:40:38.760><c> all</c><00:40:38.920><c> I</c><00:40:39.079><c> had</c><00:40:39.200><c> to</c>
+
+00:40:39.390 --> 00:40:39.400 align:start position:0%
+so uh that's pretty much all I had to
+
+
+00:40:39.400 --> 00:40:40.990 align:start position:0%
+so uh that's pretty much all I had to
+say<00:40:39.920><c> uh</c><00:40:40.079><c> and</c><00:40:40.280><c> before</c><00:40:40.520><c> getting</c><00:40:40.720><c> into</c><00:40:40.920><c> the</c>
+
+00:40:40.990 --> 00:40:41.000 align:start position:0%
+say uh and before getting into the
+
+
+00:40:41.000 --> 00:40:42.589 align:start position:0%
+say uh and before getting into the
+scratch<00:40:41.319><c> demo</c><00:40:41.680><c> before</c><00:40:41.880><c> I</c><00:40:42.000><c> do</c><00:40:42.200><c> that</c><00:40:42.440><c> does</c>
+
+00:40:42.589 --> 00:40:42.599 align:start position:0%
+scratch demo before I do that does
+
+
+00:40:42.599 --> 00:40:43.870 align:start position:0%
+scratch demo before I do that does
+anybody<00:40:42.920><c> have</c><00:40:43.079><c> any</c><00:40:43.319><c> questions</c><00:40:43.640><c> about</c>
+
+00:40:43.870 --> 00:40:43.880 align:start position:0%
+anybody have any questions about
+
+
+00:40:43.880 --> 00:40:45.510 align:start position:0%
+anybody have any questions about
+programming<00:40:44.280><c> on</c><00:40:44.400><c> the</c><00:40:44.520><c> Raspberry</c>
+
+00:40:45.510 --> 00:40:45.520 align:start position:0%
+programming on the Raspberry
+
+
+00:40:45.520 --> 00:41:12.510 align:start position:0%
+programming on the Raspberry
+Pi<00:40:46.520><c> all</c><00:40:46.599><c> right</c><00:40:46.720><c> let's</c><00:40:46.839><c> do</c><00:40:47.000><c> some</c><00:40:47.160><c> scratch</c>
+
+00:41:12.510 --> 00:41:12.520 align:start position:0%
+
+
+
+00:41:12.520 --> 00:41:17.349 align:start position:0%
+
+Swit<00:41:13.520><c> so</c>
+
+00:41:17.349 --> 00:41:17.359 align:start position:0%
+
+
+
+00:41:17.359 --> 00:41:20.990 align:start position:0%
+
+uh<00:41:18.359><c> I</c><00:41:18.400><c> don't</c>
+
+00:41:20.990 --> 00:41:21.000 align:start position:0%
+
+
+
+00:41:21.000 --> 00:41:25.349 align:start position:0%
+
+close<00:41:22.000><c> top</c><00:41:22.280><c> left</c><00:41:23.000><c> what</c><00:41:24.000><c> top</c><00:41:24.319><c> left</c><00:41:24.520><c> of</c><00:41:24.680><c> your</c><00:41:25.280><c> of</c>
+
+00:41:25.349 --> 00:41:25.359 align:start position:0%
+close top left what top left of your of
+
+
+00:41:25.359 --> 00:41:28.030 align:start position:0%
+close top left what top left of your of
+the<00:41:25.480><c> screen</c><00:41:25.800><c> that</c><00:41:25.880><c> you're</c><00:41:26.040><c> looking</c><00:41:26.280><c> at</c><00:41:26.680><c> oh</c><00:41:27.400><c> oh</c>
+
+00:41:28.030 --> 00:41:28.040 align:start position:0%
+the screen that you're looking at oh oh
+
+
+00:41:28.040 --> 00:41:30.150 align:start position:0%
+the screen that you're looking at oh oh
+that<00:41:28.160><c> it's</c><00:41:28.280><c> something</c><00:41:28.560><c> different</c><00:41:29.480><c> okay</c><00:41:29.920><c> so</c>
+
+00:41:30.150 --> 00:41:30.160 align:start position:0%
+that it's something different okay so
+
+
+00:41:30.160 --> 00:41:32.630 align:start position:0%
+that it's something different okay so
+for<00:41:30.319><c> those</c><00:41:30.480><c> of</c><00:41:30.560><c> you</c><00:41:30.760><c> who</c><00:41:31.119><c> uh</c><00:41:32.119><c> those</c><00:41:32.240><c> of</c><00:41:32.359><c> you</c><00:41:32.480><c> who</c>
+
+00:41:32.630 --> 00:41:32.640 align:start position:0%
+for those of you who uh those of you who
+
+
+00:41:32.640 --> 00:41:34.790 align:start position:0%
+for those of you who uh those of you who
+don't<00:41:32.920><c> know</c><00:41:33.839><c> um</c><00:41:34.200><c> we're</c><00:41:34.400><c> running</c><00:41:34.640><c> this</c>
+
+00:41:34.790 --> 00:41:34.800 align:start position:0%
+don't know um we're running this
+
+
+00:41:34.800 --> 00:41:37.670 align:start position:0%
+don't know um we're running this
+presentation<00:41:35.200><c> on</c><00:41:35.319><c> a</c><00:41:35.440><c> Raspberry</c><00:41:35.880><c> Pi</c><00:41:36.520><c> so</c><00:41:37.480><c> that's</c>
+
+00:41:37.670 --> 00:41:37.680 align:start position:0%
+presentation on a Raspberry Pi so that's
+
+
+00:41:37.680 --> 00:41:38.589 align:start position:0%
+presentation on a Raspberry Pi so that's
+pretty
+
+00:41:38.589 --> 00:41:38.599 align:start position:0%
+pretty
+
+
+00:41:38.599 --> 00:41:41.390 align:start position:0%
+pretty
+cool<00:41:39.599><c> okay</c><00:41:39.800><c> so</c><00:41:40.160><c> this</c><00:41:40.359><c> is</c><00:41:40.520><c> what</c><00:41:40.680><c> scratch</c><00:41:41.119><c> looks</c>
+
+00:41:41.390 --> 00:41:41.400 align:start position:0%
+cool okay so this is what scratch looks
+
+
+00:41:41.400 --> 00:41:43.470 align:start position:0%
+cool okay so this is what scratch looks
+like<00:41:41.920><c> scratch</c><00:41:42.359><c> runs</c><00:41:42.680><c> on</c><00:41:42.800><c> the</c><00:41:42.920><c> Raspberry</c><00:41:43.319><c> Pi</c>
+
+00:41:43.470 --> 00:41:43.480 align:start position:0%
+like scratch runs on the Raspberry Pi
+
+
+00:41:43.480 --> 00:41:44.990 align:start position:0%
+like scratch runs on the Raspberry Pi
+and<00:41:43.560><c> is</c><00:41:43.720><c> distributed</c><00:41:44.200><c> with</c><00:41:44.319><c> the</c><00:41:44.400><c> Raspberry</c><00:41:44.800><c> Pi</c>
+
+00:41:44.990 --> 00:41:45.000 align:start position:0%
+and is distributed with the Raspberry Pi
+
+
+00:41:45.000 --> 00:41:47.230 align:start position:0%
+and is distributed with the Raspberry Pi
+but<00:41:45.119><c> it</c><00:41:45.240><c> also</c><00:41:45.480><c> runs</c><00:41:45.800><c> on</c><00:41:46.079><c> Mac</c><00:41:46.440><c> Linux</c><00:41:47.040><c> and</c>
+
+00:41:47.230 --> 00:41:47.240 align:start position:0%
+but it also runs on Mac Linux and
+
+
+00:41:47.240 --> 00:41:48.790 align:start position:0%
+but it also runs on Mac Linux and
+windows<00:41:47.680><c> so</c><00:41:47.839><c> actually</c><00:41:48.040><c> if</c><00:41:48.079><c> you</c><00:41:48.200><c> have</c><00:41:48.280><c> a</c><00:41:48.400><c> laptop</c>
+
+00:41:48.790 --> 00:41:48.800 align:start position:0%
+windows so actually if you have a laptop
+
+
+00:41:48.800 --> 00:41:50.069 align:start position:0%
+windows so actually if you have a laptop
+open<00:41:48.960><c> you</c><00:41:49.040><c> can</c><00:41:49.160><c> go</c><00:41:49.280><c> download</c><00:41:49.599><c> it</c><00:41:49.760><c> right</c><00:41:49.880><c> now</c>
+
+00:41:50.069 --> 00:41:50.079 align:start position:0%
+open you can go download it right now
+
+
+00:41:50.079 --> 00:41:52.829 align:start position:0%
+open you can go download it right now
+and<00:41:50.760><c> uh</c><00:41:50.880><c> install</c><00:41:51.200><c> it</c><00:41:51.560><c> fairly</c><00:41:51.960><c> quickly</c><00:41:52.720><c> there's</c>
+
+00:41:52.829 --> 00:41:52.839 align:start position:0%
+and uh install it fairly quickly there's
+
+
+00:41:52.839 --> 00:41:56.870 align:start position:0%
+and uh install it fairly quickly there's
+a<00:41:53.079><c> web</c><00:41:53.319><c> app</c><00:41:53.560><c> version</c><00:41:54.000><c> called</c><00:41:54.359><c> Snap</c><00:41:55.119><c> Snap</c><00:41:55.880><c> up</c>
+
+00:41:56.870 --> 00:41:56.880 align:start position:0%
+a web app version called Snap Snap up
+
+
+00:41:56.880 --> 00:41:58.150 align:start position:0%
+a web app version called Snap Snap up
+snap
+
+00:41:58.150 --> 00:41:58.160 align:start position:0%
+snap
+
+
+00:41:58.160 --> 00:42:00.990 align:start position:0%
+snap
+okay<00:41:59.160><c> so</c><00:41:59.880><c> there</c><00:41:59.960><c> are</c><00:42:00.079><c> a</c><00:42:00.119><c> lot</c><00:42:00.240><c> of</c><00:42:00.319><c> versions</c><00:42:00.640><c> to</c>
+
+00:42:00.990 --> 00:42:01.000 align:start position:0%
+okay so there are a lot of versions to
+
+
+00:42:01.000 --> 00:42:04.230 align:start position:0%
+okay so there are a lot of versions to
+try<00:42:02.000><c> I've</c><00:42:02.960><c> mostly</c><00:42:03.359><c> played</c><00:42:03.599><c> with</c><00:42:03.720><c> the</c><00:42:03.839><c> one</c><00:42:04.079><c> on</c>
+
+00:42:04.230 --> 00:42:04.240 align:start position:0%
+try I've mostly played with the one on
+
+
+00:42:04.240 --> 00:42:05.710 align:start position:0%
+try I've mostly played with the one on
+the<00:42:04.400><c> Raspberry</c><00:42:04.839><c> Pi</c><00:42:05.040><c> so</c><00:42:05.160><c> what</c><00:42:05.280><c> are</c><00:42:05.359><c> we</c><00:42:05.480><c> looking</c>
+
+00:42:05.710 --> 00:42:05.720 align:start position:0%
+the Raspberry Pi so what are we looking
+
+
+00:42:05.720 --> 00:42:09.270 align:start position:0%
+the Raspberry Pi so what are we looking
+at<00:42:05.960><c> here</c><00:42:06.839><c> well</c><00:42:07.079><c> we</c><00:42:07.200><c> have</c><00:42:07.400><c> a</c><00:42:07.680><c> stage</c><00:42:08.560><c> this</c><00:42:09.079><c> uh</c>
+
+00:42:09.270 --> 00:42:09.280 align:start position:0%
+at here well we have a stage this uh
+
+
+00:42:09.280 --> 00:42:12.870 align:start position:0%
+at here well we have a stage this uh
+scratch<00:42:09.760><c> being</c><00:42:10.359><c> visually</c><00:42:11.520><c> oriented</c><00:42:12.520><c> uh</c><00:42:12.720><c> the</c>
+
+00:42:12.870 --> 00:42:12.880 align:start position:0%
+scratch being visually oriented uh the
+
+
+00:42:12.880 --> 00:42:16.510 align:start position:0%
+scratch being visually oriented uh the
+output<00:42:13.359><c> or</c><00:42:13.520><c> the</c><00:42:13.640><c> things</c><00:42:13.839><c> you</c><00:42:14.280><c> program</c><00:42:15.359><c> uh</c><00:42:16.359><c> the</c>
+
+00:42:16.510 --> 00:42:16.520 align:start position:0%
+output or the things you program uh the
+
+
+00:42:16.520 --> 00:42:18.630 align:start position:0%
+output or the things you program uh the
+activities<00:42:16.920><c> you</c><00:42:17.119><c> program</c><00:42:17.960><c> generally</c><00:42:18.359><c> are</c>
+
+00:42:18.630 --> 00:42:18.640 align:start position:0%
+activities you program generally are
+
+
+00:42:18.640 --> 00:42:21.030 align:start position:0%
+activities you program generally are
+visual<00:42:19.160><c> so</c><00:42:19.960><c> this</c><00:42:20.119><c> is</c><00:42:20.240><c> our</c><00:42:20.480><c> stage</c><00:42:20.839><c> this</c><00:42:20.920><c> is</c>
+
+00:42:21.030 --> 00:42:21.040 align:start position:0%
+visual so this is our stage this is
+
+
+00:42:21.040 --> 00:42:22.990 align:start position:0%
+visual so this is our stage this is
+where<00:42:21.280><c> things</c><00:42:21.400><c> will</c><00:42:21.640><c> happen</c><00:42:22.119><c> and</c><00:42:22.440><c> this</c><00:42:22.559><c> is</c><00:42:22.720><c> a</c>
+
+00:42:22.990 --> 00:42:23.000 align:start position:0%
+where things will happen and this is a
+
+
+00:42:23.000 --> 00:42:25.670 align:start position:0%
+where things will happen and this is a
+cat<00:42:23.359><c> and</c><00:42:23.559><c> he</c><00:42:23.760><c> is</c><00:42:24.000><c> what</c><00:42:24.119><c> scratch</c><00:42:24.599><c> considers</c><00:42:25.480><c> a</c>
+
+00:42:25.670 --> 00:42:25.680 align:start position:0%
+cat and he is what scratch considers a
+
+
+00:42:25.680 --> 00:42:28.589 align:start position:0%
+cat and he is what scratch considers a
+Sprite<00:42:26.640><c> a</c><00:42:26.760><c> Sprite</c><00:42:27.400><c> is</c><00:42:27.640><c> an</c><00:42:27.839><c> image</c><00:42:28.240><c> or</c><00:42:28.440><c> a</c>
+
+00:42:28.589 --> 00:42:28.599 align:start position:0%
+Sprite a Sprite is an image or a
+
+
+00:42:28.599 --> 00:42:29.870 align:start position:0%
+Sprite a Sprite is an image or a
+resource<00:42:29.040><c> that</c><00:42:29.119><c> you</c><00:42:29.200><c> can</c><00:42:29.359><c> include</c><00:42:29.640><c> in</c><00:42:29.720><c> your</c>
+
+00:42:29.870 --> 00:42:29.880 align:start position:0%
+resource that you can include in your
+
+
+00:42:29.880 --> 00:42:32.030 align:start position:0%
+resource that you can include in your
+scratch<00:42:30.280><c> program</c><00:42:30.680><c> and</c><00:42:31.240><c> by</c><00:42:31.359><c> default</c><00:42:31.760><c> we</c><00:42:31.880><c> get</c>
+
+00:42:32.030 --> 00:42:32.040 align:start position:0%
+scratch program and by default we get
+
+
+00:42:32.040 --> 00:42:33.589 align:start position:0%
+scratch program and by default we get
+this<00:42:32.200><c> cool</c>
+
+00:42:33.589 --> 00:42:33.599 align:start position:0%
+this cool
+
+
+00:42:33.599 --> 00:42:37.790 align:start position:0%
+this cool
+cap<00:42:34.599><c> well</c><00:42:34.760><c> in</c><00:42:34.839><c> order</c><00:42:35.160><c> to</c><00:42:35.280><c> do</c><00:42:35.480><c> anything</c><00:42:36.359><c> we</c><00:42:36.520><c> need</c>
+
+00:42:37.790 --> 00:42:37.800 align:start position:0%
+cap well in order to do anything we need
+
+
+00:42:37.800 --> 00:42:40.150 align:start position:0%
+cap well in order to do anything we need
+to<00:42:38.800><c> add</c><00:42:38.960><c> a</c><00:42:39.079><c> little</c><00:42:39.280><c> block</c><00:42:39.520><c> here</c><00:42:39.640><c> to</c><00:42:39.800><c> represent</c>
+
+00:42:40.150 --> 00:42:40.160 align:start position:0%
+to add a little block here to represent
+
+
+00:42:40.160 --> 00:42:42.470 align:start position:0%
+to add a little block here to represent
+the<00:42:40.400><c> program</c><00:42:40.720><c> starting</c><00:42:41.359><c> this</c><00:42:41.480><c> is</c><00:42:41.920><c> similar</c><00:42:42.280><c> to</c>
+
+00:42:42.470 --> 00:42:42.480 align:start position:0%
+the program starting this is similar to
+
+
+00:42:42.480 --> 00:42:46.190 align:start position:0%
+the program starting this is similar to
+writing<00:42:42.920><c> your</c><00:42:43.160><c> main</c><00:42:43.440><c> function</c><00:42:43.720><c> in</c><00:42:43.920><c> C</c><00:42:44.200><c> or</c><00:42:44.760><c> uh</c>
+
+00:42:46.190 --> 00:42:46.200 align:start position:0%
+writing your main function in C or uh
+
+
+00:42:46.200 --> 00:42:48.710 align:start position:0%
+writing your main function in C or uh
+Java<00:42:47.200><c> uh</c><00:42:47.319><c> and</c><00:42:47.480><c> this</c><00:42:47.599><c> tells</c><00:42:47.920><c> the</c><00:42:48.079><c> program</c><00:42:48.319><c> to</c><00:42:48.480><c> do</c>
+
+00:42:48.710 --> 00:42:48.720 align:start position:0%
+Java uh and this tells the program to do
+
+
+00:42:48.720 --> 00:42:52.150 align:start position:0%
+Java uh and this tells the program to do
+stuff<00:42:48.960><c> when</c><00:42:49.119><c> we</c><00:42:49.280><c> click</c><00:42:49.880><c> uh</c><00:42:50.680><c> the</c><00:42:51.680><c> the</c><00:42:51.839><c> green</c>
+
+00:42:52.150 --> 00:42:52.160 align:start position:0%
+stuff when we click uh the the green
+
+
+00:42:52.160 --> 00:42:54.190 align:start position:0%
+stuff when we click uh the the green
+flag<00:42:52.760><c> over</c><00:42:53.000><c> here</c><00:42:53.400><c> this</c><00:42:53.480><c> is</c><00:42:53.680><c> basically</c><00:42:54.040><c> the</c>
+
+00:42:54.190 --> 00:42:54.200 align:start position:0%
+flag over here this is basically the
+
+
+00:42:54.200 --> 00:42:56.589 align:start position:0%
+flag over here this is basically the
+start<00:42:54.480><c> and</c><00:42:54.680><c> stop</c><00:42:54.920><c> buttons</c><00:42:55.160><c> for</c><00:42:55.280><c> our</c><00:42:55.599><c> program</c>
+
+00:42:56.589 --> 00:42:56.599 align:start position:0%
+start and stop buttons for our program
+
+
+00:42:56.599 --> 00:42:59.069 align:start position:0%
+start and stop buttons for our program
+now<00:42:56.760><c> what</c><00:42:56.880><c> I</c><00:42:57.000><c> like</c><00:42:57.280><c> to</c><00:42:57.440><c> write</c><00:42:57.640><c> is</c><00:42:57.760><c> a</c><00:42:58.079><c> program</c>
+
+00:42:59.069 --> 00:42:59.079 align:start position:0%
+now what I like to write is a program
+
+
+00:42:59.079 --> 00:43:01.750 align:start position:0%
+now what I like to write is a program
+that<00:43:00.000><c> gets</c><00:43:00.280><c> the</c><00:43:00.440><c> cat</c><00:43:00.640><c> to</c><00:43:00.880><c> say</c><00:43:01.240><c> something</c><00:43:01.640><c> when</c>
+
+00:43:01.750 --> 00:43:01.760 align:start position:0%
+that gets the cat to say something when
+
+
+00:43:01.760 --> 00:43:03.589 align:start position:0%
+that gets the cat to say something when
+I<00:43:01.880><c> hover</c><00:43:02.160><c> the</c><00:43:02.319><c> mouse</c><00:43:02.640><c> over</c>
+
+00:43:03.589 --> 00:43:03.599 align:start position:0%
+I hover the mouse over
+
+
+00:43:03.599 --> 00:43:05.750 align:start position:0%
+I hover the mouse over
+him<00:43:04.599><c> well</c><00:43:04.880><c> we</c><00:43:05.000><c> know</c><00:43:05.200><c> there</c><00:43:05.280><c> are</c><00:43:05.400><c> kind</c><00:43:05.520><c> of</c><00:43:05.599><c> two</c>
+
+00:43:05.750 --> 00:43:05.760 align:start position:0%
+him well we know there are kind of two
+
+
+00:43:05.760 --> 00:43:07.430 align:start position:0%
+him well we know there are kind of two
+states<00:43:06.119><c> there's</c><00:43:06.240><c> a</c><00:43:06.440><c> state</c><00:43:06.640><c> where</c><00:43:06.800><c> the</c><00:43:06.920><c> mouse</c>
+
+00:43:07.430 --> 00:43:07.440 align:start position:0%
+states there's a state where the mouse
+
+
+00:43:07.440 --> 00:43:08.790 align:start position:0%
+states there's a state where the mouse
+isn't<00:43:07.680><c> on</c><00:43:07.839><c> the</c><00:43:08.000><c> cat</c><00:43:08.200><c> and</c><00:43:08.319><c> there's</c><00:43:08.480><c> a</c><00:43:08.640><c> state</c>
+
+00:43:08.790 --> 00:43:08.800 align:start position:0%
+isn't on the cat and there's a state
+
+
+00:43:08.800 --> 00:43:10.589 align:start position:0%
+isn't on the cat and there's a state
+where<00:43:08.920><c> the</c><00:43:09.040><c> mouse</c><00:43:09.359><c> is</c><00:43:09.480><c> on</c><00:43:09.599><c> the</c><00:43:09.800><c> cat</c><00:43:10.040><c> so</c><00:43:10.160><c> we</c><00:43:10.520><c> we</c>
+
+00:43:10.589 --> 00:43:10.599 align:start position:0%
+where the mouse is on the cat so we we
+
+
+00:43:10.599 --> 00:43:12.950 align:start position:0%
+where the mouse is on the cat so we we
+know<00:43:10.720><c> we</c><00:43:10.839><c> need</c><00:43:10.960><c> an</c><00:43:11.160><c> if</c><00:43:11.559><c> statement</c><00:43:12.520><c> well</c><00:43:12.680><c> under</c>
+
+00:43:12.950 --> 00:43:12.960 align:start position:0%
+know we need an if statement well under
+
+
+00:43:12.960 --> 00:43:15.510 align:start position:0%
+know we need an if statement well under
+the<00:43:13.599><c> left</c><00:43:13.880><c> hand</c><00:43:14.119><c> side</c><00:43:14.440><c> of</c><00:43:14.559><c> the</c><00:43:14.720><c> IDE</c><00:43:15.160><c> here</c><00:43:15.359><c> we</c>
+
+00:43:15.510 --> 00:43:15.520 align:start position:0%
+the left hand side of the IDE here we
+
+
+00:43:15.520 --> 00:43:17.549 align:start position:0%
+the left hand side of the IDE here we
+have<00:43:16.079><c> a</c><00:43:16.200><c> selection</c><00:43:16.640><c> of</c><00:43:16.839><c> control</c><00:43:17.200><c> flow</c>
+
+00:43:17.549 --> 00:43:17.559 align:start position:0%
+have a selection of control flow
+
+
+00:43:17.559 --> 00:43:19.589 align:start position:0%
+have a selection of control flow
+features<00:43:18.000><c> and</c><00:43:18.119><c> they're</c><00:43:18.319><c> all</c><00:43:18.839><c> Visual</c><00:43:19.280><c> and</c><00:43:19.440><c> look</c>
+
+00:43:19.589 --> 00:43:19.599 align:start position:0%
+features and they're all Visual and look
+
+
+00:43:19.599 --> 00:43:21.790 align:start position:0%
+features and they're all Visual and look
+there's<00:43:19.760><c> an</c><00:43:19.880><c> IFL</c><00:43:20.319><c> statement</c><00:43:21.280><c> and</c><00:43:21.400><c> what</c><00:43:21.520><c> I</c><00:43:21.599><c> can</c>
+
+00:43:21.790 --> 00:43:21.800 align:start position:0%
+there's an IFL statement and what I can
+
+
+00:43:21.800 --> 00:43:26.589 align:start position:0%
+there's an IFL statement and what I can
+do<00:43:22.200><c> is</c><00:43:23.119><c> pop</c><00:43:23.480><c> that</c><00:43:24.119><c> in</c><00:43:25.119><c> and</c><00:43:25.359><c> actually</c><00:43:26.160><c> I</c><00:43:26.280><c> want</c>
+
+00:43:26.589 --> 00:43:26.599 align:start position:0%
+do is pop that in and actually I want
+
+
+00:43:26.599 --> 00:43:31.510 align:start position:0%
+do is pop that in and actually I want
+this<00:43:26.760><c> to</c><00:43:26.920><c> have</c><00:43:27.440><c> happen</c><00:43:28.559><c> uh</c><00:43:29.559><c> forever</c><00:43:30.520><c> so</c><00:43:31.359><c> we</c>
+
+00:43:31.510 --> 00:43:31.520 align:start position:0%
+this to have happen uh forever so we
+
+
+00:43:31.520 --> 00:43:33.870 align:start position:0%
+this to have happen uh forever so we
+also<00:43:31.720><c> have</c><00:43:31.839><c> a</c><00:43:31.960><c> little</c><00:43:32.160><c> forever</c><00:43:32.720><c> block</c><00:43:33.720><c> and</c>
+
+00:43:33.870 --> 00:43:33.880 align:start position:0%
+also have a little forever block and
+
+
+00:43:33.880 --> 00:43:35.910 align:start position:0%
+also have a little forever block and
+that's<00:43:34.079><c> like</c><00:43:34.160><c> a</c><00:43:34.319><c> wild</c><00:43:34.599><c> true</c>
+
+00:43:35.910 --> 00:43:35.920 align:start position:0%
+that's like a wild true
+
+
+00:43:35.920 --> 00:43:38.510 align:start position:0%
+that's like a wild true
+Loop<00:43:36.920><c> we</c><00:43:37.040><c> have</c><00:43:37.160><c> a</c><00:43:37.280><c> little</c><00:43:37.480><c> sensing</c><00:43:38.000><c> thing</c><00:43:38.240><c> so</c><00:43:38.400><c> I</c>
+
+00:43:38.510 --> 00:43:38.520 align:start position:0%
+Loop we have a little sensing thing so I
+
+
+00:43:38.520 --> 00:43:43.109 align:start position:0%
+Loop we have a little sensing thing so I
+can<00:43:38.760><c> say</c><00:43:39.280><c> if</c><00:43:40.280><c> the</c><00:43:40.839><c> Sprite</c><00:43:41.839><c> is</c>
+
+00:43:43.109 --> 00:43:43.119 align:start position:0%
+can say if the Sprite is
+
+
+00:43:43.119 --> 00:43:45.190 align:start position:0%
+can say if the Sprite is
+touching<00:43:44.119><c> the</c><00:43:44.280><c> mouse</c>
+
+00:43:45.190 --> 00:43:45.200 align:start position:0%
+touching the mouse
+
+
+00:43:45.200 --> 00:43:48.069 align:start position:0%
+touching the mouse
+pointer<00:43:46.200><c> then</c><00:43:46.680><c> I</c>
+
+00:43:48.069 --> 00:43:48.079 align:start position:0%
+pointer then I
+
+
+00:43:48.079 --> 00:43:54.630 align:start position:0%
+pointer then I
+want<00:43:49.400><c> the</c><00:43:50.400><c> what</c><00:43:50.520><c> should</c><00:43:50.640><c> I</c><00:43:50.880><c> do</c><00:43:51.880><c> move</c><00:43:52.640><c> away</c><00:43:53.640><c> oh</c>
+
+00:43:54.630 --> 00:43:54.640 align:start position:0%
+want the what should I do move away oh
+
+
+00:43:54.640 --> 00:43:58.109 align:start position:0%
+want the what should I do move away oh
+yeah<00:43:55.079><c> some</c><00:43:55.440><c> we</c><00:43:55.559><c> have</c><00:43:55.680><c> a</c><00:43:55.800><c> scratcher</c>
+
+00:43:58.109 --> 00:43:58.119 align:start position:0%
+yeah some we have a scratcher
+
+
+00:43:58.119 --> 00:44:02.109 align:start position:0%
+yeah some we have a scratcher
+I<00:43:58.400><c> played</c><00:43:58.800><c> this</c><00:43:59.119><c> last</c><00:43:59.680><c> time</c><00:44:00.359><c> before</c>
+
+00:44:02.109 --> 00:44:02.119 align:start position:0%
+I played this last time before
+
+
+00:44:02.119 --> 00:44:10.470 align:start position:0%
+I played this last time before
+yeah<00:44:03.119><c> you</c><00:44:03.240><c> may</c><00:44:03.440><c> be</c><00:44:03.599><c> more</c><00:44:03.800><c> experienced</c><00:44:04.280><c> than</c><00:44:04.400><c> I</c>
+
+00:44:10.470 --> 00:44:10.480 align:start position:0%
+
+
+
+00:44:10.480 --> 00:44:22.309 align:start position:0%
+
+am
+
+00:44:22.309 --> 00:44:22.319 align:start position:0%
+
+
+
+00:44:22.319 --> 00:44:25.150 align:start position:0%
+
+oops<00:44:23.319><c> so</c><00:44:23.880><c> now</c><00:44:24.079><c> we've</c><00:44:24.280><c> have</c><00:44:24.440><c> our</c><00:44:24.720><c> program</c>
+
+00:44:25.150 --> 00:44:25.160 align:start position:0%
+oops so now we've have our program
+
+
+00:44:25.160 --> 00:44:27.349 align:start position:0%
+oops so now we've have our program
+written<00:44:25.800><c> and</c><00:44:26.079><c> I</c><00:44:26.160><c> can</c><00:44:26.400><c> start</c><00:44:26.680><c> it</c><00:44:26.880><c> by</c><00:44:27.160><c> hitting</c>
+
+00:44:27.349 --> 00:44:27.359 align:start position:0%
+written and I can start it by hitting
+
+
+00:44:27.359 --> 00:44:29.710 align:start position:0%
+written and I can start it by hitting
+the<00:44:27.480><c> green</c><00:44:27.760><c> flag</c><00:44:28.559><c> and</c><00:44:28.680><c> the</c><00:44:28.839><c> default</c><00:44:29.200><c> Behavior</c>
+
+00:44:29.710 --> 00:44:29.720 align:start position:0%
+the green flag and the default Behavior
+
+
+00:44:29.720 --> 00:44:31.870 align:start position:0%
+the green flag and the default Behavior
+now<00:44:30.079><c> is</c><00:44:30.640><c> for</c><00:44:30.960><c> the</c><00:44:31.119><c> the</c><00:44:31.240><c> cats</c><00:44:31.440><c> to</c><00:44:31.559><c> say</c><00:44:31.760><c> I'm</c>
+
+00:44:31.870 --> 00:44:31.880 align:start position:0%
+now is for the the cats to say I'm
+
+
+00:44:31.880 --> 00:44:32.990 align:start position:0%
+now is for the the cats to say I'm
+lonely<00:44:32.240><c> that's</c><00:44:32.400><c> because</c><00:44:32.520><c> we're</c><00:44:32.680><c> not</c><00:44:32.839><c> we're</c>
+
+00:44:32.990 --> 00:44:33.000 align:start position:0%
+lonely that's because we're not we're
+
+
+00:44:33.000 --> 00:44:34.710 align:start position:0%
+lonely that's because we're not we're
+not<00:44:33.160><c> petting</c><00:44:33.480><c> him</c><00:44:34.079><c> and</c><00:44:34.200><c> what's</c><00:44:34.400><c> happening</c>
+
+00:44:34.710 --> 00:44:34.720 align:start position:0%
+not petting him and what's happening
+
+
+00:44:34.720 --> 00:44:37.230 align:start position:0%
+not petting him and what's happening
+over<00:44:34.880><c> here</c><00:44:35.079><c> in</c><00:44:35.200><c> our</c><00:44:35.359><c> Loop</c><00:44:35.880><c> is</c><00:44:36.520><c> um</c><00:44:36.839><c> the</c><00:44:36.960><c> mouse</c>
+
+00:44:37.230 --> 00:44:37.240 align:start position:0%
+over here in our Loop is um the mouse
+
+
+00:44:37.240 --> 00:44:38.790 align:start position:0%
+over here in our Loop is um the mouse
+pointer<00:44:37.520><c> is</c><00:44:37.680><c> not</c><00:44:37.920><c> touching</c><00:44:38.280><c> so</c><00:44:38.480><c> we</c><00:44:38.599><c> fall</c>
+
+00:44:38.790 --> 00:44:38.800 align:start position:0%
+pointer is not touching so we fall
+
+
+00:44:38.800 --> 00:44:40.950 align:start position:0%
+pointer is not touching so we fall
+through<00:44:38.960><c> to</c><00:44:39.160><c> the</c><00:44:39.280><c> else</c><00:44:40.079><c> and</c><00:44:40.200><c> the</c><00:44:40.359><c> cat</c><00:44:40.559><c> thinks</c>
+
+00:44:40.950 --> 00:44:40.960 align:start position:0%
+through to the else and the cat thinks
+
+
+00:44:40.960 --> 00:44:43.510 align:start position:0%
+through to the else and the cat thinks
+I'm<00:44:41.119><c> lonely</c><00:44:41.559><c> that's</c><00:44:42.319><c> really</c><00:44:42.599><c> depressing</c>
+
+00:44:43.510 --> 00:44:43.520 align:start position:0%
+I'm lonely that's really depressing
+
+
+00:44:43.520 --> 00:44:45.309 align:start position:0%
+I'm lonely that's really depressing
+let's<00:44:44.079><c> let's</c><00:44:44.319><c> pet</c><00:44:44.559><c> his</c><00:44:44.720><c> head</c><00:44:44.880><c> and</c><00:44:45.000><c> see</c><00:44:45.160><c> what</c>
+
+00:44:45.309 --> 00:44:45.319 align:start position:0%
+let's let's pet his head and see what
+
+
+00:44:45.319 --> 00:44:48.150 align:start position:0%
+let's let's pet his head and see what
+happens<00:44:46.079><c> oh</c><00:44:46.240><c> there</c><00:44:46.359><c> we</c>
+
+00:44:48.150 --> 00:44:48.160 align:start position:0%
+happens oh there we
+
+
+00:44:48.160 --> 00:44:49.790 align:start position:0%
+happens oh there we
+go
+
+00:44:49.790 --> 00:44:49.800 align:start position:0%
+go
+
+
+00:44:49.800 --> 00:44:52.069 align:start position:0%
+go
+so<00:44:50.800><c> oh</c><00:44:50.960><c> wait</c><00:44:51.079><c> I'm</c><00:44:51.160><c> Gonna</c><00:44:51.400><c> Keep</c><00:44:51.520><c> it</c><00:44:51.599><c> on</c><00:44:51.760><c> there</c><00:44:51.920><c> so</c>
+
+00:44:52.069 --> 00:44:52.079 align:start position:0%
+so oh wait I'm Gonna Keep it on there so
+
+
+00:44:52.079 --> 00:44:53.309 align:start position:0%
+so oh wait I'm Gonna Keep it on there so
+he<00:44:52.200><c> stays</c>
+
+00:44:53.309 --> 00:44:53.319 align:start position:0%
+he stays
+
+
+00:44:53.319 --> 00:44:55.630 align:start position:0%
+he stays
+Happ<00:44:54.319><c> oh</c><00:44:54.480><c> it's</c><00:44:54.640><c> hard</c>
+
+00:44:55.630 --> 00:44:55.640 align:start position:0%
+Happ oh it's hard
+
+
+00:44:55.640 --> 00:44:58.549 align:start position:0%
+Happ oh it's hard
+okay<00:44:56.640><c> um</c><00:44:57.040><c> so</c><00:44:57.160><c> that's</c><00:44:57.280><c> really</c><00:44:57.480><c> I</c><00:44:57.640><c> had</c><00:44:57.800><c> to</c><00:44:57.960><c> show</c>
+
+00:44:58.549 --> 00:44:58.559 align:start position:0%
+okay um so that's really I had to show
+
+
+00:44:58.559 --> 00:45:01.870 align:start position:0%
+okay um so that's really I had to show
+basically<00:44:59.440><c> that</c><00:45:00.119><c> the</c>
+
+00:45:01.870 --> 00:45:01.880 align:start position:0%
+basically that the
+
+
+00:45:01.880 --> 00:45:05.870 align:start position:0%
+basically that the
+uh<00:45:02.920><c> who</c><00:45:03.920><c> I</c><00:45:04.040><c> thought</c><00:45:04.160><c> there</c><00:45:04.240><c> was</c><00:45:04.319><c> a</c><00:45:04.440><c> bug</c><00:45:04.680><c> in</c><00:45:04.760><c> my</c>
+
+00:45:05.870 --> 00:45:05.880 align:start position:0%
+uh who I thought there was a bug in my
+
+
+00:45:05.880 --> 00:45:09.549 align:start position:0%
+uh who I thought there was a bug in my
+program<00:45:07.119><c> um</c><00:45:08.119><c> so</c><00:45:08.280><c> on</c><00:45:08.400><c> your</c><00:45:08.559><c> e</c><00:45:09.040><c> piie</c><00:45:09.359><c> comes</c>
+
+00:45:09.549 --> 00:45:09.559 align:start position:0%
+program um so on your e piie comes
+
+
+00:45:09.559 --> 00:45:11.549 align:start position:0%
+program um so on your e piie comes
+loaded<00:45:09.839><c> with</c><00:45:10.000><c> scratch</c><00:45:10.480><c> I</c><00:45:10.599><c> really</c><00:45:10.839><c> recommend</c>
+
+00:45:11.549 --> 00:45:11.559 align:start position:0%
+loaded with scratch I really recommend
+
+
+00:45:11.559 --> 00:45:14.870 align:start position:0%
+loaded with scratch I really recommend
+firing<00:45:11.920><c> it</c><00:45:12.079><c> up</c><00:45:12.839><c> um</c><00:45:13.480><c> it's</c><00:45:14.280><c> I</c><00:45:14.359><c> mean</c><00:45:14.559><c> you</c><00:45:14.680><c> know</c>
+
+00:45:14.870 --> 00:45:14.880 align:start position:0%
+firing it up um it's I mean you know
+
+
+00:45:14.880 --> 00:45:17.190 align:start position:0%
+firing it up um it's I mean you know
+I've<00:45:15.119><c> I've</c><00:45:16.000><c> done</c><00:45:16.280><c> programming</c><00:45:16.680><c> on</c><00:45:16.760><c> a</c><00:45:16.880><c> variety</c>
+
+00:45:17.190 --> 00:45:17.200 align:start position:0%
+I've I've done programming on a variety
+
+
+00:45:17.200 --> 00:45:19.270 align:start position:0%
+I've I've done programming on a variety
+of<00:45:17.319><c> platforms</c><00:45:17.760><c> and</c><00:45:17.839><c> I</c><00:45:17.960><c> had</c><00:45:18.119><c> a</c><00:45:18.280><c> lot</c><00:45:18.480><c> of</c><00:45:18.680><c> fun</c><00:45:19.119><c> with</c>
+
+00:45:19.270 --> 00:45:19.280 align:start position:0%
+of platforms and I had a lot of fun with
+
+
+00:45:19.280 --> 00:45:21.710 align:start position:0%
+of platforms and I had a lot of fun with
+scratch<00:45:19.800><c> and</c><00:45:20.160><c> you</c><00:45:20.319><c> know</c><00:45:21.119><c> uh</c><00:45:21.240><c> it's</c><00:45:21.359><c> just</c><00:45:21.520><c> really</c>
+
+00:45:21.710 --> 00:45:21.720 align:start position:0%
+scratch and you know uh it's just really
+
+
+00:45:21.720 --> 00:45:22.990 align:start position:0%
+scratch and you know uh it's just really
+cool<00:45:22.040><c> and</c><00:45:22.119><c> I</c><00:45:22.200><c> think</c><00:45:22.319><c> it's</c><00:45:22.480><c> a</c><00:45:22.640><c> great</c><00:45:22.800><c> way</c><00:45:22.920><c> to</c>
+
+00:45:22.990 --> 00:45:23.000 align:start position:0%
+cool and I think it's a great way to
+
+
+00:45:23.000 --> 00:45:25.150 align:start position:0%
+cool and I think it's a great way to
+show<00:45:23.240><c> people</c><00:45:23.520><c> the</c><00:45:23.680><c> potential</c><00:45:24.319><c> of</c><00:45:25.000><c> the</c>
+
+00:45:25.150 --> 00:45:25.160 align:start position:0%
+show people the potential of the
+
+
+00:45:25.160 --> 00:45:27.309 align:start position:0%
+show people the potential of the
+Raspberry<00:45:25.599><c> Pi</c><00:45:25.839><c> and</c><00:45:25.960><c> computers</c><00:45:26.319><c> in</c><00:45:26.440><c> general</c><00:45:27.200><c> a</c>
+
+00:45:27.309 --> 00:45:27.319 align:start position:0%
+Raspberry Pi and computers in general a
+
+
+00:45:27.319 --> 00:45:28.829 align:start position:0%
+Raspberry Pi and computers in general a
+way<00:45:27.440><c> to</c><00:45:27.559><c> interest</c><00:45:27.839><c> them</c><00:45:27.920><c> in</c><00:45:28.079><c> programming</c>
+
+00:45:28.829 --> 00:45:28.839 align:start position:0%
+way to interest them in programming
+
+
+00:45:28.839 --> 00:45:30.349 align:start position:0%
+way to interest them in programming
+similar<00:45:29.119><c> to</c><00:45:29.200><c> the</c><00:45:29.319><c> ways</c><00:45:29.559><c> that</c><00:45:29.760><c> we</c><00:45:30.000><c> originally</c>
+
+00:45:30.349 --> 00:45:30.359 align:start position:0%
+similar to the ways that we originally
+
+
+00:45:30.359 --> 00:45:31.510 align:start position:0%
+similar to the ways that we originally
+got<00:45:30.520><c> interested</c><00:45:30.880><c> when</c><00:45:31.000><c> we</c><00:45:31.079><c> started</c><00:45:31.319><c> playing</c>
+
+00:45:31.510 --> 00:45:31.520 align:start position:0%
+got interested when we started playing
+
+
+00:45:31.520 --> 00:45:34.190 align:start position:0%
+got interested when we started playing
+with<00:45:31.680><c> Vic</c><00:45:31.839><c> 20s</c><00:45:32.119><c> and</c><00:45:32.240><c> apple</c><00:45:32.480><c> 2's</c><00:45:33.400><c> conv</c><00:45:34.000><c> before</c>
+
+00:45:34.190 --> 00:45:34.200 align:start position:0%
+with Vic 20s and apple 2's conv before
+
+
+00:45:34.200 --> 00:45:36.750 align:start position:0%
+with Vic 20s and apple 2's conv before
+us<00:45:34.960><c> um</c><00:45:35.319><c> so</c><00:45:35.599><c> without</c><00:45:35.800><c> further</c><00:45:36.040><c> Ado</c><00:45:36.280><c> I</c><00:45:36.440><c> present</c>
+
+00:45:36.750 --> 00:45:36.760 align:start position:0%
+us um so without further Ado I present
+
+
+00:45:36.760 --> 00:45:39.109 align:start position:0%
+us um so without further Ado I present
+Clinton<00:45:37.280><c> Nixon</c><00:45:38.280><c> who</c><00:45:38.400><c> will</c><00:45:38.599><c> talk</c><00:45:38.800><c> a</c><00:45:38.880><c> little</c>
+
+00:45:39.109 --> 00:45:39.119 align:start position:0%
+Clinton Nixon who will talk a little
+
+
+00:45:39.119 --> 00:45:40.670 align:start position:0%
+Clinton Nixon who will talk a little
+more<00:45:39.480><c> about</c><00:45:39.720><c> development</c><00:45:40.079><c> of</c><00:45:40.200><c> the</c><00:45:40.280><c> Rasberry</c>
+
+00:45:40.670 --> 00:45:40.680 align:start position:0%
+more about development of the Rasberry
+
+
+00:45:40.680 --> 00:45:42.950 align:start position:0%
+more about development of the Rasberry
+piie<00:45:40.839><c> and</c><00:45:40.920><c> show</c><00:45:41.160><c> us</c><00:45:41.760><c> his</c><00:45:42.119><c> pretty</c>
+
+00:45:42.950 --> 00:45:42.960 align:start position:0%
+piie and show us his pretty
+
+
+00:45:42.960 --> 00:45:45.870 align:start position:0%
+piie and show us his pretty
+insane<00:45:43.960><c> uh</c><00:45:44.240><c> Rasberry</c><00:45:44.680><c> Pi</c><00:45:44.839><c> setup</c><00:45:45.559><c> he's</c><00:45:45.680><c> doing</c>
+
+00:45:45.870 --> 00:45:45.880 align:start position:0%
+insane uh Rasberry Pi setup he's doing
+
+
+00:45:45.880 --> 00:45:47.549 align:start position:0%
+insane uh Rasberry Pi setup he's doing
+like<00:45:46.000><c> day-to-day</c><00:45:46.440><c> development</c><00:45:46.800><c> on</c><00:45:46.920><c> it</c><00:45:47.200><c> he's</c>
+
+00:45:47.549 --> 00:45:47.559 align:start position:0%
+like day-to-day development on it he's
+
+
+00:45:47.559 --> 00:45:48.790 align:start position:0%
+like day-to-day development on it he's
+full<00:45:47.920><c> full</c>
+
+00:45:48.790 --> 00:45:48.800 align:start position:0%
+full full
+
+
+00:45:48.800 --> 00:45:55.750 align:start position:0%
+full full
+on
+
+00:45:55.750 --> 00:45:55.760 align:start position:0%
+
+
+
+00:45:55.760 --> 00:45:58.069 align:start position:0%
+
+yeah<00:45:56.760><c> okay</c>
+
+00:45:58.069 --> 00:45:58.079 align:start position:0%
+yeah okay
+
+
+00:45:58.079 --> 00:46:01.190 align:start position:0%
+yeah okay
+greaty<00:45:59.079><c> that</c><00:45:59.200><c> was</c><00:45:59.359><c> awesome</c><00:46:00.040><c> um</c><00:46:00.720><c> you</c><00:46:00.880><c> got</c><00:46:01.040><c> my</c>
+
+00:46:01.190 --> 00:46:01.200 align:start position:0%
+greaty that was awesome um you got my
+
+
+00:46:01.200 --> 00:46:02.750 align:start position:0%
+greaty that was awesome um you got my
+last<00:46:01.359><c> name</c><00:46:01.599><c> wrong</c><00:46:01.839><c> which</c><00:46:01.960><c> is</c><00:46:02.119><c> interesting</c>
+
+00:46:02.750 --> 00:46:02.760 align:start position:0%
+last name wrong which is interesting
+
+
+00:46:02.760 --> 00:46:07.030 align:start position:0%
+last name wrong which is interesting
+besides<00:46:03.200><c> that</c><00:46:03.880><c> uh</c><00:46:04.119><c> so</c><00:46:04.720><c> I</c><00:46:05.599><c> oh</c><00:46:05.839><c> dve</c><00:46:06.240><c> SP</c><00:46:06.599><c> yeah</c><00:46:06.839><c> yeah</c>
+
+00:46:07.030 --> 00:46:07.040 align:start position:0%
+besides that uh so I oh dve SP yeah yeah
+
+
+00:46:07.040 --> 00:46:09.109 align:start position:0%
+besides that uh so I oh dve SP yeah yeah
+that's<00:46:07.240><c> that's</c><00:46:07.359><c> the</c><00:46:07.559><c> thing</c><00:46:08.200><c> um</c><00:46:08.440><c> anyway</c><00:46:08.839><c> yeah</c><00:46:09.000><c> I</c>
+
+00:46:09.109 --> 00:46:09.119 align:start position:0%
+that's that's the thing um anyway yeah I
+
+
+00:46:09.119 --> 00:46:11.030 align:start position:0%
+that's that's the thing um anyway yeah I
+am<00:46:09.280><c> doing</c><00:46:09.559><c> day-to-day</c><00:46:10.040><c> development</c><00:46:10.599><c> on</c><00:46:10.839><c> my</c>
+
+00:46:11.030 --> 00:46:11.040 align:start position:0%
+am doing day-to-day development on my
+
+
+00:46:11.040 --> 00:46:12.950 align:start position:0%
+am doing day-to-day development on my
+Raspberry<00:46:11.480><c> Pi</c><00:46:11.839><c> so</c><00:46:12.280><c> a</c><00:46:12.359><c> lot</c><00:46:12.480><c> of</c><00:46:12.559><c> people</c><00:46:12.720><c> race</c>
+
+00:46:12.950 --> 00:46:12.960 align:start position:0%
+Raspberry Pi so a lot of people race
+
+
+00:46:12.960 --> 00:46:14.470 align:start position:0%
+Raspberry Pi so a lot of people race
+their<00:46:13.079><c> hands</c><00:46:13.319><c> earlier</c><00:46:13.800><c> when</c><00:46:14.160><c> talking</c><00:46:14.359><c> about</c>
+
+00:46:14.470 --> 00:46:14.480 align:start position:0%
+their hands earlier when talking about
+
+
+00:46:14.480 --> 00:46:17.470 align:start position:0%
+their hands earlier when talking about
+Vic<00:46:14.640><c> 20s</c><00:46:15.000><c> and</c><00:46:15.160><c> apple</c><00:46:15.440><c> 2s</c><00:46:16.440><c> I</c><00:46:17.040><c> maybe</c><00:46:17.280><c> was</c><00:46:17.400><c> a</c>
+
+00:46:17.470 --> 00:46:17.480 align:start position:0%
+Vic 20s and apple 2s I maybe was a
+
+
+00:46:17.480 --> 00:46:18.710 align:start position:0%
+Vic 20s and apple 2s I maybe was a
+little<00:46:17.599><c> bit</c><00:46:17.680><c> younger</c><00:46:18.000><c> my</c><00:46:18.079><c> first</c><00:46:18.280><c> computer</c><00:46:18.599><c> was</c>
+
+00:46:18.710 --> 00:46:18.720 align:start position:0%
+little bit younger my first computer was
+
+
+00:46:18.720 --> 00:46:22.109 align:start position:0%
+little bit younger my first computer was
+a<00:46:18.839><c> PC</c><00:46:19.359><c> Junior</c><00:46:20.359><c> um</c><00:46:20.880><c> which</c><00:46:21.040><c> is</c><00:46:21.559><c> my</c><00:46:21.720><c> my</c><00:46:21.839><c> parents</c>
+
+00:46:22.109 --> 00:46:22.119 align:start position:0%
+a PC Junior um which is my my parents
+
+
+00:46:22.119 --> 00:46:23.710 align:start position:0%
+a PC Junior um which is my my parents
+bought<00:46:22.319><c> it</c><00:46:22.440><c> at</c><00:46:22.599><c> the</c><00:46:22.839><c> at</c><00:46:22.960><c> the</c><00:46:23.040><c> hardware</c><00:46:23.440><c> store</c>
+
+00:46:23.710 --> 00:46:23.720 align:start position:0%
+bought it at the at the hardware store
+
+
+00:46:23.720 --> 00:46:26.150 align:start position:0%
+bought it at the at the hardware store
+where<00:46:23.920><c> they</c><00:46:24.559><c> where</c><00:46:24.680><c> they</c><00:46:24.839><c> bought</c><00:46:25.079><c> their</c><00:46:25.240><c> tools</c>
+
+00:46:26.150 --> 00:46:26.160 align:start position:0%
+where they where they bought their tools
+
+
+00:46:26.160 --> 00:46:28.109 align:start position:0%
+where they where they bought their tools
+um<00:46:26.280><c> we</c><00:46:26.359><c> were</c><00:46:26.520><c> farmers</c><00:46:27.200><c> anyway</c><00:46:27.599><c> it</c><00:46:27.720><c> was</c><00:46:27.960><c> uh</c><00:46:28.040><c> it</c>
+
+00:46:28.109 --> 00:46:28.119 align:start position:0%
+um we were farmers anyway it was uh it
+
+
+00:46:28.119 --> 00:46:29.309 align:start position:0%
+um we were farmers anyway it was uh it
+was<00:46:28.240><c> funny</c><00:46:28.440><c> they</c><00:46:28.520><c> were</c><00:46:28.640><c> on</c><00:46:28.800><c> sale</c><00:46:29.040><c> because</c><00:46:29.200><c> they</c>
+
+00:46:29.309 --> 00:46:29.319 align:start position:0%
+was funny they were on sale because they
+
+
+00:46:29.319 --> 00:46:31.549 align:start position:0%
+was funny they were on sale because they
+had<00:46:29.400><c> that</c><00:46:29.599><c> crazy</c><00:46:29.839><c> little</c><00:46:30.000><c> chicken</c><00:46:30.559><c> keyboard</c>
+
+00:46:31.549 --> 00:46:31.559 align:start position:0%
+had that crazy little chicken keyboard
+
+
+00:46:31.559 --> 00:46:33.670 align:start position:0%
+had that crazy little chicken keyboard
+and<00:46:31.839><c> you</c><00:46:31.920><c> know</c><00:46:32.400><c> the</c><00:46:32.559><c> thing</c><00:46:32.839><c> about</c><00:46:33.160><c> that</c><00:46:33.319><c> is</c><00:46:33.520><c> I</c>
+
+00:46:33.670 --> 00:46:33.680 align:start position:0%
+and you know the thing about that is I
+
+
+00:46:33.680 --> 00:46:36.710 align:start position:0%
+and you know the thing about that is I
+had<00:46:33.880><c> this</c><00:46:34.400><c> really</c><00:46:35.400><c> kind</c><00:46:35.520><c> of</c><00:46:35.680><c> crappy</c><00:46:36.079><c> computer</c>
+
+00:46:36.710 --> 00:46:36.720 align:start position:0%
+had this really kind of crappy computer
+
+
+00:46:36.720 --> 00:46:38.670 align:start position:0%
+had this really kind of crappy computer
+with<00:46:36.839><c> a</c><00:46:36.960><c> weird</c><00:46:37.240><c> keyboard</c><00:46:37.839><c> that</c><00:46:38.000><c> had</c><00:46:38.200><c> no</c><00:46:38.400><c> hard</c>
+
+00:46:38.670 --> 00:46:38.680 align:start position:0%
+with a weird keyboard that had no hard
+
+
+00:46:38.680 --> 00:46:41.030 align:start position:0%
+with a weird keyboard that had no hard
+drive<00:46:39.240><c> and</c><00:46:39.400><c> those</c><00:46:39.640><c> limitations</c><00:46:40.240><c> drove</c><00:46:40.599><c> me</c><00:46:40.760><c> to</c>
+
+00:46:41.030 --> 00:46:41.040 align:start position:0%
+drive and those limitations drove me to
+
+
+00:46:41.040 --> 00:46:44.150 align:start position:0%
+drive and those limitations drove me to
+really<00:46:41.359><c> want</c><00:46:41.559><c> to</c><00:46:41.720><c> play</c><00:46:41.960><c> with</c><00:46:42.079><c> it</c><00:46:42.880><c> program</c><00:46:43.880><c> so</c>
+
+00:46:44.150 --> 00:46:44.160 align:start position:0%
+really want to play with it program so
+
+
+00:46:44.160 --> 00:46:46.549 align:start position:0%
+really want to play with it program so
+now<00:46:44.559><c> today</c><00:46:45.079><c> here</c><00:46:45.240><c> I</c><00:46:45.359><c> am</c><00:46:45.800><c> I</c><00:46:45.920><c> go</c><00:46:46.040><c> to</c><00:46:46.119><c> work</c><00:46:46.319><c> every</c>
+
+00:46:46.549 --> 00:46:46.559 align:start position:0%
+now today here I am I go to work every
+
+
+00:46:46.559 --> 00:46:48.750 align:start position:0%
+now today here I am I go to work every
+day<00:46:47.160><c> um</c><00:46:47.599><c> you</c><00:46:47.720><c> know</c><00:46:48.000><c> I</c><00:46:48.119><c> have</c><00:46:48.240><c> to</c><00:46:48.319><c> communicate</c>
+
+00:46:48.750 --> 00:46:48.760 align:start position:0%
+day um you know I have to communicate
+
+
+00:46:48.760 --> 00:46:52.030 align:start position:0%
+day um you know I have to communicate
+with<00:46:48.920><c> people</c><00:46:49.319><c> and</c><00:46:49.760><c> there's</c><00:46:50.760><c> it</c><00:46:51.440><c> and</c><00:46:51.599><c> all</c><00:46:51.839><c> that</c>
+
+00:46:52.030 --> 00:46:52.040 align:start position:0%
+with people and there's it and all that
+
+
+00:46:52.040 --> 00:46:53.710 align:start position:0%
+with people and there's it and all that
+so<00:46:52.520><c> they</c><00:46:52.640><c> want</c><00:46:52.800><c> me</c><00:46:52.920><c> to</c><00:46:53.079><c> have</c><00:46:53.280><c> a</c><00:46:53.400><c> certain</c>
+
+00:46:53.710 --> 00:46:53.720 align:start position:0%
+so they want me to have a certain
+
+
+00:46:53.720 --> 00:46:56.430 align:start position:0%
+so they want me to have a certain
+computer<00:46:54.200><c> so</c><00:46:54.400><c> they</c><00:46:54.680><c> give</c><00:46:54.800><c> me</c><00:46:55.000><c> this</c><00:46:55.319><c> this</c><00:46:55.760><c> uh</c>
+
+00:46:56.430 --> 00:46:56.440 align:start position:0%
+computer so they give me this this uh
+
+
+00:46:56.440 --> 00:46:59.190 align:start position:0%
+computer so they give me this this uh
+Mac<00:46:57.040><c> book</c><00:46:57.240><c> it's</c><00:46:57.359><c> all</c><00:46:57.520><c> right</c><00:46:57.720><c> it's</c><00:46:57.960><c> nice</c><00:46:58.880><c> um</c><00:46:59.079><c> and</c>
+
+00:46:59.190 --> 00:46:59.200 align:start position:0%
+Mac book it's all right it's nice um and
+
+
+00:46:59.200 --> 00:47:02.109 align:start position:0%
+Mac book it's all right it's nice um and
+it's<00:46:59.440><c> powerful</c><00:46:59.920><c> I</c><00:47:00.000><c> can</c><00:47:00.240><c> sit</c><00:47:00.599><c> there</c><00:47:00.839><c> and</c><00:47:01.200><c> run</c><00:47:02.000><c> uh</c>
+
+00:47:02.109 --> 00:47:02.119 align:start position:0%
+it's powerful I can sit there and run uh
+
+
+00:47:02.119 --> 00:47:04.309 align:start position:0%
+it's powerful I can sit there and run uh
+you<00:47:02.200><c> know</c><00:47:02.440><c> jvm</c><00:47:02.880><c> on</c><00:47:03.000><c> it</c><00:47:03.160><c> I</c><00:47:03.280><c> have</c><00:47:03.480><c> five</c><00:47:03.680><c> jvms</c><00:47:04.160><c> up</c>
+
+00:47:04.309 --> 00:47:04.319 align:start position:0%
+you know jvm on it I have five jvms up
+
+
+00:47:04.319 --> 00:47:06.670 align:start position:0%
+you know jvm on it I have five jvms up
+I'm<00:47:04.440><c> doing</c><00:47:04.680><c> this</c><00:47:04.800><c> and</c><00:47:04.960><c> do</c><00:47:05.119><c> with</c><00:47:05.440><c> that</c><00:47:06.440><c> and</c><00:47:06.559><c> it</c>
+
+00:47:06.670 --> 00:47:06.680 align:start position:0%
+I'm doing this and do with that and it
+
+
+00:47:06.680 --> 00:47:08.030 align:start position:0%
+I'm doing this and do with that and it
+doesn't<00:47:06.880><c> blink</c><00:47:07.160><c> an</c><00:47:07.280><c> eye</c><00:47:07.480><c> it</c><00:47:07.559><c> doesn't</c><00:47:07.760><c> break</c><00:47:07.920><c> a</c>
+
+00:47:08.030 --> 00:47:08.040 align:start position:0%
+doesn't blink an eye it doesn't break a
+
+
+00:47:08.040 --> 00:47:10.589 align:start position:0%
+doesn't blink an eye it doesn't break a
+sweat<00:47:08.800><c> and</c><00:47:08.920><c> it's</c><00:47:09.200><c> great</c><00:47:09.520><c> but</c><00:47:09.720><c> the</c><00:47:09.920><c> limitations</c>
+
+00:47:10.589 --> 00:47:10.599 align:start position:0%
+sweat and it's great but the limitations
+
+
+00:47:10.599 --> 00:47:13.190 align:start position:0%
+sweat and it's great but the limitations
+are<00:47:10.880><c> gone</c><00:47:11.520><c> and</c><00:47:11.640><c> that's</c><00:47:11.800><c> not</c><00:47:12.040><c> that</c><00:47:12.240><c> fun</c><00:47:12.960><c> so</c><00:47:13.079><c> when</c>
+
+00:47:13.190 --> 00:47:13.200 align:start position:0%
+are gone and that's not that fun so when
+
+
+00:47:13.200 --> 00:47:15.069 align:start position:0%
+are gone and that's not that fun so when
+the<00:47:13.359><c> day</c><00:47:13.520><c> is</c><00:47:13.680><c> over</c><00:47:14.079><c> I</c><00:47:14.200><c> unplug</c><00:47:14.680><c> that</c><00:47:14.839><c> thing</c><00:47:15.000><c> and</c>
+
+00:47:15.069 --> 00:47:15.079 align:start position:0%
+the day is over I unplug that thing and
+
+
+00:47:15.079 --> 00:47:17.030 align:start position:0%
+the day is over I unplug that thing and
+I<00:47:15.200><c> turn</c><00:47:15.359><c> on</c><00:47:15.480><c> my</c><00:47:15.640><c> Raspberry</c><00:47:16.160><c> Pi</c><00:47:16.720><c> which</c><00:47:16.839><c> is</c>
+
+00:47:17.030 --> 00:47:17.040 align:start position:0%
+I turn on my Raspberry Pi which is
+
+
+00:47:17.040 --> 00:47:20.309 align:start position:0%
+I turn on my Raspberry Pi which is
+awesome<00:47:17.680><c> I</c><00:47:17.760><c> need</c><00:47:17.920><c> to</c><00:47:18.079><c> switch</c><00:47:18.440><c> over</c><00:47:19.119><c> can</c><00:47:19.720><c> uh</c><00:47:19.880><c> you</c>
+
+00:47:20.309 --> 00:47:20.319 align:start position:0%
+awesome I need to switch over can uh you
+
+
+00:47:20.319 --> 00:47:24.230 align:start position:0%
+awesome I need to switch over can uh you
+plug<00:47:20.880><c> that</c><00:47:21.160><c> into</c><00:47:21.680><c> there</c><00:47:22.040><c> I</c><00:47:22.200><c> think</c><00:47:22.760><c> so</c><00:47:23.760><c> we're</c><00:47:24.160><c> g</c>
+
+00:47:24.230 --> 00:47:24.240 align:start position:0%
+plug that into there I think so we're g
+
+
+00:47:24.240 --> 00:47:25.829 align:start position:0%
+plug that into there I think so we're g
+to<00:47:24.400><c> switch</c><00:47:24.720><c> real</c><00:47:24.920><c> quick</c>
+
+00:47:25.829 --> 00:47:25.839 align:start position:0%
+to switch real quick
+
+
+00:47:25.839 --> 00:47:29.670 align:start position:0%
+to switch real quick
+over<00:47:26.920><c> the</c><00:47:27.000><c> Raspberry</c><00:47:27.480><c> Pi</c><00:47:28.440><c> as</c><00:47:28.680><c> they</c><00:47:28.839><c> said</c><00:47:29.319><c> as</c>
+
+00:47:29.670 --> 00:47:29.680 align:start position:0%
+over the Raspberry Pi as they said as
+
+
+00:47:29.680 --> 00:47:31.870 align:start position:0%
+over the Raspberry Pi as they said as
+everyone<00:47:29.920><c> has</c><00:47:30.040><c> mentioned</c><00:47:30.440><c> has</c><00:47:31.000><c> run</c><00:47:31.480><c> several</c>
+
+00:47:31.870 --> 00:47:31.880 align:start position:0%
+everyone has mentioned has run several
+
+
+00:47:31.880 --> 00:47:33.950 align:start position:0%
+everyone has mentioned has run several
+different<00:47:32.200><c> operating</c><00:47:32.520><c> systems</c><00:47:32.880><c> already</c><00:47:33.800><c> um</c>
+
+00:47:33.950 --> 00:47:33.960 align:start position:0%
+different operating systems already um
+
+
+00:47:33.960 --> 00:47:36.990 align:start position:0%
+different operating systems already um
+out<00:47:34.200><c> there</c><00:47:34.319><c> you'll</c><00:47:34.559><c> see</c><00:47:35.240><c> Demian</c><00:47:35.680><c> linit</c><00:47:36.200><c> for</c><00:47:36.400><c> it</c>
+
+00:47:36.990 --> 00:47:37.000 align:start position:0%
+out there you'll see Demian linit for it
+
+
+00:47:37.000 --> 00:47:38.630 align:start position:0%
+out there you'll see Demian linit for it
+uh<00:47:37.079><c> you'll</c><00:47:37.240><c> see</c><00:47:37.400><c> arch</c><00:47:37.680><c> linit</c><00:47:38.040><c> for</c><00:47:38.200><c> it</c><00:47:38.400><c> which</c>
+
+00:47:38.630 --> 00:47:38.640 align:start position:0%
+uh you'll see arch linit for it which
+
+
+00:47:38.640 --> 00:47:41.309 align:start position:0%
+uh you'll see arch linit for it which
+I'm<00:47:38.880><c> running</c><00:47:39.280><c> right</c><00:47:39.440><c> here</c><00:47:40.119><c> uh</c><00:47:40.240><c> you'll</c><00:47:40.440><c> see</c><00:47:41.160><c> uh</c>
+
+00:47:41.309 --> 00:47:41.319 align:start position:0%
+I'm running right here uh you'll see uh
+
+
+00:47:41.319 --> 00:47:43.750 align:start position:0%
+I'm running right here uh you'll see uh
+plan<00:47:41.640><c> nine</c><00:47:42.160><c> for</c><00:47:42.400><c> it</c><00:47:42.599><c> which</c><00:47:42.720><c> is</c><00:47:43.079><c> awesome</c><00:47:43.559><c> in</c>
+
+00:47:43.750 --> 00:47:43.760 align:start position:0%
+plan nine for it which is awesome in
+
+
+00:47:43.760 --> 00:47:45.870 align:start position:0%
+plan nine for it which is awesome in
+Fondo<00:47:44.240><c> run</c><00:47:44.920><c> uh</c><00:47:45.000><c> someone's</c><00:47:45.280><c> working</c><00:47:45.480><c> on</c><00:47:45.640><c> high</c>
+
+00:47:45.870 --> 00:47:45.880 align:start position:0%
+Fondo run uh someone's working on high
+
+
+00:47:45.880 --> 00:47:47.990 align:start position:0%
+Fondo run uh someone's working on high
+coup<00:47:46.079><c> for</c><00:47:46.280><c> it</c><00:47:46.520><c> which</c><00:47:46.720><c> when</c><00:47:46.920><c> that</c><00:47:47.599><c> you</c><00:47:47.720><c> know</c><00:47:47.920><c> I</c>
+
+00:47:47.990 --> 00:47:48.000 align:start position:0%
+coup for it which when that you know I
+
+
+00:47:48.000 --> 00:47:49.510 align:start position:0%
+coup for it which when that you know I
+know<00:47:48.119><c> this</c><00:47:48.240><c> is</c><00:47:48.359><c> liit</c><00:47:48.640><c> users</c><00:47:48.880><c> group</c><00:47:49.280><c> but</c><00:47:49.400><c> when</c>
+
+00:47:49.510 --> 00:47:49.520 align:start position:0%
+know this is liit users group but when
+
+
+00:47:49.520 --> 00:47:51.390 align:start position:0%
+know this is liit users group but when
+high<00:47:49.720><c> coup</c><00:47:49.880><c> for</c><00:47:50.160><c> comes</c><00:47:50.359><c> out</c><00:47:50.880><c> there</c><00:47:50.960><c> is</c><00:47:51.160><c> nothing</c>
+
+00:47:51.390 --> 00:47:51.400 align:start position:0%
+high coup for comes out there is nothing
+
+
+00:47:51.400 --> 00:47:52.510 align:start position:0%
+high coup for comes out there is nothing
+that's<00:47:51.559><c> going</c><00:47:51.680><c> to</c><00:47:51.800><c> stop</c><00:47:52.000><c> me</c><00:47:52.119><c> from</c><00:47:52.280><c> playing</c>
+
+00:47:52.510 --> 00:47:52.520 align:start position:0%
+that's going to stop me from playing
+
+
+00:47:52.520 --> 00:47:53.950 align:start position:0%
+that's going to stop me from playing
+with<00:47:52.680><c> that</c>
+
+00:47:53.950 --> 00:47:53.960 align:start position:0%
+with that
+
+
+00:47:53.960 --> 00:47:57.309 align:start position:0%
+with that
+247<00:47:54.960><c> there</c><00:47:55.040><c> we</c><00:47:55.200><c> are</c><00:47:55.800><c> awesome</c><00:47:56.520><c> so</c><00:47:57.040><c> I'm</c><00:47:57.119><c> going</c><00:47:57.200><c> to</c>
+
+00:47:57.309 --> 00:47:57.319 align:start position:0%
+247 there we are awesome so I'm going to
+
+
+00:47:57.319 --> 00:48:01.030 align:start position:0%
+247 there we are awesome so I'm going to
+show<00:47:57.520><c> you</c><00:47:57.800><c> guys</c><00:47:58.480><c> how</c><00:47:59.160><c> exciting</c><00:48:00.079><c> and</c><00:48:00.520><c> limited</c>
+
+00:48:01.030 --> 00:48:01.040 align:start position:0%
+show you guys how exciting and limited
+
+
+00:48:01.040 --> 00:48:04.470 align:start position:0%
+show you guys how exciting and limited
+this<00:48:01.359><c> little</c><00:48:01.680><c> machine</c><00:48:02.160><c> is</c><00:48:03.160><c> so</c><00:48:03.640><c> cool</c><00:48:03.960><c> here</c><00:48:04.119><c> I</c><00:48:04.240><c> am</c>
+
+00:48:04.470 --> 00:48:04.480 align:start position:0%
+this little machine is so cool here I am
+
+
+00:48:04.480 --> 00:48:06.190 align:start position:0%
+this little machine is so cool here I am
+this<00:48:04.559><c> is</c><00:48:04.720><c> my</c><00:48:04.880><c> raspberry</c><00:48:05.280><c> Prim</c><00:48:05.480><c> machine</c><00:48:05.920><c> it's</c>
+
+00:48:06.190 --> 00:48:06.200 align:start position:0%
+this is my raspberry Prim machine it's
+
+
+00:48:06.200 --> 00:48:09.750 align:start position:0%
+this is my raspberry Prim machine it's
+running<00:48:07.000><c> um</c><00:48:07.280><c> the</c><00:48:07.480><c> awesome</c><00:48:08.040><c> Window</c><00:48:08.640><c> Manager</c><00:48:09.640><c> uh</c>
+
+00:48:09.750 --> 00:48:09.760 align:start position:0%
+running um the awesome Window Manager uh
+
+
+00:48:09.760 --> 00:48:12.150 align:start position:0%
+running um the awesome Window Manager uh
+which<00:48:09.880><c> you</c><00:48:10.000><c> may</c><00:48:10.119><c> have</c><00:48:10.240><c> heard</c><00:48:10.559><c> of</c><00:48:11.559><c> and</c><00:48:11.680><c> I'm</c><00:48:11.760><c> GNA</c>
+
+00:48:12.150 --> 00:48:12.160 align:start position:0%
+which you may have heard of and I'm GNA
+
+
+00:48:12.160 --> 00:48:15.470 align:start position:0%
+which you may have heard of and I'm GNA
+start<00:48:12.440><c> a</c><00:48:12.599><c> terminal</c><00:48:13.119><c> here</c><00:48:14.000><c> so</c><00:48:14.880><c> how</c><00:48:15.079><c> would</c><00:48:15.280><c> you</c>
+
+00:48:15.470 --> 00:48:15.480 align:start position:0%
+start a terminal here so how would you
+
+
+00:48:15.480 --> 00:48:17.630 align:start position:0%
+start a terminal here so how would you
+develop<00:48:15.920><c> on</c><00:48:16.040><c> a</c><00:48:16.200><c> machine</c><00:48:16.599><c> like</c><00:48:16.800><c> this</c><00:48:17.119><c> where</c><00:48:17.559><c> you</c>
+
+00:48:17.630 --> 00:48:17.640 align:start position:0%
+develop on a machine like this where you
+
+
+00:48:17.640 --> 00:48:19.309 align:start position:0%
+develop on a machine like this where you
+know<00:48:17.880><c> it</c><00:48:18.000><c> is</c><00:48:18.200><c> pretty</c><00:48:18.400><c> slow</c><00:48:18.800><c> I'm</c><00:48:18.880><c> going</c><00:48:18.960><c> to</c><00:48:19.119><c> type</c>
+
+00:48:19.309 --> 00:48:19.319 align:start position:0%
+know it is pretty slow I'm going to type
+
+
+00:48:19.319 --> 00:48:21.670 align:start position:0%
+know it is pretty slow I'm going to type
+LS<00:48:20.160><c> and</c><00:48:20.280><c> you're</c><00:48:20.400><c> going</c><00:48:20.520><c> to</c><00:48:20.599><c> see</c><00:48:21.160><c> it</c><00:48:21.359><c> actually</c>
+
+00:48:21.670 --> 00:48:21.680 align:start position:0%
+LS and you're going to see it actually
+
+
+00:48:21.680 --> 00:48:23.990 align:start position:0%
+LS and you're going to see it actually
+takes<00:48:22.240><c> well</c><00:48:22.440><c> it</c><00:48:22.520><c> didn't</c><00:48:22.680><c> take</c><00:48:22.839><c> that</c><00:48:23.000><c> long</c><00:48:23.280><c> but</c>
+
+00:48:23.990 --> 00:48:24.000 align:start position:0%
+takes well it didn't take that long but
+
+
+00:48:24.000 --> 00:48:26.150 align:start position:0%
+takes well it didn't take that long but
+um<00:48:25.000><c> once</c><00:48:25.200><c> I</c><00:48:25.319><c> get</c><00:48:25.400><c> a</c><00:48:25.520><c> couple</c><00:48:25.680><c> of</c><00:48:25.800><c> things</c><00:48:25.960><c> going</c>
+
+00:48:26.150 --> 00:48:26.160 align:start position:0%
+um once I get a couple of things going
+
+
+00:48:26.160 --> 00:48:27.549 align:start position:0%
+um once I get a couple of things going
+you're<00:48:26.240><c> going</c><00:48:26.319><c> to</c><00:48:26.400><c> see</c><00:48:26.520><c> it</c><00:48:26.920><c> slow</c><00:48:27.079><c> to</c><00:48:27.200><c> draw</c><00:48:27.440><c> the</c>
+
+00:48:27.549 --> 00:48:27.559 align:start position:0%
+you're going to see it slow to draw the
+
+
+00:48:27.559 --> 00:48:30.190 align:start position:0%
+you're going to see it slow to draw the
+screen<00:48:28.440><c> so</c><00:48:28.680><c> what</c><00:48:28.800><c> would</c><00:48:28.960><c> I</c><00:48:29.160><c> do</c><00:48:29.359><c> in</c><00:48:29.520><c> this</c><00:48:29.760><c> case</c>
+
+00:48:30.190 --> 00:48:30.200 align:start position:0%
+screen so what would I do in this case
+
+
+00:48:30.200 --> 00:48:32.309 align:start position:0%
+screen so what would I do in this case
+well<00:48:31.040><c> there's</c><00:48:31.200><c> a</c><00:48:31.280><c> couple</c><00:48:31.520><c> of</c><00:48:31.680><c> things</c><00:48:32.160><c> the</c>
+
+00:48:32.309 --> 00:48:32.319 align:start position:0%
+well there's a couple of things the
+
+
+00:48:32.319 --> 00:48:34.190 align:start position:0%
+well there's a couple of things the
+thing<00:48:32.559><c> that</c>
+
+00:48:34.190 --> 00:48:34.200 align:start position:0%
+thing that
+
+
+00:48:34.200 --> 00:48:38.030 align:start position:0%
+thing that
+I<00:48:35.200><c> have</c><00:48:35.400><c> been</c><00:48:35.599><c> doing</c><00:48:35.880><c> the</c><00:48:36.040><c> most</c><00:48:36.599><c> is</c><00:48:36.760><c> using</c><00:48:37.359><c> very</c>
+
+00:48:38.030 --> 00:48:38.040 align:start position:0%
+I have been doing the most is using very
+
+
+00:48:38.040 --> 00:48:41.390 align:start position:0%
+I have been doing the most is using very
+limited<00:48:38.960><c> tools</c><00:48:39.960><c> um</c><00:48:40.400><c> that</c><00:48:40.520><c> sort</c><00:48:40.720><c> of</c><00:48:40.839><c> remind</c><00:48:41.160><c> me</c>
+
+00:48:41.390 --> 00:48:41.400 align:start position:0%
+limited tools um that sort of remind me
+
+
+00:48:41.400 --> 00:48:43.549 align:start position:0%
+limited tools um that sort of remind me
+of<00:48:41.559><c> the</c><00:48:41.800><c> past</c>
+
+00:48:43.549 --> 00:48:43.559 align:start position:0%
+of the past
+
+
+00:48:43.559 --> 00:48:46.430 align:start position:0%
+of the past
+so<00:48:44.559><c> has</c><00:48:44.720><c> anyone</c><00:48:45.000><c> in</c><00:48:45.119><c> here</c><00:48:45.280><c> ever</c><00:48:45.480><c> heard</c><00:48:45.839><c> of</c><00:48:46.160><c> the</c>
+
+00:48:46.430 --> 00:48:46.440 align:start position:0%
+so has anyone in here ever heard of the
+
+
+00:48:46.440 --> 00:48:47.950 align:start position:0%
+so has anyone in here ever heard of the
+suckless
+
+00:48:47.950 --> 00:48:47.960 align:start position:0%
+suckless
+
+
+00:48:47.960 --> 00:48:50.430 align:start position:0%
+suckless
+tools<00:48:48.960><c> we</c><00:48:49.200><c> got</c><00:48:49.440><c> someone</c><00:48:49.799><c> right</c><00:48:49.920><c> here</c><00:48:50.119><c> who's</c>
+
+00:48:50.430 --> 00:48:50.440 align:start position:0%
+tools we got someone right here who's
+
+
+00:48:50.440 --> 00:48:54.150 align:start position:0%
+tools we got someone right here who's
+who's<00:48:50.680><c> great</c><00:48:51.520><c> um</c><00:48:52.480><c> so</c><00:48:52.880><c> you</c><00:48:53.000><c> know</c><00:48:53.680><c> it's</c><00:48:53.799><c> sort</c><00:48:53.960><c> of</c>
+
+00:48:54.150 --> 00:48:54.160 align:start position:0%
+who's great um so you know it's sort of
+
+
+00:48:54.160 --> 00:48:56.390 align:start position:0%
+who's great um so you know it's sort of
+this<00:48:54.400><c> this</c><00:48:54.599><c> group</c><00:48:54.839><c> of</c><00:48:55.240><c> uh</c><00:48:55.400><c> people</c><00:48:55.720><c> who</c><00:48:56.160><c> make</c>
+
+00:48:56.390 --> 00:48:56.400 align:start position:0%
+this this group of uh people who make
+
+
+00:48:56.400 --> 00:49:00.030 align:start position:0%
+this this group of uh people who make
+tool<00:48:57.079><c> that</c><00:48:57.200><c> are</c><00:48:58.040><c> uh</c><00:48:58.839><c> very</c><00:48:59.160><c> very</c><00:48:59.480><c> focused</c><00:48:59.880><c> on</c>
+
+00:49:00.030 --> 00:49:00.040 align:start position:0%
+tool that are uh very very focused on
+
+
+00:49:00.040 --> 00:49:01.950 align:start position:0%
+tool that are uh very very focused on
+doing<00:49:00.319><c> one</c><00:49:00.559><c> thing</c><00:49:00.799><c> for</c><00:49:01.000><c> example</c><00:49:01.359><c> this</c><00:49:01.559><c> browser</c>
+
+00:49:01.950 --> 00:49:01.960 align:start position:0%
+doing one thing for example this browser
+
+
+00:49:01.960 --> 00:49:04.910 align:start position:0%
+doing one thing for example this browser
+right<00:49:02.119><c> here</c><00:49:02.400><c> is</c><00:49:02.599><c> a</c><00:49:02.920><c> uh</c><00:49:03.280><c> webkit</c><00:49:03.760><c> browser</c><00:49:04.319><c> but</c>
+
+00:49:04.910 --> 00:49:04.920 align:start position:0%
+right here is a uh webkit browser but
+
+
+00:49:04.920 --> 00:49:07.230 align:start position:0%
+right here is a uh webkit browser but
+you<00:49:05.160><c> can't</c><00:49:05.520><c> even</c><00:49:05.880><c> go</c><00:49:06.040><c> to</c><00:49:06.200><c> another</c><00:49:06.480><c> web</c><00:49:06.680><c> page</c>
+
+00:49:07.230 --> 00:49:07.240 align:start position:0%
+you can't even go to another web page
+
+
+00:49:07.240 --> 00:49:08.710 align:start position:0%
+you can't even go to another web page
+you<00:49:07.559><c> besides</c><00:49:07.839><c> clicking</c><00:49:08.079><c> on</c><00:49:08.200><c> links</c><00:49:08.480><c> you</c><00:49:08.599><c> just</c>
+
+00:49:08.710 --> 00:49:08.720 align:start position:0%
+you besides clicking on links you just
+
+
+00:49:08.720 --> 00:49:12.030 align:start position:0%
+you besides clicking on links you just
+start<00:49:08.920><c> it</c><00:49:09.040><c> and</c><00:49:09.200><c> that's</c><00:49:09.359><c> all</c><00:49:09.480><c> you</c><00:49:09.680><c> get</c><00:49:10.799><c> um</c><00:49:11.799><c> so</c>
+
+00:49:12.030 --> 00:49:12.040 align:start position:0%
+start it and that's all you get um so
+
+
+00:49:12.040 --> 00:49:14.910 align:start position:0%
+start it and that's all you get um so
+that's<00:49:12.160><c> what</c><00:49:12.319><c> I</c><00:49:12.440><c> use</c><00:49:13.119><c> and</c><00:49:13.240><c> it's</c><00:49:13.440><c> awesome</c>
+
+00:49:14.910 --> 00:49:14.920 align:start position:0%
+that's what I use and it's awesome
+
+
+00:49:14.920 --> 00:49:18.829 align:start position:0%
+that's what I use and it's awesome
+um<00:49:15.920><c> uh</c><00:49:16.040><c> you</c><00:49:16.160><c> know</c><00:49:16.960><c> in</c><00:49:17.160><c> fact</c><00:49:17.760><c> one</c><00:49:17.880><c> of</c><00:49:18.040><c> them</c><00:49:18.599><c> said</c>
+
+00:49:18.829 --> 00:49:18.839 align:start position:0%
+um uh you know in fact one of them said
+
+
+00:49:18.839 --> 00:49:20.549 align:start position:0%
+um uh you know in fact one of them said
+something<00:49:19.119><c> recently</c><00:49:19.520><c> about</c><00:49:19.720><c> ET</c><00:49:20.000><c> term</c><00:49:20.280><c> and</c><00:49:20.400><c> how</c>
+
+00:49:20.549 --> 00:49:20.559 align:start position:0%
+something recently about ET term and how
+
+
+00:49:20.559 --> 00:49:22.950 align:start position:0%
+something recently about ET term and how
+X<00:49:20.799><c> term</c><00:49:21.200><c> is</c><00:49:21.440><c> bloated</c><00:49:22.119><c> it's</c><00:49:22.240><c> a</c><00:49:22.359><c> bloated</c><00:49:22.799><c> piece</c>
+
+00:49:22.950 --> 00:49:22.960 align:start position:0%
+X term is bloated it's a bloated piece
+
+
+00:49:22.960 --> 00:49:25.910 align:start position:0%
+X term is bloated it's a bloated piece
+of<00:49:23.359><c> software</c><00:49:24.359><c> so</c><00:49:25.000><c> I</c><00:49:25.119><c> read</c><00:49:25.319><c> that</c><00:49:25.520><c> I</c><00:49:25.640><c> thought</c>
+
+00:49:25.910 --> 00:49:25.920 align:start position:0%
+of software so I read that I thought
+
+
+00:49:25.920 --> 00:49:27.349 align:start position:0%
+of software so I read that I thought
+well<00:49:26.200><c> you</c><00:49:26.319><c> know</c><00:49:26.760><c> I'm</c><00:49:26.880><c> working</c><00:49:27.119><c> on</c><00:49:27.240><c> my</c>
+
+00:49:27.349 --> 00:49:27.359 align:start position:0%
+well you know I'm working on my
+
+
+00:49:27.359 --> 00:49:28.789 align:start position:0%
+well you know I'm working on my
+Raspberry<00:49:27.799><c> Pi</c><00:49:28.000><c> I</c><00:49:28.040><c> don't</c><00:49:28.119><c> want</c><00:49:28.200><c> to</c><00:49:28.280><c> blo</c><00:49:28.520><c> a</c><00:49:28.640><c> piece</c>
+
+00:49:28.789 --> 00:49:28.799 align:start position:0%
+Raspberry Pi I don't want to blo a piece
+
+
+00:49:28.799 --> 00:49:29.549 align:start position:0%
+Raspberry Pi I don't want to blo a piece
+of
+
+00:49:29.549 --> 00:49:29.559 align:start position:0%
+of
+
+
+00:49:29.559 --> 00:49:32.870 align:start position:0%
+of
+software<00:49:30.559><c> so</c><00:49:30.720><c> I</c><00:49:30.839><c> look</c><00:49:31.040><c> to</c><00:49:31.160><c> see</c><00:49:32.119><c> what</c><00:49:32.520><c> they</c><00:49:32.720><c> had</c>
+
+00:49:32.870 --> 00:49:32.880 align:start position:0%
+software so I look to see what they had
+
+
+00:49:32.880 --> 00:49:34.750 align:start position:0%
+software so I look to see what they had
+as<00:49:33.000><c> an</c><00:49:33.160><c> alternative</c><00:49:33.920><c> and</c><00:49:34.079><c> what</c><00:49:34.240><c> they</c><00:49:34.400><c> had</c><00:49:34.559><c> was</c>
+
+00:49:34.750 --> 00:49:34.760 align:start position:0%
+as an alternative and what they had was
+
+
+00:49:34.760 --> 00:49:37.230 align:start position:0%
+as an alternative and what they had was
+something<00:49:35.000><c> called</c><00:49:35.200><c> Simple</c><00:49:35.559><c> term</c><00:49:36.400><c> or</c><00:49:36.599><c> or</c><00:49:36.839><c> St</c>
+
+00:49:37.230 --> 00:49:37.240 align:start position:0%
+something called Simple term or or St
+
+
+00:49:37.240 --> 00:49:39.910 align:start position:0%
+something called Simple term or or St
+for<00:49:37.480><c> short</c><00:49:38.480><c> um</c><00:49:38.839><c> and</c><00:49:38.960><c> we're</c><00:49:39.079><c> gonna</c><00:49:39.440><c> we're</c><00:49:39.559><c> gonna</c>
+
+00:49:39.910 --> 00:49:39.920 align:start position:0%
+for short um and we're gonna we're gonna
+
+
+00:49:39.920 --> 00:49:42.109 align:start position:0%
+for short um and we're gonna we're gonna
+develop<00:49:40.359><c> that</c><00:49:40.720><c> right</c><00:49:40.880><c> now</c><00:49:41.200><c> so</c><00:49:41.599><c> one</c><00:49:41.720><c> of</c><00:49:41.880><c> their</c>
+
+00:49:42.109 --> 00:49:42.119 align:start position:0%
+develop that right now so one of their
+
+
+00:49:42.119 --> 00:49:44.430 align:start position:0%
+develop that right now so one of their
+philosophies<00:49:42.799><c> is</c><00:49:42.920><c> that</c><00:49:43.119><c> configuration</c><00:49:43.720><c> files</c>
+
+00:49:44.430 --> 00:49:44.440 align:start position:0%
+philosophies is that configuration files
+
+
+00:49:44.440 --> 00:49:47.750 align:start position:0%
+philosophies is that configuration files
+are<00:49:44.599><c> sort</c><00:49:44.760><c> of</c><00:49:44.960><c> bunk</c><00:49:45.960><c> um</c><00:49:46.920><c> you</c><00:49:47.040><c> know</c><00:49:47.400><c> reading</c>
+
+00:49:47.750 --> 00:49:47.760 align:start position:0%
+are sort of bunk um you know reading
+
+
+00:49:47.760 --> 00:49:49.390 align:start position:0%
+are sort of bunk um you know reading
+configuration<00:49:48.319><c> files</c><00:49:48.640><c> just</c><00:49:48.760><c> takes</c><00:49:49.040><c> up</c><00:49:49.200><c> more</c>
+
+00:49:49.390 --> 00:49:49.400 align:start position:0%
+configuration files just takes up more
+
+
+00:49:49.400 --> 00:49:51.309 align:start position:0%
+configuration files just takes up more
+memory<00:49:49.720><c> and</c><00:49:49.839><c> more</c><00:49:50.040><c> room</c><00:49:50.799><c> why</c><00:49:50.920><c> don't</c><00:49:51.040><c> you</c><00:49:51.160><c> just</c>
+
+00:49:51.309 --> 00:49:51.319 align:start position:0%
+memory and more room why don't you just
+
+
+00:49:51.319 --> 00:49:53.789 align:start position:0%
+memory and more room why don't you just
+edit<00:49:51.520><c> the</c><00:49:51.640><c> code</c><00:49:51.880><c> and</c><00:49:52.000><c> then</c><00:49:52.359><c> recompile</c><00:49:52.880><c> it</c><00:49:53.280><c> so</c>
+
+00:49:53.789 --> 00:49:53.799 align:start position:0%
+edit the code and then recompile it so
+
+
+00:49:53.799 --> 00:49:55.030 align:start position:0%
+edit the code and then recompile it so
+you<00:49:53.960><c> guys</c><00:49:54.079><c> are</c><00:49:54.319><c> probably</c><00:49:54.640><c> having</c><00:49:54.880><c> some</c>
+
+00:49:55.030 --> 00:49:55.040 align:start position:0%
+you guys are probably having some
+
+
+00:49:55.040 --> 00:49:57.190 align:start position:0%
+you guys are probably having some
+trouble<00:49:55.319><c> seeing</c><00:49:55.720><c> that</c><00:49:56.000><c> back</c><00:49:56.280><c> there</c><00:49:57.079><c> uh</c>
+
+00:49:57.190 --> 00:49:57.200 align:start position:0%
+trouble seeing that back there uh
+
+
+00:49:57.200 --> 00:49:59.270 align:start position:0%
+trouble seeing that back there uh
+because<00:49:57.440><c> the</c><00:49:57.599><c> font</c><00:49:57.880><c> isn't</c><00:49:58.200><c> very</c><00:49:58.480><c> big</c><00:49:59.040><c> well</c><00:49:59.200><c> you</c>
+
+00:49:59.270 --> 00:49:59.280 align:start position:0%
+because the font isn't very big well you
+
+
+00:49:59.280 --> 00:50:00.990 align:start position:0%
+because the font isn't very big well you
+can<00:49:59.520><c> guess</c><00:49:59.760><c> what</c><00:49:59.920><c> simple</c><00:50:00.280><c> terminal</c><00:50:00.720><c> doesn't</c>
+
+00:50:00.990 --> 00:50:01.000 align:start position:0%
+can guess what simple terminal doesn't
+
+
+00:50:01.000 --> 00:50:04.270 align:start position:0%
+can guess what simple terminal doesn't
+have<00:50:01.200><c> a</c><00:50:01.319><c> way</c><00:50:01.440><c> to</c><00:50:01.720><c> increase</c><00:50:02.079><c> the</c><00:50:02.200><c> font</c><00:50:02.520><c> size</c><00:50:03.520><c> so</c>
+
+00:50:04.270 --> 00:50:04.280 align:start position:0%
+have a way to increase the font size so
+
+
+00:50:04.280 --> 00:50:06.030 align:start position:0%
+have a way to increase the font size so
+let's<00:50:04.520><c> do</c><00:50:04.839><c> that</c><00:50:05.000><c> so</c><00:50:05.160><c> you</c><00:50:05.280><c> guys</c><00:50:05.440><c> can</c><00:50:05.599><c> read</c><00:50:05.839><c> this</c>
+
+00:50:06.030 --> 00:50:06.040 align:start position:0%
+let's do that so you guys can read this
+
+
+00:50:06.040 --> 00:50:10.030 align:start position:0%
+let's do that so you guys can read this
+better<00:50:07.079><c> so</c><00:50:08.079><c> I</c><00:50:08.240><c> use</c><00:50:08.839><c> them</c><00:50:09.240><c> on</c><00:50:09.559><c> here</c><00:50:09.920><c> I'm</c>
+
+00:50:10.030 --> 00:50:10.040 align:start position:0%
+better so I use them on here I'm
+
+
+00:50:10.040 --> 00:50:11.829 align:start position:0%
+better so I use them on here I'm
+normally<00:50:10.359><c> an</c><00:50:10.520><c> emac</c><00:50:11.079><c> guy</c><00:50:11.319><c> but</c><00:50:11.440><c> you</c><00:50:11.520><c> should</c><00:50:11.680><c> see</c>
+
+00:50:11.829 --> 00:50:11.839 align:start position:0%
+normally an emac guy but you should see
+
+
+00:50:11.839 --> 00:50:15.630 align:start position:0%
+normally an emac guy but you should see
+how<00:50:11.920><c> long</c><00:50:12.119><c> emx</c><00:50:12.440><c> takes</c><00:50:12.680><c> to</c><00:50:12.799><c> start</c>
+
+00:50:15.630 --> 00:50:15.640 align:start position:0%
+
+
+
+00:50:15.640 --> 00:50:20.069 align:start position:0%
+
+um<00:50:16.640><c> it's</c><00:50:16.960><c> it's</c><00:50:17.160><c> pretty</c><00:50:17.400><c> cool</c><00:50:17.880><c> um</c><00:50:18.520><c> why</c><00:50:18.680><c> not</c><00:50:19.640><c> so</c>
+
+00:50:20.069 --> 00:50:20.079 align:start position:0%
+um it's it's pretty cool um why not so
+
+
+00:50:20.079 --> 00:50:23.109 align:start position:0%
+um it's it's pretty cool um why not so
+that's<00:50:20.240><c> a</c><00:50:20.400><c> great</c><00:50:20.839><c> question</c><00:50:21.839><c> um</c><00:50:22.720><c> so</c><00:50:22.920><c> you</c><00:50:23.040><c> know</c>
+
+00:50:23.109 --> 00:50:23.119 align:start position:0%
+that's a great question um so you know
+
+
+00:50:23.119 --> 00:50:25.069 align:start position:0%
+that's a great question um so you know
+we're<00:50:23.280><c> running</c><00:50:23.599><c> over</c><00:50:23.839><c> here</c><00:50:24.400><c> uh</c><00:50:24.799><c> it</c><00:50:24.880><c> used</c><00:50:25.040><c> to</c>
+
+00:50:25.069 --> 00:50:25.079 align:start position:0%
+we're running over here uh it used to
+
+
+00:50:25.079 --> 00:50:26.670 align:start position:0%
+we're running over here uh it used to
+not<00:50:25.240><c> be</c><00:50:25.359><c> anti-</c><00:50:25.640><c> alist</c><00:50:26.040><c> but</c><00:50:26.119><c> I</c><00:50:26.200><c> added</c><00:50:26.440><c> that</c>
+
+00:50:26.670 --> 00:50:26.680 align:start position:0%
+not be anti- alist but I added that
+
+
+00:50:26.680 --> 00:50:28.270 align:start position:0%
+not be anti- alist but I added that
+we're<00:50:26.799><c> running</c><00:50:27.000><c> with</c><00:50:27.119><c> only</c><00:50:27.280><c> a</c><00:50:27.400><c> pistol</c><00:50:27.720><c> size</c><00:50:28.040><c> of</c>
+
+00:50:28.270 --> 00:50:28.280 align:start position:0%
+we're running with only a pistol size of
+
+
+00:50:28.280 --> 00:50:31.670 align:start position:0%
+we're running with only a pistol size of
+of<00:50:28.440><c> 18</c><00:50:28.839><c> and</c><00:50:29.000><c> that's</c><00:50:29.200><c> just</c><00:50:29.359><c> not</c><00:50:29.720><c> enough</c><00:50:30.720><c> so</c><00:50:31.359><c> um</c>
+
+00:50:31.670 --> 00:50:31.680 align:start position:0%
+of 18 and that's just not enough so um
+
+
+00:50:31.680 --> 00:50:33.870 align:start position:0%
+of 18 and that's just not enough so um
+let's<00:50:31.960><c> move</c><00:50:32.280><c> forward</c><00:50:32.640><c> to</c>
+
+00:50:33.870 --> 00:50:33.880 align:start position:0%
+let's move forward to
+
+
+00:50:33.880 --> 00:50:37.069 align:start position:0%
+let's move forward to
+that<00:50:34.880><c> and</c><00:50:35.480><c> change</c><00:50:36.000><c> that</c><00:50:36.240><c> over</c>
+
+00:50:37.069 --> 00:50:37.079 align:start position:0%
+that and change that over
+
+
+00:50:37.079 --> 00:50:41.750 align:start position:0%
+that and change that over
+to<00:50:38.160><c> 36</c><00:50:39.160><c> that's</c><00:50:39.440><c> what</c><00:50:39.559><c> I</c><00:50:39.680><c> was</c><00:50:39.799><c> about</c><00:50:39.960><c> to</c><00:50:40.160><c> say</c><00:50:41.160><c> 36</c>
+
+00:50:41.750 --> 00:50:41.760 align:start position:0%
+to 36 that's what I was about to say 36
+
+
+00:50:41.760 --> 00:50:45.109 align:start position:0%
+to 36 that's what I was about to say 36
+there<00:50:41.880><c> we</c><00:50:42.040><c> are</c><00:50:42.680><c> cool</c><00:50:43.200><c> cool</c><00:50:43.520><c> here</c><00:50:43.680><c> we</c><00:50:43.799><c> are</c><00:50:44.440><c> now</c>
+
+00:50:45.109 --> 00:50:45.119 align:start position:0%
+there we are cool cool here we are now
+
+
+00:50:45.119 --> 00:50:48.789 align:start position:0%
+there we are cool cool here we are now
+let's<00:50:45.359><c> just</c><00:50:45.559><c> run</c><00:50:45.799><c> a</c>
+
+00:50:48.789 --> 00:50:48.799 align:start position:0%
+
+
+
+00:50:48.799 --> 00:50:52.470 align:start position:0%
+
+make<00:50:49.799><c> whoa</c><00:50:50.240><c> oh</c><00:50:50.520><c> yeah</c><00:50:51.200><c> so</c><00:50:51.599><c> Raspberry</c><00:50:52.119><c> Pi</c><00:50:52.359><c> does</c>
+
+00:50:52.470 --> 00:50:52.480 align:start position:0%
+make whoa oh yeah so Raspberry Pi does
+
+
+00:50:52.480 --> 00:50:54.549 align:start position:0%
+make whoa oh yeah so Raspberry Pi does
+not<00:50:52.640><c> have</c><00:50:52.720><c> an</c><00:50:52.839><c> onboard</c><00:50:53.280><c> clock</c><00:50:53.839><c> which</c><00:50:54.000><c> is</c><00:50:54.440><c> which</c>
+
+00:50:54.549 --> 00:50:54.559 align:start position:0%
+not have an onboard clock which is which
+
+
+00:50:54.559 --> 00:50:57.190 align:start position:0%
+not have an onboard clock which is which
+is<00:50:54.760><c> cool</c><00:50:55.760><c> um</c>
+
+00:50:57.190 --> 00:50:57.200 align:start position:0%
+is cool um
+
+
+00:50:57.200 --> 00:51:00.750 align:start position:0%
+is cool um
+it<00:50:57.319><c> runs</c><00:50:57.680><c> out</c><00:50:58.520><c> so</c><00:50:59.000><c> uh</c><00:50:59.160><c> I</c><00:50:59.359><c> never</c><00:50:59.680><c> remember</c><00:51:00.200><c> how</c>
+
+00:51:00.750 --> 00:51:00.760 align:start position:0%
+it runs out so uh I never remember how
+
+
+00:51:00.760 --> 00:51:04.670 align:start position:0%
+it runs out so uh I never remember how
+to<00:51:01.760><c> uh</c><00:51:01.960><c> do</c><00:51:02.240><c> this</c><00:51:02.480><c> but</c><00:51:02.599><c> I'm</c><00:51:02.760><c> gonna</c>
+
+00:51:04.670 --> 00:51:04.680 align:start position:0%
+to uh do this but I'm gonna
+
+
+00:51:04.680 --> 00:51:07.750 align:start position:0%
+to uh do this but I'm gonna
+um<00:51:05.680><c> yeah</c>
+
+00:51:07.750 --> 00:51:07.760 align:start position:0%
+um yeah
+
+
+00:51:07.760 --> 00:51:11.349 align:start position:0%
+um yeah
+yeah<00:51:08.760><c> oh</c><00:51:09.040><c> make</c><00:51:09.680><c> oh</c><00:51:09.839><c> it</c><00:51:09.920><c> did</c><00:51:10.160><c> work</c><00:51:10.400><c> it</c><00:51:10.520><c> just</c><00:51:10.920><c> did</c>
+
+00:51:11.349 --> 00:51:11.359 align:start position:0%
+yeah oh make oh it did work it just did
+
+
+00:51:11.359 --> 00:51:16.069 align:start position:0%
+yeah oh make oh it did work it just did
+yeah<00:51:11.559><c> yeah</c><00:51:12.119><c> so</c>
+
+00:51:16.069 --> 00:51:16.079 align:start position:0%
+
+
+
+00:51:16.079 --> 00:51:18.510 align:start position:0%
+
+um<00:51:17.079><c> oh</c><00:51:17.319><c> yeah</c><00:51:17.599><c> it</c><00:51:17.680><c> did</c><00:51:17.839><c> not</c><00:51:18.000><c> work</c><00:51:18.200><c> I</c><00:51:18.280><c> just</c><00:51:18.400><c> have</c>
+
+00:51:18.510 --> 00:51:18.520 align:start position:0%
+um oh yeah it did not work I just have
+
+
+00:51:18.520 --> 00:51:19.870 align:start position:0%
+um oh yeah it did not work I just have
+to<00:51:18.599><c> make</c><00:51:18.720><c> clean</c><00:51:19.119><c> thank</c><00:51:19.240><c> you</c><00:51:19.480><c> whoever</c><00:51:19.760><c> just</c>
+
+00:51:19.870 --> 00:51:19.880 align:start position:0%
+to make clean thank you whoever just
+
+
+00:51:19.880 --> 00:51:21.990 align:start position:0%
+to make clean thank you whoever just
+said<00:51:20.079><c> that</c><00:51:20.280><c> off</c><00:51:20.960><c> out</c>
+
+00:51:21.990 --> 00:51:22.000 align:start position:0%
+said that off out
+
+
+00:51:22.000 --> 00:51:25.030 align:start position:0%
+said that off out
+there<00:51:23.000><c> all</c>
+
+00:51:25.030 --> 00:51:25.040 align:start position:0%
+there all
+
+
+00:51:25.040 --> 00:51:27.510 align:start position:0%
+there all
+right<00:51:26.040><c> here</c><00:51:26.160><c> you</c><00:51:26.280><c> are</c><00:51:26.599><c> this</c><00:51:26.680><c> will</c><00:51:26.839><c> just</c><00:51:26.960><c> take</c><00:51:27.119><c> a</c>
+
+00:51:27.510 --> 00:51:27.520 align:start position:0%
+right here you are this will just take a
+
+
+00:51:27.520 --> 00:51:34.270 align:start position:0%
+right here you are this will just take a
+sec<00:51:28.520><c> new</c><00:51:29.280><c> awesome</c>
+
+00:51:34.270 --> 00:51:34.280 align:start position:0%
+
+
+
+00:51:34.280 --> 00:51:36.549 align:start position:0%
+
+terminal<00:51:35.280><c> awesome</c><00:51:35.640><c> is</c><00:51:35.720><c> the</c><00:51:35.839><c> window</c><00:51:36.079><c> and</c><00:51:36.480><c> that</c>
+
+00:51:36.549 --> 00:51:36.559 align:start position:0%
+terminal awesome is the window and that
+
+
+00:51:36.559 --> 00:51:38.470 align:start position:0%
+terminal awesome is the window and that
+is<00:51:36.680><c> correct</c>
+
+00:51:38.470 --> 00:51:38.480 align:start position:0%
+is correct
+
+
+00:51:38.480 --> 00:51:41.270 align:start position:0%
+is correct
+um<00:51:39.480><c> so</c><00:51:39.880><c> yes</c><00:51:40.079><c> I'm</c><00:51:40.200><c> using</c><00:51:40.599><c> this</c><00:51:40.839><c> I'm</c><00:51:40.960><c> using</c><00:51:41.160><c> a</c>
+
+00:51:41.270 --> 00:51:41.280 align:start position:0%
+um so yes I'm using this I'm using a
+
+
+00:51:41.280 --> 00:51:42.390 align:start position:0%
+um so yes I'm using this I'm using a
+thing<00:51:41.400><c> called</c><00:51:41.599><c> surf</c><00:51:41.920><c> I'm</c><00:51:42.000><c> using</c><00:51:42.200><c> a</c><00:51:42.280><c> thing</c>
+
+00:51:42.390 --> 00:51:42.400 align:start position:0%
+thing called surf I'm using a thing
+
+
+00:51:42.400 --> 00:51:45.829 align:start position:0%
+thing called surf I'm using a thing
+called<00:51:42.640><c> surf</c><00:51:43.040><c> raw</c><00:51:43.839><c> um</c><00:51:43.960><c> if</c><00:51:44.040><c> you</c><00:51:44.119><c> haven't</c><00:51:44.640><c> used</c><00:51:45.640><c> I</c>
+
+00:51:45.829 --> 00:51:45.839 align:start position:0%
+called surf raw um if you haven't used I
+
+
+00:51:45.839 --> 00:51:48.789 align:start position:0%
+called surf raw um if you haven't used I
+recommend<00:51:46.240><c> trying</c><00:51:46.559><c> it</c><00:51:47.040><c> so</c><00:51:47.599><c> while</c><00:51:47.839><c> this</c><00:51:47.960><c> is</c><00:51:48.440><c> uh</c>
+
+00:51:48.789 --> 00:51:48.799 align:start position:0%
+recommend trying it so while this is uh
+
+
+00:51:48.799 --> 00:51:51.470 align:start position:0%
+recommend trying it so while this is uh
+uh<00:51:48.960><c> compiling</c><00:51:49.559><c> a</c><00:51:49.720><c> very</c><00:51:49.920><c> small</c><00:51:50.200><c> program</c><00:51:50.640><c> here</c>
+
+00:51:51.470 --> 00:51:51.480 align:start position:0%
+uh compiling a very small program here
+
+
+00:51:51.480 --> 00:51:54.109 align:start position:0%
+uh compiling a very small program here
+um<00:51:51.960><c> there</c><00:51:52.079><c> we</c><00:51:52.200><c> are</c><00:51:52.720><c> okay</c><00:51:53.119><c> it</c><00:51:53.359><c> it</c><00:51:53.480><c> seems</c><00:51:53.720><c> to</c><00:51:53.839><c> be</c>
+
+00:51:54.109 --> 00:51:54.119 align:start position:0%
+um there we are okay it it seems to be
+
+
+00:51:54.119 --> 00:51:57.870 align:start position:0%
+um there we are okay it it seems to be
+compiled<00:51:55.240><c> um</c><00:51:56.240><c> why</c><00:51:56.960><c> is</c><00:51:57.079><c> this</c><00:51:57.280><c> interesting</c><00:51:57.720><c> in</c>
+
+00:51:57.870 --> 00:51:57.880 align:start position:0%
+compiled um why is this interesting in
+
+
+00:51:57.880 --> 00:51:59.630 align:start position:0%
+compiled um why is this interesting in
+any<00:51:58.079><c> way</c><00:51:58.319><c> like</c><00:51:58.559><c> why</c><00:51:58.839><c> would</c><00:51:59.000><c> I</c><00:51:59.280><c> yeah</c><00:51:59.440><c> there</c><00:51:59.520><c> we</c>
+
+00:51:59.630 --> 00:51:59.640 align:start position:0%
+any way like why would I yeah there we
+
+
+00:51:59.640 --> 00:52:02.510 align:start position:0%
+any way like why would I yeah there we
+are<00:52:00.040><c> look</c><00:52:00.119><c> at</c><00:52:00.319><c> that</c><00:52:01.119><c> that</c><00:52:01.280><c> is</c>
+
+00:52:02.510 --> 00:52:02.520 align:start position:0%
+are look at that that is
+
+
+00:52:02.520 --> 00:52:05.950 align:start position:0%
+are look at that that is
+configuration<00:52:03.520><c> yeah</c><00:52:04.319><c> um</c><00:52:04.799><c> and</c><00:52:05.079><c> fact</c><00:52:05.280><c> if</c><00:52:05.440><c> I</c><00:52:05.720><c> say</c>
+
+00:52:05.950 --> 00:52:05.960 align:start position:0%
+configuration yeah um and fact if I say
+
+
+00:52:05.960 --> 00:52:08.309 align:start position:0%
+configuration yeah um and fact if I say
+make<00:52:06.240><c> clean</c><00:52:06.760><c> over</c><00:52:07.000><c> here</c><00:52:07.520><c> or</c><00:52:07.680><c> not</c><00:52:07.839><c> make</c><00:52:08.000><c> clean</c>
+
+00:52:08.309 --> 00:52:08.319 align:start position:0%
+make clean over here or not make clean
+
+
+00:52:08.319 --> 00:52:10.349 align:start position:0%
+make clean over here or not make clean
+but<00:52:08.599><c> uh</c><00:52:09.559><c> make</c>
+
+00:52:10.349 --> 00:52:10.359 align:start position:0%
+but uh make
+
+
+00:52:10.359 --> 00:52:14.230 align:start position:0%
+but uh make
+install<00:52:11.359><c> from</c><00:52:11.559><c> now</c><00:52:11.760><c> on</c><00:52:12.240><c> whenever</c><00:52:12.920><c> I</c><00:52:13.319><c> hit</c><00:52:13.880><c> my</c>
+
+00:52:14.230 --> 00:52:14.240 align:start position:0%
+install from now on whenever I hit my
+
+
+00:52:14.240 --> 00:52:17.910 align:start position:0%
+install from now on whenever I hit my
+enter<00:52:14.720><c> because</c><00:52:15.119><c> I'm</c><00:52:15.280><c> using</c><00:52:16.000><c> uh</c><00:52:17.000><c> uh</c><00:52:17.160><c> awesome</c>
+
+00:52:17.910 --> 00:52:17.920 align:start position:0%
+enter because I'm using uh uh awesome
+
+
+00:52:17.920 --> 00:52:20.630 align:start position:0%
+enter because I'm using uh uh awesome
+I'll<00:52:18.200><c> get</c><00:52:18.440><c> my</c><00:52:18.559><c> new</c><00:52:18.760><c> bid</c><00:52:19.000><c> terminal</c><00:52:19.760><c> so</c><00:52:20.280><c> why</c><00:52:20.440><c> is</c>
+
+00:52:20.630 --> 00:52:20.640 align:start position:0%
+I'll get my new bid terminal so why is
+
+
+00:52:20.640 --> 00:52:23.589 align:start position:0%
+I'll get my new bid terminal so why is
+this<00:52:20.839><c> interesting</c><00:52:21.240><c> at</c><00:52:21.720><c> all</c><00:52:22.720><c> uh</c><00:52:22.960><c> besides</c><00:52:23.400><c> sort</c>
+
+00:52:23.589 --> 00:52:23.599 align:start position:0%
+this interesting at all uh besides sort
+
+
+00:52:23.599 --> 00:52:25.829 align:start position:0%
+this interesting at all uh besides sort
+of<00:52:23.839><c> novelty</c><00:52:24.839><c> this</c><00:52:24.960><c> is</c><00:52:25.240><c> this</c><00:52:25.359><c> is</c><00:52:25.559><c> why</c><00:52:25.680><c> it's</c>
+
+00:52:25.829 --> 00:52:25.839 align:start position:0%
+of novelty this is this is why it's
+
+
+00:52:25.839 --> 00:52:27.190 align:start position:0%
+of novelty this is this is why it's
+interesting<00:52:26.119><c> to</c><00:52:26.280><c> me</c>
+
+00:52:27.190 --> 00:52:27.200 align:start position:0%
+interesting to me
+
+
+00:52:27.200 --> 00:52:29.150 align:start position:0%
+interesting to me
+I'm<00:52:27.359><c> learning</c><00:52:27.760><c> about</c><00:52:28.040><c> tools</c><00:52:28.520><c> that</c><00:52:28.680><c> I</c><00:52:28.880><c> have</c><00:52:29.000><c> to</c>
+
+00:52:29.150 --> 00:52:29.160 align:start position:0%
+I'm learning about tools that I have to
+
+
+00:52:29.160 --> 00:52:31.549 align:start position:0%
+I'm learning about tools that I have to
+use<00:52:29.480><c> because</c><00:52:29.640><c> I'm</c><00:52:29.799><c> dealing</c><00:52:30.119><c> with</c><00:52:30.359><c> such</c><00:52:31.280><c> a</c><00:52:31.400><c> sort</c>
+
+00:52:31.549 --> 00:52:31.559 align:start position:0%
+use because I'm dealing with such a sort
+
+
+00:52:31.559 --> 00:52:36.150 align:start position:0%
+use because I'm dealing with such a sort
+of<00:52:32.119><c> small</c><00:52:32.960><c> um</c><00:52:33.240><c> machine</c><00:52:34.240><c> that</c><00:52:35.160><c> are</c><00:52:35.520><c> great</c><00:52:35.760><c> tools</c>
+
+00:52:36.150 --> 00:52:36.160 align:start position:0%
+of small um machine that are great tools
+
+
+00:52:36.160 --> 00:52:38.030 align:start position:0%
+of small um machine that are great tools
+and<00:52:36.280><c> are</c><00:52:36.520><c> very</c><00:52:36.799><c> fast</c><00:52:37.040><c> tools</c><00:52:37.400><c> even</c><00:52:37.640><c> though</c><00:52:37.960><c> you</c>
+
+00:52:38.030 --> 00:52:38.040 align:start position:0%
+and are very fast tools even though you
+
+
+00:52:38.040 --> 00:52:40.190 align:start position:0%
+and are very fast tools even though you
+know<00:52:38.240><c> normally</c><00:52:39.000><c> I</c><00:52:39.079><c> may</c><00:52:39.280><c> be</c><00:52:39.440><c> running</c><00:52:40.000><c> um</c>
+
+00:52:40.190 --> 00:52:40.200 align:start position:0%
+know normally I may be running um
+
+
+00:52:40.200 --> 00:52:42.470 align:start position:0%
+know normally I may be running um
+normally<00:52:40.520><c> I'm</c><00:52:40.599><c> running</c><00:52:40.880><c> inside</c><00:52:41.240><c> of</c><00:52:41.359><c> a</c><00:52:41.680><c> a</c><00:52:41.839><c> VM</c><00:52:42.280><c> on</c>
+
+00:52:42.470 --> 00:52:42.480 align:start position:0%
+normally I'm running inside of a a VM on
+
+
+00:52:42.480 --> 00:52:44.630 align:start position:0%
+normally I'm running inside of a a VM on
+my<00:52:42.760><c> MacBook</c><00:52:43.400><c> but</c><00:52:43.599><c> still</c><00:52:43.799><c> that</c><00:52:43.960><c> BM</c><00:52:44.240><c> has</c><00:52:44.400><c> four</c>
+
+00:52:44.630 --> 00:52:44.640 align:start position:0%
+my MacBook but still that BM has four
+
+
+00:52:44.640 --> 00:52:46.270 align:start position:0%
+my MacBook but still that BM has four
+gigs<00:52:45.000><c> and</c><00:52:45.119><c> it's</c><00:52:45.280><c> super</c><00:52:45.640><c> fast</c><00:52:45.920><c> and</c><00:52:46.040><c> it's</c>
+
+00:52:46.270 --> 00:52:46.280 align:start position:0%
+gigs and it's super fast and it's
+
+
+00:52:46.280 --> 00:52:48.710 align:start position:0%
+gigs and it's super fast and it's
+awesome<00:52:47.280><c> um</c><00:52:47.720><c> the</c><00:52:47.920><c> same</c><00:52:48.119><c> programs</c><00:52:48.400><c> run</c><00:52:48.559><c> on</c>
+
+00:52:48.710 --> 00:52:48.720 align:start position:0%
+awesome um the same programs run on
+
+
+00:52:48.720 --> 00:52:50.710 align:start position:0%
+awesome um the same programs run on
+there<00:52:48.839><c> St</c><00:52:49.200><c> runs</c><00:52:49.400><c> on</c><00:52:49.599><c> there</c><00:52:49.839><c> uh</c><00:52:49.960><c> surf</c><00:52:50.280><c> runs</c><00:52:50.520><c> on</c>
+
+00:52:50.710 --> 00:52:50.720 align:start position:0%
+there St runs on there uh surf runs on
+
+
+00:52:50.720 --> 00:52:51.910 align:start position:0%
+there St runs on there uh surf runs on
+there<00:52:50.920><c> Sur</c><00:52:51.280><c> for</c><00:52:51.440><c> all</c><00:52:51.599><c> which</c><00:52:51.720><c> I'm</c><00:52:51.760><c> going</c><00:52:51.880><c> to</c>
+
+00:52:51.910 --> 00:52:51.920 align:start position:0%
+there Sur for all which I'm going to
+
+
+00:52:51.920 --> 00:52:56.670 align:start position:0%
+there Sur for all which I'm going to
+show<00:52:52.040><c> you</c><00:52:52.160><c> in</c><00:52:52.200><c> a</c><00:52:52.319><c> minute</c><00:52:52.480><c> runs</c><00:52:52.720><c> on</c><00:52:52.960><c> there</c><00:52:53.720><c> um</c>
+
+00:52:56.670 --> 00:52:56.680 align:start position:0%
+show you in a minute runs on there um
+
+
+00:52:56.680 --> 00:52:59.670 align:start position:0%
+show you in a minute runs on there um
+but<00:52:56.799><c> you</c><00:52:56.920><c> know</c><00:52:57.119><c> there</c><00:52:57.240><c> we</c><00:52:57.359><c> are</c><00:52:57.680><c> so</c><00:52:57.880><c> surf</c><00:52:58.400><c> ra</c><00:52:58.920><c> is</c>
+
+00:52:59.670 --> 00:52:59.680 align:start position:0%
+but you know there we are so surf ra is
+
+
+00:52:59.680 --> 00:53:02.990 align:start position:0%
+but you know there we are so surf ra is
+the<00:53:00.480><c> coolest</c><00:53:01.040><c> thing</c><00:53:01.359><c> that</c><00:53:01.520><c> I</c><00:53:01.680><c> learned</c><00:53:02.240><c> from</c><00:53:02.599><c> my</c>
+
+00:53:02.990 --> 00:53:03.000 align:start position:0%
+the coolest thing that I learned from my
+
+
+00:53:03.000 --> 00:53:07.349 align:start position:0%
+the coolest thing that I learned from my
+uh<00:53:03.920><c> time</c><00:53:04.119><c> on</c><00:53:04.359><c> here</c><00:53:05.000><c> so</c><00:53:06.000><c> let</c><00:53:06.119><c> me</c>
+
+00:53:07.349 --> 00:53:07.359 align:start position:0%
+uh time on here so let me
+
+
+00:53:07.359 --> 00:53:13.829 align:start position:0%
+uh time on here so let me
+uh<00:53:08.359><c> go</c><00:53:08.680><c> over</c><00:53:09.079><c> to</c>
+
+00:53:13.829 --> 00:53:13.839 align:start position:0%
+
+
+
+00:53:13.839 --> 00:53:17.630 align:start position:0%
+
+this<00:53:14.839><c> there</c><00:53:14.960><c> we</c><00:53:15.079><c> are</c><00:53:15.640><c> so</c><00:53:15.839><c> surf</c><00:53:16.599><c> is</c><00:53:16.760><c> written</c><00:53:17.440><c> by</c>
+
+00:53:17.630 --> 00:53:17.640 align:start position:0%
+this there we are so surf is written by
+
+
+00:53:17.640 --> 00:53:20.230 align:start position:0%
+this there we are so surf is written by
+of<00:53:17.799><c> all</c><00:53:18.040><c> people</c><00:53:18.760><c> a</c><00:53:18.880><c> man</c><00:53:19.359><c> that</c><00:53:19.920><c> sort</c><00:53:20.119><c> of</c>
+
+00:53:20.230 --> 00:53:20.240 align:start position:0%
+of all people a man that sort of
+
+
+00:53:20.240 --> 00:53:21.710 align:start position:0%
+of all people a man that sort of
+Infamous<00:53:20.680><c> that</c><00:53:20.760><c> you've</c><00:53:20.920><c> heard</c><00:53:21.079><c> of</c><00:53:21.400><c> um</c><00:53:21.520><c> named</c>
+
+00:53:21.710 --> 00:53:21.720 align:start position:0%
+Infamous that you've heard of um named
+
+
+00:53:21.720 --> 00:53:23.630 align:start position:0%
+Infamous that you've heard of um named
+Julian<00:53:22.079><c> Assange</c><00:53:22.880><c> uh</c><00:53:22.960><c> he</c><00:53:23.040><c> wrote</c><00:53:23.280><c> it</c><00:53:23.440><c> long</c>
+
+00:53:23.630 --> 00:53:23.640 align:start position:0%
+Julian Assange uh he wrote it long
+
+
+00:53:23.640 --> 00:53:27.549 align:start position:0%
+Julian Assange uh he wrote it long
+before<00:53:23.880><c> he</c><00:53:24.000><c> did</c><00:53:24.240><c> anything</c><00:53:24.760><c> else</c><00:53:25.760><c> like</c><00:53:26.160><c> pain</c>
+
+00:53:27.549 --> 00:53:27.559 align:start position:0%
+before he did anything else like pain
+
+
+00:53:27.559 --> 00:53:30.270 align:start position:0%
+before he did anything else like pain
+um<00:53:28.559><c> whatever</c><00:53:28.839><c> you</c><00:53:29.000><c> think</c><00:53:29.440><c> pinky</c><00:53:29.760><c> is</c><00:53:29.839><c> a</c><00:53:30.040><c> good</c>
+
+00:53:30.270 --> 00:53:30.280 align:start position:0%
+um whatever you think pinky is a good
+
+
+00:53:30.280 --> 00:53:33.430 align:start position:0%
+um whatever you think pinky is a good
+adjective<00:53:30.680><c> it's</c><00:53:30.920><c> fun</c><00:53:31.079><c> to</c><00:53:31.240><c> say</c><00:53:31.880><c> so</c><00:53:32.280><c> um</c><00:53:33.079><c> but</c><00:53:33.240><c> it</c>
+
+00:53:33.430 --> 00:53:33.440 align:start position:0%
+adjective it's fun to say so um but it
+
+
+00:53:33.440 --> 00:53:35.190 align:start position:0%
+adjective it's fun to say so um but it
+has<00:53:33.720><c> lots</c><00:53:33.880><c> of</c><00:53:34.040><c> these</c><00:53:34.160><c> things</c><00:53:34.400><c> called</c><00:53:34.599><c> portlets</c>
+
+00:53:35.190 --> 00:53:35.200 align:start position:0%
+has lots of these things called portlets
+
+
+00:53:35.200 --> 00:53:37.589 align:start position:0%
+has lots of these things called portlets
+where<00:53:35.599><c> you</c><00:53:35.960><c> can</c><00:53:36.160><c> from</c><00:53:36.319><c> the</c><00:53:36.440><c> command</c><00:53:36.799><c> line</c>
+
+00:53:37.589 --> 00:53:37.599 align:start position:0%
+where you can from the command line
+
+
+00:53:37.599 --> 00:53:39.589 align:start position:0%
+where you can from the command line
+access<00:53:38.000><c> your</c><00:53:38.280><c> favorite</c><00:53:38.680><c> websites</c><00:53:39.319><c> which</c><00:53:39.440><c> will</c>
+
+00:53:39.589 --> 00:53:39.599 align:start position:0%
+access your favorite websites which will
+
+
+00:53:39.599 --> 00:53:41.950 align:start position:0%
+access your favorite websites which will
+come<00:53:39.720><c> out</c><00:53:39.839><c> in</c><00:53:39.960><c> the</c><00:53:40.119><c> browser</c><00:53:40.520><c> your</c><00:53:40.720><c> choice</c><00:53:41.520><c> so</c><00:53:41.839><c> I</c>
+
+00:53:41.950 --> 00:53:41.960 align:start position:0%
+come out in the browser your choice so I
+
+
+00:53:41.960 --> 00:53:43.710 align:start position:0%
+come out in the browser your choice so I
+like<00:53:42.079><c> to</c><00:53:42.160><c> use</c><00:53:42.319><c> D</c><00:53:42.559><c> let</c><00:53:42.760><c> go</c><00:53:43.040><c> I</c><00:53:43.119><c> want</c><00:53:43.240><c> to</c><00:53:43.359><c> know</c><00:53:43.520><c> more</c>
+
+00:53:43.710 --> 00:53:43.720 align:start position:0%
+like to use D let go I want to know more
+
+
+00:53:43.720 --> 00:53:52.309 align:start position:0%
+like to use D let go I want to know more
+about<00:53:44.480><c> uh</c><00:53:44.880><c> uh</c><00:53:45.040><c> programming</c><00:53:45.440><c> on</c><00:53:45.520><c> the</c><00:53:45.599><c> Raspberry</c>
+
+00:53:52.309 --> 00:53:52.319 align:start position:0%
+
+
+
+00:53:52.319 --> 00:53:56.030 align:start position:0%
+
+Pi<00:53:53.319><c> and</c><00:53:54.000><c> lo</c><00:53:54.200><c> and</c><00:53:54.400><c> behold</c><00:53:55.359><c> here</c><00:53:55.480><c> it</c><00:53:55.599><c> is</c><00:53:55.799><c> now</c><00:53:55.960><c> I've</c>
+
+00:53:56.030 --> 00:53:56.040 align:start position:0%
+Pi and lo and behold here it is now I've
+
+
+00:53:56.040 --> 00:53:59.589 align:start position:0%
+Pi and lo and behold here it is now I've
+told<00:53:56.240><c> it</c><00:53:56.640><c> use</c><00:53:57.040><c> a</c><00:53:57.680><c> w3m</c><00:53:58.680><c> uh</c><00:53:58.839><c> for</c><00:53:59.000><c> a</c><00:53:59.119><c> t</c><00:53:59.359><c> space</c>
+
+00:53:59.589 --> 00:53:59.599 align:start position:0%
+told it use a w3m uh for a t space
+
+
+00:53:59.599 --> 00:54:03.230 align:start position:0%
+told it use a w3m uh for a t space
+browser<00:54:00.079><c> because</c><00:54:00.640><c> I</c><00:54:01.000><c> uh</c><00:54:01.920><c> um</c><00:54:02.720><c> because</c><00:54:03.079><c> even</c>
+
+00:54:03.230 --> 00:54:03.240 align:start position:0%
+browser because I uh um because even
+
+
+00:54:03.240 --> 00:54:05.510 align:start position:0%
+browser because I uh um because even
+surf<00:54:03.599><c> takes</c><00:54:03.760><c> a</c><00:54:03.920><c> little</c><00:54:04.280><c> bit</c><00:54:04.480><c> to</c><00:54:04.640><c> start</c><00:54:05.319><c> but</c><00:54:05.440><c> I</c>
+
+00:54:05.510 --> 00:54:05.520 align:start position:0%
+surf takes a little bit to start but I
+
+
+00:54:05.520 --> 00:54:09.430 align:start position:0%
+surf takes a little bit to start but I
+can<00:54:05.640><c> tell</c><00:54:05.839><c> it</c><00:54:05.960><c> to</c><00:54:06.119><c> use</c><00:54:06.760><c> um</c><00:54:07.160><c> you</c><00:54:07.280><c> know</c><00:54:07.520><c> my</c><00:54:07.720><c> normal</c>
+
+00:54:09.430 --> 00:54:09.440 align:start position:0%
+can tell it to use um you know my normal
+
+
+00:54:09.440 --> 00:54:12.829 align:start position:0%
+can tell it to use um you know my normal
+uh<00:54:10.440><c> my</c><00:54:10.559><c> normal</c><00:54:10.880><c> graphical</c><00:54:11.520><c> browser</c><00:54:12.520><c> so</c><00:54:12.760><c> this</c>
+
+00:54:12.829 --> 00:54:12.839 align:start position:0%
+uh my normal graphical browser so this
+
+
+00:54:12.839 --> 00:54:15.270 align:start position:0%
+uh my normal graphical browser so this
+is<00:54:13.079><c> awesome</c><00:54:13.640><c> I</c><00:54:13.760><c> have</c><00:54:14.000><c> a</c><00:54:14.200><c> a</c><00:54:14.359><c> browser</c><00:54:14.960><c> that</c><00:54:15.160><c> is</c>
+
+00:54:15.270 --> 00:54:15.280 align:start position:0%
+is awesome I have a a browser that is
+
+
+00:54:15.280 --> 00:54:16.789 align:start position:0%
+is awesome I have a a browser that is
+the<00:54:15.440><c> smallest</c><00:54:15.760><c> thing</c><00:54:15.920><c> I</c><00:54:16.040><c> can</c><00:54:16.200><c> possibly</c><00:54:16.480><c> use</c><00:54:16.599><c> on</c>
+
+00:54:16.789 --> 00:54:16.799 align:start position:0%
+the smallest thing I can possibly use on
+
+
+00:54:16.799 --> 00:54:19.470 align:start position:0%
+the smallest thing I can possibly use on
+here<00:54:17.280><c> but</c><00:54:17.440><c> doesn't</c><00:54:17.760><c> have</c><00:54:18.079><c> great</c><00:54:18.480><c> navigation</c>
+
+00:54:19.470 --> 00:54:19.480 align:start position:0%
+here but doesn't have great navigation
+
+
+00:54:19.480 --> 00:54:22.510 align:start position:0%
+here but doesn't have great navigation
+uh<00:54:19.599><c> to</c><00:54:19.880><c> to</c><00:54:20.200><c> you</c><00:54:20.280><c> know</c><00:54:20.760><c> go</c><00:54:21.040><c> to</c><00:54:21.400><c> certain</c><00:54:21.720><c> sites</c><00:54:22.319><c> so</c>
+
+00:54:22.510 --> 00:54:22.520 align:start position:0%
+uh to to you know go to certain sites so
+
+
+00:54:22.520 --> 00:54:23.990 align:start position:0%
+uh to to you know go to certain sites so
+now<00:54:22.680><c> I</c><00:54:22.799><c> have</c><00:54:22.920><c> another</c><00:54:23.160><c> tool</c><00:54:23.400><c> that</c><00:54:23.520><c> HS</c><00:54:23.799><c> into</c>
+
+00:54:23.990 --> 00:54:24.000 align:start position:0%
+now I have another tool that HS into
+
+
+00:54:24.000 --> 00:54:25.510 align:start position:0%
+now I have another tool that HS into
+that<00:54:24.160><c> and</c><00:54:24.280><c> of</c><00:54:24.400><c> course</c><00:54:24.599><c> this</c><00:54:24.760><c> ties</c><00:54:25.040><c> us</c><00:54:25.200><c> all</c><00:54:25.400><c> back</c>
+
+00:54:25.510 --> 00:54:25.520 align:start position:0%
+that and of course this ties us all back
+
+
+00:54:25.520 --> 00:54:27.430 align:start position:0%
+that and of course this ties us all back
+to<00:54:25.640><c> the</c><00:54:25.760><c> sort</c><00:54:25.920><c> of</c><00:54:26.400><c> unit's</c><00:54:26.799><c> philosophy</c><00:54:27.319><c> of</c>
+
+00:54:27.430 --> 00:54:27.440 align:start position:0%
+to the sort of unit's philosophy of
+
+
+00:54:27.440 --> 00:54:30.150 align:start position:0%
+to the sort of unit's philosophy of
+having<00:54:27.680><c> very</c><00:54:27.920><c> small</c><00:54:28.280><c> programs</c><00:54:29.079><c> that</c><00:54:29.240><c> all</c><00:54:29.960><c> uh</c>
+
+00:54:30.150 --> 00:54:30.160 align:start position:0%
+having very small programs that all uh
+
+
+00:54:30.160 --> 00:54:31.789 align:start position:0%
+having very small programs that all uh
+you<00:54:30.280><c> know</c><00:54:30.480><c> use</c><00:54:30.799><c> text</c><00:54:31.040><c> to</c><00:54:31.200><c> talk</c><00:54:31.359><c> to</c><00:54:31.480><c> each</c><00:54:31.599><c> other</c>
+
+00:54:31.789 --> 00:54:31.799 align:start position:0%
+you know use text to talk to each other
+
+
+00:54:31.799 --> 00:54:33.870 align:start position:0%
+you know use text to talk to each other
+and<00:54:31.920><c> send</c><00:54:32.119><c> this</c><00:54:32.319><c> back</c><00:54:32.400><c> and</c><00:54:32.559><c> forth</c><00:54:33.119><c> you</c><00:54:33.319><c> prented</c>
+
+00:54:33.870 --> 00:54:33.880 align:start position:0%
+and send this back and forth you prented
+
+
+00:54:33.880 --> 00:54:36.349 align:start position:0%
+and send this back and forth you prented
+gopher
+
+00:54:36.349 --> 00:54:36.359 align:start position:0%
+gopher
+
+
+00:54:36.359 --> 00:54:40.349 align:start position:0%
+gopher
+yes<00:54:37.359><c> kind</c><00:54:37.559><c> of</c><00:54:38.079><c> kind</c><00:54:38.240><c> of</c><00:54:38.440><c> I</c><00:54:38.640><c> have</c><00:54:39.119><c> so</c><00:54:39.640><c> um</c><00:54:40.280><c> you</c>
+
+00:54:40.349 --> 00:54:40.359 align:start position:0%
+yes kind of kind of I have so um you
+
+
+00:54:40.359 --> 00:54:43.390 align:start position:0%
+yes kind of kind of I have so um you
+know<00:54:41.280><c> being</c><00:54:41.680><c> within</c><00:54:41.960><c> this</c><00:54:42.200><c> this</c><00:54:42.480><c> very</c><00:54:42.720><c> limited</c>
+
+00:54:43.390 --> 00:54:43.400 align:start position:0%
+know being within this this very limited
+
+
+00:54:43.400 --> 00:54:47.150 align:start position:0%
+know being within this this very limited
+place<00:54:43.920><c> has</c><00:54:44.119><c> sort</c><00:54:44.280><c> of</c><00:54:44.839><c> renewed</c><00:54:45.359><c> and</c><00:54:45.960><c> revigor</c><00:54:46.960><c> my</c>
+
+00:54:47.150 --> 00:54:47.160 align:start position:0%
+place has sort of renewed and revigor my
+
+
+00:54:47.160 --> 00:54:50.630 align:start position:0%
+place has sort of renewed and revigor my
+love<00:54:47.359><c> for</c><00:54:47.599><c> this</c><00:54:47.920><c> philosophy</c><00:54:49.000><c> um</c><00:54:50.000><c> do</c><00:54:50.160><c> I</c><00:54:50.359><c> have</c>
+
+00:54:50.630 --> 00:54:50.640 align:start position:0%
+love for this philosophy um do I have
+
+
+00:54:50.640 --> 00:54:52.309 align:start position:0%
+love for this philosophy um do I have
+two<00:54:50.799><c> minutes</c><00:54:51.119><c> left</c><00:54:51.359><c> that's</c><00:54:51.480><c> what</c><00:54:51.640><c> that</c><00:54:51.839><c> saying</c>
+
+00:54:52.309 --> 00:54:52.319 align:start position:0%
+two minutes left that's what that saying
+
+
+00:54:52.319 --> 00:54:55.069 align:start position:0%
+two minutes left that's what that saying
+there<00:54:52.680><c> awesome</c><00:54:53.440><c> um</c><00:54:53.720><c> has</c><00:54:54.280><c> reinvigorated</c><00:54:54.960><c> my</c>
+
+00:54:55.069 --> 00:54:55.079 align:start position:0%
+there awesome um has reinvigorated my
+
+
+00:54:55.079 --> 00:54:57.150 align:start position:0%
+there awesome um has reinvigorated my
+love<00:54:55.200><c> for</c><00:54:55.319><c> this</c><00:54:55.480><c> philosophy</c><00:54:56.400><c> many</c><00:54:56.599><c> of</c><00:54:56.720><c> us</c><00:54:56.880><c> may</c>
+
+00:54:57.150 --> 00:54:57.160 align:start position:0%
+love for this philosophy many of us may
+
+
+00:54:57.160 --> 00:54:59.710 align:start position:0%
+love for this philosophy many of us may
+find<00:54:58.079><c> uh</c><00:54:58.160><c> when</c><00:54:58.280><c> we're</c><00:54:58.440><c> working</c><00:54:58.760><c> dayto</c><00:54:59.200><c> day</c><00:54:59.599><c> in</c>
+
+00:54:59.710 --> 00:54:59.720 align:start position:0%
+find uh when we're working dayto day in
+
+
+00:54:59.720 --> 00:55:02.630 align:start position:0%
+find uh when we're working dayto day in
+our<00:54:59.960><c> jobs</c><00:55:00.920><c> that</c><00:55:01.200><c> because</c><00:55:01.880><c> you</c><00:55:02.000><c> know</c><00:55:02.319><c> we</c><00:55:02.440><c> need</c>
+
+00:55:02.630 --> 00:55:02.640 align:start position:0%
+our jobs that because you know we need
+
+
+00:55:02.640 --> 00:55:05.309 align:start position:0%
+our jobs that because you know we need
+to<00:55:02.839><c> support</c><00:55:03.359><c> someone's</c><00:55:03.839><c> IE</c><00:55:04.119><c> machine</c><00:55:04.760><c> or</c><00:55:05.000><c> IE</c>
+
+00:55:05.309 --> 00:55:05.319 align:start position:0%
+to support someone's IE machine or IE
+
+
+00:55:05.319 --> 00:55:07.349 align:start position:0%
+to support someone's IE machine or IE
+browser<00:55:05.839><c> or</c><00:55:06.200><c> we</c><00:55:06.319><c> need</c><00:55:06.480><c> to</c><00:55:06.640><c> talk</c><00:55:06.799><c> to</c><00:55:06.960><c> people</c>
+
+00:55:07.349 --> 00:55:07.359 align:start position:0%
+browser or we need to talk to people
+
+
+00:55:07.359 --> 00:55:09.349 align:start position:0%
+browser or we need to talk to people
+using<00:55:08.040><c> Skype</c><00:55:08.440><c> because</c><00:55:08.640><c> that's</c><00:55:08.760><c> all</c><00:55:08.960><c> they</c><00:55:09.119><c> use</c>
+
+00:55:09.349 --> 00:55:09.359 align:start position:0%
+using Skype because that's all they use
+
+
+00:55:09.359 --> 00:55:11.150 align:start position:0%
+using Skype because that's all they use
+or<00:55:09.520><c> whatever</c><00:55:10.240><c> um</c><00:55:10.359><c> it's</c><00:55:10.480><c> very</c><00:55:10.640><c> easy</c><00:55:10.839><c> to</c><00:55:10.960><c> get</c>
+
+00:55:11.150 --> 00:55:11.160 align:start position:0%
+or whatever um it's very easy to get
+
+
+00:55:11.160 --> 00:55:13.430 align:start position:0%
+or whatever um it's very easy to get
+away<00:55:11.599><c> from</c><00:55:11.960><c> this</c><00:55:12.079><c> sort</c><00:55:12.240><c> of</c><00:55:12.480><c> core</c><00:55:12.880><c> philosophy</c>
+
+00:55:13.430 --> 00:55:13.440 align:start position:0%
+away from this sort of core philosophy
+
+
+00:55:13.440 --> 00:55:15.589 align:start position:0%
+away from this sort of core philosophy
+of<00:55:13.839><c> using</c><00:55:14.160><c> text</c><00:55:14.520><c> files</c><00:55:14.839><c> using</c><00:55:15.160><c> very</c><00:55:15.319><c> small</c>
+
+00:55:15.589 --> 00:55:15.599 align:start position:0%
+of using text files using very small
+
+
+00:55:15.599 --> 00:55:17.190 align:start position:0%
+of using text files using very small
+programs<00:55:15.880><c> that</c><00:55:16.040><c> commun</c><00:55:16.440><c> back</c><00:55:16.520><c> and</c><00:55:16.680><c> forth</c><00:55:17.079><c> It's</c>
+
+00:55:17.190 --> 00:55:17.200 align:start position:0%
+programs that commun back and forth It's
+
+
+00:55:17.200 --> 00:55:18.470 align:start position:0%
+programs that commun back and forth It's
+not
+
+00:55:18.470 --> 00:55:18.480 align:start position:0%
+not
+
+
+00:55:18.480 --> 00:55:22.029 align:start position:0%
+not
+practical<00:55:19.480><c> but</c><00:55:19.839><c> I'm</c><00:55:20.680><c> you</c><00:55:20.799><c> know</c><00:55:21.119><c> any</c><00:55:21.480><c> anybody</c>
+
+00:55:22.029 --> 00:55:22.039 align:start position:0%
+practical but I'm you know any anybody
+
+
+00:55:22.039 --> 00:55:24.150 align:start position:0%
+practical but I'm you know any anybody
+who<00:55:22.319><c> who</c><00:55:22.680><c> is</c><00:55:22.960><c> here</c><00:55:23.160><c> at</c><00:55:23.359><c> L</c><00:55:23.640><c> users</c><00:55:23.880><c> group</c><00:55:24.079><c> I</c>
+
+00:55:24.150 --> 00:55:24.160 align:start position:0%
+who who is here at L users group I
+
+
+00:55:24.160 --> 00:55:26.309 align:start position:0%
+who who is here at L users group I
+imagine<00:55:24.400><c> is</c><00:55:24.520><c> a</c><00:55:24.599><c> little</c><00:55:24.720><c> bit</c><00:55:24.839><c> of</c><00:55:24.920><c> an</c><00:55:25.160><c> idealist</c><00:55:26.160><c> I</c>
+
+00:55:26.309 --> 00:55:26.319 align:start position:0%
+imagine is a little bit of an idealist I
+
+
+00:55:26.319 --> 00:55:28.470 align:start position:0%
+imagine is a little bit of an idealist I
+I<00:55:26.440><c> know</c><00:55:26.640><c> I</c><00:55:26.799><c> am</c><00:55:27.240><c> that's</c><00:55:27.359><c> sort</c><00:55:27.520><c> of</c><00:55:27.640><c> my</c><00:55:27.799><c> core</c><00:55:28.359><c> and</c>
+
+00:55:28.470 --> 00:55:28.480 align:start position:0%
+I know I am that's sort of my core and
+
+
+00:55:28.480 --> 00:55:30.230 align:start position:0%
+I know I am that's sort of my core and
+so<00:55:28.680><c> by</c><00:55:28.760><c> using</c><00:55:29.000><c> the</c><00:55:29.079><c> Rasberry</c><00:55:29.599><c> Pi</c><00:55:29.799><c> I've</c><00:55:29.960><c> managed</c>
+
+00:55:30.230 --> 00:55:30.240 align:start position:0%
+so by using the Rasberry Pi I've managed
+
+
+00:55:30.240 --> 00:55:32.470 align:start position:0%
+so by using the Rasberry Pi I've managed
+to<00:55:30.440><c> bring</c><00:55:30.760><c> back</c><00:55:31.000><c> the</c><00:55:31.119><c> fun</c><00:55:31.359><c> of</c><00:55:31.559><c> development</c><00:55:32.319><c> by</c>
+
+00:55:32.470 --> 00:55:32.480 align:start position:0%
+to bring back the fun of development by
+
+
+00:55:32.480 --> 00:55:35.470 align:start position:0%
+to bring back the fun of development by
+getting<00:55:32.720><c> to</c><00:55:33.280><c> uh</c><00:55:33.440><c> work</c><00:55:33.720><c> in</c><00:55:34.440><c> not</c><00:55:34.760><c> an</c><00:55:35.000><c> ideal</c>
+
+00:55:35.470 --> 00:55:35.480 align:start position:0%
+getting to uh work in not an ideal
+
+
+00:55:35.480 --> 00:55:37.630 align:start position:0%
+getting to uh work in not an ideal
+environment<00:55:35.960><c> as</c><00:55:36.079><c> in</c><00:55:36.440><c> the</c><00:55:36.680><c> most</c><00:55:37.039><c> powerful</c><00:55:37.440><c> or</c>
+
+00:55:37.630 --> 00:55:37.640 align:start position:0%
+environment as in the most powerful or
+
+
+00:55:37.640 --> 00:55:40.309 align:start position:0%
+environment as in the most powerful or
+the<00:55:37.799><c> most</c><00:55:38.319><c> um</c><00:55:38.520><c> you</c><00:55:38.640><c> know</c><00:55:39.000><c> pretty</c><00:55:39.559><c> but</c><00:55:39.680><c> an</c><00:55:39.920><c> ideal</c>
+
+00:55:40.309 --> 00:55:40.319 align:start position:0%
+the most um you know pretty but an ideal
+
+
+00:55:40.319 --> 00:55:42.270 align:start position:0%
+the most um you know pretty but an ideal
+environment<00:55:40.799><c> as</c><00:55:40.880><c> in</c><00:55:41.119><c> one</c><00:55:41.319><c> that</c><00:55:41.520><c> really</c><00:55:41.799><c> fits</c>
+
+00:55:42.270 --> 00:55:42.280 align:start position:0%
+environment as in one that really fits
+
+
+00:55:42.280 --> 00:55:44.589 align:start position:0%
+environment as in one that really fits
+the<00:55:42.440><c> things</c><00:55:42.640><c> that</c><00:55:42.880><c> I</c><00:55:43.160><c> love</c><00:55:43.480><c> about</c><00:55:43.720><c> Computing</c>
+
+00:55:44.589 --> 00:55:44.599 align:start position:0%
+the things that I love about Computing
+
+
+00:55:44.599 --> 00:55:46.390 align:start position:0%
+the things that I love about Computing
+and<00:55:44.799><c> fits</c><00:55:45.160><c> my</c><00:55:45.280><c> sort</c><00:55:45.440><c> of</c><00:55:45.599><c> ideals</c><00:55:45.960><c> for</c><00:55:46.160><c> how</c><00:55:46.319><c> I</c>
+
+00:55:46.390 --> 00:55:46.400 align:start position:0%
+and fits my sort of ideals for how I
+
+
+00:55:46.400 --> 00:55:48.789 align:start position:0%
+and fits my sort of ideals for how I
+want<00:55:46.599><c> programs</c><00:55:46.960><c> to</c><00:55:47.119><c> work</c><00:55:47.839><c> so</c><00:55:48.240><c> anyway</c><00:55:48.599><c> does</c>
+
+00:55:48.789 --> 00:55:48.799 align:start position:0%
+want programs to work so anyway does
+
+
+00:55:48.799 --> 00:55:50.630 align:start position:0%
+want programs to work so anyway does
+anyone<00:55:49.119><c> have</c><00:55:49.319><c> any</c><00:55:49.520><c> questions</c><00:55:49.880><c> about</c><00:55:50.240><c> uh</c><00:55:50.440><c> how</c>
+
+00:55:50.630 --> 00:55:50.640 align:start position:0%
+anyone have any questions about uh how
+
+
+00:55:50.640 --> 00:55:54.789 align:start position:0%
+anyone have any questions about uh how
+you<00:55:50.760><c> can</c><00:55:50.960><c> get</c><00:55:51.119><c> set</c><00:55:51.359><c> up</c><00:55:51.760><c> on</c><00:55:51.920><c> on</c><00:55:52.200><c> here</c><00:55:52.960><c> um</c><00:55:53.960><c> but</c><00:55:54.480><c> oh</c>
+
+00:55:54.789 --> 00:55:54.799 align:start position:0%
+you can get set up on on here um but oh
+
+
+00:55:54.799 --> 00:55:55.710 align:start position:0%
+you can get set up on on here um but oh
+there's<00:55:54.960><c> one</c><00:55:55.079><c> other</c><00:55:55.200><c> thing</c><00:55:55.319><c> I</c><00:55:55.359><c> want</c><00:55:55.480><c> to</c><00:55:55.599><c> talk</c>
+
+00:55:55.710 --> 00:55:55.720 align:start position:0%
+there's one other thing I want to talk
+
+
+00:55:55.720 --> 00:55:56.829 align:start position:0%
+there's one other thing I want to talk
+about<00:55:55.920><c> real</c><00:55:56.079><c> quick</c>
+
+00:55:56.829 --> 00:55:56.839 align:start position:0%
+about real quick
+
+
+00:55:56.839 --> 00:55:59.150 align:start position:0%
+about real quick
+um<00:55:57.240><c> since</c><00:55:57.599><c> no</c><00:55:57.760><c> one</c><00:55:58.160><c> slamed</c><00:55:58.680><c> their</c><00:55:58.760><c> hand</c><00:55:58.920><c> up</c>
+
+00:55:59.150 --> 00:55:59.160 align:start position:0%
+um since no one slamed their hand up
+
+
+00:55:59.160 --> 00:56:02.190 align:start position:0%
+um since no one slamed their hand up
+there<00:55:59.960><c> um</c><00:56:00.599><c> there's</c><00:56:00.760><c> a</c><00:56:01.039><c> really</c><00:56:01.480><c> great</c><00:56:01.880><c> program</c>
+
+00:56:02.190 --> 00:56:02.200 align:start position:0%
+there um there's a really great program
+
+
+00:56:02.200 --> 00:56:03.630 align:start position:0%
+there um there's a really great program
+out<00:56:02.359><c> there</c><00:56:02.520><c> that</c><00:56:02.720><c> unfortunately</c><00:56:03.319><c> because</c>
+
+00:56:03.630 --> 00:56:03.640 align:start position:0%
+out there that unfortunately because
+
+
+00:56:03.640 --> 00:56:05.270 align:start position:0%
+out there that unfortunately because
+Network<00:56:03.960><c> situations</c><00:56:04.400><c> I</c><00:56:04.520><c> can't</c><00:56:04.640><c> demote</c><00:56:05.000><c> to</c><00:56:05.079><c> you</c>
+
+00:56:05.270 --> 00:56:05.280 align:start position:0%
+Network situations I can't demote to you
+
+
+00:56:05.280 --> 00:56:07.029 align:start position:0%
+Network situations I can't demote to you
+but<00:56:05.640><c> I</c><00:56:05.720><c> will</c><00:56:05.880><c> definitely</c><00:56:06.160><c> demote</c><00:56:06.599><c> to</c><00:56:06.760><c> anyone</c>
+
+00:56:07.029 --> 00:56:07.039 align:start position:0%
+but I will definitely demote to anyone
+
+
+00:56:07.039 --> 00:56:08.789 align:start position:0%
+but I will definitely demote to anyone
+on<00:56:07.200><c> Saturday</c><00:56:07.520><c> who</c><00:56:07.640><c> wants</c><00:56:07.839><c> to</c><00:56:07.920><c> see</c><00:56:08.079><c> it</c><00:56:08.440><c> Ada</c><00:56:08.680><c> a</c>
+
+00:56:08.789 --> 00:56:08.799 align:start position:0%
+on Saturday who wants to see it Ada a
+
+
+00:56:08.799 --> 00:56:10.430 align:start position:0%
+on Saturday who wants to see it Ada a
+fruit<00:56:09.039><c> the</c><00:56:09.119><c> same</c><00:56:09.319><c> people</c><00:56:09.599><c> who</c><00:56:10.079><c> um</c><00:56:10.240><c> you</c><00:56:10.319><c> know</c>
+
+00:56:10.430 --> 00:56:10.440 align:start position:0%
+fruit the same people who um you know
+
+
+00:56:10.440 --> 00:56:11.630 align:start position:0%
+fruit the same people who um you know
+you<00:56:10.520><c> could</c><00:56:10.640><c> buy</c><00:56:10.760><c> a</c><00:56:10.839><c> raspberry</c><00:56:11.200><c> piie</c><00:56:11.319><c> firm</c><00:56:11.520><c> and</c>
+
+00:56:11.630 --> 00:56:11.640 align:start position:0%
+you could buy a raspberry piie firm and
+
+
+00:56:11.640 --> 00:56:13.430 align:start position:0%
+you could buy a raspberry piie firm and
+lots<00:56:11.839><c> of</c><00:56:12.119><c> of</c><00:56:12.280><c> tools</c><00:56:12.520><c> for</c><00:56:12.680><c> it</c><00:56:13.119><c> they</c><00:56:13.240><c> have</c><00:56:13.319><c> a</c>
+
+00:56:13.430 --> 00:56:13.440 align:start position:0%
+lots of of tools for it they have a
+
+
+00:56:13.440 --> 00:56:15.309 align:start position:0%
+lots of of tools for it they have a
+great<00:56:13.599><c> thing</c><00:56:13.720><c> out</c><00:56:13.839><c> there</c><00:56:13.960><c> called</c><00:56:14.079><c> a</c><00:56:14.200><c> web</c><00:56:14.400><c> IDE</c>
+
+00:56:15.309 --> 00:56:15.319 align:start position:0%
+great thing out there called a web IDE
+
+
+00:56:15.319 --> 00:56:17.470 align:start position:0%
+great thing out there called a web IDE
+uh<00:56:15.400><c> for</c><00:56:15.559><c> the</c><00:56:15.680><c> Raspberry</c><00:56:16.160><c> Pi</c><00:56:16.839><c> uh</c><00:56:16.960><c> you</c><00:56:17.119><c> install</c>
+
+00:56:17.470 --> 00:56:17.480 align:start position:0%
+uh for the Raspberry Pi uh you install
+
+
+00:56:17.480 --> 00:56:18.910 align:start position:0%
+uh for the Raspberry Pi uh you install
+on<00:56:17.640><c> there</c><00:56:17.799><c> it</c><00:56:17.920><c> runs</c><00:56:18.240><c> you</c><00:56:18.359><c> put</c><00:56:18.480><c> your</c><00:56:18.559><c> Raspberry</c>
+
+00:56:18.910 --> 00:56:18.920 align:start position:0%
+on there it runs you put your Raspberry
+
+
+00:56:18.920 --> 00:56:20.630 align:start position:0%
+on there it runs you put your Raspberry
+Pi<00:56:19.039><c> in</c><00:56:19.119><c> the</c><00:56:19.240><c> corner</c><00:56:19.839><c> you</c><00:56:19.920><c> don't</c><00:56:20.119><c> ever</c><00:56:20.400><c> have</c><00:56:20.520><c> to</c>
+
+00:56:20.630 --> 00:56:20.640 align:start position:0%
+Pi in the corner you don't ever have to
+
+
+00:56:20.640 --> 00:56:22.029 align:start position:0%
+Pi in the corner you don't ever have to
+think<00:56:20.799><c> about</c><00:56:20.920><c> it</c><00:56:21.119><c> again</c><00:56:21.359><c> because</c><00:56:21.520><c> it</c><00:56:21.720><c> uses</c>
+
+00:56:22.029 --> 00:56:22.039 align:start position:0%
+think about it again because it uses
+
+
+00:56:22.039 --> 00:56:24.990 align:start position:0%
+think about it again because it uses
+aaji<00:56:22.680><c> to</c><00:56:23.480><c> broadcast</c><00:56:24.119><c> its</c><00:56:24.319><c> domain</c><00:56:24.599><c> name</c><00:56:24.799><c> out</c>
+
+00:56:24.990 --> 00:56:25.000 align:start position:0%
+aaji to broadcast its domain name out
+
+
+00:56:25.000 --> 00:56:27.270 align:start position:0%
+aaji to broadcast its domain name out
+there<00:56:25.280><c> so</c><00:56:25.960><c> you're</c><00:56:26.440><c> at</c><00:56:26.559><c> home</c><00:56:26.720><c> you</c><00:56:26.920><c> type</c><00:56:27.079><c> in</c>
+
+00:56:27.270 --> 00:56:27.280 align:start position:0%
+there so you're at home you type in
+
+
+00:56:27.280 --> 00:56:29.349 align:start position:0%
+there so you're at home you type in
+raspberry<00:56:27.720><c> pi.</c><00:56:28.079><c> local</c><00:56:28.839><c> gives</c><00:56:29.000><c> you</c><00:56:29.160><c> a</c>
+
+00:56:29.349 --> 00:56:29.359 align:start position:0%
+raspberry pi. local gives you a
+
+
+00:56:29.359 --> 00:56:32.270 align:start position:0%
+raspberry pi. local gives you a
+beautiful<00:56:29.960><c> web-based</c><00:56:30.880><c> uh</c><00:56:31.160><c> uh</c><00:56:31.319><c> IDE</c><00:56:31.720><c> to</c><00:56:31.920><c> develop</c>
+
+00:56:32.270 --> 00:56:32.280 align:start position:0%
+beautiful web-based uh uh IDE to develop
+
+
+00:56:32.280 --> 00:56:34.510 align:start position:0%
+beautiful web-based uh uh IDE to develop
+python<00:56:32.680><c> in</c><00:56:33.039><c> so</c><00:56:33.200><c> if</c><00:56:33.280><c> you're</c><00:56:33.400><c> a</c><00:56:33.559><c> python</c><00:56:34.280><c> uh</c>
+
+00:56:34.510 --> 00:56:34.520 align:start position:0%
+python in so if you're a python uh
+
+
+00:56:34.520 --> 00:56:37.150 align:start position:0%
+python in so if you're a python uh
+person<00:56:35.400><c> uh</c><00:56:35.520><c> it's</c><00:56:35.640><c> a</c><00:56:35.799><c> really</c><00:56:36.039><c> cool</c><00:56:36.280><c> tool</c><00:56:36.760><c> that</c>
+
+00:56:37.150 --> 00:56:37.160 align:start position:0%
+person uh it's a really cool tool that
+
+
+00:56:37.160 --> 00:56:39.470 align:start position:0%
+person uh it's a really cool tool that
+um<00:56:37.559><c> they</c><00:56:37.760><c> include</c><00:56:38.119><c> a</c><00:56:38.280><c> debugger</c><00:56:39.160><c> and</c><00:56:39.319><c> a</c>
+
+00:56:39.470 --> 00:56:39.480 align:start position:0%
+um they include a debugger and a
+
+
+00:56:39.480 --> 00:56:41.309 align:start position:0%
+um they include a debugger and a
+visualizer<00:56:40.000><c> for</c><00:56:40.160><c> the</c><00:56:40.319><c> code</c><00:56:40.680><c> all</c><00:56:40.880><c> within</c><00:56:41.160><c> the</c>
+
+00:56:41.309 --> 00:56:41.319 align:start position:0%
+visualizer for the code all within the
+
+
+00:56:41.319 --> 00:56:43.910 align:start position:0%
+visualizer for the code all within the
+web<00:56:41.640><c> browser</c><00:56:42.039><c> so</c><00:56:42.359><c> it's</c><00:56:42.599><c> another</c><00:56:42.960><c> good</c><00:56:43.160><c> way</c><00:56:43.280><c> to</c>
+
+00:56:43.910 --> 00:56:43.920 align:start position:0%
+web browser so it's another good way to
+
+
+00:56:43.920 --> 00:56:45.270 align:start position:0%
+web browser so it's another good way to
+uh<00:56:44.039><c> program</c><00:56:44.400><c> on</c><00:56:44.559><c> your</c><00:56:44.680><c> pie</c><00:56:44.880><c> that</c><00:56:45.000><c> I've</c><00:56:45.079><c> seen</c><00:56:45.200><c> a</c>
+
+00:56:45.270 --> 00:56:45.280 align:start position:0%
+uh program on your pie that I've seen a
+
+
+00:56:45.280 --> 00:56:47.390 align:start position:0%
+uh program on your pie that I've seen a
+lot<00:56:45.359><c> of</c><00:56:45.480><c> people</c><00:56:45.680><c> do</c><00:56:46.280><c> which</c><00:56:46.400><c> is</c><00:56:46.520><c> to</c><00:56:46.680><c> use</c><00:56:46.880><c> it</c><00:56:47.240><c> as</c>
+
+00:56:47.390 --> 00:56:47.400 align:start position:0%
+lot of people do which is to use it as
+
+
+00:56:47.400 --> 00:56:49.589 align:start position:0%
+lot of people do which is to use it as
+sort<00:56:47.599><c> of</c><00:56:47.680><c> a</c><00:56:47.880><c> remote</c><00:56:48.280><c> machine</c><00:56:48.760><c> either</c><00:56:49.039><c> sshing</c>
+
+00:56:49.589 --> 00:56:49.599 align:start position:0%
+sort of a remote machine either sshing
+
+
+00:56:49.599 --> 00:56:54.430 align:start position:0%
+sort of a remote machine either sshing
+into<00:56:49.839><c> it</c><00:56:50.000><c> developing</c><00:56:50.880><c> or</c><00:56:51.599><c> uh</c><00:56:51.880><c> uh</c><00:56:52.000><c> using</c><00:56:52.400><c> web</c><00:56:52.640><c> ID</c>
+
+00:56:54.430 --> 00:56:54.440 align:start position:0%
+into it developing or uh uh using web ID
+
+
+00:56:54.440 --> 00:56:56.670 align:start position:0%
+into it developing or uh uh using web ID
+anyway<00:56:55.440><c> there's</c><00:56:55.640><c> nothing</c><00:56:55.880><c> else</c><00:56:56.400><c> I'm</c><00:56:56.520><c> going</c><00:56:56.599><c> to</c>
+
+00:56:56.670 --> 00:56:56.680 align:start position:0%
+anyway there's nothing else I'm going to
+
+
+00:56:56.680 --> 00:57:02.950 align:start position:0%
+anyway there's nothing else I'm going to
+turn<00:56:56.880><c> over</c><00:56:57.000><c> to</c>
+
+00:57:02.950 --> 00:57:02.960 align:start position:0%
+
+
+
+00:57:02.960 --> 00:57:09.990 align:start position:0%
+
+[Applause]
+
+00:57:09.990 --> 00:57:10.000 align:start position:0%
+
+
+
+00:57:10.000 --> 00:57:13.470 align:start position:0%
+
+Peter<00:57:11.000><c> hello</c><00:57:11.720><c> uh</c><00:57:12.400><c> so</c><00:57:12.839><c> whenever</c><00:57:13.160><c> you</c><00:57:13.280><c> have</c><00:57:13.359><c> a</c>
+
+00:57:13.470 --> 00:57:13.480 align:start position:0%
+Peter hello uh so whenever you have a
+
+
+00:57:13.480 --> 00:57:16.390 align:start position:0%
+Peter hello uh so whenever you have a
+panel<00:57:13.760><c> of</c><00:57:13.920><c> people</c><00:57:14.520><c> um</c><00:57:14.720><c> and</c><00:57:14.839><c> of</c><00:57:14.960><c> course</c><00:57:15.119><c> I</c><00:57:15.400><c> had</c>
+
+00:57:16.390 --> 00:57:16.400 align:start position:0%
+panel of people um and of course I had
+
+
+00:57:16.400 --> 00:57:18.950 align:start position:0%
+panel of people um and of course I had
+met<00:57:16.839><c> dryb</c><00:57:17.720><c> before</c><00:57:18.000><c> tonight</c><00:57:18.520><c> but</c><00:57:18.640><c> whenever</c><00:57:18.880><c> you</c>
+
+00:57:18.950 --> 00:57:18.960 align:start position:0%
+met dryb before tonight but whenever you
+
+
+00:57:18.960 --> 00:57:19.990 align:start position:0%
+met dryb before tonight but whenever you
+have<00:57:19.039><c> a</c><00:57:19.119><c> panel</c><00:57:19.359><c> you're</c><00:57:19.480><c> gonna</c><00:57:19.680><c> have</c><00:57:19.760><c> to</c><00:57:19.880><c> have</c>
+
+00:57:19.990 --> 00:57:20.000 align:start position:0%
+have a panel you're gonna have to have
+
+
+00:57:20.000 --> 00:57:21.710 align:start position:0%
+have a panel you're gonna have to have
+people<00:57:20.240><c> that</c><00:57:20.400><c> contradict</c><00:57:20.839><c> each</c><00:57:20.960><c> other</c><00:57:21.200><c> so</c><00:57:21.599><c> I'm</c>
+
+00:57:21.710 --> 00:57:21.720 align:start position:0%
+people that contradict each other so I'm
+
+
+00:57:21.720 --> 00:57:23.390 align:start position:0%
+people that contradict each other so I'm
+going<00:57:21.799><c> to</c><00:57:21.920><c> start</c><00:57:22.079><c> out</c><00:57:22.240><c> by</c><00:57:22.359><c> saying</c><00:57:22.720><c> emac</c><00:57:23.160><c> works</c>
+
+00:57:23.390 --> 00:57:23.400 align:start position:0%
+going to start out by saying emac works
+
+
+00:57:23.400 --> 00:57:26.309 align:start position:0%
+going to start out by saying emac works
+great<00:57:23.599><c> on</c><00:57:23.760><c> Raspberry</c><00:57:24.200><c> Pie</c>
+
+00:57:26.309 --> 00:57:26.319 align:start position:0%
+great on Raspberry Pie
+
+
+00:57:26.319 --> 00:57:28.470 align:start position:0%
+great on Raspberry Pie
+PR<00:57:26.680><c> easy</c><00:57:27.559><c> but</c><00:57:27.680><c> I</c><00:57:27.760><c> don't</c><00:57:27.880><c> use</c><00:57:28.039><c> an</c><00:57:28.160><c> awesome</c>
+
+00:57:28.470 --> 00:57:28.480 align:start position:0%
+PR easy but I don't use an awesome
+
+
+00:57:28.480 --> 00:57:31.190 align:start position:0%
+PR easy but I don't use an awesome
+window<00:57:28.839><c> manager</c><00:57:29.160><c> and</c><00:57:29.280><c> that</c><00:57:29.400><c> might</c><00:57:29.520><c> be</c><00:57:29.640><c> the</c>
+
+00:57:31.190 --> 00:57:31.200 align:start position:0%
+window manager and that might be the
+
+
+00:57:31.200 --> 00:57:35.390 align:start position:0%
+window manager and that might be the
+difference<00:57:32.200><c> so</c><00:57:32.839><c> so</c><00:57:33.039><c> I'm</c><00:57:33.240><c> the</c><00:57:33.640><c> uh</c><00:57:34.319><c> exhibits</c><00:57:35.240><c> uh</c>
+
+00:57:35.390 --> 00:57:35.400 align:start position:0%
+difference so so I'm the uh exhibits uh
+
+
+00:57:35.400 --> 00:57:36.910 align:start position:0%
+difference so so I'm the uh exhibits uh
+engineer<00:57:35.799><c> at</c><00:57:35.920><c> the</c><00:57:36.039><c> Museum</c><00:57:36.319><c> of</c><00:57:36.440><c> Life</c><00:57:36.680><c> Science</c>
+
+00:57:36.910 --> 00:57:36.920 align:start position:0%
+engineer at the Museum of Life Science
+
+
+00:57:36.920 --> 00:57:39.150 align:start position:0%
+engineer at the Museum of Life Science
+and<00:57:37.079><c> Duram</c><00:57:38.000><c> and</c><00:57:38.160><c> I</c><00:57:38.400><c> have</c><00:57:38.559><c> to</c><00:57:38.640><c> work</c><00:57:38.799><c> with</c><00:57:38.960><c> a</c><00:57:39.039><c> lot</c>
+
+00:57:39.150 --> 00:57:39.160 align:start position:0%
+and Duram and I have to work with a lot
+
+
+00:57:39.160 --> 00:57:40.990 align:start position:0%
+and Duram and I have to work with a lot
+of<00:57:39.319><c> different</c><00:57:39.599><c> microcontrollers</c><00:57:40.520><c> and</c><00:57:40.720><c> such</c>
+
+00:57:40.990 --> 00:57:41.000 align:start position:0%
+of different microcontrollers and such
+
+
+00:57:41.000 --> 00:57:43.430 align:start position:0%
+of different microcontrollers and such
+like<00:57:41.359><c> uh</c><00:57:41.640><c> pick</c><00:57:41.880><c> microcontrollers</c><00:57:42.720><c> and</c><00:57:43.280><c> now</c>
+
+00:57:43.430 --> 00:57:43.440 align:start position:0%
+like uh pick microcontrollers and now
+
+
+00:57:43.440 --> 00:57:45.190 align:start position:0%
+like uh pick microcontrollers and now
+I'm<00:57:43.520><c> starting</c><00:57:43.760><c> to</c><00:57:43.839><c> use</c><00:57:44.000><c> Arduino</c><00:57:44.720><c> things</c><00:57:44.960><c> like</c>
+
+00:57:45.190 --> 00:57:45.200 align:start position:0%
+I'm starting to use Arduino things like
+
+
+00:57:45.200 --> 00:57:48.230 align:start position:0%
+I'm starting to use Arduino things like
+that<00:57:45.720><c> so</c><00:57:45.960><c> the</c><00:57:46.119><c> the</c><00:57:46.280><c> real</c><00:57:46.880><c> difference</c><00:57:47.400><c> the</c><00:57:48.119><c> what</c>
+
+00:57:48.230 --> 00:57:48.240 align:start position:0%
+that so the the real difference the what
+
+
+00:57:48.240 --> 00:57:49.829 align:start position:0%
+that so the the real difference the what
+a<00:57:48.359><c> microcontroller</c><00:57:49.039><c> is</c><00:57:49.160><c> is</c><00:57:49.359><c> a</c><00:57:49.480><c> computer</c>
+
+00:57:49.829 --> 00:57:49.839 align:start position:0%
+a microcontroller is is a computer
+
+
+00:57:49.839 --> 00:57:51.029 align:start position:0%
+a microcontroller is is a computer
+that's<00:57:50.000><c> so</c><00:57:50.240><c> simple</c><00:57:50.480><c> it</c><00:57:50.599><c> can't</c><00:57:50.799><c> have</c><00:57:50.920><c> an</c>
+
+00:57:51.029 --> 00:57:51.039 align:start position:0%
+that's so simple it can't have an
+
+
+00:57:51.039 --> 00:57:53.390 align:start position:0%
+that's so simple it can't have an
+operating<00:57:51.440><c> system</c><00:57:52.119><c> and</c><00:57:52.319><c> basically</c><00:57:53.079><c> anything</c>
+
+00:57:53.390 --> 00:57:53.400 align:start position:0%
+operating system and basically anything
+
+
+00:57:53.400 --> 00:57:54.549 align:start position:0%
+operating system and basically anything
+below<00:57:53.640><c> that</c><00:57:53.799><c> line</c><00:57:54.079><c> we</c><00:57:54.200><c> call</c><00:57:54.359><c> it</c><00:57:54.440><c> a</c>
+
+00:57:54.549 --> 00:57:54.559 align:start position:0%
+below that line we call it a
+
+
+00:57:54.559 --> 00:57:56.789 align:start position:0%
+below that line we call it a
+microcontroller<00:57:55.559><c> and</c><00:57:56.240><c> last</c><00:57:56.400><c> couple</c><00:57:56.640><c> years</c>
+
+00:57:56.789 --> 00:57:56.799 align:start position:0%
+microcontroller and last couple years
+
+
+00:57:56.799 --> 00:57:58.109 align:start position:0%
+microcontroller and last couple years
+microcontrollers<00:57:57.359><c> have</c><00:57:57.480><c> got</c><00:57:57.680><c> more</c><00:57:57.799><c> and</c><00:57:57.920><c> more</c>
+
+00:57:58.109 --> 00:57:58.119 align:start position:0%
+microcontrollers have got more and more
+
+
+00:57:58.119 --> 00:57:59.190 align:start position:0%
+microcontrollers have got more and more
+complicated<00:57:58.559><c> we</c><00:57:58.680><c> have</c><00:57:58.799><c> things</c><00:57:58.920><c> like</c><00:57:59.039><c> the</c>
+
+00:57:59.190 --> 00:57:59.200 align:start position:0%
+complicated we have things like the
+
+
+00:57:59.200 --> 00:58:01.589 align:start position:0%
+complicated we have things like the
+Arduino<00:57:59.640><c> and</c><00:57:59.799><c> really</c><00:58:00.000><c> nice</c><00:58:00.280><c> things</c><00:58:01.200><c> um</c><00:58:01.440><c> but</c>
+
+00:58:01.589 --> 00:58:01.599 align:start position:0%
+Arduino and really nice things um but
+
+
+00:58:01.599 --> 00:58:04.349 align:start position:0%
+Arduino and really nice things um but
+I'm<00:58:01.720><c> always</c><00:58:02.000><c> looking</c><00:58:02.760><c> for</c><00:58:03.760><c> uh</c><00:58:03.880><c> where</c><00:58:04.079><c> does</c><00:58:04.240><c> the</c>
+
+00:58:04.349 --> 00:58:04.359 align:start position:0%
+I'm always looking for uh where does the
+
+
+00:58:04.359 --> 00:58:05.990 align:start position:0%
+I'm always looking for uh where does the
+computer<00:58:04.640><c> with</c><00:58:04.760><c> an</c><00:58:04.880><c> operating</c><00:58:05.200><c> system</c><00:58:05.480><c> start</c>
+
+00:58:05.990 --> 00:58:06.000 align:start position:0%
+computer with an operating system start
+
+
+00:58:06.000 --> 00:58:07.430 align:start position:0%
+computer with an operating system start
+because<00:58:06.359><c> I</c><00:58:06.440><c> would</c><00:58:06.640><c> love</c><00:58:06.799><c> to</c><00:58:06.920><c> be</c><00:58:07.039><c> working</c><00:58:07.240><c> on</c><00:58:07.359><c> a</c>
+
+00:58:07.430 --> 00:58:07.440 align:start position:0%
+because I would love to be working on a
+
+
+00:58:07.440 --> 00:58:09.710 align:start position:0%
+because I would love to be working on a
+microcontroller<00:58:08.160><c> and</c><00:58:08.319><c> just</c><00:58:08.480><c> fire</c><00:58:08.760><c> up</c><00:58:08.920><c> emac</c>
+
+00:58:09.710 --> 00:58:09.720 align:start position:0%
+microcontroller and just fire up emac
+
+
+00:58:09.720 --> 00:58:11.510 align:start position:0%
+microcontroller and just fire up emac
+change<00:58:10.119><c> something</c><00:58:10.559><c> and</c><00:58:10.680><c> write</c><00:58:10.880><c> it</c><00:58:10.960><c> out</c><00:58:11.200><c> and</c><00:58:11.280><c> so</c>
+
+00:58:11.510 --> 00:58:11.520 align:start position:0%
+change something and write it out and so
+
+
+00:58:11.520 --> 00:58:13.270 align:start position:0%
+change something and write it out and so
+again<00:58:11.799><c> I</c><00:58:12.160><c> having</c><00:58:12.319><c> a</c><00:58:12.440><c> development</c><00:58:12.960><c> system</c>
+
+00:58:13.270 --> 00:58:13.280 align:start position:0%
+again I having a development system
+
+
+00:58:13.280 --> 00:58:15.549 align:start position:0%
+again I having a development system
+that's<00:58:13.440><c> also</c><00:58:13.680><c> your</c><00:58:13.880><c> target</c><00:58:14.200><c> systems</c><00:58:14.799><c> right</c><00:58:15.319><c> so</c>
+
+00:58:15.549 --> 00:58:15.559 align:start position:0%
+that's also your target systems right so
+
+
+00:58:15.559 --> 00:58:17.230 align:start position:0%
+that's also your target systems right so
+my<00:58:15.760><c> question</c><00:58:16.079><c> that</c><00:58:16.280><c> I</c><00:58:16.520><c> that</c><00:58:16.640><c> I</c><00:58:16.839><c> tried</c><00:58:17.079><c> to</c>
+
+00:58:17.230 --> 00:58:17.240 align:start position:0%
+my question that I that I tried to
+
+
+00:58:17.240 --> 00:58:20.670 align:start position:0%
+my question that I that I tried to
+answer<00:58:17.799><c> uh</c><00:58:18.440><c> the</c><00:58:18.559><c> last</c><00:58:19.240><c> sparkon</c><00:58:20.240><c> and</c><00:58:20.480><c> what</c><00:58:20.559><c> I</c>
+
+00:58:20.670 --> 00:58:20.680 align:start position:0%
+answer uh the last sparkon and what I
+
+
+00:58:20.680 --> 00:58:22.710 align:start position:0%
+answer uh the last sparkon and what I
+built<00:58:20.920><c> this</c><00:58:21.079><c> thing</c><00:58:21.240><c> for</c><00:58:21.880><c> is</c><00:58:22.039><c> can</c><00:58:22.599><c> high</c>
+
+00:58:22.710 --> 00:58:22.720 align:start position:0%
+built this thing for is can high
+
+
+00:58:22.720 --> 00:58:24.589 align:start position:0%
+built this thing for is can high
+performance<00:58:23.079><c> significant</c><00:58:23.559><c> image</c><00:58:23.880><c> processing</c>
+
+00:58:24.589 --> 00:58:24.599 align:start position:0%
+performance significant image processing
+
+
+00:58:24.599 --> 00:58:26.150 align:start position:0%
+performance significant image processing
+and<00:58:24.760><c> do</c><00:58:24.960><c> something</c><00:58:25.160><c> useful</c><00:58:25.480><c> with</c><00:58:25.599><c> some</c><00:58:25.720><c> Motors</c>
+
+00:58:26.150 --> 00:58:26.160 align:start position:0%
+and do something useful with some Motors
+
+
+00:58:26.160 --> 00:58:29.270 align:start position:0%
+and do something useful with some Motors
+so<00:58:26.880><c> I</c><00:58:26.960><c> work</c><00:58:27.240><c> with</c><00:58:27.599><c> um</c><00:58:28.400><c> microcontrollers</c><00:58:29.119><c> that</c>
+
+00:58:29.270 --> 00:58:29.280 align:start position:0%
+so I work with um microcontrollers that
+
+
+00:58:29.280 --> 00:58:30.910 align:start position:0%
+so I work with um microcontrollers that
+do<00:58:29.440><c> stepper</c><00:58:29.799><c> Motors</c><00:58:30.119><c> and</c><00:58:30.240><c> move</c><00:58:30.440><c> things</c><00:58:30.640><c> around</c>
+
+00:58:30.910 --> 00:58:30.920 align:start position:0%
+do stepper Motors and move things around
+
+
+00:58:30.920 --> 00:58:32.349 align:start position:0%
+do stepper Motors and move things around
+I<00:58:31.000><c> thought</c><00:58:31.200><c> my</c><00:58:31.319><c> right</c><00:58:31.520><c> R</c><00:58:31.760><c> pie</c><00:58:31.920><c> needs</c><00:58:32.079><c> to</c><00:58:32.200><c> have</c>
+
+00:58:32.349 --> 00:58:32.359 align:start position:0%
+I thought my right R pie needs to have
+
+
+00:58:32.359 --> 00:58:33.910 align:start position:0%
+I thought my right R pie needs to have
+hands<00:58:32.760><c> needs</c><00:58:32.960><c> to</c><00:58:33.039><c> be</c><00:58:33.119><c> able</c><00:58:33.280><c> to</c><00:58:33.359><c> do</c><00:58:33.599><c> stuff</c><00:58:33.799><c> and</c>
+
+00:58:33.910 --> 00:58:33.920 align:start position:0%
+hands needs to be able to do stuff and
+
+
+00:58:33.920 --> 00:58:36.470 align:start position:0%
+hands needs to be able to do stuff and
+move<00:58:34.240><c> stuff</c><00:58:34.480><c> around</c><00:58:35.440><c> um</c><00:58:35.680><c> and</c><00:58:35.839><c> of</c><00:58:36.000><c> course</c><00:58:36.359><c> then</c>
+
+00:58:36.470 --> 00:58:36.480 align:start position:0%
+move stuff around um and of course then
+
+
+00:58:36.480 --> 00:58:38.390 align:start position:0%
+move stuff around um and of course then
+the<00:58:36.599><c> real</c><00:58:36.920><c> challenge</c><00:58:37.280><c> is</c><00:58:37.559><c> okay</c><00:58:37.799><c> how</c><00:58:38.079><c> capable</c>
+
+00:58:38.390 --> 00:58:38.400 align:start position:0%
+the real challenge is okay how capable
+
+
+00:58:38.400 --> 00:58:40.109 align:start position:0%
+the real challenge is okay how capable
+is<00:58:38.520><c> the</c><00:58:38.680><c> machine</c><00:58:39.359><c> can</c><00:58:39.480><c> we</c><00:58:39.599><c> do</c><00:58:39.720><c> something</c><00:58:39.960><c> like</c>
+
+00:58:40.109 --> 00:58:40.119 align:start position:0%
+is the machine can we do something like
+
+
+00:58:40.119 --> 00:58:41.870 align:start position:0%
+is the machine can we do something like
+image<00:58:40.440><c> processing</c><00:58:40.839><c> on</c><00:58:41.000><c> it</c><00:58:41.119><c> so</c><00:58:41.319><c> can</c><00:58:41.440><c> we</c><00:58:41.559><c> give</c><00:58:41.680><c> it</c>
+
+00:58:41.870 --> 00:58:41.880 align:start position:0%
+image processing on it so can we give it
+
+
+00:58:41.880 --> 00:58:44.150 align:start position:0%
+image processing on it so can we give it
+eyes<00:58:42.240><c> to</c>
+
+00:58:44.150 --> 00:58:44.160 align:start position:0%
+eyes to
+
+
+00:58:44.160 --> 00:58:46.430 align:start position:0%
+eyes to
+next<00:58:45.160><c> so</c><00:58:45.480><c> there's</c><00:58:45.720><c> one</c><00:58:45.880><c> other</c><00:58:46.079><c> chip</c><00:58:46.319><c> you're</c>
+
+00:58:46.430 --> 00:58:46.440 align:start position:0%
+next so there's one other chip you're
+
+
+00:58:46.440 --> 00:58:48.109 align:start position:0%
+next so there's one other chip you're
+going<00:58:46.559><c> to</c><00:58:46.680><c> need</c><00:58:46.920><c> so</c><00:58:47.079><c> you</c><00:58:47.160><c> got</c><00:58:47.280><c> your</c><00:58:47.440><c> raspberry</c>
+
+00:58:48.109 --> 00:58:48.119 align:start position:0%
+going to need so you got your raspberry
+
+
+00:58:48.119 --> 00:58:50.829 align:start position:0%
+going to need so you got your raspberry
+piie<00:58:49.119><c> but</c><00:58:49.520><c> if</c><00:58:49.640><c> you</c><00:58:49.799><c> take</c><00:58:50.079><c> the</c><00:58:50.400><c> one</c><00:58:50.520><c> of</c><00:58:50.680><c> those</c>
+
+00:58:50.829 --> 00:58:50.839 align:start position:0%
+piie but if you take the one of those
+
+
+00:58:50.839 --> 00:58:53.510 align:start position:0%
+piie but if you take the one of those
+GPO<00:58:51.480><c> pins</c><00:58:52.160><c> and</c><00:58:52.280><c> you</c><00:58:52.440><c> try</c><00:58:52.599><c> to</c><00:58:52.839><c> turn</c><00:58:53.200><c> something</c>
+
+00:58:53.510 --> 00:58:53.520 align:start position:0%
+GPO pins and you try to turn something
+
+
+00:58:53.520 --> 00:58:55.430 align:start position:0%
+GPO pins and you try to turn something
+on<00:58:53.839><c> with</c><00:58:53.960><c> it</c><00:58:54.599><c> uh</c><00:58:54.680><c> you</c><00:58:54.799><c> realize</c><00:58:55.119><c> it's</c><00:58:55.240><c> only</c><00:58:55.359><c> a</c>
+
+00:58:55.430 --> 00:58:55.440 align:start position:0%
+on with it uh you realize it's only a
+
+
+00:58:55.440 --> 00:58:57.029 align:start position:0%
+on with it uh you realize it's only a
+few<00:58:55.599><c> milli</c><00:58:56.319><c> and</c><00:58:56.440><c> you</c><00:58:56.559><c> really</c><00:58:56.720><c> can't</c><00:58:56.880><c> do</c>
+
+00:58:57.029 --> 00:58:57.039 align:start position:0%
+few milli and you really can't do
+
+
+00:58:57.039 --> 00:58:59.230 align:start position:0%
+few milli and you really can't do
+anything<00:58:57.319><c> maybe</c><00:58:57.559><c> a</c><00:58:57.799><c> maybe</c>
+
+00:58:59.230 --> 00:58:59.240 align:start position:0%
+anything maybe a maybe
+
+
+00:58:59.240 --> 00:59:02.470 align:start position:0%
+anything maybe a maybe
+a<00:59:00.240><c> pager</c><00:59:00.680><c> motor</c><00:59:01.119><c> you</c><00:59:01.240><c> know</c><00:59:01.520><c> from</c><00:59:01.680><c> a</c><00:59:01.880><c> from</c><00:59:02.039><c> a</c>
+
+00:59:02.470 --> 00:59:02.480 align:start position:0%
+a pager motor you know from a from a
+
+
+00:59:02.480 --> 00:59:04.750 align:start position:0%
+a pager motor you know from a from a
+thing<00:59:02.920><c> a</c><00:59:03.039><c> little</c><00:59:03.359><c> tiny</c><00:59:04.359><c> one</c><00:59:04.480><c> of</c><00:59:04.559><c> those</c>
+
+00:59:04.750 --> 00:59:04.760 align:start position:0%
+thing a little tiny one of those
+
+
+00:59:04.760 --> 00:59:06.270 align:start position:0%
+thing a little tiny one of those
+vibrating<00:59:05.160><c> motors</c><00:59:05.480><c> from</c><00:59:05.640><c> a</c><00:59:05.799><c> cell</c><00:59:05.960><c> phone</c><00:59:06.160><c> or</c>
+
+00:59:06.270 --> 00:59:06.280 align:start position:0%
+vibrating motors from a cell phone or
+
+
+00:59:06.280 --> 00:59:07.950 align:start position:0%
+vibrating motors from a cell phone or
+something<00:59:06.520><c> like</c><00:59:06.720><c> that</c><00:59:07.079><c> but</c><00:59:07.440><c> you</c><00:59:07.599><c> really</c><00:59:07.760><c> don't</c>
+
+00:59:07.950 --> 00:59:07.960 align:start position:0%
+something like that but you really don't
+
+
+00:59:07.960 --> 00:59:11.230 align:start position:0%
+something like that but you really don't
+have<00:59:08.160><c> enough</c><00:59:08.359><c> current</c><00:59:08.799><c> to</c><00:59:09.760><c> run</c><00:59:10.440><c> any</c>
+
+00:59:11.230 --> 00:59:11.240 align:start position:0%
+have enough current to run any
+
+
+00:59:11.240 --> 00:59:12.750 align:start position:0%
+have enough current to run any
+reasonable<00:59:11.680><c> piece</c><00:59:11.839><c> of</c><00:59:11.960><c> equipment</c><00:59:12.359><c> so</c><00:59:12.599><c> this</c>
+
+00:59:12.750 --> 00:59:12.760 align:start position:0%
+reasonable piece of equipment so this
+
+
+00:59:12.760 --> 00:59:15.870 align:start position:0%
+reasonable piece of equipment so this
+chip<00:59:13.079><c> uln</c><00:59:13.760><c> 2003</c><00:59:14.160><c> is</c><00:59:14.240><c> the</c><00:59:14.359><c> one</c><00:59:14.520><c> I</c><00:59:14.680><c> use</c><00:59:15.520><c> uh</c><00:59:15.680><c> gives</c>
+
+00:59:15.870 --> 00:59:15.880 align:start position:0%
+chip uln 2003 is the one I use uh gives
+
+
+00:59:15.880 --> 00:59:18.750 align:start position:0%
+chip uln 2003 is the one I use uh gives
+you<00:59:16.319><c> seven</c><00:59:17.319><c> Uh</c><00:59:17.520><c> current</c><00:59:17.880><c> amplifiers</c>
+
+00:59:18.750 --> 00:59:18.760 align:start position:0%
+you seven Uh current amplifiers
+
+
+00:59:18.760 --> 00:59:22.230 align:start position:0%
+you seven Uh current amplifiers
+basically<00:59:19.559><c> so</c><00:59:19.720><c> you</c><00:59:19.880><c> hook</c><00:59:20.559><c> the</c><00:59:20.720><c> output</c><00:59:21.559><c> to</c>
+
+00:59:22.230 --> 00:59:22.240 align:start position:0%
+basically so you hook the output to
+
+
+00:59:22.240 --> 00:59:24.029 align:start position:0%
+basically so you hook the output to
+whatever<00:59:22.599><c> your</c><00:59:22.839><c> powered</c><00:59:23.200><c> device</c><00:59:23.559><c> is</c><00:59:23.799><c> and</c><00:59:23.880><c> then</c>
+
+00:59:24.029 --> 00:59:24.039 align:start position:0%
+whatever your powered device is and then
+
+
+00:59:24.039 --> 00:59:25.270 align:start position:0%
+whatever your powered device is and then
+the<00:59:24.160><c> other</c><00:59:24.359><c> side</c><00:59:24.520><c> of</c><00:59:24.599><c> your</c><00:59:24.720><c> device</c><00:59:24.960><c> you</c><00:59:25.119><c> hook</c>
+
+00:59:25.270 --> 00:59:25.280 align:start position:0%
+the other side of your device you hook
+
+
+00:59:25.280 --> 00:59:27.789 align:start position:0%
+the other side of your device you hook
+to<00:59:25.400><c> say</c><00:59:25.559><c> 12</c><00:59:25.799><c> vol</c><00:59:26.440><c> or</c><00:59:26.599><c> 15</c><00:59:27.000><c> volts</c><00:59:27.400><c> you</c><00:59:27.480><c> can</c><00:59:27.640><c> hook</c>
+
+00:59:27.789 --> 00:59:27.799 align:start position:0%
+to say 12 vol or 15 volts you can hook
+
+
+00:59:27.799 --> 00:59:29.069 align:start position:0%
+to say 12 vol or 15 volts you can hook
+it<00:59:27.880><c> to</c><00:59:27.960><c> 30</c><00:59:28.240><c> volts</c><00:59:28.480><c> you</c><00:59:28.520><c> can</c><00:59:28.640><c> hook</c><00:59:28.760><c> it</c><00:59:28.799><c> to</c><00:59:28.920><c> any</c>
+
+00:59:29.069 --> 00:59:29.079 align:start position:0%
+it to 30 volts you can hook it to any
+
+
+00:59:29.079 --> 00:59:30.710 align:start position:0%
+it to 30 volts you can hook it to any
+voltage<00:59:29.400><c> you</c><00:59:29.520><c> want</c><00:59:30.000><c> and</c><00:59:30.119><c> that's</c><00:59:30.319><c> the</c><00:59:30.440><c> beauty</c>
+
+00:59:30.710 --> 00:59:30.720 align:start position:0%
+voltage you want and that's the beauty
+
+
+00:59:30.720 --> 00:59:32.630 align:start position:0%
+voltage you want and that's the beauty
+of<00:59:30.880><c> this</c><00:59:31.079><c> thing</c><00:59:31.520><c> so</c><00:59:31.640><c> you</c><00:59:31.720><c> can</c><00:59:31.839><c> have</c><00:59:32.000><c> 30</c><00:59:32.319><c> volts</c>
+
+00:59:32.630 --> 00:59:32.640 align:start position:0%
+of this thing so you can have 30 volts
+
+
+00:59:32.640 --> 00:59:36.109 align:start position:0%
+of this thing so you can have 30 volts
+driving<00:59:33.480><c> a</c><00:59:34.480><c> high</c><00:59:34.680><c> current</c><00:59:34.920><c> motor</c><00:59:35.200><c> or</c><00:59:35.359><c> whatever</c>
+
+00:59:36.109 --> 00:59:36.119 align:start position:0%
+driving a high current motor or whatever
+
+
+00:59:36.119 --> 00:59:38.029 align:start position:0%
+driving a high current motor or whatever
+on<00:59:36.319><c> the</c><00:59:36.520><c> right</c><00:59:36.799><c> side</c><00:59:36.960><c> of</c><00:59:37.119><c> this</c><00:59:37.319><c> chip</c><00:59:37.839><c> and</c><00:59:37.960><c> on</c>
+
+00:59:38.029 --> 00:59:38.039 align:start position:0%
+on the right side of this chip and on
+
+
+00:59:38.039 --> 00:59:40.270 align:start position:0%
+on the right side of this chip and on
+the<00:59:38.200><c> left</c><00:59:38.440><c> side</c><00:59:38.559><c> of</c><00:59:38.680><c> the</c><00:59:38.799><c> chip</c><00:59:39.160><c> you've</c><00:59:39.400><c> got</c><00:59:39.640><c> 3.3</c>
+
+00:59:40.270 --> 00:59:40.280 align:start position:0%
+the left side of the chip you've got 3.3
+
+
+00:59:40.280 --> 00:59:42.349 align:start position:0%
+the left side of the chip you've got 3.3
+volts<00:59:40.599><c> coming</c><00:59:40.799><c> from</c><00:59:40.960><c> your</c><00:59:41.079><c> Arduino</c><00:59:41.799><c> I</c><00:59:41.880><c> mean</c>
+
+00:59:42.349 --> 00:59:42.359 align:start position:0%
+volts coming from your Arduino I mean
+
+
+00:59:42.359 --> 00:59:44.150 align:start position:0%
+volts coming from your Arduino I mean
+well<00:59:42.480><c> Arduino</c><00:59:42.920><c> or</c><00:59:43.039><c> Raspberry</c><00:59:43.480><c> Pi</c><00:59:43.720><c> so</c><00:59:43.920><c> whatever</c>
+
+00:59:44.150 --> 00:59:44.160 align:start position:0%
+well Arduino or Raspberry Pi so whatever
+
+
+00:59:44.160 --> 00:59:47.470 align:start position:0%
+well Arduino or Raspberry Pi so whatever
+your<00:59:44.559><c> lowlevel</c><00:59:45.280><c> controller</c><00:59:45.720><c> is</c><00:59:46.359><c> so</c><00:59:46.920><c> so</c><00:59:47.319><c> this</c>
+
+00:59:47.470 --> 00:59:47.480 align:start position:0%
+your lowlevel controller is so so this
+
+
+00:59:47.480 --> 00:59:49.309 align:start position:0%
+your lowlevel controller is so so this
+thing<00:59:47.680><c> lets</c><00:59:47.920><c> you</c><00:59:48.280><c> interface</c><00:59:48.799><c> with</c><00:59:49.000><c> another</c>
+
+00:59:49.309 --> 00:59:49.319 align:start position:0%
+thing lets you interface with another
+
+
+00:59:49.319 --> 00:59:51.430 align:start position:0%
+thing lets you interface with another
+voltage<00:59:49.920><c> and</c><00:59:50.240><c> more</c><00:59:50.400><c> importantly</c><00:59:51.240><c> High</c>
+
+00:59:51.430 --> 00:59:51.440 align:start position:0%
+voltage and more importantly High
+
+
+00:59:51.440 --> 00:59:53.470 align:start position:0%
+voltage and more importantly High
+current<00:59:52.079><c> so</c><00:59:52.280><c> let's</c><00:59:52.480><c> go</c><00:59:52.559><c> to</c><00:59:52.680><c> the</c><00:59:52.799><c> next</c><00:59:52.960><c> slide</c>
+
+00:59:53.470 --> 00:59:53.480 align:start position:0%
+current so let's go to the next slide
+
+
+00:59:53.480 --> 00:59:55.230 align:start position:0%
+current so let's go to the next slide
+and<00:59:53.599><c> to</c><00:59:53.720><c> give</c><00:59:53.880><c> everybody</c><00:59:54.160><c> a</c><00:59:54.359><c> quick</c><00:59:54.599><c> lesson</c><00:59:55.039><c> in</c>
+
+00:59:55.230 --> 00:59:55.240 align:start position:0%
+and to give everybody a quick lesson in
+
+
+00:59:55.240 --> 00:59:56.630 align:start position:0%
+and to give everybody a quick lesson in
+transistor<00:59:55.760><c> Theory</c><00:59:56.079><c> in</c><00:59:56.160><c> case</c><00:59:56.319><c> you</c><00:59:56.400><c> don't</c><00:59:56.520><c> know</c>
+
+00:59:56.630 --> 00:59:56.640 align:start position:0%
+transistor Theory in case you don't know
+
+
+00:59:56.640 --> 00:59:59.390 align:start position:0%
+transistor Theory in case you don't know
+how<00:59:56.960><c> transistors</c><00:59:57.480><c> work</c><00:59:57.720><c> I'm</c><00:59:57.839><c> just</c><00:59:58.039><c> gonna</c><00:59:59.039><c> okay</c>
+
+00:59:59.390 --> 00:59:59.400 align:start position:0%
+how transistors work I'm just gonna okay
+
+
+00:59:59.400 --> 01:00:00.870 align:start position:0%
+how transistors work I'm just gonna okay
+so<00:59:59.559><c> a</c><00:59:59.680><c> transistor</c><01:00:00.200><c> has</c><01:00:00.280><c> a</c><01:00:00.440><c> thing</c><01:00:00.559><c> called</c><01:00:00.720><c> a</c>
+
+01:00:00.870 --> 01:00:00.880 align:start position:0%
+so a transistor has a thing called a
+
+
+01:00:00.880 --> 01:00:03.789 align:start position:0%
+so a transistor has a thing called a
+base<01:00:01.200><c> the</c><01:00:01.359><c> Old</c><01:00:01.640><c> ST</c><01:00:02.400><c> old</c><01:00:02.640><c> npn</c><01:00:03.280><c> silicon</c>
+
+01:00:03.789 --> 01:00:03.799 align:start position:0%
+base the Old ST old npn silicon
+
+
+01:00:03.799 --> 01:00:06.230 align:start position:0%
+base the Old ST old npn silicon
+transistor<01:00:04.799><c> a</c><01:00:04.960><c> small</c><01:00:05.280><c> amount</c><01:00:05.480><c> of</c><01:00:05.599><c> current</c><01:00:05.960><c> in</c>
+
+01:00:06.230 --> 01:00:06.240 align:start position:0%
+transistor a small amount of current in
+
+
+01:00:06.240 --> 01:00:08.870 align:start position:0%
+transistor a small amount of current in
+here<01:00:07.119><c> will</c><01:00:07.359><c> turn</c><01:00:07.680><c> on</c><01:00:07.920><c> and</c><01:00:08.160><c> allow</c><01:00:08.440><c> a</c><01:00:08.599><c> large</c>
+
+01:00:08.870 --> 01:00:08.880 align:start position:0%
+here will turn on and allow a large
+
+
+01:00:08.880 --> 01:00:10.430 align:start position:0%
+here will turn on and allow a large
+amount<01:00:09.039><c> of</c><01:00:09.160><c> current</c><01:00:09.440><c> to</c><01:00:09.680><c> flow</c><01:00:10.160><c> from</c><01:00:10.280><c> the</c>
+
+01:00:10.430 --> 01:00:10.440 align:start position:0%
+amount of current to flow from the
+
+
+01:00:10.440 --> 01:00:13.029 align:start position:0%
+amount of current to flow from the
+collector<01:00:10.799><c> to</c><01:00:10.960><c> the</c><01:00:11.079><c> emitter</c><01:00:12.039><c> so</c><01:00:12.240><c> in</c><01:00:12.359><c> general</c>
+
+01:00:13.029 --> 01:00:13.039 align:start position:0%
+collector to the emitter so in general
+
+
+01:00:13.039 --> 01:00:15.870 align:start position:0%
+collector to the emitter so in general
+you<01:00:13.200><c> youve</c><01:00:13.359><c> got</c><01:00:13.559><c> 0</c><01:00:13.799><c> to</c><01:00:13.960><c> 5</c><01:00:14.160><c> volts</c><01:00:14.559><c> here</c><01:00:15.200><c> put</c><01:00:15.359><c> in</c><01:00:15.799><c> a</c>
+
+01:00:15.870 --> 01:00:15.880 align:start position:0%
+you youve got 0 to 5 volts here put in a
+
+
+01:00:15.880 --> 01:00:18.589 align:start position:0%
+you youve got 0 to 5 volts here put in a
+few<01:00:16.079><c> milliamps</c><01:00:16.680><c> maybe</c><01:00:16.880><c> 10</c><01:00:17.200><c> milliamps</c><01:00:18.200><c> and</c>
+
+01:00:18.589 --> 01:00:18.599 align:start position:0%
+few milliamps maybe 10 milliamps and
+
+
+01:00:18.599 --> 01:00:20.270 align:start position:0%
+few milliamps maybe 10 milliamps and
+you've<01:00:18.839><c> got</c><01:00:19.079><c> some</c><01:00:19.280><c> other</c><01:00:19.559><c> higher</c><01:00:19.799><c> voltage</c>
+
+01:00:20.270 --> 01:00:20.280 align:start position:0%
+you've got some other higher voltage
+
+
+01:00:20.280 --> 01:00:22.270 align:start position:0%
+you've got some other higher voltage
+here<01:00:20.480><c> through</c><01:00:20.640><c> a</c><01:00:20.799><c> resistor</c><01:00:21.440><c> and</c><01:00:21.720><c> it'll</c><01:00:22.000><c> allow</c>
+
+01:00:22.270 --> 01:00:22.280 align:start position:0%
+here through a resistor and it'll allow
+
+
+01:00:22.280 --> 01:00:25.589 align:start position:0%
+here through a resistor and it'll allow
+you<01:00:22.400><c> to</c><01:00:22.640><c> have</c><01:00:23.039><c> uh</c><01:00:23.599><c> around</c><01:00:23.880><c> 11</c><01:00:24.280><c> volts</c><01:00:25.039><c> at</c><01:00:25.400><c> 200</c>
+
+01:00:25.589 --> 01:00:25.599 align:start position:0%
+you to have uh around 11 volts at 200
+
+
+01:00:25.599 --> 01:00:27.829 align:start position:0%
+you to have uh around 11 volts at 200
+mil<01:00:26.200><c> and</c><01:00:26.280><c> the</c><01:00:26.400><c> reason</c><01:00:26.839><c> it's</c><01:00:27.000><c> 11</c><01:00:27.280><c> Vols</c><01:00:27.559><c> instead</c>
+
+01:00:27.829 --> 01:00:27.839 align:start position:0%
+mil and the reason it's 11 Vols instead
+
+
+01:00:27.839 --> 01:00:30.390 align:start position:0%
+mil and the reason it's 11 Vols instead
+of<01:00:28.000><c> 12</c><01:00:28.760><c> is</c><01:00:28.960><c> because</c><01:00:29.200><c> you</c><01:00:29.359><c> lose</c><01:00:29.599><c> about</c><01:00:29.799><c> a</c><01:00:29.960><c> volt</c>
+
+01:00:30.390 --> 01:00:30.400 align:start position:0%
+of 12 is because you lose about a volt
+
+
+01:00:30.400 --> 01:00:32.750 align:start position:0%
+of 12 is because you lose about a volt
+over<01:00:30.599><c> the</c><01:00:30.720><c> transistor</c><01:00:31.720><c> what</c><01:00:31.839><c> it</c><01:00:32.000><c> does</c><01:00:32.200><c> is</c><01:00:32.359><c> it</c>
+
+01:00:32.750 --> 01:00:32.760 align:start position:0%
+over the transistor what it does is it
+
+
+01:00:32.760 --> 01:00:34.910 align:start position:0%
+over the transistor what it does is it
+gives<01:00:33.000><c> you</c><01:00:33.559><c> sometimes</c><01:00:33.960><c> up</c><01:00:34.079><c> to</c><01:00:34.240><c> like</c><01:00:34.400><c> a</c><01:00:34.559><c> 100</c>
+
+01:00:34.910 --> 01:00:34.920 align:start position:0%
+gives you sometimes up to like a 100
+
+
+01:00:34.920 --> 01:00:37.870 align:start position:0%
+gives you sometimes up to like a 100
+times<01:00:35.359><c> more</c><01:00:35.880><c> current</c><01:00:36.880><c> in</c><01:00:37.119><c> this</c><01:00:37.400><c> path</c><01:00:37.720><c> you're</c>
+
+01:00:37.870 --> 01:00:37.880 align:start position:0%
+times more current in this path you're
+
+
+01:00:37.880 --> 01:00:39.990 align:start position:0%
+times more current in this path you're
+you're<01:00:38.039><c> just</c><01:00:38.240><c> posing</c><01:00:38.599><c> a</c><01:00:38.760><c> switch</c><01:00:39.240><c> basically</c><01:00:39.760><c> so</c>
+
+01:00:39.990 --> 01:00:40.000 align:start position:0%
+you're just posing a switch basically so
+
+
+01:00:40.000 --> 01:00:42.349 align:start position:0%
+you're just posing a switch basically so
+this<01:00:40.119><c> is</c><01:00:40.400><c> this</c><01:00:40.520><c> is</c><01:00:40.640><c> your</c><01:00:40.839><c> control</c><01:00:41.640><c> small</c>
+
+01:00:42.349 --> 01:00:42.359 align:start position:0%
+this is this is your control small
+
+
+01:00:42.359 --> 01:00:44.710 align:start position:0%
+this is this is your control small
+current<01:00:42.640><c> controls</c><01:00:43.400><c> a</c><01:00:43.559><c> switch</c><01:00:44.079><c> which</c><01:00:44.359><c> allows</c><01:00:44.599><c> a</c>
+
+01:00:44.710 --> 01:00:44.720 align:start position:0%
+current controls a switch which allows a
+
+
+01:00:44.720 --> 01:00:45.630 align:start position:0%
+current controls a switch which allows a
+lot<01:00:44.839><c> of</c><01:00:44.960><c> current</c><01:00:45.160><c> to</c><01:00:45.240><c> flow</c><01:00:45.440><c> through</c><01:00:45.559><c> the</c>
+
+01:00:45.630 --> 01:00:45.640 align:start position:0%
+lot of current to flow through the
+
+
+01:00:45.640 --> 01:00:48.029 align:start position:0%
+lot of current to flow through the
+transistor<01:00:46.559><c> and</c><01:00:46.640><c> if</c><01:00:46.720><c> we</c><01:00:46.880><c> go</c><01:00:47.200><c> back</c><01:00:47.559><c> to</c><01:00:47.720><c> the</c><01:00:47.839><c> next</c>
+
+01:00:48.029 --> 01:00:48.039 align:start position:0%
+transistor and if we go back to the next
+
+
+01:00:48.039 --> 01:00:50.109 align:start position:0%
+transistor and if we go back to the next
+slide<01:00:48.680><c> so</c><01:00:49.119><c> the</c>
+
+01:00:50.109 --> 01:00:50.119 align:start position:0%
+slide so the
+
+
+01:00:50.119 --> 01:00:53.309 align:start position:0%
+slide so the
+um<01:00:51.119><c> this</c><01:00:51.640><c> has</c><01:00:51.880><c> a</c><01:00:52.079><c> transistor</c><01:00:52.720><c> and</c><01:00:52.839><c> the</c><01:00:52.960><c> output</c>
+
+01:00:53.309 --> 01:00:53.319 align:start position:0%
+um this has a transistor and the output
+
+
+01:00:53.319 --> 01:00:55.069 align:start position:0%
+um this has a transistor and the output
+of<01:00:53.400><c> the</c><01:00:53.559><c> transistor</c><01:00:54.079><c> feeds</c><01:00:54.440><c> into</c><01:00:54.760><c> another</c>
+
+01:00:55.069 --> 01:00:55.079 align:start position:0%
+of the transistor feeds into another
+
+
+01:00:55.079 --> 01:00:57.589 align:start position:0%
+of the transistor feeds into another
+transistor<01:00:56.039><c> so</c><01:00:56.280><c> you</c><01:00:56.440><c> get</c><01:00:56.720><c> more</c><01:00:56.920><c> than</c><01:00:57.079><c> a</c><01:00:57.240><c> 100</c>
+
+01:00:57.589 --> 01:00:57.599 align:start position:0%
+transistor so you get more than a 100
+
+
+01:00:57.599 --> 01:01:00.470 align:start position:0%
+transistor so you get more than a 100
+times<01:00:58.039><c> current</c><01:00:58.400><c> gain</c><01:00:59.000><c> uh</c><01:00:59.319><c> so</c><01:00:59.880><c> one</c><01:01:00.039><c> or</c><01:01:00.240><c> two</c>
+
+01:01:00.470 --> 01:01:00.480 align:start position:0%
+times current gain uh so one or two
+
+
+01:01:00.480 --> 01:01:03.670 align:start position:0%
+times current gain uh so one or two
+milliamps<01:01:01.200><c> here</c><01:01:01.920><c> will</c><01:01:02.640><c> let</c><01:01:02.799><c> you</c><01:01:02.920><c> have</c><01:01:03.160><c> 500</c>
+
+01:01:03.670 --> 01:01:03.680 align:start position:0%
+milliamps here will let you have 500
+
+
+01:01:03.680 --> 01:01:06.190 align:start position:0%
+milliamps here will let you have 500
+maybe<01:01:04.000><c> half</c><01:01:04.119><c> an</c><01:01:04.280><c> amp</c><01:01:04.599><c> 500</c><01:01:04.960><c> milliamps</c><01:01:05.920><c> on</c><01:01:06.039><c> the</c>
+
+01:01:06.190 --> 01:01:06.200 align:start position:0%
+maybe half an amp 500 milliamps on the
+
+
+01:01:06.200 --> 01:01:07.990 align:start position:0%
+maybe half an amp 500 milliamps on the
+out<01:01:06.760><c> so</c><01:01:06.920><c> that's</c><01:01:07.119><c> kind</c><01:01:07.240><c> of</c><01:01:07.559><c> the</c><01:01:07.640><c> neat</c><01:01:07.880><c> thing</c>
+
+01:01:07.990 --> 01:01:08.000 align:start position:0%
+out so that's kind of the neat thing
+
+
+01:01:08.000 --> 01:01:09.789 align:start position:0%
+out so that's kind of the neat thing
+about<01:01:08.200><c> that</c><01:01:08.799><c> anyway</c><01:01:09.240><c> that's</c><01:01:09.440><c> that's</c><01:01:09.559><c> all</c><01:01:09.680><c> the</c>
+
+01:01:09.789 --> 01:01:09.799 align:start position:0%
+about that anyway that's that's all the
+
+
+01:01:09.799 --> 01:01:11.710 align:start position:0%
+about that anyway that's that's all the
+transition<01:01:10.280><c> Theory</c><01:01:10.480><c> you</c><01:01:10.680><c> go</c><01:01:10.880><c> skip</c><01:01:11.160><c> the</c><01:01:11.280><c> next</c>
+
+01:01:11.710 --> 01:01:11.720 align:start position:0%
+transition Theory you go skip the next
+
+
+01:01:11.720 --> 01:01:14.270 align:start position:0%
+transition Theory you go skip the next
+time<01:01:12.720><c> so</c><01:01:12.880><c> we</c><01:01:13.000><c> you</c><01:01:13.400><c> understand</c><01:01:13.599><c> that</c><01:01:13.880><c> now</c><01:01:14.160><c> the</c>
+
+01:01:14.270 --> 01:01:14.280 align:start position:0%
+time so we you understand that now the
+
+
+01:01:14.280 --> 01:01:16.150 align:start position:0%
+time so we you understand that now the
+other<01:01:14.440><c> thing</c><01:01:14.559><c> to</c><01:01:14.920><c> understand</c><01:01:15.119><c> is</c><01:01:15.559><c> why</c><01:01:15.920><c> I</c><01:01:16.000><c> got</c>
+
+01:01:16.150 --> 01:01:16.160 align:start position:0%
+other thing to understand is why I got
+
+
+01:01:16.160 --> 01:01:18.910 align:start position:0%
+other thing to understand is why I got
+this<01:01:16.359><c> project</c><01:01:16.599><c> so</c><01:01:16.680><c> I</c><01:01:16.760><c> got</c><01:01:16.839><c> a</c><01:01:16.960><c> sky</c><01:01:17.520><c> project</c><01:01:18.200><c> the</c>
+
+01:01:18.910 --> 01:01:18.920 align:start position:0%
+this project so I got a sky project the
+
+
+01:01:18.920 --> 01:01:20.950 align:start position:0%
+this project so I got a sky project the
+project<01:01:19.240><c> number</c><01:01:19.920><c> and</c><01:01:20.200><c> this</c><01:01:20.319><c> all</c><01:01:20.480><c> came</c><01:01:20.720><c> about</c>
+
+01:01:20.950 --> 01:01:20.960 align:start position:0%
+project number and this all came about
+
+
+01:01:20.960 --> 01:01:22.670 align:start position:0%
+project number and this all came about
+after<01:01:21.160><c> the</c><01:01:21.319><c> Supreme</c><01:01:21.640><c> Court</c><01:01:21.920><c> decision</c><01:01:22.520><c> they</c>
+
+01:01:22.670 --> 01:01:22.680 align:start position:0%
+after the Supreme Court decision they
+
+
+01:01:22.680 --> 01:01:23.670 align:start position:0%
+after the Supreme Court decision they
+decided<01:01:23.000><c> you</c><01:01:23.039><c> know</c><01:01:23.119><c> it's</c><01:01:23.280><c> time</c><01:01:23.400><c> to</c><01:01:23.480><c> start</c>
+
+01:01:23.670 --> 01:01:23.680 align:start position:0%
+decided you know it's time to start
+
+
+01:01:23.680 --> 01:01:25.430 align:start position:0%
+decided you know it's time to start
+working<01:01:23.880><c> on</c><01:01:24.039><c> this</c><01:01:24.760><c> people</c><01:01:25.000><c> have</c><01:01:25.119><c> the</c><01:01:25.200><c> right</c><01:01:25.319><c> to</c>
+
+01:01:25.430 --> 01:01:25.440 align:start position:0%
+working on this people have the right to
+
+
+01:01:25.440 --> 01:01:26.750 align:start position:0%
+working on this people have the right to
+defend<01:01:25.720><c> themselves</c><01:01:26.079><c> everybody</c><01:01:26.319><c> agrees</c><01:01:26.559><c> with</c>
+
+01:01:26.750 --> 01:01:26.760 align:start position:0%
+defend themselves everybody agrees with
+
+
+01:01:26.760 --> 01:01:28.710 align:start position:0%
+defend themselves everybody agrees with
+that<01:01:27.079><c> well</c><01:01:27.280><c> corporations</c><01:01:27.760><c> are</c><01:01:27.960><c> people</c><01:01:28.520><c> that's</c>
+
+01:01:28.710 --> 01:01:28.720 align:start position:0%
+that well corporations are people that's
+
+
+01:01:28.720 --> 01:01:30.710 align:start position:0%
+that well corporations are people that's
+been<01:01:28.920><c> established</c><01:01:29.440><c> now</c><01:01:30.240><c> so</c><01:01:30.440><c> therefore</c>
+
+01:01:30.710 --> 01:01:30.720 align:start position:0%
+been established now so therefore
+
+
+01:01:30.720 --> 01:01:32.870 align:start position:0%
+been established now so therefore
+autonomous<01:01:31.200><c> systems</c><01:01:31.559><c> can</c><01:01:31.720><c> run</c><01:01:31.960><c> computers</c><01:01:32.680><c> and</c>
+
+01:01:32.870 --> 01:01:32.880 align:start position:0%
+autonomous systems can run computers and
+
+
+01:01:32.880 --> 01:01:34.150 align:start position:0%
+autonomous systems can run computers and
+therefore<01:01:33.160><c> autonomous</c><01:01:33.599><c> systems</c><01:01:33.920><c> would</c><01:01:34.079><c> have</c>
+
+01:01:34.150 --> 01:01:34.160 align:start position:0%
+therefore autonomous systems would have
+
+
+01:01:34.160 --> 01:01:35.829 align:start position:0%
+therefore autonomous systems would have
+the<01:01:34.240><c> right</c><01:01:34.400><c> to</c><01:01:34.520><c> defend</c><01:01:34.920><c> themselves</c><01:01:35.520><c> so</c><01:01:35.680><c> we</c>
+
+01:01:35.829 --> 01:01:35.839 align:start position:0%
+the right to defend themselves so we
+
+
+01:01:35.839 --> 01:01:37.910 align:start position:0%
+the right to defend themselves so we
+need<01:01:36.119><c> automated</c><01:01:36.799><c> we</c><01:01:36.920><c> need</c><01:01:37.119><c> automated</c><01:01:37.760><c> uh</c>
+
+01:01:37.910 --> 01:01:37.920 align:start position:0%
+need automated we need automated uh
+
+
+01:01:37.920 --> 01:01:40.109 align:start position:0%
+need automated we need automated uh
+systems<01:01:38.240><c> that</c><01:01:38.359><c> can</c><01:01:38.520><c> defend</c><01:01:38.920><c> themselves</c><01:01:39.280><c> right</c>
+
+01:01:40.109 --> 01:01:40.119 align:start position:0%
+systems that can defend themselves right
+
+
+01:01:40.119 --> 01:01:42.950 align:start position:0%
+systems that can defend themselves right
+um<01:01:40.920><c> and</c><01:01:41.160><c> and</c><01:01:41.480><c> this</c><01:01:41.559><c> is</c><01:01:41.640><c> a</c><01:01:41.760><c> long</c><01:01:41.960><c> syllogism</c><01:01:42.599><c> I</c>
+
+01:01:42.950 --> 01:01:42.960 align:start position:0%
+um and and this is a long syllogism I
+
+
+01:01:42.960 --> 01:01:44.870 align:start position:0%
+um and and this is a long syllogism I
+present<01:01:43.280><c> this</c><01:01:43.400><c> is</c><01:01:43.520><c> farcon</c><01:01:44.280><c> but</c><01:01:44.359><c> it</c><01:01:44.559><c> basically</c>
+
+01:01:44.870 --> 01:01:44.880 align:start position:0%
+present this is farcon but it basically
+
+
+01:01:44.880 --> 01:01:46.670 align:start position:0%
+present this is farcon but it basically
+ends<01:01:45.119><c> up</c><01:01:45.319><c> with</c><01:01:45.480><c> if</c><01:01:45.599><c> something</c><01:01:45.839><c> has</c><01:01:45.960><c> a</c><01:01:46.160><c> face</c>
+
+01:01:46.670 --> 01:01:46.680 align:start position:0%
+ends up with if something has a face
+
+
+01:01:46.680 --> 01:01:48.589 align:start position:0%
+ends up with if something has a face
+shoot<01:01:46.960><c> it</c><01:01:47.200><c> because</c><01:01:47.319><c> it's</c><01:01:47.440><c> a</c>
+
+01:01:48.589 --> 01:01:48.599 align:start position:0%
+shoot it because it's a
+
+
+01:01:48.599 --> 01:01:50.750 align:start position:0%
+shoot it because it's a
+thre
+
+01:01:50.750 --> 01:01:50.760 align:start position:0%
+thre
+
+
+01:01:50.760 --> 01:01:52.910 align:start position:0%
+thre
+next<01:01:51.760><c> so</c><01:01:52.000><c> you</c><01:01:52.160><c> need</c><01:01:52.319><c> some</c><01:01:52.480><c> additional</c>
+
+01:01:52.910 --> 01:01:52.920 align:start position:0%
+next so you need some additional
+
+
+01:01:52.920 --> 01:01:55.470 align:start position:0%
+next so you need some additional
+software<01:01:53.400><c> open</c><01:01:53.640><c> CV</c><01:01:54.200><c> is</c><01:01:54.400><c> the</c><01:01:54.720><c> open</c><01:01:55.119><c> computer</c>
+
+01:01:55.470 --> 01:01:55.480 align:start position:0%
+software open CV is the open computer
+
+
+01:01:55.480 --> 01:01:56.470 align:start position:0%
+software open CV is the open computer
+vision
+
+01:01:56.470 --> 01:01:56.480 align:start position:0%
+vision
+
+
+01:01:56.480 --> 01:01:58.470 align:start position:0%
+vision
+package<01:01:56.799><c> it's</c><01:01:56.960><c> on</c><01:01:57.079><c> a</c><01:01:57.200><c> lot</c><01:01:57.319><c> of</c><01:01:57.680><c> Linux</c><01:01:58.039><c> machines</c>
+
+01:01:58.470 --> 01:01:58.480 align:start position:0%
+package it's on a lot of Linux machines
+
+
+01:01:58.480 --> 01:02:00.829 align:start position:0%
+package it's on a lot of Linux machines
+actually<01:01:58.720><c> it's</c><01:01:58.839><c> on</c><01:01:59.079><c> Windows</c><01:01:59.400><c> to</c><01:02:00.400><c> things</c><01:02:00.720><c> and</c>
+
+01:02:00.829 --> 01:02:00.839 align:start position:0%
+actually it's on Windows to things and
+
+
+01:02:00.839 --> 01:02:03.390 align:start position:0%
+actually it's on Windows to things and
+it<01:02:01.119><c> uh</c><01:02:01.720><c> it's</c><01:02:02.160><c> encapsulated</c><01:02:02.960><c> some</c><01:02:03.160><c> really</c>
+
+01:02:03.390 --> 01:02:03.400 align:start position:0%
+it uh it's encapsulated some really
+
+
+01:02:03.400 --> 01:02:05.910 align:start position:0%
+it uh it's encapsulated some really
+interesting<01:02:03.920><c> image</c><01:02:04.240><c> processing</c><01:02:05.240><c> software</c>
+
+01:02:05.910 --> 01:02:05.920 align:start position:0%
+interesting image processing software
+
+
+01:02:05.920 --> 01:02:08.630 align:start position:0%
+interesting image processing software
+and<01:02:06.039><c> it</c><01:02:06.119><c> allows</c><01:02:06.400><c> you</c><01:02:06.559><c> to</c><01:02:06.960><c> uh</c><01:02:07.200><c> just</c><01:02:08.119><c> get</c><01:02:08.279><c> started</c>
+
+01:02:08.630 --> 01:02:08.640 align:start position:0%
+and it allows you to uh just get started
+
+
+01:02:08.640 --> 01:02:10.029 align:start position:0%
+and it allows you to uh just get started
+at<01:02:08.760><c> a</c><01:02:08.880><c> very</c><01:02:09.079><c> high</c><01:02:09.240><c> level</c><01:02:09.480><c> with</c><01:02:09.640><c> grabbing</c>
+
+01:02:10.029 --> 01:02:10.039 align:start position:0%
+at a very high level with grabbing
+
+
+01:02:10.039 --> 01:02:11.870 align:start position:0%
+at a very high level with grabbing
+images<01:02:10.640><c> running</c><01:02:11.039><c> through</c><01:02:11.279><c> things</c><01:02:11.480><c> and</c><01:02:11.599><c> one</c><01:02:11.720><c> of</c>
+
+01:02:11.870 --> 01:02:11.880 align:start position:0%
+images running through things and one of
+
+
+01:02:11.880 --> 01:02:13.990 align:start position:0%
+images running through things and one of
+the<01:02:12.480><c> one</c><01:02:12.599><c> of</c><01:02:12.720><c> the</c><01:02:12.839><c> example</c><01:02:13.279><c> programs</c><01:02:13.640><c> in</c><01:02:13.760><c> it</c><01:02:13.880><c> is</c>
+
+01:02:13.990 --> 01:02:14.000 align:start position:0%
+the one of the example programs in it is
+
+
+01:02:14.000 --> 01:02:16.309 align:start position:0%
+the one of the example programs in it is
+a<01:02:14.160><c> face</c><01:02:14.400><c> detection</c><01:02:14.880><c> program</c><01:02:15.880><c> the</c><01:02:16.000><c> other</c><01:02:16.200><c> thing</c>
+
+01:02:16.309 --> 01:02:16.319 align:start position:0%
+a face detection program the other thing
+
+
+01:02:16.319 --> 01:02:19.710 align:start position:0%
+a face detection program the other thing
+you<01:02:16.480><c> need</c><01:02:16.839><c> is</c><01:02:17.079><c> the</c><01:02:17.319><c> python</c><01:02:17.640><c> interface</c><01:02:18.400><c> G</c><01:02:19.400><c> oddly</c>
+
+01:02:19.710 --> 01:02:19.720 align:start position:0%
+you need is the python interface G oddly
+
+
+01:02:19.720 --> 01:02:21.789 align:start position:0%
+you need is the python interface G oddly
+enough<01:02:20.039><c> it</c><01:02:20.160><c> didn't</c><01:02:20.359><c> come</c><01:02:20.520><c> on</c><01:02:20.640><c> my</c><01:02:20.760><c> Raspberry</c>
+
+01:02:21.789 --> 01:02:21.799 align:start position:0%
+enough it didn't come on my Raspberry
+
+
+01:02:21.799 --> 01:02:24.029 align:start position:0%
+enough it didn't come on my Raspberry
+Pi<01:02:22.799><c> which</c><01:02:22.920><c> is</c><01:02:23.079><c> weird</c><01:02:23.400><c> because</c><01:02:23.520><c> the</c><01:02:23.599><c> Raspberry</c>
+
+01:02:24.029 --> 01:02:24.039 align:start position:0%
+Pi which is weird because the Raspberry
+
+
+01:02:24.039 --> 01:02:26.950 align:start position:0%
+Pi which is weird because the Raspberry
+Pi<01:02:24.359><c> was</c><01:02:24.559><c> for</c><01:02:24.920><c> Python</c><01:02:25.680><c> and</c><01:02:25.920><c> and</c><01:02:26.039><c> it</c><01:02:26.160><c> has</c><01:02:26.359><c> GPI</c><01:02:26.799><c> op</c>
+
+01:02:26.950 --> 01:02:26.960 align:start position:0%
+Pi was for Python and and it has GPI op
+
+
+01:02:26.960 --> 01:02:28.589 align:start position:0%
+Pi was for Python and and it has GPI op
+pins<01:02:27.200><c> and</c><01:02:27.359><c> I</c><01:02:27.520><c> totally</c><01:02:27.880><c> expected</c><01:02:28.200><c> to</c><01:02:28.319><c> be</c><01:02:28.440><c> able</c>
+
+01:02:28.589 --> 01:02:28.599 align:start position:0%
+pins and I totally expected to be able
+
+
+01:02:28.599 --> 01:02:30.430 align:start position:0%
+pins and I totally expected to be able
+to<01:02:29.160><c> to</c><01:02:29.319><c> do</c><01:02:29.520><c> that</c><01:02:29.640><c> out</c><01:02:29.760><c> of</c><01:02:29.880><c> the</c><01:02:30.000><c> box</c><01:02:30.160><c> but</c><01:02:30.240><c> you</c><01:02:30.319><c> can</c>
+
+01:02:30.430 --> 01:02:30.440 align:start position:0%
+to to do that out of the box but you can
+
+
+01:02:30.440 --> 01:02:32.269 align:start position:0%
+to to do that out of the box but you can
+write<01:02:30.559><c> a</c><01:02:30.599><c> c</c><01:02:30.920><c> program</c><01:02:31.279><c> on</c><01:02:31.400><c> the</c><01:02:31.520><c> Raspberry</c><01:02:31.920><c> Pi</c><01:02:32.079><c> to</c>
+
+01:02:32.269 --> 01:02:32.279 align:start position:0%
+write a c program on the Raspberry Pi to
+
+
+01:02:32.279 --> 01:02:35.190 align:start position:0%
+write a c program on the Raspberry Pi to
+go<01:02:32.400><c> to</c><01:02:32.520><c> your</c><01:02:32.640><c> P</c><01:02:33.279><c> but</c><01:02:33.400><c> anyway</c><01:02:33.640><c> our</c><01:02:33.920><c> p.</c><01:02:34.279><c> gpio</c><01:02:34.960><c> is</c>
+
+01:02:35.190 --> 01:02:35.200 align:start position:0%
+go to your P but anyway our p. gpio is
+
+
+01:02:35.200 --> 01:02:40.150 align:start position:0%
+go to your P but anyway our p. gpio is
+good<01:02:35.880><c> is</c><01:02:36.039><c> the</c><01:02:36.680><c> python</c><01:02:37.680><c> okay</c><01:02:38.359><c> so</c>
+
+01:02:40.150 --> 01:02:40.160 align:start position:0%
+good is the python okay so
+
+
+01:02:40.160 --> 01:02:45.109 align:start position:0%
+good is the python okay so
+um<01:02:41.440><c> next</c><01:02:42.440><c> all</c><01:02:42.559><c> right</c><01:02:42.799><c> so</c><01:02:43.119><c> had</c><01:02:43.880><c> problems</c><01:02:44.880><c> main</c>
+
+01:02:45.109 --> 01:02:45.119 align:start position:0%
+um next all right so had problems main
+
+
+01:02:45.119 --> 01:02:46.470 align:start position:0%
+um next all right so had problems main
+thing<01:02:45.240><c> is</c><01:02:45.359><c> I</c><01:02:45.480><c> kept</c><01:02:45.640><c> scrambling</c><01:02:46.119><c> the</c><01:02:46.240><c> file</c>
+
+01:02:46.470 --> 01:02:46.480 align:start position:0%
+thing is I kept scrambling the file
+
+
+01:02:46.480 --> 01:02:48.309 align:start position:0%
+thing is I kept scrambling the file
+system<01:02:46.960><c> I</c><01:02:47.119><c> my</c><01:02:47.240><c> program</c><01:02:47.520><c> would</c><01:02:47.680><c> get</c><01:02:47.799><c> to</c><01:02:47.960><c> running</c>
+
+01:02:48.309 --> 01:02:48.319 align:start position:0%
+system I my program would get to running
+
+
+01:02:48.319 --> 01:02:50.430 align:start position:0%
+system I my program would get to running
+and<01:02:48.400><c> it</c><01:02:48.520><c> was</c><01:02:48.720><c> it</c><01:02:48.839><c> was</c><01:02:49.160><c> accessing</c><01:02:49.640><c> files</c><01:02:50.240><c> and</c><01:02:50.319><c> it</c>
+
+01:02:50.430 --> 01:02:50.440 align:start position:0%
+and it was it was accessing files and it
+
+
+01:02:50.440 --> 01:02:52.630 align:start position:0%
+and it was it was accessing files and it
+was<01:02:50.599><c> logging</c><01:02:51.319><c> it</c><01:02:51.400><c> was</c><01:02:51.559><c> doing</c><01:02:51.920><c> things</c><01:02:52.319><c> with</c><01:02:52.480><c> the</c>
+
+01:02:52.630 --> 01:02:52.640 align:start position:0%
+was logging it was doing things with the
+
+
+01:02:52.640 --> 01:02:54.710 align:start position:0%
+was logging it was doing things with the
+video<01:02:53.119><c> but</c><01:02:53.319><c> but</c><01:02:53.400><c> it</c><01:02:53.480><c> was</c><01:02:53.640><c> trying</c><01:02:53.839><c> to</c><01:02:54.000><c> do</c><01:02:54.520><c> a</c><01:02:54.599><c> lot</c>
+
+01:02:54.710 --> 01:02:54.720 align:start position:0%
+video but but it was trying to do a lot
+
+
+01:02:54.720 --> 01:02:56.230 align:start position:0%
+video but but it was trying to do a lot
+of<01:02:54.880><c> heavy</c><01:02:55.079><c> duty</c><01:02:55.319><c> video</c><01:02:55.559><c> process</c><01:02:55.839><c> processing</c>
+
+01:02:56.230 --> 01:02:56.240 align:start position:0%
+of heavy duty video process processing
+
+
+01:02:56.240 --> 01:02:58.150 align:start position:0%
+of heavy duty video process processing
+so<01:02:56.359><c> it</c><01:02:56.440><c> would</c><01:02:56.599><c> get</c><01:02:56.760><c> hung</c><01:02:57.359><c> I'd</c><01:02:57.520><c> have</c><01:02:57.599><c> to</c><01:02:57.760><c> remove</c>
+
+01:02:58.150 --> 01:02:58.160 align:start position:0%
+so it would get hung I'd have to remove
+
+
+01:02:58.160 --> 01:02:59.990 align:start position:0%
+so it would get hung I'd have to remove
+power<01:02:58.520><c> from</c><01:02:58.720><c> the</c><01:02:59.200><c> Raspberry</c><01:02:59.640><c> Pi</c><01:02:59.799><c> and</c><01:02:59.880><c> it's</c>
+
+01:02:59.990 --> 01:03:00.000 align:start position:0%
+power from the Raspberry Pi and it's
+
+
+01:03:00.000 --> 01:03:01.630 align:start position:0%
+power from the Raspberry Pi and it's
+such<01:03:00.119><c> a</c><01:03:00.279><c> little</c><01:03:00.559><c> oneboard</c><01:03:01.039><c> computer</c><01:03:01.400><c> you'd</c>
+
+01:03:01.630 --> 01:03:01.640 align:start position:0%
+such a little oneboard computer you'd
+
+
+01:03:01.640 --> 01:03:03.589 align:start position:0%
+such a little oneboard computer you'd
+think<01:03:01.920><c> oh</c><01:03:02.240><c> hook</c><01:03:02.480><c> power</c><01:03:02.680><c> to</c><01:03:02.839><c> it</c><01:03:03.000><c> take</c><01:03:03.200><c> power</c><01:03:03.440><c> off</c>
+
+01:03:03.589 --> 01:03:03.599 align:start position:0%
+think oh hook power to it take power off
+
+
+01:03:03.599 --> 01:03:06.269 align:start position:0%
+think oh hook power to it take power off
+hook<01:03:03.839><c> power</c><01:03:04.039><c> to</c><01:03:04.200><c> it</c><01:03:04.960><c> but</c><01:03:05.240><c> but</c><01:03:05.440><c> then</c><01:03:05.880><c> I</c><01:03:06.000><c> find</c>
+
+01:03:06.269 --> 01:03:06.279 align:start position:0%
+hook power to it but but then I find
+
+
+01:03:06.279 --> 01:03:09.029 align:start position:0%
+hook power to it but but then I find
+that<01:03:06.440><c> the</c><01:03:06.960><c> the</c><01:03:07.200><c> uh</c><01:03:07.400><c> SD</c><01:03:07.760><c> file</c><01:03:08.079><c> system</c><01:03:08.359><c> would</c><01:03:08.520><c> be</c>
+
+01:03:09.029 --> 01:03:09.039 align:start position:0%
+that the the uh SD file system would be
+
+
+01:03:09.039 --> 01:03:11.349 align:start position:0%
+that the the uh SD file system would be
+like<01:03:09.240><c> all</c><01:03:09.359><c> screwed</c><01:03:09.680><c> up</c><01:03:10.000><c> and</c><01:03:10.119><c> it</c><01:03:10.200><c> wouldn't</c><01:03:10.400><c> boot</c>
+
+01:03:11.349 --> 01:03:11.359 align:start position:0%
+like all screwed up and it wouldn't boot
+
+
+01:03:11.359 --> 01:03:13.269 align:start position:0%
+like all screwed up and it wouldn't boot
+um<01:03:11.480><c> so</c><01:03:11.640><c> I</c><01:03:11.799><c> kept</c><01:03:12.039><c> you</c><01:03:12.119><c> know</c><01:03:12.240><c> doing</c><01:03:12.520><c> backups</c><01:03:13.160><c> and</c>
+
+01:03:13.269 --> 01:03:13.279 align:start position:0%
+um so I kept you know doing backups and
+
+
+01:03:13.279 --> 01:03:16.029 align:start position:0%
+um so I kept you know doing backups and
+copying<01:03:13.720><c> it</c><01:03:13.920><c> I</c><01:03:14.000><c> tried</c><01:03:14.240><c> bod</c><01:03:14.559><c> Linux</c><01:03:15.000><c> Arch</c><01:03:15.319><c> Linux</c>
+
+01:03:16.029 --> 01:03:16.039 align:start position:0%
+copying it I tried bod Linux Arch Linux
+
+
+01:03:16.039 --> 01:03:17.510 align:start position:0%
+copying it I tried bod Linux Arch Linux
+very<01:03:16.319><c> nice</c><01:03:16.720><c> by</c><01:03:16.799><c> the</c><01:03:16.920><c> way</c><01:03:17.039><c> they</c><01:03:17.160><c> ran</c><01:03:17.319><c> on</c><01:03:17.400><c> the</c>
+
+01:03:17.510 --> 01:03:17.520 align:start position:0%
+very nice by the way they ran on the
+
+
+01:03:17.520 --> 01:03:19.309 align:start position:0%
+very nice by the way they ran on the
+Raspberry<01:03:17.880><c> Pi</c><01:03:18.079><c> very</c><01:03:18.240><c> good</c><01:03:18.599><c> but</c><01:03:18.760><c> they</c><01:03:18.920><c> all</c><01:03:19.200><c> kind</c>
+
+01:03:19.309 --> 01:03:19.319 align:start position:0%
+Raspberry Pi very good but they all kind
+
+
+01:03:19.319 --> 01:03:20.990 align:start position:0%
+Raspberry Pi very good but they all kind
+of<01:03:19.440><c> ran</c><01:03:19.640><c> into</c><01:03:19.880><c> the</c><01:03:20.000><c> same</c><01:03:20.279><c> problem</c><01:03:20.599><c> that</c><01:03:20.680><c> was</c><01:03:20.839><c> no</c>
+
+01:03:20.990 --> 01:03:21.000 align:start position:0%
+of ran into the same problem that was no
+
+
+01:03:21.000 --> 01:03:23.029 align:start position:0%
+of ran into the same problem that was no
+way<01:03:21.119><c> to</c><01:03:21.279><c> solve</c><01:03:22.160><c> the</c><01:03:22.319><c> problem</c><01:03:22.559><c> I</c><01:03:22.640><c> was</c><01:03:22.799><c> having</c>
+
+01:03:23.029 --> 01:03:23.039 align:start position:0%
+way to solve the problem I was having
+
+
+01:03:23.039 --> 01:03:24.349 align:start position:0%
+way to solve the problem I was having
+which<01:03:23.160><c> was</c><01:03:23.319><c> really</c><01:03:23.559><c> kind</c><01:03:23.640><c> of</c><01:03:23.760><c> a</c><01:03:23.880><c> hardware</c>
+
+01:03:24.349 --> 01:03:24.359 align:start position:0%
+which was really kind of a hardware
+
+
+01:03:24.359 --> 01:03:27.269 align:start position:0%
+which was really kind of a hardware
+problem<01:03:25.319><c> so</c><01:03:26.119><c> the</c><01:03:26.359><c> the</c><01:03:26.559><c> way</c><01:03:26.720><c> I</c><01:03:26.839><c> solved</c><01:03:27.119><c> all</c>
+
+01:03:27.269 --> 01:03:27.279 align:start position:0%
+problem so the the way I solved all
+
+
+01:03:27.279 --> 01:03:28.670 align:start position:0%
+problem so the the way I solved all
+these<01:03:27.480><c> problems</c><01:03:27.760><c> basically</c><01:03:28.079><c> is</c><01:03:28.200><c> finding</c><01:03:28.520><c> the</c>
+
+01:03:28.670 --> 01:03:28.680 align:start position:0%
+these problems basically is finding the
+
+
+01:03:28.680 --> 01:03:30.390 align:start position:0%
+these problems basically is finding the
+commands<01:03:29.119><c> where</c><01:03:29.279><c> you</c><01:03:29.400><c> can</c><01:03:29.960><c> cause</c><01:03:30.200><c> an</c>
+
+01:03:30.390 --> 01:03:30.400 align:start position:0%
+commands where you can cause an
+
+
+01:03:30.400 --> 01:03:32.630 align:start position:0%
+commands where you can cause an
+emergency<01:03:30.839><c> sync</c><01:03:31.520><c> remount</c><01:03:32.000><c> the</c><01:03:32.119><c> file</c><01:03:32.400><c> system</c>
+
+01:03:32.630 --> 01:03:32.640 align:start position:0%
+emergency sync remount the file system
+
+
+01:03:32.640 --> 01:03:33.589 align:start position:0%
+emergency sync remount the file system
+as<01:03:32.799><c> read</c>
+
+01:03:33.589 --> 01:03:33.599 align:start position:0%
+as read
+
+
+01:03:33.599 --> 01:03:36.269 align:start position:0%
+as read
+only<01:03:34.599><c> uh</c><01:03:35.200><c> and</c><01:03:35.440><c> then</c><01:03:35.760><c> then</c><01:03:35.880><c> you've</c><01:03:36.039><c> got</c><01:03:36.160><c> a</c>
+
+01:03:36.269 --> 01:03:36.279 align:start position:0%
+only uh and then then you've got a
+
+
+01:03:36.279 --> 01:03:38.029 align:start position:0%
+only uh and then then you've got a
+system<01:03:36.599><c> that</c><01:03:36.720><c> you</c><01:03:36.799><c> could</c><01:03:37.039><c> have</c><01:03:37.160><c> a</c><01:03:37.279><c> standalone</c>
+
+01:03:38.029 --> 01:03:38.039 align:start position:0%
+system that you could have a standalone
+
+
+01:03:38.039 --> 01:03:39.870 align:start position:0%
+system that you could have a standalone
+like<01:03:38.160><c> I</c><01:03:38.279><c> say</c><01:03:38.440><c> targeting</c><01:03:38.880><c> system</c><01:03:39.319><c> we'll</c><01:03:39.520><c> see</c><01:03:39.680><c> in</c>
+
+01:03:39.870 --> 01:03:39.880 align:start position:0%
+like I say targeting system we'll see in
+
+
+01:03:39.880 --> 01:03:42.390 align:start position:0%
+like I say targeting system we'll see in
+minute<01:03:40.440><c> and</c><01:03:40.680><c> and</c><01:03:41.000><c> it's</c><01:03:41.160><c> so</c><01:03:41.760><c> impervious</c><01:03:42.200><c> to</c>
+
+01:03:42.390 --> 01:03:42.400 align:start position:0%
+minute and and it's so impervious to
+
+
+01:03:42.400 --> 01:03:45.390 align:start position:0%
+minute and and it's so impervious to
+removing<01:03:42.799><c> power</c><01:03:43.359><c> problems</c><01:03:44.359><c> um</c><01:03:44.960><c> the</c><01:03:45.119><c> other</c>
+
+01:03:45.390 --> 01:03:45.400 align:start position:0%
+removing power problems um the other
+
+
+01:03:45.400 --> 01:03:46.990 align:start position:0%
+removing power problems um the other
+problem<01:03:45.640><c> and</c><01:03:45.799><c> you'll</c><01:03:45.920><c> see</c><01:03:46.119><c> when</c><01:03:46.240><c> I</c><01:03:46.319><c> do</c><01:03:46.480><c> my</c><01:03:46.640><c> demo</c>
+
+01:03:46.990 --> 01:03:47.000 align:start position:0%
+problem and you'll see when I do my demo
+
+
+01:03:47.000 --> 01:03:48.630 align:start position:0%
+problem and you'll see when I do my demo
+is<01:03:47.119><c> the</c><01:03:47.240><c> throughput</c><01:03:47.720><c> problems</c><01:03:48.359><c> which</c><01:03:48.480><c> is</c>
+
+01:03:48.630 --> 01:03:48.640 align:start position:0%
+is the throughput problems which is
+
+
+01:03:48.640 --> 01:03:50.549 align:start position:0%
+is the throughput problems which is
+doing<01:03:48.920><c> image</c><01:03:49.240><c> processing</c><01:03:49.960><c> and</c><01:03:50.039><c> then</c><01:03:50.200><c> finding</c>
+
+01:03:50.549 --> 01:03:50.559 align:start position:0%
+doing image processing and then finding
+
+
+01:03:50.559 --> 01:03:52.069 align:start position:0%
+doing image processing and then finding
+enough<01:03:50.799><c> Cycles</c><01:03:51.160><c> to</c><01:03:51.359><c> update</c><01:03:51.640><c> the</c><01:03:51.760><c> tracking</c>
+
+01:03:52.069 --> 01:03:52.079 align:start position:0%
+enough Cycles to update the tracking
+
+
+01:03:52.079 --> 01:03:54.029 align:start position:0%
+enough Cycles to update the tracking
+system<01:03:52.359><c> which</c><01:03:52.480><c> is</c><01:03:52.599><c> the</c><01:03:52.720><c> stepper</c><01:03:53.039><c> Motors</c><01:03:53.799><c> and</c>
+
+01:03:54.029 --> 01:03:54.039 align:start position:0%
+system which is the stepper Motors and
+
+
+01:03:54.039 --> 01:03:55.950 align:start position:0%
+system which is the stepper Motors and
+it's<01:03:54.200><c> a</c><01:03:54.440><c> a</c><01:03:54.599><c> really</c><01:03:55.079><c> serious</c><01:03:55.359><c> problem</c><01:03:55.559><c> with</c>
+
+01:03:55.950 --> 01:03:55.960 align:start position:0%
+it's a a really serious problem with
+
+
+01:03:55.960 --> 01:03:59.829 align:start position:0%
+it's a a really serious problem with
+I'll<01:03:56.079><c> show</c><01:03:56.279><c> you</c><01:03:56.839><c> we</c><01:03:57.440><c> that</c><01:03:58.440><c> I</c><01:03:58.599><c> think</c><01:03:58.839><c> that's</c>
+
+01:03:59.829 --> 01:03:59.839 align:start position:0%
+I'll show you we that I think that's
+
+
+01:03:59.839 --> 01:04:02.230 align:start position:0%
+I'll show you we that I think that's
+probably<01:04:00.839><c> to</c><01:04:00.960><c> the</c><01:04:01.039><c> end</c><01:04:01.200><c> is</c><01:04:01.319><c> there</c>
+
+01:04:02.230 --> 01:04:02.240 align:start position:0%
+probably to the end is there
+
+
+01:04:02.240 --> 01:04:04.870 align:start position:0%
+probably to the end is there
+something<01:04:03.240><c> that</c><01:04:03.839><c> so</c><01:04:04.039><c> here's</c><01:04:04.279><c> the</c><01:04:04.599><c> here's</c><01:04:04.760><c> the</c>
+
+01:04:04.870 --> 01:04:04.880 align:start position:0%
+something that so here's the here's the
+
+
+01:04:04.880 --> 01:04:06.630 align:start position:0%
+something that so here's the here's the
+trick<01:04:05.079><c> with</c><01:04:05.160><c> the</c><01:04:05.279><c> read</c><01:04:05.480><c> only</c><01:04:05.720><c> file</c><01:04:06.000><c> system</c><01:04:06.520><c> U</c>
+
+01:04:06.630 --> 01:04:06.640 align:start position:0%
+trick with the read only file system U
+
+
+01:04:06.640 --> 01:04:09.230 align:start position:0%
+trick with the read only file system U
+so<01:04:06.839><c> people</c><01:04:07.279><c> suggested</c><01:04:08.279><c> if</c><01:04:08.400><c> you</c><01:04:08.520><c> want</c><01:04:08.680><c> your</c><01:04:08.799><c> res</c>
+
+01:04:09.230 --> 01:04:09.240 align:start position:0%
+so people suggested if you want your res
+
+
+01:04:09.240 --> 01:04:11.390 align:start position:0%
+so people suggested if you want your res
+probably<01:04:09.599><c> be</c><01:04:09.680><c> able</c><01:04:09.839><c> to</c><01:04:10.359><c> power</c><01:04:10.599><c> up</c><01:04:10.799><c> power</c><01:04:11.039><c> down</c>
+
+01:04:11.390 --> 01:04:11.400 align:start position:0%
+probably be able to power up power down
+
+
+01:04:11.400 --> 01:04:12.829 align:start position:0%
+probably be able to power up power down
+and<01:04:11.480><c> of</c><01:04:11.599><c> course</c><01:04:11.960><c> I</c><01:04:12.079><c> work</c><01:04:12.200><c> at</c><01:04:12.319><c> the</c><01:04:12.359><c> Museum</c><01:04:12.720><c> and</c>
+
+01:04:12.829 --> 01:04:12.839 align:start position:0%
+and of course I work at the Museum and
+
+
+01:04:12.839 --> 01:04:14.190 align:start position:0%
+and of course I work at the Museum and
+we<01:04:12.920><c> have</c><01:04:13.039><c> power</c><01:04:13.240><c> outages</c><01:04:13.640><c> we</c><01:04:13.760><c> have</c><01:04:13.839><c> exhibits</c>
+
+01:04:14.190 --> 01:04:14.200 align:start position:0%
+we have power outages we have exhibits
+
+
+01:04:14.200 --> 01:04:16.630 align:start position:0%
+we have power outages we have exhibits
+running<01:04:14.440><c> all</c><01:04:14.559><c> the</c><01:04:14.680><c> time</c><01:04:15.200><c> power</c><01:04:15.480><c> goes</c><01:04:15.680><c> out</c>
+
+01:04:16.630 --> 01:04:16.640 align:start position:0%
+running all the time power goes out
+
+
+01:04:16.640 --> 01:04:18.430 align:start position:0%
+running all the time power goes out
+power<01:04:16.920><c> comes</c><01:04:17.240><c> back</c><01:04:17.720><c> the</c><01:04:17.880><c> exhibits</c><01:04:18.279><c> really</c>
+
+01:04:18.430 --> 01:04:18.440 align:start position:0%
+power comes back the exhibits really
+
+
+01:04:18.440 --> 01:04:19.750 align:start position:0%
+power comes back the exhibits really
+need<01:04:18.599><c> to</c><01:04:18.760><c> come</c><01:04:18.880><c> out</c><01:04:19.119><c> and</c><01:04:19.240><c> some</c><01:04:19.359><c> of</c><01:04:19.480><c> them</c><01:04:19.559><c> are</c>
+
+01:04:19.750 --> 01:04:19.760 align:start position:0%
+need to come out and some of them are
+
+
+01:04:19.760 --> 01:04:21.710 align:start position:0%
+need to come out and some of them are
+pretty<01:04:20.039><c> complicated</c><01:04:20.880><c> so</c><01:04:21.079><c> you</c><01:04:21.240><c> really</c><01:04:21.400><c> need</c><01:04:21.559><c> a</c>
+
+01:04:21.710 --> 01:04:21.720 align:start position:0%
+pretty complicated so you really need a
+
+
+01:04:21.720 --> 01:04:23.990 align:start position:0%
+pretty complicated so you really need a
+system<01:04:22.039><c> that</c><01:04:22.160><c> can</c><01:04:22.640><c> come</c><01:04:22.920><c> right</c><01:04:23.119><c> back</c><01:04:23.400><c> after</c><01:04:23.839><c> a</c>
+
+01:04:23.990 --> 01:04:24.000 align:start position:0%
+system that can come right back after a
+
+
+01:04:24.000 --> 01:04:26.589 align:start position:0%
+system that can come right back after a
+completely<01:04:24.440><c> abrupt</c><01:04:24.839><c> power</c><01:04:25.279><c> outage</c><01:04:25.839><c> and</c>
+
+01:04:26.589 --> 01:04:26.599 align:start position:0%
+completely abrupt power outage and
+
+
+01:04:26.599 --> 01:04:29.750 align:start position:0%
+completely abrupt power outage and
+survive<01:04:27.720><c> but</c><01:04:28.720><c> if</c><01:04:28.839><c> I</c><01:04:28.960><c> make</c><01:04:29.160><c> my</c><01:04:29.279><c> file</c><01:04:29.480><c> system</c>
+
+01:04:29.750 --> 01:04:29.760 align:start position:0%
+survive but if I make my file system
+
+
+01:04:29.760 --> 01:04:32.630 align:start position:0%
+survive but if I make my file system
+read<01:04:29.960><c> only</c><01:04:30.480><c> and</c><01:04:30.599><c> then</c><01:04:30.720><c> I</c><01:04:30.839><c> try</c><01:04:31.000><c> to</c><01:04:31.400><c> launch</c><01:04:32.400><c> x</c>
+
+01:04:32.630 --> 01:04:32.640 align:start position:0%
+read only and then I try to launch x
+
+
+01:04:32.640 --> 01:04:34.829 align:start position:0%
+read only and then I try to launch x
+windows<01:04:33.119><c> or</c><01:04:33.319><c> my</c><01:04:33.440><c> X</c><01:04:33.799><c> app</c><01:04:34.400><c> it</c><01:04:34.480><c> won't</c><01:04:34.680><c> work</c>
+
+01:04:34.829 --> 01:04:34.839 align:start position:0%
+windows or my X app it won't work
+
+
+01:04:34.839 --> 01:04:36.870 align:start position:0%
+windows or my X app it won't work
+because<01:04:35.039><c> it's</c><01:04:35.160><c> trying</c><01:04:35.359><c> to</c><01:04:35.640><c> log</c><01:04:36.200><c> log</c><01:04:36.440><c> file</c><01:04:36.720><c> and</c>
+
+01:04:36.870 --> 01:04:36.880 align:start position:0%
+because it's trying to log log file and
+
+
+01:04:36.880 --> 01:04:38.309 align:start position:0%
+because it's trying to log log file and
+there's<01:04:37.039><c> no</c><01:04:37.200><c> easy</c><01:04:37.400><c> way</c><01:04:37.520><c> to</c><01:04:37.599><c> just</c><01:04:37.720><c> tell</c><01:04:37.920><c> X</c><01:04:38.160><c> don't</c>
+
+01:04:38.309 --> 01:04:38.319 align:start position:0%
+there's no easy way to just tell X don't
+
+
+01:04:38.319 --> 01:04:39.950 align:start position:0%
+there's no easy way to just tell X don't
+do<01:04:38.520><c> any</c><01:04:38.680><c> logging</c><01:04:39.039><c> at</c><01:04:39.160><c> all</c><01:04:39.319><c> it</c><01:04:39.400><c> always</c><01:04:39.640><c> tries</c><01:04:39.839><c> to</c>
+
+01:04:39.950 --> 01:04:39.960 align:start position:0%
+do any logging at all it always tries to
+
+
+01:04:39.960 --> 01:04:42.990 align:start position:0%
+do any logging at all it always tries to
+open<01:04:40.160><c> the</c><01:04:40.279><c> log</c><01:04:40.520><c> file</c><01:04:40.760><c> on</c><01:04:40.960><c> level</c><01:04:41.160><c> of</c><01:04:41.599><c> logging</c><01:04:42.599><c> so</c>
+
+01:04:42.990 --> 01:04:43.000 align:start position:0%
+open the log file on level of logging so
+
+
+01:04:43.000 --> 01:04:44.190 align:start position:0%
+open the log file on level of logging so
+this<01:04:43.119><c> is</c><01:04:43.359><c> odd</c><01:04:43.680><c> because</c><01:04:43.799><c> I</c><01:04:43.880><c> wouldn't</c><01:04:44.039><c> have</c>
+
+01:04:44.190 --> 01:04:44.200 align:start position:0%
+this is odd because I wouldn't have
+
+
+01:04:44.200 --> 01:04:46.029 align:start position:0%
+this is odd because I wouldn't have
+thought<01:04:44.359><c> this</c><01:04:44.480><c> could</c><01:04:44.680><c> work</c><01:04:44.880><c> and</c><01:04:45.079><c> as</c><01:04:45.279><c> Linux</c>
+
+01:04:46.029 --> 01:04:46.039 align:start position:0%
+thought this could work and as Linux
+
+
+01:04:46.039 --> 01:04:47.430 align:start position:0%
+thought this could work and as Linux
+specialist<01:04:46.440><c> in</c><01:04:46.559><c> here</c><01:04:46.640><c> can</c><01:04:46.839><c> explain</c><01:04:47.079><c> to</c><01:04:47.160><c> me</c><01:04:47.319><c> why</c>
+
+01:04:47.430 --> 01:04:47.440 align:start position:0%
+specialist in here can explain to me why
+
+
+01:04:47.440 --> 01:04:50.309 align:start position:0%
+specialist in here can explain to me why
+this<01:04:47.599><c> works</c><01:04:48.160><c> you</c><01:04:48.359><c> start</c><01:04:48.760><c> X</c><01:04:49.760><c> like</c><01:04:49.880><c> you</c><01:04:50.039><c> normally</c>
+
+01:04:50.309 --> 01:04:50.319 align:start position:0%
+this works you start X like you normally
+
+
+01:04:50.319 --> 01:04:51.549 align:start position:0%
+this works you start X like you normally
+come<01:04:50.480><c> up</c><01:04:50.720><c> that's</c><01:04:50.880><c> where</c><01:04:51.000><c> you</c><01:04:51.160><c> showing</c><01:04:51.480><c> the</c>
+
+01:04:51.549 --> 01:04:51.559 align:start position:0%
+come up that's where you showing the
+
+
+01:04:51.559 --> 01:04:52.870 align:start position:0%
+come up that's where you showing the
+window<01:04:51.799><c> manager</c><01:04:52.279><c> then</c><01:04:52.359><c> you</c><01:04:52.480><c> start</c><01:04:52.680><c> your</c>
+
+01:04:52.870 --> 01:04:52.880 align:start position:0%
+window manager then you start your
+
+
+01:04:52.880 --> 01:04:55.230 align:start position:0%
+window manager then you start your
+application<01:04:53.839><c> now</c><01:04:54.000><c> if</c><01:04:54.160><c> you</c><01:04:54.400><c> if</c><01:04:54.480><c> you</c><01:04:54.960><c> put</c>
+
+01:04:55.230 --> 01:04:55.240 align:start position:0%
+application now if you if you put
+
+
+01:04:55.240 --> 01:04:57.109 align:start position:0%
+application now if you if you put
+function<01:04:55.839><c> five</c><01:04:56.160><c> and</c><01:04:56.240><c> you</c><01:04:56.359><c> go</c><01:04:56.559><c> get</c><01:04:56.640><c> a</c><01:04:56.760><c> terminal</c>
+
+01:04:57.109 --> 01:04:57.119 align:start position:0%
+function five and you go get a terminal
+
+
+01:04:57.119 --> 01:04:59.190 align:start position:0%
+function five and you go get a terminal
+window<01:04:57.680><c> log</c><01:04:57.920><c> in</c><01:04:58.160><c> terminal</c><01:04:58.480><c> window</c><01:04:58.960><c> you</c><01:04:59.039><c> can</c>
+
+01:04:59.190 --> 01:04:59.200 align:start position:0%
+window log in terminal window you can
+
+
+01:04:59.200 --> 01:05:02.349 align:start position:0%
+window log in terminal window you can
+use<01:04:59.359><c> the</c><01:04:59.480><c> alt</c><01:04:59.799><c> control</c><01:05:00.400><c> CIS</c><01:05:00.799><c> request</c><01:05:01.799><c> you</c><01:05:02.240><c> and</c>
+
+01:05:02.349 --> 01:05:02.359 align:start position:0%
+use the alt control CIS request you and
+
+
+01:05:02.359 --> 01:05:04.190 align:start position:0%
+use the alt control CIS request you and
+you<01:05:02.559><c> remount</c><01:05:02.960><c> the</c><01:05:03.079><c> file</c><01:05:03.279><c> system</c><01:05:03.520><c> read</c><01:05:03.799><c> only</c><01:05:04.079><c> so</c>
+
+01:05:04.190 --> 01:05:04.200 align:start position:0%
+you remount the file system read only so
+
+
+01:05:04.200 --> 01:05:05.950 align:start position:0%
+you remount the file system read only so
+what<01:05:04.279><c> you've</c><01:05:04.440><c> done</c><01:05:04.599><c> is</c><01:05:05.039><c> it's</c><01:05:05.200><c> not</c><01:05:05.400><c> really</c>
+
+01:05:05.950 --> 01:05:05.960 align:start position:0%
+what you've done is it's not really
+
+
+01:05:05.960 --> 01:05:07.789 align:start position:0%
+what you've done is it's not really
+unmount<01:05:06.599><c> and</c><01:05:06.720><c> then</c><01:05:06.920><c> remount</c><01:05:07.440><c> because</c><01:05:07.640><c> the</c>
+
+01:05:07.789 --> 01:05:07.799 align:start position:0%
+unmount and then remount because the
+
+
+01:05:07.799 --> 01:05:09.109 align:start position:0%
+unmount and then remount because the
+descriptors<01:05:08.240><c> are</c><01:05:08.400><c> still</c><01:05:08.599><c> there</c><01:05:08.760><c> the</c><01:05:08.839><c> file</c>
+
+01:05:09.109 --> 01:05:09.119 align:start position:0%
+descriptors are still there the file
+
+
+01:05:09.119 --> 01:05:10.349 align:start position:0%
+descriptors are still there the file
+descriptors<01:05:09.559><c> are</c><01:05:09.720><c> actually</c><01:05:09.960><c> still</c><01:05:10.119><c> there</c><01:05:10.240><c> for</c>
+
+01:05:10.349 --> 01:05:10.359 align:start position:0%
+descriptors are actually still there for
+
+
+01:05:10.359 --> 01:05:11.870 align:start position:0%
+descriptors are actually still there for
+the<01:05:10.440><c> running</c><01:05:10.720><c> program</c><01:05:11.440><c> it's</c><01:05:11.599><c> kind</c><01:05:11.680><c> of</c>
+
+01:05:11.870 --> 01:05:11.880 align:start position:0%
+the running program it's kind of
+
+
+01:05:11.880 --> 01:05:13.910 align:start position:0%
+the running program it's kind of
+interesting<01:05:12.480><c> but</c><01:05:12.680><c> then</c><01:05:12.799><c> you</c><01:05:13.000><c> hit</c><01:05:13.160><c> F7</c><01:05:13.640><c> to</c>
+
+01:05:13.910 --> 01:05:13.920 align:start position:0%
+interesting but then you hit F7 to
+
+
+01:05:13.920 --> 01:05:15.710 align:start position:0%
+interesting but then you hit F7 to
+return<01:05:14.079><c> back</c><01:05:14.200><c> to</c><01:05:14.319><c> your</c><01:05:14.440><c> X</c><01:05:14.680><c> session</c><01:05:15.319><c> and</c><01:05:15.520><c> this</c>
+
+01:05:15.710 --> 01:05:15.720 align:start position:0%
+return back to your X session and this
+
+
+01:05:15.720 --> 01:05:17.910 align:start position:0%
+return back to your X session and this
+app<01:05:15.920><c> is</c><01:05:16.079><c> still</c><01:05:16.279><c> running</c><01:05:16.680><c> and</c><01:05:16.760><c> it</c><01:05:16.880><c> runs</c><01:05:17.240><c> fine</c><01:05:17.760><c> so</c>
+
+01:05:17.910 --> 01:05:17.920 align:start position:0%
+app is still running and it runs fine so
+
+
+01:05:17.920 --> 01:05:19.190 align:start position:0%
+app is still running and it runs fine so
+I<01:05:18.000><c> had</c><01:05:18.119><c> to</c><01:05:18.240><c> do</c><01:05:18.400><c> this</c><01:05:18.520><c> little</c><01:05:18.720><c> trick</c><01:05:19.000><c> to</c>
+
+01:05:19.190 --> 01:05:19.200 align:start position:0%
+I had to do this little trick to
+
+
+01:05:19.200 --> 01:05:22.710 align:start position:0%
+I had to do this little trick to
+actually<01:05:19.880><c> turn</c><01:05:20.079><c> it</c><01:05:20.279><c> into</c><01:05:20.480><c> a</c><01:05:20.960><c> safe</c><01:05:21.960><c> Standalone</c>
+
+01:05:22.710 --> 01:05:22.720 align:start position:0%
+actually turn it into a safe Standalone
+
+
+01:05:22.720 --> 01:05:24.549 align:start position:0%
+actually turn it into a safe Standalone
+program<01:05:23.400><c> by</c><01:05:23.559><c> making</c><01:05:23.799><c> the</c><01:05:23.960><c> file</c><01:05:24.160><c> system</c><01:05:24.359><c> read</c>
+
+01:05:24.549 --> 01:05:24.559 align:start position:0%
+program by making the file system read
+
+
+01:05:24.559 --> 01:05:26.950 align:start position:0%
+program by making the file system read
+only<01:05:24.839><c> but</c><01:05:24.960><c> I</c><01:05:25.039><c> couldn't</c><01:05:25.240><c> do</c><01:05:25.400><c> it</c><01:05:25.839><c> earlier</c><01:05:26.440><c> than</c>
+
+01:05:26.950 --> 01:05:26.960 align:start position:0%
+only but I couldn't do it earlier than
+
+
+01:05:26.960 --> 01:05:28.390 align:start position:0%
+only but I couldn't do it earlier than
+than<01:05:27.279><c> having</c><01:05:27.520><c> the</c><01:05:27.680><c> application</c><01:05:28.160><c> already</c>
+
+01:05:28.390 --> 01:05:28.400 align:start position:0%
+than having the application already
+
+
+01:05:28.400 --> 01:05:29.990 align:start position:0%
+than having the application already
+start<01:05:28.680><c> up</c><01:05:28.799><c> and</c><01:05:28.920><c> start</c><01:05:29.119><c> running</c><01:05:29.640><c> so</c><01:05:29.799><c> that</c><01:05:29.880><c> was</c>
+
+01:05:29.990 --> 01:05:30.000 align:start position:0%
+start up and start running so that was
+
+
+01:05:30.000 --> 01:05:32.870 align:start position:0%
+start up and start running so that was
+kind<01:05:30.119><c> of</c><01:05:30.200><c> an</c><01:05:30.319><c> interesting</c><01:05:31.079><c> all</c><01:05:31.680><c> right</c><01:05:32.680><c> that's</c>
+
+01:05:32.870 --> 01:05:32.880 align:start position:0%
+kind of an interesting all right that's
+
+
+01:05:32.880 --> 01:05:34.470 align:start position:0%
+kind of an interesting all right that's
+about<01:05:33.039><c> it</c><01:05:33.359><c> okay</c><01:05:33.520><c> so</c>
+
+01:05:34.470 --> 01:05:34.480 align:start position:0%
+about it okay so
+
+
+01:05:34.480 --> 01:05:36.630 align:start position:0%
+about it okay so
+now
+
+01:05:36.630 --> 01:05:36.640 align:start position:0%
+now
+
+
+01:05:36.640 --> 01:05:39.269 align:start position:0%
+now
+video<01:05:37.640><c> here</c><01:05:37.880><c> I</c><01:05:38.039><c> apologize</c><01:05:38.599><c> that</c><01:05:38.920><c> we</c><01:05:39.039><c> have</c><01:05:39.160><c> the</c>
+
+01:05:39.269 --> 01:05:39.279 align:start position:0%
+video here I apologize that we have the
+
+
+01:05:39.279 --> 01:05:41.510 align:start position:0%
+video here I apologize that we have the
+light<01:05:39.440><c> on</c><01:05:39.680><c> over</c><01:05:39.880><c> here</c><01:05:40.000><c> we</c><01:05:40.079><c> should</c><01:05:40.359><c> had</c><01:05:40.440><c> it</c>
+
+01:05:41.510 --> 01:05:41.520 align:start position:0%
+light on over here we should had it
+
+
+01:05:41.520 --> 01:05:45.150 align:start position:0%
+light on over here we should had it
+out<01:05:42.520><c> show</c><01:05:43.119><c> but</c><01:05:43.480><c> uh</c><01:05:44.039><c> it</c><01:05:44.240><c> actually</c><01:05:44.599><c> needs</c><01:05:44.880><c> it</c>
+
+01:05:45.150 --> 01:05:45.160 align:start position:0%
+out show but uh it actually needs it
+
+
+01:05:45.160 --> 01:05:46.470 align:start position:0%
+out show but uh it actually needs it
+because<01:05:45.599><c> although</c><01:05:45.880><c> it</c><01:05:45.920><c> would</c><01:05:46.079><c> be</c><01:05:46.200><c> better</c><01:05:46.400><c> to</c>
+
+01:05:46.470 --> 01:05:46.480 align:start position:0%
+because although it would be better to
+
+
+01:05:46.480 --> 01:05:47.630 align:start position:0%
+because although it would be better to
+see<01:05:46.720><c> the</c>
+
+01:05:47.630 --> 01:05:47.640 align:start position:0%
+see the
+
+
+01:05:47.640 --> 01:05:50.069 align:start position:0%
+see the
+screen<01:05:48.640><c> my</c><01:05:48.920><c> camera</c><01:05:49.240><c> wouldn't</c><01:05:49.480><c> be</c><01:05:49.559><c> able</c><01:05:49.799><c> to</c>
+
+01:05:50.069 --> 01:05:50.079 align:start position:0%
+screen my camera wouldn't be able to
+
+
+01:05:50.079 --> 01:06:22.069 align:start position:0%
+screen my camera wouldn't be able to
+Target
+
+01:06:22.069 --> 01:06:22.079 align:start position:0%
+
+
+
+01:06:22.079 --> 01:06:23.910 align:start position:0%
+
+oh<01:06:22.400><c> oh</c><01:06:22.680><c> oh</c><01:06:22.799><c> yeah</c><01:06:22.920><c> it's</c><01:06:23.119><c> why</c><01:06:23.359><c> sorry</c><01:06:23.640><c> screen</c>
+
+01:06:23.910 --> 01:06:23.920 align:start position:0%
+oh oh oh yeah it's why sorry screen
+
+
+01:06:23.920 --> 01:06:26.309 align:start position:0%
+oh oh oh yeah it's why sorry screen
+biking
+
+01:06:26.309 --> 01:06:26.319 align:start position:0%
+biking
+
+
+01:06:26.319 --> 01:06:31.950 align:start position:0%
+biking
+not<01:06:26.520><c> doing</c>
+
+01:06:31.950 --> 01:06:31.960 align:start position:0%
+
+
+
+01:06:31.960 --> 01:06:34.269 align:start position:0%
+
+anything<01:06:32.960><c> all</c>
+
+01:06:34.269 --> 01:06:34.279 align:start position:0%
+anything all
+
+
+01:06:34.279 --> 01:06:36.990 align:start position:0%
+anything all
+right<01:06:35.279><c> here's</c><01:06:35.559><c> the</c>
+
+01:06:36.990 --> 01:06:37.000 align:start position:0%
+right here's the
+
+
+01:06:37.000 --> 01:06:39.870 align:start position:0%
+right here's the
+program<01:06:38.000><c> they</c><01:06:38.200><c> recognize</c><01:06:38.760><c> the</c><01:06:38.880><c> curses</c>
+
+01:06:39.870 --> 01:06:39.880 align:start position:0%
+program they recognize the curses
+
+
+01:06:39.880 --> 01:06:44.750 align:start position:0%
+program they recognize the curses
+interface<01:06:41.119><c> now</c><01:06:42.119><c> uh</c><01:06:43.079><c> turn</c><01:06:43.359><c> on</c><01:06:43.520><c> your</c><01:06:43.760><c> targeting</c>
+
+01:06:44.750 --> 01:06:44.760 align:start position:0%
+interface now uh turn on your targeting
+
+
+01:06:44.760 --> 01:06:46.349 align:start position:0%
+interface now uh turn on your targeting
+system
+
+01:06:46.349 --> 01:06:46.359 align:start position:0%
+system
+
+
+01:06:46.359 --> 01:06:50.069 align:start position:0%
+system
+laser<01:06:47.359><c> and</c><01:06:47.480><c> I</c><01:06:47.640><c> might</c><01:06:47.880><c> go</c><01:06:48.039><c> over</c><01:06:48.200><c> to</c><01:06:48.400><c> the</c><01:06:48.599><c> left</c><01:06:48.799><c> a</c>
+
+01:06:50.069 --> 01:06:50.079 align:start position:0%
+laser and I might go over to the left a
+
+
+01:06:50.079 --> 01:06:53.430 align:start position:0%
+laser and I might go over to the left a
+little<01:06:51.240><c> up</c><01:06:52.240><c> I</c><01:06:52.319><c> don't</c><01:06:52.400><c> know</c><01:06:52.640><c> people</c><01:06:53.079><c> anywhere</c>
+
+01:06:53.430 --> 01:06:53.440 align:start position:0%
+little up I don't know people anywhere
+
+
+01:06:53.440 --> 01:06:57.069 align:start position:0%
+little up I don't know people anywhere
+can<01:06:53.680><c> see</c><01:06:54.079><c> this</c><01:06:55.079><c> but</c><01:06:55.240><c> this</c><01:06:55.319><c> is</c><01:06:55.640><c> the</c><01:06:55.720><c> stepper</c>
+
+01:06:57.069 --> 01:06:57.079 align:start position:0%
+can see this but this is the stepper
+
+
+01:06:57.079 --> 01:07:04.589 align:start position:0%
+can see this but this is the stepper
+motor<01:06:58.079><c> controlling</c><01:06:58.760><c> the</c><01:06:59.039><c> uh</c><01:06:59.920><c> the</c><01:07:00.400><c> laser</c><01:07:01.400><c> all</c>
+
+01:07:04.589 --> 01:07:04.599 align:start position:0%
+
+
+
+01:07:04.599 --> 01:07:11.390 align:start position:0%
+
+right<01:07:05.599><c> so</c><01:07:05.799><c> that's</c><01:07:06.000><c> the</c><01:07:06.160><c> targeting</c><01:07:06.640><c> part</c><01:07:06.799><c> of</c><01:07:07.200><c> it</c>
+
+01:07:11.390 --> 01:07:11.400 align:start position:0%
+
+
+
+01:07:11.400 --> 01:07:14.630 align:start position:0%
+
+and<01:07:12.400><c> still</c><01:07:12.640><c> running</c><01:07:13.200><c> oh</c><01:07:13.319><c> there</c><01:07:13.440><c> we</c><01:07:13.640><c> go</c><01:07:14.400><c> lost</c>
+
+01:07:14.630 --> 01:07:14.640 align:start position:0%
+and still running oh there we go lost
+
+
+01:07:14.640 --> 01:07:16.910 align:start position:0%
+and still running oh there we go lost
+the<01:07:14.880><c> computer</c>
+
+01:07:16.910 --> 01:07:16.920 align:start position:0%
+the computer
+
+
+01:07:16.920 --> 01:07:20.950 align:start position:0%
+the computer
+right<01:07:17.920><c> now</c><01:07:18.480><c> it's</c><01:07:19.200><c> it's</c><01:07:19.319><c> kind</c><01:07:19.440><c> of</c><01:07:19.920><c> funny</c><01:07:20.279><c> angle</c>
+
+01:07:20.950 --> 01:07:20.960 align:start position:0%
+right now it's it's kind of funny angle
+
+
+01:07:20.960 --> 01:07:23.710 align:start position:0%
+right now it's it's kind of funny angle
+because<01:07:21.960><c> I'm</c><01:07:22.480><c> not</c><01:07:22.839><c> looking</c><01:07:23.200><c> straight</c><01:07:23.480><c> at</c><01:07:23.640><c> the</c>
+
+01:07:23.710 --> 01:07:23.720 align:start position:0%
+because I'm not looking straight at the
+
+
+01:07:23.720 --> 01:07:26.069 align:start position:0%
+because I'm not looking straight at the
+screen<01:07:24.400><c> now</c><01:07:24.520><c> if</c><01:07:24.599><c> I</c><01:07:24.760><c> had</c><01:07:24.960><c> time</c><01:07:25.160><c> to</c><01:07:25.559><c> calibrate</c>
+
+01:07:26.069 --> 01:07:26.079 align:start position:0%
+screen now if I had time to calibrate
+
+
+01:07:26.079 --> 01:07:28.670 align:start position:0%
+screen now if I had time to calibrate
+this<01:07:26.279><c> with</c><01:07:26.400><c> the</c><01:07:26.520><c> image</c><01:07:26.839><c> that</c><01:07:27.160><c> would</c><01:07:28.160><c> better</c>
+
+01:07:28.670 --> 01:07:28.680 align:start position:0%
+this with the image that would better
+
+
+01:07:28.680 --> 01:07:34.349 align:start position:0%
+this with the image that would better
+and<01:07:28.839><c> now</c><01:07:29.000><c> we</c><01:07:29.160><c> really</c><01:07:29.319><c> need</c><01:07:29.440><c> to</c>
+
+01:07:34.349 --> 01:07:34.359 align:start position:0%
+
+
+
+01:07:34.359 --> 01:07:37.109 align:start position:0%
+
+start<01:07:35.359><c> see</c><01:07:35.720><c> people</c>
+
+01:07:37.109 --> 01:07:37.119 align:start position:0%
+start see people
+
+
+01:07:37.119 --> 01:07:40.390 align:start position:0%
+start see people
+and
+
+01:07:40.390 --> 01:07:40.400 align:start position:0%
+
+
+
+01:07:40.400 --> 01:07:42.589 align:start position:0%
+
+face<01:07:41.400><c> full</c><01:07:41.599><c> screen</c><01:07:41.880><c> I</c><01:07:41.960><c> don't</c><01:07:42.119><c> know</c><01:07:42.279><c> why</c><01:07:42.359><c> it's</c>
+
+01:07:42.589 --> 01:07:42.599 align:start position:0%
+face full screen I don't know why it's
+
+
+01:07:42.599 --> 01:07:47.470 align:start position:0%
+face full screen I don't know why it's
+not<01:07:42.880><c> oh</c><01:07:42.960><c> is</c><01:07:43.079><c> it</c>
+
+01:07:47.470 --> 01:07:47.480 align:start position:0%
+
+
+
+01:07:47.480 --> 01:07:51.510 align:start position:0%
+
+Lu<01:07:48.480><c> there</c><01:07:48.599><c> we</c>
+
+01:07:51.510 --> 01:07:51.520 align:start position:0%
+
+
+
+01:07:51.520 --> 01:07:54.190 align:start position:0%
+
+go<01:07:52.520><c> what's</c><01:07:52.680><c> going</c><01:07:52.839><c> on</c><01:07:53.279><c> is</c><01:07:53.359><c> it</c><01:07:53.799><c> is</c><01:07:53.880><c> there</c><01:07:54.039><c> some</c>
+
+01:07:54.190 --> 01:07:54.200 align:start position:0%
+go what's going on is it is there some
+
+
+01:07:54.200 --> 01:08:10.510 align:start position:0%
+go what's going on is it is there some
+reason<01:07:55.160><c> there</c><01:07:55.319><c> go</c>
+
+01:08:10.510 --> 01:08:10.520 align:start position:0%
+
+
+
+01:08:10.520 --> 01:08:13.630 align:start position:0%
+
+okay<01:08:11.520><c> having</c><01:08:12.240><c> problem</c><01:08:12.760><c> yeah</c><01:08:12.880><c> it's</c><01:08:13.039><c> having</c><01:08:13.279><c> s</c>
+
+01:08:13.630 --> 01:08:13.640 align:start position:0%
+okay having problem yeah it's having s
+
+
+01:08:13.640 --> 01:08:16.189 align:start position:0%
+okay having problem yeah it's having s
+problems<01:08:14.160><c> we</c><01:08:14.480><c> yeah</c><01:08:14.599><c> we</c><01:08:14.720><c> hav</c><01:08:14.880><c> tried</c><01:08:15.279><c> this</c>
+
+01:08:16.189 --> 01:08:16.199 align:start position:0%
+problems we yeah we hav tried this
+
+
+01:08:16.199 --> 01:08:19.349 align:start position:0%
+problems we yeah we hav tried this
+resolution<01:08:17.199><c> actually</c><01:08:17.480><c> trying</c>
+
+01:08:19.349 --> 01:08:19.359 align:start position:0%
+resolution actually trying
+
+
+01:08:19.359 --> 01:08:24.590 align:start position:0%
+resolution actually trying
+boy<01:08:20.759><c> better</c><01:08:21.759><c> yeah</c><01:08:22.520><c> got</c><01:08:23.199><c> me</c><01:08:24.199><c> so</c><01:08:24.359><c> how</c><01:08:24.440><c> many</c>
+
+01:08:24.590 --> 01:08:24.600 align:start position:0%
+boy better yeah got me so how many
+
+
+01:08:24.600 --> 01:08:26.189 align:start position:0%
+boy better yeah got me so how many
+frames<01:08:24.920><c> per</c><01:08:25.080><c> second</c>
+
+01:08:26.189 --> 01:08:26.199 align:start position:0%
+frames per second
+
+
+01:08:26.199 --> 01:08:31.749 align:start position:0%
+frames per second
+uh<01:08:26.440><c> it</c><01:08:26.560><c> is.</c><01:08:27.319><c> 3</c><01:08:27.600><c> frames</c><01:08:27.960><c> per</c>
+
+01:08:31.749 --> 01:08:31.759 align:start position:0%
+
+
+
+01:08:31.759 --> 01:08:36.390 align:start position:0%
+
+second<01:08:32.759><c> but</c><01:08:32.920><c> the</c><01:08:33.159><c> bad</c><01:08:33.759><c> news</c><01:08:34.759><c> is</c><01:08:35.560><c> it's</c><01:08:35.799><c> not</c><01:08:36.080><c> got</c>
+
+01:08:36.390 --> 01:08:36.400 align:start position:0%
+second but the bad news is it's not got
+
+
+01:08:36.400 --> 01:08:40.070 align:start position:0%
+second but the bad news is it's not got
+any<01:08:36.759><c> Cycles</c><01:08:37.560><c> to</c><01:08:37.839><c> update</c><01:08:38.799><c> the</c><01:08:39.239><c> the</c><01:08:39.600><c> the</c><01:08:39.719><c> motor</c>
+
+01:08:40.070 --> 01:08:40.080 align:start position:0%
+any Cycles to update the the the motor
+
+
+01:08:40.080 --> 01:08:41.630 align:start position:0%
+any Cycles to update the the the motor
+and<01:08:40.239><c> drive</c><01:08:40.520><c> motor</c><01:08:40.839><c> that's</c><01:08:41.040><c> the</c><01:08:41.120><c> reason</c><01:08:41.319><c> I</c><01:08:41.480><c> did</c>
+
+01:08:41.630 --> 01:08:41.640 align:start position:0%
+and drive motor that's the reason I did
+
+
+01:08:41.640 --> 01:08:43.269 align:start position:0%
+and drive motor that's the reason I did
+it<01:08:41.759><c> by</c><01:08:41.920><c> hand</c><01:08:42.159><c> with</c><01:08:42.279><c> a</c><01:08:42.400><c> keyboard</c><01:08:42.799><c> to</c><01:08:42.920><c> show</c><01:08:43.120><c> you</c>
+
+01:08:43.269 --> 01:08:43.279 align:start position:0%
+it by hand with a keyboard to show you
+
+
+01:08:43.279 --> 01:08:45.669 align:start position:0%
+it by hand with a keyboard to show you
+that<01:08:43.480><c> the</c><01:08:43.759><c> laser</c><01:08:44.080><c> pointer</c><01:08:44.520><c> actually</c><01:08:44.759><c> moved</c><01:08:45.480><c> is</c>
+
+01:08:45.669 --> 01:08:45.679 align:start position:0%
+that the laser pointer actually moved is
+
+
+01:08:45.679 --> 01:08:48.590 align:start position:0%
+that the laser pointer actually moved is
+because<01:08:46.199><c> when</c><01:08:46.400><c> it's</c><01:08:46.600><c> in</c><01:08:46.799><c> this</c><01:08:47.000><c> mode</c><01:08:47.880><c> doing</c><01:08:48.319><c> the</c>
+
+01:08:48.590 --> 01:08:48.600 align:start position:0%
+because when it's in this mode doing the
+
+
+01:08:48.600 --> 01:08:50.269 align:start position:0%
+because when it's in this mode doing the
+the<01:08:48.799><c> the</c><01:08:48.920><c> image</c><01:08:49.199><c> processing</c><01:08:49.759><c> it</c><01:08:49.880><c> doesn't</c><01:08:50.120><c> do</c>
+
+01:08:50.269 --> 01:08:50.279 align:start position:0%
+the the image processing it doesn't do
+
+
+01:08:50.279 --> 01:08:51.870 align:start position:0%
+the the image processing it doesn't do
+that<01:08:50.480><c> so</c><01:08:50.679><c> this</c><01:08:50.799><c> was</c><01:08:50.920><c> at</c><01:08:51.040><c> sparkon</c><01:08:51.640><c> this</c><01:08:51.719><c> was</c>
+
+01:08:51.870 --> 01:08:51.880 align:start position:0%
+that so this was at sparkon this was
+
+
+01:08:51.880 --> 01:08:53.269 align:start position:0%
+that so this was at sparkon this was
+like<01:08:52.040><c> the</c><01:08:52.239><c> last</c><01:08:52.520><c> day</c><01:08:52.719><c> we</c><01:08:52.839><c> were</c><01:08:53.040><c> setting</c>
+
+01:08:53.269 --> 01:08:53.279 align:start position:0%
+like the last day we were setting
+
+
+01:08:53.279 --> 01:08:55.070 align:start position:0%
+like the last day we were setting
+everything<01:08:53.600><c> out</c><01:08:54.159><c> I</c><01:08:54.279><c> finally</c><01:08:54.560><c> put</c><01:08:54.799><c> all</c><01:08:54.960><c> the</c>
+
+01:08:55.070 --> 01:08:55.080 align:start position:0%
+everything out I finally put all the
+
+
+01:08:55.080 --> 01:08:56.910 align:start position:0%
+everything out I finally put all the
+pieces<01:08:55.600><c> together</c><01:08:55.960><c> because</c><01:08:56.359><c> my</c><01:08:56.520><c> targeting</c>
+
+01:08:56.910 --> 01:08:56.920 align:start position:0%
+pieces together because my targeting
+
+
+01:08:56.920 --> 01:08:58.349 align:start position:0%
+pieces together because my targeting
+system<01:08:57.159><c> worked</c><01:08:57.440><c> great</c><01:08:57.600><c> the</c><01:08:57.679><c> laser</c><01:08:58.000><c> could</c><01:08:58.120><c> go</c>
+
+01:08:58.349 --> 01:08:58.359 align:start position:0%
+system worked great the laser could go
+
+
+01:08:58.359 --> 01:09:00.870 align:start position:0%
+system worked great the laser could go
+anywhere<01:08:59.159><c> and</c><01:08:59.400><c> and</c><01:08:59.520><c> then</c><01:08:59.759><c> my</c><01:09:00.239><c> uh</c><01:09:00.480><c> my</c><01:09:00.640><c> face</c>
+
+01:09:00.870 --> 01:09:00.880 align:start position:0%
+anywhere and and then my uh my face
+
+
+01:09:00.880 --> 01:09:02.749 align:start position:0%
+anywhere and and then my uh my face
+detection<01:09:01.279><c> is</c><01:09:01.440><c> working</c><01:09:01.799><c> great</c><01:09:02.279><c> I</c><01:09:02.359><c> said</c><01:09:02.600><c> great</c>
+
+01:09:02.749 --> 01:09:02.759 align:start position:0%
+detection is working great I said great
+
+
+01:09:02.759 --> 01:09:03.950 align:start position:0%
+detection is working great I said great
+I<01:09:02.880><c> just</c><01:09:03.000><c> have</c><01:09:03.080><c> to</c><01:09:03.159><c> feed</c><01:09:03.440><c> the</c><01:09:03.560><c> output</c><01:09:03.799><c> of</c><01:09:03.880><c> the</c>
+
+01:09:03.950 --> 01:09:03.960 align:start position:0%
+I just have to feed the output of the
+
+
+01:09:03.960 --> 01:09:05.269 align:start position:0%
+I just have to feed the output of the
+face<01:09:04.159><c> section</c><01:09:04.480><c> into</c><01:09:04.719><c> the</c><01:09:04.839><c> little</c><01:09:05.000><c> laser</c>
+
+01:09:05.269 --> 01:09:05.279 align:start position:0%
+face section into the little laser
+
+
+01:09:05.279 --> 01:09:08.070 align:start position:0%
+face section into the little laser
+pointer<01:09:05.719><c> thing</c><01:09:06.159><c> XY</c><01:09:06.719><c> position</c><01:09:07.040><c> and</c><01:09:07.199><c> let</c><01:09:07.319><c> it</c><01:09:07.520><c> go</c>
+
+01:09:08.070 --> 01:09:08.080 align:start position:0%
+pointer thing XY position and let it go
+
+
+01:09:08.080 --> 01:09:10.189 align:start position:0%
+pointer thing XY position and let it go
+and<01:09:08.239><c> I</c><01:09:08.400><c> got</c><01:09:08.719><c> this</c><01:09:09.040><c> which</c><01:09:09.159><c> is</c><01:09:09.560><c> the</c><01:09:09.759><c> laser</c><01:09:10.080><c> just</c>
+
+01:09:10.189 --> 01:09:10.199 align:start position:0%
+and I got this which is the laser just
+
+
+01:09:10.199 --> 01:09:13.269 align:start position:0%
+and I got this which is the laser just
+sitting<01:09:10.520><c> there</c><01:09:11.000><c> so</c><01:09:11.520><c> so</c><01:09:11.679><c> I</c><01:09:11.759><c> said</c><01:09:12.279><c> oh</c><01:09:12.520><c> man</c><01:09:13.080><c> it</c>
+
+01:09:13.269 --> 01:09:13.279 align:start position:0%
+sitting there so so I said oh man it
+
+
+01:09:13.279 --> 01:09:15.910 align:start position:0%
+sitting there so so I said oh man it
+can't<01:09:13.520><c> do</c><01:09:13.960><c> image</c><01:09:14.279><c> processing</c><01:09:15.080><c> and</c><01:09:15.560><c> move</c><01:09:15.759><c> the</c>
+
+01:09:15.910 --> 01:09:15.920 align:start position:0%
+can't do image processing and move the
+
+
+01:09:15.920 --> 01:09:19.390 align:start position:0%
+can't do image processing and move the
+motors<01:09:16.920><c> and</c><01:09:17.319><c> and</c><01:09:17.520><c> so</c><01:09:18.040><c> Justice</c><01:09:18.480><c> said</c><01:09:19.080><c> here's</c>
+
+01:09:19.390 --> 01:09:19.400 align:start position:0%
+motors and and so Justice said here's
+
+
+01:09:19.400 --> 01:09:20.990 align:start position:0%
+motors and and so Justice said here's
+another<01:09:19.679><c> pie</c>
+
+01:09:20.990 --> 01:09:21.000 align:start position:0%
+another pie
+
+
+01:09:21.000 --> 01:09:23.110 align:start position:0%
+another pie
+so<01:09:22.000><c> that's</c><01:09:22.359><c> that's</c><01:09:22.600><c> great</c><01:09:22.880><c> that's</c><01:09:23.040><c> the</c>
+
+01:09:23.110 --> 01:09:23.120 align:start position:0%
+so that's that's great that's the
+
+
+01:09:23.120 --> 01:09:25.829 align:start position:0%
+so that's that's great that's the
+strength<01:09:23.480><c> of</c><01:09:23.600><c> the</c><01:09:23.679><c> raspberry</c><01:09:24.159><c> pie</c><01:09:25.040><c> for</c><01:09:25.400><c> 35</c>
+
+01:09:25.829 --> 01:09:25.839 align:start position:0%
+strength of the raspberry pie for 35
+
+
+01:09:25.839 --> 01:09:27.590 align:start position:0%
+strength of the raspberry pie for 35
+bucks<01:09:26.239><c> you</c><01:09:26.359><c> got</c><01:09:26.520><c> two</c><01:09:26.719><c> of</c><01:09:26.839><c> them</c><01:09:27.040><c> and</c><01:09:27.120><c> so</c><01:09:27.279><c> I</c><01:09:27.400><c> had</c>
+
+01:09:27.590 --> 01:09:27.600 align:start position:0%
+bucks you got two of them and so I had
+
+
+01:09:27.600 --> 01:09:29.709 align:start position:0%
+bucks you got two of them and so I had
+one<01:09:27.920><c> that</c><01:09:28.040><c> was</c><01:09:28.199><c> doing</c><01:09:28.480><c> the</c><01:09:28.640><c> P</c><01:09:28.880><c> Imaging</c><01:09:29.400><c> and</c>
+
+01:09:29.709 --> 01:09:29.719 align:start position:0%
+one that was doing the P Imaging and
+
+
+01:09:29.719 --> 01:09:31.510 align:start position:0%
+one that was doing the P Imaging and
+displaying<01:09:30.120><c> it</c><01:09:30.400><c> now</c><01:09:30.560><c> displaying</c><01:09:31.040><c> is</c><01:09:31.199><c> kind</c><01:09:31.319><c> of</c>
+
+01:09:31.510 --> 01:09:31.520 align:start position:0%
+displaying it now displaying is kind of
+
+
+01:09:31.520 --> 01:09:34.430 align:start position:0%
+displaying it now displaying is kind of
+expensive<01:09:32.000><c> too</c><01:09:32.440><c> so</c><01:09:33.080><c> originally</c><01:09:33.960><c> this</c><01:09:34.120><c> wasn't</c>
+
+01:09:34.430 --> 01:09:34.440 align:start position:0%
+expensive too so originally this wasn't
+
+
+01:09:34.440 --> 01:09:36.470 align:start position:0%
+expensive too so originally this wasn't
+going<01:09:34.600><c> to</c><01:09:34.799><c> point</c><01:09:35.080><c> at</c><01:09:35.199><c> a</c><01:09:35.319><c> screen</c><01:09:36.199><c> you're</c><01:09:36.359><c> going</c>
+
+01:09:36.470 --> 01:09:36.480 align:start position:0%
+going to point at a screen you're going
+
+
+01:09:36.480 --> 01:09:38.550 align:start position:0%
+going to point at a screen you're going
+to<01:09:36.640><c> walk</c><01:09:36.839><c> into</c><01:09:37.040><c> a</c><01:09:37.239><c> room</c><01:09:37.799><c> and</c><01:09:37.920><c> all</c><01:09:38.040><c> of</c><01:09:38.159><c> a</c><01:09:38.279><c> sudden</c>
+
+01:09:38.550 --> 01:09:38.560 align:start position:0%
+to walk into a room and all of a sudden
+
+
+01:09:38.560 --> 01:09:40.229 align:start position:0%
+to walk into a room and all of a sudden
+the<01:09:38.679><c> laser</c><01:09:39.040><c> point</c><01:09:39.440><c> was</c><01:09:39.600><c> going</c><01:09:39.679><c> to</c><01:09:39.839><c> appear</c><01:09:40.080><c> on</c>
+
+01:09:40.229 --> 01:09:40.239 align:start position:0%
+the laser point was going to appear on
+
+
+01:09:40.239 --> 01:09:41.510 align:start position:0%
+the laser point was going to appear on
+your<01:09:40.400><c> chest</c><01:09:40.799><c> I</c><01:09:40.920><c> think</c><01:09:41.040><c> that's</c><01:09:41.199><c> the</c><01:09:41.279><c> most</c>
+
+01:09:41.510 --> 01:09:41.520 align:start position:0%
+your chest I think that's the most
+
+
+01:09:41.520 --> 01:09:42.789 align:start position:0%
+your chest I think that's the most
+effective<01:09:41.839><c> way</c><01:09:41.960><c> to</c><01:09:42.080><c> demonstrate</c><01:09:42.560><c> this</c>
+
+01:09:42.789 --> 01:09:42.799 align:start position:0%
+effective way to demonstrate this
+
+
+01:09:42.799 --> 01:09:45.430 align:start position:0%
+effective way to demonstrate this
+because<01:09:43.080><c> that's</c><01:09:44.000><c> it's</c><01:09:44.159><c> the</c><01:09:44.319><c> Red</c><01:09:44.560><c> Dot</c><01:09:45.080><c> on</c><01:09:45.239><c> your</c>
+
+01:09:45.430 --> 01:09:45.440 align:start position:0%
+because that's it's the Red Dot on your
+
+
+01:09:45.440 --> 01:09:49.669 align:start position:0%
+because that's it's the Red Dot on your
+chest<01:09:45.839><c> that</c><01:09:46.239><c> actually</c><01:09:46.480><c> gets</c><01:09:46.679><c> your</c><01:09:46.839><c> attention</c>
+
+01:09:49.669 --> 01:09:49.679 align:start position:0%
+
+
+
+01:09:49.679 --> 01:09:52.309 align:start position:0%
+
+right<01:09:50.679><c> all</c><01:09:50.759><c> you</c><01:09:50.920><c> need</c><01:09:51.080><c> is</c><01:09:51.279><c> cat</c><01:09:51.560><c> bodyguards</c>
+
+01:09:52.309 --> 01:09:52.319 align:start position:0%
+right all you need is cat bodyguards
+
+
+01:09:52.319 --> 01:09:54.870 align:start position:0%
+right all you need is cat bodyguards
+that's<01:09:52.560><c> right</c><01:09:53.520><c> so</c><01:09:54.239><c> so</c><01:09:54.400><c> the</c><01:09:54.520><c> original</c>
+
+01:09:54.870 --> 01:09:54.880 align:start position:0%
+that's right so so the original
+
+
+01:09:54.880 --> 01:09:57.070 align:start position:0%
+that's right so so the original
+intention<01:09:55.440><c> was</c><01:09:55.600><c> not</c><01:09:55.760><c> to</c><01:09:56.000><c> actually</c><01:09:56.320><c> have</c><01:09:56.440><c> to</c>
+
+01:09:57.070 --> 01:09:57.080 align:start position:0%
+intention was not to actually have to
+
+
+01:09:57.080 --> 01:09:59.630 align:start position:0%
+intention was not to actually have to
+drive<01:09:58.080><c> drive</c><01:09:58.480><c> live</c><01:09:58.760><c> video</c><01:09:59.080><c> coming</c><01:09:59.320><c> out</c><01:09:59.520><c> and</c>
+
+01:09:59.630 --> 01:09:59.640 align:start position:0%
+drive drive live video coming out and
+
+
+01:09:59.640 --> 01:10:02.550 align:start position:0%
+drive drive live video coming out and
+it's<01:09:59.880><c> really</c><01:10:00.360><c> see</c><01:10:00.840><c> so</c><01:10:01.080><c> anyway</c><01:10:01.679><c> the</c><01:10:02.360><c> I</c><01:10:02.440><c> was</c>
+
+01:10:02.550 --> 01:10:02.560 align:start position:0%
+it's really see so anyway the I was
+
+
+01:10:02.560 --> 01:10:04.470 align:start position:0%
+it's really see so anyway the I was
+using<01:10:02.760><c> the</c><01:10:02.920><c> projector</c><01:10:03.360><c> earlier</c><01:10:03.679><c> and</c><01:10:03.920><c> actually</c>
+
+01:10:04.470 --> 01:10:04.480 align:start position:0%
+using the projector earlier and actually
+
+
+01:10:04.480 --> 01:10:06.310 align:start position:0%
+using the projector earlier and actually
+was<01:10:04.760><c> Tred</c><01:10:05.040><c> to</c><01:10:05.280><c> but</c><01:10:05.360><c> anyway</c><01:10:05.600><c> you</c><01:10:05.679><c> can</c><01:10:05.800><c> see</c><01:10:06.000><c> it's</c>
+
+01:10:06.310 --> 01:10:06.320 align:start position:0%
+was Tred to but anyway you can see it's
+
+
+01:10:06.320 --> 01:10:08.189 align:start position:0%
+was Tred to but anyway you can see it's
+it's<01:10:06.480><c> pretty</c><01:10:06.679><c> much</c><01:10:06.880><c> getting</c><01:10:07.239><c> you</c><01:10:07.360><c> know</c><01:10:07.880><c> four</c>
+
+01:10:08.189 --> 01:10:08.199 align:start position:0%
+it's pretty much getting you know four
+
+
+01:10:08.199 --> 01:10:09.750 align:start position:0%
+it's pretty much getting you know four
+people<01:10:08.600><c> four</c><01:10:08.840><c> people</c><01:10:09.040><c> at</c><01:10:09.159><c> a</c><01:10:09.320><c> time</c><01:10:09.480><c> in</c><01:10:09.640><c> the</c>
+
+01:10:09.750 --> 01:10:09.760 align:start position:0%
+people four people at a time in the
+
+
+01:10:09.760 --> 01:10:12.390 align:start position:0%
+people four people at a time in the
+crowd<01:10:10.080><c> taking</c><01:10:10.320><c> them</c>
+
+01:10:12.390 --> 01:10:12.400 align:start position:0%
+crowd taking them
+
+
+01:10:12.400 --> 01:10:17.189 align:start position:0%
+crowd taking them
+out<01:10:13.400><c> you</c><01:10:13.640><c> know</c><01:10:14.640><c> I</c><01:10:14.800><c> F</c><01:10:15.400><c> I</c><01:10:15.520><c> F</c><01:10:15.800><c> the</c><01:10:15.880><c> re</c><01:10:16.199><c> of</c><01:10:16.280><c> the</c>
+
+01:10:17.189 --> 01:10:17.199 align:start position:0%
+out you know I F I F the re of the
+
+
+01:10:17.199 --> 01:10:20.390 align:start position:0%
+out you know I F I F the re of the
+sky<01:10:18.199><c> contract</c><01:10:18.760><c> but</c><01:10:19.080><c> obviously</c><01:10:19.520><c> can</c><01:10:19.760><c> improve</c>
+
+01:10:20.390 --> 01:10:20.400 align:start position:0%
+sky contract but obviously can improve
+
+
+01:10:20.400 --> 01:10:22.470 align:start position:0%
+sky contract but obviously can improve
+so<01:10:20.760><c> this</c><01:10:20.840><c> is</c><01:10:21.000><c> my</c><01:10:21.120><c> career</c><01:10:21.440><c> advice</c><01:10:21.719><c> to</c><01:10:21.960><c> anybody</c>
+
+01:10:22.470 --> 01:10:22.480 align:start position:0%
+so this is my career advice to anybody
+
+
+01:10:22.480 --> 01:10:24.070 align:start position:0%
+so this is my career advice to anybody
+and<01:10:22.600><c> even</c><01:10:22.760><c> if</c><01:10:22.880><c> it</c><01:10:23.000><c> doesn't</c><01:10:23.239><c> come</c><01:10:23.360><c> to</c><01:10:23.520><c> fruition</c>
+
+01:10:24.070 --> 01:10:24.080 align:start position:0%
+and even if it doesn't come to fruition
+
+
+01:10:24.080 --> 01:10:25.550 align:start position:0%
+and even if it doesn't come to fruition
+even<01:10:24.239><c> if</c><01:10:24.400><c> the</c><01:10:24.520><c> worst</c><01:10:24.800><c> doesn't</c><01:10:25.040><c> actually</c>
+
+01:10:25.550 --> 01:10:25.560 align:start position:0%
+even if the worst doesn't actually
+
+
+01:10:25.560 --> 01:10:27.270 align:start position:0%
+even if the worst doesn't actually
+happen<01:10:26.280><c> just</c><01:10:26.440><c> think</c><01:10:26.600><c> about</c><01:10:26.760><c> your</c><01:10:26.880><c> career</c><01:10:27.199><c> and</c>
+
+01:10:27.270 --> 01:10:27.280 align:start position:0%
+happen just think about your career and
+
+
+01:10:27.280 --> 01:10:29.990 align:start position:0%
+happen just think about your career and
+you<01:10:27.440><c> think</c><01:10:27.920><c> how</c><01:10:28.080><c> can</c><01:10:28.199><c> I</c><01:10:28.400><c> be</c><01:10:28.640><c> maximally</c><01:10:29.239><c> useful</c>
+
+01:10:29.990 --> 01:10:30.000 align:start position:0%
+you think how can I be maximally useful
+
+
+01:10:30.000 --> 01:10:32.350 align:start position:0%
+you think how can I be maximally useful
+to<01:10:30.159><c> our</c><01:10:30.320><c> digital</c>
+
+01:10:32.350 --> 01:10:32.360 align:start position:0%
+to our digital
+
+
+01:10:32.360 --> 01:10:34.189 align:start position:0%
+to our digital
+overlords<01:10:33.360><c> they're</c><01:10:33.480><c> going</c><01:10:33.560><c> to</c><01:10:33.719><c> keep</c><01:10:33.920><c> some</c><01:10:34.080><c> of</c>
+
+01:10:34.189 --> 01:10:34.199 align:start position:0%
+overlords they're going to keep some of
+
+
+01:10:34.199 --> 01:10:35.709 align:start position:0%
+overlords they're going to keep some of
+us<01:10:34.480><c> but</c><01:10:34.760><c> you</c><01:10:34.880><c> know</c><01:10:35.120><c> which</c><01:10:35.239><c> on</c><01:10:35.400><c> are</c><01:10:35.520><c> they</c><01:10:35.640><c> going</c>
+
+01:10:35.709 --> 01:10:35.719 align:start position:0%
+us but you know which on are they going
+
+
+01:10:35.719 --> 01:10:38.350 align:start position:0%
+us but you know which on are they going
+to<01:10:35.880><c> keep</c><01:10:36.159><c> so</c><01:10:36.560><c> so</c><01:10:36.840><c> think</c><01:10:37.159><c> career-wise</c><01:10:37.600><c> think</c>
+
+01:10:38.350 --> 01:10:38.360 align:start position:0%
+to keep so so think career-wise think
+
+
+01:10:38.360 --> 01:10:39.510 align:start position:0%
+to keep so so think career-wise think
+well<01:10:38.600><c> you</c><01:10:38.719><c> know</c><01:10:38.880><c> they're</c><01:10:39.040><c> gonna</c><01:10:39.440><c> they're</c>
+
+01:10:39.510 --> 01:10:39.520 align:start position:0%
+well you know they're gonna they're
+
+
+01:10:39.520 --> 01:10:49.960 align:start position:0%
+well you know they're gonna they're
+gonna<01:10:39.760><c> need</c><01:10:40.000><c> this</c><01:10:40.719><c> anyway</c>
+
+01:10:49.960 --> 01:10:49.970 align:start position:0%
+
+
+
+01:10:49.970 --> 01:11:19.310 align:start position:0%
+
+[Applause]
+
+01:11:19.310 --> 01:11:19.320 align:start position:0%
+
+
+
+01:11:19.320 --> 01:11:22.830 align:start position:0%
+
+there<01:11:19.400><c> it</c><01:11:19.520><c> is</c><01:11:20.199><c> y</c><01:11:21.199><c> you</c><01:11:21.360><c> want</c><01:11:21.600><c> this</c><01:11:22.280><c> yeah</c><01:11:22.520><c> I</c><01:11:22.600><c> think</c>
+
+01:11:22.830 --> 01:11:22.840 align:start position:0%
+there it is y you want this yeah I think
+
+
+01:11:22.840 --> 01:11:25.110 align:start position:0%
+there it is y you want this yeah I think
+this<01:11:22.960><c> would</c><01:11:23.159><c> be</c><01:11:23.679><c> actually</c><01:11:24.679><c> this</c><01:11:24.800><c> will</c><01:11:24.960><c> help</c>
+
+01:11:25.110 --> 01:11:25.120 align:start position:0%
+this would be actually this will help
+
+
+01:11:25.120 --> 01:11:27.990 align:start position:0%
+this would be actually this will help
+with<01:11:25.440><c> Q&A</c><01:11:26.080><c> yeah</c><01:11:26.199><c> I</c><01:11:26.280><c> was</c><01:11:26.400><c> gonna</c><01:11:26.679><c> say</c><01:11:27.320><c> uh</c><01:11:27.760><c> who's</c>
+
+01:11:27.990 --> 01:11:28.000 align:start position:0%
+with Q&A yeah I was gonna say uh who's
+
+
+01:11:28.000 --> 01:11:32.430 align:start position:0%
+with Q&A yeah I was gonna say uh who's
+got<01:11:28.239><c> the</c><01:11:28.440><c> W</c><01:11:29.000><c> the</c><01:11:29.239><c> microphone</c><01:11:30.239><c> yeah</c><01:11:31.320><c> maybe</c><01:11:32.320><c> we</c>
+
+01:11:32.430 --> 01:11:32.440 align:start position:0%
+got the W the microphone yeah maybe we
+
+
+01:11:32.440 --> 01:11:35.550 align:start position:0%
+got the W the microphone yeah maybe we
+can<01:11:32.719><c> just</c><01:11:33.040><c> of</c><01:11:33.320><c> pass</c><01:11:33.600><c> this</c><01:11:34.239><c> around</c><01:11:35.239><c> and</c><01:11:35.360><c> then</c>
+
+01:11:35.550 --> 01:11:35.560 align:start position:0%
+can just of pass this around and then
+
+
+01:11:35.560 --> 01:11:38.030 align:start position:0%
+can just of pass this around and then
+this<01:11:35.800><c> could</c><01:11:36.040><c> be</c><01:11:36.320><c> for</c>
+
+01:11:38.030 --> 01:11:38.040 align:start position:0%
+this could be for
+
+
+01:11:38.040 --> 01:11:40.270 align:start position:0%
+this could be for
+questions<01:11:39.040><c> well</c><01:11:39.199><c> that</c><01:11:39.320><c> he's</c><01:11:39.480><c> got</c><01:11:39.600><c> one</c><01:11:39.719><c> to</c><01:11:40.080><c> pass</c>
+
+01:11:40.270 --> 01:11:40.280 align:start position:0%
+questions well that he's got one to pass
+
+
+01:11:40.280 --> 01:11:42.189 align:start position:0%
+questions well that he's got one to pass
+around<01:11:40.800><c> oh</c><01:11:40.920><c> you've</c><01:11:41.080><c> got</c><01:11:41.159><c> one</c><01:11:41.320><c> to</c><01:11:41.480><c> pass</c><01:11:41.679><c> around</c>
+
+01:11:42.189 --> 01:11:42.199 align:start position:0%
+around oh you've got one to pass around
+
+
+01:11:42.199 --> 01:11:44.430 align:start position:0%
+around oh you've got one to pass around
+microphone<01:11:42.880><c> that</c><01:11:43.040><c> was</c><01:11:43.239><c> easier</c><01:11:43.760><c> I</c><01:11:43.840><c> think</c><01:11:44.320><c> oh</c>
+
+01:11:44.430 --> 01:11:44.440 align:start position:0%
+microphone that was easier I think oh
+
+
+01:11:44.440 --> 01:11:46.310 align:start position:0%
+microphone that was easier I think oh
+the<01:11:44.520><c> one</c><01:11:44.600><c> you're</c>
+
+01:11:46.310 --> 01:11:46.320 align:start position:0%
+the one you're
+
+
+01:11:46.320 --> 01:11:48.390 align:start position:0%
+the one you're
+holding<01:11:47.320><c> okay</c>
+
+01:11:48.390 --> 01:11:48.400 align:start position:0%
+holding okay
+
+
+01:11:48.400 --> 01:11:52.350 align:start position:0%
+holding okay
+so<01:11:49.400><c> um</c><01:11:50.120><c> we'd</c><01:11:50.480><c> uh</c><01:11:50.600><c> like</c><01:11:50.719><c> to</c><01:11:50.840><c> open</c><01:11:51.080><c> things</c><01:11:51.280><c> up</c><01:11:51.480><c> for</c>
+
+01:11:52.350 --> 01:11:52.360 align:start position:0%
+so um we'd uh like to open things up for
+
+
+01:11:52.360 --> 01:11:55.030 align:start position:0%
+so um we'd uh like to open things up for
+questions<01:11:52.719><c> and</c><01:11:53.040><c> answers</c><01:11:53.840><c> and</c><01:11:54.280><c> uh</c><01:11:54.560><c> we</c><01:11:54.800><c> just</c>
+
+01:11:55.030 --> 01:11:55.040 align:start position:0%
+questions and answers and uh we just
+
+
+01:11:55.040 --> 01:11:56.110 align:start position:0%
+questions and answers and uh we just
+kind<01:11:55.239><c> kind</c>
+
+01:11:56.110 --> 01:11:56.120 align:start position:0%
+kind kind
+
+
+01:11:56.120 --> 01:12:00.910 align:start position:0%
+kind kind
+of<01:11:57.120><c> feed</c><01:11:57.360><c> it</c><01:11:57.520><c> to</c><01:11:57.920><c> whoever</c><01:11:58.960><c> yes</c><01:11:59.960><c> so</c><01:12:00.280><c> I'm</c><01:12:00.480><c> curious</c>
+
+01:12:00.910 --> 01:12:00.920 align:start position:0%
+of feed it to whoever yes so I'm curious
+
+
+01:12:00.920 --> 01:12:04.629 align:start position:0%
+of feed it to whoever yes so I'm curious
+about<01:12:01.520><c> um</c><01:12:02.320><c> I've</c><01:12:02.480><c> heard</c><01:12:02.760><c> people</c><01:12:03.000><c> run</c><01:12:03.520><c> XBMC</c><01:12:04.480><c> the</c>
+
+01:12:04.629 --> 01:12:04.639 align:start position:0%
+about um I've heard people run XBMC the
+
+
+01:12:04.639 --> 01:12:07.350 align:start position:0%
+about um I've heard people run XBMC the
+Xbox<01:12:05.239><c> media</c><01:12:05.560><c> center</c><01:12:05.880><c> on</c><01:12:06.120><c> there</c><01:12:07.000><c> do</c><01:12:07.080><c> you</c><01:12:07.199><c> know</c>
+
+01:12:07.350 --> 01:12:07.360 align:start position:0%
+Xbox media center on there do you know
+
+
+01:12:07.360 --> 01:12:09.629 align:start position:0%
+Xbox media center on there do you know
+anything<01:12:07.679><c> about</c><01:12:08.040><c> that</c><01:12:08.280><c> and</c><01:12:08.960><c> how</c><01:12:09.120><c> well</c><01:12:09.320><c> does</c><01:12:09.440><c> it</c>
+
+01:12:09.629 --> 01:12:09.639 align:start position:0%
+anything about that and how well does it
+
+
+01:12:09.639 --> 01:12:13.870 align:start position:0%
+anything about that and how well does it
+work<01:12:10.199><c> yeah</c><01:12:10.679><c> yes</c><01:12:11.080><c> it</c><01:12:12.080><c> uh</c><01:12:12.719><c> it's</c><01:12:13.040><c> very</c><01:12:13.360><c> popular</c>
+
+01:12:13.870 --> 01:12:13.880 align:start position:0%
+work yeah yes it uh it's very popular
+
+
+01:12:13.880 --> 01:12:17.270 align:start position:0%
+work yeah yes it uh it's very popular
+runs<01:12:14.280><c> very</c><01:12:14.520><c> well</c><01:12:15.239><c> um</c><01:12:15.719><c> what</c><01:12:15.840><c> was</c><01:12:16.000><c> the</c><01:12:16.280><c> question</c>
+
+01:12:17.270 --> 01:12:17.280 align:start position:0%
+runs very well um what was the question
+
+
+01:12:17.280 --> 01:12:21.310 align:start position:0%
+runs very well um what was the question
+the<01:12:17.800><c> question</c><01:12:18.360><c> sorry</c><01:12:18.960><c> was</c><01:12:19.480><c> Allan</c><01:12:19.880><c> heard</c><01:12:20.440><c> that</c>
+
+01:12:21.310 --> 01:12:21.320 align:start position:0%
+the question sorry was Allan heard that
+
+
+01:12:21.320 --> 01:12:24.750 align:start position:0%
+the question sorry was Allan heard that
+the<01:12:21.920><c> um</c><01:12:22.920><c> home</c><01:12:23.239><c> entertainment</c><01:12:24.120><c> uh</c><01:12:24.280><c> system</c>
+
+01:12:24.750 --> 01:12:24.760 align:start position:0%
+the um home entertainment uh system
+
+
+01:12:24.760 --> 01:12:25.709 align:start position:0%
+the um home entertainment uh system
+called
+
+01:12:25.709 --> 01:12:25.719 align:start position:0%
+called
+
+
+01:12:25.719 --> 01:12:28.669 align:start position:0%
+called
+XBMC<01:12:26.719><c> uh</c><01:12:26.800><c> runs</c><01:12:27.040><c> on</c><01:12:27.199><c> Raspberry</c><01:12:27.639><c> Pi</c><01:12:28.239><c> uh</c><01:12:28.360><c> is</c><01:12:28.480><c> that</c>
+
+01:12:28.669 --> 01:12:28.679 align:start position:0%
+XBMC uh runs on Raspberry Pi uh is that
+
+
+01:12:28.679 --> 01:12:30.350 align:start position:0%
+XBMC uh runs on Raspberry Pi uh is that
+true<01:12:29.000><c> it's</c><01:12:29.280><c> absolutely</c><01:12:29.800><c> true</c><01:12:30.120><c> and</c><01:12:30.199><c> it's</c>
+
+01:12:30.350 --> 01:12:30.360 align:start position:0%
+true it's absolutely true and it's
+
+
+01:12:30.360 --> 01:12:32.910 align:start position:0%
+true it's absolutely true and it's
+running<01:12:30.639><c> in</c><01:12:30.800><c> the</c><01:12:30.920><c> back</c><01:12:31.040><c> of</c><01:12:31.120><c> the</c><01:12:31.480><c> room</c><01:12:32.480><c> uh</c><01:12:32.760><c> we've</c>
+
+01:12:32.910 --> 01:12:32.920 align:start position:0%
+running in the back of the room uh we've
+
+
+01:12:32.920 --> 01:12:35.709 align:start position:0%
+running in the back of the room uh we've
+got<01:12:33.040><c> some</c><01:12:33.199><c> demo</c><01:12:33.520><c> system</c><01:12:33.880><c> set</c><01:12:34.080><c> up</c><01:12:34.719><c> the</c><01:12:34.880><c> leftmost</c>
+
+01:12:35.709 --> 01:12:35.719 align:start position:0%
+got some demo system set up the leftmost
+
+
+01:12:35.719 --> 01:12:39.390 align:start position:0%
+got some demo system set up the leftmost
+system<01:12:36.719><c> um</c><01:12:37.520><c> is</c><01:12:37.719><c> running</c><01:12:38.159><c> that</c><01:12:38.520><c> now</c><01:12:39.120><c> and</c><01:12:39.239><c> the</c>
+
+01:12:39.390 --> 01:12:39.400 align:start position:0%
+system um is running that now and the
+
+
+01:12:39.400 --> 01:12:41.950 align:start position:0%
+system um is running that now and the
+gentleman<01:12:40.080><c> uh</c><01:12:40.320><c> right</c><01:12:40.679><c> behind</c><01:12:40.960><c> it</c><01:12:41.400><c> can</c><01:12:41.800><c> uh</c>
+
+01:12:41.950 --> 01:12:41.960 align:start position:0%
+gentleman uh right behind it can uh
+
+
+01:12:41.960 --> 01:12:46.669 align:start position:0%
+gentleman uh right behind it can uh
+answer<01:12:42.760><c> questions</c><01:12:43.760><c> uh</c><01:12:43.960><c> when</c><01:12:44.199><c> we</c><01:12:44.639><c> uh</c><01:12:45.199><c> break</c><01:12:45.679><c> up</c>
+
+01:12:46.669 --> 01:12:46.679 align:start position:0%
+answer questions uh when we uh break up
+
+
+01:12:46.679 --> 01:12:50.229 align:start position:0%
+answer questions uh when we uh break up
+um<01:12:47.080><c> and</c><01:12:47.480><c> are</c><01:12:47.679><c> you</c><01:12:47.920><c> coming</c>
+
+01:12:50.229 --> 01:12:50.239 align:start position:0%
+um and are you coming
+
+
+01:12:50.239 --> 01:12:55.270 align:start position:0%
+um and are you coming
+Saturday<01:12:51.440><c> okay</c><01:12:52.440><c> right</c><01:12:52.800><c> okay</c><01:12:53.120><c> fine</c><01:12:53.840><c> but</c><01:12:54.840><c> we</c><01:12:54.960><c> can</c>
+
+01:12:55.270 --> 01:12:55.280 align:start position:0%
+Saturday okay right okay fine but we can
+
+
+01:12:55.280 --> 01:12:57.350 align:start position:0%
+Saturday okay right okay fine but we can
+help<01:12:55.639><c> connect</c><01:12:55.920><c> you</c><01:12:56.040><c> to</c><01:12:56.199><c> the</c><01:12:56.320><c> information</c><01:12:57.159><c> on</c>
+
+01:12:57.350 --> 01:12:57.360 align:start position:0%
+help connect you to the information on
+
+
+01:12:57.360 --> 01:12:59.750 align:start position:0%
+help connect you to the information on
+Saturday
+
+01:12:59.750 --> 01:12:59.760 align:start position:0%
+Saturday
+
+
+01:12:59.760 --> 01:13:04.910 align:start position:0%
+Saturday
+also
+
+01:13:04.910 --> 01:13:04.920 align:start position:0%
+
+
+
+01:13:04.920 --> 01:13:10.950 align:start position:0%
+
+question<01:13:05.920><c> yeah</c><01:13:06.239><c> I</c><01:13:06.360><c> thought</c><01:13:06.520><c> we</c><01:13:06.679><c> had</c><01:13:06.800><c> another</c>
+
+01:13:10.950 --> 01:13:10.960 align:start position:0%
+
+
+
+01:13:10.960 --> 01:13:13.950 align:start position:0%
+
+one<01:13:11.960><c> yeah</c><01:13:12.199><c> yeah</c><01:13:12.679><c> well</c><01:13:13.400><c> I</c><01:13:13.520><c> thought</c><01:13:13.679><c> I</c><01:13:13.760><c> was</c><01:13:13.880><c> going</c>
+
+01:13:13.950 --> 01:13:13.960 align:start position:0%
+one yeah yeah well I thought I was going
+
+
+01:13:13.960 --> 01:13:15.430 align:start position:0%
+one yeah yeah well I thought I was going
+to<01:13:14.080><c> be</c><01:13:14.239><c> handing</c><01:13:14.480><c> it</c>
+
+01:13:15.430 --> 01:13:15.440 align:start position:0%
+to be handing it
+
+
+01:13:15.440 --> 01:13:17.990 align:start position:0%
+to be handing it
+today<01:13:16.440><c> I</c><01:13:16.520><c> had</c><01:13:16.639><c> a</c><01:13:16.840><c> question</c><01:13:17.159><c> about</c><01:13:17.440><c> the</c><01:13:17.639><c> face</c>
+
+01:13:17.990 --> 01:13:18.000 align:start position:0%
+today I had a question about the face
+
+
+01:13:18.000 --> 01:13:19.950 align:start position:0%
+today I had a question about the face
+tracking<01:13:18.639><c> um</c><01:13:18.760><c> did</c><01:13:18.920><c> you</c><01:13:19.159><c> have</c><01:13:19.320><c> enough</c><01:13:19.520><c> Cycles</c>
+
+01:13:19.950 --> 01:13:19.960 align:start position:0%
+tracking um did you have enough Cycles
+
+
+01:13:19.960 --> 01:13:22.629 align:start position:0%
+tracking um did you have enough Cycles
+left<01:13:20.239><c> over</c><01:13:20.520><c> to</c><01:13:20.760><c> do</c><01:13:20.960><c> the</c><01:13:21.159><c> hand</c><01:13:21.480><c> off</c><01:13:22.239><c> um</c><01:13:22.400><c> to</c>
+
+01:13:22.629 --> 01:13:22.639 align:start position:0%
+left over to do the hand off um to
+
+
+01:13:22.639 --> 01:13:27.550 align:start position:0%
+left over to do the hand off um to
+another<01:13:23.000><c> pie</c><01:13:23.360><c> for</c><01:13:23.480><c> the</c><01:13:23.600><c> motor</c><01:13:23.960><c> control</c><01:13:24.960><c> okay</c>
+
+01:13:27.550 --> 01:13:27.560 align:start position:0%
+
+
+
+01:13:27.560 --> 01:13:29.110 align:start position:0%
+
+basically<01:13:28.120><c> I</c><01:13:28.239><c> have</c><01:13:28.440><c> I</c><01:13:28.520><c> have</c><01:13:28.639><c> the</c><01:13:28.800><c> video</c>
+
+01:13:29.110 --> 01:13:29.120 align:start position:0%
+basically I have I have the video
+
+
+01:13:29.120 --> 01:13:31.229 align:start position:0%
+basically I have I have the video
+program<01:13:29.480><c> just</c><01:13:29.560><c> spitting</c><01:13:29.920><c> out</c><01:13:30.199><c> XY</c>
+
+01:13:31.229 --> 01:13:31.239 align:start position:0%
+program just spitting out XY
+
+
+01:13:31.239 --> 01:13:40.430 align:start position:0%
+program just spitting out XY
+coordinates<01:13:32.239><c> face</c>
+
+01:13:40.430 --> 01:13:40.440 align:start position:0%
+
+
+
+01:13:40.440 --> 01:13:42.750 align:start position:0%
+
+that<01:13:41.440><c> I</c><01:13:41.560><c> think</c><01:13:41.679><c> so</c><01:13:41.960><c> I</c><01:13:42.239><c> I</c><01:13:42.320><c> think</c><01:13:42.440><c> the</c><01:13:42.560><c> whole</c>
+
+01:13:42.750 --> 01:13:42.760 align:start position:0%
+that I think so I I think the whole
+
+
+01:13:42.760 --> 01:13:44.430 align:start position:0%
+that I think so I I think the whole
+thing<01:13:42.920><c> can</c><01:13:43.080><c> be</c><01:13:43.199><c> done</c><01:13:43.360><c> on</c><01:13:43.560><c> one</c><01:13:43.880><c> I</c><01:13:44.000><c> just</c><01:13:44.199><c> I</c><01:13:44.320><c> just</c>
+
+01:13:44.430 --> 01:13:44.440 align:start position:0%
+thing can be done on one I just I just
+
+
+01:13:44.440 --> 01:13:45.950 align:start position:0%
+thing can be done on one I just I just
+didn't<01:13:44.639><c> have</c><01:13:44.800><c> enough</c><01:13:45.040><c> time</c><01:13:45.280><c> to</c><01:13:45.560><c> actually</c><01:13:45.760><c> work</c>
+
+01:13:45.950 --> 01:13:45.960 align:start position:0%
+didn't have enough time to actually work
+
+
+01:13:45.960 --> 01:13:47.629 align:start position:0%
+didn't have enough time to actually work
+out<01:13:46.120><c> it</c><01:13:46.280><c> so</c><01:13:46.520><c> I'm</c><01:13:46.600><c> leaving</c><01:13:46.920><c> that</c><01:13:47.040><c> as</c><01:13:47.159><c> an</c>
+
+01:13:47.629 --> 01:13:47.639 align:start position:0%
+out it so I'm leaving that as an
+
+
+01:13:47.639 --> 01:13:49.430 align:start position:0%
+out it so I'm leaving that as an
+exercisebody<01:13:48.639><c> else</c><01:13:48.840><c> I'll</c><01:13:48.960><c> give</c><01:13:49.120><c> them</c><01:13:49.280><c> all</c>
+
+01:13:49.430 --> 01:13:49.440 align:start position:0%
+exercisebody else I'll give them all
+
+
+01:13:49.440 --> 01:13:50.669 align:start position:0%
+exercisebody else I'll give them all
+I'll<01:13:49.560><c> give</c><01:13:49.679><c> them</c><01:13:49.800><c> all</c><01:13:49.920><c> the</c><01:13:50.080><c> software</c><01:13:50.560><c> I'll</c>
+
+01:13:50.669 --> 01:13:50.679 align:start position:0%
+I'll give them all the software I'll
+
+
+01:13:50.679 --> 01:13:52.229 align:start position:0%
+I'll give them all the software I'll
+tell<01:13:50.840><c> them</c><01:13:51.040><c> what</c><01:13:51.199><c> I</c><01:13:51.480><c> what</c><01:13:51.560><c> I've</c><01:13:51.719><c> tried</c><01:13:52.080><c> that</c>
+
+01:13:52.229 --> 01:13:52.239 align:start position:0%
+tell them what I what I've tried that
+
+
+01:13:52.239 --> 01:13:54.110 align:start position:0%
+tell them what I what I've tried that
+hasn't<01:13:52.520><c> worked</c><01:13:53.080><c> but</c><01:13:53.320><c> I</c><01:13:53.400><c> think</c><01:13:53.639><c> it's</c><01:13:53.840><c> just</c><01:13:54.000><c> a</c>
+
+01:13:54.110 --> 01:13:54.120 align:start position:0%
+hasn't worked but I think it's just a
+
+
+01:13:54.120 --> 01:13:56.750 align:start position:0%
+hasn't worked but I think it's just a
+matter<01:13:54.320><c> of</c><01:13:54.520><c> configuring</c>
+
+01:13:56.750 --> 01:13:56.760 align:start position:0%
+matter of configuring
+
+
+01:13:56.760 --> 01:13:59.229 align:start position:0%
+matter of configuring
+getting<01:13:57.480><c> camera</c><01:13:57.800><c> settings</c><01:13:58.400><c> right</c><01:13:58.679><c> I</c><01:13:58.840><c> got</c><01:13:58.920><c> a</c>
+
+01:13:59.229 --> 01:13:59.239 align:start position:0%
+getting camera settings right I got a
+
+
+01:13:59.239 --> 01:14:02.590 align:start position:0%
+getting camera settings right I got a
+really<01:13:59.480><c> cheap</c><01:13:59.719><c> $10</c><01:14:00.600><c> creative</c><01:14:00.960><c> Labs</c>
+
+01:14:02.590 --> 01:14:02.600 align:start position:0%
+really cheap $10 creative Labs
+
+
+01:14:02.600 --> 01:14:06.990 align:start position:0%
+really cheap $10 creative Labs
+camera1<01:14:03.600><c> USB</c><01:14:04.040><c> camera</c><01:14:04.560><c> so</c><01:14:05.239><c> um</c><01:14:05.560><c> it</c><01:14:05.800><c> works</c><01:14:06.800><c> more</c>
+
+01:14:06.990 --> 01:14:07.000 align:start position:0%
+camera1 USB camera so um it works more
+
+
+01:14:07.000 --> 01:14:08.709 align:start position:0%
+camera1 USB camera so um it works more
+generic<01:14:07.480><c> camera</c><01:14:07.800><c> the</c><01:14:07.920><c> more</c><01:14:08.080><c> likely</c><01:14:08.360><c> you</c><01:14:08.600><c> just</c>
+
+01:14:08.709 --> 01:14:08.719 align:start position:0%
+generic camera the more likely you just
+
+
+01:14:08.719 --> 01:14:10.990 align:start position:0%
+generic camera the more likely you just
+plug<01:14:08.920><c> it</c><01:14:09.040><c> into</c><01:14:09.199><c> the</c><01:14:09.360><c> PO</c><01:14:09.800><c> work</c><01:14:10.480><c> I'm</c><01:14:10.760><c> talking</c>
+
+01:14:10.990 --> 01:14:11.000 align:start position:0%
+plug it into the PO work I'm talking
+
+
+01:14:11.000 --> 01:14:13.430 align:start position:0%
+plug it into the PO work I'm talking
+about<01:14:11.400><c> you</c><01:14:11.520><c> mentioned</c><01:14:12.199><c> um</c><01:14:12.520><c> you</c><01:14:12.719><c> have</c><01:14:12.840><c> to</c><01:14:13.040><c> plug</c>
+
+01:14:13.430 --> 01:14:13.440 align:start position:0%
+about you mentioned um you have to plug
+
+
+01:14:13.440 --> 01:14:16.110 align:start position:0%
+about you mentioned um you have to plug
+the<01:14:13.679><c> camera</c><01:14:14.199><c> into</c><01:14:14.560><c> the</c><01:14:14.800><c> raspberry</c><01:14:15.239><c> pipe</c><01:14:15.440><c> board</c>
+
+01:14:16.110 --> 01:14:16.120 align:start position:0%
+the camera into the raspberry pipe board
+
+
+01:14:16.120 --> 01:14:19.110 align:start position:0%
+the camera into the raspberry pipe board
+if<01:14:16.199><c> you</c><01:14:16.400><c> have</c><01:14:16.560><c> a</c><01:14:16.760><c> hub</c><01:14:17.080><c> for</c><01:14:17.400><c> USB</c><01:14:18.400><c> um</c><01:14:18.639><c> that's</c><01:14:18.800><c> too</c>
+
+01:14:19.110 --> 01:14:19.120 align:start position:0%
+if you have a hub for USB um that's too
+
+
+01:14:19.120 --> 01:14:21.629 align:start position:0%
+if you have a hub for USB um that's too
+far<01:14:19.400><c> away</c><01:14:20.320><c> so</c><01:14:20.480><c> there's</c><01:14:20.639><c> a</c><01:14:20.800><c> little</c><01:14:21.320><c> and</c><01:14:21.480><c> that's</c>
+
+01:14:21.629 --> 01:14:21.639 align:start position:0%
+far away so there's a little and that's
+
+
+01:14:21.639 --> 01:14:23.030 align:start position:0%
+far away so there's a little and that's
+I<01:14:21.719><c> think</c><01:14:21.880><c> one</c><01:14:22.040><c> reason</c><01:14:22.280><c> why</c><01:14:22.400><c> they</c><01:14:22.520><c> put</c><01:14:22.639><c> a</c><01:14:22.760><c> camera</c>
+
+01:14:23.030 --> 01:14:23.040 align:start position:0%
+I think one reason why they put a camera
+
+
+01:14:23.040 --> 01:14:25.709 align:start position:0%
+I think one reason why they put a camera
+interface<01:14:23.480><c> on</c><01:14:23.639><c> the</c><01:14:23.760><c> board</c><01:14:25.239><c> actually</c><01:14:25.440><c> have</c><01:14:25.560><c> a</c>
+
+01:14:25.709 --> 01:14:25.719 align:start position:0%
+interface on the board actually have a
+
+
+01:14:25.719 --> 01:14:27.910 align:start position:0%
+interface on the board actually have a
+closer<01:14:26.199><c> camera</c><01:14:26.480><c> interface</c><01:14:27.280><c> so</c><01:14:27.480><c> that's</c><01:14:27.679><c> coming</c>
+
+01:14:27.910 --> 01:14:27.920 align:start position:0%
+closer camera interface so that's coming
+
+
+01:14:27.920 --> 01:14:29.550 align:start position:0%
+closer camera interface so that's coming
+along<01:14:28.239><c> soon</c><01:14:28.560><c> so</c><01:14:28.719><c> that</c><01:14:28.880><c> might</c><01:14:29.000><c> be</c><01:14:29.159><c> the</c><01:14:29.280><c> best</c><01:14:29.440><c> way</c>
+
+01:14:29.550 --> 01:14:29.560 align:start position:0%
+along soon so that might be the best way
+
+
+01:14:29.560 --> 01:14:31.950 align:start position:0%
+along soon so that might be the best way
+to<01:14:29.679><c> do</c><01:14:29.800><c> it</c><01:14:30.159><c> but</c><01:14:30.360><c> again</c><01:14:30.560><c> if</c><01:14:30.639><c> you</c><01:14:30.800><c> have</c><01:14:30.920><c> a</c><01:14:31.159><c> USB</c><01:14:31.600><c> hub</c>
+
+01:14:31.950 --> 01:14:31.960 align:start position:0%
+to do it but again if you have a USB hub
+
+
+01:14:31.960 --> 01:14:34.030 align:start position:0%
+to do it but again if you have a USB hub
+you<01:14:32.120><c> try</c><01:14:32.320><c> plugging</c><01:14:32.639><c> a</c><01:14:32.760><c> camera</c><01:14:33.040><c> into</c><01:14:33.360><c> that</c><01:14:33.840><c> that</c>
+
+01:14:34.030 --> 01:14:34.040 align:start position:0%
+you try plugging a camera into that that
+
+
+01:14:34.040 --> 01:14:38.669 align:start position:0%
+you try plugging a camera into that that
+seemed<01:14:34.400><c> to</c><01:14:34.960><c> fail</c><01:14:35.400><c> because</c><01:14:35.560><c> I</c>
+
+01:14:38.669 --> 01:14:38.679 align:start position:0%
+
+
+
+01:14:38.679 --> 01:14:41.390 align:start position:0%
+
+couldn't<01:14:39.679><c> yeah</c><01:14:39.960><c> the</c><01:14:40.400><c> uh</c><01:14:40.600><c> the</c><01:14:40.719><c> foundation</c><01:14:41.199><c> in</c>
+
+01:14:41.390 --> 01:14:41.400 align:start position:0%
+couldn't yeah the uh the foundation in
+
+
+01:14:41.400 --> 01:14:43.350 align:start position:0%
+couldn't yeah the uh the foundation in
+conjunction<01:14:41.840><c> with</c><01:14:42.000><c> its</c><01:14:42.239><c> Partners</c><01:14:42.800><c> is</c><01:14:43.000><c> working</c>
+
+01:14:43.350 --> 01:14:43.360 align:start position:0%
+conjunction with its Partners is working
+
+
+01:14:43.360 --> 01:14:45.350 align:start position:0%
+conjunction with its Partners is working
+on<01:14:43.560><c> a</c><01:14:43.840><c> very</c><01:14:44.080><c> high</c><01:14:44.280><c> performance</c><01:14:44.880><c> camera</c><01:14:45.239><c> that</c>
+
+01:14:45.350 --> 01:14:45.360 align:start position:0%
+on a very high performance camera that
+
+
+01:14:45.360 --> 01:14:50.070 align:start position:0%
+on a very high performance camera that
+will<01:14:45.520><c> use</c><01:14:45.920><c> CSI</c><01:14:46.719><c> uh</c><01:14:47.120><c> interface</c><01:14:48.120><c> and</c><01:14:48.840><c> um</c><01:14:49.840><c> one</c><01:14:49.960><c> of</c>
+
+01:14:50.070 --> 01:14:50.080 align:start position:0%
+will use CSI uh interface and um one of
+
+
+01:14:50.080 --> 01:14:52.070 align:start position:0%
+will use CSI uh interface and um one of
+the<01:14:50.280><c> slides</c><01:14:50.880><c> back</c><01:14:51.080><c> here</c><01:14:51.360><c> I'll</c><01:14:51.600><c> I'll</c><01:14:51.719><c> see</c><01:14:51.880><c> if</c><01:14:52.000><c> I</c>
+
+01:14:52.070 --> 01:14:52.080 align:start position:0%
+the slides back here I'll I'll see if I
+
+
+01:14:52.080 --> 01:14:55.790 align:start position:0%
+the slides back here I'll I'll see if I
+can<01:14:52.280><c> find</c><01:14:52.480><c> it</c><01:14:53.159><c> when</c><01:14:53.800><c> when</c><01:14:53.960><c> we're</c><01:14:54.400><c> uh</c>
+
+01:14:55.790 --> 01:14:55.800 align:start position:0%
+can find it when when we're uh
+
+
+01:14:55.800 --> 01:14:58.470 align:start position:0%
+can find it when when we're uh
+when<01:14:56.159><c> uh</c><01:14:56.440><c> when</c><01:14:56.639><c> I</c><01:14:57.120><c> when</c><01:14:57.239><c> I</c><01:14:57.400><c> can</c><01:14:57.960><c> uh</c><01:14:58.199><c> when</c><01:14:58.320><c> we</c>
+
+01:14:58.470 --> 01:14:58.480 align:start position:0%
+when uh when I when I can uh when we
+
+
+01:14:58.480 --> 01:15:01.510 align:start position:0%
+when uh when I when I can uh when we
+block<01:14:58.719><c> on</c><01:14:58.920><c> that</c><01:14:59.920><c> uh</c><01:15:00.239><c> I</c><01:15:00.320><c> mean</c><01:15:01.000><c> do</c><01:15:01.199><c> something</c>
+
+01:15:01.510 --> 01:15:01.520 align:start position:0%
+block on that uh I mean do something
+
+
+01:15:01.520 --> 01:15:07.310 align:start position:0%
+block on that uh I mean do something
+else<01:15:02.800><c> um</c><01:15:03.800><c> the</c><01:15:04.120><c> prototype's</c><01:15:04.719><c> out</c><01:15:05.639><c> and</c><01:15:06.360><c> uh</c><01:15:07.159><c> it's</c>
+
+01:15:07.310 --> 01:15:07.320 align:start position:0%
+else um the prototype's out and uh it's
+
+
+01:15:07.320 --> 01:15:08.430 align:start position:0%
+else um the prototype's out and uh it's
+my<01:15:07.719><c> understanding</c><01:15:07.920><c> that</c><01:15:08.040><c> it's</c><01:15:08.199><c> going</c><01:15:08.280><c> to</c>
+
+01:15:08.430 --> 01:15:08.440 align:start position:0%
+my understanding that it's going to
+
+
+01:15:08.440 --> 01:15:10.189 align:start position:0%
+my understanding that it's going to
+become<01:15:08.920><c> available</c><01:15:09.280><c> for</c><01:15:09.480><c> sale</c><01:15:09.719><c> in</c><01:15:09.840><c> the</c><01:15:10.000><c> next</c>
+
+01:15:10.189 --> 01:15:10.199 align:start position:0%
+become available for sale in the next
+
+
+01:15:10.199 --> 01:15:12.830 align:start position:0%
+become available for sale in the next
+month<01:15:10.400><c> or</c><01:15:10.639><c> two</c><01:15:11.639><c> uh</c><01:15:11.760><c> it</c><01:15:11.840><c> will</c><01:15:12.080><c> probably</c><01:15:12.400><c> be</c>
+
+01:15:12.830 --> 01:15:12.840 align:start position:0%
+month or two uh it will probably be
+
+
+01:15:12.840 --> 01:15:15.189 align:start position:0%
+month or two uh it will probably be
+relatively<01:15:13.520><c> inexpensive</c><01:15:14.520><c> it</c><01:15:14.719><c> might</c><01:15:14.960><c> cost</c>
+
+01:15:15.189 --> 01:15:15.199 align:start position:0%
+relatively inexpensive it might cost
+
+
+01:15:15.199 --> 01:15:18.390 align:start position:0%
+relatively inexpensive it might cost
+more<01:15:15.400><c> than</c><01:15:15.480><c> a</c><01:15:15.600><c> res</c><01:15:16.159><c> pie</c><01:15:17.159><c> um</c><01:15:17.600><c> but</c><01:15:17.760><c> it's</c><01:15:18.199><c> uh</c>
+
+01:15:18.390 --> 01:15:18.400 align:start position:0%
+more than a res pie um but it's uh
+
+
+01:15:18.400 --> 01:15:22.310 align:start position:0%
+more than a res pie um but it's uh
+apparently<01:15:18.840><c> got</c><01:15:19.440><c> uh</c><01:15:19.639><c> very</c><01:15:19.880><c> interesting</c>
+
+01:15:22.310 --> 01:15:22.320 align:start position:0%
+apparently got uh very interesting
+
+
+01:15:22.320 --> 01:15:23.470 align:start position:0%
+apparently got uh very interesting
+[Music]
+
+01:15:23.470 --> 01:15:23.480 align:start position:0%
+[Music]
+
+
+01:15:23.480 --> 01:15:27.990 align:start position:0%
+[Music]
+specifications<01:15:24.480><c> yes</c><01:15:24.679><c> ma'am</c>
+
+01:15:27.990 --> 01:15:28.000 align:start position:0%
+
+
+
+01:15:28.000 --> 01:15:32.830 align:start position:0%
+
+the<01:15:28.239><c> work</c><01:15:28.960><c> this</c><01:15:29.159><c> weend</c><01:15:29.960><c> you</c><01:15:30.199><c> to</c><01:15:30.320><c> show</c><01:15:30.679><c> with</c>
+
+01:15:32.830 --> 01:15:32.840 align:start position:0%
+the work this weend you to show with
+
+
+01:15:32.840 --> 01:15:36.030 align:start position:0%
+the work this weend you to show with
+system<01:15:33.840><c> I</c><01:15:34.000><c> I</c><01:15:34.159><c> will</c><01:15:34.760><c> yeah</c><01:15:35.080><c> I</c><01:15:35.360><c> I</c><01:15:35.440><c> will</c><01:15:35.679><c> have</c><01:15:35.800><c> a</c>
+
+01:15:36.030 --> 01:15:36.040 align:start position:0%
+system I I will yeah I I will have a
+
+
+01:15:36.040 --> 01:15:38.790 align:start position:0%
+system I I will yeah I I will have a
+system<01:15:36.920><c> there</c><01:15:37.719><c> that</c><01:15:37.840><c> will</c><01:15:38.080><c> just</c><01:15:38.239><c> be</c><01:15:38.400><c> sitting</c>
+
+01:15:38.790 --> 01:15:38.800 align:start position:0%
+system there that will just be sitting
+
+
+01:15:38.800 --> 01:15:40.990 align:start position:0%
+system there that will just be sitting
+there<01:15:39.120><c> and</c><01:15:39.360><c> anybody</c><01:15:39.800><c> that</c><01:15:40.000><c> wants</c><01:15:40.239><c> to</c><01:15:40.440><c> do</c>
+
+01:15:40.990 --> 01:15:41.000 align:start position:0%
+there and anybody that wants to do
+
+
+01:15:41.000 --> 01:15:43.750 align:start position:0%
+there and anybody that wants to do
+anything<01:15:41.360><c> they</c><01:15:41.520><c> want</c><01:15:41.719><c> to</c><01:15:42.000><c> with</c><01:15:42.159><c> it</c><01:15:42.800><c> except</c>
+
+01:15:43.750 --> 01:15:43.760 align:start position:0%
+anything they want to with it except
+
+
+01:15:43.760 --> 01:15:47.110 align:start position:0%
+anything they want to with it except
+sudu<01:15:44.520><c> RMS</c><01:15:45.320><c> you</c>
+
+01:15:47.110 --> 01:15:47.120 align:start position:0%
+sudu RMS you
+
+
+01:15:47.120 --> 01:15:52.510 align:start position:0%
+sudu RMS you
+know<01:15:48.120><c> you</c><01:15:48.199><c> can</c><01:15:48.400><c> use</c><01:15:48.600><c> it</c><01:15:49.600><c> and</c><01:15:50.120><c> um</c><01:15:50.760><c> in</c><01:15:51.040><c> fact</c><01:15:51.920><c> uh</c><01:15:52.400><c> I</c>
+
+01:15:52.510 --> 01:15:52.520 align:start position:0%
+know you can use it and um in fact uh I
+
+
+01:15:52.520 --> 01:15:55.870 align:start position:0%
+know you can use it and um in fact uh I
+can<01:15:52.880><c> probably</c><01:15:53.520><c> have</c><01:15:54.320><c> U</c><01:15:54.440><c> two</c><01:15:54.679><c> syst</c><01:15:55.000><c> systems</c>
+
+01:15:55.870 --> 01:15:55.880 align:start position:0%
+can probably have U two syst systems
+
+
+01:15:55.880 --> 01:15:58.390 align:start position:0%
+can probably have U two syst systems
+available<01:15:56.719><c> that</c><01:15:56.880><c> way</c><01:15:57.400><c> that</c><01:15:57.880><c> couple</c><01:15:58.080><c> of</c><01:15:58.280><c> are</c>
+
+01:15:58.390 --> 01:15:58.400 align:start position:0%
+available that way that couple of are
+
+
+01:15:58.400 --> 01:16:01.910 align:start position:0%
+available that way that couple of are
+goinging<01:15:59.320><c> and</c><01:15:59.880><c> various</c><01:16:00.320><c> people</c><01:16:00.600><c> are</c><01:16:00.920><c> bringing</c>
+
+01:16:01.910 --> 01:16:01.920 align:start position:0%
+goinging and various people are bringing
+
+
+01:16:01.920 --> 01:16:05.990 align:start position:0%
+goinging and various people are bringing
+systems<01:16:02.679><c> that</c><01:16:03.480><c> may</c><01:16:03.880><c> have</c><01:16:04.560><c> some</c><01:16:05.120><c> constraints</c>
+
+01:16:05.990 --> 01:16:06.000 align:start position:0%
+systems that may have some constraints
+
+
+01:16:06.000 --> 01:16:08.470 align:start position:0%
+systems that may have some constraints
+on<01:16:06.320><c> on</c><01:16:06.480><c> open</c><01:16:06.800><c> usage</c><01:16:07.639><c> but</c><01:16:07.840><c> yeah</c><01:16:08.120><c> there</c><01:16:08.199><c> will</c><01:16:08.360><c> be</c>
+
+01:16:08.470 --> 01:16:08.480 align:start position:0%
+on on open usage but yeah there will be
+
+
+01:16:08.480 --> 01:16:17.950 align:start position:0%
+on on open usage but yeah there will be
+a<01:16:08.560><c> ton</c><01:16:08.719><c> of</c><01:16:08.880><c> machines</c><01:16:09.639><c> there</c><01:16:10.639><c> um</c>
+
+01:16:17.950 --> 01:16:17.960 align:start position:0%
+
+
+
+01:16:17.960 --> 01:16:21.229 align:start position:0%
+
+available<01:16:18.960><c> as</c><01:16:19.080><c> someone</c><01:16:19.360><c> who</c><01:16:19.480><c> has</c><01:16:19.760><c> access</c><01:16:20.239><c> to</c>
+
+01:16:21.229 --> 01:16:21.239 align:start position:0%
+available as someone who has access to
+
+
+01:16:21.239 --> 01:16:22.910 align:start position:0%
+available as someone who has access to
+uh<01:16:21.440><c> plethora</c><01:16:22.000><c> of</c>
+
+01:16:22.910 --> 01:16:22.920 align:start position:0%
+uh plethora of
+
+
+01:16:22.920 --> 01:16:26.310 align:start position:0%
+uh plethora of
+underpowered<01:16:23.920><c> or</c><01:16:24.400><c> physical</c><01:16:24.960><c> or</c><01:16:25.120><c> virtual</c>
+
+01:16:26.310 --> 01:16:26.320 align:start position:0%
+underpowered or physical or virtual
+
+
+01:16:26.320 --> 01:16:29.310 align:start position:0%
+underpowered or physical or virtual
+systems<01:16:27.320><c> why</c><01:16:27.880><c> do</c><01:16:28.040><c> I</c><01:16:28.199><c> want</c><01:16:28.320><c> a</c>
+
+01:16:29.310 --> 01:16:29.320 align:start position:0%
+systems why do I want a
+
+
+01:16:29.320 --> 01:16:32.430 align:start position:0%
+systems why do I want a
+pie<01:16:30.320><c> in</c><01:16:30.520><c> my</c><01:16:30.719><c> humble</c><01:16:31.120><c> opinion</c><01:16:31.760><c> you</c><01:16:31.920><c> don't</c><01:16:32.199><c> want</c>
+
+01:16:32.430 --> 01:16:32.440 align:start position:0%
+pie in my humble opinion you don't want
+
+
+01:16:32.440 --> 01:16:35.910 align:start position:0%
+pie in my humble opinion you don't want
+one<01:16:33.280><c> and</c><01:16:33.480><c> in</c><01:16:33.679><c> my</c><01:16:34.159><c> opinion</c><01:16:35.159><c> this</c><01:16:35.520><c> this</c><01:16:35.679><c> thing</c>
+
+01:16:35.910 --> 01:16:35.920 align:start position:0%
+one and in my opinion this this thing
+
+
+01:16:35.920 --> 01:16:39.990 align:start position:0%
+one and in my opinion this this thing
+was<01:16:36.159><c> not</c><01:16:36.639><c> made</c><01:16:37.000><c> for</c><01:16:37.280><c> us</c><01:16:37.719><c> it</c><01:16:38.000><c> wasn't</c><01:16:38.639><c> made</c><01:16:39.639><c> as</c><01:16:39.760><c> a</c>
+
+01:16:39.990 --> 01:16:40.000 align:start position:0%
+was not made for us it wasn't made as a
+
+
+01:16:40.000 --> 01:16:43.149 align:start position:0%
+was not made for us it wasn't made as a
+toy<01:16:40.880><c> for</c><01:16:41.120><c> people</c><01:16:41.560><c> that</c><01:16:41.719><c> can</c><01:16:41.880><c> drop</c><01:16:42.560><c> 500</c><01:16:42.960><c> bucks</c>
+
+01:16:43.149 --> 01:16:43.159 align:start position:0%
+toy for people that can drop 500 bucks
+
+
+01:16:43.159 --> 01:16:47.070 align:start position:0%
+toy for people that can drop 500 bucks
+or<01:16:43.320><c> 1,000</c><01:16:44.239><c> bucks</c><01:16:45.239><c> and</c><01:16:45.639><c> people</c><01:16:46.080><c> that</c><01:16:46.480><c> have</c><01:16:46.800><c> a</c>
+
+01:16:47.070 --> 01:16:47.080 align:start position:0%
+or 1,000 bucks and people that have a
+
+
+01:16:47.080 --> 01:16:49.110 align:start position:0%
+or 1,000 bucks and people that have a
+relatively<01:16:47.600><c> high</c><01:16:47.800><c> level</c>
+
+01:16:49.110 --> 01:16:49.120 align:start position:0%
+relatively high level
+
+
+01:16:49.120 --> 01:16:52.550 align:start position:0%
+relatively high level
+ofation<01:16:50.120><c> and</c><01:16:50.719><c> relatively</c><01:16:51.280><c> high</c><01:16:51.560><c> expectations</c>
+
+01:16:52.550 --> 01:16:52.560 align:start position:0%
+ofation and relatively high expectations
+
+
+01:16:52.560 --> 01:16:55.390 align:start position:0%
+ofation and relatively high expectations
+in<01:16:52.719><c> terms</c><01:16:52.960><c> of</c><01:16:53.159><c> performance</c>
+
+01:16:55.390 --> 01:16:55.400 align:start position:0%
+in terms of performance
+
+
+01:16:55.400 --> 01:16:57.790 align:start position:0%
+in terms of performance
+but
+
+01:16:57.790 --> 01:16:57.800 align:start position:0%
+but
+
+
+01:16:57.800 --> 01:17:02.350 align:start position:0%
+but
+it's<01:16:59.000><c> killer</c><01:17:00.000><c> as</c><01:17:00.120><c> an</c><01:17:00.360><c> educational</c><01:17:01.360><c> platform</c>
+
+01:17:02.350 --> 01:17:02.360 align:start position:0%
+it's killer as an educational platform
+
+
+01:17:02.360 --> 01:17:06.149 align:start position:0%
+it's killer as an educational platform
+and<01:17:02.679><c> that</c><01:17:02.960><c> it</c><01:17:03.120><c> was</c><01:17:03.480><c> designed</c><01:17:04.360><c> and</c><01:17:04.639><c> aimed</c>
+
+01:17:06.149 --> 01:17:06.159 align:start position:0%
+and that it was designed and aimed
+
+
+01:17:06.159 --> 01:17:11.149 align:start position:0%
+and that it was designed and aimed
+at<01:17:07.159><c> kids</c><01:17:07.880><c> and</c><01:17:08.600><c> through</c><01:17:09.120><c> uh</c><01:17:09.520><c> University</c><01:17:10.520><c> and</c>
+
+01:17:11.149 --> 01:17:11.159 align:start position:0%
+at kids and through uh University and
+
+
+01:17:11.159 --> 01:17:13.950 align:start position:0%
+at kids and through uh University and
+that's<01:17:11.360><c> really</c><01:17:11.600><c> the</c><01:17:11.760><c> target</c><01:17:12.679><c> but</c><01:17:13.400><c> they've</c><01:17:13.679><c> got</c>
+
+01:17:13.950 --> 01:17:13.960 align:start position:0%
+that's really the target but they've got
+
+
+01:17:13.960 --> 01:17:18.070 align:start position:0%
+that's really the target but they've got
+this<01:17:14.239><c> really</c><01:17:14.719><c> Sly</c><01:17:15.280><c> plan</c><01:17:15.760><c> going</c><01:17:16.719><c> where</c><01:17:17.719><c> folks</c>
+
+01:17:18.070 --> 01:17:18.080 align:start position:0%
+this really Sly plan going where folks
+
+
+01:17:18.080 --> 01:17:20.510 align:start position:0%
+this really Sly plan going where folks
+like<01:17:18.320><c> us</c><01:17:18.679><c> are</c><01:17:19.040><c> leaping</c><01:17:19.400><c> into</c><01:17:19.639><c> it</c><01:17:19.960><c> and</c><01:17:20.199><c> creating</c>
+
+01:17:20.510 --> 01:17:20.520 align:start position:0%
+like us are leaping into it and creating
+
+
+01:17:20.520 --> 01:17:22.830 align:start position:0%
+like us are leaping into it and creating
+all<01:17:20.679><c> this</c><01:17:20.840><c> infrastructure</c><01:17:21.719><c> and</c><01:17:22.159><c> blazing</c><01:17:22.719><c> the</c>
+
+01:17:22.830 --> 01:17:22.840 align:start position:0%
+all this infrastructure and blazing the
+
+
+01:17:22.840 --> 01:17:26.590 align:start position:0%
+all this infrastructure and blazing the
+trail<01:17:23.800><c> where</c><01:17:25.239><c> kind</c><01:17:25.360><c> of</c><01:17:25.480><c> the</c><01:17:25.639><c> next</c><01:17:26.000><c> phase</c><01:17:26.360><c> can</c>
+
+01:17:26.590 --> 01:17:26.600 align:start position:0%
+trail where kind of the next phase can
+
+
+01:17:26.600 --> 01:17:29.990 align:start position:0%
+trail where kind of the next phase can
+kick<01:17:26.800><c> in</c><01:17:27.000><c> and</c><01:17:27.199><c> really</c><01:17:27.440><c> get</c><01:17:27.840><c> serious</c><01:17:28.840><c> I</c><01:17:29.760><c> that</c>
+
+01:17:29.990 --> 01:17:30.000 align:start position:0%
+kick in and really get serious I that
+
+
+01:17:30.000 --> 01:17:33.030 align:start position:0%
+kick in and really get serious I that
+question<01:17:30.719><c> slightly</c><01:17:31.120><c> different</c><01:17:31.400><c> way</c><01:17:31.760><c> um</c><01:17:32.480><c> so</c><01:17:32.960><c> I</c>
+
+01:17:33.030 --> 01:17:33.040 align:start position:0%
+question slightly different way um so I
+
+
+01:17:33.040 --> 01:17:35.430 align:start position:0%
+question slightly different way um so I
+come<01:17:33.199><c> up</c><01:17:33.320><c> with</c><01:17:33.480><c> applications</c><01:17:34.239><c> like</c><01:17:34.639><c> um</c><01:17:35.159><c> listen</c>
+
+01:17:35.430 --> 01:17:35.440 align:start position:0%
+come up with applications like um listen
+
+
+01:17:35.440 --> 01:17:38.070 align:start position:0%
+come up with applications like um listen
+to<01:17:35.560><c> My</c><01:17:35.760><c> Cello</c><01:17:36.199><c> do</c><01:17:36.360><c> a</c><01:17:36.560><c> fast</c><01:17:36.760><c> for</c><01:17:36.960><c> you</c><01:17:37.120><c> transform</c>
+
+01:17:38.070 --> 01:17:38.080 align:start position:0%
+to My Cello do a fast for you transform
+
+
+01:17:38.080 --> 01:17:40.709 align:start position:0%
+to My Cello do a fast for you transform
+and<01:17:38.199><c> then</c><01:17:39.000><c> generate</c><01:17:39.400><c> nitty</c><01:17:39.920><c> notes</c><01:17:40.400><c> piano</c>
+
+01:17:40.709 --> 01:17:40.719 align:start position:0%
+and then generate nitty notes piano
+
+
+01:17:40.719 --> 01:17:42.870 align:start position:0%
+and then generate nitty notes piano
+notes<01:17:41.040><c> to</c><01:17:41.239><c> accompany</c><01:17:41.600><c> me</c><01:17:41.800><c> playing</c><01:17:42.040><c> the</c><01:17:42.159><c> cello</c>
+
+01:17:42.870 --> 01:17:42.880 align:start position:0%
+notes to accompany me playing the cello
+
+
+01:17:42.880 --> 01:17:44.709 align:start position:0%
+notes to accompany me playing the cello
+once<01:17:43.040><c> I</c><01:17:43.199><c> get</c><01:17:43.360><c> that</c><01:17:43.560><c> system</c><01:17:43.920><c> done</c><01:17:44.280><c> yes</c><01:17:44.400><c> it</c><01:17:44.520><c> runs</c>
+
+01:17:44.709 --> 01:17:44.719 align:start position:0%
+once I get that system done yes it runs
+
+
+01:17:44.719 --> 01:17:47.870 align:start position:0%
+once I get that system done yes it runs
+on<01:17:44.840><c> my</c><01:17:45.040><c> PC</c><01:17:46.000><c> but</c><01:17:46.280><c> for</c><01:17:46.480><c> 35</c><01:17:46.960><c> bucks</c><01:17:47.360><c> I</c><01:17:47.440><c> can</c><01:17:47.560><c> build</c><01:17:47.760><c> a</c>
+
+01:17:47.870 --> 01:17:47.880 align:start position:0%
+on my PC but for 35 bucks I can build a
+
+
+01:17:47.880 --> 01:17:49.590 align:start position:0%
+on my PC but for 35 bucks I can build a
+little<01:17:48.000><c> Stone</c><01:17:48.600><c> system</c><01:17:49.040><c> that</c><01:17:49.199><c> actually</c><01:17:49.400><c> fits</c>
+
+01:17:49.590 --> 01:17:49.600 align:start position:0%
+little Stone system that actually fits
+
+
+01:17:49.600 --> 01:17:51.830 align:start position:0%
+little Stone system that actually fits
+in<01:17:49.719><c> my</c><01:17:49.800><c> cello</c><01:17:50.199><c> case</c><01:17:50.760><c> now</c><01:17:50.880><c> I've</c><01:17:51.080><c> got</c><01:17:51.440><c> like</c><01:17:51.679><c> a</c>
+
+01:17:51.830 --> 01:17:51.840 align:start position:0%
+in my cello case now I've got like a
+
+
+01:17:51.840 --> 01:17:53.149 align:start position:0%
+in my cello case now I've got like a
+special<01:17:52.159><c> musical</c><01:17:52.480><c> instrument</c><01:17:52.760><c> sort</c><01:17:52.920><c> of</c><01:17:53.000><c> thing</c>
+
+01:17:53.149 --> 01:17:53.159 align:start position:0%
+special musical instrument sort of thing
+
+
+01:17:53.159 --> 01:17:55.430 align:start position:0%
+special musical instrument sort of thing
+so<01:17:53.480><c> I</c><01:17:53.600><c> built</c><01:17:53.840><c> systems</c><01:17:54.159><c> that</c><01:17:54.239><c> are</c><01:17:54.440><c> like</c><01:17:54.639><c> oh</c>
+
+01:17:55.430 --> 01:17:55.440 align:start position:0%
+so I built systems that are like oh
+
+
+01:17:55.440 --> 01:17:57.709 align:start position:0%
+so I built systems that are like oh
+that'll<01:17:55.679><c> be</c><01:17:55.800><c> a</c><01:17:55.960><c> nice</c><01:17:56.199><c> toy</c><01:17:57.120><c> and</c><01:17:57.199><c> it's</c><01:17:57.440><c> great</c>
+
+01:17:57.709 --> 01:17:57.719 align:start position:0%
+that'll be a nice toy and it's great
+
+
+01:17:57.719 --> 01:17:59.470 align:start position:0%
+that'll be a nice toy and it's great
+just<01:17:57.880><c> have</c><01:17:58.000><c> it</c><01:17:58.199><c> just</c><01:17:58.320><c> do</c><01:17:58.639><c> that</c><01:17:59.120><c> because</c>
+
+01:17:59.470 --> 01:17:59.480 align:start position:0%
+just have it just do that because
+
+
+01:17:59.480 --> 01:18:01.189 align:start position:0%
+just have it just do that because
+because<01:17:59.719><c> for</c><01:17:59.920><c> 35</c><01:18:00.360><c> bucks</c><01:18:00.719><c> that's</c><01:18:00.960><c> actually</c>
+
+01:18:01.189 --> 01:18:01.199 align:start position:0%
+because for 35 bucks that's actually
+
+
+01:18:01.199 --> 01:18:04.110 align:start position:0%
+because for 35 bucks that's actually
+worth<01:18:01.679><c> throwing</c><01:18:02.320><c> a</c><01:18:02.400><c> whole</c><01:18:02.600><c> computer</c><01:18:03.120><c> system</c>
+
+01:18:04.110 --> 01:18:04.120 align:start position:0%
+worth throwing a whole computer system
+
+
+01:18:04.120 --> 01:18:07.110 align:start position:0%
+worth throwing a whole computer system
+but<01:18:04.400><c> but</c><01:18:04.960><c> uh</c><01:18:05.600><c> I</c><01:18:05.719><c> do</c><01:18:05.920><c> have</c><01:18:06.040><c> to</c><01:18:06.320><c> interject</c><01:18:06.840><c> one</c>
+
+01:18:07.110 --> 01:18:07.120 align:start position:0%
+but but uh I do have to interject one
+
+
+01:18:07.120 --> 01:18:08.950 align:start position:0%
+but but uh I do have to interject one
+thing<01:18:07.320><c> I</c><01:18:07.400><c> was</c><01:18:07.560><c> going</c><01:18:07.679><c> to</c><01:18:07.880><c> put</c><01:18:08.040><c> a</c><01:18:08.120><c> slide</c><01:18:08.400><c> up</c><01:18:08.719><c> on</c>
+
+01:18:08.950 --> 01:18:08.960 align:start position:0%
+thing I was going to put a slide up on
+
+
+01:18:08.960 --> 01:18:10.990 align:start position:0%
+thing I was going to put a slide up on
+this<01:18:09.199><c> but</c><01:18:09.320><c> I</c><01:18:09.440><c> decided</c><01:18:09.880><c> hey</c><01:18:10.040><c> it's</c><01:18:10.239><c> off</c><01:18:10.600><c> it's</c><01:18:10.800><c> off</c>
+
+01:18:10.990 --> 01:18:11.000 align:start position:0%
+this but I decided hey it's off it's off
+
+
+01:18:11.000 --> 01:18:14.149 align:start position:0%
+this but I decided hey it's off it's off
+Target<01:18:11.719><c> but</c><01:18:11.880><c> you</c><01:18:12.000><c> can</c><01:18:12.239><c> buy</c><01:18:12.760><c> a</c><01:18:13.320><c> much</c><01:18:13.840><c> more</c>
+
+01:18:14.149 --> 01:18:14.159 align:start position:0%
+Target but you can buy a much more
+
+
+01:18:14.159 --> 01:18:16.390 align:start position:0%
+Target but you can buy a much more
+powerful<01:18:14.679><c> machine</c><01:18:15.679><c> for</c>
+
+01:18:16.390 --> 01:18:16.400 align:start position:0%
+powerful machine for
+
+
+01:18:16.400 --> 01:18:19.629 align:start position:0%
+powerful machine for
+$57<01:18:17.400><c> you</c><01:18:17.560><c> can</c><01:18:17.719><c> get</c><01:18:17.880><c> a</c><01:18:18.040><c> state-of-the-art</c><01:18:18.800><c> Arm</c>
+
+01:18:19.629 --> 01:18:19.639 align:start position:0%
+$57 you can get a state-of-the-art Arm
+
+
+01:18:19.639 --> 01:18:22.550 align:start position:0%
+$57 you can get a state-of-the-art Arm
+based<01:18:20.440><c> system</c><01:18:21.080><c> with</c><01:18:21.400><c> iio</c><01:18:21.920><c> coming</c><01:18:22.120><c> out</c><01:18:22.239><c> of</c><01:18:22.360><c> your</c>
+
+01:18:22.550 --> 01:18:22.560 align:start position:0%
+based system with iio coming out of your
+
+
+01:18:22.560 --> 01:18:27.390 align:start position:0%
+based system with iio coming out of your
+ears<01:18:23.520><c> made</c><01:18:23.800><c> by</c><01:18:23.920><c> a</c><01:18:24.040><c> Bulgarian</c><01:18:25.000><c> named</c><01:18:25.679><c> OLX</c><01:18:26.679><c> okay</c>
+
+01:18:27.390 --> 01:18:27.400 align:start position:0%
+ears made by a Bulgarian named OLX okay
+
+
+01:18:27.400 --> 01:18:30.229 align:start position:0%
+ears made by a Bulgarian named OLX okay
+but<01:18:28.040><c> it</c><01:18:28.239><c> doesn't</c><01:18:28.560><c> have</c><01:18:28.719><c> the</c><01:18:29.080><c> community</c><01:18:30.080><c> it</c>
+
+01:18:30.229 --> 01:18:30.239 align:start position:0%
+but it doesn't have the community it
+
+
+01:18:30.239 --> 01:18:34.390 align:start position:0%
+but it doesn't have the community it
+doesn't<01:18:31.199><c> have</c><01:18:31.639><c> the</c><01:18:32.600><c> the</c><01:18:33.199><c> the</c>
+
+01:18:34.390 --> 01:18:34.400 align:start position:0%
+doesn't have the the the
+
+
+01:18:34.400 --> 01:18:36.470 align:start position:0%
+doesn't have the the the
+um<01:18:35.400><c> the</c>
+
+01:18:36.470 --> 01:18:36.480 align:start position:0%
+um the
+
+
+01:18:36.480 --> 01:18:39.270 align:start position:0%
+um the
+momentum<01:18:37.480><c> and</c><01:18:37.920><c> uh</c><01:18:38.199><c> so</c><01:18:38.639><c> anyway</c><01:18:38.960><c> that's</c><01:18:39.120><c> what</c>
+
+01:18:39.270 --> 01:18:39.280 align:start position:0%
+momentum and uh so anyway that's what
+
+
+01:18:39.280 --> 01:18:43.550 align:start position:0%
+momentum and uh so anyway that's what
+makes<01:18:39.639><c> RPI</c><01:18:40.600><c> interesting</c><01:18:41.600><c> sorry</c><01:18:41.920><c> Alan</c><01:18:42.920><c> um</c><01:18:43.120><c> so</c><01:18:43.480><c> I</c>
+
+01:18:43.550 --> 01:18:43.560 align:start position:0%
+makes RPI interesting sorry Alan um so I
+
+
+01:18:43.560 --> 01:18:45.270 align:start position:0%
+makes RPI interesting sorry Alan um so I
+want<01:18:43.679><c> to</c><01:18:43.840><c> mention</c><01:18:44.120><c> if</c><01:18:44.280><c> you</c><01:18:44.400><c> guys</c><01:18:44.560><c> have</c><01:18:44.719><c> been</c><01:18:44.960><c> to</c>
+
+01:18:45.270 --> 01:18:45.280 align:start position:0%
+want to mention if you guys have been to
+
+
+01:18:45.280 --> 01:18:46.790 align:start position:0%
+want to mention if you guys have been to
+the<01:18:45.800><c> last</c>
+
+01:18:46.790 --> 01:18:46.800 align:start position:0%
+the last
+
+
+01:18:46.800 --> 01:18:49.189 align:start position:0%
+the last
+three<01:18:47.800><c> Christmas</c><01:18:48.280><c> parties</c><01:18:48.639><c> that</c><01:18:48.800><c> we've</c><01:18:49.040><c> had</c>
+
+01:18:49.189 --> 01:18:49.199 align:start position:0%
+three Christmas parties that we've had
+
+
+01:18:49.199 --> 01:18:51.270 align:start position:0%
+three Christmas parties that we've had
+over<01:18:49.360><c> this</c><01:18:49.520><c> Splat</c><01:18:49.880><c> space</c><01:18:50.600><c> uh</c><01:18:50.719><c> so</c><01:18:50.880><c> the</c><01:18:51.040><c> first</c>
+
+01:18:51.270 --> 01:18:51.280 align:start position:0%
+over this Splat space uh so the first
+
+
+01:18:51.280 --> 01:18:54.189 align:start position:0%
+over this Splat space uh so the first
+year<01:18:51.800><c> I</c><01:18:51.960><c> demonstrated</c><01:18:52.679><c> backup</c><01:18:53.159><c> PC</c><01:18:54.040><c> which</c>
+
+01:18:54.189 --> 01:18:54.199 align:start position:0%
+year I demonstrated backup PC which
+
+
+01:18:54.199 --> 01:18:56.990 align:start position:0%
+year I demonstrated backup PC which
+would<01:18:54.400><c> run</c><01:18:55.040><c> just</c><01:18:55.320><c> fine</c><01:18:55.960><c> on</c><01:18:56.080><c> a</c><01:18:56.239><c> Raspberry</c><01:18:56.719><c> Pi</c>
+
+01:18:56.990 --> 01:18:57.000 align:start position:0%
+would run just fine on a Raspberry Pi
+
+
+01:18:57.000 --> 01:18:58.550 align:start position:0%
+would run just fine on a Raspberry Pi
+this<01:18:57.120><c> would</c><01:18:57.239><c> be</c><01:18:57.360><c> a</c><01:18:57.480><c> perfect</c><01:18:57.840><c> application</c><01:18:58.360><c> for</c>
+
+01:18:58.550 --> 01:18:58.560 align:start position:0%
+this would be a perfect application for
+
+
+01:18:58.560 --> 01:19:00.110 align:start position:0%
+this would be a perfect application for
+something<01:18:58.880><c> like</c><01:18:59.120><c> this</c><01:18:59.360><c> because</c><01:18:59.520><c> it's</c><01:18:59.960><c> it's</c>
+
+01:19:00.110 --> 01:19:00.120 align:start position:0%
+something like this because it's it's
+
+
+01:19:00.120 --> 01:19:02.350 align:start position:0%
+something like this because it's it's
+low<01:19:00.480><c> power</c><01:19:00.760><c> it's</c><01:19:01.080><c> quiet</c><01:19:01.480><c> it</c><01:19:01.600><c> just</c><01:19:01.719><c> runs</c><01:19:02.040><c> 24</c>
+
+01:19:02.350 --> 01:19:02.360 align:start position:0%
+low power it's quiet it just runs 24
+
+
+01:19:02.360 --> 01:19:03.870 align:start position:0%
+low power it's quiet it just runs 24
+hours<01:19:02.560><c> a</c><01:19:02.679><c> day</c><01:19:02.840><c> and</c><01:19:02.960><c> backs</c><01:19:03.199><c> up</c><01:19:03.400><c> everything</c><01:19:03.679><c> else</c>
+
+01:19:03.870 --> 01:19:03.880 align:start position:0%
+hours a day and backs up everything else
+
+
+01:19:03.880 --> 01:19:06.830 align:start position:0%
+hours a day and backs up everything else
+in<01:19:04.040><c> your</c><01:19:04.360><c> house</c><01:19:05.360><c> uh</c><01:19:05.639><c> the</c><01:19:05.800><c> year</c><01:19:06.080><c> after</c><01:19:06.360><c> that</c><01:19:06.600><c> we</c>
+
+01:19:06.830 --> 01:19:06.840 align:start position:0%
+in your house uh the year after that we
+
+
+01:19:06.840 --> 01:19:09.629 align:start position:0%
+in your house uh the year after that we
+did<01:19:07.280><c> um</c><01:19:07.520><c> demonstrated</c><01:19:08.520><c> the</c><01:19:08.719><c> happy</c><01:19:09.040><c> Krabby</c>
+
+01:19:09.629 --> 01:19:09.639 align:start position:0%
+did um demonstrated the happy Krabby
+
+
+01:19:09.639 --> 01:19:11.790 align:start position:0%
+did um demonstrated the happy Krabby
+which<01:19:09.800><c> was</c><01:19:09.960><c> the</c><01:19:10.080><c> crab</c><01:19:10.400><c> cage</c><01:19:10.760><c> Monitor</c><01:19:11.480><c> and</c><01:19:11.639><c> in</c>
+
+01:19:11.790 --> 01:19:11.800 align:start position:0%
+which was the crab cage Monitor and in
+
+
+01:19:11.800 --> 01:19:13.950 align:start position:0%
+which was the crab cage Monitor and in
+that<01:19:12.000><c> case</c><01:19:12.239><c> it</c><01:19:12.560><c> recorded</c><01:19:13.239><c> information</c><01:19:13.800><c> from</c>
+
+01:19:13.950 --> 01:19:13.960 align:start position:0%
+that case it recorded information from
+
+
+01:19:13.960 --> 01:19:16.470 align:start position:0%
+that case it recorded information from
+the<01:19:14.120><c> crab</c><01:19:14.760><c> The</c><01:19:14.880><c> Hermit</c><01:19:15.199><c> Crabs</c><01:19:15.600><c> cage</c><01:19:16.239><c> and</c><01:19:16.320><c> it</c>
+
+01:19:16.470 --> 01:19:16.480 align:start position:0%
+the crab The Hermit Crabs cage and it
+
+
+01:19:16.480 --> 01:19:18.350 align:start position:0%
+the crab The Hermit Crabs cage and it
+put<01:19:16.600><c> it</c><01:19:16.679><c> on</c><01:19:16.800><c> an</c><01:19:16.920><c> SD</c><01:19:17.280><c> card</c><01:19:17.639><c> well</c><01:19:17.880><c> with</c><01:19:18.040><c> something</c>
+
+01:19:18.350 --> 01:19:18.360 align:start position:0%
+put it on an SD card well with something
+
+
+01:19:18.360 --> 01:19:20.189 align:start position:0%
+put it on an SD card well with something
+like<01:19:18.560><c> this</c><01:19:18.840><c> you</c><01:19:18.920><c> can</c><01:19:19.080><c> take</c><01:19:19.360><c> almost</c><01:19:19.719><c> the</c><01:19:19.880><c> same</c>
+
+01:19:20.189 --> 01:19:20.199 align:start position:0%
+like this you can take almost the same
+
+
+01:19:20.199 --> 01:19:23.390 align:start position:0%
+like this you can take almost the same
+thing<01:19:20.800><c> and</c><01:19:21.000><c> instead</c><01:19:21.880><c> publish</c><01:19:22.239><c> it</c><01:19:22.880><c> you</c><01:19:23.000><c> know</c>
+
+01:19:23.390 --> 01:19:23.400 align:start position:0%
+thing and instead publish it you know
+
+
+01:19:23.400 --> 01:19:25.070 align:start position:0%
+thing and instead publish it you know
+with<01:19:23.679><c> have</c><01:19:23.880><c> its</c><01:19:24.000><c> own</c><01:19:24.159><c> little</c><01:19:24.320><c> web</c><01:19:24.480><c> in</c><01:19:24.719><c> interace</c>
+
+01:19:25.070 --> 01:19:25.080 align:start position:0%
+with have its own little web in interace
+
+
+01:19:25.080 --> 01:19:27.070 align:start position:0%
+with have its own little web in interace
+on<01:19:25.199><c> it</c><01:19:25.440><c> so</c><01:19:25.600><c> you</c><01:19:25.679><c> can</c><01:19:25.880><c> find</c><01:19:26.080><c> out</c><01:19:26.480><c> right</c><01:19:26.679><c> now</c><01:19:26.960><c> is</c>
+
+01:19:27.070 --> 01:19:27.080 align:start position:0%
+on it so you can find out right now is
+
+
+01:19:27.080 --> 01:19:30.590 align:start position:0%
+on it so you can find out right now is
+my<01:19:27.239><c> crab</c><01:19:27.639><c> cold</c><01:19:27.840><c> or</c><01:19:28.080><c> hot</c><01:19:28.960><c> and</c><01:19:29.159><c> then</c><01:19:29.840><c> um</c><01:19:30.440><c> this</c>
+
+01:19:30.590 --> 01:19:30.600 align:start position:0%
+my crab cold or hot and then um this
+
+
+01:19:30.600 --> 01:19:32.870 align:start position:0%
+my crab cold or hot and then um this
+year<01:19:30.800><c> we</c><01:19:31.000><c> demonstrated</c><01:19:31.840><c> the</c><01:19:32.280><c> garage</c><01:19:32.679><c> door</c>
+
+01:19:32.870 --> 01:19:32.880 align:start position:0%
+year we demonstrated the garage door
+
+
+01:19:32.880 --> 01:19:35.189 align:start position:0%
+year we demonstrated the garage door
+opener<01:19:33.360><c> detector</c><01:19:33.800><c> that</c><01:19:33.920><c> would</c><01:19:34.080><c> send</c><01:19:34.360><c> you</c><01:19:35.040><c> a</c>
+
+01:19:35.189 --> 01:19:35.199 align:start position:0%
+opener detector that would send you a
+
+
+01:19:35.199 --> 01:19:36.830 align:start position:0%
+opener detector that would send you a
+message<01:19:35.520><c> when</c><01:19:35.679><c> your</c><01:19:35.840><c> garage</c><01:19:36.159><c> door</c><01:19:36.440><c> open</c><01:19:36.679><c> and</c>
+
+01:19:36.830 --> 01:19:36.840 align:start position:0%
+message when your garage door open and
+
+
+01:19:36.840 --> 01:19:38.950 align:start position:0%
+message when your garage door open and
+closed<01:19:37.639><c> once</c><01:19:37.880><c> again</c><01:19:38.120><c> this</c><01:19:38.239><c> is</c><01:19:38.360><c> an</c><01:19:38.520><c> excellent</c>
+
+01:19:38.950 --> 01:19:38.960 align:start position:0%
+closed once again this is an excellent
+
+
+01:19:38.960 --> 01:19:41.510 align:start position:0%
+closed once again this is an excellent
+platform<01:19:39.400><c> for</c><01:19:39.600><c> that</c><01:19:39.920><c> because</c><01:19:40.360><c> it's</c><01:19:40.560><c> got</c><01:19:41.360><c> the</c>
+
+01:19:41.510 --> 01:19:41.520 align:start position:0%
+platform for that because it's got the
+
+
+01:19:41.520 --> 01:19:43.950 align:start position:0%
+platform for that because it's got the
+ability<01:19:41.840><c> to</c><01:19:42.040><c> read</c><01:19:42.679><c> just</c><01:19:42.800><c> a</c><01:19:42.920><c> lowlevel</c><01:19:43.440><c> input</c><01:19:43.800><c> to</c>
+
+01:19:43.950 --> 01:19:43.960 align:start position:0%
+ability to read just a lowlevel input to
+
+
+01:19:43.960 --> 01:19:45.669 align:start position:0%
+ability to read just a lowlevel input to
+say<01:19:44.159><c> the</c><01:19:44.280><c> garage</c><01:19:44.560><c> door</c><01:19:44.719><c> is</c><01:19:44.880><c> open</c><01:19:45.280><c> and</c><01:19:45.400><c> it's</c><01:19:45.560><c> got</c>
+
+01:19:45.669 --> 01:19:45.679 align:start position:0%
+say the garage door is open and it's got
+
+
+01:19:45.679 --> 01:19:48.669 align:start position:0%
+say the garage door is open and it's got
+a<01:19:45.760><c> full</c><01:19:46.000><c> Network</c><01:19:46.400><c> stack</c><01:19:47.159><c> and</c><01:19:47.360><c> with</c><01:19:47.480><c> a</c><01:19:47.679><c> $10</c>
+
+01:19:48.669 --> 01:19:48.679 align:start position:0%
+a full Network stack and with a $10
+
+
+01:19:48.679 --> 01:19:50.790 align:start position:0%
+a full Network stack and with a $10
+Wi-Fi<01:19:49.040><c> adapter</c><01:19:49.440><c> you</c><01:19:49.560><c> plug</c><01:19:49.840><c> that</c><01:19:49.960><c> in</c><01:19:50.239><c> there</c><01:19:50.679><c> and</c>
+
+01:19:50.790 --> 01:19:50.800 align:start position:0%
+Wi-Fi adapter you plug that in there and
+
+
+01:19:50.800 --> 01:19:52.870 align:start position:0%
+Wi-Fi adapter you plug that in there and
+it<01:19:50.880><c> sends</c><01:19:51.159><c> the</c><01:19:51.320><c> message</c><01:19:51.679><c> directly</c><01:19:52.000><c> to</c><01:19:52.239><c> you</c><01:19:52.639><c> one</c>
+
+01:19:52.870 --> 01:19:52.880 align:start position:0%
+it sends the message directly to you one
+
+
+01:19:52.880 --> 01:19:54.910 align:start position:0%
+it sends the message directly to you one
+little<01:19:53.199><c> box</c><01:19:53.719><c> put</c><01:19:53.880><c> it</c><01:19:54.000><c> in</c><01:19:54.120><c> the</c><01:19:54.239><c> garage</c><01:19:54.719><c> you're</c>
+
+01:19:54.910 --> 01:19:54.920 align:start position:0%
+little box put it in the garage you're
+
+
+01:19:54.920 --> 01:19:57.189 align:start position:0%
+little box put it in the garage you're
+done<01:19:55.400><c> so</c><01:19:56.239><c> there</c><01:19:56.480><c> that</c><01:19:56.600><c> may</c><01:19:56.760><c> answer</c><01:19:57.000><c> your</c>
+
+01:19:57.189 --> 01:19:57.199 align:start position:0%
+done so there that may answer your
+
+
+01:19:57.199 --> 01:19:59.270 align:start position:0%
+done so there that may answer your
+question<01:19:57.600><c> about</c><01:19:58.159><c> why</c><01:19:58.320><c> you</c><01:19:58.480><c> might</c><01:19:58.679><c> want</c><01:19:59.159><c> a</c>
+
+01:19:59.270 --> 01:19:59.280 align:start position:0%
+question about why you might want a
+
+
+01:19:59.280 --> 01:20:02.870 align:start position:0%
+question about why you might want a
+little<01:19:59.600><c> box</c><01:19:59.880><c> like</c><01:20:00.080><c> this</c><01:20:00.280><c> with</c><01:20:00.360><c> a</c><01:20:00.480><c> lot</c><01:20:00.600><c> of</c>
+
+01:20:02.870 --> 01:20:02.880 align:start position:0%
+
+
+
+01:20:02.880 --> 01:20:06.790 align:start position:0%
+
+capability<01:20:03.880><c> I'd</c><01:20:04.080><c> say</c><01:20:04.239><c> to</c><01:20:04.960><c> um</c><01:20:05.920><c> just</c><01:20:06.080><c> for</c><01:20:06.280><c> me</c>
+
+01:20:06.790 --> 01:20:06.800 align:start position:0%
+capability I'd say to um just for me
+
+
+01:20:06.800 --> 01:20:09.790 align:start position:0%
+capability I'd say to um just for me
+personally<01:20:07.800><c> um</c><01:20:08.800><c> it's</c><01:20:08.960><c> like</c><01:20:09.120><c> a</c><01:20:09.360><c> personal</c>
+
+01:20:09.790 --> 01:20:09.800 align:start position:0%
+personally um it's like a personal
+
+
+01:20:09.800 --> 01:20:12.470 align:start position:0%
+personally um it's like a personal
+education<01:20:10.360><c> device</c><01:20:11.080><c> it's</c><01:20:11.280><c> not</c><01:20:11.639><c> just</c><01:20:11.880><c> for</c><01:20:12.159><c> kids</c>
+
+01:20:12.470 --> 01:20:12.480 align:start position:0%
+education device it's not just for kids
+
+
+01:20:12.480 --> 01:20:15.149 align:start position:0%
+education device it's not just for kids
+it's<01:20:12.639><c> not</c><01:20:12.880><c> just</c><01:20:13.000><c> for</c><01:20:13.280><c> classes</c><01:20:14.199><c> you</c><01:20:14.440><c> want</c><01:20:14.719><c> to</c>
+
+01:20:15.149 --> 01:20:15.159 align:start position:0%
+it's not just for classes you want to
+
+
+01:20:15.159 --> 01:20:16.590 align:start position:0%
+it's not just for classes you want to
+you<01:20:15.320><c> want</c><01:20:15.480><c> to</c><01:20:15.679><c> play</c><01:20:15.880><c> with</c><01:20:16.000><c> it</c><01:20:16.159><c> since</c><01:20:16.360><c> getting</c>
+
+01:20:16.590 --> 01:20:16.600 align:start position:0%
+you want to play with it since getting
+
+
+01:20:16.600 --> 01:20:18.950 align:start position:0%
+you want to play with it since getting
+the<01:20:16.800><c> pie</c><01:20:17.000><c> and</c><01:20:17.120><c> learn</c><01:20:17.440><c> more</c><01:20:17.639><c> about</c><01:20:17.960><c> computers</c>
+
+01:20:18.950 --> 01:20:18.960 align:start position:0%
+the pie and learn more about computers
+
+
+01:20:18.960 --> 01:20:21.870 align:start position:0%
+the pie and learn more about computers
+and<01:20:19.080><c> I</c><01:20:19.280><c> have</c><01:20:19.560><c> from</c><01:20:19.920><c> you</c><01:20:20.000><c> know</c><01:20:20.199><c> 10</c><01:20:20.480><c> years</c><01:20:20.719><c> using</c>
+
+01:20:21.870 --> 01:20:21.880 align:start position:0%
+and I have from you know 10 years using
+
+
+01:20:21.880 --> 01:20:28.870 align:start position:0%
+and I have from you know 10 years using
+Max<01:20:22.880><c> for</c><01:20:23.360><c> for</c><01:20:23.719><c> $4</c>
+
+01:20:28.870 --> 01:20:28.880 align:start position:0%
+
+
+
+01:20:28.880 --> 01:20:32.229 align:start position:0%
+
+because<01:20:29.040><c> you</c><01:20:29.239><c> have</c>
+
+01:20:32.229 --> 01:20:32.239 align:start position:0%
+
+
+
+01:20:32.239 --> 01:20:36.030 align:start position:0%
+
+to<01:20:33.239><c> so</c><01:20:33.600><c> the</c><01:20:33.719><c> cool</c><01:20:34.000><c> thing</c><01:20:34.320><c> about</c><01:20:34.920><c> the</c><01:20:35.159><c> pie</c><01:20:35.600><c> and</c>
+
+01:20:36.030 --> 01:20:36.040 align:start position:0%
+to so the cool thing about the pie and
+
+
+01:20:36.040 --> 01:20:38.149 align:start position:0%
+to so the cool thing about the pie and
+why<01:20:36.159><c> it's</c><01:20:36.360><c> great</c><01:20:36.520><c> for</c><01:20:36.679><c> education</c><01:20:37.520><c> is</c><01:20:37.760><c> that</c><01:20:37.960><c> for</c>
+
+01:20:38.149 --> 01:20:38.159 align:start position:0%
+why it's great for education is that for
+
+
+01:20:38.159 --> 01:20:41.709 align:start position:0%
+why it's great for education is that for
+$3<01:20:38.880><c> you</c><01:20:38.960><c> can</c><01:20:39.120><c> get</c><01:20:39.239><c> a</c><01:20:39.360><c> 4</c><01:20:39.679><c> gab</c><01:20:40.199><c> SD</c><01:20:40.560><c> card</c><01:20:41.280><c> have</c><01:20:41.440><c> an</c>
+
+01:20:41.709 --> 01:20:41.719 align:start position:0%
+$3 you can get a 4 gab SD card have an
+
+
+01:20:41.719 --> 01:20:43.790 align:start position:0%
+$3 you can get a 4 gab SD card have an
+entirely<01:20:42.120><c> different</c><01:20:42.360><c> hard</c><01:20:42.600><c> drive</c><01:20:43.159><c> so</c><01:20:43.400><c> for</c><01:20:43.600><c> my</c>
+
+01:20:43.790 --> 01:20:43.800 align:start position:0%
+entirely different hard drive so for my
+
+
+01:20:43.800 --> 01:20:45.669 align:start position:0%
+entirely different hard drive so for my
+students<01:20:44.360><c> I'm</c><01:20:44.480><c> gonna</c><01:20:45.040><c> replace</c><01:20:45.360><c> their</c><01:20:45.520><c> hard</c>
+
+01:20:45.669 --> 01:20:45.679 align:start position:0%
+students I'm gonna replace their hard
+
+
+01:20:45.679 --> 01:20:47.390 align:start position:0%
+students I'm gonna replace their hard
+drives<01:20:46.000><c> every</c><01:20:46.159><c> time</c>
+
+01:20:47.390 --> 01:20:47.400 align:start position:0%
+drives every time
+
+
+01:20:47.400 --> 01:20:50.390 align:start position:0%
+drives every time
+we<01:20:48.400><c> but</c><01:20:48.600><c> I've</c><01:20:48.760><c> been</c><01:20:48.920><c> able</c><01:20:49.159><c> to</c><01:20:49.679><c> experiment</c><01:20:50.199><c> with</c>
+
+01:20:50.390 --> 01:20:50.400 align:start position:0%
+we but I've been able to experiment with
+
+
+01:20:50.400 --> 01:20:51.910 align:start position:0%
+we but I've been able to experiment with
+different<01:20:50.560><c> flavers</c><01:20:51.000><c> of</c><01:20:51.159><c> Linux</c><01:20:51.679><c> different</c>
+
+01:20:51.910 --> 01:20:51.920 align:start position:0%
+different flavers of Linux different
+
+
+01:20:51.920 --> 01:20:54.470 align:start position:0%
+different flavers of Linux different
+window<01:20:52.520><c> managers</c><01:20:53.520><c> and</c><01:20:53.880><c> I</c><01:20:54.000><c> have</c><01:20:54.120><c> a</c><01:20:54.239><c> bunch</c><01:20:54.400><c> of</c>
+
+01:20:54.470 --> 01:20:54.480 align:start position:0%
+window managers and I have a bunch of
+
+
+01:20:54.480 --> 01:20:55.629 align:start position:0%
+window managers and I have a bunch of
+different<01:20:54.679><c> different</c><01:20:54.920><c> systems</c><01:20:55.360><c> that</c><01:20:55.440><c> I'm</c>
+
+01:20:55.629 --> 01:20:55.639 align:start position:0%
+different different systems that I'm
+
+
+01:20:55.639 --> 01:20:58.350 align:start position:0%
+different different systems that I'm
+running<01:20:55.960><c> that</c><01:20:56.040><c> I'm</c><01:20:56.159><c> learning</c><01:20:56.400><c> on</c><01:20:57.320><c> done</c>
+
+01:20:58.350 --> 01:20:58.360 align:start position:0%
+running that I'm learning on done
+
+
+01:20:58.360 --> 01:21:01.510 align:start position:0%
+running that I'm learning on done
+otherwise<01:20:59.360><c> you</c><01:20:59.639><c> know</c><01:21:00.639><c> I'm</c><01:21:00.760><c> not</c><01:21:00.920><c> going</c><01:21:01.000><c> to</c><01:21:01.159><c> have</c>
+
+01:21:01.510 --> 01:21:01.520 align:start position:0%
+otherwise you know I'm not going to have
+
+
+01:21:01.520 --> 01:21:04.430 align:start position:0%
+otherwise you know I'm not going to have
+four<01:21:01.679><c> or</c><01:21:01.880><c> five</c><01:21:02.080><c> different</c><01:21:02.400><c> laptops</c><01:21:03.320><c> experim</c>
+
+01:21:04.430 --> 01:21:04.440 align:start position:0%
+four or five different laptops experim
+
+
+01:21:04.440 --> 01:21:06.790 align:start position:0%
+four or five different laptops experim
+systems<01:21:05.440><c> one</c><01:21:05.639><c> quick</c><01:21:05.840><c> thing</c><01:21:05.960><c> to</c><01:21:06.159><c> add</c><01:21:06.560><c> uh</c><01:21:06.639><c> on</c>
+
+01:21:06.790 --> 01:21:06.800 align:start position:0%
+systems one quick thing to add uh on
+
+
+01:21:06.800 --> 01:21:08.750 align:start position:0%
+systems one quick thing to add uh on
+Saturday<01:21:07.639><c> uh</c><01:21:07.880><c> one</c><01:21:08.000><c> of</c><01:21:08.080><c> the</c><01:21:08.159><c> things</c><01:21:08.320><c> we'll</c><01:21:08.520><c> show</c>
+
+01:21:08.750 --> 01:21:08.760 align:start position:0%
+Saturday uh one of the things we'll show
+
+
+01:21:08.760 --> 01:21:11.310 align:start position:0%
+Saturday uh one of the things we'll show
+you<01:21:09.000><c> is</c><01:21:09.159><c> how</c><01:21:09.280><c> to</c><01:21:09.440><c> trivially</c><01:21:10.280><c> steer</c><01:21:11.040><c> your</c>
+
+01:21:11.310 --> 01:21:11.320 align:start position:0%
+you is how to trivially steer your
+
+
+01:21:11.320 --> 01:21:15.629 align:start position:0%
+you is how to trivially steer your
+system<01:21:11.840><c> to</c><01:21:12.239><c> other</c><01:21:12.760><c> devices</c><01:21:13.360><c> for</c><01:21:13.560><c> the</c><01:21:14.040><c> rout</c><01:21:14.639><c> fs</c>
+
+01:21:15.629 --> 01:21:15.639 align:start position:0%
+system to other devices for the rout fs
+
+
+01:21:15.639 --> 01:21:20.310 align:start position:0%
+system to other devices for the rout fs
+and<01:21:16.440><c> um</c><01:21:17.440><c> uh</c><01:21:18.239><c> use</c><01:21:18.760><c> uh</c><01:21:18.960><c> you</c><01:21:19.080><c> know</c><01:21:19.239><c> thumb</c><01:21:19.520><c> drives</c>
+
+01:21:20.310 --> 01:21:20.320 align:start position:0%
+and um uh use uh you know thumb drives
+
+
+01:21:20.320 --> 01:21:22.310 align:start position:0%
+and um uh use uh you know thumb drives
+and<01:21:21.320><c> add</c>
+
+01:21:22.310 --> 01:21:22.320 align:start position:0%
+and add
+
+
+01:21:22.320 --> 01:21:25.470 align:start position:0%
+and add
+flexibility<01:21:23.320><c> um</c><01:21:24.120><c> and</c><01:21:24.320><c> the</c><01:21:24.639><c> other</c><01:21:24.880><c> thing</c><01:21:25.199><c> is</c>
+
+01:21:25.470 --> 01:21:25.480 align:start position:0%
+flexibility um and the other thing is
+
+
+01:21:25.480 --> 01:21:27.510 align:start position:0%
+flexibility um and the other thing is
+we've<01:21:25.719><c> got</c><01:21:26.199><c> a</c><01:21:26.320><c> scheme</c><01:21:26.639><c> set</c><01:21:26.840><c> up</c><01:21:27.120><c> where</c><01:21:27.239><c> you</c><01:21:27.360><c> can</c>
+
+01:21:27.510 --> 01:21:27.520 align:start position:0%
+we've got a scheme set up where you can
+
+
+01:21:27.520 --> 01:21:31.189 align:start position:0%
+we've got a scheme set up where you can
+run<01:21:27.760><c> Raspberry</c><01:21:28.480><c> Pi</c><01:21:29.480><c> absolutely</c><01:21:30.199><c> Standalone</c>
+
+01:21:31.189 --> 01:21:31.199 align:start position:0%
+run Raspberry Pi absolutely Standalone
+
+
+01:21:31.199 --> 01:21:34.030 align:start position:0%
+run Raspberry Pi absolutely Standalone
+with<01:21:31.600><c> nothing</c><01:21:32.239><c> but</c><01:21:32.560><c> a</c><01:21:32.719><c> network</c><01:21:33.120><c> connection</c>
+
+01:21:34.030 --> 01:21:34.040 align:start position:0%
+with nothing but a network connection
+
+
+01:21:34.040 --> 01:21:39.070 align:start position:0%
+with nothing but a network connection
+and<01:21:34.800><c> power</c><01:21:36.080><c> plug</c><01:21:37.080><c> and</c><01:21:37.400><c> yet</c><01:21:37.960><c> have</c><01:21:38.360><c> the</c><01:21:38.600><c> full</c>
+
+01:21:39.070 --> 01:21:39.080 align:start position:0%
+and power plug and yet have the full
+
+
+01:21:39.080 --> 01:21:41.229 align:start position:0%
+and power plug and yet have the full
+goey<01:21:39.440><c> desktop</c><01:21:40.000><c> from</c><01:21:40.280><c> anywhere</c><01:21:40.719><c> else</c><01:21:41.000><c> on</c><01:21:41.120><c> the</c>
+
+01:21:41.229 --> 01:21:41.239 align:start position:0%
+goey desktop from anywhere else on the
+
+
+01:21:41.239 --> 01:21:43.669 align:start position:0%
+goey desktop from anywhere else on the
+lary<01:21:41.840><c> network</c><01:21:42.360><c> that's</c><01:21:42.600><c> visible</c><01:21:43.080><c> to</c><01:21:43.520><c> the</c>
+
+01:21:43.669 --> 01:21:43.679 align:start position:0%
+lary network that's visible to the
+
+
+01:21:43.679 --> 01:21:45.950 align:start position:0%
+lary network that's visible to the
+Raspberry<01:21:44.159><c> Pi</c><01:21:44.480><c> it's</c>
+
+01:21:45.950 --> 01:21:45.960 align:start position:0%
+Raspberry Pi it's
+
+
+01:21:45.960 --> 01:21:49.470 align:start position:0%
+Raspberry Pi it's
+uh<01:21:46.960><c> available</c><01:21:47.480><c> in</c><01:21:47.639><c> fact</c><01:21:47.880><c> I</c><01:21:48.000><c> think</c><01:21:48.320><c> you're</c><01:21:48.600><c> demo</c>
+
+01:21:49.470 --> 01:21:49.480 align:start position:0%
+uh available in fact I think you're demo
+
+
+01:21:49.480 --> 01:21:51.950 align:start position:0%
+uh available in fact I think you're demo
+we've<01:21:49.639><c> got</c><01:21:49.760><c> a</c><01:21:49.840><c> demo</c><01:21:50.120><c> of</c><01:21:50.239><c> that</c><01:21:50.440><c> going</c><01:21:50.760><c> right</c><01:21:50.960><c> now</c>
+
+01:21:51.950 --> 01:21:51.960 align:start position:0%
+we've got a demo of that going right now
+
+
+01:21:51.960 --> 01:21:53.990 align:start position:0%
+we've got a demo of that going right now
+uh<01:21:52.239><c> but</c><01:21:52.400><c> we</c><01:21:52.480><c> can</c><01:21:52.639><c> go</c><01:21:52.760><c> into</c><01:21:52.920><c> the</c><01:21:53.040><c> details</c><01:21:53.840><c> on</c>
+
+01:21:53.990 --> 01:21:54.000 align:start position:0%
+uh but we can go into the details on
+
+
+01:21:54.000 --> 01:21:58.510 align:start position:0%
+uh but we can go into the details on
+Saturday<01:21:54.600><c> do</c><01:21:54.920><c> it</c><01:21:55.960><c> it</c><01:21:56.960><c> it</c><01:21:57.400><c> head</c><01:21:57.840><c> P</c><01:21:58.199><c> it's</c><01:21:58.320><c> a</c>
+
+01:21:58.510 --> 01:21:58.520 align:start position:0%
+Saturday do it it it head P it's a
+
+
+01:21:58.520 --> 01:22:01.350 align:start position:0%
+Saturday do it it it head P it's a
+headless<01:21:58.960><c> pie</c><01:21:59.719><c> it</c><01:22:00.120><c> it</c><01:22:00.280><c> makes</c><01:22:00.560><c> the</c><01:22:00.800><c> pie</c>
+
+01:22:01.350 --> 01:22:01.360 align:start position:0%
+headless pie it it makes the pie
+
+
+01:22:01.360 --> 01:22:03.950 align:start position:0%
+headless pie it it makes the pie
+available<01:22:02.360><c> to</c><01:22:02.880><c> any</c><01:22:03.120><c> other</c><01:22:03.360><c> system</c><01:22:03.639><c> on</c><01:22:03.800><c> the</c>
+
+01:22:03.950 --> 01:22:03.960 align:start position:0%
+available to any other system on the
+
+
+01:22:03.960 --> 01:22:05.350 align:start position:0%
+available to any other system on the
+network<01:22:04.560><c> by</c><01:22:04.679><c> a</c>
+
+01:22:05.350 --> 01:22:05.360 align:start position:0%
+network by a
+
+
+01:22:05.360 --> 01:22:07.950 align:start position:0%
+network by a
+BNC<01:22:06.360><c> and</c><01:22:06.480><c> you</c><01:22:06.639><c> get</c><01:22:06.800><c> the</c><01:22:07.120><c> the</c><01:22:07.199><c> full</c><01:22:07.440><c> gooey</c>
+
+01:22:07.950 --> 01:22:07.960 align:start position:0%
+BNC and you get the the full gooey
+
+
+01:22:07.960 --> 01:22:11.310 align:start position:0%
+BNC and you get the the full gooey
+desktop<01:22:08.520><c> and</c><01:22:08.760><c> but</c><01:22:08.840><c> you</c><01:22:09.000><c> need</c><01:22:09.360><c> no</c>
+
+01:22:11.310 --> 01:22:11.320 align:start position:0%
+desktop and but you need no
+
+
+01:22:11.320 --> 01:22:13.430 align:start position:0%
+desktop and but you need no
+peripherals<01:22:12.320><c> yeah</c><01:22:12.440><c> you</c><01:22:12.520><c> can</c><01:22:12.719><c> also</c><01:22:13.000><c> install</c>
+
+01:22:13.430 --> 01:22:13.440 align:start position:0%
+peripherals yeah you can also install
+
+
+01:22:13.440 --> 01:22:17.950 align:start position:0%
+peripherals yeah you can also install
+xrdp<01:22:14.440><c> remote</c>
+
+01:22:17.950 --> 01:22:17.960 align:start position:0%
+
+
+
+01:22:17.960 --> 01:22:22.270 align:start position:0%
+
+desktop<01:22:18.960><c> question</c><01:22:19.840><c> sorry</c><01:22:20.239><c> yeah</c><01:22:20.960><c> uh</c><01:22:21.239><c> who</c><01:22:21.440><c> was</c>
+
+01:22:22.270 --> 01:22:22.280 align:start position:0%
+desktop question sorry yeah uh who was
+
+
+01:22:22.280 --> 01:22:24.750 align:start position:0%
+desktop question sorry yeah uh who was
+mic<01:22:22.880><c> oh</c><01:22:23.040><c> yeah</c><01:22:23.360><c> yeah</c><01:22:23.760><c> what</c><01:22:23.920><c> advice</c><01:22:24.199><c> do</c><01:22:24.280><c> you</c><01:22:24.400><c> guys</c>
+
+01:22:24.750 --> 01:22:24.760 align:start position:0%
+mic oh yeah yeah what advice do you guys
+
+
+01:22:24.760 --> 01:22:30.790 align:start position:0%
+mic oh yeah yeah what advice do you guys
+have<01:22:25.000><c> regarding</c><01:22:25.800><c> cases</c>
+
+01:22:30.790 --> 01:22:30.800 align:start position:0%
+
+
+
+01:22:30.800 --> 01:22:36.149 align:start position:0%
+
+init<01:22:31.800><c> um</c><01:22:32.400><c> actually</c><01:22:33.760><c> uh</c><01:22:34.760><c> uh</c><01:22:35.360><c> Jeff</c><01:22:35.719><c> back</c><01:22:35.880><c> in</c><01:22:36.000><c> the</c>
+
+01:22:36.149 --> 01:22:36.159 align:start position:0%
+init um actually uh uh Jeff back in the
+
+
+01:22:36.159 --> 01:22:38.510 align:start position:0%
+init um actually uh uh Jeff back in the
+back<01:22:36.440><c> there</c><01:22:37.040><c> uh</c><01:22:37.199><c> sorry</c><01:22:37.480><c> not</c><01:22:37.679><c> the</c><01:22:37.800><c> other</c><01:22:38.040><c> Jeff</c>
+
+01:22:38.510 --> 01:22:38.520 align:start position:0%
+back there uh sorry not the other Jeff
+
+
+01:22:38.520 --> 01:22:42.390 align:start position:0%
+back there uh sorry not the other Jeff
+uh<01:22:38.719><c> next</c><01:22:38.960><c> to</c><01:22:39.960><c> yeah</c><01:22:40.800><c> makes</c><01:22:41.280><c> Reser</c><01:22:41.800><c> P</c><01:22:42.040><c> cases</c><01:22:42.280><c> with</c>
+
+01:22:42.390 --> 01:22:42.400 align:start position:0%
+uh next to yeah makes Reser P cases with
+
+
+01:22:42.400 --> 01:22:46.149 align:start position:0%
+uh next to yeah makes Reser P cases with
+it<01:22:42.560><c> 3D</c><01:22:43.280><c> printer</c><01:22:44.280><c> uh</c><01:22:45.000><c> there</c><01:22:45.159><c> are</c><01:22:45.679><c> there's</c><01:22:45.840><c> a</c>
+
+01:22:46.149 --> 01:22:46.159 align:start position:0%
+it 3D printer uh there are there's a
+
+
+01:22:46.159 --> 01:22:49.790 align:start position:0%
+it 3D printer uh there are there's a
+vast<01:22:46.520><c> array</c><01:22:46.840><c> of</c><01:22:47.000><c> them</c><01:22:47.600><c> uh</c><01:22:47.719><c> we</c><01:22:47.840><c> showed</c><01:22:48.480><c> 6</c><01:22:48.800><c> or8</c>
+
+01:22:49.790 --> 01:22:49.800 align:start position:0%
+vast array of them uh we showed 6 or8
+
+
+01:22:49.800 --> 01:22:53.629 align:start position:0%
+vast array of them uh we showed 6 or8
+including<01:22:50.360><c> the</c><01:22:51.040><c> raspberry</c><01:22:51.480><c> blet</c><01:22:52.480><c> case</c><01:22:53.480><c> that</c>
+
+01:22:53.629 --> 01:22:53.639 align:start position:0%
+including the raspberry blet case that
+
+
+01:22:53.639 --> 01:22:56.189 align:start position:0%
+including the raspberry blet case that
+stainless<01:22:54.080><c> steel</c><01:22:54.600><c> case</c><01:22:55.440><c> that's</c><01:22:55.679><c> like</c><01:22:55.800><c> 80</c>
+
+01:22:56.189 --> 01:22:56.199 align:start position:0%
+stainless steel case that's like 80
+
+
+01:22:56.199 --> 01:22:59.270 align:start position:0%
+stainless steel case that's like 80
+bucks<01:22:56.520><c> you</c><01:22:56.760><c> the</c><01:22:57.159><c> machine</c><01:22:58.159><c> stainless</c><01:22:58.560><c> steel</c>
+
+01:22:59.270 --> 01:22:59.280 align:start position:0%
+bucks you the machine stainless steel
+
+
+01:22:59.280 --> 01:23:01.510 align:start position:0%
+bucks you the machine stainless steel
+case<01:23:00.280><c> I</c><01:23:00.400><c> mean</c><01:23:00.600><c> something</c><01:23:00.920><c> adequate</c><01:23:01.360><c> not</c>
+
+01:23:01.510 --> 01:23:01.520 align:start position:0%
+case I mean something adequate not
+
+
+01:23:01.520 --> 01:23:03.030 align:start position:0%
+case I mean something adequate not
+something
+
+01:23:03.030 --> 01:23:03.040 align:start position:0%
+something
+
+
+01:23:03.040 --> 01:23:06.870 align:start position:0%
+something
+off<01:23:04.040><c> right</c><01:23:04.800><c> I</c><01:23:05.000><c> I</c><01:23:05.120><c> use</c><01:23:05.480><c> antistatic</c><01:23:06.400><c> plastic</c>
+
+01:23:06.870 --> 01:23:06.880 align:start position:0%
+off right I I use antistatic plastic
+
+
+01:23:06.880 --> 01:23:10.510 align:start position:0%
+off right I I use antistatic plastic
+bags
+
+01:23:10.510 --> 01:23:10.520 align:start position:0%
+
+
+
+01:23:10.520 --> 01:23:12.950 align:start position:0%
+
+so<01:23:11.520><c> I</c><01:23:11.639><c> I</c><01:23:11.719><c> would</c><01:23:11.920><c> recommend</c><01:23:12.360><c> that</c><01:23:12.560><c> you</c><01:23:12.719><c> you</c><01:23:12.840><c> go</c>
+
+01:23:12.950 --> 01:23:12.960 align:start position:0%
+so I I would recommend that you you go
+
+
+01:23:12.960 --> 01:23:14.590 align:start position:0%
+so I I would recommend that you you go
+to<01:23:13.120><c> adafruit.com</c>
+
+01:23:14.590 --> 01:23:14.600 align:start position:0%
+to adafruit.com
+
+
+01:23:14.600 --> 01:23:16.590 align:start position:0%
+to adafruit.com
+and<01:23:15.600><c> just</c><01:23:15.760><c> look</c><01:23:15.880><c> at</c><01:23:16.000><c> their</c><01:23:16.199><c> collection</c>
+
+01:23:16.590 --> 01:23:16.600 align:start position:0%
+and just look at their collection
+
+
+01:23:16.600 --> 01:23:18.149 align:start position:0%
+and just look at their collection
+they've<01:23:16.760><c> got</c><01:23:16.880><c> a</c><01:23:17.000><c> collection</c><01:23:17.360><c> of</c><01:23:17.600><c> about</c><01:23:17.880><c> seven</c>
+
+01:23:18.149 --> 01:23:18.159 align:start position:0%
+they've got a collection of about seven
+
+
+01:23:18.159 --> 01:23:21.229 align:start position:0%
+they've got a collection of about seven
+or<01:23:18.320><c> eight</c><01:23:18.800><c> of</c><01:23:19.000><c> which</c><01:23:19.199><c> I</c><01:23:19.280><c> showed</c><01:23:19.679><c> three</c><01:23:19.920><c> or</c><01:23:20.239><c> four</c>
+
+01:23:21.229 --> 01:23:21.239 align:start position:0%
+or eight of which I showed three or four
+
+
+01:23:21.239 --> 01:23:23.750 align:start position:0%
+or eight of which I showed three or four
+uh<01:23:21.679><c> and</c><01:23:22.239><c> and</c><01:23:22.520><c> they've</c><01:23:22.719><c> got</c><01:23:23.040><c> you</c><01:23:23.120><c> know</c><01:23:23.360><c> whole</c>
+
+01:23:23.750 --> 01:23:23.760 align:start position:0%
+uh and and they've got you know whole
+
+
+01:23:23.760 --> 01:23:28.709 align:start position:0%
+uh and and they've got you know whole
+range<01:23:23.960><c> of</c><01:23:24.120><c> prices</c><01:23:24.840><c> and</c><01:23:25.040><c> so</c>
+
+01:23:28.709 --> 01:23:28.719 align:start position:0%
+
+
+
+01:23:28.719 --> 01:23:31.390 align:start position:0%
+
+on<01:23:29.719><c> oh</c><01:23:29.920><c> yeah</c><01:23:30.080><c> I</c><01:23:30.159><c> should</c><01:23:30.320><c> have</c><01:23:30.480><c> mentioned</c><01:23:31.320><c> you</c>
+
+01:23:31.390 --> 01:23:31.400 align:start position:0%
+on oh yeah I should have mentioned you
+
+
+01:23:31.400 --> 01:23:33.709 align:start position:0%
+on oh yeah I should have mentioned you
+can<01:23:31.560><c> get</c><01:23:31.679><c> a</c><01:23:31.880><c> PDF</c><01:23:32.280><c> file</c><01:23:32.639><c> and</c><01:23:32.800><c> print</c><01:23:33.000><c> it</c><01:23:33.120><c> on</c><01:23:33.360><c> card</c>
+
+01:23:33.709 --> 01:23:33.719 align:start position:0%
+can get a PDF file and print it on card
+
+
+01:23:33.719 --> 01:23:38.149 align:start position:0%
+can get a PDF file and print it on card
+stock<01:23:34.400><c> and</c><01:23:34.560><c> fold</c><01:23:34.920><c> it</c><01:23:35.199><c> into</c><01:23:36.199><c> rber</c>
+
+01:23:38.149 --> 01:23:38.159 align:start position:0%
+stock and fold it into rber
+
+
+01:23:38.159 --> 01:23:40.629 align:start position:0%
+stock and fold it into rber
+pip<01:23:39.159><c> the</c><01:23:39.280><c> other</c><01:23:39.520><c> thing</c><01:23:39.760><c> that's</c><01:23:40.040><c> nice</c><01:23:40.239><c> to</c><01:23:40.400><c> know</c>
+
+01:23:40.629 --> 01:23:40.639 align:start position:0%
+pip the other thing that's nice to know
+
+
+01:23:40.639 --> 01:23:42.270 align:start position:0%
+pip the other thing that's nice to know
+is<01:23:40.800><c> once</c><01:23:40.960><c> you</c><01:23:41.080><c> get</c><01:23:41.199><c> your</c><01:23:41.400><c> raspberry</c><01:23:41.920><c> pie</c><01:23:42.120><c> it</c>
+
+01:23:42.270 --> 01:23:42.280 align:start position:0%
+is once you get your raspberry pie it
+
+
+01:23:42.280 --> 01:23:44.189 align:start position:0%
+is once you get your raspberry pie it
+comes<01:23:42.520><c> with</c><01:23:42.760><c> horrific</c><01:23:43.280><c> case</c><01:23:43.600><c> that's</c><01:23:43.800><c> one</c><01:23:44.000><c> I</c>
+
+01:23:44.189 --> 01:23:44.199 align:start position:0%
+comes with horrific case that's one I
+
+
+01:23:44.199 --> 01:23:46.669 align:start position:0%
+comes with horrific case that's one I
+use<01:23:44.520><c> it's</c><01:23:44.760><c> the</c><01:23:44.960><c> cardboard</c><01:23:45.480><c> box</c><01:23:45.760><c> that</c><01:23:45.840><c> it</c><01:23:46.000><c> comes</c>
+
+01:23:46.669 --> 01:23:46.679 align:start position:0%
+use it's the cardboard box that it comes
+
+
+01:23:46.679 --> 01:23:47.709 align:start position:0%
+use it's the cardboard box that it comes
+oh
+
+01:23:47.709 --> 01:23:47.719 align:start position:0%
+oh
+
+
+01:23:47.719 --> 01:23:50.830 align:start position:0%
+oh
+yeah<01:23:48.719><c> about</c><01:23:49.040><c> that</c><01:23:50.040><c> you</c><01:23:50.199><c> just</c><01:23:50.360><c> need</c><01:23:50.600><c> use</c>
+
+01:23:50.830 --> 01:23:50.840 align:start position:0%
+yeah about that you just need use
+
+
+01:23:50.840 --> 01:23:55.669 align:start position:0%
+yeah about that you just need use
+scissors<01:23:51.280><c> to</c><01:23:51.440><c> get</c><01:23:51.520><c> to</c><01:23:51.639><c> the</c><01:23:51.760><c> gpio</c><01:23:52.360><c> and</c>
+
+01:23:55.669 --> 01:23:55.679 align:start position:0%
+
+
+
+01:23:55.679 --> 01:23:58.629 align:start position:0%
+
+um<01:23:56.159><c> I've</c><01:23:56.360><c> recently</c><01:23:57.120><c> uh</c><01:23:57.679><c> sparked</c><01:23:58.120><c> an</c><01:23:58.280><c> interest</c>
+
+01:23:58.629 --> 01:23:58.639 align:start position:0%
+um I've recently uh sparked an interest
+
+
+01:23:58.639 --> 01:24:02.189 align:start position:0%
+um I've recently uh sparked an interest
+in<01:23:59.000><c> um</c><01:23:59.199><c> High</c><01:23:59.760><c> availability</c><01:24:00.760><c> um</c><01:24:01.600><c> in</c><01:24:01.760><c> terms</c><01:24:02.040><c> of</c>
+
+01:24:02.189 --> 01:24:02.199 align:start position:0%
+in um High availability um in terms of
+
+
+01:24:02.199 --> 01:24:04.990 align:start position:0%
+in um High availability um in terms of
+that<01:24:02.719><c> uh</c><01:24:03.480><c> I</c><01:24:03.600><c> never</c><01:24:04.040><c> afford</c><01:24:04.440><c> like</c><01:24:04.639><c> giant</c>
+
+01:24:04.990 --> 01:24:05.000 align:start position:0%
+that uh I never afford like giant
+
+
+01:24:05.000 --> 01:24:07.709 align:start position:0%
+that uh I never afford like giant
+servers<01:24:05.639><c> so</c><01:24:06.040><c> um</c><01:24:06.600><c> would</c><01:24:06.760><c> it</c><01:24:06.880><c> be</c><01:24:07.080><c> efficient</c><01:24:07.480><c> if</c><01:24:07.600><c> I</c>
+
+01:24:07.709 --> 01:24:07.719 align:start position:0%
+servers so um would it be efficient if I
+
+
+01:24:07.719 --> 01:24:09.910 align:start position:0%
+servers so um would it be efficient if I
+bought<01:24:08.199><c> like</c><01:24:08.679><c> you</c><01:24:08.800><c> know</c><01:24:09.320><c> three</c><01:24:09.520><c> or</c><01:24:09.679><c> four</c>
+
+01:24:09.910 --> 01:24:09.920 align:start position:0%
+bought like you know three or four
+
+
+01:24:09.920 --> 01:24:12.550 align:start position:0%
+bought like you know three or four
+Raspberry<01:24:10.520><c> Pi</c><01:24:10.960><c> put</c><01:24:11.159><c> a</c><01:24:11.320><c> web</c><01:24:11.560><c> server</c><01:24:12.120><c> on</c><01:24:12.320><c> all</c><01:24:12.440><c> of</c>
+
+01:24:12.550 --> 01:24:12.560 align:start position:0%
+Raspberry Pi put a web server on all of
+
+
+01:24:12.560 --> 01:24:15.270 align:start position:0%
+Raspberry Pi put a web server on all of
+them<01:24:12.960><c> and</c><01:24:13.199><c> maybe</c><01:24:13.639><c> had</c><01:24:13.840><c> something</c><01:24:14.280><c> like</c><01:24:14.679><c> um</c>
+
+01:24:15.270 --> 01:24:15.280 align:start position:0%
+them and maybe had something like um
+
+
+01:24:15.280 --> 01:24:19.790 align:start position:0%
+them and maybe had something like um
+Pacemaker<01:24:16.239><c> and</c><01:24:16.679><c> drvd</c><01:24:17.360><c> on</c><01:24:17.560><c> there</c>
+
+01:24:19.790 --> 01:24:19.800 align:start position:0%
+Pacemaker and drvd on there
+
+
+01:24:19.800 --> 01:24:21.709 align:start position:0%
+Pacemaker and drvd on there
+possible
+
+01:24:21.709 --> 01:24:21.719 align:start position:0%
+possible
+
+
+01:24:21.719 --> 01:24:25.030 align:start position:0%
+possible
+I<01:24:22.719><c> a</c><01:24:22.880><c> raspberry</c><01:24:23.360><c> pie</c><01:24:23.679><c> is</c><01:24:23.880><c> about</c><01:24:24.159><c> like</c><01:24:24.400><c> a</c><01:24:24.600><c> 300</c>
+
+01:24:25.030 --> 01:24:25.040 align:start position:0%
+I a raspberry pie is about like a 300
+
+
+01:24:25.040 --> 01:24:26.830 align:start position:0%
+I a raspberry pie is about like a 300
+MHz<01:24:25.600><c> pin</c>
+
+01:24:26.830 --> 01:24:26.840 align:start position:0%
+MHz pin
+
+
+01:24:26.840 --> 01:24:30.110 align:start position:0%
+MHz pin
+2<01:24:27.840><c> that's</c><01:24:28.199><c> the</c><01:24:28.639><c> magnitude</c><01:24:29.080><c> of</c>
+
+01:24:30.110 --> 01:24:30.120 align:start position:0%
+2 that's the magnitude of
+
+
+01:24:30.120 --> 01:24:32.470 align:start position:0%
+2 that's the magnitude of
+performance<01:24:31.120><c> and</c><01:24:31.440><c> but</c><01:24:31.639><c> I</c><01:24:31.760><c> don't</c><01:24:31.960><c> really</c><01:24:32.159><c> know</c>
+
+01:24:32.470 --> 01:24:32.480 align:start position:0%
+performance and but I don't really know
+
+
+01:24:32.480 --> 01:24:33.709 align:start position:0%
+performance and but I don't really know
+how<01:24:32.560><c> to</c><01:24:32.719><c> answer</c><01:24:33.000><c> your</c><01:24:33.199><c> question</c><01:24:33.480><c> I</c><01:24:33.560><c> think</c><01:24:33.639><c> it</c>
+
+01:24:33.709 --> 01:24:33.719 align:start position:0%
+how to answer your question I think it
+
+
+01:24:33.719 --> 01:24:35.790 align:start position:0%
+how to answer your question I think it
+would<01:24:33.880><c> easily</c><01:24:34.199><c> run</c><01:24:34.520><c> I</c><01:24:34.560><c> mean</c><01:24:35.320><c> I've</c><01:24:35.440><c> run</c><01:24:35.639><c> web</c>
+
+01:24:35.790 --> 01:24:35.800 align:start position:0%
+would easily run I mean I've run web
+
+
+01:24:35.800 --> 01:24:37.709 align:start position:0%
+would easily run I mean I've run web
+servers<01:24:36.080><c> on</c><01:24:36.239><c> it</c><01:24:36.440><c> easily</c><01:24:36.679><c> runs</c><01:24:36.880><c> the</c><01:24:37.000><c> web</c><01:24:37.199><c> server</c>
+
+01:24:37.709 --> 01:24:37.719 align:start position:0%
+servers on it easily runs the web server
+
+
+01:24:37.719 --> 01:24:40.830 align:start position:0%
+servers on it easily runs the web server
+and<01:24:38.199><c> the</c><01:24:38.440><c> I</c><01:24:38.520><c> mean</c><01:24:38.760><c> drbd</c><01:24:39.679><c> and</c><01:24:39.880><c> P</c><01:24:40.080><c> Pier</c><01:24:40.600><c> it's</c><01:24:40.679><c> not</c>
+
+01:24:40.830 --> 01:24:40.840 align:start position:0%
+and the I mean drbd and P Pier it's not
+
+
+01:24:40.840 --> 01:24:42.669 align:start position:0%
+and the I mean drbd and P Pier it's not
+like<01:24:40.960><c> they're</c><01:24:41.600><c> constrained</c><01:24:42.159><c> performance-</c>
+
+01:24:42.669 --> 01:24:42.679 align:start position:0%
+like they're constrained performance-
+
+
+01:24:42.679 --> 01:24:44.590 align:start position:0%
+like they're constrained performance-
+wise<01:24:43.480><c> um</c><01:24:43.600><c> so</c><01:24:43.840><c> actually</c><01:24:44.040><c> a</c><01:24:44.119><c> lot</c><01:24:44.239><c> of</c><01:24:44.320><c> people</c><01:24:44.520><c> in</c>
+
+01:24:44.590 --> 01:24:44.600 align:start position:0%
+wise um so actually a lot of people in
+
+
+01:24:44.600 --> 01:24:46.229 align:start position:0%
+wise um so actually a lot of people in
+the<01:24:44.719><c> Raspberry</c><01:24:45.159><c> Pi</c><01:24:45.320><c> Community</c><01:24:45.760><c> have</c><01:24:45.920><c> been</c>
+
+01:24:46.229 --> 01:24:46.239 align:start position:0%
+the Raspberry Pi Community have been
+
+
+01:24:46.239 --> 01:24:49.550 align:start position:0%
+the Raspberry Pi Community have been
+experimenting<01:24:47.080><c> with</c><01:24:48.080><c> I</c><01:24:48.159><c> have</c><01:24:48.320><c> a</c><01:24:48.360><c> $100</c><01:24:49.320><c> I</c><01:24:49.400><c> could</c>
+
+01:24:49.550 --> 01:24:49.560 align:start position:0%
+experimenting with I have a $100 I could
+
+
+01:24:49.560 --> 01:24:51.430 align:start position:0%
+experimenting with I have a $100 I could
+get<01:24:49.679><c> one</c><01:24:49.840><c> Raspberry</c><01:24:50.320><c> Pi</c><01:24:50.480><c> and</c><01:24:50.760><c> a</c><01:24:50.840><c> lot</c><01:24:50.960><c> of</c><01:24:51.080><c> pizza</c>
+
+01:24:51.430 --> 01:24:51.440 align:start position:0%
+get one Raspberry Pi and a lot of pizza
+
+
+01:24:51.440 --> 01:24:54.950 align:start position:0%
+get one Raspberry Pi and a lot of pizza
+or<01:24:51.560><c> I</c><01:24:51.639><c> could</c><01:24:51.800><c> get</c><01:24:51.960><c> four</c><01:24:52.199><c> raspberry</c><01:24:52.760><c> pies</c><01:24:53.760><c> so</c>
+
+01:24:54.950 --> 01:24:54.960 align:start position:0%
+or I could get four raspberry pies so
+
+
+01:24:54.960 --> 01:24:56.629 align:start position:0%
+or I could get four raspberry pies so
+um<01:24:55.360><c> I</c><01:24:55.440><c> think</c><01:24:55.560><c> you'll</c><01:24:55.760><c> find</c><01:24:56.000><c> if</c><01:24:56.119><c> you</c><01:24:56.280><c> if</c><01:24:56.360><c> you</c><01:24:56.480><c> dig</c>
+
+01:24:56.629 --> 01:24:56.639 align:start position:0%
+um I think you'll find if you if you dig
+
+
+01:24:56.639 --> 01:24:58.109 align:start position:0%
+um I think you'll find if you if you dig
+around<01:24:56.880><c> the</c><01:24:56.960><c> community</c><01:24:57.320><c> looking</c><01:24:57.520><c> for</c><01:24:57.920><c> people</c>
+
+01:24:58.109 --> 01:24:58.119 align:start position:0%
+around the community looking for people
+
+
+01:24:58.119 --> 01:25:00.550 align:start position:0%
+around the community looking for people
+doing<01:24:58.360><c> stuff</c><01:24:58.560><c> with</c><01:24:58.679><c> clustering</c><01:24:59.360><c> and</c><01:25:00.080><c> uh</c><01:25:00.400><c> with</c>
+
+01:25:00.550 --> 01:25:00.560 align:start position:0%
+doing stuff with clustering and uh with
+
+
+01:25:00.560 --> 01:25:01.629 align:start position:0%
+doing stuff with clustering and uh with
+the<01:25:00.679><c> pie</c><01:25:00.920><c> you'll</c><01:25:01.040><c> find</c><01:25:01.199><c> there's</c><01:25:01.320><c> a</c><01:25:01.400><c> lot</c><01:25:01.480><c> of</c>
+
+01:25:01.629 --> 01:25:01.639 align:start position:0%
+the pie you'll find there's a lot of
+
+
+01:25:01.639 --> 01:25:02.910 align:start position:0%
+the pie you'll find there's a lot of
+stuff<01:25:01.840><c> there</c><01:25:02.040><c> people</c><01:25:02.280><c> have</c><01:25:02.480><c> done</c><01:25:02.679><c> you</c><01:25:02.760><c> know</c>
+
+01:25:02.910 --> 01:25:02.920 align:start position:0%
+stuff there people have done you know
+
+
+01:25:02.920 --> 01:25:05.709 align:start position:0%
+stuff there people have done you know
+MPI<01:25:03.480><c> bolf</c><01:25:04.000><c> cluster</c><01:25:04.440><c> type</c><01:25:04.719><c> stuff</c><01:25:05.480><c> yeah</c><01:25:05.600><c> I've</c>
+
+01:25:05.709 --> 01:25:05.719 align:start position:0%
+MPI bolf cluster type stuff yeah I've
+
+
+01:25:05.719 --> 01:25:09.229 align:start position:0%
+MPI bolf cluster type stuff yeah I've
+seen<01:25:05.880><c> a</c><01:25:06.080><c> 16</c><01:25:06.639><c> Pi</c><01:25:06.960><c> bolf</c><01:25:07.480><c> cluster</c><01:25:08.440><c> um</c><01:25:08.920><c> so</c><01:25:09.040><c> if</c><01:25:09.119><c> we</c>
+
+01:25:09.229 --> 01:25:09.239 align:start position:0%
+seen a 16 Pi bolf cluster um so if we
+
+
+01:25:09.239 --> 01:25:13.510 align:start position:0%
+seen a 16 Pi bolf cluster um so if we
+can<01:25:09.320><c> get</c><01:25:09.440><c> 16</c><01:25:09.840><c> pies</c><01:25:10.560><c> this</c><01:25:10.920><c> Saturday</c><01:25:11.920><c> oh</c><01:25:12.199><c> it's</c><01:25:12.360><c> on</c>
+
+01:25:13.510 --> 01:25:13.520 align:start position:0%
+can get 16 pies this Saturday oh it's on
+
+
+01:25:13.520 --> 01:25:15.709 align:start position:0%
+can get 16 pies this Saturday oh it's on
+yeah<01:25:14.520><c> I</c><01:25:14.600><c> think</c><01:25:14.719><c> it's</c><01:25:14.840><c> a</c><01:25:15.000><c> really</c><01:25:15.159><c> good</c><01:25:15.320><c> platform</c>
+
+01:25:15.709 --> 01:25:15.719 align:start position:0%
+yeah I think it's a really good platform
+
+
+01:25:15.719 --> 01:25:17.990 align:start position:0%
+yeah I think it's a really good platform
+for<01:25:15.920><c> playing</c><01:25:16.440><c> with</c><01:25:17.000><c> um</c><01:25:17.400><c> stuff</c><01:25:17.639><c> that</c><01:25:17.719><c> would</c><01:25:17.840><c> be</c>
+
+01:25:17.990 --> 01:25:18.000 align:start position:0%
+for playing with um stuff that would be
+
+
+01:25:18.000 --> 01:25:19.709 align:start position:0%
+for playing with um stuff that would be
+very<01:25:18.239><c> expensive</c><01:25:18.719><c> normally</c><01:25:19.080><c> for</c><01:25:19.199><c> you</c><01:25:19.320><c> to</c><01:25:19.440><c> do</c>
+
+01:25:19.709 --> 01:25:19.719 align:start position:0%
+very expensive normally for you to do
+
+
+01:25:19.719 --> 01:25:21.510 align:start position:0%
+very expensive normally for you to do
+you<01:25:19.800><c> know</c><01:25:20.040><c> let's</c><01:25:20.239><c> bring</c><01:25:20.480><c> up</c><01:25:20.760><c> 10</c><01:25:21.040><c> servers</c><01:25:21.360><c> and</c>
+
+01:25:21.510 --> 01:25:21.520 align:start position:0%
+you know let's bring up 10 servers and
+
+
+01:25:21.520 --> 01:25:23.270 align:start position:0%
+you know let's bring up 10 servers and
+try<01:25:21.840><c> out</c><01:25:22.199><c> you</c><01:25:22.280><c> know</c><01:25:22.400><c> making</c><01:25:22.600><c> a</c><01:25:22.719><c> cluster</c><01:25:23.040><c> out</c><01:25:23.119><c> of</c>
+
+01:25:23.270 --> 01:25:23.280 align:start position:0%
+try out you know making a cluster out of
+
+
+01:25:23.280 --> 01:25:25.149 align:start position:0%
+try out you know making a cluster out of
+it<01:25:23.920><c> you</c><01:25:24.000><c> can</c><01:25:24.159><c> get</c><01:25:24.360><c> 10</c><01:25:24.520><c> raspberry</c><01:25:24.840><c> pies</c>
+
+01:25:25.149 --> 01:25:25.159 align:start position:0%
+it you can get 10 raspberry pies
+
+
+01:25:25.159 --> 01:25:26.310 align:start position:0%
+it you can get 10 raspberry pies
+together<01:25:25.360><c> between</c><01:25:25.560><c> you</c><01:25:25.639><c> and</c><01:25:25.719><c> your</c><01:25:25.840><c> friends</c>
+
+01:25:26.310 --> 01:25:26.320 align:start position:0%
+together between you and your friends
+
+
+01:25:26.320 --> 01:25:28.189 align:start position:0%
+together between you and your friends
+pretty<01:25:26.520><c> easily</c><01:25:27.400><c> whenever</c><01:25:27.719><c> I</c><01:25:27.840><c> think</c><01:25:27.960><c> it</c><01:25:28.080><c> might</c>
+
+01:25:28.189 --> 01:25:28.199 align:start position:0%
+pretty easily whenever I think it might
+
+
+01:25:28.199 --> 01:25:30.350 align:start position:0%
+pretty easily whenever I think it might
+be<01:25:28.360><c> overfill</c><01:25:29.199><c> use</c><01:25:29.360><c> a</c><01:25:29.520><c> Raspberry</c><01:25:29.960><c> Pi</c><01:25:30.159><c> where</c><01:25:30.280><c> I</c>
+
+01:25:30.350 --> 01:25:30.360 align:start position:0%
+be overfill use a Raspberry Pi where I
+
+
+01:25:30.360 --> 01:25:32.550 align:start position:0%
+be overfill use a Raspberry Pi where I
+could<01:25:30.480><c> use</c><01:25:30.600><c> a</c><01:25:30.840><c> microcontroller</c><01:25:31.840><c> I</c><01:25:32.000><c> just</c><01:25:32.280><c> I</c><01:25:32.400><c> run</c>
+
+01:25:32.550 --> 01:25:32.560 align:start position:0%
+could use a microcontroller I just I run
+
+
+01:25:32.560 --> 01:25:34.550 align:start position:0%
+could use a microcontroller I just I run
+a<01:25:32.679><c> web</c><01:25:32.880><c> server</c><01:25:33.199><c> on</c><01:25:33.360><c> the</c><01:25:33.520><c> P</c><01:25:33.840><c> also</c><01:25:34.199><c> and</c><01:25:34.280><c> then</c><01:25:34.440><c> I've</c>
+
+01:25:34.550 --> 01:25:34.560 align:start position:0%
+a web server on the P also and then I've
+
+
+01:25:34.560 --> 01:25:35.629 align:start position:0%
+a web server on the P also and then I've
+got<01:25:34.639><c> a</c><01:25:34.760><c> web</c><01:25:34.960><c> interface</c><01:25:35.360><c> to</c><01:25:35.480><c> my</c>
+
+01:25:35.629 --> 01:25:35.639 align:start position:0%
+got a web interface to my
+
+
+01:25:35.639 --> 01:25:37.470 align:start position:0%
+got a web interface to my
+microcontroller<01:25:36.320><c> so</c><01:25:36.480><c> from</c><01:25:36.719><c> anywhere</c>
+
+01:25:37.470 --> 01:25:37.480 align:start position:0%
+microcontroller so from anywhere
+
+
+01:25:37.480 --> 01:25:38.990 align:start position:0%
+microcontroller so from anywhere
+anywhere<01:25:37.760><c> in</c><01:25:37.880><c> the</c><01:25:38.000><c> building</c><01:25:38.400><c> or</c><01:25:38.600><c> or</c><01:25:38.719><c> anywhere</c>
+
+01:25:38.990 --> 01:25:39.000 align:start position:0%
+anywhere in the building or or anywhere
+
+
+01:25:39.000 --> 01:25:40.790 align:start position:0%
+anywhere in the building or or anywhere
+out<01:25:39.239><c> I</c><01:25:39.320><c> can</c><01:25:39.480><c> actually</c><01:25:39.920><c> go</c><01:25:40.119><c> to</c><01:25:40.320><c> look</c><01:25:40.440><c> at</c><01:25:40.600><c> that</c>
+
+01:25:40.790 --> 01:25:40.800 align:start position:0%
+out I can actually go to look at that
+
+
+01:25:40.800 --> 01:25:42.709 align:start position:0%
+out I can actually go to look at that
+device<01:25:41.440><c> see</c><01:25:41.679><c> how</c><01:25:41.800><c> it's</c><01:25:42.000><c> doing</c><01:25:42.320><c> and</c><01:25:42.480><c> maybe</c>
+
+01:25:42.709 --> 01:25:42.719 align:start position:0%
+device see how it's doing and maybe
+
+
+01:25:42.719 --> 01:25:44.229 align:start position:0%
+device see how it's doing and maybe
+change<01:25:42.960><c> a</c><01:25:43.119><c> parameter</c><01:25:43.600><c> something</c><01:25:43.800><c> like</c><01:25:43.960><c> that</c>
+
+01:25:44.229 --> 01:25:44.239 align:start position:0%
+change a parameter something like that
+
+
+01:25:44.239 --> 01:25:46.669 align:start position:0%
+change a parameter something like that
+so<01:25:44.440><c> running</c><01:25:44.760><c> running</c><01:25:44.960><c> a</c><01:25:45.080><c> web</c><01:25:45.239><c> server</c><01:25:45.679><c> again</c>
+
+01:25:46.669 --> 01:25:46.679 align:start position:0%
+so running running a web server again
+
+
+01:25:46.679 --> 01:25:49.550 align:start position:0%
+so running running a web server again
+fairly<01:25:46.960><c> low</c><01:25:47.239><c> per</c><01:25:47.679><c> performance</c><01:25:48.360><c> Ser</c><01:25:48.960><c> gives</c><01:25:49.159><c> you</c>
+
+01:25:49.550 --> 01:25:49.560 align:start position:0%
+fairly low per performance Ser gives you
+
+
+01:25:49.560 --> 01:25:51.350 align:start position:0%
+fairly low per performance Ser gives you
+gives<01:25:49.679><c> you</c><01:25:49.880><c> this</c><01:25:50.400><c> remote</c><01:25:50.719><c> access</c><01:25:50.960><c> although</c><01:25:51.239><c> B</c>
+
+01:25:51.350 --> 01:25:51.360 align:start position:0%
+gives you this remote access although B
+
+
+01:25:51.360 --> 01:26:03.189 align:start position:0%
+gives you this remote access although B
+andc<01:25:51.800><c> also</c>
+
+01:26:03.189 --> 01:26:03.199 align:start position:0%
+
+
+
+01:26:03.199 --> 01:26:04.750 align:start position:0%
+
+couple<01:26:03.400><c> of</c><01:26:03.560><c> questions</c><01:26:03.920><c> from</c><01:26:04.040><c> a</c><01:26:04.199><c> media</c><01:26:04.480><c> center</c>
+
+01:26:04.750 --> 01:26:04.760 align:start position:0%
+couple of questions from a media center
+
+
+01:26:04.760 --> 01:26:08.310 align:start position:0%
+couple of questions from a media center
+point<01:26:04.960><c> of</c><01:26:05.080><c> view</c><01:26:05.719><c> um</c><01:26:05.920><c> does</c><01:26:06.119><c> HDMI</c><01:26:06.960><c> do</c><01:26:07.239><c> audio</c><01:26:08.080><c> over</c>
+
+01:26:08.310 --> 01:26:08.320 align:start position:0%
+point of view um does HDMI do audio over
+
+
+01:26:08.320 --> 01:26:10.709 align:start position:0%
+point of view um does HDMI do audio over
+the<01:26:08.440><c> HDMI</c><01:26:08.960><c> cable</c><01:26:09.719><c> yes</c><01:26:09.840><c> it</c><01:26:10.000><c> does</c><01:26:10.239><c> and</c><01:26:10.480><c> does</c><01:26:10.600><c> it</c>
+
+01:26:10.709 --> 01:26:10.719 align:start position:0%
+the HDMI cable yes it does and does it
+
+
+01:26:10.719 --> 01:26:14.870 align:start position:0%
+the HDMI cable yes it does and does it
+also<01:26:10.960><c> do</c><01:26:11.280><c> the</c><01:26:11.639><c> c</c><01:26:12.239><c> c</c><01:26:12.880><c> so</c><01:26:13.040><c> you</c><01:26:13.159><c> can</c><01:26:13.440><c> control</c><01:26:14.440><c> from</c>
+
+01:26:14.870 --> 01:26:14.880 align:start position:0%
+also do the c c so you can control from
+
+
+01:26:14.880 --> 01:26:20.709 align:start position:0%
+also do the c c so you can control from
+R<01:26:15.880><c> don't</c>
+
+01:26:20.709 --> 01:26:20.719 align:start position:0%
+
+
+
+01:26:20.719 --> 01:26:37.229 align:start position:0%
+
+it<01:26:21.719><c> does</c><01:26:21.840><c> it</c><01:26:22.000><c> have</c><01:26:22.159><c> INF</c><01:26:22.920><c> receiver</c>
+
+01:26:37.229 --> 01:26:37.239 align:start position:0%
+
+
+
+01:26:37.239 --> 01:26:39.590 align:start position:0%
+
+the<01:26:37.360><c> way</c><01:26:37.520><c> that</c><01:26:37.719><c> CC</c><01:26:38.400><c> works</c><01:26:38.800><c> is</c><01:26:38.960><c> on</c><01:26:39.159><c> the</c><01:26:39.280><c> user</c>
+
+01:26:39.590 --> 01:26:39.600 align:start position:0%
+the way that CC works is on the user
+
+
+01:26:39.600 --> 01:26:43.030 align:start position:0%
+the way that CC works is on the user
+remote<01:26:39.920><c> control</c><01:26:40.199><c> for</c><01:26:40.360><c> your</c><01:26:40.520><c> TV</c><01:26:41.520><c> so</c><01:26:41.639><c> you</c><01:26:42.520><c> TV</c>
+
+01:26:43.030 --> 01:26:43.040 align:start position:0%
+remote control for your TV so you TV
+
+
+01:26:43.040 --> 01:26:47.709 align:start position:0%
+remote control for your TV so you TV
+your<01:26:43.960><c> on</c><01:26:44.080><c> your</c><01:26:44.560><c> hand</c><01:26:45.560><c> the</c><01:26:45.719><c> TV</c><01:26:46.320><c> receives</c><01:26:46.719><c> the</c><01:26:46.880><c> UR</c>
+
+01:26:47.709 --> 01:26:47.719 align:start position:0%
+your on your hand the TV receives the UR
+
+
+01:26:47.719 --> 01:26:51.910 align:start position:0%
+your on your hand the TV receives the UR
+IR<01:26:48.000><c> commands</c><01:26:48.840><c> s</c><01:26:49.159><c> over</c><01:26:49.360><c> HDMI</c><01:26:50.119><c> back</c><01:26:50.679><c> to</c><01:26:51.679><c> uh</c><01:26:51.800><c> the</c>
+
+01:26:51.910 --> 01:26:51.920 align:start position:0%
+IR commands s over HDMI back to uh the
+
+
+01:26:51.920 --> 01:26:54.350 align:start position:0%
+IR commands s over HDMI back to uh the
+Raspberry<01:26:52.560><c> Pi</c><01:26:53.560><c> and</c><01:26:53.679><c> so</c><01:26:53.800><c> you</c><01:26:53.880><c> don't</c><01:26:54.040><c> need</c>
+
+01:26:54.350 --> 01:26:54.360 align:start position:0%
+Raspberry Pi and so you don't need
+
+
+01:26:54.360 --> 01:26:56.910 align:start position:0%
+Raspberry Pi and so you don't need
+special<01:26:55.119><c> Hardware</c><01:26:55.760><c> on</c><01:26:55.880><c> the</c>
+
+01:26:56.910 --> 01:26:56.920 align:start position:0%
+special Hardware on the
+
+
+01:26:56.920 --> 01:26:59.590 align:start position:0%
+special Hardware on the
+pie<01:26:57.920><c> it's</c><01:26:58.080><c> already</c><01:26:58.320><c> in</c><01:26:58.480><c> there</c><01:26:58.600><c> you</c>
+
+01:26:59.590 --> 01:26:59.600 align:start position:0%
+pie it's already in there you
+
+
+01:26:59.600 --> 01:27:06.790 align:start position:0%
+pie it's already in there you
+know<01:27:00.600><c> so</c><01:27:00.760><c> there's</c><01:27:01.000><c> no</c><01:27:01.199><c> problem</c><01:27:01.480><c> with</c>
+
+01:27:06.790 --> 01:27:06.800 align:start position:0%
+
+
+
+01:27:06.800 --> 01:27:18.870 align:start position:0%
+
+it<01:27:07.800><c> someone</c><01:27:08.040><c> else</c><01:27:08.320><c> down</c>
+
+01:27:18.870 --> 01:27:18.880 align:start position:0%
+
+
+
+01:27:18.880 --> 01:27:21.550 align:start position:0%
+
+there<01:27:19.880><c> oh</c><01:27:20.199><c> yeah</c>
+
+01:27:21.550 --> 01:27:21.560 align:start position:0%
+there oh yeah
+
+
+01:27:21.560 --> 01:27:25.669 align:start position:0%
+there oh yeah
+so<01:27:22.600><c> so</c><01:27:23.600><c> how</c><01:27:23.719><c> many</c><01:27:23.880><c> people</c><01:27:24.360><c> don't</c>
+
+01:27:25.669 --> 01:27:25.679 align:start position:0%
+so so how many people don't
+
+
+01:27:25.679 --> 01:27:30.229 align:start position:0%
+so so how many people don't
+like<01:27:26.679><c> the</c><01:27:27.000><c> universal</c><01:27:27.600><c> constant</c><01:27:28.560><c> Pi</c><01:27:29.560><c> here</c>
+
+01:27:30.229 --> 01:27:30.239 align:start position:0%
+like the universal constant Pi here
+
+
+01:27:30.239 --> 01:27:33.750 align:start position:0%
+like the universal constant Pi here
+anybody<01:27:31.159><c> anybody</c><01:27:31.520><c> prefer</c>
+
+01:27:33.750 --> 01:27:33.760 align:start position:0%
+anybody anybody prefer
+
+
+01:27:33.760 --> 01:27:37.629 align:start position:0%
+anybody anybody prefer
+to<01:27:34.760><c> to</c><01:27:35.199><c> to</c><01:27:35.440><c> rules</c><01:27:36.040><c> so</c><01:27:36.239><c> you</c><01:27:36.360><c> keep</c><01:27:36.520><c> seeing</c><01:27:36.800><c> two</c><01:27:37.119><c> Pi</c>
+
+01:27:37.629 --> 01:27:37.639 align:start position:0%
+to to to rules so you keep seeing two Pi
+
+
+01:27:37.639 --> 01:27:39.990 align:start position:0%
+to to to rules so you keep seeing two Pi
+everywhere<01:27:38.560><c> well</c><01:27:38.960><c> it</c><01:27:39.080><c> turns</c><01:27:39.320><c> out</c><01:27:39.560><c> we</c><01:27:39.719><c> we</c><01:27:39.840><c> got</c>
+
+01:27:39.990 --> 01:27:40.000 align:start position:0%
+everywhere well it turns out we we got
+
+
+01:27:40.000 --> 01:27:42.910 align:start position:0%
+everywhere well it turns out we we got
+it<01:27:40.159><c> wrong</c><01:27:40.400><c> to</c><01:27:40.600><c> begin</c><01:27:40.880><c> with</c><01:27:41.520><c> that</c><01:27:41.760><c> the</c><01:27:41.960><c> constant</c>
+
+01:27:42.910 --> 01:27:42.920 align:start position:0%
+it wrong to begin with that the constant
+
+
+01:27:42.920 --> 01:27:45.430 align:start position:0%
+it wrong to begin with that the constant
+is<01:27:43.199><c> two</c><01:27:43.560><c> times</c>
+
+01:27:45.430 --> 01:27:45.440 align:start position:0%
+is two times
+
+
+01:27:45.440 --> 01:27:49.590 align:start position:0%
+is two times
+3.1415926<01:27:46.440><c> Etc</c><01:27:47.400><c> it's</c><01:27:47.840><c> to</c><01:27:48.760><c> so</c><01:27:49.040><c> the</c><01:27:49.199><c> constant</c>
+
+01:27:49.590 --> 01:27:49.600 align:start position:0%
+3.1415926 Etc it's to so the constant
+
+
+01:27:49.600 --> 01:27:51.390 align:start position:0%
+3.1415926 Etc it's to so the constant
+tow<01:27:50.040><c> is</c><01:27:50.159><c> really</c><01:27:50.360><c> what</c><01:27:50.480><c> we</c><01:27:50.560><c> should</c><01:27:50.679><c> be</c><01:27:50.719><c> using</c><01:27:51.239><c> so</c>
+
+01:27:51.390 --> 01:27:51.400 align:start position:0%
+tow is really what we should be using so
+
+
+01:27:51.400 --> 01:27:52.990 align:start position:0%
+tow is really what we should be using so
+when<01:27:51.480><c> I</c><01:27:51.600><c> was</c><01:27:51.719><c> using</c><01:27:52.000><c> two</c><01:27:52.239><c> raspberry</c><01:27:52.639><c> pies</c><01:27:52.920><c> I</c>
+
+01:27:52.990 --> 01:27:53.000 align:start position:0%
+when I was using two raspberry pies I
+
+
+01:27:53.000 --> 01:27:57.149 align:start position:0%
+when I was using two raspberry pies I
+said<01:27:53.280><c> great</c><01:27:53.520><c> it's</c><01:27:53.639><c> a</c><01:27:53.800><c> raspberry</c>
+
+01:27:57.149 --> 01:27:57.159 align:start position:0%
+
+
+
+01:27:57.159 --> 01:28:00.790 align:start position:0%
+
+tow
+
+01:28:00.790 --> 01:28:00.800 align:start position:0%
+
+
+
+01:28:00.800 --> 01:28:04.270 align:start position:0%
+
+can't<01:28:01.800><c> okay</c><01:28:02.000><c> and</c><01:28:02.320><c> so</c><01:28:02.600><c> my</c><01:28:02.960><c> real</c><01:28:03.320><c> question</c><01:28:04.040><c> is</c>
+
+01:28:04.270 --> 01:28:04.280 align:start position:0%
+can't okay and so my real question is
+
+
+01:28:04.280 --> 01:28:15.390 align:start position:0%
+can't okay and so my real question is
+does<01:28:04.520><c> anyone</c><01:28:05.119><c> know</c><01:28:05.639><c> if</c><01:28:05.840><c> the</c><01:28:06.040><c> raspberry</c><01:28:06.600><c> piie</c>
+
+01:28:15.390 --> 01:28:15.400 align:start position:0%
+
+
+
+01:28:15.400 --> 01:28:18.189 align:start position:0%
+
+supp<01:28:16.400><c> I</c><01:28:16.480><c> never</c><01:28:16.639><c> pronounced</c>
+
+01:28:18.189 --> 01:28:18.199 align:start position:0%
+supp I never pronounced
+
+
+01:28:18.199 --> 01:28:24.510 align:start position:0%
+supp I never pronounced
+it<01:28:19.199><c> Bo</c><01:28:20.119><c> um</c><01:28:20.760><c> good</c><01:28:21.400><c> question</c><01:28:22.400><c> um</c>
+
+01:28:24.510 --> 01:28:24.520 align:start position:0%
+it Bo um good question um
+
+
+01:28:24.520 --> 01:28:31.109 align:start position:0%
+it Bo um good question um
+I<01:28:24.639><c> don't</c><01:28:24.840><c> know</c><01:28:25.639><c> I</c><01:28:25.800><c> doubt</c><01:28:26.040><c> it</c><01:28:26.760><c> I</c><01:28:26.920><c> think</c>
+
+01:28:31.109 --> 01:28:31.119 align:start position:0%
+
+
+
+01:28:31.119 --> 01:28:33.750 align:start position:0%
+
+is<01:28:32.119><c> there's</c><01:28:32.320><c> a</c><01:28:32.639><c> really</c><01:28:32.960><c> powerful</c><01:28:33.400><c> system</c>
+
+01:28:33.750 --> 01:28:33.760 align:start position:0%
+is there's a really powerful system
+
+
+01:28:33.760 --> 01:28:34.910 align:start position:0%
+is there's a really powerful system
+called<01:28:33.960><c> Berry</c>
+
+01:28:34.910 --> 01:28:34.920 align:start position:0%
+called Berry
+
+
+01:28:34.920 --> 01:28:38.590 align:start position:0%
+called Berry
+Boot<01:28:35.920><c> and</c><01:28:36.119><c> I</c><01:28:36.440><c> don't</c><01:28:36.679><c> know</c><01:28:36.880><c> whether</c><01:28:37.400><c> that</c><01:28:38.239><c> ties</c>
+
+01:28:38.590 --> 01:28:38.600 align:start position:0%
+Boot and I don't know whether that ties
+
+
+01:28:38.600 --> 01:28:47.709 align:start position:0%
+Boot and I don't know whether that ties
+in<01:28:39.400><c> to</c><01:28:39.560><c> a</c>
+
+01:28:47.709 --> 01:28:47.719 align:start position:0%
+
+
+
+01:28:47.719 --> 01:28:53.350 align:start position:0%
+
+px<01:28:48.719><c> run</c><01:28:48.880><c> a</c><01:28:49.000><c> simple</c><01:28:49.280><c> tfp</c><01:28:50.280><c> server</c><01:28:51.480><c> can</c><01:28:52.480><c> uh</c><01:28:52.600><c> OT</c><01:28:53.119><c> can</c>
+
+01:28:53.350 --> 01:28:53.360 align:start position:0%
+px run a simple tfp server can uh OT can
+
+
+01:28:53.360 --> 01:28:59.229 align:start position:0%
+px run a simple tfp server can uh OT can
+run<01:28:54.280><c> tftp</c><01:28:55.280><c> to</c><01:28:56.080><c> fetch</c><01:28:57.080><c> system</c><01:28:57.480><c> off</c><01:28:57.679><c> of</c><01:28:57.840><c> a</c><01:28:58.000><c> simple</c>
+
+01:28:59.229 --> 01:28:59.239 align:start position:0%
+run tftp to fetch system off of a simple
+
+
+01:28:59.239 --> 01:29:02.350 align:start position:0%
+run tftp to fetch system off of a simple
+server<01:29:00.239><c> but</c><01:29:00.880><c> that's</c><01:29:01.520><c> I</c><01:29:01.639><c> think</c><01:29:01.880><c> as</c><01:29:02.000><c> I</c>
+
+01:29:02.350 --> 01:29:02.360 align:start position:0%
+server but that's I think as I
+
+
+01:29:02.360 --> 01:29:04.830 align:start position:0%
+server but that's I think as I
+understand<01:29:02.480><c> it</c><01:29:02.840><c> different</c><01:29:03.840><c> alen</c><01:29:04.280><c> says</c><01:29:04.600><c> he</c>
+
+01:29:04.830 --> 01:29:04.840 align:start position:0%
+understand it different alen says he
+
+
+01:29:04.840 --> 01:29:08.910 align:start position:0%
+understand it different alen says he
+just<01:29:05.280><c> consulted</c><01:29:05.760><c> the</c><01:29:05.920><c> FAQ</c><01:29:06.560><c> which</c>
+
+01:29:08.910 --> 01:29:08.920 align:start position:0%
+
+
+
+01:29:08.920 --> 01:29:10.750 align:start position:0%
+
+says
+
+01:29:10.750 --> 01:29:10.760 align:start position:0%
+says
+
+
+01:29:10.760 --> 01:29:14.270 align:start position:0%
+says
+than<01:29:11.760><c> not</c><01:29:12.000><c> this</c>
+
+01:29:14.270 --> 01:29:14.280 align:start position:0%
+
+
+
+01:29:14.280 --> 01:29:31.669 align:start position:0%
+
+week<01:29:15.280><c> so</c><01:29:15.480><c> can</c><01:29:15.600><c> you</c><01:29:15.760><c> plug</c><01:29:15.960><c> in</c><01:29:16.040><c> a</c><01:29:16.119><c> Bluetooth</c>
+
+01:29:31.669 --> 01:29:31.679 align:start position:0%
+
+
+
+01:29:31.679 --> 01:29:34.510 align:start position:0%
+
+what<01:29:31.840><c> was</c><01:29:31.960><c> the</c><01:29:32.119><c> name</c><01:29:32.280><c> of</c><01:29:32.480><c> the</c><01:29:33.040><c> more</c><01:29:34.040><c> oh</c><01:29:34.400><c> yeah</c>
+
+01:29:34.510 --> 01:29:34.520 align:start position:0%
+what was the name of the more oh yeah
+
+
+01:29:34.520 --> 01:29:36.229 align:start position:0%
+what was the name of the more oh yeah
+someone<01:29:34.840><c> asked</c><01:29:35.159><c> someone</c><01:29:35.400><c> else</c><01:29:35.639><c> asked</c><01:29:35.960><c> that</c>
+
+01:29:36.229 --> 01:29:36.239 align:start position:0%
+someone asked someone else asked that
+
+
+01:29:36.239 --> 01:29:38.950 align:start position:0%
+someone asked someone else asked that
+and<01:29:36.480><c> I'm</c><01:29:36.800><c> I'm</c><01:29:37.119><c> I'm</c><01:29:37.320><c> trying</c><01:29:37.600><c> to</c>
+
+01:29:38.950 --> 01:29:38.960 align:start position:0%
+and I'm I'm I'm trying to
+
+
+01:29:38.960 --> 01:29:42.590 align:start position:0%
+and I'm I'm I'm trying to
+remember<01:29:39.960><c> yeah</c><01:29:40.400><c> olx.com</c><01:29:41.400><c> is</c><01:29:41.560><c> the</c><01:29:41.760><c> website</c><01:29:42.400><c> and</c>
+
+01:29:42.590 --> 01:29:42.600 align:start position:0%
+remember yeah olx.com is the website and
+
+
+01:29:42.600 --> 01:29:47.070 align:start position:0%
+remember yeah olx.com is the website and
+if<01:29:42.679><c> you</c><01:29:42.880><c> look</c><01:29:43.080><c> for</c><01:29:43.360><c> the</c><01:29:44.080><c> cortex</c><01:29:45.239><c> uh</c><01:29:46.239><c> arm</c><01:29:46.560><c> cortex</c>
+
+01:29:47.070 --> 01:29:47.080 align:start position:0%
+if you look for the cortex uh arm cortex
+
+
+01:29:47.080 --> 01:29:49.750 align:start position:0%
+if you look for the cortex uh arm cortex
+based<01:29:48.080><c> board</c><01:29:48.360><c> it's</c>
+
+01:29:49.750 --> 01:29:49.760 align:start position:0%
+based board it's
+
+
+01:29:49.760 --> 01:29:51.550 align:start position:0%
+based board it's
+$57<01:29:50.760><c> and</c>
+
+01:29:51.550 --> 01:29:51.560 align:start position:0%
+$57 and
+
+
+01:29:51.560 --> 01:29:54.830 align:start position:0%
+$57 and
+is<01:29:52.560><c> very</c><01:29:52.880><c> much</c><01:29:53.080><c> more</c><01:29:53.400><c> powerful</c><01:29:54.040><c> can</c><01:29:54.080><c> you</c><01:29:54.239><c> spell</c>
+
+01:29:54.830 --> 01:29:54.840 align:start position:0%
+is very much more powerful can you spell
+
+
+01:29:54.840 --> 01:30:01.109 align:start position:0%
+is very much more powerful can you spell
+that<01:29:55.880><c> uh</c><01:29:56.880><c> o</c><01:29:57.119><c> l</c><01:29:58.040><c> m</c>
+
+01:30:01.109 --> 01:30:01.119 align:start position:0%
+
+
+
+01:30:01.119 --> 01:30:06.430 align:start position:0%
+
+x<01:30:02.119><c> one</c><01:30:02.400><c> for</c><01:30:03.239><c> 70</c><01:30:03.880><c> just</c><01:30:04.080><c> over</c><01:30:04.400><c> 70</c><01:30:04.840><c> bucks</c><01:30:05.119><c> of</c><01:30:05.520><c> the</c><01:30:06.320><c> I</c>
+
+01:30:06.430 --> 01:30:06.440 align:start position:0%
+x one for 70 just over 70 bucks of the I
+
+
+01:30:06.440 --> 01:30:08.950 align:start position:0%
+x one for 70 just over 70 bucks of the I
+can't<01:30:06.719><c> find</c><01:30:07.159><c> the</c><01:30:07.600><c> information</c><01:30:08.239><c> here</c><01:30:08.480><c> but</c>
+
+01:30:08.950 --> 01:30:08.960 align:start position:0%
+can't find the information here but
+
+
+01:30:08.960 --> 01:30:11.870 align:start position:0%
+can't find the information here but
+Wi-Fi<01:30:09.400><c> is</c><01:30:09.600><c> part</c><01:30:09.719><c> of</c>
+
+01:30:11.870 --> 01:30:11.880 align:start position:0%
+Wi-Fi is part of
+
+
+01:30:11.880 --> 01:30:18.590 align:start position:0%
+Wi-Fi is part of
+the<01:30:12.880><c> part</c><01:30:13.600><c> so</c><01:30:14.199><c> ass</c><01:30:14.800><c> they</c>
+
+01:30:18.590 --> 01:30:18.600 align:start position:0%
+
+
+
+01:30:18.600 --> 01:30:21.990 align:start position:0%
+
+wi<01:30:19.600><c> um</c><01:30:20.239><c> I'm</c><01:30:20.440><c> looking</c><01:30:20.719><c> at</c><01:30:20.800><c> it</c><01:30:21.040><c> now</c><01:30:21.320><c> trying</c><01:30:21.480><c> to</c>
+
+01:30:21.990 --> 01:30:22.000 align:start position:0%
+wi um I'm looking at it now trying to
+
+
+01:30:22.000 --> 01:30:26.590 align:start position:0%
+wi um I'm looking at it now trying to
+find<01:30:23.000><c> right</c><01:30:23.840><c> um</c>
+
+01:30:26.590 --> 01:30:26.600 align:start position:0%
+
+
+
+01:30:26.600 --> 01:30:29.350 align:start position:0%
+
+we<01:30:26.800><c> can</c><01:30:27.360><c> uh</c><01:30:28.199><c> publish</c><01:30:28.600><c> that</c><01:30:28.800><c> information</c><01:30:29.199><c> on</c>
+
+01:30:29.350 --> 01:30:29.360 align:start position:0%
+we can uh publish that information on
+
+
+01:30:29.360 --> 01:30:33.310 align:start position:0%
+we can uh publish that information on
+the<01:30:29.520><c> tri</c><01:30:30.440><c> trog</c><01:30:31.440><c> list</c><01:30:32.119><c> and</c>
+
+01:30:33.310 --> 01:30:33.320 align:start position:0%
+the tri trog list and
+
+
+01:30:33.320 --> 01:30:36.669 align:start position:0%
+the tri trog list and
+um<01:30:34.320><c> we'll</c><01:30:34.800><c> certainly</c><01:30:35.320><c> have</c><01:30:35.639><c> investigated</c><01:30:36.199><c> on</c>
+
+01:30:36.669 --> 01:30:36.679 align:start position:0%
+um we'll certainly have investigated on
+
+
+01:30:36.679 --> 01:30:40.870 align:start position:0%
+um we'll certainly have investigated on
+Saturday<01:30:37.920><c> um</c><01:30:38.920><c> I</c><01:30:39.040><c> findx</c><01:30:39.880><c> to</c><01:30:40.040><c> be</c><01:30:40.159><c> an</c><01:30:40.280><c> excellent</c>
+
+01:30:40.870 --> 01:30:40.880 align:start position:0%
+Saturday um I findx to be an excellent
+
+
+01:30:40.880 --> 01:30:43.149 align:start position:0%
+Saturday um I findx to be an excellent
+Vendor<01:30:41.320><c> by</c><01:30:41.440><c> the</c><01:30:41.560><c> way</c><01:30:42.080><c> uh</c><01:30:42.239><c> they</c><01:30:42.360><c> make</c><01:30:42.639><c> some</c>
+
+01:30:43.149 --> 01:30:43.159 align:start position:0%
+Vendor by the way uh they make some
+
+
+01:30:43.159 --> 01:30:45.229 align:start position:0%
+Vendor by the way uh they make some
+really<01:30:43.520><c> really</c><01:30:43.800><c> nice</c><01:30:44.040><c> little</c><01:30:44.320><c> prototyping</c>
+
+01:30:45.229 --> 01:30:45.239 align:start position:0%
+really really nice little prototyping
+
+
+01:30:45.239 --> 01:30:48.510 align:start position:0%
+really really nice little prototyping
+cards<01:30:45.760><c> they</c><01:30:45.880><c> make</c><01:30:46.119><c> a</c><01:30:46.360><c> variety</c><01:30:47.159><c> of</c><01:30:47.960><c> cards</c><01:30:48.360><c> that</c>
+
+01:30:48.510 --> 01:30:48.520 align:start position:0%
+cards they make a variety of cards that
+
+
+01:30:48.520 --> 01:30:50.310 align:start position:0%
+cards they make a variety of cards that
+plug<01:30:48.800><c> into</c><01:30:49.080><c> your</c><01:30:49.239><c> Raspberry</c><01:30:49.760><c> Pi</c><01:30:50.159><c> and</c>
+
+01:30:50.310 --> 01:30:50.320 align:start position:0%
+plug into your Raspberry Pi and
+
+
+01:30:50.320 --> 01:30:53.109 align:start position:0%
+plug into your Raspberry Pi and
+interface<01:30:50.840><c> with</c><01:30:51.239><c> gpio</c><01:30:52.239><c> so</c><01:30:52.440><c> that</c><01:30:52.639><c> you</c><01:30:52.800><c> don't</c>
+
+01:30:53.109 --> 01:30:53.119 align:start position:0%
+interface with gpio so that you don't
+
+
+01:30:53.119 --> 01:30:55.709 align:start position:0%
+interface with gpio so that you don't
+have<01:30:53.239><c> to</c><01:30:53.520><c> touch</c><01:30:54.080><c> that</c><01:30:54.199><c> gpio</c><01:30:55.119><c> with</c><01:30:55.320><c> something</c>
+
+01:30:55.709 --> 01:30:55.719 align:start position:0%
+have to touch that gpio with something
+
+
+01:30:55.719 --> 01:30:57.750 align:start position:0%
+have to touch that gpio with something
+that<01:30:55.840><c> would</c><01:30:56.080><c> blow</c><01:30:56.360><c> it</c><01:30:56.480><c> up</c><01:30:57.119><c> I</c><01:30:57.239><c> said</c><01:30:57.400><c> it's</c>
+
+01:30:57.750 --> 01:30:57.760 align:start position:0%
+that would blow it up I said it's
+
+
+01:30:57.760 --> 01:31:01.189 align:start position:0%
+that would blow it up I said it's
+extremely<01:30:58.360><c> sensitive</c><01:30:59.040><c> it's</c><01:30:59.400><c> it's</c><01:31:00.199><c> fragile</c>
+
+01:31:01.189 --> 01:31:01.199 align:start position:0%
+extremely sensitive it's it's fragile
+
+
+01:31:01.199 --> 01:31:03.870 align:start position:0%
+extremely sensitive it's it's fragile
+but<01:31:01.679><c> uh</c><01:31:01.760><c> you</c><01:31:01.960><c> can</c><01:31:02.080><c> use</c><01:31:02.280><c> a</c><01:31:02.440><c> variety</c><01:31:02.840><c> of</c><01:31:03.000><c> boards</c>
+
+01:31:03.870 --> 01:31:03.880 align:start position:0%
+but uh you can use a variety of boards
+
+
+01:31:03.880 --> 01:31:06.149 align:start position:0%
+but uh you can use a variety of boards
+such<01:31:04.040><c> as</c><01:31:04.159><c> from</c><01:31:04.360><c> Ox</c><01:31:05.280><c> that</c><01:31:05.400><c> will</c><01:31:05.719><c> provide</c><01:31:05.960><c> a</c>
+
+01:31:06.149 --> 01:31:06.159 align:start position:0%
+such as from Ox that will provide a
+
+
+01:31:06.159 --> 01:31:08.229 align:start position:0%
+such as from Ox that will provide a
+layer<01:31:06.440><c> of</c><01:31:06.639><c> buffering</c><01:31:07.400><c> that</c><01:31:07.600><c> Gadget</c><01:31:07.920><c> I</c><01:31:08.000><c> showed</c>
+
+01:31:08.229 --> 01:31:08.239 align:start position:0%
+layer of buffering that Gadget I showed
+
+
+01:31:08.239 --> 01:31:10.390 align:start position:0%
+layer of buffering that Gadget I showed
+you<01:31:08.360><c> a</c><01:31:08.440><c> minute</c><01:31:08.679><c> ago</c><01:31:09.159><c> that</c><01:31:09.280><c> just</c><01:31:09.440><c> plugs</c><01:31:09.760><c> into</c><01:31:10.080><c> a</c>
+
+01:31:10.390 --> 01:31:10.400 align:start position:0%
+you a minute ago that just plugs into a
+
+
+01:31:10.400 --> 01:31:12.229 align:start position:0%
+you a minute ago that just plugs into a
+protyping<01:31:10.960><c> card</c><01:31:11.320><c> that</c><01:31:11.480><c> has</c><01:31:11.600><c> no</c><01:31:11.800><c> buffering</c>
+
+01:31:12.229 --> 01:31:12.239 align:start position:0%
+protyping card that has no buffering
+
+
+01:31:12.239 --> 01:31:15.470 align:start position:0%
+protyping card that has no buffering
+that's<01:31:12.560><c> that's</c><01:31:12.840><c> just</c><01:31:13.080><c> straight</c><01:31:13.400><c> in</c><01:31:14.000><c> so</c><01:31:14.600><c> it's</c>
+
+01:31:15.470 --> 01:31:15.480 align:start position:0%
+that's that's just straight in so it's
+
+
+01:31:15.480 --> 01:31:19.030 align:start position:0%
+that's that's just straight in so it's
+not<01:31:15.960><c> probably</c><01:31:16.360><c> not</c><01:31:17.119><c> a</c><01:31:17.239><c> beginner</c><01:31:17.760><c> type</c>
+
+01:31:19.030 --> 01:31:19.040 align:start position:0%
+not probably not a beginner type
+
+
+01:31:19.040 --> 01:31:21.430 align:start position:0%
+not probably not a beginner type
+thing<01:31:20.040><c> I</c><01:31:20.199><c> was</c><01:31:20.520><c> just</c><01:31:20.679><c> going</c><01:31:20.760><c> to</c><01:31:20.920><c> add</c><01:31:21.119><c> this</c><01:31:21.280><c> to</c>
+
+01:31:21.430 --> 01:31:21.440 align:start position:0%
+thing I was just going to add this to
+
+
+01:31:21.440 --> 01:31:24.189 align:start position:0%
+thing I was just going to add this to
+Pro<01:31:21.679><c> I'm</c><01:31:21.840><c> not</c><01:31:22.000><c> crazy</c><01:31:22.360><c> El</c><01:31:22.520><c> Linux</c><01:31:22.880><c> is</c><01:31:23.320><c> massive</c><01:31:23.639><c> WI</c>
+
+01:31:24.189 --> 01:31:24.199 align:start position:0%
+Pro I'm not crazy El Linux is massive WI
+
+
+01:31:24.199 --> 01:31:26.310 align:start position:0%
+Pro I'm not crazy El Linux is massive WI
+has<01:31:24.920><c> basic</c><01:31:25.320><c> instructions</c><01:31:25.760><c> for</c><01:31:25.920><c> setting</c><01:31:26.159><c> up</c>
+
+01:31:26.310 --> 01:31:26.320 align:start position:0%
+has basic instructions for setting up
+
+
+01:31:26.320 --> 01:31:29.510 align:start position:0%
+has basic instructions for setting up
+Pixie<01:31:26.600><c> on</c>
+
+01:31:29.510 --> 01:31:29.520 align:start position:0%
+
+
+
+01:31:29.520 --> 01:31:33.870 align:start position:0%
+
+the<01:31:30.520><c> okay</c><01:31:30.960><c> so</c><01:31:31.239><c> she</c><01:31:31.440><c> said</c><01:31:31.719><c> that</c><01:31:32.239><c> um</c><01:31:32.800><c> she</c><01:31:33.239><c> just</c><01:31:33.719><c> uh</c>
+
+01:31:33.870 --> 01:31:33.880 align:start position:0%
+the okay so she said that um she just uh
+
+
+01:31:33.880 --> 01:31:36.070 align:start position:0%
+the okay so she said that um she just uh
+got<01:31:34.159><c> curious</c><01:31:34.800><c> and</c><01:31:35.040><c> looked</c><01:31:35.320><c> up</c><01:31:35.560><c> on</c><01:31:35.719><c> the</c><01:31:35.880><c> El</c>
+
+01:31:36.070 --> 01:31:36.080 align:start position:0%
+got curious and looked up on the El
+
+
+01:31:36.080 --> 01:31:40.709 align:start position:0%
+got curious and looked up on the El
+linux.org<01:31:36.840><c> uh</c><01:31:37.560><c> Wiki</c><01:31:38.560><c> uh</c><01:31:38.920><c> subject</c><01:31:39.560><c> of</c><01:31:40.199><c> uh</c><01:31:40.360><c> using</c>
+
+01:31:40.709 --> 01:31:40.719 align:start position:0%
+linux.org uh Wiki uh subject of uh using
+
+
+01:31:40.719 --> 01:31:44.430 align:start position:0%
+linux.org uh Wiki uh subject of uh using
+pxe<01:31:41.560><c> with</c><01:31:41.800><c> res</c><01:31:42.400><c> pi</c><01:31:42.760><c> and</c><01:31:43.080><c> found</c><01:31:44.080><c> full</c>
+
+01:31:44.430 --> 01:31:44.440 align:start position:0%
+pxe with res pi and found full
+
+
+01:31:44.440 --> 01:31:47.669 align:start position:0%
+pxe with res pi and found full
+instructions<01:31:44.920><c> for</c><01:31:45.119><c> how</c><01:31:45.239><c> to</c><01:31:45.400><c> do</c>
+
+01:31:47.669 --> 01:31:47.679 align:start position:0%
+
+
+
+01:31:47.679 --> 01:31:52.390 align:start position:0%
+
+it<01:31:49.159><c> and</c><01:31:50.159><c> when</c><01:31:50.280><c> I</c><01:31:50.400><c> said</c><01:31:50.760><c> you</c><01:31:50.880><c> know</c><01:31:51.679><c> pxc</c><01:31:52.159><c> wasn't</c>
+
+01:31:52.390 --> 01:31:52.400 align:start position:0%
+it and when I said you know pxc wasn't
+
+
+01:31:52.400 --> 01:31:54.629 align:start position:0%
+it and when I said you know pxc wasn't
+supported<01:31:52.800><c> this</c><01:31:52.960><c> week</c><01:31:53.320><c> I</c><01:31:53.400><c> mean</c><01:31:53.560><c> that's</c><01:31:53.960><c> only</c>
+
+01:31:54.629 --> 01:31:54.639 align:start position:0%
+supported this week I mean that's only
+
+
+01:31:54.639 --> 01:31:57.590 align:start position:0%
+supported this week I mean that's only
+half<01:31:54.920><c> joke</c><01:31:55.560><c> because</c><01:31:56.560><c> there</c><01:31:56.760><c> is</c><01:31:57.320><c> there</c><01:31:57.440><c> are</c><01:31:57.520><c> a</c>
+
+01:31:57.590 --> 01:31:57.600 align:start position:0%
+half joke because there is there are a
+
+
+01:31:57.600 --> 01:31:59.270 align:start position:0%
+half joke because there is there are a
+million<01:31:57.880><c> of</c><01:31:58.000><c> these</c><01:31:58.159><c> things</c><01:31:58.400><c> out</c><01:31:58.639><c> there</c><01:31:59.119><c> and</c>
+
+01:31:59.270 --> 01:31:59.280 align:start position:0%
+million of these things out there and
+
+
+01:31:59.280 --> 01:32:01.109 align:start position:0%
+million of these things out there and
+there<01:31:59.440><c> are</c><01:31:59.880><c> literally</c><01:32:00.600><c> hundreds</c><01:32:00.920><c> of</c>
+
+01:32:01.109 --> 01:32:01.119 align:start position:0%
+there are literally hundreds of
+
+
+01:32:01.119 --> 01:32:04.030 align:start position:0%
+there are literally hundreds of
+thousands<01:32:01.440><c> of</c><01:32:01.679><c> people</c><01:32:02.679><c> uh</c><01:32:03.080><c> doing</c><01:32:03.560><c> things</c><01:32:03.840><c> with</c>
+
+01:32:04.030 --> 01:32:04.040 align:start position:0%
+thousands of people uh doing things with
+
+
+01:32:04.040 --> 01:32:05.990 align:start position:0%
+thousands of people uh doing things with
+them<01:32:04.320><c> and</c><01:32:04.880><c> and</c><01:32:04.960><c> a</c><01:32:05.119><c> good</c><01:32:05.280><c> fraction</c><01:32:05.639><c> of</c><01:32:05.760><c> those</c>
+
+01:32:05.990 --> 01:32:06.000 align:start position:0%
+them and and a good fraction of those
+
+
+01:32:06.000 --> 01:32:08.950 align:start position:0%
+them and and a good fraction of those
+people<01:32:06.360><c> are</c><01:32:06.920><c> highly</c><01:32:07.320><c> capable</c><01:32:08.000><c> and</c><01:32:08.520><c> they</c><01:32:08.760><c> they</c>
+
+01:32:08.950 --> 01:32:08.960 align:start position:0%
+people are highly capable and they they
+
+
+01:32:08.960 --> 01:32:18.790 align:start position:0%
+people are highly capable and they they
+know<01:32:09.199><c> how</c><01:32:09.320><c> to</c><01:32:09.480><c> make</c><01:32:09.679><c> these</c><01:32:10.239><c> things</c><01:32:11.239><c> um</c>
+
+01:32:18.790 --> 01:32:18.800 align:start position:0%
+
+
+
+01:32:18.800 --> 01:32:22.310 align:start position:0%
+
+Fly<01:32:19.800><c> ask</c><01:32:20.520><c> about</c><01:32:20.880><c> B</c><01:32:21.320><c> oh</c><01:32:21.400><c> we</c><01:32:21.520><c> had</c><01:32:21.639><c> a</c><01:32:21.960><c> question</c><01:32:22.199><c> in</c>
+
+01:32:22.310 --> 01:32:22.320 align:start position:0%
+Fly ask about B oh we had a question in
+
+
+01:32:22.320 --> 01:32:32.310 align:start position:0%
+Fly ask about B oh we had a question in
+the<01:32:22.480><c> back</c><01:32:22.639><c> as</c><01:32:22.760><c> well</c><01:32:23.600><c> sorry</c>
+
+01:32:32.310 --> 01:32:32.320 align:start position:0%
+
+
+
+01:32:32.320 --> 01:32:34.550 align:start position:0%
+
+uh<01:32:32.440><c> I</c><01:32:32.520><c> was</c><01:32:32.679><c> just</c><01:32:32.800><c> going</c><01:32:32.880><c> to</c><01:32:33.119><c> ask</c><01:32:33.400><c> about</c><01:32:33.840><c> the</c><01:32:34.159><c> uh</c>
+
+01:32:34.550 --> 01:32:34.560 align:start position:0%
+uh I was just going to ask about the uh
+
+
+01:32:34.560 --> 01:32:36.510 align:start position:0%
+uh I was just going to ask about the uh
+there's<01:32:34.800><c> still</c><01:32:35.080><c> a</c><01:32:35.280><c> waight</c><01:32:35.560><c> list</c><01:32:35.760><c> on</c><01:32:35.920><c> orders</c>
+
+01:32:36.510 --> 01:32:36.520 align:start position:0%
+there's still a waight list on orders
+
+
+01:32:36.520 --> 01:32:38.070 align:start position:0%
+there's still a waight list on orders
+and<01:32:36.840><c> how</c><01:32:36.960><c> long</c><01:32:37.119><c> it</c><01:32:37.239><c> takes</c><01:32:37.440><c> to</c><01:32:37.600><c> actually</c>
+
+01:32:38.070 --> 01:32:38.080 align:start position:0%
+and how long it takes to actually
+
+
+01:32:38.080 --> 01:32:41.830 align:start position:0%
+and how long it takes to actually
+receive<01:32:38.440><c> one</c><01:32:38.719><c> to</c><01:32:39.239><c> order</c><01:32:40.239><c> the</c><01:32:41.159><c> the</c><01:32:41.280><c> one</c><01:32:41.480><c> that</c><01:32:41.639><c> I</c>
+
+01:32:41.830 --> 01:32:41.840 align:start position:0%
+receive one to order the the one that I
+
+
+01:32:41.840 --> 01:32:44.030 align:start position:0%
+receive one to order the the one that I
+ordered<01:32:42.760><c> by</c><01:32:42.920><c> the</c>
+
+01:32:44.030 --> 01:32:44.040 align:start position:0%
+ordered by the
+
+
+01:32:44.040 --> 01:32:47.550 align:start position:0%
+ordered by the
+way<01:32:45.040><c> might</c><01:32:45.239><c> be</c><01:32:45.400><c> interested</c><01:32:45.880><c> in</c><01:32:46.600><c> this</c>
+
+01:32:47.550 --> 01:32:47.560 align:start position:0%
+way might be interested in this
+
+
+01:32:47.560 --> 01:32:50.149 align:start position:0%
+way might be interested in this
+is<01:32:48.560><c> this</c><01:32:48.760><c> just</c><01:32:48.880><c> a</c><01:32:49.000><c> sheet</c><01:32:49.199><c> of</c><01:32:49.320><c> plexiglass</c><01:32:50.000><c> with</c>
+
+01:32:50.149 --> 01:32:50.159 align:start position:0%
+is this just a sheet of plexiglass with
+
+
+01:32:50.159 --> 01:32:52.149 align:start position:0%
+is this just a sheet of plexiglass with
+four<01:32:50.320><c> holes</c><01:32:50.560><c> drilled</c><01:32:50.920><c> in</c><01:32:51.040><c> it</c><01:32:51.440><c> and</c><01:32:51.639><c> screws</c><01:32:52.080><c> you</c>
+
+01:32:52.149 --> 01:32:52.159 align:start position:0%
+four holes drilled in it and screws you
+
+
+01:32:52.159 --> 01:32:55.070 align:start position:0%
+four holes drilled in it and screws you
+can<01:32:52.280><c> get</c><01:32:52.360><c> from</c><01:32:52.520><c> Home</c><01:32:52.719><c> Depot</c>
+
+01:32:55.070 --> 01:32:55.080 align:start position:0%
+can get from Home Depot
+
+
+01:32:55.080 --> 01:32:57.229 align:start position:0%
+can get from Home Depot
+that<01:32:55.159><c> are</c><01:32:55.480><c> just</c><01:32:55.800><c> holding</c><01:32:56.320><c> the</c><01:32:56.480><c> thing</c>
+
+01:32:57.229 --> 01:32:57.239 align:start position:0%
+that are just holding the thing
+
+
+01:32:57.239 --> 01:32:58.669 align:start position:0%
+that are just holding the thing
+everything<01:32:57.520><c> is</c><01:32:57.719><c> just</c><01:32:57.880><c> clamped</c><01:32:58.280><c> underneath</c>
+
+01:32:58.669 --> 01:32:58.679 align:start position:0%
+everything is just clamped underneath
+
+
+01:32:58.679 --> 01:32:59.470 align:start position:0%
+everything is just clamped underneath
+this
+
+01:32:59.470 --> 01:32:59.480 align:start position:0%
+this
+
+
+01:32:59.480 --> 01:33:04.830 align:start position:0%
+this
+plastic<01:33:00.600><c> um</c><01:33:01.600><c> and</c><01:33:02.159><c> when</c><01:33:02.320><c> I</c><01:33:02.480><c> ordered</c><01:33:03.040><c> that</c><01:33:03.840><c> board</c>
+
+01:33:04.830 --> 01:33:04.840 align:start position:0%
+plastic um and when I ordered that board
+
+
+01:33:04.840 --> 01:33:06.470 align:start position:0%
+plastic um and when I ordered that board
+on<01:33:05.040><c> a</c><01:33:05.280><c> Sunday</c>
+
+01:33:06.470 --> 01:33:06.480 align:start position:0%
+on a Sunday
+
+
+01:33:06.480 --> 01:33:10.590 align:start position:0%
+on a Sunday
+night<01:33:07.480><c> no</c><01:33:07.719><c> sorry</c><01:33:08.119><c> 10</c><01:33:08.320><c> o'cl</c><01:33:08.679><c> on</c><01:33:08.800><c> a</c><01:33:09.080><c> Monday</c>
+
+01:33:10.590 --> 01:33:10.600 align:start position:0%
+night no sorry 10 o'cl on a Monday
+
+
+01:33:10.600 --> 01:33:14.189 align:start position:0%
+night no sorry 10 o'cl on a Monday
+morning<01:33:11.600><c> I</c><01:33:11.719><c> was</c><01:33:11.960><c> holding</c><01:33:12.400><c> the</c><01:33:12.560><c> board</c><01:33:12.920><c> at</c><01:33:13.080><c> 4:00</c>
+
+01:33:14.189 --> 01:33:14.199 align:start position:0%
+morning I was holding the board at 4:00
+
+
+01:33:14.199 --> 01:33:17.270 align:start position:0%
+morning I was holding the board at 4:00
+on<01:33:15.199><c> Wednesday</c>
+
+01:33:17.270 --> 01:33:17.280 align:start position:0%
+on Wednesday
+
+
+01:33:17.280 --> 01:33:20.910 align:start position:0%
+on Wednesday
+afternoon<01:33:18.280><c> if</c><01:33:19.360><c> newark.com</c><01:33:20.360><c> has</c><01:33:20.639><c> a</c>
+
+01:33:20.910 --> 01:33:20.920 align:start position:0%
+afternoon if newark.com has a
+
+
+01:33:20.920 --> 01:33:24.430 align:start position:0%
+afternoon if newark.com has a
+distributor<01:33:21.520><c> Warehouse</c><01:33:22.400><c> in</c><01:33:23.080><c> uh</c><01:33:23.400><c> gaff</c><01:33:24.159><c> South</c>
+
+01:33:24.430 --> 01:33:24.440 align:start position:0%
+distributor Warehouse in uh gaff South
+
+
+01:33:24.440 --> 01:33:27.790 align:start position:0%
+distributor Warehouse in uh gaff South
+Carolina<01:33:25.040><c> it's</c><01:33:25.199><c> a</c><01:33:25.320><c> short</c><01:33:25.639><c> drive</c><01:33:26.159><c> by</c><01:33:26.440><c> UPS</c><01:33:26.920><c> truck</c>
+
+01:33:27.790 --> 01:33:27.800 align:start position:0%
+Carolina it's a short drive by UPS truck
+
+
+01:33:27.800 --> 01:33:29.310 align:start position:0%
+Carolina it's a short drive by UPS truck
+you<01:33:27.960><c> can</c><01:33:28.600><c> you</c><01:33:28.679><c> can</c><01:33:28.800><c> use</c><01:33:29.040><c> ground</c>
+
+01:33:29.310 --> 01:33:29.320 align:start position:0%
+you can you can use ground
+
+
+01:33:29.320 --> 01:33:32.149 align:start position:0%
+you can you can use ground
+transportation<01:33:30.199><c> and</c><01:33:30.360><c> get</c><01:33:30.600><c> extremely</c><01:33:31.159><c> fast</c>
+
+01:33:32.149 --> 01:33:32.159 align:start position:0%
+transportation and get extremely fast
+
+
+01:33:32.159 --> 01:33:35.669 align:start position:0%
+transportation and get extremely fast
+delivery<01:33:33.159><c> and</c><01:33:33.679><c> uh</c><01:33:33.840><c> like</c><01:33:33.920><c> I</c><01:33:34.119><c> said</c><01:33:35.119><c> this</c><01:33:35.280><c> was</c>
+
+01:33:35.669 --> 01:33:35.679 align:start position:0%
+delivery and uh like I said this was
+
+
+01:33:35.679 --> 01:33:38.910 align:start position:0%
+delivery and uh like I said this was
+what<01:33:35.960><c> maybe</c><01:33:36.560><c> uh</c><01:33:36.719><c> five</c><01:33:37.000><c> six</c><01:33:37.239><c> weeks</c><01:33:37.480><c> ago</c><01:33:38.360><c> uh</c><01:33:38.560><c> lead</c>
+
+01:33:38.910 --> 01:33:38.920 align:start position:0%
+what maybe uh five six weeks ago uh lead
+
+
+01:33:38.920 --> 01:33:41.590 align:start position:0%
+what maybe uh five six weeks ago uh lead
+time<01:33:39.400><c> was</c><01:33:40.360><c> 50</c>
+
+01:33:41.590 --> 01:33:41.600 align:start position:0%
+time was 50
+
+
+01:33:41.600 --> 01:33:45.430 align:start position:0%
+time was 50
+hours<01:33:42.600><c> whatever</c><01:33:42.920><c> that</c><01:33:43.280><c> was</c>
+
+01:33:45.430 --> 01:33:45.440 align:start position:0%
+hours whatever that was
+
+
+01:33:45.440 --> 01:33:48.550 align:start position:0%
+hours whatever that was
+um<01:33:46.440><c> the</c><01:33:46.800><c> production</c><01:33:47.679><c> uh</c><01:33:47.960><c> is</c><01:33:48.119><c> going</c><01:33:48.280><c> on</c><01:33:48.400><c> in</c>
+
+01:33:48.550 --> 01:33:48.560 align:start position:0%
+um the production uh is going on in
+
+
+01:33:48.560 --> 01:33:50.590 align:start position:0%
+um the production uh is going on in
+Wales<01:33:49.199><c> and</c><01:33:49.600><c> uh</c><01:33:49.760><c> last</c><01:33:50.040><c> I</c><01:33:50.159><c> heard</c><01:33:50.360><c> they</c><01:33:50.440><c> were</c>
+
+01:33:50.590 --> 01:33:50.600 align:start position:0%
+Wales and uh last I heard they were
+
+
+01:33:50.600 --> 01:33:55.030 align:start position:0%
+Wales and uh last I heard they were
+making<01:33:51.199><c> 16,000</c><01:33:51.840><c> boards</c><01:33:52.239><c> per</c><01:33:52.440><c> week</c><01:33:53.880><c> and</c><01:33:54.360><c> um</c><01:33:54.800><c> but</c>
+
+01:33:55.030 --> 01:33:55.040 align:start position:0%
+making 16,000 boards per week and um but
+
+
+01:33:55.040 --> 01:34:02.189 align:start position:0%
+making 16,000 boards per week and um but
+they<01:33:55.159><c> are</c><01:33:56.159><c> apparently</c><01:33:56.719><c> moving</c><01:33:57.239><c> them</c>
+
+01:34:02.189 --> 01:34:02.199 align:start position:0%
+
+
+
+01:34:02.199 --> 01:34:04.950 align:start position:0%
+
+so<01:34:03.199><c> no</c><01:34:03.400><c> Newark</c>
+
+01:34:04.950 --> 01:34:04.960 align:start position:0%
+so no Newark
+
+
+01:34:04.960 --> 01:34:06.669 align:start position:0%
+so no Newark
+NW
+
+01:34:06.669 --> 01:34:06.679 align:start position:0%
+NW
+
+
+01:34:06.679 --> 01:34:11.070 align:start position:0%
+NW
+K.C<01:34:07.679><c> which</c><01:34:07.800><c> is</c><01:34:08.119><c> also</c><01:34:09.119><c> uh</c><01:34:09.320><c> element</c><01:34:09.800><c> 14</c><01:34:10.760><c> same</c>
+
+01:34:11.070 --> 01:34:11.080 align:start position:0%
+K.C which is also uh element 14 same
+
+
+01:34:11.080 --> 01:34:14.629 align:start position:0%
+K.C which is also uh element 14 same
+company<01:34:12.080><c> MCM</c><01:34:13.080><c> same</c><01:34:13.400><c> company</c><01:34:14.159><c> they're</c><01:34:14.360><c> all</c>
+
+01:34:14.629 --> 01:34:14.639 align:start position:0%
+company MCM same company they're all
+
+
+01:34:14.639 --> 01:34:18.390 align:start position:0%
+company MCM same company they're all
+part<01:34:14.880><c> of</c><01:34:15.040><c> a</c><01:34:15.199><c> British</c><01:34:15.840><c> company</c><01:34:16.159><c> called</c><01:34:16.719><c> FAL</c>
+
+01:34:18.390 --> 01:34:18.400 align:start position:0%
+part of a British company called FAL
+
+
+01:34:18.400 --> 01:34:21.990 align:start position:0%
+part of a British company called FAL
+uh<01:34:19.400><c> other</c><01:34:20.159><c> Distributors</c><01:34:21.040><c> sell</c><01:34:21.400><c> them</c><01:34:21.719><c> you</c><01:34:21.800><c> can</c>
+
+01:34:21.990 --> 01:34:22.000 align:start position:0%
+uh other Distributors sell them you can
+
+
+01:34:22.000 --> 01:34:25.830 align:start position:0%
+uh other Distributors sell them you can
+get<01:34:22.159><c> them</c><01:34:22.600><c> with</c><01:34:23.199><c> uh</c><01:34:24.000><c> uh</c><01:34:24.239><c> with</c><01:34:24.440><c> a</c><01:34:24.679><c> whole</c><01:34:25.400><c> kit</c><01:34:25.639><c> of</c>
+
+01:34:25.830 --> 01:34:25.840 align:start position:0%
+get them with uh uh with a whole kit of
+
+
+01:34:25.840 --> 01:34:28.430 align:start position:0%
+get them with uh uh with a whole kit of
+stuff<01:34:26.119><c> from</c><01:34:26.600><c> Adafruit</c><01:34:27.600><c> that</c><01:34:27.800><c> website</c><01:34:28.199><c> that</c><01:34:28.320><c> I</c>
+
+01:34:28.430 --> 01:34:28.440 align:start position:0%
+stuff from Adafruit that website that I
+
+
+01:34:28.440 --> 01:34:29.510 align:start position:0%
+stuff from Adafruit that website that I
+pointed<01:34:28.719><c> to</c>
+
+01:34:29.510 --> 01:34:29.520 align:start position:0%
+pointed to
+
+
+01:34:29.520 --> 01:34:32.790 align:start position:0%
+pointed to
+earlier<01:34:30.520><c> just</c><01:34:30.760><c> a</c><01:34:31.040><c> raft</c><01:34:31.600><c> of</c>
+
+01:34:32.790 --> 01:34:32.800 align:start position:0%
+earlier just a raft of
+
+
+01:34:32.800 --> 01:34:36.790 align:start position:0%
+earlier just a raft of
+vendors<01:34:33.800><c> but</c><01:34:34.000><c> I</c><01:34:34.280><c> I</c><01:34:34.960><c> I'm</c><01:34:35.760><c> fond</c><01:34:36.080><c> of</c><01:34:36.239><c> nework</c>
+
+01:34:36.790 --> 01:34:36.800 align:start position:0%
+vendors but I I I'm fond of nework
+
+
+01:34:36.800 --> 01:34:39.790 align:start position:0%
+vendors but I I I'm fond of nework
+because<01:34:37.159><c> the</c><01:34:37.639><c> distribution</c><01:34:38.639><c> is</c><01:34:38.920><c> like</c>
+
+01:34:39.790 --> 01:34:39.800 align:start position:0%
+because the distribution is like
+
+
+01:34:39.800 --> 01:34:44.270 align:start position:0%
+because the distribution is like
+lightning<01:34:40.480><c> fast</c><01:34:41.119><c> to</c><01:34:41.639><c> to</c><01:34:41.800><c> our</c><01:34:42.000><c> part</c><01:34:42.159><c> of</c>
+
+01:34:44.270 --> 01:34:44.280 align:start position:0%
+lightning fast to to our part of
+
+
+01:34:44.280 --> 01:34:47.470 align:start position:0%
+lightning fast to to our part of
+world<01:34:45.280><c> any</c><01:34:45.800><c> other</c><01:34:46.800><c> I</c><01:34:46.880><c> had</c><01:34:47.000><c> a</c><01:34:47.199><c> question</c>
+
+01:34:47.470 --> 01:34:47.480 align:start position:0%
+world any other I had a question
+
+
+01:34:47.480 --> 01:34:50.350 align:start position:0%
+world any other I had a question
+regarding<01:34:48.080><c> the</c><01:34:48.360><c> educational</c><01:34:49.360><c> initiatives</c>
+
+01:34:50.350 --> 01:34:50.360 align:start position:0%
+regarding the educational initiatives
+
+
+01:34:50.360 --> 01:34:54.229 align:start position:0%
+regarding the educational initiatives
+involving<01:34:50.719><c> the</c><01:34:51.080><c> P</c><01:34:52.119><c> um</c><01:34:53.119><c> I</c><01:34:53.480><c> understand</c><01:34:53.920><c> the</c><01:34:54.080><c> the</c>
+
+01:34:54.229 --> 01:34:54.239 align:start position:0%
+involving the P um I understand the the
+
+
+01:34:54.239 --> 01:34:56.870 align:start position:0%
+involving the P um I understand the the
+target<01:34:54.560><c> Market's</c><01:34:55.080><c> different</c><01:34:55.440><c> than</c><01:34:55.600><c> the</c><01:34:55.880><c> oldc</c>
+
+01:34:56.870 --> 01:34:56.880 align:start position:0%
+target Market's different than the oldc
+
+
+01:34:56.880 --> 01:34:59.669 align:start position:0%
+target Market's different than the oldc
+but<01:34:57.080><c> were</c><01:34:57.239><c> there</c><01:34:57.440><c> any</c><01:34:57.679><c> lessons</c><01:34:58.119><c> from</c><01:34:58.320><c> the</c><01:34:58.679><c> oldc</c>
+
+01:34:59.669 --> 01:34:59.679 align:start position:0%
+but were there any lessons from the oldc
+
+
+01:34:59.679 --> 01:35:01.830 align:start position:0%
+but were there any lessons from the oldc
+to<01:34:59.880><c> being</c><01:35:00.040><c> on</c><01:35:00.239><c> the</c><01:35:00.360><c> world</c><01:35:00.560><c> for</c><01:35:00.679><c> a</c><01:35:00.800><c> couple</c><01:35:01.119><c> years</c>
+
+01:35:01.830 --> 01:35:01.840 align:start position:0%
+to being on the world for a couple years
+
+
+01:35:01.840 --> 01:35:05.470 align:start position:0%
+to being on the world for a couple years
+everything<01:35:02.239><c> they</c><01:35:02.440><c> did</c><01:35:03.159><c> don't</c><01:35:03.360><c> do</c>
+
+01:35:05.470 --> 01:35:05.480 align:start position:0%
+everything they did don't do
+
+
+01:35:05.480 --> 01:35:09.830 align:start position:0%
+everything they did don't do
+that<01:35:06.480><c> why</c><01:35:07.159><c> why</c><01:35:07.679><c> it</c><01:35:07.800><c> was</c><01:35:08.000><c> the</c><01:35:08.159><c> O</c><01:35:08.560><c> the</c><01:35:08.679><c> O</c><01:35:09.040><c> PC</c><01:35:09.440><c> was</c>
+
+01:35:09.830 --> 01:35:09.840 align:start position:0%
+that why why it was the O the O PC was
+
+
+01:35:09.840 --> 01:35:12.070 align:start position:0%
+that why why it was the O the O PC was
+developed<01:35:10.320><c> without</c><01:35:10.600><c> consulting</c><01:35:11.119><c> the</c><01:35:11.280><c> target</c>
+
+01:35:12.070 --> 01:35:12.080 align:start position:0%
+developed without consulting the target
+
+
+01:35:12.080 --> 01:35:15.270 align:start position:0%
+developed without consulting the target
+users<01:35:13.360><c> right</c><01:35:14.360><c> it</c>
+
+01:35:15.270 --> 01:35:15.280 align:start position:0%
+users right it
+
+
+01:35:15.280 --> 01:35:18.430 align:start position:0%
+users right it
+it<01:35:16.280><c> they</c><01:35:16.840><c> people</c><01:35:17.159><c> just</c><01:35:17.360><c> went</c><01:35:17.560><c> off</c><01:35:17.880><c> and</c><01:35:18.119><c> did</c>
+
+01:35:18.430 --> 01:35:18.440 align:start position:0%
+it they people just went off and did
+
+
+01:35:18.440 --> 01:35:21.629 align:start position:0%
+it they people just went off and did
+something<01:35:19.199><c> that</c><01:35:19.440><c> was</c><01:35:19.920><c> cool</c><01:35:20.920><c> and</c><01:35:21.080><c> then</c><01:35:21.280><c> when</c>
+
+01:35:21.629 --> 01:35:21.639 align:start position:0%
+something that was cool and then when
+
+
+01:35:21.639 --> 01:35:24.229 align:start position:0%
+something that was cool and then when
+the<01:35:21.760><c> kids</c><01:35:22.040><c> got</c><01:35:22.239><c> in</c><01:35:22.400><c> their</c><01:35:22.600><c> hands</c><01:35:23.760><c> wasn't</c><01:35:24.080><c> quite</c>
+
+01:35:24.229 --> 01:35:24.239 align:start position:0%
+the kids got in their hands wasn't quite
+
+
+01:35:24.239 --> 01:35:27.990 align:start position:0%
+the kids got in their hands wasn't quite
+so
+
+01:35:27.990 --> 01:35:28.000 align:start position:0%
+
+
+
+01:35:28.000 --> 01:35:30.629 align:start position:0%
+
+cool<01:35:29.000><c> so</c><01:35:29.600><c> so</c><01:35:29.840><c> so</c><01:35:30.000><c> these</c><01:35:30.159><c> people</c><01:35:30.320><c> who'</c><01:35:30.480><c> done</c>
+
+01:35:30.629 --> 01:35:30.639 align:start position:0%
+cool so so so these people who' done
+
+
+01:35:30.639 --> 01:35:32.629 align:start position:0%
+cool so so so these people who' done
+presentations<01:35:31.280><c> that</c><01:35:31.360><c> say</c><01:35:31.639><c> look</c><01:35:32.080><c> we've</c>
+
+01:35:32.629 --> 01:35:32.639 align:start position:0%
+presentations that say look we've
+
+
+01:35:32.639 --> 01:35:35.430 align:start position:0%
+presentations that say look we've
+distributed<01:35:33.199><c> all</c><01:35:33.360><c> these</c><01:35:33.480><c> opcs</c><01:35:34.199><c> to</c><01:35:34.480><c> like</c><01:35:34.800><c> well</c>
+
+01:35:35.430 --> 01:35:35.440 align:start position:0%
+distributed all these opcs to like well
+
+
+01:35:35.440 --> 01:35:42.149 align:start position:0%
+distributed all these opcs to like well
+say<01:35:36.119><c> um</c><01:35:36.880><c> rural</c><01:35:37.199><c> areas</c><01:35:37.679><c> Australia</c><01:35:38.239><c> because</c><01:35:38.480><c> I</c>
+
+01:35:42.149 --> 01:35:42.159 align:start position:0%
+
+
+
+01:35:42.159 --> 01:35:44.870 align:start position:0%
+
+watched<01:35:43.159><c> so</c><01:35:43.360><c> they</c><01:35:43.520><c> had</c><01:35:43.760><c> similar</c><01:35:44.600><c> you</c><01:35:44.719><c> think</c>
+
+01:35:44.870 --> 01:35:44.880 align:start position:0%
+watched so they had similar you think
+
+
+01:35:44.880 --> 01:35:46.470 align:start position:0%
+watched so they had similar you think
+they<01:35:45.159><c> have</c>
+
+01:35:46.470 --> 01:35:46.480 align:start position:0%
+they have
+
+
+01:35:46.480 --> 01:35:49.310 align:start position:0%
+they have
+more<01:35:47.480><c> I</c><01:35:47.560><c> have</c><01:35:47.679><c> to</c><01:35:47.880><c> say</c><01:35:48.480><c> my</c><01:35:48.639><c> experience</c><01:35:49.080><c> with</c>
+
+01:35:49.310 --> 01:35:49.320 align:start position:0%
+more I have to say my experience with
+
+
+01:35:49.320 --> 01:35:52.750 align:start position:0%
+more I have to say my experience with
+thec<01:35:50.320><c> was</c><01:35:50.800><c> was</c><01:35:51.600><c> donating</c><01:35:52.040><c> one</c><01:35:52.199><c> and</c><01:35:52.360><c> buying</c><01:35:52.639><c> one</c>
+
+01:35:52.750 --> 01:35:52.760 align:start position:0%
+thec was was donating one and buying one
+
+
+01:35:52.760 --> 01:35:54.390 align:start position:0%
+thec was was donating one and buying one
+for<01:35:52.960><c> my</c><01:35:53.199><c> kid</c>
+
+01:35:54.390 --> 01:35:54.400 align:start position:0%
+for my kid
+
+
+01:35:54.400 --> 01:35:58.149 align:start position:0%
+for my kid
+and<01:35:54.920><c> talking</c><01:35:55.239><c> to</c><01:35:55.400><c> other</c><01:35:55.639><c> people</c><01:35:56.639><c> that</c><01:35:56.880><c> were</c>
+
+01:35:58.149 --> 01:35:58.159 align:start position:0%
+and talking to other people that were
+
+
+01:35:58.159 --> 01:36:00.390 align:start position:0%
+and talking to other people that were
+frustrated
+
+01:36:00.390 --> 01:36:00.400 align:start position:0%
+frustrated
+
+
+01:36:00.400 --> 01:36:02.229 align:start position:0%
+frustrated
+and
+
+01:36:02.229 --> 01:36:02.239 align:start position:0%
+and
+
+
+01:36:02.239 --> 01:36:05.750 align:start position:0%
+and
+um<01:36:03.239><c> The</c><01:36:03.560><c> process</c><01:36:04.159><c> by</c><01:36:04.360><c> which</c><01:36:04.639><c> the</c><01:36:04.840><c> res</c><01:36:05.360><c> Pi</c><01:36:05.560><c> was</c>
+
+01:36:05.750 --> 01:36:05.760 align:start position:0%
+um The process by which the res Pi was
+
+
+01:36:05.760 --> 01:36:07.709 align:start position:0%
+um The process by which the res Pi was
+developed<01:36:06.320><c> and</c><01:36:06.520><c> and</c><01:36:06.719><c> really</c><01:36:07.280><c> I</c><01:36:07.320><c> mean</c><01:36:07.480><c> if</c><01:36:07.560><c> you</c>
+
+01:36:07.709 --> 01:36:07.719 align:start position:0%
+developed and and really I mean if you
+
+
+01:36:07.719 --> 01:36:10.310 align:start position:0%
+developed and and really I mean if you
+look<01:36:07.880><c> at</c><01:36:08.000><c> it</c><01:36:08.239><c> the</c><01:36:08.320><c> res</c><01:36:08.800><c> Pi</c><01:36:09.119><c> is</c><01:36:09.400><c> a</c><01:36:09.880><c> completely</c>
+
+01:36:10.310 --> 01:36:10.320 align:start position:0%
+look at it the res Pi is a completely
+
+
+01:36:10.320 --> 01:36:13.270 align:start position:0%
+look at it the res Pi is a completely
+different<01:36:10.560><c> animal</c><01:36:11.040><c> right</c><01:36:11.760><c> it's</c><01:36:12.159><c> it's</c><01:36:12.320><c> just</c>
+
+01:36:13.270 --> 01:36:13.280 align:start position:0%
+different animal right it's it's just
+
+
+01:36:13.280 --> 01:36:15.470 align:start position:0%
+different animal right it's it's just
+guts<01:36:14.280><c> whereas</c><01:36:14.600><c> the</c>
+
+01:36:15.470 --> 01:36:15.480 align:start position:0%
+guts whereas the
+
+
+01:36:15.480 --> 01:36:19.629 align:start position:0%
+guts whereas the
+OPC<01:36:16.480><c> was</c><01:36:16.719><c> designed</c><01:36:17.639><c> for</c><01:36:18.639><c> uh</c><01:36:18.760><c> challenging</c>
+
+01:36:19.629 --> 01:36:19.639 align:start position:0%
+OPC was designed for uh challenging
+
+
+01:36:19.639 --> 01:36:22.629 align:start position:0%
+OPC was designed for uh challenging
+environments<01:36:20.639><c> uh</c><01:36:20.760><c> alternative</c><01:36:21.400><c> power</c><01:36:22.360><c> uh</c><01:36:22.480><c> all</c>
+
+01:36:22.629 --> 01:36:22.639 align:start position:0%
+environments uh alternative power uh all
+
+
+01:36:22.639 --> 01:36:24.270 align:start position:0%
+environments uh alternative power uh all
+these<01:36:22.800><c> other</c><01:36:23.040><c> things</c><01:36:23.360><c> it</c>
+
+01:36:24.270 --> 01:36:24.280 align:start position:0%
+these other things it
+
+
+01:36:24.280 --> 01:36:29.550 align:start position:0%
+these other things it
+it's<01:36:24.400><c> a</c><01:36:24.520><c> full</c><01:36:25.360><c> solution</c><01:36:26.360><c> and</c><01:36:26.960><c> uh</c><01:36:27.480><c> I</c><01:36:27.560><c> don't</c><01:36:27.719><c> want</c>
+
+01:36:29.550 --> 01:36:29.560 align:start position:0%
+it's a full solution and uh I don't want
+
+
+01:36:29.560 --> 01:36:34.030 align:start position:0%
+it's a full solution and uh I don't want
+to<01:36:30.560><c> not</c><01:36:30.760><c> that</c><01:36:30.880><c> much</c><01:36:31.639><c> I</c><01:36:31.800><c> need</c><01:36:32.360><c> more</c>
+
+01:36:34.030 --> 01:36:34.040 align:start position:0%
+to not that much I need more
+
+
+01:36:34.040 --> 01:36:36.990 align:start position:0%
+to not that much I need more
+software<01:36:35.040><c> like</c><01:36:35.199><c> sugar</c><01:36:36.119><c> those</c><01:36:36.280><c> type</c><01:36:36.440><c> of</c><01:36:36.600><c> things</c>
+
+01:36:36.990 --> 01:36:37.000 align:start position:0%
+software like sugar those type of things
+
+
+01:36:37.000 --> 01:36:38.830 align:start position:0%
+software like sugar those type of things
+yeah<01:36:37.119><c> well</c><01:36:37.400><c> it's</c><01:36:37.600><c> sugar</c><01:36:38.000><c> that</c><01:36:38.239><c> really</c><01:36:38.480><c> annoyed</c>
+
+01:36:38.830 --> 01:36:38.840 align:start position:0%
+yeah well it's sugar that really annoyed
+
+
+01:36:38.840 --> 01:36:42.109 align:start position:0%
+yeah well it's sugar that really annoyed
+the<01:36:39.000><c> H</c><01:36:39.960><c> I</c><01:36:40.960><c> speak</c><01:36:41.199><c> to</c><01:36:41.360><c> that</c><01:36:41.480><c> not</c><01:36:41.639><c> about</c><01:36:41.800><c> the</c><01:36:41.880><c> O</c>
+
+01:36:42.109 --> 01:36:42.119 align:start position:0%
+the H I speak to that not about the O
+
+
+01:36:42.119 --> 01:36:44.109 align:start position:0%
+the H I speak to that not about the O
+booy<01:36:42.639><c> because</c><01:36:43.119><c> I</c><01:36:43.280><c> know</c><01:36:43.440><c> nothing</c><01:36:43.639><c> about</c><01:36:43.800><c> it</c><01:36:43.960><c> but</c>
+
+01:36:44.109 --> 01:36:44.119 align:start position:0%
+booy because I know nothing about it but
+
+
+01:36:44.119 --> 01:36:46.030 align:start position:0%
+booy because I know nothing about it but
+about<01:36:44.639><c> the</c><01:36:44.800><c> Raspberry</c><01:36:45.239><c> Pi</c><01:36:45.400><c> and</c><01:36:45.520><c> why</c><01:36:45.639><c> it</c><01:36:45.760><c> works</c>
+
+01:36:46.030 --> 01:36:46.040 align:start position:0%
+about the Raspberry Pi and why it works
+
+
+01:36:46.040 --> 01:36:48.629 align:start position:0%
+about the Raspberry Pi and why it works
+well<01:36:46.199><c> for</c><01:36:46.360><c> educational</c><01:36:47.280><c> initiatives</c><01:36:48.280><c> is</c>
+
+01:36:48.629 --> 01:36:48.639 align:start position:0%
+well for educational initiatives is
+
+
+01:36:48.639 --> 01:36:52.590 align:start position:0%
+well for educational initiatives is
+because<01:36:49.000><c> it</c><01:36:49.199><c> is</c><01:36:49.360><c> so</c><01:36:50.080><c> flexible</c><01:36:51.119><c> than</c><01:36:52.119><c> um</c>
+
+01:36:52.590 --> 01:36:52.600 align:start position:0%
+because it is so flexible than um
+
+
+01:36:52.600 --> 01:36:56.470 align:start position:0%
+because it is so flexible than um
+because<01:36:52.840><c> it</c><01:36:53.000><c> is</c><01:36:53.199><c> just</c><01:36:53.880><c> it's</c><01:36:54.480><c> and</c><01:36:54.880><c> you</c><01:36:55.360><c> know</c><01:36:56.360><c> you</c>
+
+01:36:56.470 --> 01:36:56.480 align:start position:0%
+because it is just it's and you know you
+
+
+01:36:56.480 --> 01:36:58.430 align:start position:0%
+because it is just it's and you know you
+can<01:36:56.800><c> easily</c><01:36:57.199><c> switch</c><01:36:57.560><c> out</c><01:36:58.000><c> the</c><01:36:58.119><c> operating</c>
+
+01:36:58.430 --> 01:36:58.440 align:start position:0%
+can easily switch out the operating
+
+
+01:36:58.440 --> 01:37:00.350 align:start position:0%
+can easily switch out the operating
+system<01:36:58.760><c> using</c><01:36:59.000><c> on</c><01:36:59.159><c> it</c><01:36:59.440><c> just</c><01:36:59.800><c> different</c><01:37:00.040><c> SD</c>
+
+01:37:00.350 --> 01:37:00.360 align:start position:0%
+system using on it just different SD
+
+
+01:37:00.360 --> 01:37:02.270 align:start position:0%
+system using on it just different SD
+card<01:37:00.600><c> put</c><01:37:00.719><c> it</c><01:37:00.840><c> on</c><01:37:01.040><c> there</c><01:37:01.639><c> uh</c><01:37:01.719><c> it</c><01:37:01.800><c> makes</c><01:37:02.000><c> a</c><01:37:02.159><c> much</c>
+
+01:37:02.270 --> 01:37:02.280 align:start position:0%
+card put it on there uh it makes a much
+
+
+01:37:02.280 --> 01:37:04.870 align:start position:0%
+card put it on there uh it makes a much
+more<01:37:02.440><c> flexible</c><01:37:02.840><c> thing</c><01:37:03.040><c> for</c><01:37:03.639><c> uh</c><01:37:04.520><c> the</c><01:37:04.679><c> best</c>
+
+01:37:04.870 --> 01:37:04.880 align:start position:0%
+more flexible thing for uh the best
+
+
+01:37:04.880 --> 01:37:06.629 align:start position:0%
+more flexible thing for uh the best
+educational<01:37:05.360><c> initiatives</c><01:37:05.920><c> to</c><01:37:06.199><c> naturally</c>
+
+01:37:06.629 --> 01:37:06.639 align:start position:0%
+educational initiatives to naturally
+
+
+01:37:06.639 --> 01:37:08.990 align:start position:0%
+educational initiatives to naturally
+flourish<01:37:07.520><c> for</c><01:37:07.679><c> example</c><01:37:08.080><c> rasbian</c><01:37:08.760><c> which</c><01:37:08.880><c> is</c>
+
+01:37:08.990 --> 01:37:09.000 align:start position:0%
+flourish for example rasbian which is
+
+
+01:37:09.000 --> 01:37:13.470 align:start position:0%
+flourish for example rasbian which is
+the<01:37:09.119><c> Debian</c><01:37:09.840><c> drro</c><01:37:10.840><c> um</c><01:37:11.280><c> made</c><01:37:11.560><c> for</c><01:37:11.800><c> it</c><01:37:12.600><c> you</c><01:37:13.040><c> comes</c>
+
+01:37:13.470 --> 01:37:13.480 align:start position:0%
+the Debian drro um made for it you comes
+
+
+01:37:13.480 --> 01:37:17.870 align:start position:0%
+the Debian drro um made for it you comes
+with<01:37:14.400><c> a</c><01:37:15.000><c> scratch</c><01:37:15.800><c> comes</c><01:37:16.199><c> with</c><01:37:17.199><c> a</c><01:37:17.560><c> set</c><01:37:17.679><c> of</c>
+
+01:37:17.870 --> 01:37:17.880 align:start position:0%
+with a scratch comes with a set of
+
+
+01:37:17.880 --> 01:37:20.030 align:start position:0%
+with a scratch comes with a set of
+python<01:37:18.320><c> games</c><01:37:18.679><c> that</c><01:37:18.760><c> are</c><01:37:18.920><c> prade</c><01:37:19.800><c> you</c><01:37:19.920><c> can</c>
+
+01:37:20.030 --> 01:37:20.040 align:start position:0%
+python games that are prade you can
+
+
+01:37:20.040 --> 01:37:22.149 align:start position:0%
+python games that are prade you can
+learn<01:37:20.199><c> to</c><01:37:20.400><c> program</c><01:37:20.760><c> that</c><01:37:20.920><c> way</c><01:37:21.440><c> but</c><01:37:21.600><c> dat</c><01:37:21.880><c> fruit</c>
+
+01:37:22.149 --> 01:37:22.159 align:start position:0%
+learn to program that way but dat fruit
+
+
+01:37:22.159 --> 01:37:24.109 align:start position:0%
+learn to program that way but dat fruit
+has<01:37:22.360><c> taken</c><01:37:22.840><c> that</c><01:37:23.239><c> particular</c><01:37:23.520><c> ular</c>
+
+01:37:24.109 --> 01:37:24.119 align:start position:0%
+has taken that particular ular
+
+
+01:37:24.119 --> 01:37:25.950 align:start position:0%
+has taken that particular ular
+distribution<01:37:24.760><c> and</c><01:37:25.000><c> made</c><01:37:25.600><c> their</c><01:37:25.760><c> own</c>
+
+01:37:25.950 --> 01:37:25.960 align:start position:0%
+distribution and made their own
+
+
+01:37:25.960 --> 01:37:27.430 align:start position:0%
+distribution and made their own
+distribution<01:37:26.480><c> which</c><01:37:26.639><c> has</c><01:37:26.800><c> more</c><01:37:27.000><c> Educational</c>
+
+01:37:27.430 --> 01:37:27.440 align:start position:0%
+distribution which has more Educational
+
+
+01:37:27.440 --> 01:37:29.229 align:start position:0%
+distribution which has more Educational
+Tools<01:37:27.719><c> on</c><01:37:27.880><c> top</c><01:37:28.040><c> of</c><01:37:28.159><c> that</c><01:37:28.520><c> specifically</c><01:37:29.040><c> people</c>
+
+01:37:29.229 --> 01:37:29.239 align:start position:0%
+Tools on top of that specifically people
+
+
+01:37:29.239 --> 01:37:31.189 align:start position:0%
+Tools on top of that specifically people
+wanting<01:37:29.440><c> to</c><01:37:29.560><c> learn</c><01:37:29.760><c> about</c><01:37:29.960><c> electronics</c><01:37:30.960><c> and</c>
+
+01:37:31.189 --> 01:37:31.199 align:start position:0%
+wanting to learn about electronics and
+
+
+01:37:31.199 --> 01:37:34.350 align:start position:0%
+wanting to learn about electronics and
+such<01:37:32.199><c> um</c><01:37:32.480><c> so</c><01:37:32.679><c> I</c><01:37:32.800><c> think</c><01:37:33.639><c> the</c><01:37:33.760><c> cool</c><01:37:34.040><c> thing</c><01:37:34.199><c> about</c>
+
+01:37:34.350 --> 01:37:34.360 align:start position:0%
+such um so I think the cool thing about
+
+
+01:37:34.360 --> 01:37:36.070 align:start position:0%
+such um so I think the cool thing about
+the<01:37:34.480><c> raspberry</c><01:37:34.840><c> Piper</c><01:37:35.080><c> educational</c><01:37:35.600><c> stuff</c><01:37:35.880><c> is</c>
+
+01:37:36.070 --> 01:37:36.080 align:start position:0%
+the raspberry Piper educational stuff is
+
+
+01:37:36.080 --> 01:37:39.070 align:start position:0%
+the raspberry Piper educational stuff is
+that<01:37:36.760><c> uh</c><01:37:37.440><c> you</c><01:37:37.560><c> can</c><01:37:37.760><c> get</c><01:37:38.000><c> actual</c><01:37:38.400><c> Educators</c><01:37:38.920><c> to</c>
+
+01:37:39.070 --> 01:37:39.080 align:start position:0%
+that uh you can get actual Educators to
+
+
+01:37:39.080 --> 01:37:41.189 align:start position:0%
+that uh you can get actual Educators to
+get<01:37:39.280><c> them</c><01:37:39.639><c> to</c><01:37:39.840><c> learn</c><01:37:40.159><c> about</c><01:37:40.360><c> it</c><01:37:40.679><c> and</c><01:37:40.840><c> then</c><01:37:40.960><c> to</c>
+
+01:37:41.189 --> 01:37:41.199 align:start position:0%
+get them to learn about it and then to
+
+
+01:37:41.199 --> 01:37:43.109 align:start position:0%
+get them to learn about it and then to
+build<01:37:41.520><c> their</c><01:37:41.679><c> own</c><01:37:41.960><c> systems</c><01:37:42.320><c> on</c><01:37:42.599><c> top</c><01:37:42.760><c> of</c><01:37:42.920><c> it</c>
+
+01:37:43.109 --> 01:37:43.119 align:start position:0%
+build their own systems on top of it
+
+
+01:37:43.119 --> 01:37:45.390 align:start position:0%
+build their own systems on top of it
+which<01:37:43.320><c> can</c><01:37:43.520><c> then</c><01:37:43.719><c> spread</c><01:37:44.080><c> out</c><01:37:45.080><c> while</c><01:37:45.320><c> of</c>
+
+01:37:45.390 --> 01:37:45.400 align:start position:0%
+which can then spread out while of
+
+
+01:37:45.400 --> 01:37:46.629 align:start position:0%
+which can then spread out while of
+course<01:37:45.560><c> you</c><01:37:45.639><c> can</c><01:37:45.800><c> install</c><01:37:46.119><c> whatever</c><01:37:46.360><c> you</c><01:37:46.440><c> want</c>
+
+01:37:46.629 --> 01:37:46.639 align:start position:0%
+course you can install whatever you want
+
+
+01:37:46.639 --> 01:37:48.350 align:start position:0%
+course you can install whatever you want
+although<01:37:46.920><c> OPC</c><01:37:47.480><c> assum</c><01:37:47.760><c> it's</c><01:37:47.960><c> computer</c><01:37:48.280><c> that</c>
+
+01:37:48.350 --> 01:37:48.360 align:start position:0%
+although OPC assum it's computer that
+
+
+01:37:48.360 --> 01:37:51.470 align:start position:0%
+although OPC assum it's computer that
+you<01:37:48.440><c> can</c><01:37:48.560><c> install</c><01:37:48.880><c> stuff</c><01:37:49.080><c> on</c><01:37:50.000><c> I</c><01:37:50.280><c> think</c><01:37:51.080><c> um</c><01:37:51.400><c> you</c>
+
+01:37:51.470 --> 01:37:51.480 align:start position:0%
+you can install stuff on I think um you
+
+
+01:37:51.480 --> 01:37:53.510 align:start position:0%
+you can install stuff on I think um you
+know<01:37:51.599><c> it</c><01:37:51.719><c> sort</c><01:37:51.880><c> of</c><01:37:52.159><c> had</c><01:37:52.360><c> the</c><01:37:52.599><c> basic</c><01:37:53.000><c> like</c><01:37:53.199><c> page</c>
+
+01:37:53.510 --> 01:37:53.520 align:start position:0%
+know it sort of had the basic like page
+
+
+01:37:53.520 --> 01:37:55.109 align:start position:0%
+know it sort of had the basic like page
+here's<01:37:53.719><c> your</c><01:37:53.920><c> operating</c><01:37:54.239><c> system</c><01:37:54.760><c> here</c><01:37:54.880><c> it</c><01:37:54.960><c> is</c>
+
+01:37:55.109 --> 01:37:55.119 align:start position:0%
+here's your operating system here it is
+
+
+01:37:55.119 --> 01:37:56.830 align:start position:0%
+here's your operating system here it is
+one<01:37:55.400><c> package</c><01:37:55.880><c> this</c><01:37:55.960><c> is</c><01:37:56.119><c> something</c><01:37:56.480><c> that</c><01:37:56.719><c> I</c>
+
+01:37:56.830 --> 01:37:56.840 align:start position:0%
+one package this is something that I
+
+
+01:37:56.840 --> 01:37:59.510 align:start position:0%
+one package this is something that I
+think<01:37:56.960><c> is</c><01:37:57.119><c> going</c><01:37:57.280><c> to</c><01:37:57.520><c> evolve</c><01:37:58.239><c> much</c>
+
+01:37:59.510 --> 01:37:59.520 align:start position:0%
+think is going to evolve much
+
+
+01:37:59.520 --> 01:38:02.870 align:start position:0%
+think is going to evolve much
+more<01:38:00.520><c> so</c><01:38:01.080><c> we</c><01:38:01.280><c> all</c><01:38:01.560><c> need</c><01:38:01.760><c> to</c><01:38:01.960><c> be</c><01:38:02.199><c> out</c><01:38:02.360><c> of</c><01:38:02.639><c> this</c>
+
+01:38:02.870 --> 01:38:02.880 align:start position:0%
+more so we all need to be out of this
+
+
+01:38:02.880 --> 01:38:05.229 align:start position:0%
+more so we all need to be out of this
+room<01:38:03.159><c> in</c><01:38:03.360><c> about</c><01:38:03.800><c> five</c><01:38:04.080><c> minutes</c><01:38:04.679><c> so</c><01:38:04.840><c> that</c><01:38:05.000><c> our</c>
+
+01:38:05.229 --> 01:38:05.239 align:start position:0%
+room in about five minutes so that our
+
+
+01:38:05.239 --> 01:38:08.790 align:start position:0%
+room in about five minutes so that our
+gracious<01:38:05.679><c> host</c><01:38:05.960><c> can</c><01:38:06.159><c> go</c><01:38:06.360><c> home</c><01:38:07.239><c> um</c><01:38:07.960><c> but</c><01:38:08.440><c> uh</c><01:38:08.679><c> I</c>
+
+01:38:08.790 --> 01:38:08.800 align:start position:0%
+gracious host can go home um but uh I
+
+
+01:38:08.800 --> 01:38:10.430 align:start position:0%
+gracious host can go home um but uh I
+believe<01:38:09.119><c> Pete's</c><01:38:09.480><c> going</c><01:38:09.560><c> to</c><01:38:09.800><c> bring</c><01:38:10.040><c> up</c><01:38:10.239><c> the</c>
+
+01:38:10.430 --> 01:38:10.440 align:start position:0%
+believe Pete's going to bring up the
+
+
+01:38:10.440 --> 01:38:12.629 align:start position:0%
+believe Pete's going to bring up the
+details<01:38:10.960><c> about</c><01:38:11.320><c> our</c><01:38:11.639><c> Saturday</c><01:38:12.080><c> meeting</c>
+
+01:38:12.629 --> 01:38:12.639 align:start position:0%
+details about our Saturday meeting
+
+
+01:38:12.639 --> 01:38:15.470 align:start position:0%
+details about our Saturday meeting
+before<01:38:13.040><c> y'all</c><01:38:13.360><c> leave</c><01:38:13.800><c> now</c><01:38:14.040><c> don't</c><01:38:14.239><c> leave</c><01:38:14.560><c> yet</c>
+
+01:38:15.470 --> 01:38:15.480 align:start position:0%
+before y'all leave now don't leave yet
+
+
+01:38:15.480 --> 01:38:20.470 align:start position:0%
+before y'all leave now don't leave yet
+because<01:38:16.119><c> Ellen</c><01:38:16.679><c> wants</c><01:38:16.960><c> to</c><01:38:17.199><c> give</c><01:38:17.400><c> away</c><01:38:17.719><c> some</c>
+
+01:38:20.470 --> 01:38:20.480 align:start position:0%
+
+
+
+01:38:20.480 --> 01:38:23.189 align:start position:0%
+
+books<01:38:21.480><c> have</c><01:38:21.639><c> some</c><01:38:21.920><c> questions</c><01:38:22.440><c> all</c><01:38:22.599><c> right</c><01:38:23.000><c> uh</c>
+
+01:38:23.189 --> 01:38:23.199 align:start position:0%
+books have some questions all right uh
+
+
+01:38:23.199 --> 01:38:24.790 align:start position:0%
+books have some questions all right uh
+first<01:38:23.639><c> all</c><01:38:23.719><c> thanks</c><01:38:23.920><c> everybody</c><01:38:24.199><c> for</c><01:38:24.360><c> coming</c><01:38:24.679><c> it</c>
+
+01:38:24.790 --> 01:38:24.800 align:start position:0%
+first all thanks everybody for coming it
+
+
+01:38:24.800 --> 01:38:26.430 align:start position:0%
+first all thanks everybody for coming it
+was<01:38:25.280><c> it</c><01:38:25.360><c> was</c><01:38:25.520><c> really</c><01:38:25.760><c> really</c><01:38:25.920><c> awesome</c><01:38:26.159><c> to</c><01:38:26.280><c> see</c>
+
+01:38:26.430 --> 01:38:26.440 align:start position:0%
+was it was really really awesome to see
+
+
+01:38:26.440 --> 01:38:27.550 align:start position:0%
+was it was really really awesome to see
+such<01:38:26.560><c> a</c><01:38:26.679><c> crowd</c><01:38:26.960><c> thank</c><01:38:27.080><c> you</c><01:38:27.199><c> so</c><01:38:27.280><c> much</c><01:38:27.400><c> for</c>
+
+01:38:27.550 --> 01:38:27.560 align:start position:0%
+such a crowd thank you so much for
+
+
+01:38:27.560 --> 01:38:28.669 align:start position:0%
+such a crowd thank you so much for
+coming<01:38:27.920><c> great</c>
+
+01:38:28.669 --> 01:38:28.679 align:start position:0%
+coming great
+
+
+01:38:28.679 --> 01:38:32.229 align:start position:0%
+coming great
+time
+
+01:38:32.229 --> 01:38:32.239 align:start position:0%
+
+
+
+01:38:32.239 --> 01:38:35.430 align:start position:0%
+
+okay<01:38:33.239><c> so</c><01:38:33.520><c> we</c><01:38:33.719><c> have</c><01:38:34.080><c> we</c><01:38:34.239><c> have</c><01:38:34.480><c> two</c><01:38:34.840><c> books</c>
+
+01:38:35.430 --> 01:38:35.440 align:start position:0%
+okay so we have we have two books
+
+
+01:38:35.440 --> 01:38:37.910 align:start position:0%
+okay so we have we have two books
+Raspberry<01:38:35.920><c> Pi</c><01:38:36.119><c> books</c><01:38:36.320><c> from</c><01:38:36.480><c> the</c><01:38:36.760><c> pragmatic</c><01:38:37.760><c> uh</c>
+
+01:38:37.910 --> 01:38:37.920 align:start position:0%
+Raspberry Pi books from the pragmatic uh
+
+
+01:38:37.920 --> 01:38:40.070 align:start position:0%
+Raspberry Pi books from the pragmatic uh
+programmers<01:38:38.520><c> publishing</c><01:38:39.119><c> and</c><01:38:39.560><c> I</c><01:38:39.880><c> understand</c>
+
+01:38:40.070 --> 01:38:40.080 align:start position:0%
+programmers publishing and I understand
+
+
+01:38:40.080 --> 01:38:41.950 align:start position:0%
+programmers publishing and I understand
+someone<01:38:40.639><c> in</c><01:38:40.880><c> in</c><01:38:41.000><c> attendance</c><01:38:41.400><c> works</c><01:38:41.719><c> there</c><01:38:41.840><c> and</c>
+
+01:38:41.950 --> 01:38:41.960 align:start position:0%
+someone in in attendance works there and
+
+
+01:38:41.960 --> 01:38:44.510 align:start position:0%
+someone in in attendance works there and
+donated<01:38:42.480><c> them</c><01:38:43.480><c> thank</c><01:38:43.639><c> you</c><01:38:43.800><c> very</c><01:38:44.000><c> much</c><01:38:44.280><c> it's</c>
+
+01:38:44.510 --> 01:38:44.520 align:start position:0%
+donated them thank you very much it's
+
+
+01:38:44.520 --> 01:38:47.629 align:start position:0%
+donated them thank you very much it's
+awesome<01:38:45.000><c> to</c><01:38:45.159><c> have</c><01:38:45.280><c> something</c><01:38:45.760><c> about</c><01:38:46.599><c> um</c><01:38:47.280><c> so</c>
+
+01:38:47.629 --> 01:38:47.639 align:start position:0%
+awesome to have something about um so
+
+
+01:38:47.639 --> 01:38:49.870 align:start position:0%
+awesome to have something about um so
+the<01:38:47.719><c> way</c><01:38:47.840><c> we're</c><01:38:47.960><c> going</c><01:38:48.040><c> to</c><01:38:48.159><c> do</c><01:38:48.320><c> this</c><01:38:48.599><c> is</c><01:38:49.239><c> uh</c><01:38:49.719><c> I'm</c>
+
+01:38:49.870 --> 01:38:49.880 align:start position:0%
+the way we're going to do this is uh I'm
+
+
+01:38:49.880 --> 01:38:51.910 align:start position:0%
+the way we're going to do this is uh I'm
+going<01:38:50.000><c> to</c><01:38:50.159><c> ask</c><01:38:50.320><c> a</c><01:38:50.560><c> question</c><01:38:51.199><c> and</c><01:38:51.440><c> if</c><01:38:51.719><c> the</c>
+
+01:38:51.910 --> 01:38:51.920 align:start position:0%
+going to ask a question and if the
+
+
+01:38:51.920 --> 01:38:53.310 align:start position:0%
+going to ask a question and if the
+answer<01:38:52.159><c> to</c><01:38:52.280><c> that</c><01:38:52.440><c> question</c><01:38:52.719><c> is</c><01:38:52.840><c> applicable</c><01:38:53.239><c> to</c>
+
+01:38:53.310 --> 01:38:53.320 align:start position:0%
+answer to that question is applicable to
+
+
+01:38:53.320 --> 01:38:54.550 align:start position:0%
+answer to that question is applicable to
+you<01:38:53.520><c> raise</c><01:38:53.679><c> your</c><01:38:53.800><c> hand</c><01:38:53.960><c> and</c><01:38:54.040><c> you</c><01:38:54.159><c> may</c><01:38:54.320><c> get</c><01:38:54.400><c> a</c>
+
+01:38:54.550 --> 01:38:54.560 align:start position:0%
+you raise your hand and you may get a
+
+
+01:38:54.560 --> 01:38:57.709 align:start position:0%
+you raise your hand and you may get a
+book<01:38:55.159><c> first</c><01:38:55.480><c> question</c><01:38:55.880><c> is</c><01:38:56.880><c> um</c><01:38:57.400><c> is</c><01:38:57.520><c> there</c>
+
+01:38:57.709 --> 01:38:57.719 align:start position:0%
+book first question is um is there
+
+
+01:38:57.719 --> 01:38:59.669 align:start position:0%
+book first question is um is there
+anybody<01:38:58.159><c> here</c><01:38:58.520><c> who</c><01:38:58.679><c> is</c><01:38:58.920><c> dragged</c><01:38:59.280><c> out</c><01:38:59.520><c> here</c>
+
+01:38:59.669 --> 01:38:59.679 align:start position:0%
+anybody here who is dragged out here
+
+
+01:38:59.679 --> 01:39:01.589 align:start position:0%
+anybody here who is dragged out here
+tonight<01:39:00.080><c> by</c><01:39:00.199><c> a</c><01:39:00.360><c> friend</c><01:39:00.639><c> or</c><01:39:00.840><c> family</c><01:39:01.159><c> member</c>
+
+01:39:01.589 --> 01:39:01.599 align:start position:0%
+tonight by a friend or family member
+
+
+01:39:01.599 --> 01:39:04.229 align:start position:0%
+tonight by a friend or family member
+maybe<01:39:01.920><c> somebody</c><01:39:02.320><c> they</c><01:39:02.679><c> just</c><01:39:02.840><c> met</c><01:39:03.000><c> today</c><01:39:03.280><c> and</c>
+
+01:39:04.229 --> 01:39:04.239 align:start position:0%
+maybe somebody they just met today and
+
+
+01:39:04.239 --> 01:39:07.109 align:start position:0%
+maybe somebody they just met today and
+like<01:39:05.239><c> somebody</c><01:39:06.159><c> you</c><01:39:06.360><c> met</c><01:39:06.599><c> you</c><01:39:06.679><c> were</c><01:39:06.800><c> dragged</c>
+
+01:39:07.109 --> 01:39:07.119 align:start position:0%
+like somebody you met you were dragged
+
+
+01:39:07.119 --> 01:39:08.629 align:start position:0%
+like somebody you met you were dragged
+here
+
+01:39:08.629 --> 01:39:08.639 align:start position:0%
+here
+
+
+01:39:08.639 --> 01:39:13.470 align:start position:0%
+here
+today<01:39:09.639><c> who</c><01:39:09.760><c> is</c>
+
+01:39:13.470 --> 01:39:13.480 align:start position:0%
+
+
+
+01:39:13.480 --> 01:39:18.030 align:start position:0%
+
+responsible<01:39:14.480><c> an</c><01:39:14.639><c> evil</c>
+
+01:39:18.030 --> 01:39:18.040 align:start position:0%
+
+
+
+01:39:18.040 --> 01:39:26.430 align:start position:0%
+
+man<01:39:19.040><c> would</c><01:39:19.119><c> you</c><01:39:19.280><c> like</c><01:39:19.400><c> a</c><01:39:19.560><c> book</c>
+
+01:39:26.430 --> 01:39:26.440 align:start position:0%
+
+
+
+01:39:26.440 --> 01:39:28.990 align:start position:0%
+
+there<01:39:26.560><c> you</c>
+
+01:39:28.990 --> 01:39:29.000 align:start position:0%
+
+
+
+01:39:29.000 --> 01:39:33.189 align:start position:0%
+
+go<01:39:30.000><c> all</c><01:39:30.119><c> right</c><01:39:30.920><c> the</c><01:39:31.400><c> second</c><01:39:31.719><c> book</c><01:39:32.199><c> we'll</c><01:39:32.480><c> go</c><01:39:32.679><c> to</c>
+
+01:39:33.189 --> 01:39:33.199 align:start position:0%
+go all right the second book we'll go to
+
+
+01:39:33.199 --> 01:39:35.310 align:start position:0%
+go all right the second book we'll go to
+whoever<01:39:33.800><c> never</c><01:39:34.080><c> heard</c><01:39:34.320><c> of</c><01:39:34.400><c> the</c><01:39:34.560><c> raspberry</c><01:39:35.040><c> pie</c>
+
+01:39:35.310 --> 01:39:35.320 align:start position:0%
+whoever never heard of the raspberry pie
+
+
+01:39:35.320 --> 01:39:44.430 align:start position:0%
+whoever never heard of the raspberry pie
+before<01:39:35.639><c> tonight</c><01:39:36.080><c> does</c><01:39:36.280><c> anybody</c><01:39:36.679><c> like</c><01:39:37.520><c> we</c><01:39:37.719><c> have</c>
+
+01:39:44.430 --> 01:39:44.440 align:start position:0%
+
+
+
+01:39:44.440 --> 01:39:46.390 align:start position:0%
+
+one<01:39:45.440><c> and</c><01:39:45.560><c> that's</c><01:39:45.719><c> all</c><01:39:45.800><c> I</c><01:39:45.920><c> have</c><01:39:46.040><c> thanks</c><01:39:46.239><c> again</c>
+
+01:39:46.390 --> 01:39:46.400 align:start position:0%
+one and that's all I have thanks again
+
+
+01:39:46.400 --> 01:39:50.350 align:start position:0%
+one and that's all I have thanks again
+for<01:39:46.520><c> coming</c><01:39:47.360><c> thank</c><01:39:47.520><c> you</c><01:39:48.360><c> so</c><01:39:48.760><c> we</c><01:39:49.000><c> meet</c><01:39:49.480><c> at</c><01:39:50.040><c> the</c>
+
+01:39:50.350 --> 01:39:50.360 align:start position:0%
+for coming thank you so we meet at the
+
+
+01:39:50.360 --> 01:39:54.800 align:start position:0%
+for coming thank you so we meet at the
+bar<01:39:50.760><c> at</c><01:39:51.040><c> B</c><01:39:51.400><c> Wings</c><01:39:51.800><c> Over</c>
+
diff --git a/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.en.vtt b/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.en.vtt
new file mode 100644
index 0000000..f5d8816
--- /dev/null
+++ b/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.en.vtt
@@ -0,0 +1,16792 @@
+WEBVTT
+Kind: captions
+Language: en
+
+00:00:10.799 --> 00:00:14.549 align:start position:0%
+
+do<00:00:11.799><c> you</c><00:00:11.920><c> don't</c><00:00:12.080><c> know</c><00:00:12.240><c> how</c><00:00:12.320><c> to</c><00:00:12.519><c> do</c><00:00:12.639><c> it</c><00:00:13.240><c> it's</c>
+
+00:00:14.549 --> 00:00:14.559 align:start position:0%
+do you don't know how to do it it's
+
+
+00:00:14.559 --> 00:00:17.429 align:start position:0%
+do you don't know how to do it it's
+a<00:00:15.559><c> okay</c>
+
+00:00:17.429 --> 00:00:17.439 align:start position:0%
+a okay
+
+
+00:00:17.439 --> 00:00:19.710 align:start position:0%
+a okay
+so<00:00:18.439><c> um</c><00:00:18.640><c> I'm</c><00:00:18.800><c> going</c><00:00:18.960><c> to</c><00:00:19.160><c> introduce</c><00:00:19.560><c> our</c>
+
+00:00:19.710 --> 00:00:19.720 align:start position:0%
+so um I'm going to introduce our
+
+
+00:00:19.720 --> 00:00:21.750 align:start position:0%
+so um I'm going to introduce our
+steering<00:00:20.160><c> committee</c><00:00:21.119><c> the</c><00:00:21.400><c> steering</c>
+
+00:00:21.750 --> 00:00:21.760 align:start position:0%
+steering committee the steering
+
+
+00:00:21.760 --> 00:00:24.990 align:start position:0%
+steering committee the steering
+committee<00:00:22.119><c> at</c><00:00:22.199><c> the</c><00:00:22.320><c> moment</c><00:00:22.800><c> is</c><00:00:23.240><c> um</c><00:00:24.000><c> myself</c>
+
+00:00:24.990 --> 00:00:25.000 align:start position:0%
+committee at the moment is um myself
+
+
+00:00:25.000 --> 00:00:26.109 align:start position:0%
+committee at the moment is um myself
+Bill
+
+00:00:26.109 --> 00:00:26.119 align:start position:0%
+Bill
+
+
+00:00:26.119 --> 00:00:31.749 align:start position:0%
+Bill
+phah<00:00:27.119><c> Christ</c><00:00:27.519><c> Bal</c><00:00:27.760><c> Homer</c>
+
+00:00:31.749 --> 00:00:31.759 align:start position:0%
+
+
+
+00:00:31.759 --> 00:00:33.990 align:start position:0%
+
+Porter<00:00:32.759><c> and</c>
+
+00:00:33.990 --> 00:00:34.000 align:start position:0%
+Porter and
+
+
+00:00:34.000 --> 00:00:35.590 align:start position:0%
+Porter and
+where
+
+00:00:35.590 --> 00:00:35.600 align:start position:0%
+where
+
+
+00:00:35.600 --> 00:00:41.270 align:start position:0%
+where
+Jeremy<00:00:36.600><c> sorry</c><00:00:36.800><c> you're</c><00:00:37.040><c> hiding</c>
+
+00:00:41.270 --> 00:00:41.280 align:start position:0%
+
+
+
+00:00:41.280 --> 00:00:44.709 align:start position:0%
+
+from<00:00:42.280><c> so</c><00:00:43.000><c> as</c><00:00:43.120><c> you</c><00:00:43.320><c> heard</c><00:00:43.800><c> we</c><00:00:43.960><c> do</c><00:00:44.120><c> not</c><00:00:44.320><c> have</c><00:00:44.440><c> a</c>
+
+00:00:44.709 --> 00:00:44.719 align:start position:0%
+from so as you heard we do not have a
+
+
+00:00:44.719 --> 00:00:46.990 align:start position:0%
+from so as you heard we do not have a
+sponsor<00:00:45.160><c> tonight</c><00:00:45.520><c> so</c><00:00:45.719><c> if</c><00:00:45.840><c> you</c><00:00:46.039><c> feel</c><00:00:46.320><c> generous</c>
+
+00:00:46.990 --> 00:00:47.000 align:start position:0%
+sponsor tonight so if you feel generous
+
+
+00:00:47.000 --> 00:00:48.950 align:start position:0%
+sponsor tonight so if you feel generous
+uh<00:00:47.199><c> feel</c><00:00:47.399><c> free</c><00:00:47.719><c> to</c><00:00:48.199><c> put</c><00:00:48.399><c> more</c><00:00:48.559><c> money</c><00:00:48.840><c> will</c>
+
+00:00:48.950 --> 00:00:48.960 align:start position:0%
+uh feel free to put more money will
+
+
+00:00:48.960 --> 00:00:52.470 align:start position:0%
+uh feel free to put more money will
+leave<00:00:49.199><c> put</c><00:00:49.399><c> them</c><00:00:49.559><c> out</c><00:00:49.719><c> till</c><00:00:50.000><c> the</c><00:00:50.120><c> end</c>
+
+00:00:52.470 --> 00:00:52.480 align:start position:0%
+leave put them out till the end
+
+
+00:00:52.480 --> 00:00:56.029 align:start position:0%
+leave put them out till the end
+um<00:00:53.480><c> Community</c><00:00:54.079><c> announcements</c><00:00:54.879><c> so</c><00:00:55.600><c> who</c><00:00:55.800><c> here</c>
+
+00:00:56.029 --> 00:00:56.039 align:start position:0%
+um Community announcements so who here
+
+
+00:00:56.039 --> 00:00:57.990 align:start position:0%
+um Community announcements so who here
+knows<00:00:56.280><c> of</c><00:00:56.440><c> an</c><00:00:56.640><c> upcoming</c><00:00:57.120><c> meeting</c><00:00:57.520><c> the</c><00:00:57.719><c> next</c>
+
+00:00:57.990 --> 00:00:58.000 align:start position:0%
+knows of an upcoming meeting the next
+
+
+00:00:58.000 --> 00:01:00.029 align:start position:0%
+knows of an upcoming meeting the next
+month<00:00:58.239><c> or</c><00:00:58.399><c> two</c><00:00:58.879><c> that</c><00:00:59.079><c> folks</c><00:00:59.359><c> in</c><00:00:59.519><c> this</c><00:00:59.680><c> room</c>
+
+00:01:00.029 --> 00:01:00.039 align:start position:0%
+month or two that folks in this room
+
+
+00:01:00.039 --> 00:01:01.189 align:start position:0%
+month or two that folks in this room
+with<00:01:00.239><c> find</c>
+
+00:01:01.189 --> 00:01:01.199 align:start position:0%
+with find
+
+
+00:01:01.199 --> 00:01:05.149 align:start position:0%
+with find
+interest
+
+00:01:05.149 --> 00:01:05.159 align:start position:0%
+
+
+
+00:01:05.159 --> 00:01:09.429 align:start position:0%
+
+very<00:01:06.159><c> hey</c><00:01:06.600><c> everyone</c><00:01:07.600><c> um</c><00:01:07.880><c> so</c><00:01:08.360><c> uh</c><00:01:08.560><c> every</c><00:01:08.799><c> year</c><00:01:09.040><c> NC</c>
+
+00:01:09.429 --> 00:01:09.439 align:start position:0%
+very hey everyone um so uh every year NC
+
+
+00:01:09.439 --> 00:01:10.830 align:start position:0%
+very hey everyone um so uh every year NC
+state<00:01:09.720><c> has</c><00:01:09.920><c> a</c><00:01:10.040><c> free</c><00:01:10.240><c> and</c><00:01:10.360><c> open</c><00:01:10.560><c> source</c>
+
+00:01:10.830 --> 00:01:10.840 align:start position:0%
+state has a free and open source
+
+
+00:01:10.840 --> 00:01:12.910 align:start position:0%
+state has a free and open source
+software<00:01:11.200><c> Fair</c><00:01:11.880><c> um</c><00:01:12.000><c> it's</c><00:01:12.119><c> an</c><00:01:12.240><c> unconference</c>
+
+00:01:12.910 --> 00:01:12.920 align:start position:0%
+software Fair um it's an unconference
+
+
+00:01:12.920 --> 00:01:15.469 align:start position:0%
+software Fair um it's an unconference
+style<00:01:13.200><c> event</c><00:01:13.520><c> so</c><00:01:14.080><c> uh</c><00:01:14.280><c> bar</c><00:01:14.600><c> camp</c><00:01:14.960><c> that</c><00:01:15.240><c> camp</c>
+
+00:01:15.469 --> 00:01:15.479 align:start position:0%
+style event so uh bar camp that camp
+
+
+00:01:15.479 --> 00:01:18.030 align:start position:0%
+style event so uh bar camp that camp
+food
+
+00:01:18.030 --> 00:01:18.040 align:start position:0%
+
+
+
+00:01:18.040 --> 00:01:20.270 align:start position:0%
+
+Camp<00:01:19.040><c> bar</c><00:01:19.280><c> camp</c><00:01:19.520><c> that</c><00:01:19.640><c> camp</c><00:01:19.880><c> boot</c><00:01:20.079><c> camp</c>
+
+00:01:20.270 --> 00:01:20.280 align:start position:0%
+Camp bar camp that camp boot camp
+
+
+00:01:20.280 --> 00:01:22.390 align:start position:0%
+Camp bar camp that camp boot camp
+unconference<00:01:21.000><c> so</c><00:01:21.320><c> you</c><00:01:21.520><c> come</c><00:01:21.680><c> in</c><00:01:21.880><c> you</c><00:01:22.079><c> pitch</c><00:01:22.280><c> a</c>
+
+00:01:22.390 --> 00:01:22.400 align:start position:0%
+unconference so you come in you pitch a
+
+
+00:01:22.400 --> 00:01:24.190 align:start position:0%
+unconference so you come in you pitch a
+talk<00:01:22.560><c> and</c><00:01:22.720><c> you</c><00:01:22.840><c> give</c><00:01:22.960><c> a</c><00:01:23.159><c> talk</c><00:01:23.840><c> um</c><00:01:24.040><c> it's</c><00:01:24.119><c> going</c>
+
+00:01:24.190 --> 00:01:24.200 align:start position:0%
+talk and you give a talk um it's going
+
+
+00:01:24.200 --> 00:01:26.149 align:start position:0%
+talk and you give a talk um it's going
+to<00:01:24.280><c> be</c><00:01:24.360><c> on</c><00:01:24.479><c> February</c><00:01:24.880><c> 9th</c><00:01:25.360><c> on</c><00:01:25.520><c> Saturday</c><00:01:25.960><c> over</c>
+
+00:01:26.149 --> 00:01:26.159 align:start position:0%
+to be on February 9th on Saturday over
+
+
+00:01:26.159 --> 00:01:28.510 align:start position:0%
+to be on February 9th on Saturday over
+at<00:01:26.320><c> NC</c><00:01:26.680><c> State</c><00:01:27.119><c> Engineering</c><00:01:27.479><c> Building</c><00:01:27.840><c> 2</c><00:01:28.400><c> which</c>
+
+00:01:28.510 --> 00:01:28.520 align:start position:0%
+at NC State Engineering Building 2 which
+
+
+00:01:28.520 --> 00:01:30.310 align:start position:0%
+at NC State Engineering Building 2 which
+is<00:01:28.720><c> right</c><00:01:28.880><c> across</c><00:01:29.079><c> the</c><00:01:29.159><c> street</c><00:01:29.400><c> from</c><00:01:29.560><c> here</c><00:01:30.159><c> um</c>
+
+00:01:30.310 --> 00:01:30.320 align:start position:0%
+is right across the street from here um
+
+
+00:01:30.320 --> 00:01:32.789 align:start position:0%
+is right across the street from here um
+so<00:01:30.479><c> if</c><00:01:30.560><c> you</c><00:01:30.640><c> want</c><00:01:30.759><c> to</c><00:01:30.920><c> go</c><00:01:31.159><c> just</c><00:01:31.680><c> Google</c><00:01:32.119><c> Nate</c>
+
+00:01:32.789 --> 00:01:32.799 align:start position:0%
+so if you want to go just Google Nate
+
+
+00:01:32.799 --> 00:01:38.469 align:start position:0%
+so if you want to go just Google Nate
+phosphere<00:01:33.280><c> and</c><00:01:33.399><c> you'll</c><00:01:33.799><c> find</c><00:01:34.000><c> the</c>
+
+00:01:38.469 --> 00:01:38.479 align:start position:0%
+
+
+
+00:01:38.479 --> 00:01:41.510 align:start position:0%
+
+information<00:01:39.479><c> two</c><00:01:39.720><c> weeks</c><00:01:40.000><c> from</c><00:01:40.280><c> today</c><00:01:41.159><c> I</c><00:01:41.240><c> will</c>
+
+00:01:41.510 --> 00:01:41.520 align:start position:0%
+information two weeks from today I will
+
+
+00:01:41.520 --> 00:01:44.109 align:start position:0%
+information two weeks from today I will
+be<00:01:41.880><c> presenting</c>
+
+00:01:44.109 --> 00:01:44.119 align:start position:0%
+be presenting
+
+
+00:01:44.119 --> 00:01:48.870 align:start position:0%
+be presenting
+a<00:01:45.119><c> a</c><00:01:45.360><c> review</c><00:01:45.759><c> of</c><00:01:46.680><c> an</c><00:01:46.880><c> edex</c><00:01:47.399><c> course</c><00:01:47.759><c> that</c><00:01:47.880><c> I</c><00:01:48.040><c> took</c>
+
+00:01:48.870 --> 00:01:48.880 align:start position:0%
+a a review of an edex course that I took
+
+
+00:01:48.880 --> 00:01:50.190 align:start position:0%
+a a review of an edex course that I took
+I'll<00:01:49.119><c> take</c>
+
+00:01:50.190 --> 00:01:50.200 align:start position:0%
+I'll take
+
+
+00:01:50.200 --> 00:01:54.429 align:start position:0%
+I'll take
+thanks<00:01:51.200><c> uh</c><00:01:51.560><c> on</c><00:01:52.159><c> AI</c><00:01:53.159><c> in</c><00:01:53.360><c> which</c><00:01:53.640><c> I</c><00:01:53.880><c> wrote</c><00:01:54.159><c> a</c>
+
+00:01:54.429 --> 00:01:54.439 align:start position:0%
+thanks uh on AI in which I wrote a
+
+
+00:01:54.439 --> 00:01:58.109 align:start position:0%
+thanks uh on AI in which I wrote a
+solver<00:01:54.840><c> for</c><00:01:55.159><c> Pac-Man</c><00:01:55.799><c> in</c><00:01:56.560><c> Python</c><00:01:57.560><c> um</c><00:01:57.840><c> so</c><00:01:58.000><c> if</c>
+
+00:01:58.109 --> 00:01:58.119 align:start position:0%
+solver for Pac-Man in Python um so if
+
+
+00:01:58.119 --> 00:02:00.190 align:start position:0%
+solver for Pac-Man in Python um so if
+you're<00:01:58.320><c> interested</c><00:01:58.680><c> in</c><00:01:58.920><c> that</c><00:01:59.079><c> it</c><00:01:59.159><c> will</c><00:01:59.280><c> be</c><00:01:59.399><c> a</c><00:01:59.520><c> b</c>
+
+00:02:00.190 --> 00:02:00.200 align:start position:0%
+you're interested in that it will be a b
+
+
+00:02:00.200 --> 00:02:01.749 align:start position:0%
+you're interested in that it will be a b
+Consulting
+
+00:02:01.749 --> 00:02:01.759 align:start position:0%
+Consulting
+
+
+00:02:01.759 --> 00:02:05.310 align:start position:0%
+Consulting
+Group<00:02:02.759><c> offices</c><00:02:03.360><c> in</c><00:02:03.759><c> carb</c><00:02:04.759><c> it's</c><00:02:04.920><c> two</c><00:02:05.079><c> weeks</c>
+
+00:02:05.310 --> 00:02:05.320 align:start position:0%
+Group offices in carb it's two weeks
+
+
+00:02:05.320 --> 00:02:11.510 align:start position:0%
+Group offices in carb it's two weeks
+from<00:02:05.479><c> today</c><00:02:06.439><c> on</c>
+
+00:02:11.510 --> 00:02:11.520 align:start position:0%
+
+
+
+00:02:11.520 --> 00:02:16.070 align:start position:0%
+
+trz<00:02:12.520><c> all</c><00:02:12.640><c> right</c>
+
+00:02:16.070 --> 00:02:16.080 align:start position:0%
+
+
+
+00:02:16.080 --> 00:02:18.990 align:start position:0%
+
+Ruth<00:02:17.080><c> stand</c><00:02:17.400><c> front</c><00:02:17.560><c> of</c><00:02:17.640><c> our</c><00:02:17.840><c> camera</c><00:02:18.760><c> hey</c>
+
+00:02:18.990 --> 00:02:19.000 align:start position:0%
+Ruth stand front of our camera hey
+
+
+00:02:19.000 --> 00:02:21.350 align:start position:0%
+Ruth stand front of our camera hey
+camera<00:02:20.000><c> uh</c><00:02:20.319><c> somebody</c><00:02:20.640><c> else</c><00:02:20.879><c> might</c><00:02:21.000><c> be</c><00:02:21.120><c> able</c><00:02:21.239><c> to</c>
+
+00:02:21.350 --> 00:02:21.360 align:start position:0%
+camera uh somebody else might be able to
+
+
+00:02:21.360 --> 00:02:23.990 align:start position:0%
+camera uh somebody else might be able to
+fill<00:02:21.519><c> in</c><00:02:21.680><c> better</c><00:02:21.879><c> detail</c><00:02:22.239><c> a</c><00:02:22.400><c> week</c><00:02:22.680><c> from</c><00:02:23.120><c> today</c>
+
+00:02:23.990 --> 00:02:24.000 align:start position:0%
+fill in better detail a week from today
+
+
+00:02:24.000 --> 00:02:26.670 align:start position:0%
+fill in better detail a week from today
+there<00:02:24.239><c> is</c><00:02:24.400><c> a</c><00:02:24.560><c> worldwide</c><00:02:25.000><c> Raspberry</c><00:02:25.440><c> Pi</c><00:02:25.680><c> Meetup</c>
+
+00:02:26.670 --> 00:02:26.680 align:start position:0%
+there is a worldwide Raspberry Pi Meetup
+
+
+00:02:26.680 --> 00:02:28.110 align:start position:0%
+there is a worldwide Raspberry Pi Meetup
+as<00:02:26.840><c> of</c><00:02:27.080><c> this</c><00:02:27.200><c> morning</c><00:02:27.519><c> there's</c><00:02:27.720><c> not</c><00:02:27.879><c> one</c>
+
+00:02:28.110 --> 00:02:28.120 align:start position:0%
+as of this morning there's not one
+
+
+00:02:28.120 --> 00:02:30.670 align:start position:0%
+as of this morning there's not one
+locally<00:02:28.519><c> listed</c><00:02:28.879><c> on</c><00:02:29.000><c> the</c><00:02:29.080><c> Meetup</c><00:02:29.480><c> site</c>
+
+00:02:30.670 --> 00:02:30.680 align:start position:0%
+locally listed on the Meetup site
+
+
+00:02:30.680 --> 00:02:34.229 align:start position:0%
+locally listed on the Meetup site
+we<00:02:30.800><c> can</c><00:02:31.040><c> fix</c><00:02:31.319><c> that</c><00:02:31.760><c> okay</c><00:02:32.519><c> so</c><00:02:33.000><c> uh</c><00:02:33.319><c> the</c><00:02:33.480><c> deal</c><00:02:33.800><c> is</c><00:02:34.200><c> I</c>
+
+00:02:34.229 --> 00:02:34.239 align:start position:0%
+we can fix that okay so uh the deal is I
+
+
+00:02:34.239 --> 00:02:35.589 align:start position:0%
+we can fix that okay so uh the deal is I
+was<00:02:34.360><c> waiting</c><00:02:34.560><c> for</c><00:02:34.640><c> somebody</c><00:02:34.840><c> to</c><00:02:34.920><c> be</c><00:02:35.040><c> like</c><00:02:35.239><c> no</c><00:02:35.480><c> I</c>
+
+00:02:35.589 --> 00:02:35.599 align:start position:0%
+was waiting for somebody to be like no I
+
+
+00:02:35.599 --> 00:02:36.710 align:start position:0%
+was waiting for somebody to be like no I
+just<00:02:35.760><c> I</c><00:02:35.800><c> was</c><00:02:35.920><c> going</c><00:02:36.000><c> to</c><00:02:36.080><c> do</c><00:02:36.200><c> it</c><00:02:36.280><c> tonight</c><00:02:36.560><c> I</c>
+
+00:02:36.710 --> 00:02:36.720 align:start position:0%
+just I was going to do it tonight I
+
+
+00:02:36.720 --> 00:02:39.390 align:start position:0%
+just I was going to do it tonight I
+swear<00:02:37.720><c> um</c><00:02:37.920><c> Make</c><00:02:38.200><c> magazine</c><00:02:38.599><c> is</c><00:02:38.760><c> sponsoring</c><00:02:39.200><c> it</c>
+
+00:02:39.390 --> 00:02:39.400 align:start position:0%
+swear um Make magazine is sponsoring it
+
+
+00:02:39.400 --> 00:02:41.030 align:start position:0%
+swear um Make magazine is sponsoring it
+and<00:02:39.519><c> Sean</c><00:02:39.840><c> Wallace</c><00:02:40.239><c> and</c><00:02:40.400><c> the</c><00:02:40.480><c> other</c><00:02:40.680><c> guy</c><00:02:40.879><c> his</c>
+
+00:02:41.030 --> 00:02:41.040 align:start position:0%
+and Sean Wallace and the other guy his
+
+
+00:02:41.040 --> 00:02:42.630 align:start position:0%
+and Sean Wallace and the other guy his
+name<00:02:41.239><c> I</c><00:02:41.319><c> forgot</c><00:02:41.800><c> who</c><00:02:42.120><c> are</c><00:02:42.280><c> writing</c><00:02:42.519><c> the</c>
+
+00:02:42.630 --> 00:02:42.640 align:start position:0%
+name I forgot who are writing the
+
+
+00:02:42.640 --> 00:02:45.270 align:start position:0%
+name I forgot who are writing the
+beginner<00:02:43.040><c> book</c><00:02:43.200><c> for</c><00:02:43.360><c> raspberry</c><00:02:43.760><c> pie</c><00:02:44.720><c> um</c><00:02:44.959><c> are</c>
+
+00:02:45.270 --> 00:02:45.280 align:start position:0%
+beginner book for raspberry pie um are
+
+
+00:02:45.280 --> 00:02:48.030 align:start position:0%
+beginner book for raspberry pie um are
+hosting<00:02:45.680><c> it</c><00:02:45.879><c> the</c><00:02:46.000><c> Google</c><00:02:46.280><c> Hangout</c><00:02:46.879><c> and</c><00:02:47.080><c> so</c><00:02:47.840><c> uh</c>
+
+00:02:48.030 --> 00:02:48.040 align:start position:0%
+hosting it the Google Hangout and so uh
+
+
+00:02:48.040 --> 00:02:49.869 align:start position:0%
+hosting it the Google Hangout and so uh
+you<00:02:48.200><c> get</c><00:02:48.400><c> together</c><00:02:48.680><c> meetup</c><00:02:49.000><c> group</c><00:02:49.319><c> and</c><00:02:49.519><c> the</c>
+
+00:02:49.869 --> 00:02:49.879 align:start position:0%
+you get together meetup group and the
+
+
+00:02:49.879 --> 00:02:52.229 align:start position:0%
+you get together meetup group and the
+top<00:02:50.319><c> three</c><00:02:50.800><c> I</c><00:02:50.920><c> think</c><00:02:51.200><c> with</c><00:02:51.480><c> attendance</c><00:02:52.040><c> wise</c>
+
+00:02:52.229 --> 00:02:52.239 align:start position:0%
+top three I think with attendance wise
+
+
+00:02:52.239 --> 00:02:54.550 align:start position:0%
+top three I think with attendance wise
+are<00:02:52.360><c> going</c><00:02:52.480><c> to</c><00:02:52.560><c> get</c><00:02:52.640><c> $200</c><00:02:53.280><c> for</c><00:02:53.480><c> food</c><00:02:54.280><c> which</c><00:02:54.400><c> is</c>
+
+00:02:54.550 --> 00:02:54.560 align:start position:0%
+are going to get $200 for food which is
+
+
+00:02:54.560 --> 00:02:57.630 align:start position:0%
+are going to get $200 for food which is
+awesome<00:02:55.000><c> because</c><00:02:55.159><c> you</c><00:02:55.319><c> know</c><00:02:56.040><c> food</c><00:02:57.040><c> um</c><00:02:57.319><c> so</c><00:02:57.519><c> if</c>
+
+00:02:57.630 --> 00:02:57.640 align:start position:0%
+awesome because you know food um so if
+
+
+00:02:57.640 --> 00:02:59.030 align:start position:0%
+awesome because you know food um so if
+somebody<00:02:57.879><c> wants</c><00:02:58.080><c> to</c><00:02:58.200><c> organize</c><00:02:58.640><c> that</c><00:02:58.840><c> making</c>
+
+00:02:59.030 --> 00:02:59.040 align:start position:0%
+somebody wants to organize that making
+
+
+00:02:59.040 --> 00:03:02.830 align:start position:0%
+somebody wants to organize that making
+it<00:02:59.200><c> happen</c><00:02:59.400><c> I'll</c><00:02:59.519><c> be</c><00:02:59.640><c> in</c><00:02:59.879><c> Kansas</c><00:03:00.200><c> so</c><00:03:00.319><c> it's</c><00:03:00.480><c> not</c>
+
+00:03:02.830 --> 00:03:02.840 align:start position:0%
+
+
+
+00:03:02.840 --> 00:03:05.149 align:start position:0%
+
+me<00:03:03.840><c> would</c><00:03:03.920><c> you</c><00:03:04.080><c> be</c><00:03:04.200><c> interested</c><00:03:04.799><c> oh</c><00:03:04.959><c> and</c>
+
+00:03:05.149 --> 00:03:05.159 align:start position:0%
+me would you be interested oh and
+
+
+00:03:05.159 --> 00:03:07.229 align:start position:0%
+me would you be interested oh and
+everybody<00:03:05.720><c> who</c><00:03:06.040><c> attends</c><00:03:06.519><c> gets</c><00:03:06.680><c> a</c><00:03:06.840><c> PDF</c>
+
+00:03:07.229 --> 00:03:07.239 align:start position:0%
+everybody who attends gets a PDF
+
+
+00:03:07.239 --> 00:03:08.630 align:start position:0%
+everybody who attends gets a PDF
+download<00:03:07.640><c> of</c><00:03:07.799><c> the</c><00:03:07.920><c> next</c><00:03:08.080><c> issue</c><00:03:08.360><c> of</c><00:03:08.440><c> Make</c>
+
+00:03:08.630 --> 00:03:08.640 align:start position:0%
+download of the next issue of Make
+
+
+00:03:08.640 --> 00:03:12.789 align:start position:0%
+download of the next issue of Make
+magazine<00:03:09.040><c> which</c><00:03:09.120><c> is</c><00:03:09.200><c> all</c><00:03:09.319><c> about</c><00:03:09.480><c> the</c>
+
+00:03:12.789 --> 00:03:12.799 align:start position:0%
+
+
+
+00:03:12.799 --> 00:03:15.270 align:start position:0%
+
+P<00:03:13.799><c> the</c><00:03:14.080><c> North</c><00:03:14.360><c> Carolina</c><00:03:14.840><c> system</c>
+
+00:03:15.270 --> 00:03:15.280 align:start position:0%
+P the North Carolina system
+
+
+00:03:15.280 --> 00:03:17.470 align:start position:0%
+P the North Carolina system
+administrative<00:03:15.879><c> group</c><00:03:16.440><c> has</c><00:03:16.640><c> a</c><00:03:16.799><c> meeting</c><00:03:17.200><c> on</c>
+
+00:03:17.470 --> 00:03:17.480 align:start position:0%
+administrative group has a meeting on
+
+
+00:03:17.480 --> 00:03:33.149 align:start position:0%
+administrative group has a meeting on
+Monday<00:03:18.159><c> the</c><00:03:18.360><c> 14th</c><00:03:19.519><c> Monday</c><00:03:20.519><c> on</c>
+
+00:03:33.149 --> 00:03:33.159 align:start position:0%
+
+
+
+00:03:33.159 --> 00:03:36.149 align:start position:0%
+
+for<00:03:33.400><c> dessert</c><00:03:34.120><c> uh</c><00:03:34.280><c> we</c><00:03:34.560><c> have</c><00:03:35.560><c> cheesecake</c>
+
+00:03:36.149 --> 00:03:36.159 align:start position:0%
+for dessert uh we have cheesecake
+
+
+00:03:36.159 --> 00:03:38.789 align:start position:0%
+for dessert uh we have cheesecake
+raspberry<00:03:36.640><c> pies</c><00:03:36.959><c> and</c><00:03:37.120><c> my</c><00:03:37.280><c> wife</c><00:03:37.480><c> made</c><00:03:38.360><c> be</c><00:03:38.560><c> out</c>
+
+00:03:38.789 --> 00:03:38.799 align:start position:0%
+raspberry pies and my wife made be out
+
+
+00:03:38.799 --> 00:03:42.190 align:start position:0%
+raspberry pies and my wife made be out
+about<00:03:39.040><c> five</c><00:03:39.319><c> minutes</c><00:03:40.280><c> pretty</c><00:03:40.640><c> good</c>
+
+00:03:42.190 --> 00:03:42.200 align:start position:0%
+about five minutes pretty good
+
+
+00:03:42.200 --> 00:03:46.470 align:start position:0%
+about five minutes pretty good
+[Applause]
+
+00:03:46.470 --> 00:03:46.480 align:start position:0%
+[Applause]
+
+
+00:03:46.480 --> 00:03:50.670 align:start position:0%
+[Applause]
+so<00:03:47.480><c> so</c><00:03:48.000><c> um</c><00:03:48.519><c> who</c><00:03:48.680><c> in</c><00:03:48.840><c> the</c><00:03:49.080><c> audience</c><00:03:50.080><c> develops</c>
+
+00:03:50.670 --> 00:03:50.680 align:start position:0%
+so so um who in the audience develops
+
+
+00:03:50.680 --> 00:03:52.390 align:start position:0%
+so so um who in the audience develops
+games<00:03:51.080><c> would</c><00:03:51.280><c> like</c><00:03:51.439><c> to</c><00:03:51.640><c> develop</c><00:03:52.040><c> games</c><00:03:52.280><c> or</c>
+
+00:03:52.390 --> 00:03:52.400 align:start position:0%
+games would like to develop games or
+
+
+00:03:52.400 --> 00:03:55.350 align:start position:0%
+games would like to develop games or
+would<00:03:52.519><c> like</c><00:03:52.640><c> to</c><00:03:52.799><c> hang</c><00:03:52.959><c> out</c><00:03:53.120><c> with</c><00:03:53.319><c> people</c>
+
+00:03:55.350 --> 00:03:55.360 align:start position:0%
+would like to hang out with people
+
+
+00:03:55.360 --> 00:03:59.229 align:start position:0%
+would like to hang out with people
+developing<00:03:56.360><c> okay</c><00:03:56.640><c> so</c><00:03:57.280><c> um</c><00:03:57.959><c> NC</c><00:03:58.439><c> State</c><00:03:58.799><c> is</c><00:03:59.079><c> going</c>
+
+00:03:59.229 --> 00:03:59.239 align:start position:0%
+developing okay so um NC State is going
+
+
+00:03:59.239 --> 00:04:02.270 align:start position:0%
+developing okay so um NC State is going
+to<00:03:59.439><c> be</c><00:03:59.840><c> hosting</c><00:04:00.239><c> our</c><00:04:00.599><c> local</c><00:04:01.319><c> uh</c><00:04:01.519><c> chapter</c><00:04:02.079><c> of</c>
+
+00:04:02.270 --> 00:04:02.280 align:start position:0%
+to be hosting our local uh chapter of
+
+
+00:04:02.280 --> 00:04:04.589 align:start position:0%
+to be hosting our local uh chapter of
+the<00:04:02.439><c> global</c><00:04:02.879><c> game</c><00:04:03.120><c> Jam</c><00:04:03.640><c> which</c><00:04:03.840><c> happens</c><00:04:04.200><c> around</c>
+
+00:04:04.589 --> 00:04:04.599 align:start position:0%
+the global game Jam which happens around
+
+
+00:04:04.599 --> 00:04:07.190 align:start position:0%
+the global game Jam which happens around
+this<00:04:04.799><c> time</c><00:04:05.120><c> every</c><00:04:05.400><c> year</c><00:04:06.120><c> and</c><00:04:06.319><c> it</c><00:04:06.439><c> is</c><00:04:06.720><c> going</c><00:04:06.959><c> to</c>
+
+00:04:07.190 --> 00:04:07.200 align:start position:0%
+this time every year and it is going to
+
+
+00:04:07.200 --> 00:04:11.110 align:start position:0%
+this time every year and it is going to
+be<00:04:07.560><c> on</c><00:04:08.040><c> the</c><00:04:08.280><c> weekend</c><00:04:09.000><c> of</c><00:04:09.400><c> January</c><00:04:09.920><c> 25th</c><00:04:10.560><c> 26th</c>
+
+00:04:11.110 --> 00:04:11.120 align:start position:0%
+be on the weekend of January 25th 26th
+
+
+00:04:11.120 --> 00:04:14.030 align:start position:0%
+be on the weekend of January 25th 26th
+and<00:04:11.519><c> 27th</c><00:04:12.519><c> so</c><00:04:12.760><c> that's</c><00:04:13.000><c> starting</c><00:04:13.560><c> on</c><00:04:13.840><c> the</c>
+
+00:04:14.030 --> 00:04:14.040 align:start position:0%
+and 27th so that's starting on the
+
+
+00:04:14.040 --> 00:04:17.430 align:start position:0%
+and 27th so that's starting on the
+evening<00:04:14.400><c> of</c><00:04:14.599><c> Friday</c><00:04:15.079><c> January</c><00:04:15.759><c> 25th</c><00:04:16.759><c> um</c><00:04:17.239><c> I've</c>
+
+00:04:17.430 --> 00:04:17.440 align:start position:0%
+evening of Friday January 25th um I've
+
+
+00:04:17.440 --> 00:04:18.830 align:start position:0%
+evening of Friday January 25th um I've
+been<00:04:17.680><c> promised</c><00:04:18.120><c> that</c><00:04:18.239><c> I</c><00:04:18.320><c> will</c><00:04:18.519><c> get</c><00:04:18.639><c> a</c>
+
+00:04:18.830 --> 00:04:18.840 align:start position:0%
+been promised that I will get a
+
+
+00:04:18.840 --> 00:04:20.710 align:start position:0%
+been promised that I will get a
+promotional<00:04:19.400><c> email</c><00:04:19.799><c> about</c><00:04:20.120><c> this</c><00:04:20.320><c> that</c><00:04:20.440><c> I</c><00:04:20.560><c> can</c>
+
+00:04:20.710 --> 00:04:20.720 align:start position:0%
+promotional email about this that I can
+
+
+00:04:20.720 --> 00:04:23.390 align:start position:0%
+promotional email about this that I can
+send<00:04:20.959><c> to</c><00:04:21.120><c> the</c><00:04:21.239><c> trilog</c><00:04:21.680><c> mailing</c><00:04:22.079><c> list</c><00:04:22.919><c> so</c><00:04:23.280><c> if</c>
+
+00:04:23.390 --> 00:04:23.400 align:start position:0%
+send to the trilog mailing list so if
+
+
+00:04:23.400 --> 00:04:25.110 align:start position:0%
+send to the trilog mailing list so if
+you're<00:04:23.600><c> not</c><00:04:24.000><c> already</c><00:04:24.440><c> subscribed</c><00:04:24.880><c> to</c><00:04:25.000><c> the</c>
+
+00:04:25.110 --> 00:04:25.120 align:start position:0%
+you're not already subscribed to the
+
+
+00:04:25.120 --> 00:04:27.469 align:start position:0%
+you're not already subscribed to the
+trial<00:04:25.400><c> of</c><00:04:25.520><c> mailing</c><00:04:25.919><c> list</c><00:04:26.360><c> subscribe</c><00:04:27.199><c> and</c><00:04:27.320><c> I'll</c>
+
+00:04:27.469 --> 00:04:27.479 align:start position:0%
+trial of mailing list subscribe and I'll
+
+
+00:04:27.479 --> 00:04:29.189 align:start position:0%
+trial of mailing list subscribe and I'll
+forward<00:04:27.880><c> that</c><00:04:28.040><c> email</c><00:04:28.360><c> when</c><00:04:28.440><c> it</c><00:04:28.600><c> comes</c><00:04:28.919><c> in</c><00:04:29.039><c> the</c>
+
+00:04:29.189 --> 00:04:29.199 align:start position:0%
+forward that email when it comes in the
+
+
+00:04:29.199 --> 00:04:30.270 align:start position:0%
+forward that email when it comes in the
+meantime
+
+00:04:30.270 --> 00:04:30.280 align:start position:0%
+meantime
+
+
+00:04:30.280 --> 00:04:32.629 align:start position:0%
+meantime
+Google<00:04:30.759><c> Global</c><00:04:31.160><c> game</c><00:04:31.440><c> jam</c><00:04:32.039><c> and</c><00:04:32.199><c> look</c><00:04:32.360><c> for</c><00:04:32.520><c> the</c>
+
+00:04:32.629 --> 00:04:32.639 align:start position:0%
+Google Global game jam and look for the
+
+
+00:04:32.639 --> 00:04:35.189 align:start position:0%
+Google Global game jam and look for the
+local<00:04:32.919><c> Raleigh</c><00:04:33.320><c> version</c><00:04:34.240><c> um</c><00:04:34.680><c> you</c><00:04:34.800><c> don't</c><00:04:35.080><c> have</c>
+
+00:04:35.189 --> 00:04:35.199 align:start position:0%
+local Raleigh version um you don't have
+
+
+00:04:35.199 --> 00:04:37.710 align:start position:0%
+local Raleigh version um you don't have
+to<00:04:35.360><c> be</c><00:04:35.479><c> a</c><00:04:35.639><c> developer</c><00:04:36.320><c> I</c><00:04:36.520><c> imagine</c><00:04:37.160><c> that</c><00:04:37.360><c> if</c><00:04:37.479><c> you</c>
+
+00:04:37.710 --> 00:04:37.720 align:start position:0%
+to be a developer I imagine that if you
+
+
+00:04:37.720 --> 00:04:39.710 align:start position:0%
+to be a developer I imagine that if you
+have<00:04:37.919><c> systems</c><00:04:38.400><c> Administration</c><00:04:39.120><c> skills</c><00:04:39.520><c> can</c>
+
+00:04:39.710 --> 00:04:39.720 align:start position:0%
+have systems Administration skills can
+
+
+00:04:39.720 --> 00:04:41.950 align:start position:0%
+have systems Administration skills can
+help<00:04:39.960><c> people</c><00:04:40.240><c> post</c><00:04:40.520><c> a</c><00:04:40.720><c> game</c><00:04:41.039><c> particularly</c><00:04:41.720><c> web</c>
+
+00:04:41.950 --> 00:04:41.960 align:start position:0%
+help people post a game particularly web
+
+
+00:04:41.960 --> 00:04:44.590 align:start position:0%
+help people post a game particularly web
+application<00:04:42.560><c> style</c><00:04:42.919><c> games</c><00:04:43.639><c> you</c><00:04:43.720><c> will</c><00:04:43.919><c> be</c><00:04:44.280><c> very</c>
+
+00:04:44.590 --> 00:04:44.600 align:start position:0%
+application style games you will be very
+
+
+00:04:44.600 --> 00:04:47.150 align:start position:0%
+application style games you will be very
+appreciated<00:04:45.320><c> so</c><00:04:45.800><c> developers</c><00:04:46.320><c> can</c><00:04:46.560><c> focus</c><00:04:46.880><c> on</c>
+
+00:04:47.150 --> 00:04:47.160 align:start position:0%
+appreciated so developers can focus on
+
+
+00:04:47.160 --> 00:04:49.749 align:start position:0%
+appreciated so developers can focus on
+that<00:04:47.639><c> if</c><00:04:47.720><c> you</c><00:04:47.880><c> can</c><00:04:48.120><c> write</c><00:04:48.400><c> code</c><00:04:48.800><c> great</c><00:04:49.520><c> and</c><00:04:49.680><c> if</c>
+
+00:04:49.749 --> 00:04:49.759 align:start position:0%
+that if you can write code great and if
+
+
+00:04:49.759 --> 00:04:51.790 align:start position:0%
+that if you can write code great and if
+you<00:04:49.880><c> can</c><00:04:50.080><c> design</c><00:04:50.560><c> if</c><00:04:50.639><c> you</c><00:04:50.880><c> have</c><00:04:51.080><c> any</c><00:04:51.360><c> aesthetic</c>
+
+00:04:51.790 --> 00:04:51.800 align:start position:0%
+you can design if you have any aesthetic
+
+
+00:04:51.800 --> 00:04:55.629 align:start position:0%
+you can design if you have any aesthetic
+or<00:04:52.000><c> artistic</c><00:04:52.759><c> talent</c><00:04:53.440><c> that's</c><00:04:53.680><c> also</c><00:04:54.000><c> useful</c>
+
+00:04:55.629 --> 00:04:55.639 align:start position:0%
+or artistic talent that's also useful
+
+
+00:04:55.639 --> 00:04:57.830 align:start position:0%
+or artistic talent that's also useful
+too<00:04:56.639><c> any</c><00:04:56.880><c> additional</c><00:04:57.360><c> Community</c>
+
+00:04:57.830 --> 00:04:57.840 align:start position:0%
+too any additional Community
+
+
+00:04:57.840 --> 00:04:59.909 align:start position:0%
+too any additional Community
+announcements
+
+00:04:59.909 --> 00:04:59.919 align:start position:0%
+announcements
+
+
+00:04:59.919 --> 00:05:01.870 align:start position:0%
+announcements
+okay<00:05:00.120><c> now</c><00:05:00.280><c> we</c><00:05:00.400><c> move</c><00:05:00.639><c> on</c><00:05:00.800><c> to</c><00:05:01.000><c> the</c><00:05:01.199><c> have</c><00:05:01.360><c> a</c><00:05:01.560><c> job</c>
+
+00:05:01.870 --> 00:05:01.880 align:start position:0%
+okay now we move on to the have a job
+
+
+00:05:01.880 --> 00:05:04.590 align:start position:0%
+okay now we move on to the have a job
+need<00:05:02.120><c> a</c><00:05:02.800><c> job</c>
+
+00:05:04.590 --> 00:05:04.600 align:start position:0%
+need a job
+
+
+00:05:04.600 --> 00:05:07.270 align:start position:0%
+need a job
+Anns
+
+00:05:07.270 --> 00:05:07.280 align:start position:0%
+Anns
+
+
+00:05:07.280 --> 00:05:11.469 align:start position:0%
+Anns
+list<00:05:08.280><c> yeah</c><00:05:09.120><c> absolutely</c><00:05:10.120><c> so</c><00:05:10.759><c> those</c><00:05:10.919><c> of</c><00:05:11.080><c> you</c><00:05:11.240><c> who</c>
+
+00:05:11.469 --> 00:05:11.479 align:start position:0%
+list yeah absolutely so those of you who
+
+
+00:05:11.479 --> 00:05:13.469 align:start position:0%
+list yeah absolutely so those of you who
+announc<00:05:11.960><c> something</c><00:05:12.479><c> that</c><00:05:12.680><c> you</c><00:05:12.840><c> would</c><00:05:13.039><c> like</c><00:05:13.199><c> to</c>
+
+00:05:13.469 --> 00:05:13.479 align:start position:0%
+announc something that you would like to
+
+
+00:05:13.479 --> 00:05:15.469 align:start position:0%
+announc something that you would like to
+make<00:05:13.639><c> sure</c><00:05:14.080><c> everyone</c><00:05:14.440><c> else</c><00:05:14.720><c> actually</c><00:05:15.039><c> attends</c>
+
+00:05:15.469 --> 00:05:15.479 align:start position:0%
+make sure everyone else actually attends
+
+
+00:05:15.479 --> 00:05:17.029 align:start position:0%
+make sure everyone else actually attends
+please<00:05:15.720><c> forward</c><00:05:16.120><c> to</c><00:05:16.320><c> the</c>
+
+00:05:17.029 --> 00:05:17.039 align:start position:0%
+please forward to the
+
+
+00:05:17.039 --> 00:05:20.950 align:start position:0%
+please forward to the
+trog<00:05:18.039><c> um</c><00:05:18.280><c> trog</c><00:05:19.039><c> tr.</c><00:05:19.840><c> org</c><00:05:20.440><c> you</c><00:05:20.560><c> got</c><00:05:20.680><c> to</c><00:05:20.800><c> be</c>
+
+00:05:20.950 --> 00:05:20.960 align:start position:0%
+trog um trog tr. org you got to be
+
+
+00:05:20.960 --> 00:05:23.070 align:start position:0%
+trog um trog tr. org you got to be
+subscribed<00:05:21.520><c> first</c><00:05:21.759><c> so</c><00:05:21.960><c> go</c><00:05:22.080><c> to</c><00:05:22.199><c> tr</c><00:05:22.400><c> log.org</c><00:05:22.880><c> and</c>
+
+00:05:23.070 --> 00:05:23.080 align:start position:0%
+subscribed first so go to tr log.org and
+
+
+00:05:23.080 --> 00:05:25.550 align:start position:0%
+subscribed first so go to tr log.org and
+there<00:05:23.160><c> are</c><00:05:23.360><c> instructions</c><00:05:24.080><c> there</c><00:05:24.919><c> all</c><00:05:25.039><c> right</c>
+
+00:05:25.550 --> 00:05:25.560 align:start position:0%
+there are instructions there all right
+
+
+00:05:25.560 --> 00:05:27.510 align:start position:0%
+there are instructions there all right
+Last<00:05:25.800><c> Call</c><00:05:26.039><c> on</c><00:05:26.319><c> community</c>
+
+00:05:27.510 --> 00:05:27.520 align:start position:0%
+Last Call on community
+
+
+00:05:27.520 --> 00:05:29.790 align:start position:0%
+Last Call on community
+announcements<00:05:28.520><c> have</c><00:05:28.680><c> a</c><00:05:28.880><c> job</c><00:05:29.120><c> need</c><00:05:29.319><c> a</c><00:05:29.440><c> job</c>
+
+00:05:29.790 --> 00:05:29.800 align:start position:0%
+announcements have a job need a job
+
+
+00:05:29.800 --> 00:05:32.029 align:start position:0%
+announcements have a job need a job
+we're<00:05:29.960><c> going</c><00:05:30.039><c> to</c><00:05:30.199><c> start</c><00:05:30.479><c> with</c><00:05:30.680><c> have</c><00:05:30.840><c> a</c><00:05:31.039><c> job</c><00:05:31.880><c> if</c>
+
+00:05:32.029 --> 00:05:32.039 align:start position:0%
+we're going to start with have a job if
+
+
+00:05:32.039 --> 00:05:34.270 align:start position:0%
+we're going to start with have a job if
+you<00:05:32.440><c> know</c><00:05:32.680><c> of</c><00:05:32.840><c> an</c><00:05:33.000><c> opening</c><00:05:33.360><c> for</c><00:05:33.560><c> a</c><00:05:33.759><c> position</c>
+
+00:05:34.270 --> 00:05:34.280 align:start position:0%
+you know of an opening for a position
+
+
+00:05:34.280 --> 00:05:35.950 align:start position:0%
+you know of an opening for a position
+particularly<00:05:34.759><c> if</c><00:05:34.880><c> it's</c><00:05:35.000><c> at</c><00:05:35.160><c> your</c><00:05:35.280><c> own</c><00:05:35.520><c> company</c>
+
+00:05:35.950 --> 00:05:35.960 align:start position:0%
+particularly if it's at your own company
+
+
+00:05:35.960 --> 00:05:43.350 align:start position:0%
+particularly if it's at your own company
+you<00:05:36.080><c> can</c><00:05:36.280><c> describe</c><00:05:36.680><c> it</c><00:05:37.560><c> please</c><00:05:38.560><c> come</c><00:05:38.720><c> on</c>
+
+00:05:43.350 --> 00:05:43.360 align:start position:0%
+
+
+
+00:05:43.360 --> 00:05:46.550 align:start position:0%
+
+Scott<00:05:44.360><c> everybody</c><00:05:45.000><c> um</c><00:05:45.240><c> my</c><00:05:45.360><c> name</c><00:05:45.479><c> is</c><00:05:45.680><c> Scott</c><00:05:46.440><c> and</c>
+
+00:05:46.550 --> 00:05:46.560 align:start position:0%
+Scott everybody um my name is Scott and
+
+
+00:05:46.560 --> 00:05:49.510 align:start position:0%
+Scott everybody um my name is Scott and
+I<00:05:46.720><c> work</c><00:05:47.039><c> for</c><00:05:47.880><c> a</c><00:05:48.120><c> company</c><00:05:48.440><c> called</c><00:05:48.600><c> Jew</c><00:05:48.919><c> buug</c><00:05:49.319><c> we</c>
+
+00:05:49.510 --> 00:05:49.520 align:start position:0%
+I work for a company called Jew buug we
+
+
+00:05:49.520 --> 00:05:52.070 align:start position:0%
+I work for a company called Jew buug we
+made<00:05:49.960><c> a</c><00:05:50.199><c> iPhone</c><00:05:50.600><c> app</c><00:05:50.919><c> about</c><00:05:51.600><c> sustainable</c>
+
+00:05:52.070 --> 00:05:52.080 align:start position:0%
+made a iPhone app about sustainable
+
+
+00:05:52.080 --> 00:05:54.909 align:start position:0%
+made a iPhone app about sustainable
+behaviors<00:05:52.520><c> and</c><00:05:52.720><c> sustainable</c><00:05:53.440><c> living</c><00:05:54.440><c> um</c>
+
+00:05:54.909 --> 00:05:54.919 align:start position:0%
+behaviors and sustainable living um
+
+
+00:05:54.919 --> 00:05:56.749 align:start position:0%
+behaviors and sustainable living um
+we're<00:05:55.360><c> currently</c><00:05:55.720><c> in</c><00:05:55.800><c> a</c><00:05:55.960><c> buildout</c><00:05:56.479><c> phase</c>
+
+00:05:56.749 --> 00:05:56.759 align:start position:0%
+we're currently in a buildout phase
+
+
+00:05:56.759 --> 00:05:59.270 align:start position:0%
+we're currently in a buildout phase
+we're<00:05:56.919><c> getting</c><00:05:57.160><c> ready</c><00:05:57.520><c> to</c><00:05:58.520><c> develop</c><00:05:59.039><c> our</c>
+
+00:05:59.270 --> 00:05:59.280 align:start position:0%
+we're getting ready to develop our
+
+
+00:05:59.280 --> 00:06:00.710 align:start position:0%
+we're getting ready to develop our
+Android<00:05:59.840><c> version</c><00:06:00.000><c> of</c><00:06:00.120><c> the</c><00:06:00.240><c> app</c><00:06:00.440><c> with</c><00:06:00.560><c> an</c>
+
+00:06:00.710 --> 00:06:00.720 align:start position:0%
+Android version of the app with an
+
+
+00:06:00.720 --> 00:06:04.270 align:start position:0%
+Android version of the app with an
+iPhone<00:06:01.039><c> only</c><00:06:01.919><c> um</c><00:06:02.520><c> and</c><00:06:03.240><c> we</c><00:06:03.400><c> use</c><00:06:03.560><c> a</c><00:06:03.759><c> lot</c><00:06:03.880><c> of</c><00:06:04.160><c> kind</c>
+
+00:06:04.270 --> 00:06:04.280 align:start position:0%
+iPhone only um and we use a lot of kind
+
+
+00:06:04.280 --> 00:06:08.390 align:start position:0%
+iPhone only um and we use a lot of kind
+of<00:06:04.520><c> cool</c><00:06:04.960><c> Technologies</c><00:06:05.759><c> we</c><00:06:06.280><c> building</c><00:06:06.680><c> on</c><00:06:07.400><c> uh</c>
+
+00:06:08.390 --> 00:06:08.400 align:start position:0%
+of cool Technologies we building on uh
+
+
+00:06:08.400 --> 00:06:11.870 align:start position:0%
+of cool Technologies we building on uh
+got<00:06:08.520><c> our</c><00:06:09.319><c> services</c><00:06:09.800><c> hosted</c><00:06:10.120><c> at</c><00:06:10.720><c> Amazon</c><00:06:11.720><c> the</c>
+
+00:06:11.870 --> 00:06:11.880 align:start position:0%
+got our services hosted at Amazon the
+
+
+00:06:11.880 --> 00:06:15.670 align:start position:0%
+got our services hosted at Amazon the
+Amazon<00:06:12.520><c> web</c><00:06:12.720><c> services</c><00:06:13.280><c> Cloud</c><00:06:14.280><c> U</c><00:06:14.520><c> we're</c><00:06:15.240><c> using</c>
+
+00:06:15.670 --> 00:06:15.680 align:start position:0%
+Amazon web services Cloud U we're using
+
+
+00:06:15.680 --> 00:06:17.749 align:start position:0%
+Amazon web services Cloud U we're using
+mongod<00:06:16.039><c> DV</c><00:06:16.360><c> for</c><00:06:16.479><c> our</c><00:06:16.639><c> database</c><00:06:17.120><c> back</c><00:06:17.319><c> end</c>
+
+00:06:17.749 --> 00:06:17.759 align:start position:0%
+mongod DV for our database back end
+
+
+00:06:17.759 --> 00:06:19.909 align:start position:0%
+mongod DV for our database back end
+doing<00:06:17.960><c> a</c><00:06:18.080><c> lot</c><00:06:18.199><c> of</c><00:06:18.400><c> work</c><00:06:19.080><c> in</c><00:06:19.199><c> a</c><00:06:19.319><c> new</c><00:06:19.560><c> language</c>
+
+00:06:19.909 --> 00:06:19.919 align:start position:0%
+doing a lot of work in a new language
+
+
+00:06:19.919 --> 00:06:23.309 align:start position:0%
+doing a lot of work in a new language
+called<00:06:20.160><c> Scala</c><00:06:20.800><c> which</c><00:06:21.440><c> is</c><00:06:22.039><c> really</c><00:06:23.039><c> pretty</c>
+
+00:06:23.309 --> 00:06:23.319 align:start position:0%
+called Scala which is really pretty
+
+
+00:06:23.319 --> 00:06:25.270 align:start position:0%
+called Scala which is really pretty
+fascinating<00:06:23.840><c> when</c><00:06:24.000><c> you</c><00:06:24.319><c> look</c><00:06:24.479><c> at</c><00:06:24.639><c> it</c><00:06:25.039><c> uh</c><00:06:25.160><c> we</c>
+
+00:06:25.270 --> 00:06:25.280 align:start position:0%
+fascinating when you look at it uh we
+
+
+00:06:25.280 --> 00:06:28.070 align:start position:0%
+fascinating when you look at it uh we
+are<00:06:25.440><c> looking</c><00:06:25.840><c> to</c><00:06:26.599><c> know</c><00:06:26.880><c> possibly</c><00:06:27.319><c> expand</c><00:06:27.840><c> so</c>
+
+00:06:28.070 --> 00:06:28.080 align:start position:0%
+are looking to know possibly expand so
+
+
+00:06:28.080 --> 00:06:30.150 align:start position:0%
+are looking to know possibly expand so
+we're<00:06:28.479><c> trying</c><00:06:28.680><c> to</c><00:06:28.840><c> find</c><00:06:29.000><c> some</c><00:06:29.160><c> people</c><00:06:30.000><c> might</c>
+
+00:06:30.150 --> 00:06:30.160 align:start position:0%
+we're trying to find some people might
+
+
+00:06:30.160 --> 00:06:32.950 align:start position:0%
+we're trying to find some people might
+be<00:06:30.319><c> interested</c><00:06:30.759><c> in</c><00:06:30.960><c> that</c><00:06:31.160><c> if</c><00:06:31.319><c> you</c><00:06:31.880><c> have</c><00:06:32.199><c> some</c>
+
+00:06:32.950 --> 00:06:32.960 align:start position:0%
+be interested in that if you have some
+
+
+00:06:32.960 --> 00:06:35.629 align:start position:0%
+be interested in that if you have some
+real<00:06:33.319><c> skills</c><00:06:33.919><c> with</c><00:06:34.240><c> either</c><00:06:34.919><c> something</c><00:06:35.199><c> like</c>
+
+00:06:35.629 --> 00:06:35.639 align:start position:0%
+real skills with either something like
+
+
+00:06:35.639 --> 00:06:40.510 align:start position:0%
+real skills with either something like
+longb<00:06:36.639><c> or</c><00:06:37.639><c> Scola</c><00:06:38.520><c> or</c><00:06:39.199><c> experience</c><00:06:39.720><c> the</c><00:06:39.840><c> Android</c>
+
+00:06:40.510 --> 00:06:40.520 align:start position:0%
+longb or Scola or experience the Android
+
+
+00:06:40.520 --> 00:06:44.070 align:start position:0%
+longb or Scola or experience the Android
+platform<00:06:41.520><c> Uh</c><00:06:41.759><c> current</c><00:06:42.319><c> HTML</c><00:06:43.000><c> 5</c><00:06:43.240><c> css3</c>
+
+00:06:44.070 --> 00:06:44.080 align:start position:0%
+platform Uh current HTML 5 css3
+
+
+00:06:44.080 --> 00:06:46.510 align:start position:0%
+platform Uh current HTML 5 css3
+JavaScript<00:06:44.759><c> skills</c><00:06:45.759><c> we'd</c><00:06:45.919><c> be</c><00:06:46.039><c> interested</c><00:06:46.360><c> to</c>
+
+00:06:46.510 --> 00:06:46.520 align:start position:0%
+JavaScript skills we'd be interested to
+
+
+00:06:46.520 --> 00:06:49.870 align:start position:0%
+JavaScript skills we'd be interested to
+talk<00:06:46.680><c> to</c><00:06:46.800><c> you</c><00:06:47.039><c> so</c><00:06:47.280><c> I</c><00:06:47.440><c> guess</c><00:06:48.400><c> come</c><00:06:49.400><c> come</c><00:06:49.560><c> see</c><00:06:49.800><c> me</c>
+
+00:06:49.870 --> 00:06:49.880 align:start position:0%
+talk to you so I guess come come see me
+
+
+00:06:49.880 --> 00:06:50.909 align:start position:0%
+talk to you so I guess come come see me
+and<00:06:50.000><c> I</c><00:06:50.080><c> can</c><00:06:50.199><c> give</c><00:06:50.280><c> you</c><00:06:50.360><c> some</c><00:06:50.560><c> contact</c>
+
+00:06:50.909 --> 00:06:50.919 align:start position:0%
+and I can give you some contact
+
+
+00:06:50.919 --> 00:06:52.990 align:start position:0%
+and I can give you some contact
+information<00:06:51.919><c> bre</c><00:06:52.160><c> is</c><00:06:52.280><c> that</c><00:06:52.479><c> right</c><00:06:52.759><c> you'll</c>
+
+00:06:52.990 --> 00:06:53.000 align:start position:0%
+information bre is that right you'll
+
+
+00:06:53.000 --> 00:07:00.869 align:start position:0%
+information bre is that right you'll
+hang<00:06:53.160><c> out</c><00:06:53.280><c> for</c><00:06:53.400><c> a</c><00:06:53.479><c> while</c><00:06:53.840><c> I'll</c><00:06:53.960><c> hang</c>
+
+00:07:00.869 --> 00:07:00.879 align:start position:0%
+
+
+
+00:07:00.879 --> 00:07:07.950 align:start position:0%
+
+sure<00:07:01.879><c> all</c><00:07:02.080><c> right</c><00:07:03.080><c> have</c><00:07:03.160><c> a</c>
+
+00:07:07.950 --> 00:07:07.960 align:start position:0%
+
+
+
+00:07:07.960 --> 00:07:10.869 align:start position:0%
+
+job<00:07:08.960><c> so</c><00:07:09.199><c> last</c><00:07:09.360><c> time</c><00:07:09.560><c> I</c><00:07:09.720><c> gave</c><00:07:09.919><c> away</c><00:07:10.199><c> my</c><00:07:10.319><c> own</c><00:07:10.560><c> job</c>
+
+00:07:10.869 --> 00:07:10.879 align:start position:0%
+job so last time I gave away my own job
+
+
+00:07:10.879 --> 00:07:13.589 align:start position:0%
+job so last time I gave away my own job
+this<00:07:11.039><c> time</c><00:07:11.199><c> I</c><00:07:11.280><c> want</c><00:07:11.440><c> an</c><00:07:11.599><c> extra</c><00:07:11.919><c> me</c><00:07:12.560><c> so</c><00:07:13.039><c> I</c><00:07:13.360><c> I</c><00:07:13.440><c> work</c>
+
+00:07:13.589 --> 00:07:13.599 align:start position:0%
+this time I want an extra me so I I work
+
+
+00:07:13.599 --> 00:07:15.550 align:start position:0%
+this time I want an extra me so I I work
+for<00:07:13.800><c> red</c><00:07:14.080><c> hat</c><00:07:14.400><c> and</c><00:07:14.639><c> work</c><00:07:14.800><c> on</c><00:07:15.080><c> marketing</c>
+
+00:07:15.550 --> 00:07:15.560 align:start position:0%
+for red hat and work on marketing
+
+
+00:07:15.560 --> 00:07:17.629 align:start position:0%
+for red hat and work on marketing
+related<00:07:15.879><c> to</c><00:07:16.000><c> Upstream</c><00:07:16.599><c> projects</c><00:07:17.080><c> so</c><00:07:17.360><c> I</c><00:07:17.440><c> want</c>
+
+00:07:17.629 --> 00:07:17.639 align:start position:0%
+related to Upstream projects so I want
+
+
+00:07:17.639 --> 00:07:19.869 align:start position:0%
+related to Upstream projects so I want
+somebody<00:07:18.479><c> who's</c><00:07:18.800><c> good</c><00:07:18.919><c> at</c><00:07:19.080><c> marketing</c><00:07:19.680><c> and</c>
+
+00:07:19.869 --> 00:07:19.879 align:start position:0%
+somebody who's good at marketing and
+
+
+00:07:19.879 --> 00:07:21.390 align:start position:0%
+somebody who's good at marketing and
+knows<00:07:20.120><c> what</c><00:07:20.240><c> open</c><00:07:20.479><c> source</c><00:07:20.720><c> software</c><00:07:21.080><c> is</c><00:07:21.199><c> and</c><00:07:21.319><c> I</c>
+
+00:07:21.390 --> 00:07:21.400 align:start position:0%
+knows what open source software is and I
+
+
+00:07:21.400 --> 00:07:22.749 align:start position:0%
+knows what open source software is and I
+know<00:07:21.560><c> that's</c><00:07:21.720><c> really</c><00:07:22.000><c> vague</c><00:07:22.319><c> but</c><00:07:22.440><c> we'll</c><00:07:22.599><c> work</c>
+
+00:07:22.749 --> 00:07:22.759 align:start position:0%
+know that's really vague but we'll work
+
+
+00:07:22.759 --> 00:07:24.710 align:start position:0%
+know that's really vague but we'll work
+on<00:07:22.879><c> the</c><00:07:23.000><c> detail</c><00:07:23.440><c> part</c><00:07:23.840><c> so</c><00:07:24.080><c> if</c><00:07:24.240><c> that's</c><00:07:24.479><c> you</c><00:07:24.599><c> or</c>
+
+00:07:24.710 --> 00:07:24.720 align:start position:0%
+on the detail part so if that's you or
+
+
+00:07:24.720 --> 00:07:26.110 align:start position:0%
+on the detail part so if that's you or
+your<00:07:24.919><c> awesome</c><00:07:25.160><c> friend</c><00:07:25.440><c> I</c><00:07:25.520><c> should</c><00:07:25.720><c> meet</c><00:07:26.000><c> you</c>
+
+00:07:26.110 --> 00:07:26.120 align:start position:0%
+your awesome friend I should meet you
+
+
+00:07:26.120 --> 00:07:30.430 align:start position:0%
+your awesome friend I should meet you
+should
+
+00:07:30.430 --> 00:07:30.440 align:start position:0%
+
+
+
+00:07:30.440 --> 00:07:34.869 align:start position:0%
+
+anybody<00:07:30.840><c> else</c><00:07:31.199><c> offering</c><00:07:31.520><c> a</c>
+
+00:07:34.869 --> 00:07:34.879 align:start position:0%
+
+
+
+00:07:34.879 --> 00:07:38.110 align:start position:0%
+
+job<00:07:35.879><c> we</c><00:07:36.039><c> for</c><00:07:36.160><c> brono</c><00:07:36.639><c> software</c><00:07:37.120><c> we're</c><00:07:37.840><c> web</c>
+
+00:07:38.110 --> 00:07:38.120 align:start position:0%
+job we for brono software we're web
+
+
+00:07:38.120 --> 00:07:40.790 align:start position:0%
+job we for brono software we're web
+application<00:07:39.080><c> development</c><00:07:39.479><c> company</c><00:07:40.400><c> we</c><00:07:40.520><c> have</c>
+
+00:07:40.790 --> 00:07:40.800 align:start position:0%
+application development company we have
+
+
+00:07:40.800 --> 00:07:42.790 align:start position:0%
+application development company we have
+email<00:07:41.080><c> marketing</c><00:07:41.400><c> application</c><00:07:42.000><c> but</c><00:07:42.560><c> we</c><00:07:42.680><c> are</c>
+
+00:07:42.790 --> 00:07:42.800 align:start position:0%
+email marketing application but we are
+
+
+00:07:42.800 --> 00:07:45.910 align:start position:0%
+email marketing application but we are
+looking<00:07:43.039><c> for</c><00:07:43.360><c> a</c><00:07:43.560><c> DBA</c><00:07:44.039><c> or</c><00:07:44.240><c> my</c><00:07:44.639><c> performance</c>
+
+00:07:45.910 --> 00:07:45.920 align:start position:0%
+looking for a DBA or my performance
+
+
+00:07:45.920 --> 00:07:52.589 align:start position:0%
+looking for a DBA or my performance
+[Music]
+
+00:07:52.589 --> 00:07:52.599 align:start position:0%
+
+
+
+00:07:52.599 --> 00:07:55.469 align:start position:0%
+
+engineer<00:07:53.599><c> Java</c><00:07:53.879><c> web</c>
+
+00:07:55.469 --> 00:07:55.479 align:start position:0%
+engineer Java web
+
+
+00:07:55.479 --> 00:08:00.390 align:start position:0%
+engineer Java web
+Developers<00:07:56.479><c> youcom</c>
+
+00:08:00.390 --> 00:08:00.400 align:start position:0%
+
+
+
+00:08:00.400 --> 00:08:02.950 align:start position:0%
+
+all<00:08:00.560><c> right</c><00:08:00.879><c> have</c><00:08:01.039><c> a</c>
+
+00:08:02.950 --> 00:08:02.960 align:start position:0%
+all right have a
+
+
+00:08:02.960 --> 00:08:05.270 align:start position:0%
+all right have a
+job<00:08:03.960><c> who</c><00:08:04.080><c> would</c><00:08:04.280><c> like</c><00:08:04.440><c> a</c>
+
+00:08:05.270 --> 00:08:05.280 align:start position:0%
+job who would like a
+
+
+00:08:05.280 --> 00:08:09.070 align:start position:0%
+job who would like a
+job<00:08:06.280><c> a</c><00:08:06.520><c> light</c><00:08:06.800><c> different</c><00:08:07.199><c> job</c><00:08:07.879><c> anyone</c><00:08:08.280><c> want</c>
+
+00:08:09.070 --> 00:08:09.080 align:start position:0%
+job a light different job anyone want
+
+
+00:08:09.080 --> 00:08:20.550 align:start position:0%
+job a light different job anyone want
+anyone<00:08:09.360><c> to</c><00:08:09.520><c> come</c><00:08:09.680><c> up</c><00:08:09.840><c> here</c><00:08:09.960><c> and</c><00:08:10.120><c> tell</c><00:08:10.319><c> us</c><00:08:10.520><c> about</c>
+
+00:08:20.550 --> 00:08:20.560 align:start position:0%
+
+
+
+00:08:20.560 --> 00:08:24.950 align:start position:0%
+
+yourself<00:08:21.560><c> hi</c><00:08:22.080><c> I've</c><00:08:22.240><c> been</c><00:08:22.400><c> here</c><00:08:22.680><c> before</c><00:08:23.680><c> but</c><00:08:24.199><c> um</c>
+
+00:08:24.950 --> 00:08:24.960 align:start position:0%
+yourself hi I've been here before but um
+
+
+00:08:24.960 --> 00:08:27.390 align:start position:0%
+yourself hi I've been here before but um
+now<00:08:25.319><c> decided</c><00:08:25.720><c> it's</c><00:08:25.919><c> time</c><00:08:26.039><c> to</c><00:08:26.159><c> go</c><00:08:26.280><c> back</c><00:08:26.400><c> to</c><00:08:26.599><c> work</c>
+
+00:08:27.390 --> 00:08:27.400 align:start position:0%
+now decided it's time to go back to work
+
+
+00:08:27.400 --> 00:08:29.909 align:start position:0%
+now decided it's time to go back to work
+uh<00:08:27.680><c> my</c><00:08:28.280><c> previous</c><00:08:28.639><c> emplo</c><00:08:29.000><c> employment</c><00:08:29.520><c> I</c><00:08:29.639><c> was</c>
+
+00:08:29.909 --> 00:08:29.919 align:start position:0%
+uh my previous emplo employment I was
+
+
+00:08:29.919 --> 00:08:31.550 align:start position:0%
+uh my previous emplo employment I was
+division<00:08:30.319><c> information</c><00:08:30.800><c> officer</c><00:08:31.120><c> at</c><00:08:31.240><c> division</c>
+
+00:08:31.550 --> 00:08:31.560 align:start position:0%
+division information officer at division
+
+
+00:08:31.560 --> 00:08:34.350 align:start position:0%
+division information officer at division
+Europe<00:08:31.840><c> for</c><00:08:32.039><c> Gate</c><00:08:32.880><c> International</c><00:08:33.880><c> um</c><00:08:34.000><c> so</c><00:08:34.200><c> I've</c>
+
+00:08:34.350 --> 00:08:34.360 align:start position:0%
+Europe for Gate International um so I've
+
+
+00:08:34.360 --> 00:08:36.430 align:start position:0%
+Europe for Gate International um so I've
+got<00:08:34.719><c> extensive</c><00:08:35.200><c> it</c><00:08:35.519><c> management</c><00:08:35.959><c> experience</c>
+
+00:08:36.430 --> 00:08:36.440 align:start position:0%
+got extensive it management experience
+
+
+00:08:36.440 --> 00:08:38.149 align:start position:0%
+got extensive it management experience
+specifically<00:08:37.039><c> International</c><00:08:37.719><c> experience</c>
+
+00:08:38.149 --> 00:08:38.159 align:start position:0%
+specifically International experience
+
+
+00:08:38.159 --> 00:08:40.190 align:start position:0%
+specifically International experience
+anybody<00:08:38.599><c> looking</c><00:08:39.000><c> for</c><00:08:39.399><c> International</c>
+
+00:08:40.190 --> 00:08:40.200 align:start position:0%
+anybody looking for International
+
+
+00:08:40.200 --> 00:08:42.909 align:start position:0%
+anybody looking for International
+Management<00:08:41.200><c> um</c><00:08:41.519><c> training</c><00:08:41.919><c> development</c><00:08:42.680><c> I'm</c>
+
+00:08:42.909 --> 00:08:42.919 align:start position:0%
+Management um training development I'm
+
+
+00:08:42.919 --> 00:08:44.790 align:start position:0%
+Management um training development I'm
+on<00:08:43.080><c> the</c><00:08:43.200><c> board</c><00:08:43.360><c> of</c><00:08:43.519><c> directors</c><00:08:43.919><c> for</c><00:08:44.120><c> a</c><00:08:44.320><c> training</c>
+
+00:08:44.790 --> 00:08:44.800 align:start position:0%
+on the board of directors for a training
+
+
+00:08:44.800 --> 00:08:47.990 align:start position:0%
+on the board of directors for a training
+organization<00:08:45.800><c> nonprofit</c><00:08:46.800><c> um</c><00:08:47.440><c> the</c><00:08:47.640><c> problem</c><00:08:47.880><c> is</c>
+
+00:08:47.990 --> 00:08:48.000 align:start position:0%
+organization nonprofit um the problem is
+
+
+00:08:48.000 --> 00:08:49.790 align:start position:0%
+organization nonprofit um the problem is
+I've<00:08:48.160><c> got</c><00:08:48.240><c> a</c><00:08:48.399><c> gap</c><00:08:48.560><c> in</c><00:08:48.680><c> my</c><00:08:48.839><c> resume</c><00:08:49.399><c> because</c><00:08:49.640><c> when</c>
+
+00:08:49.790 --> 00:08:49.800 align:start position:0%
+I've got a gap in my resume because when
+
+
+00:08:49.800 --> 00:08:51.670 align:start position:0%
+I've got a gap in my resume because when
+my<00:08:49.959><c> son</c><00:08:50.160><c> was</c><00:08:50.320><c> born</c><00:08:50.720><c> I</c><00:08:51.000><c> had</c><00:08:51.120><c> the</c><00:08:51.240><c> luxury</c><00:08:51.560><c> of</c>
+
+00:08:51.670 --> 00:08:51.680 align:start position:0%
+my son was born I had the luxury of
+
+
+00:08:51.680 --> 00:08:53.470 align:start position:0%
+my son was born I had the luxury of
+taking<00:08:51.920><c> some</c><00:08:52.160><c> time</c><00:08:52.399><c> off</c><00:08:52.959><c> while</c><00:08:53.120><c> that</c><00:08:53.240><c> was</c><00:08:53.320><c> a</c>
+
+00:08:53.470 --> 00:08:53.480 align:start position:0%
+taking some time off while that was a
+
+
+00:08:53.480 --> 00:08:55.509 align:start position:0%
+taking some time off while that was a
+respected<00:08:53.880><c> life</c><00:08:54.120><c> decision</c><00:08:54.440><c> in</c><00:08:54.600><c> Europe</c><00:08:55.320><c> here</c>
+
+00:08:55.509 --> 00:08:55.519 align:start position:0%
+respected life decision in Europe here
+
+
+00:08:55.519 --> 00:08:57.710 align:start position:0%
+respected life decision in Europe here
+it's<00:08:55.720><c> just</c><00:08:55.839><c> a</c><00:08:56.000><c> gap</c><00:08:56.160><c> in</c><00:08:56.279><c> my</c><00:08:56.399><c> resume</c>
+
+00:08:57.710 --> 00:08:57.720 align:start position:0%
+it's just a gap in my resume
+
+
+00:08:57.720 --> 00:08:59.829 align:start position:0%
+it's just a gap in my resume
+so<00:08:58.720><c> I'm</c><00:08:58.839><c> looking</c><00:08:59.040><c> to</c><00:08:59.160><c> go</c><00:08:59.240><c> back</c><00:08:59.600><c> do</c><00:08:59.720><c> the</c>
+
+00:08:59.829 --> 00:08:59.839 align:start position:0%
+so I'm looking to go back do the
+
+
+00:08:59.839 --> 00:09:03.430 align:start position:0%
+so I'm looking to go back do the
+workforce<00:09:00.200><c> and</c><00:09:00.320><c> I</c><00:09:00.440><c> have</c><00:09:00.680><c> the</c><00:09:01.519><c> flexibility</c><00:09:02.440><c> to</c>
+
+00:09:03.430 --> 00:09:03.440 align:start position:0%
+workforce and I have the flexibility to
+
+
+00:09:03.440 --> 00:09:06.110 align:start position:0%
+workforce and I have the flexibility to
+entertain
+
+00:09:06.110 --> 00:09:06.120 align:start position:0%
+
+
+
+00:09:06.120 --> 00:09:09.550 align:start position:0%
+
+options<00:09:07.120><c> who</c><00:09:07.240><c> else</c><00:09:07.519><c> would</c><00:09:07.680><c> like</c><00:09:07.839><c> to</c><00:09:08.000><c> change</c>
+
+00:09:09.550 --> 00:09:09.560 align:start position:0%
+options who else would like to change
+
+
+00:09:09.560 --> 00:09:13.550 align:start position:0%
+options who else would like to change
+jobs<00:09:10.560><c> everyone's</c><00:09:11.320><c> happy</c>
+
+00:09:13.550 --> 00:09:13.560 align:start position:0%
+jobs everyone's happy
+
+
+00:09:13.560 --> 00:09:17.030 align:start position:0%
+jobs everyone's happy
+awesome<00:09:14.560><c> all</c><00:09:14.720><c> right</c><00:09:15.000><c> so</c><00:09:15.360><c> um</c><00:09:16.200><c> who</c><00:09:16.440><c> here</c><00:09:16.600><c> is</c><00:09:16.880><c> not</c>
+
+00:09:17.030 --> 00:09:17.040 align:start position:0%
+awesome all right so um who here is not
+
+
+00:09:17.040 --> 00:09:18.990 align:start position:0%
+awesome all right so um who here is not
+a<00:09:17.279><c> member</c><00:09:17.600><c> of</c>
+
+00:09:18.990 --> 00:09:19.000 align:start position:0%
+a member of
+
+
+00:09:19.000 --> 00:09:22.430 align:start position:0%
+a member of
+trilog<00:09:20.000><c> not</c><00:09:20.120><c> a</c><00:09:20.279><c> member</c><00:09:20.959><c> all</c><00:09:21.120><c> right</c><00:09:21.880><c> I</c><00:09:22.000><c> think</c><00:09:22.279><c> we</c>
+
+00:09:22.430 --> 00:09:22.440 align:start position:0%
+trilog not a member all right I think we
+
+
+00:09:22.440 --> 00:09:24.310 align:start position:0%
+trilog not a member all right I think we
+have<00:09:22.680><c> that</c><00:09:22.839><c> many</c><00:09:23.079><c> membership</c><00:09:23.600><c> form</c><00:09:23.920><c> so</c>
+
+00:09:24.310 --> 00:09:24.320 align:start position:0%
+have that many membership form so
+
+
+00:09:24.320 --> 00:09:26.389 align:start position:0%
+have that many membership form so
+sitting<00:09:24.760><c> over</c><00:09:24.959><c> here</c><00:09:25.079><c> on</c><00:09:25.279><c> this</c>
+
+00:09:26.389 --> 00:09:26.399 align:start position:0%
+sitting over here on this
+
+
+00:09:26.399 --> 00:09:29.550 align:start position:0%
+sitting over here on this
+table<00:09:27.399><c> uh</c><00:09:27.560><c> is</c><00:09:27.680><c> that</c><00:09:27.920><c> right</c><00:09:28.320><c> over</c><00:09:28.519><c> here</c><00:09:28.680><c> on</c><00:09:28.920><c> that</c>
+
+00:09:29.550 --> 00:09:29.560 align:start position:0%
+table uh is that right over here on that
+
+
+00:09:29.560 --> 00:09:32.710 align:start position:0%
+table uh is that right over here on that
+C<00:09:29.920><c> Crescent</c><00:09:30.399><c> table</c><00:09:30.880><c> in</c><00:09:31.000><c> this</c><00:09:31.160><c> green</c><00:09:31.720><c> folder</c>
+
+00:09:32.710 --> 00:09:32.720 align:start position:0%
+C Crescent table in this green folder
+
+
+00:09:32.720 --> 00:09:35.590 align:start position:0%
+C Crescent table in this green folder
+here<00:09:32.959><c> on</c><00:09:33.240><c> this</c><00:09:33.480><c> table</c><00:09:34.480><c> you</c><00:09:34.600><c> can</c><00:09:34.800><c> fill</c><00:09:35.079><c> out</c><00:09:35.320><c> our</c>
+
+00:09:35.590 --> 00:09:35.600 align:start position:0%
+here on this table you can fill out our
+
+
+00:09:35.600 --> 00:09:37.710 align:start position:0%
+here on this table you can fill out our
+very<00:09:35.920><c> brief</c><00:09:36.279><c> membership</c><00:09:36.760><c> form</c><00:09:37.079><c> it</c><00:09:37.360><c> cost</c>
+
+00:09:37.710 --> 00:09:37.720 align:start position:0%
+very brief membership form it cost
+
+
+00:09:37.720 --> 00:09:40.550 align:start position:0%
+very brief membership form it cost
+absolutely<00:09:38.360><c> nothing</c><00:09:39.360><c> it</c><00:09:39.560><c> gains</c><00:09:39.839><c> you</c><00:09:40.040><c> bragging</c>
+
+00:09:40.550 --> 00:09:40.560 align:start position:0%
+absolutely nothing it gains you bragging
+
+
+00:09:40.560 --> 00:09:42.829 align:start position:0%
+absolutely nothing it gains you bragging
+rights<00:09:41.160><c> and</c><00:09:41.360><c> a</c><00:09:41.600><c> discount</c><00:09:42.079><c> at</c>
+
+00:09:42.829 --> 00:09:42.839 align:start position:0%
+rights and a discount at
+
+
+00:09:42.839 --> 00:09:46.470 align:start position:0%
+rights and a discount at
+INX<00:09:43.839><c> um</c><00:09:44.279><c> and</c><00:09:44.839><c> if</c><00:09:44.959><c> you</c><00:09:45.200><c> come</c><00:09:45.560><c> back</c><00:09:45.760><c> to</c><00:09:46.040><c> the</c><00:09:46.240><c> next</c>
+
+00:09:46.470 --> 00:09:46.480 align:start position:0%
+INX um and if you come back to the next
+
+
+00:09:46.480 --> 00:09:48.350 align:start position:0%
+INX um and if you come back to the next
+meeting<00:09:46.880><c> or</c><00:09:47.040><c> the</c><00:09:47.160><c> meeting</c><00:09:47.519><c> right</c><00:09:47.720><c> after</c><00:09:48.120><c> that</c>
+
+00:09:48.350 --> 00:09:48.360 align:start position:0%
+meeting or the meeting right after that
+
+
+00:09:48.360 --> 00:09:50.030 align:start position:0%
+meeting or the meeting right after that
+and<00:09:48.600><c> let</c><00:09:48.720><c> us</c><00:09:48.920><c> know</c><00:09:49.120><c> we'll</c><00:09:49.320><c> have</c><00:09:49.440><c> a</c><00:09:49.600><c> membership</c>
+
+00:09:50.030 --> 00:09:50.040 align:start position:0%
+and let us know we'll have a membership
+
+
+00:09:50.040 --> 00:09:52.550 align:start position:0%
+and let us know we'll have a membership
+card<00:09:50.279><c> for</c>
+
+00:09:52.550 --> 00:09:52.560 align:start position:0%
+
+
+
+00:09:52.560 --> 00:09:56.590 align:start position:0%
+
+you<00:09:53.560><c> all</c><00:09:53.680><c> right</c><00:09:53.920><c> so</c><00:09:54.279><c> now</c><00:09:54.920><c> on</c><00:09:55.120><c> to</c><00:09:55.360><c> our</c><00:09:55.600><c> main</c>
+
+00:09:56.590 --> 00:09:56.600 align:start position:0%
+you all right so now on to our main
+
+
+00:09:56.600 --> 00:09:59.590 align:start position:0%
+you all right so now on to our main
+attraction<00:09:57.600><c> Raspberry</c><00:09:58.200><c> Pi</c><00:09:58.560><c> as</c><00:09:58.760><c> presented</c>
+
+00:09:59.590 --> 00:09:59.600 align:start position:0%
+attraction Raspberry Pi as presented
+
+
+00:09:59.600 --> 00:10:01.990 align:start position:0%
+attraction Raspberry Pi as presented
+Splat<00:10:00.000><c> space</c><00:10:00.320><c> our</c><00:10:00.560><c> speakers</c><00:10:01.040><c> tonight</c><00:10:01.440><c> will</c><00:10:01.680><c> be</c>
+
+00:10:01.990 --> 00:10:02.000 align:start position:0%
+Splat space our speakers tonight will be
+
+
+00:10:02.000 --> 00:10:03.470 align:start position:0%
+Splat space our speakers tonight will be
+P
+
+00:10:03.470 --> 00:10:03.480 align:start position:0%
+P
+
+
+00:10:03.480 --> 00:10:05.949 align:start position:0%
+P
+soer<00:10:04.480><c> Alan</c>
+
+00:10:05.949 --> 00:10:05.959 align:start position:0%
+soer Alan
+
+
+00:10:05.959 --> 00:10:08.350 align:start position:0%
+soer Alan
+diaper<00:10:06.959><c> Clinton</c>
+
+00:10:08.350 --> 00:10:08.360 align:start position:0%
+diaper Clinton
+
+
+00:10:08.360 --> 00:10:11.470 align:start position:0%
+diaper Clinton
+DB<00:10:09.360><c> and</c><00:10:09.680><c> Peter</c>
+
+00:10:11.470 --> 00:10:11.480 align:start position:0%
+DB and Peter
+
+
+00:10:11.480 --> 00:10:14.750 align:start position:0%
+DB and Peter
+wrenches<00:10:12.480><c> and</c><00:10:12.720><c> with</c><00:10:13.000><c> that</c><00:10:13.800><c> I</c><00:10:13.920><c> would</c><00:10:14.200><c> like</c><00:10:14.399><c> to</c>
+
+00:10:14.750 --> 00:10:14.760 align:start position:0%
+wrenches and with that I would like to
+
+
+00:10:14.760 --> 00:10:17.710 align:start position:0%
+wrenches and with that I would like to
+hand<00:10:15.079><c> for</c><00:10:15.680><c> microphone</c><00:10:16.680><c> okay</c><00:10:17.360><c> I've</c><00:10:17.480><c> got</c><00:10:17.600><c> a</c>
+
+00:10:17.710 --> 00:10:17.720 align:start position:0%
+hand for microphone okay I've got a
+
+
+00:10:17.720 --> 00:10:22.509 align:start position:0%
+hand for microphone okay I've got a
+wireless<00:10:18.240><c> mic</c><00:10:19.160><c> fantastic</c><00:10:19.800><c> right</c>
+
+00:10:22.509 --> 00:10:22.519 align:start position:0%
+wireless mic fantastic right
+
+
+00:10:22.519 --> 00:10:25.750 align:start position:0%
+wireless mic fantastic right
+thanks<00:10:23.519><c> uh</c><00:10:24.440><c> I'm</c><00:10:24.600><c> get</c><00:10:24.760><c> help</c><00:10:24.920><c> with</c><00:10:25.040><c> bronchitis</c>
+
+00:10:25.750 --> 00:10:25.760 align:start position:0%
+thanks uh I'm get help with bronchitis
+
+
+00:10:25.760 --> 00:10:27.470 align:start position:0%
+thanks uh I'm get help with bronchitis
+and<00:10:25.920><c> I'm</c><00:10:26.040><c> going</c><00:10:26.120><c> to</c><00:10:26.360><c> try</c><00:10:26.640><c> real</c><00:10:26.880><c> hard</c><00:10:27.079><c> to</c><00:10:27.279><c> hit</c>
+
+00:10:27.470 --> 00:10:27.480 align:start position:0%
+and I'm going to try real hard to hit
+
+
+00:10:27.480 --> 00:10:30.990 align:start position:0%
+and I'm going to try real hard to hit
+this<00:10:27.640><c> Muse</c><00:10:28.320><c> button</c><00:10:29.360><c> before</c><00:10:29.560><c> I</c><00:10:29.720><c> talk</c><00:10:30.240><c> so</c>
+
+00:10:30.990 --> 00:10:31.000 align:start position:0%
+this Muse button before I talk so
+
+
+00:10:31.000 --> 00:10:34.910 align:start position:0%
+this Muse button before I talk so
+apologies<00:10:31.680><c> in</c><00:10:31.839><c> advance</c><00:10:32.320><c> if</c><00:10:32.519><c> I</c><00:10:33.160><c> have</c><00:10:33.279><c> a</c><00:10:34.160><c> but</c><00:10:34.720><c> I</c>
+
+00:10:34.910 --> 00:10:34.920 align:start position:0%
+apologies in advance if I have a but I
+
+
+00:10:34.920 --> 00:10:36.870 align:start position:0%
+apologies in advance if I have a but I
+think<00:10:35.079><c> I'm</c><00:10:35.200><c> on</c><00:10:35.320><c> the</c><00:10:35.440><c> right</c><00:10:35.600><c> side</c><00:10:35.720><c> of</c><00:10:35.920><c> that</c><00:10:36.720><c> U</c>
+
+00:10:36.870 --> 00:10:36.880 align:start position:0%
+think I'm on the right side of that U
+
+
+00:10:36.880 --> 00:10:38.710 align:start position:0%
+think I'm on the right side of that U
+tonight<00:10:37.120><c> we're</c><00:10:37.279><c> going</c><00:10:37.399><c> to</c><00:10:38.200><c> uh</c><00:10:38.360><c> provide</c><00:10:38.600><c> an</c>
+
+00:10:38.710 --> 00:10:38.720 align:start position:0%
+tonight we're going to uh provide an
+
+
+00:10:38.720 --> 00:10:40.590 align:start position:0%
+tonight we're going to uh provide an
+introduction<00:10:39.160><c> to</c><00:10:39.240><c> the</c><00:10:39.320><c> Rasberry</c><00:10:39.760><c> P</c><00:10:40.200><c> next</c>
+
+00:10:40.590 --> 00:10:40.600 align:start position:0%
+introduction to the Rasberry P next
+
+
+00:10:40.600 --> 00:10:44.910 align:start position:0%
+introduction to the Rasberry P next
+slide<00:10:41.600><c> and</c><00:10:42.160><c> this</c><00:10:42.320><c> is</c><00:10:42.680><c> the</c><00:10:43.320><c> upline</c><00:10:44.320><c> we'll</c><00:10:44.800><c> go</c>
+
+00:10:44.910 --> 00:10:44.920 align:start position:0%
+slide and this is the upline we'll go
+
+
+00:10:44.920 --> 00:10:48.470 align:start position:0%
+slide and this is the upline we'll go
+over<00:10:45.120><c> what</c><00:10:45.200><c> it</c><00:10:45.440><c> is</c><00:10:46.360><c> history</c><00:10:47.360><c> and</c><00:10:47.760><c> some</c><00:10:48.240><c> high</c>
+
+00:10:48.470 --> 00:10:48.480 align:start position:0%
+over what it is history and some high
+
+
+00:10:48.480 --> 00:10:53.110 align:start position:0%
+over what it is history and some high
+level<00:10:49.200><c> resources</c><00:10:50.200><c> and</c><00:10:50.480><c> then</c><00:10:50.920><c> into</c><00:10:51.880><c> uh</c><00:10:52.440><c> some</c>
+
+00:10:53.110 --> 00:10:53.120 align:start position:0%
+level resources and then into uh some
+
+
+00:10:53.120 --> 00:10:56.269 align:start position:0%
+level resources and then into uh some
+different<00:10:53.519><c> sets</c><00:10:53.880><c> of</c><00:10:54.079><c> use</c><00:10:54.399><c> cases</c><00:10:54.959><c> and</c><00:10:55.360><c> uh</c><00:10:55.720><c> demos</c>
+
+00:10:56.269 --> 00:10:56.279 align:start position:0%
+different sets of use cases and uh demos
+
+
+00:10:56.279 --> 00:11:01.710 align:start position:0%
+different sets of use cases and uh demos
+and<00:10:56.440><c> so</c><00:10:56.639><c> on</c><00:10:57.120><c> and</c><00:10:57.320><c> then</c><00:10:57.880><c> uh</c><00:10:58.279><c> Q&A</c>
+
+00:11:01.710 --> 00:11:01.720 align:start position:0%
+
+
+
+00:11:01.720 --> 00:11:03.710 align:start position:0%
+
+next<00:11:02.720><c> tonight</c><00:11:02.959><c> we're</c><00:11:03.079><c> going</c><00:11:03.200><c> to</c><00:11:03.360><c> do</c>
+
+00:11:03.710 --> 00:11:03.720 align:start position:0%
+next tonight we're going to do
+
+
+00:11:03.720 --> 00:11:04.829 align:start position:0%
+next tonight we're going to do
+presentations<00:11:04.279><c> and</c><00:11:04.440><c> we've</c><00:11:04.600><c> got</c><00:11:04.720><c> some</c>
+
+00:11:04.829 --> 00:11:04.839 align:start position:0%
+presentations and we've got some
+
+
+00:11:04.839 --> 00:11:06.310 align:start position:0%
+presentations and we've got some
+machines<00:11:05.240><c> set</c><00:11:05.360><c> up</c><00:11:05.519><c> in</c><00:11:05.600><c> the</c><00:11:05.760><c> back</c><00:11:05.959><c> that</c><00:11:06.040><c> you</c><00:11:06.160><c> can</c>
+
+00:11:06.310 --> 00:11:06.320 align:start position:0%
+machines set up in the back that you can
+
+
+00:11:06.320 --> 00:11:08.350 align:start position:0%
+machines set up in the back that you can
+play<00:11:06.560><c> with</c><00:11:07.399><c> well</c><00:11:07.560><c> the</c><00:11:07.680><c> one</c><00:11:07.800><c> on</c><00:11:07.920><c> the</c><00:11:08.040><c> right</c><00:11:08.240><c> with</c>
+
+00:11:08.350 --> 00:11:08.360 align:start position:0%
+play with well the one on the right with
+
+
+00:11:08.360 --> 00:11:09.750 align:start position:0%
+play with well the one on the right with
+the<00:11:08.480><c> big</c><00:11:08.600><c> monitor</c><00:11:09.000><c> you</c><00:11:09.079><c> can</c><00:11:09.240><c> play</c><00:11:09.480><c> with</c><00:11:09.639><c> the</c>
+
+00:11:09.750 --> 00:11:09.760 align:start position:0%
+the big monitor you can play with the
+
+
+00:11:09.760 --> 00:11:11.430 align:start position:0%
+the big monitor you can play with the
+others<00:11:10.079><c> you</c><00:11:10.200><c> can</c><00:11:10.680><c> talk</c><00:11:10.839><c> to</c><00:11:11.000><c> other</c><00:11:11.200><c> people</c>
+
+00:11:11.430 --> 00:11:11.440 align:start position:0%
+others you can talk to other people
+
+
+00:11:11.440 --> 00:11:13.870 align:start position:0%
+others you can talk to other people
+about<00:11:12.440><c> uh</c><00:11:12.600><c> right</c><00:11:12.760><c> after</c><00:11:13.079><c> presentation</c><00:11:13.760><c> you</c>
+
+00:11:13.870 --> 00:11:13.880 align:start position:0%
+about uh right after presentation you
+
+
+00:11:13.880 --> 00:11:16.030 align:start position:0%
+about uh right after presentation you
+can<00:11:14.320><c> feel</c><00:11:14.519><c> free</c><00:11:14.680><c> to</c><00:11:14.800><c> go</c><00:11:14.920><c> over</c><00:11:15.160><c> and</c><00:11:15.560><c> uh</c><00:11:15.760><c> quiz</c>
+
+00:11:16.030 --> 00:11:16.040 align:start position:0%
+can feel free to go over and uh quiz
+
+
+00:11:16.040 --> 00:11:18.870 align:start position:0%
+can feel free to go over and uh quiz
+them<00:11:16.240><c> about</c><00:11:16.560><c> that</c><00:11:17.480><c> um</c><00:11:17.680><c> on</c><00:11:17.959><c> Saturday</c><00:11:18.600><c> we</c><00:11:18.760><c> going</c>
+
+00:11:18.870 --> 00:11:18.880 align:start position:0%
+them about that um on Saturday we going
+
+
+00:11:18.880 --> 00:11:23.030 align:start position:0%
+them about that um on Saturday we going
+to<00:11:19.160><c> have</c><00:11:19.639><c> at</c><00:11:19.800><c> Splat</c><00:11:20.279><c> space</c><00:11:21.279><c> downtown</c><00:11:22.040><c> Durham</c>
+
+00:11:23.030 --> 00:11:23.040 align:start position:0%
+to have at Splat space downtown Durham
+
+
+00:11:23.040 --> 00:11:25.470 align:start position:0%
+to have at Splat space downtown Durham
+uh<00:11:23.519><c> a</c><00:11:23.720><c> workshop</c><00:11:24.399><c> all</c><00:11:24.639><c> day</c>
+
+00:11:25.470 --> 00:11:25.480 align:start position:0%
+uh a workshop all day
+
+
+00:11:25.480 --> 00:11:28.990 align:start position:0%
+uh a workshop all day
+95<00:11:26.480><c> uh</c><00:11:26.680><c> for</c><00:11:27.279><c> additional</c><00:11:27.800><c> activities</c><00:11:28.680><c> and</c><00:11:28.839><c> in</c>
+
+00:11:28.990 --> 00:11:29.000 align:start position:0%
+95 uh for additional activities and in
+
+
+00:11:29.000 --> 00:11:31.790 align:start position:0%
+95 uh for additional activities and in
+particular<00:11:29.639><c> particular</c><00:11:30.639><c> uh</c><00:11:30.959><c> since</c><00:11:31.279><c> Raspberry</c>
+
+00:11:31.790 --> 00:11:31.800 align:start position:0%
+particular particular uh since Raspberry
+
+
+00:11:31.800 --> 00:11:35.030 align:start position:0%
+particular particular uh since Raspberry
+Pi<00:11:32.079><c> was</c><00:11:32.279><c> designed</c><00:11:32.959><c> with</c><00:11:33.120><c> education</c><00:11:33.600><c> in</c><00:11:34.040><c> mind</c>
+
+00:11:35.030 --> 00:11:35.040 align:start position:0%
+Pi was designed with education in mind
+
+
+00:11:35.040 --> 00:11:37.949 align:start position:0%
+Pi was designed with education in mind
+anybody<00:11:35.480><c> that</c><00:11:35.600><c> is</c><00:11:35.880><c> interested</c><00:11:36.560><c> in</c><00:11:37.440><c> uh</c>
+
+00:11:37.949 --> 00:11:37.959 align:start position:0%
+anybody that is interested in uh
+
+
+00:11:37.959 --> 00:11:40.750 align:start position:0%
+anybody that is interested in uh
+discussing<00:11:38.959><c> uh</c><00:11:39.560><c> educational</c><00:11:40.240><c> aspects</c><00:11:40.600><c> of</c>
+
+00:11:40.750 --> 00:11:40.760 align:start position:0%
+discussing uh educational aspects of
+
+
+00:11:40.760 --> 00:11:44.110 align:start position:0%
+discussing uh educational aspects of
+Raspberry<00:11:41.279><c> Pi</c><00:11:42.040><c> should</c><00:11:43.040><c> Conta</c><00:11:43.480><c> touchbased</c>
+
+00:11:44.110 --> 00:11:44.120 align:start position:0%
+Raspberry Pi should Conta touchbased
+
+
+00:11:44.120 --> 00:11:46.550 align:start position:0%
+Raspberry Pi should Conta touchbased
+with<00:11:44.279><c> Elliot</c><00:11:44.639><c> Hower</c><00:11:45.279><c> is's</c><00:11:45.560><c> right</c><00:11:45.800><c> here</c><00:11:46.320><c> his</c>
+
+00:11:46.550 --> 00:11:46.560 align:start position:0%
+with Elliot Hower is's right here his
+
+
+00:11:46.560 --> 00:11:50.230 align:start position:0%
+with Elliot Hower is's right here his
+email<00:11:46.880><c> is</c><00:11:47.160><c> right</c><00:11:47.360><c> there</c><00:11:48.360><c> and</c><00:11:48.880><c> Elliott</c><00:11:49.399><c> will</c><00:11:49.639><c> be</c>
+
+00:11:50.230 --> 00:11:50.240 align:start position:0%
+email is right there and Elliott will be
+
+
+00:11:50.240 --> 00:11:52.550 align:start position:0%
+email is right there and Elliott will be
+coordinating<00:11:51.240><c> uh</c><00:11:51.399><c> discussions</c><00:11:52.079><c> related</c><00:11:52.399><c> to</c>
+
+00:11:52.550 --> 00:11:52.560 align:start position:0%
+coordinating uh discussions related to
+
+
+00:11:52.560 --> 00:11:56.750 align:start position:0%
+coordinating uh discussions related to
+education<00:11:53.320><c> on</c><00:11:53.959><c> uh</c><00:11:54.480><c> Saturday</c><00:11:55.480><c> say</c><00:11:55.720><c> also</c><00:11:56.440><c> um</c><00:11:56.600><c> we</c>
+
+00:11:56.750 --> 00:11:56.760 align:start position:0%
+education on uh Saturday say also um we
+
+
+00:11:56.760 --> 00:11:58.790 align:start position:0%
+education on uh Saturday say also um we
+got<00:11:56.920><c> grant</c><00:11:57.240><c> funding</c><00:11:57.560><c> we're</c><00:11:57.720><c> going</c><00:11:57.800><c> to</c><00:11:57.959><c> buy</c><00:11:58.279><c> 20</c>
+
+00:11:58.790 --> 00:11:58.800 align:start position:0%
+got grant funding we're going to buy 20
+
+
+00:11:58.800 --> 00:12:01.069 align:start position:0%
+got grant funding we're going to buy 20
+pi<00:11:59.360><c> at</c><00:11:59.519><c> UNC</c><00:12:00.079><c> I'm</c><00:12:00.200><c> going</c><00:12:00.279><c> to</c><00:12:00.399><c> be</c><00:12:00.560><c> teaching</c><00:12:00.839><c> a</c>
+
+00:12:01.069 --> 00:12:01.079 align:start position:0%
+pi at UNC I'm going to be teaching a
+
+
+00:12:01.079 --> 00:12:04.230 align:start position:0%
+pi at UNC I'm going to be teaching a
+programming<00:12:01.560><c> class</c><00:12:02.000><c> using</c><00:12:03.000><c> uh</c><00:12:03.160><c> the</c><00:12:03.360><c> pi</c><00:12:03.839><c> as</c><00:12:04.040><c> the</c>
+
+00:12:04.230 --> 00:12:04.240 align:start position:0%
+programming class using uh the pi as the
+
+
+00:12:04.240 --> 00:12:05.509 align:start position:0%
+programming class using uh the pi as the
+textbook
+
+00:12:05.509 --> 00:12:05.519 align:start position:0%
+textbook
+
+
+00:12:05.519 --> 00:12:08.389 align:start position:0%
+textbook
+and<00:12:06.519><c> workbench</c><00:12:07.000><c> for</c><00:12:07.120><c> that</c><00:12:07.399><c> class</c><00:12:07.680><c> so</c><00:12:08.160><c> come</c>
+
+00:12:08.389 --> 00:12:08.399 align:start position:0%
+and workbench for that class so come
+
+
+00:12:08.399 --> 00:12:09.750 align:start position:0%
+and workbench for that class so come
+come<00:12:08.560><c> by</c><00:12:08.680><c> and</c><00:12:08.800><c> talk</c><00:12:09.000><c> to</c>
+
+00:12:09.750 --> 00:12:09.760 align:start position:0%
+come by and talk to
+
+
+00:12:09.760 --> 00:12:12.629 align:start position:0%
+come by and talk to
+this<00:12:10.760><c> so</c><00:12:11.079><c> what</c><00:12:11.240><c> is</c><00:12:11.360><c> the</c><00:12:11.519><c> Raspberry</c><00:12:12.040><c> p</c><00:12:12.360><c> well</c>
+
+00:12:12.629 --> 00:12:12.639 align:start position:0%
+this so what is the Raspberry p well
+
+
+00:12:12.639 --> 00:12:16.829 align:start position:0%
+this so what is the Raspberry p well
+it's<00:12:13.079><c> it's</c><00:12:14.000><c> uh</c><00:12:15.000><c> a</c><00:12:15.240><c> very</c><00:12:15.399><c> flexible</c><00:12:16.279><c> very</c><00:12:16.480><c> low</c>
+
+00:12:16.829 --> 00:12:16.839 align:start position:0%
+it's it's uh a very flexible very low
+
+
+00:12:16.839 --> 00:12:19.910 align:start position:0%
+it's it's uh a very flexible very low
+powerered<00:12:16.959><c> very</c><00:12:18.079><c> cheap</c><00:12:19.079><c> um</c><00:12:19.360><c> computer</c>
+
+00:12:19.910 --> 00:12:19.920 align:start position:0%
+powerered very cheap um computer
+
+
+00:12:19.920 --> 00:12:22.509 align:start position:0%
+powerered very cheap um computer
+designed<00:12:20.360><c> and</c><00:12:20.720><c> built</c><00:12:21.160><c> in</c><00:12:21.320><c> the</c><00:12:21.480><c> UK</c><00:12:22.279><c> it's</c>
+
+00:12:22.509 --> 00:12:22.519 align:start position:0%
+designed and built in the UK it's
+
+
+00:12:22.519 --> 00:12:23.910 align:start position:0%
+designed and built in the UK it's
+manufactured<00:12:23.079><c> in</c>
+
+00:12:23.910 --> 00:12:23.920 align:start position:0%
+manufactured in
+
+
+00:12:23.920 --> 00:12:27.870 align:start position:0%
+manufactured in
+Wales<00:12:24.920><c> uh</c><00:12:25.160><c> it's</c><00:12:25.639><c> a</c><00:12:25.959><c> mostly</c><00:12:26.720><c> open</c><00:12:27.720><c> uh</c>
+
+00:12:27.870 --> 00:12:27.880 align:start position:0%
+Wales uh it's a mostly open uh
+
+
+00:12:27.880 --> 00:12:30.230 align:start position:0%
+Wales uh it's a mostly open uh
+educational<00:12:28.480><c> platform</c><00:12:29.600><c> the</c><00:12:29.800><c> only</c><00:12:30.040><c> thing</c>
+
+00:12:30.230 --> 00:12:30.240 align:start position:0%
+educational platform the only thing
+
+
+00:12:30.240 --> 00:12:32.790 align:start position:0%
+educational platform the only thing
+that's<00:12:30.600><c> not</c><00:12:30.920><c> completely</c><00:12:31.440><c> open</c><00:12:32.079><c> is</c><00:12:32.320><c> the</c><00:12:32.480><c> blob</c>
+
+00:12:32.790 --> 00:12:32.800 align:start position:0%
+that's not completely open is the blob
+
+
+00:12:32.800 --> 00:12:35.750 align:start position:0%
+that's not completely open is the blob
+of<00:12:32.959><c> code</c><00:12:33.720><c> uh</c><00:12:34.440><c> constituting</c><00:12:34.959><c> the</c><00:12:35.120><c> firmware</c><00:12:35.600><c> and</c>
+
+00:12:35.750 --> 00:12:35.760 align:start position:0%
+of code uh constituting the firmware and
+
+
+00:12:35.760 --> 00:12:39.230 align:start position:0%
+of code uh constituting the firmware and
+inside<00:12:36.079><c> one</c><00:12:36.199><c> of</c><00:12:36.279><c> the</c><00:12:36.680><c> chips</c><00:12:37.680><c> uh</c><00:12:37.800><c> it's</c><00:12:38.120><c> also</c><00:12:39.120><c> uh</c>
+
+00:12:39.230 --> 00:12:39.240 align:start position:0%
+inside one of the chips uh it's also uh
+
+
+00:12:39.240 --> 00:12:41.790 align:start position:0%
+inside one of the chips uh it's also uh
+can<00:12:39.440><c> be</c><00:12:39.639><c> a</c><00:12:39.800><c> standalone</c><00:12:40.560><c> system</c><00:12:40.839><c> running</c><00:12:41.240><c> a</c><00:12:41.639><c> a</c>
+
+00:12:41.790 --> 00:12:41.800 align:start position:0%
+can be a standalone system running a a
+
+
+00:12:41.800 --> 00:12:44.030 align:start position:0%
+can be a standalone system running a a
+variety<00:12:42.120><c> of</c><00:12:42.279><c> operating</c><00:12:42.720><c> systems</c><00:12:43.560><c> and</c><00:12:43.680><c> it's</c><00:12:43.839><c> a</c>
+
+00:12:44.030 --> 00:12:44.040 align:start position:0%
+variety of operating systems and it's a
+
+
+00:12:44.040 --> 00:12:47.550 align:start position:0%
+variety of operating systems and it's a
+powerful<00:12:45.040><c> uh</c><00:12:45.800><c> programming</c><00:12:46.560><c> environment</c>
+
+00:12:47.550 --> 00:12:47.560 align:start position:0%
+powerful uh programming environment
+
+
+00:12:47.560 --> 00:12:50.750 align:start position:0%
+powerful uh programming environment
+quick<00:12:47.839><c> history</c><00:12:48.680><c> um</c><00:12:48.920><c> Brit</c><00:12:49.279><c> named</c><00:12:49.839><c> uh</c><00:12:50.279><c> Evan</c>
+
+00:12:50.750 --> 00:12:50.760 align:start position:0%
+quick history um Brit named uh Evan
+
+
+00:12:50.760 --> 00:12:54.230 align:start position:0%
+quick history um Brit named uh Evan
+Upton<00:12:51.760><c> uh</c><00:12:51.880><c> was</c><00:12:52.040><c> director</c><00:12:52.399><c> of</c><00:12:53.000><c> studies</c><00:12:53.440><c> at</c><00:12:53.880><c> at</c>
+
+00:12:54.230 --> 00:12:54.240 align:start position:0%
+Upton uh was director of studies at at
+
+
+00:12:54.240 --> 00:12:56.870 align:start position:0%
+Upton uh was director of studies at at
+Cambridge<00:12:55.240><c> and</c><00:12:55.440><c> he</c><00:12:55.600><c> noticed</c><00:12:56.240><c> that</c><00:12:56.639><c> the</c>
+
+00:12:56.870 --> 00:12:56.880 align:start position:0%
+Cambridge and he noticed that the
+
+
+00:12:56.880 --> 00:12:58.550 align:start position:0%
+Cambridge and he noticed that the
+computer<00:12:57.279><c> science</c><00:12:57.600><c> students</c><00:12:58.079><c> were</c><00:12:58.360><c> not</c>
+
+00:12:58.550 --> 00:12:58.560 align:start position:0%
+computer science students were not
+
+
+00:12:58.560 --> 00:13:00.230 align:start position:0%
+computer science students were not
+nearly<00:12:58.839><c> as</c><00:12:59.240><c> prepared</c><00:12:59.680><c> in</c><00:12:59.800><c> terms</c><00:13:00.040><c> of</c>
+
+00:13:00.230 --> 00:13:00.240 align:start position:0%
+nearly as prepared in terms of
+
+
+00:13:00.240 --> 00:13:01.870 align:start position:0%
+nearly as prepared in terms of
+programming<00:13:00.680><c> and</c><00:13:00.880><c> Hardware</c><00:13:01.440><c> as</c><00:13:01.600><c> they</c><00:13:01.760><c> had</c>
+
+00:13:01.870 --> 00:13:01.880 align:start position:0%
+programming and Hardware as they had
+
+
+00:13:01.880 --> 00:13:05.590 align:start position:0%
+programming and Hardware as they had
+been<00:13:02.079><c> in</c><00:13:02.279><c> previous</c><00:13:02.920><c> years</c><00:13:03.920><c> uh</c><00:13:04.440><c> yet</c><00:13:04.880><c> uh</c><00:13:05.440><c> for</c>
+
+00:13:05.590 --> 00:13:05.600 align:start position:0%
+been in previous years uh yet uh for
+
+
+00:13:05.600 --> 00:13:08.030 align:start position:0%
+been in previous years uh yet uh for
+example<00:13:06.000><c> one</c><00:13:06.320><c> one</c><00:13:06.560><c> student</c><00:13:07.320><c> uh</c><00:13:07.519><c> came</c><00:13:07.720><c> and</c><00:13:07.839><c> said</c>
+
+00:13:08.030 --> 00:13:08.040 align:start position:0%
+example one one student uh came and said
+
+
+00:13:08.040 --> 00:13:10.030 align:start position:0%
+example one one student uh came and said
+he<00:13:08.120><c> wanted</c><00:13:08.399><c> to</c><00:13:08.760><c> do</c><00:13:09.000><c> game</c><00:13:09.320><c> programming</c><00:13:09.880><c> and</c>
+
+00:13:10.030 --> 00:13:10.040 align:start position:0%
+he wanted to do game programming and
+
+
+00:13:10.040 --> 00:13:13.910 align:start position:0%
+he wanted to do game programming and
+Evan<00:13:10.320><c> said</c><00:13:10.560><c> well</c><00:13:10.760><c> that's</c><00:13:11.160><c> great</c><00:13:12.279><c> um</c><00:13:13.279><c> I</c><00:13:13.480><c> I</c><00:13:13.560><c> can</c>
+
+00:13:13.910 --> 00:13:13.920 align:start position:0%
+Evan said well that's great um I I can
+
+
+00:13:13.920 --> 00:13:16.310 align:start position:0%
+Evan said well that's great um I I can
+uh<00:13:14.079><c> show</c><00:13:14.320><c> you</c><00:13:14.440><c> some</c><00:13:14.639><c> books</c><00:13:15.120><c> uh</c><00:13:15.800><c> related</c><00:13:16.120><c> to</c>
+
+00:13:16.310 --> 00:13:16.320 align:start position:0%
+uh show you some books uh related to
+
+
+00:13:16.320 --> 00:13:17.910 align:start position:0%
+uh show you some books uh related to
+programming<00:13:17.079><c> what</c><00:13:17.199><c> kind</c><00:13:17.320><c> of</c><00:13:17.399><c> tools</c><00:13:17.680><c> do</c><00:13:17.800><c> you</c>
+
+00:13:17.910 --> 00:13:17.920 align:start position:0%
+programming what kind of tools do you
+
+
+00:13:17.920 --> 00:13:19.670 align:start position:0%
+programming what kind of tools do you
+have<00:13:18.040><c> at</c><00:13:18.199><c> home</c><00:13:18.399><c> and</c><00:13:18.519><c> he</c><00:13:18.639><c> says</c><00:13:18.880><c> I've</c><00:13:19.040><c> got</c><00:13:19.160><c> a</c><00:13:19.320><c> Wii</c>
+
+00:13:19.670 --> 00:13:19.680 align:start position:0%
+have at home and he says I've got a Wii
+
+
+00:13:19.680 --> 00:13:23.110 align:start position:0%
+have at home and he says I've got a Wii
+and<00:13:19.880><c> an</c>
+
+00:13:23.110 --> 00:13:23.120 align:start position:0%
+
+
+
+00:13:23.120 --> 00:13:25.829 align:start position:0%
+
+Xbox<00:13:24.120><c> so</c><00:13:24.399><c> he</c><00:13:24.560><c> kind</c><00:13:24.639><c> of</c><00:13:24.800><c> reacted</c><00:13:25.199><c> to</c><00:13:25.360><c> that</c><00:13:25.639><c> and</c>
+
+00:13:25.829 --> 00:13:25.839 align:start position:0%
+Xbox so he kind of reacted to that and
+
+
+00:13:25.839 --> 00:13:28.310 align:start position:0%
+Xbox so he kind of reacted to that and
+was<00:13:26.040><c> looking</c><00:13:26.839><c> was</c><00:13:27.120><c> was</c><00:13:27.360><c> interested</c><00:13:27.880><c> in</c><00:13:28.079><c> this</c>
+
+00:13:28.310 --> 00:13:28.320 align:start position:0%
+was looking was was interested in this
+
+
+00:13:28.320 --> 00:13:31.230 align:start position:0%
+was looking was was interested in this
+project<00:13:28.839><c> but</c><00:13:29.199><c> number</c><00:13:29.360><c> of</c><00:13:29.440><c> years</c><00:13:29.639><c> ago</c><00:13:30.639><c> but</c><00:13:31.079><c> it</c>
+
+00:13:31.230 --> 00:13:31.240 align:start position:0%
+project but number of years ago but it
+
+
+00:13:31.240 --> 00:13:34.790 align:start position:0%
+project but number of years ago but it
+didn't<00:13:31.519><c> really</c><00:13:32.160><c> percolate</c><00:13:32.760><c> until</c><00:13:33.120><c> he</c><00:13:34.040><c> uh</c><00:13:34.560><c> left</c>
+
+00:13:34.790 --> 00:13:34.800 align:start position:0%
+didn't really percolate until he uh left
+
+
+00:13:34.800 --> 00:13:37.069 align:start position:0%
+didn't really percolate until he uh left
+the<00:13:34.920><c> university</c><00:13:35.600><c> and</c><00:13:35.760><c> joined</c><00:13:36.040><c> broadcom</c><00:13:36.760><c> as</c><00:13:36.880><c> a</c>
+
+00:13:37.069 --> 00:13:37.079 align:start position:0%
+the university and joined broadcom as a
+
+
+00:13:37.079 --> 00:13:41.310 align:start position:0%
+the university and joined broadcom as a
+chip<00:13:37.560><c> architect</c><00:13:38.560><c> hit</c><00:13:38.760><c> the</c><00:13:38.880><c> next</c><00:13:39.279><c> slide</c><00:13:40.279><c> and</c><00:13:41.240><c> uh</c>
+
+00:13:41.310 --> 00:13:41.320 align:start position:0%
+chip architect hit the next slide and uh
+
+
+00:13:41.320 --> 00:13:44.790 align:start position:0%
+chip architect hit the next slide and uh
+over<00:13:41.519><c> a</c><00:13:41.639><c> few</c><00:13:41.880><c> years</c><00:13:42.360><c> time</c><00:13:43.360><c> he</c><00:13:43.519><c> brought</c><00:13:43.760><c> into</c><00:13:44.600><c> uh</c>
+
+00:13:44.790 --> 00:13:44.800 align:start position:0%
+over a few years time he brought into uh
+
+
+00:13:44.800 --> 00:13:47.269 align:start position:0%
+over a few years time he brought into uh
+mind<00:13:45.360><c> a</c><00:13:45.680><c> design</c><00:13:46.120><c> for</c><00:13:46.440><c> a</c><00:13:46.600><c> machine</c><00:13:46.959><c> that</c><00:13:47.079><c> he</c>
+
+00:13:47.269 --> 00:13:47.279 align:start position:0%
+mind a design for a machine that he
+
+
+00:13:47.279 --> 00:13:48.949 align:start position:0%
+mind a design for a machine that he
+imagined<00:13:47.760><c> would</c><00:13:47.920><c> just</c><00:13:48.079><c> run</c><00:13:48.399><c> Python</c><00:13:48.760><c> and</c><00:13:48.880><c> it</c>
+
+00:13:48.949 --> 00:13:48.959 align:start position:0%
+imagined would just run Python and it
+
+
+00:13:48.959 --> 00:13:51.990 align:start position:0%
+imagined would just run Python and it
+would<00:13:49.120><c> be</c><00:13:49.279><c> kind</c><00:13:49.360><c> of</c><00:13:49.480><c> like</c><00:13:50.160><c> the</c><00:13:50.279><c> old</c><00:13:50.480><c> BBC</c><00:13:51.440><c> uh</c>
+
+00:13:51.990 --> 00:13:52.000 align:start position:0%
+would be kind of like the old BBC uh
+
+
+00:13:52.000 --> 00:13:54.150 align:start position:0%
+would be kind of like the old BBC uh
+basic<00:13:52.519><c> computer</c><00:13:52.920><c> from</c><00:13:53.199><c> years</c><00:13:53.440><c> ago</c><00:13:53.800><c> that</c><00:13:53.959><c> was</c>
+
+00:13:54.150 --> 00:13:54.160 align:start position:0%
+basic computer from years ago that was
+
+
+00:13:54.160 --> 00:13:56.550 align:start position:0%
+basic computer from years ago that was
+sponsored<00:13:54.639><c> by</c><00:13:54.759><c> the</c><00:13:54.880><c> BBC</c><00:13:55.480><c> and</c><00:13:55.800><c> uh</c><00:13:56.000><c> became</c><00:13:56.320><c> very</c>
+
+00:13:56.550 --> 00:13:56.560 align:start position:0%
+sponsored by the BBC and uh became very
+
+
+00:13:56.560 --> 00:13:59.110 align:start position:0%
+sponsored by the BBC and uh became very
+popular<00:13:56.880><c> in</c><00:13:57.000><c> Britain</c><00:13:58.000><c> here's</c><00:13:58.279><c> a</c><00:13:58.560><c> an</c><00:13:58.639><c> early</c>
+
+00:13:59.110 --> 00:13:59.120 align:start position:0%
+popular in Britain here's a an early
+
+
+00:13:59.120 --> 00:14:02.550 align:start position:0%
+popular in Britain here's a an early
+protype<00:13:59.759><c> if</c><00:13:59.920><c> you</c><00:14:00.440><c> can</c><00:14:01.440><c> on</c><00:14:01.560><c> the</c><00:14:01.720><c> left</c><00:14:01.920><c> is</c><00:14:02.040><c> a</c><00:14:02.160><c> USB</c>
+
+00:14:02.550 --> 00:14:02.560 align:start position:0%
+protype if you can on the left is a USB
+
+
+00:14:02.560 --> 00:14:04.030 align:start position:0%
+protype if you can on the left is a USB
+connector<00:14:02.880><c> and</c><00:14:03.000><c> on</c><00:14:03.079><c> the</c><00:14:03.199><c> right</c><00:14:03.320><c> is</c><00:14:03.440><c> an</c><00:14:03.560><c> HDMI</c>
+
+00:14:04.030 --> 00:14:04.040 align:start position:0%
+connector and on the right is an HDMI
+
+
+00:14:04.040 --> 00:14:05.790 align:start position:0%
+connector and on the right is an HDMI
+video<00:14:04.360><c> connector</c><00:14:05.040><c> give</c><00:14:05.160><c> you</c><00:14:05.279><c> an</c><00:14:05.399><c> idea</c><00:14:05.600><c> of</c><00:14:05.680><c> the</c>
+
+00:14:05.790 --> 00:14:05.800 align:start position:0%
+video connector give you an idea of the
+
+
+00:14:05.800 --> 00:14:10.189 align:start position:0%
+video connector give you an idea of the
+scale<00:14:06.079><c> it's</c><00:14:06.360><c> really</c><00:14:06.880><c> small</c><00:14:08.079><c> um</c><00:14:09.079><c> he</c><00:14:09.839><c> discovered</c>
+
+00:14:10.189 --> 00:14:10.199 align:start position:0%
+scale it's really small um he discovered
+
+
+00:14:10.199 --> 00:14:13.790 align:start position:0%
+scale it's really small um he discovered
+that<00:14:10.720><c> the</c><00:14:11.320><c> bank</c><00:14:11.600><c> for</c><00:14:11.920><c> buck</c><00:14:12.920><c> available</c><00:14:13.519><c> using</c>
+
+00:14:13.790 --> 00:14:13.800 align:start position:0%
+that the bank for buck available using
+
+
+00:14:13.800 --> 00:14:18.870 align:start position:0%
+that the bank for buck available using
+broadcom<00:14:14.759><c> uh</c><00:14:14.920><c> system</c><00:14:15.240><c> on</c><00:14:15.440><c> chips</c><00:14:16.720><c> but</c><00:14:17.720><c> uh</c>
+
+00:14:18.870 --> 00:14:18.880 align:start position:0%
+broadcom uh system on chips but uh
+
+
+00:14:18.880 --> 00:14:21.749 align:start position:0%
+broadcom uh system on chips but uh
+allowed<00:14:19.880><c> much</c><00:14:20.040><c> more</c><00:14:20.240><c> enthusiastic</c><00:14:20.959><c> design</c>
+
+00:14:21.749 --> 00:14:21.759 align:start position:0%
+allowed much more enthusiastic design
+
+
+00:14:21.759 --> 00:14:26.269 align:start position:0%
+allowed much more enthusiastic design
+with<00:14:21.959><c> more</c><00:14:22.360><c> power</c><00:14:23.360><c> for</c><00:14:23.600><c> reasonable</c><00:14:24.600><c> price</c><00:14:25.600><c> uh</c>
+
+00:14:26.269 --> 00:14:26.279 align:start position:0%
+with more power for reasonable price uh
+
+
+00:14:26.279 --> 00:14:29.470 align:start position:0%
+with more power for reasonable price uh
+this<00:14:26.560><c> developed</c><00:14:27.160><c> into</c><00:14:27.959><c> a</c><00:14:28.160><c> partnership</c><00:14:29.240><c> with</c>
+
+00:14:29.470 --> 00:14:29.480 align:start position:0%
+this developed into a partnership with
+
+
+00:14:29.480 --> 00:14:32.030 align:start position:0%
+this developed into a partnership with
+some<00:14:29.639><c> of</c><00:14:29.800><c> the</c><00:14:30.160><c> commercial</c><00:14:31.160><c> uh</c><00:14:31.320><c> entities</c><00:14:31.880><c> in</c>
+
+00:14:32.030 --> 00:14:32.040 align:start position:0%
+some of the commercial uh entities in
+
+
+00:14:32.040 --> 00:14:35.870 align:start position:0%
+some of the commercial uh entities in
+the<00:14:32.680><c> UK</c><00:14:33.680><c> and</c><00:14:34.639><c> it</c><00:14:34.839><c> just</c><00:14:35.000><c> got</c><00:14:35.199><c> bigger</c><00:14:35.480><c> and</c><00:14:35.639><c> bigger</c>
+
+00:14:35.870 --> 00:14:35.880 align:start position:0%
+the UK and it just got bigger and bigger
+
+
+00:14:35.880 --> 00:14:37.189 align:start position:0%
+the UK and it just got bigger and bigger
+and<00:14:36.040><c> bigger</c><00:14:36.399><c> to</c><00:14:36.560><c> the</c><00:14:36.680><c> point</c><00:14:36.839><c> where</c><00:14:37.079><c> they</c>
+
+00:14:37.189 --> 00:14:37.199 align:start position:0%
+and bigger to the point where they
+
+
+00:14:37.199 --> 00:14:38.870 align:start position:0%
+and bigger to the point where they
+decided<00:14:37.639><c> okay</c><00:14:37.800><c> well</c><00:14:37.920><c> we're</c><00:14:38.079><c> going</c><00:14:38.199><c> to</c><00:14:38.720><c> we're</c>
+
+00:14:38.870 --> 00:14:38.880 align:start position:0%
+decided okay well we're going to we're
+
+
+00:14:38.880 --> 00:14:40.590 align:start position:0%
+decided okay well we're going to we're
+going<00:14:39.000><c> to</c><00:14:39.320><c> arrange</c><00:14:39.759><c> for</c><00:14:39.920><c> the</c><00:14:40.079><c> contract</c>
+
+00:14:40.590 --> 00:14:40.600 align:start position:0%
+going to arrange for the contract
+
+
+00:14:40.600 --> 00:14:42.509 align:start position:0%
+going to arrange for the contract
+manufacturer<00:14:41.279><c> to</c><00:14:41.399><c> make</c><00:14:41.680><c> 10,000</c><00:14:42.240><c> of</c><00:14:42.360><c> these</c>
+
+00:14:42.509 --> 00:14:42.519 align:start position:0%
+manufacturer to make 10,000 of these
+
+
+00:14:42.519 --> 00:14:45.389 align:start position:0%
+manufacturer to make 10,000 of these
+boards<00:14:43.320><c> and</c><00:14:43.480><c> everybody</c><00:14:43.800><c> will</c><00:14:44.000><c> be</c><00:14:44.199><c> happy</c><00:14:45.000><c> and</c>
+
+00:14:45.389 --> 00:14:45.399 align:start position:0%
+boards and everybody will be happy and
+
+
+00:14:45.399 --> 00:14:48.310 align:start position:0%
+boards and everybody will be happy and
+they<00:14:45.519><c> made</c><00:14:45.720><c> them</c><00:14:45.839><c> for</c><00:14:46.120><c> sale</c><00:14:46.920><c> uh</c><00:14:47.120><c> available</c><00:14:47.759><c> on</c>
+
+00:14:48.310 --> 00:14:48.320 align:start position:0%
+they made them for sale uh available on
+
+
+00:14:48.320 --> 00:14:52.629 align:start position:0%
+they made them for sale uh available on
+uh<00:14:48.800><c> February</c><00:14:49.240><c> 29th</c><00:14:50.040><c> last</c><00:14:50.320><c> year</c><00:14:51.040><c> and</c><00:14:51.480><c> that</c><00:14:51.800><c> day</c>
+
+00:14:52.629 --> 00:14:52.639 align:start position:0%
+uh February 29th last year and that day
+
+
+00:14:52.639 --> 00:14:56.670 align:start position:0%
+uh February 29th last year and that day
+100,000<00:14:53.360><c> people</c><00:14:54.160><c> hit</c><00:14:54.519><c> the</c><00:14:54.880><c> order</c><00:14:55.680><c> button</c>
+
+00:14:56.670 --> 00:14:56.680 align:start position:0%
+100,000 people hit the order button
+
+
+00:14:56.680 --> 00:14:59.670 align:start position:0%
+100,000 people hit the order button
+actually<00:14:57.000><c> they</c><00:14:57.199><c> crashed</c><00:14:57.600><c> the</c><00:14:58.040><c> websites</c><00:14:59.120><c> and</c>
+
+00:14:59.670 --> 00:14:59.680 align:start position:0%
+actually they crashed the websites and
+
+
+00:14:59.680 --> 00:15:01.629 align:start position:0%
+actually they crashed the websites and
+those<00:14:59.880><c> of</c><00:15:00.079><c> us</c><00:15:00.279><c> that</c><00:15:00.360><c> were</c><00:15:00.519><c> trying</c><00:15:00.759><c> to</c><00:15:00.920><c> buy</c><00:15:01.199><c> them</c>
+
+00:15:01.629 --> 00:15:01.639 align:start position:0%
+those of us that were trying to buy them
+
+
+00:15:01.639 --> 00:15:03.629 align:start position:0%
+those of us that were trying to buy them
+spent<00:15:02.639><c> hours</c><00:15:02.880><c> and</c><00:15:03.000><c> hours</c><00:15:03.199><c> and</c><00:15:03.320><c> hours</c><00:15:03.519><c> and</c>
+
+00:15:03.629 --> 00:15:03.639 align:start position:0%
+spent hours and hours and hours and
+
+
+00:15:03.639 --> 00:15:10.030 align:start position:0%
+spent hours and hours and hours and
+hours<00:15:04.759><c> with</c><00:15:05.759><c> web</c><00:15:06.079><c> timeouts</c><00:15:06.519><c> and</c><00:15:06.680><c> so</c><00:15:06.959><c> on</c><00:15:07.959><c> uh</c><00:15:09.040><c> and</c>
+
+00:15:10.030 --> 00:15:10.040 align:start position:0%
+hours with web timeouts and so on uh and
+
+
+00:15:10.040 --> 00:15:12.030 align:start position:0%
+hours with web timeouts and so on uh and
+there<00:15:10.160><c> was</c><00:15:10.279><c> a</c><00:15:10.360><c> long</c><00:15:10.560><c> lead</c><00:15:10.920><c> time</c><00:15:11.279><c> during</c><00:15:11.680><c> the</c>
+
+00:15:12.030 --> 00:15:12.040 align:start position:0%
+there was a long lead time during the
+
+
+00:15:12.040 --> 00:15:15.509 align:start position:0%
+there was a long lead time during the
+the<00:15:12.240><c> year</c><00:15:13.000><c> but</c><00:15:13.959><c> the</c><00:15:14.480><c> popularity</c><00:15:15.040><c> of</c><00:15:15.160><c> the</c><00:15:15.320><c> thing</c>
+
+00:15:15.509 --> 00:15:15.519 align:start position:0%
+the year but the popularity of the thing
+
+
+00:15:15.519 --> 00:15:19.990 align:start position:0%
+the year but the popularity of the thing
+just<00:15:16.040><c> continue</c><00:15:16.600><c> to</c><00:15:17.279><c> mushroom</c><00:15:18.000><c> next</c><00:15:18.480><c> slide</c><00:15:19.480><c> and</c>
+
+00:15:19.990 --> 00:15:20.000 align:start position:0%
+just continue to mushroom next slide and
+
+
+00:15:20.000 --> 00:15:22.470 align:start position:0%
+just continue to mushroom next slide and
+at<00:15:20.199><c> this</c><00:15:20.440><c> point</c><00:15:21.279><c> uh</c><00:15:21.519><c> the</c><00:15:21.639><c> estimate</c><00:15:22.040><c> is</c><00:15:22.279><c> they're</c>
+
+00:15:22.470 --> 00:15:22.480 align:start position:0%
+at this point uh the estimate is they're
+
+
+00:15:22.480 --> 00:15:25.470 align:start position:0%
+at this point uh the estimate is they're
+about<00:15:22.600><c> a</c><00:15:22.959><c> million</c><00:15:23.959><c> out</c><00:15:24.079><c> in</c><00:15:24.240><c> the</c><00:15:24.360><c> world</c><00:15:25.000><c> right</c>
+
+00:15:25.470 --> 00:15:25.480 align:start position:0%
+about a million out in the world right
+
+
+00:15:25.480 --> 00:15:26.990 align:start position:0%
+about a million out in the world right
+now
+
+00:15:26.990 --> 00:15:27.000 align:start position:0%
+now
+
+
+00:15:27.000 --> 00:15:29.949 align:start position:0%
+now
+but<00:15:28.000><c> returning</c><00:15:28.480><c> to</c><00:15:28.759><c> the</c>
+
+00:15:29.949 --> 00:15:29.959 align:start position:0%
+but returning to the
+
+
+00:15:29.959 --> 00:15:32.509 align:start position:0%
+but returning to the
+the<00:15:30.199><c> the</c><00:15:30.360><c> key</c><00:15:30.639><c> point</c><00:15:31.519><c> the</c><00:15:31.680><c> motivation</c><00:15:32.240><c> for</c>
+
+00:15:32.509 --> 00:15:32.519 align:start position:0%
+the the key point the motivation for
+
+
+00:15:32.519 --> 00:15:34.910 align:start position:0%
+the the key point the motivation for
+this<00:15:33.079><c> piece</c><00:15:33.240><c> of</c><00:15:33.399><c> Hardware</c><00:15:34.199><c> was</c><00:15:34.399><c> not</c><00:15:34.560><c> to</c><00:15:34.720><c> make</c>
+
+00:15:34.910 --> 00:15:34.920 align:start position:0%
+this piece of Hardware was not to make
+
+
+00:15:34.920 --> 00:15:38.749 align:start position:0%
+this piece of Hardware was not to make
+money<00:15:35.519><c> it</c><00:15:35.720><c> wasn't</c><00:15:36.480><c> to</c><00:15:36.880><c> provide</c><00:15:37.440><c> a</c><00:15:37.680><c> cool</c><00:15:38.040><c> toy</c>
+
+00:15:38.749 --> 00:15:38.759 align:start position:0%
+money it wasn't to provide a cool toy
+
+
+00:15:38.759 --> 00:15:41.590 align:start position:0%
+money it wasn't to provide a cool toy
+for<00:15:39.440><c> run-ups</c><00:15:40.440><c> uh</c><00:15:40.560><c> it's</c><00:15:40.800><c> oriented</c><00:15:41.240><c> towards</c>
+
+00:15:41.590 --> 00:15:41.600 align:start position:0%
+for run-ups uh it's oriented towards
+
+
+00:15:41.600 --> 00:15:45.150 align:start position:0%
+for run-ups uh it's oriented towards
+education<00:15:42.360><c> and</c><00:15:42.480><c> it's</c><00:15:42.720><c> oriented</c><00:15:43.519><c> towards</c><00:15:44.519><c> uh</c>
+
+00:15:45.150 --> 00:15:45.160 align:start position:0%
+education and it's oriented towards uh
+
+
+00:15:45.160 --> 00:15:48.309 align:start position:0%
+education and it's oriented towards uh
+improving<00:15:46.160><c> the</c><00:15:46.920><c> uh</c><00:15:47.079><c> skills</c><00:15:47.440><c> and</c><00:15:47.680><c> backgrounds</c>
+
+00:15:48.309 --> 00:15:48.319 align:start position:0%
+improving the uh skills and backgrounds
+
+
+00:15:48.319 --> 00:15:51.309 align:start position:0%
+improving the uh skills and backgrounds
+of<00:15:48.759><c> kids</c><00:15:49.240><c> as</c><00:15:49.360><c> they</c><00:15:49.519><c> grow</c><00:15:49.800><c> up</c><00:15:50.759><c> Evan</c><00:15:51.120><c> was</c>
+
+00:15:51.309 --> 00:15:51.319 align:start position:0%
+of kids as they grow up Evan was
+
+
+00:15:51.319 --> 00:15:54.230 align:start position:0%
+of kids as they grow up Evan was
+originally<00:15:51.959><c> targeting</c><00:15:52.639><c> University</c><00:15:53.279><c> students</c>
+
+00:15:54.230 --> 00:15:54.240 align:start position:0%
+originally targeting University students
+
+
+00:15:54.240 --> 00:15:57.189 align:start position:0%
+originally targeting University students
+but<00:15:54.440><c> it's</c><00:15:55.199><c> the</c><00:15:55.600><c> the</c><00:15:56.160><c> scope</c><00:15:56.480><c> and</c><00:15:56.720><c> power</c><00:15:56.920><c> of</c><00:15:57.040><c> this</c>
+
+00:15:57.189 --> 00:15:57.199 align:start position:0%
+but it's the the scope and power of this
+
+
+00:15:57.199 --> 00:15:59.590 align:start position:0%
+but it's the the scope and power of this
+machine<00:15:57.800><c> in</c><00:15:58.000><c> particular</c><00:15:58.560><c> it's</c><00:15:59.240><c> to</c><00:15:59.319><c> run</c>
+
+00:15:59.590 --> 00:15:59.600 align:start position:0%
+machine in particular it's to run
+
+
+00:15:59.600 --> 00:16:01.829 align:start position:0%
+machine in particular it's to run
+scratch<00:16:00.240><c> which</c><00:16:00.480><c> you'll</c><00:16:00.639><c> be</c><00:16:00.759><c> seeing</c><00:16:01.639><c> in</c><00:16:01.720><c> a</c>
+
+00:16:01.829 --> 00:16:01.839 align:start position:0%
+scratch which you'll be seeing in a
+
+
+00:16:01.839 --> 00:16:06.269 align:start position:0%
+scratch which you'll be seeing in a
+little<00:16:02.279><c> bit</c><00:16:03.279><c> uh</c><00:16:03.680><c> allows</c><00:16:04.079><c> it</c><00:16:04.600><c> to</c><00:16:05.319><c> be</c><00:16:05.759><c> very</c><00:16:06.040><c> very</c>
+
+00:16:06.269 --> 00:16:06.279 align:start position:0%
+little bit uh allows it to be very very
+
+
+00:16:06.279 --> 00:16:09.309 align:start position:0%
+little bit uh allows it to be very very
+accessible<00:16:07.240><c> even</c><00:16:07.519><c> to</c><00:16:08.040><c> uh</c><00:16:08.279><c> grade</c><00:16:08.600><c> school</c>
+
+00:16:09.309 --> 00:16:09.319 align:start position:0%
+accessible even to uh grade school
+
+
+00:16:09.319 --> 00:16:13.509 align:start position:0%
+accessible even to uh grade school
+children<00:16:10.319><c> so</c><00:16:10.560><c> that's</c><00:16:10.800><c> what</c><00:16:10.959><c> it's</c><00:16:11.199><c> about</c>
+
+00:16:13.509 --> 00:16:13.519 align:start position:0%
+children so that's what it's about
+
+
+00:16:13.519 --> 00:16:16.870 align:start position:0%
+children so that's what it's about
+next<00:16:14.519><c> this</c><00:16:14.680><c> is</c><00:16:15.680><c> uh</c><00:16:15.959><c> blown</c><00:16:16.240><c> up</c><00:16:16.440><c> picture</c><00:16:16.680><c> of</c>
+
+00:16:16.870 --> 00:16:16.880 align:start position:0%
+next this is uh blown up picture of
+
+
+00:16:16.880 --> 00:16:19.150 align:start position:0%
+next this is uh blown up picture of
+raspberry
+
+00:16:19.150 --> 00:16:19.160 align:start position:0%
+raspberry
+
+
+00:16:19.160 --> 00:16:22.110 align:start position:0%
+raspberry
+pie<00:16:20.160><c> very</c><00:16:20.440><c> good</c>
+
+00:16:22.110 --> 00:16:22.120 align:start position:0%
+pie very good
+
+
+00:16:22.120 --> 00:16:24.710 align:start position:0%
+pie very good
+um<00:16:23.120><c> you</c><00:16:23.199><c> can</c><00:16:23.360><c> see</c><00:16:23.560><c> them</c><00:16:23.880><c> they're</c><00:16:24.040><c> sitting</c><00:16:24.600><c> over</c>
+
+00:16:24.710 --> 00:16:24.720 align:start position:0%
+um you can see them they're sitting over
+
+
+00:16:24.720 --> 00:16:26.389 align:start position:0%
+um you can see them they're sitting over
+on<00:16:24.839><c> the</c><00:16:24.959><c> table</c><00:16:25.319><c> back</c><00:16:25.519><c> there</c><00:16:25.680><c> there's</c><00:16:25.920><c> one</c><00:16:26.199><c> here</c>
+
+00:16:26.389 --> 00:16:26.399 align:start position:0%
+on the table back there there's one here
+
+
+00:16:26.399 --> 00:16:27.509 align:start position:0%
+on the table back there there's one here
+there's<00:16:26.560><c> one</c><00:16:26.680><c> on</c><00:16:26.800><c> the</c><00:16:26.920><c> back</c><00:16:27.120><c> of</c><00:16:27.240><c> this</c>
+
+00:16:27.509 --> 00:16:27.519 align:start position:0%
+there's one on the back of this
+
+
+00:16:27.519 --> 00:16:29.309 align:start position:0%
+there's one on the back of this
+workstation<00:16:28.519><c> uh</c><00:16:28.600><c> they're</c><00:16:28.720><c> all</c><00:16:28.920><c> all</c><00:16:29.000><c> over</c><00:16:29.120><c> the</c>
+
+00:16:29.309 --> 00:16:29.319 align:start position:0%
+workstation uh they're all all over the
+
+
+00:16:29.319 --> 00:16:31.110 align:start position:0%
+workstation uh they're all all over the
+place<00:16:29.800><c> but</c><00:16:30.120><c> this</c><00:16:30.199><c> is</c><00:16:30.319><c> what</c><00:16:30.440><c> it</c><00:16:30.519><c> looks</c><00:16:30.720><c> like</c><00:16:30.880><c> up</c>
+
+00:16:31.110 --> 00:16:31.120 align:start position:0%
+place but this is what it looks like up
+
+
+00:16:31.120 --> 00:16:33.670 align:start position:0%
+place but this is what it looks like up
+close<00:16:31.959><c> and</c><00:16:32.120><c> as</c><00:16:32.199><c> you</c><00:16:32.319><c> can</c><00:16:32.519><c> see</c><00:16:32.800><c> it</c><00:16:33.000><c> has</c><00:16:33.199><c> a</c><00:16:33.440><c> great</c>
+
+00:16:33.670 --> 00:16:33.680 align:start position:0%
+close and as you can see it has a great
+
+
+00:16:33.680 --> 00:16:34.790 align:start position:0%
+close and as you can see it has a great
+deal<00:16:33.880><c> of</c>
+
+00:16:34.790 --> 00:16:34.800 align:start position:0%
+deal of
+
+
+00:16:34.800 --> 00:16:38.550 align:start position:0%
+deal of
+IO<00:16:35.800><c> that's</c><00:16:36.000><c> about</c><00:16:36.199><c> the</c><00:16:36.360><c> size</c><00:16:36.519><c> of</c><00:16:36.600><c> a</c><00:16:36.720><c> CR</c><00:16:37.720><c> yeah</c>
+
+00:16:38.550 --> 00:16:38.560 align:start position:0%
+IO that's about the size of a CR yeah
+
+
+00:16:38.560 --> 00:16:40.189 align:start position:0%
+IO that's about the size of a CR yeah
+yeah
+
+00:16:40.189 --> 00:16:40.199 align:start position:0%
+yeah
+
+
+00:16:40.199 --> 00:16:41.990 align:start position:0%
+yeah
+um
+
+00:16:41.990 --> 00:16:42.000 align:start position:0%
+um
+
+
+00:16:42.000 --> 00:16:47.189 align:start position:0%
+um
+we<00:16:43.000><c> here</c><00:16:43.360><c> here</c><00:16:43.680><c> here</c><00:16:43.880><c> is</c><00:16:44.319><c> a</c><00:16:44.480><c> res</c><00:16:45.319><c> high</c><00:16:46.079><c> card</c><00:16:47.079><c> as</c>
+
+00:16:47.189 --> 00:16:47.199 align:start position:0%
+we here here here is a res high card as
+
+
+00:16:47.199 --> 00:16:48.829 align:start position:0%
+we here here here is a res high card as
+he<00:16:47.319><c> said</c><00:16:47.519><c> it's</c><00:16:47.720><c> slightly</c><00:16:48.079><c> bigger</c><00:16:48.360><c> than</c><00:16:48.519><c> a</c>
+
+00:16:48.829 --> 00:16:48.839 align:start position:0%
+he said it's slightly bigger than a
+
+
+00:16:48.839 --> 00:16:52.269 align:start position:0%
+he said it's slightly bigger than a
+credit<00:16:49.319><c> card</c><00:16:50.319><c> so</c><00:16:51.120><c> just</c><00:16:51.480><c> kind</c><00:16:51.600><c> of</c><00:16:51.759><c> going</c><00:16:52.040><c> around</c>
+
+00:16:52.269 --> 00:16:52.279 align:start position:0%
+credit card so just kind of going around
+
+
+00:16:52.279 --> 00:16:54.790 align:start position:0%
+credit card so just kind of going around
+the<00:16:52.480><c> clock</c><00:16:52.800><c> here</c><00:16:53.399><c> we've</c><00:16:53.680><c> got</c><00:16:54.079><c> a</c><00:16:54.319><c> composite</c>
+
+00:16:54.790 --> 00:16:54.800 align:start position:0%
+the clock here we've got a composite
+
+
+00:16:54.800 --> 00:16:58.550 align:start position:0%
+the clock here we've got a composite
+video<00:16:55.519><c> output</c><00:16:56.519><c> uh</c><00:16:57.319><c> a</c><00:16:57.560><c> high</c><00:16:58.079><c> reasonable</c>
+
+00:16:58.550 --> 00:16:58.560 align:start position:0%
+video output uh a high reasonable
+
+
+00:16:58.560 --> 00:17:00.949 align:start position:0%
+video output uh a high reasonable
+quality<00:16:58.880><c> quity</c><00:16:59.399><c> TV</c><00:16:59.720><c> monitor</c><00:17:00.240><c> allows</c>
+
+00:17:00.949 --> 00:17:00.959 align:start position:0%
+quality quity TV monitor allows
+
+
+00:17:00.959 --> 00:17:04.590 align:start position:0%
+quality quity TV monitor allows
+excellent<00:17:01.959><c> uh</c><00:17:02.519><c> sound</c><00:17:03.519><c> uh</c><00:17:03.680><c> I</c><00:17:03.800><c> mean</c><00:17:04.160><c> uh</c><00:17:04.319><c> sorry</c>
+
+00:17:04.590 --> 00:17:04.600 align:start position:0%
+excellent uh sound uh I mean uh sorry
+
+
+00:17:04.600 --> 00:17:07.870 align:start position:0%
+excellent uh sound uh I mean uh sorry
+video<00:17:05.199><c> quality</c><00:17:06.199><c> got</c><00:17:06.400><c> B</c><00:17:06.720><c> sound</c>
+
+00:17:07.870 --> 00:17:07.880 align:start position:0%
+video quality got B sound
+
+
+00:17:07.880 --> 00:17:10.909 align:start position:0%
+video quality got B sound
+output<00:17:08.880><c> um</c><00:17:09.439><c> two</c><00:17:09.720><c> USB</c><00:17:10.120><c> connectors</c><00:17:10.559><c> on</c><00:17:10.760><c> the</c>
+
+00:17:10.909 --> 00:17:10.919 align:start position:0%
+output um two USB connectors on the
+
+
+00:17:10.919 --> 00:17:14.590 align:start position:0%
+output um two USB connectors on the
+model<00:17:11.319><c> B</c><00:17:11.679><c> which</c><00:17:11.799><c> is</c><00:17:11.919><c> the</c><00:17:12.240><c> $35</c><00:17:13.240><c> unit</c><00:17:14.160><c> one</c><00:17:14.319><c> on</c><00:17:14.480><c> the</c>
+
+00:17:14.590 --> 00:17:14.600 align:start position:0%
+model B which is the $35 unit one on the
+
+
+00:17:14.600 --> 00:17:16.549 align:start position:0%
+model B which is the $35 unit one on the
+model<00:17:14.919><c> A</c><00:17:15.679><c> is</c>
+
+00:17:16.549 --> 00:17:16.559 align:start position:0%
+model A is
+
+
+00:17:16.559 --> 00:17:20.350 align:start position:0%
+model A is
+$25<00:17:17.559><c> uh</c><00:17:17.760><c> wired</c><00:17:18.160><c> ethernet</c><00:17:19.160><c> uh</c><00:17:19.280><c> for</c><00:17:19.520><c> 10</c><00:17:19.720><c> or</c><00:17:20.160><c> 100</c>
+
+00:17:20.350 --> 00:17:20.360 align:start position:0%
+$25 uh wired ethernet uh for 10 or 100
+
+
+00:17:20.360 --> 00:17:23.069 align:start position:0%
+$25 uh wired ethernet uh for 10 or 100
+megabit<00:17:20.839><c> ethernet</c><00:17:21.760><c> uh</c><00:17:21.880><c> on</c><00:17:22.039><c> the</c><00:17:22.199><c> model</c><00:17:22.480><c> B</c><00:17:22.919><c> the</c>
+
+00:17:23.069 --> 00:17:23.079 align:start position:0%
+megabit ethernet uh on the model B the
+
+
+00:17:23.079 --> 00:17:25.230 align:start position:0%
+megabit ethernet uh on the model B the
+model<00:17:23.360><c> A</c><00:17:23.600><c> does</c><00:17:23.839><c> not</c><00:17:24.160><c> have</c>
+
+00:17:25.230 --> 00:17:25.240 align:start position:0%
+model A does not have
+
+
+00:17:25.240 --> 00:17:27.510 align:start position:0%
+model A does not have
+ethernet<00:17:26.240><c> HDMI</c>
+
+00:17:27.510 --> 00:17:27.520 align:start position:0%
+ethernet HDMI
+
+
+00:17:27.520 --> 00:17:29.789 align:start position:0%
+ethernet HDMI
+video<00:17:28.520><c> um</c>
+
+00:17:29.789 --> 00:17:29.799 align:start position:0%
+video um
+
+
+00:17:29.799 --> 00:17:33.990 align:start position:0%
+video um
+this<00:17:30.120><c> is</c><00:17:30.840><c> the</c><00:17:31.520><c> main</c><00:17:32.520><c> unit</c><00:17:32.880><c> it's</c><00:17:33.039><c> a</c><00:17:33.280><c> broadcom</c>
+
+00:17:33.990 --> 00:17:34.000 align:start position:0%
+this is the main unit it's a broadcom
+
+
+00:17:34.000 --> 00:17:37.470 align:start position:0%
+this is the main unit it's a broadcom
+chip<00:17:34.280><c> on</c><00:17:34.840><c> Silicon</c><00:17:35.280><c> on</c>
+
+00:17:37.470 --> 00:17:37.480 align:start position:0%
+chip on Silicon on
+
+
+00:17:37.480 --> 00:17:40.870 align:start position:0%
+chip on Silicon on
+chip<00:17:38.679><c> underneath</c><00:17:39.679><c> sorry</c><00:17:40.000><c> system</c><00:17:40.280><c> on</c><00:17:40.559><c> chip</c>
+
+00:17:40.870 --> 00:17:40.880 align:start position:0%
+chip underneath sorry system on chip
+
+
+00:17:40.880 --> 00:17:43.190 align:start position:0%
+chip underneath sorry system on chip
+underneath<00:17:41.480><c> and</c><00:17:41.640><c> sitting</c><00:17:41.960><c> on</c><00:17:42.240><c> top</c><00:17:42.440><c> of</c><00:17:42.600><c> it</c><00:17:42.960><c> is</c>
+
+00:17:43.190 --> 00:17:43.200 align:start position:0%
+underneath and sitting on top of it is
+
+
+00:17:43.200 --> 00:17:46.909 align:start position:0%
+underneath and sitting on top of it is
+the<00:17:43.400><c> RAM</c><00:17:44.280><c> memory</c><00:17:45.280><c> which</c><00:17:45.440><c> is</c><00:17:45.919><c> a</c><00:17:46.080><c> half</c><00:17:46.240><c> a</c>
+
+00:17:46.909 --> 00:17:46.919 align:start position:0%
+the RAM memory which is a half a
+
+
+00:17:46.919 --> 00:17:50.070 align:start position:0%
+the RAM memory which is a half a
+gigabyte<00:17:47.919><c> uh</c><00:17:48.039><c> for</c><00:17:48.400><c> the</c><00:17:48.640><c> model</c><00:17:48.919><c> B</c><00:17:49.320><c> which</c><00:17:49.480><c> is</c><00:17:49.880><c> the</c>
+
+00:17:50.070 --> 00:17:50.080 align:start position:0%
+gigabyte uh for the model B which is the
+
+
+00:17:50.080 --> 00:17:52.190 align:start position:0%
+gigabyte uh for the model B which is the
+the<00:17:50.280><c> vast</c><00:17:50.640><c> majority</c><00:17:51.039><c> of</c><00:17:51.200><c> sales</c><00:17:51.720><c> up</c><00:17:51.840><c> to</c><00:17:52.039><c> this</c>
+
+00:17:52.190 --> 00:17:52.200 align:start position:0%
+the vast majority of sales up to this
+
+
+00:17:52.200 --> 00:17:55.990 align:start position:0%
+the vast majority of sales up to this
+point<00:17:52.480><c> have</c><00:17:52.640><c> been</c><00:17:52.880><c> of</c><00:17:53.400><c> model</c><00:17:53.640><c> B</c><00:17:53.840><c> is</c><00:17:54.039><c> the</c><00:17:54.120><c> $35</c>
+
+00:17:55.990 --> 00:17:56.000 align:start position:0%
+point have been of model B is the $35
+
+
+00:17:56.000 --> 00:17:59.270 align:start position:0%
+point have been of model B is the $35
+unit<00:17:57.000><c> uh</c><00:17:57.080><c> the</c><00:17:57.200><c> model</c><00:17:57.440><c> A</c><00:17:57.640><c> has</c><00:17:57.880><c> a</c><00:17:58.039><c> Quarter</c><00:17:58.640><c> G</c><00:17:59.080><c> of</c>
+
+00:17:59.270 --> 00:17:59.280 align:start position:0%
+unit uh the model A has a Quarter G of
+
+
+00:17:59.280 --> 00:18:02.470 align:start position:0%
+unit uh the model A has a Quarter G of
+RAM<00:18:00.240><c> and</c><00:18:00.400><c> then</c><00:18:00.880><c> uh</c><00:18:01.320><c> working</c><00:18:01.600><c> our</c><00:18:01.799><c> way</c><00:18:02.000><c> around</c>
+
+00:18:02.470 --> 00:18:02.480 align:start position:0%
+RAM and then uh working our way around
+
+
+00:18:02.480 --> 00:18:04.510 align:start position:0%
+RAM and then uh working our way around
+here<00:18:02.640><c> is</c><00:18:02.880><c> the</c><00:18:03.120><c> power</c><00:18:03.400><c> connector</c><00:18:03.960><c> which</c><00:18:04.080><c> is</c><00:18:04.200><c> a</c>
+
+00:18:04.510 --> 00:18:04.520 align:start position:0%
+here is the power connector which is a
+
+
+00:18:04.520 --> 00:18:07.669 align:start position:0%
+here is the power connector which is a
+standard<00:18:04.960><c> micro</c><00:18:05.640><c> USB</c><00:18:06.600><c> like</c><00:18:06.799><c> you</c><00:18:06.919><c> would</c><00:18:07.120><c> use</c>
+
+00:18:07.669 --> 00:18:07.679 align:start position:0%
+standard micro USB like you would use
+
+
+00:18:07.679 --> 00:18:09.549 align:start position:0%
+standard micro USB like you would use
+with<00:18:07.880><c> a</c><00:18:08.039><c> cell</c><00:18:08.320><c> phone</c><00:18:08.679><c> and</c><00:18:08.880><c> a</c><00:18:09.039><c> cell</c><00:18:09.280><c> phone</c>
+
+00:18:09.549 --> 00:18:09.559 align:start position:0%
+with a cell phone and a cell phone
+
+
+00:18:09.559 --> 00:18:12.470 align:start position:0%
+with a cell phone and a cell phone
+charger<00:18:10.080><c> that</c><00:18:10.240><c> puts</c><00:18:10.440><c> out</c><00:18:10.760><c> adequate</c><00:18:11.480><c> current</c>
+
+00:18:12.470 --> 00:18:12.480 align:start position:0%
+charger that puts out adequate current
+
+
+00:18:12.480 --> 00:18:15.830 align:start position:0%
+charger that puts out adequate current
+uh<00:18:12.799><c> typically</c><00:18:13.159><c> a</c><00:18:13.280><c> minimum</c><00:18:13.640><c> of</c><00:18:13.799><c> 710</c><00:18:14.400><c> but</c><00:18:14.840><c> Amper</c>
+
+00:18:15.830 --> 00:18:15.840 align:start position:0%
+uh typically a minimum of 710 but Amper
+
+
+00:18:15.840 --> 00:18:18.789 align:start position:0%
+uh typically a minimum of 710 but Amper
+uh<00:18:16.000><c> works</c><00:18:16.440><c> great</c><00:18:16.840><c> as</c><00:18:16.960><c> a</c><00:18:17.120><c> power</c><00:18:17.480><c> source</c><00:18:18.480><c> you</c><00:18:18.600><c> see</c>
+
+00:18:18.789 --> 00:18:18.799 align:start position:0%
+uh works great as a power source you see
+
+
+00:18:18.799 --> 00:18:22.430 align:start position:0%
+uh works great as a power source you see
+that<00:18:19.000><c> little</c><00:18:19.880><c> cylinder</c><00:18:20.480><c> right</c><00:18:20.840><c> there</c><00:18:21.840><c> do</c><00:18:22.080><c> not</c>
+
+00:18:22.430 --> 00:18:22.440 align:start position:0%
+that little cylinder right there do not
+
+
+00:18:22.440 --> 00:18:25.470 align:start position:0%
+that little cylinder right there do not
+put<00:18:22.640><c> your</c><00:18:22.880><c> thumb</c><00:18:23.200><c> on</c><00:18:23.559><c> that</c><00:18:24.400><c> to</c><00:18:24.640><c> get</c><00:18:24.880><c> leverage</c>
+
+00:18:25.470 --> 00:18:25.480 align:start position:0%
+put your thumb on that to get leverage
+
+
+00:18:25.480 --> 00:18:26.630 align:start position:0%
+put your thumb on that to get leverage
+to<00:18:25.679><c> push</c><00:18:25.880><c> the</c>
+
+00:18:26.630 --> 00:18:26.640 align:start position:0%
+to push the
+
+
+00:18:26.640 --> 00:18:31.390 align:start position:0%
+to push the
+micro<00:18:27.640><c> uh</c><00:18:28.960><c> connector</c><00:18:29.360><c> in</c><00:18:30.039><c> it's</c><00:18:30.280><c> surface</c><00:18:31.039><c> mount</c>
+
+00:18:31.390 --> 00:18:31.400 align:start position:0%
+micro uh connector in it's surface mount
+
+
+00:18:31.400 --> 00:18:33.830 align:start position:0%
+micro uh connector in it's surface mount
+soldered<00:18:31.840><c> and</c><00:18:31.960><c> it'll</c><00:18:32.159><c> just</c><00:18:32.360><c> pop</c><00:18:32.679><c> right</c><00:18:32.840><c> off</c>
+
+00:18:33.830 --> 00:18:33.840 align:start position:0%
+soldered and it'll just pop right off
+
+
+00:18:33.840 --> 00:18:36.270 align:start position:0%
+soldered and it'll just pop right off
+and<00:18:34.200><c> if</c><00:18:34.400><c> that</c><00:18:34.640><c> happens</c><00:18:34.960><c> to</c><00:18:35.159><c> you</c><00:18:35.640><c> I</c><00:18:35.760><c> can</c><00:18:35.960><c> solder</c>
+
+00:18:36.270 --> 00:18:36.280 align:start position:0%
+and if that happens to you I can solder
+
+
+00:18:36.280 --> 00:18:41.310 align:start position:0%
+and if that happens to you I can solder
+it<00:18:36.400><c> back</c><00:18:36.640><c> on</c><00:18:37.640><c> I'm</c><00:18:37.760><c> an</c>
+
+00:18:41.310 --> 00:18:41.320 align:start position:0%
+
+
+
+00:18:41.320 --> 00:18:43.909 align:start position:0%
+
+expert<00:18:42.320><c> um</c><00:18:42.880><c> and</c><00:18:43.039><c> then</c><00:18:43.240><c> working</c><00:18:43.480><c> our</c><00:18:43.679><c> way</c>
+
+00:18:43.909 --> 00:18:43.919 align:start position:0%
+expert um and then working our way
+
+
+00:18:43.919 --> 00:18:46.830 align:start position:0%
+expert um and then working our way
+around<00:18:44.520><c> the</c><00:18:44.799><c> the</c><00:18:44.919><c> main</c><00:18:45.159><c> connectors</c><00:18:45.799><c> this</c><00:18:45.919><c> is</c><00:18:46.240><c> a</c>
+
+00:18:46.830 --> 00:18:46.840 align:start position:0%
+around the the main connectors this is a
+
+
+00:18:46.840 --> 00:18:50.590 align:start position:0%
+around the the main connectors this is a
+uh<00:18:47.080><c> 26</c><00:18:47.679><c> pin</c><00:18:48.080><c> header</c><00:18:49.080><c> uh</c><00:18:49.200><c> that</c><00:18:49.320><c> supports</c><00:18:49.760><c> gpio</c>
+
+00:18:50.590 --> 00:18:50.600 align:start position:0%
+uh 26 pin header uh that supports gpio
+
+
+00:18:50.600 --> 00:18:55.110 align:start position:0%
+uh 26 pin header uh that supports gpio
+about<00:18:51.600><c> several</c><00:18:51.919><c> bits</c><00:18:52.120><c> of</c><00:18:52.679><c> parallel</c><00:18:53.919><c> i</c><00:18:54.919><c> i</c>
+
+00:18:55.110 --> 00:18:55.120 align:start position:0%
+about several bits of parallel i i
+
+
+00:18:55.120 --> 00:18:59.950 align:start position:0%
+about several bits of parallel i i
+squared<00:18:55.480><c> C</c><00:18:55.960><c> SPI</c><00:18:56.679><c> and</c><00:18:57.320><c> plain</c><00:18:57.919><c> asynchronous</c><00:18:59.000><c> Ur</c>
+
+00:18:59.950 --> 00:18:59.960 align:start position:0%
+squared C SPI and plain asynchronous Ur
+
+
+00:18:59.960 --> 00:19:04.029 align:start position:0%
+squared C SPI and plain asynchronous Ur
+iio<00:19:00.960><c> um</c><00:19:01.640><c> it's</c><00:19:01.880><c> 3.3</c><00:19:02.760><c> volt</c><00:19:03.120><c> logic</c><00:19:03.640><c> and</c><00:19:03.760><c> it</c><00:19:03.880><c> will</c>
+
+00:19:04.029 --> 00:19:04.039 align:start position:0%
+iio um it's 3.3 volt logic and it will
+
+
+00:19:04.039 --> 00:19:06.430 align:start position:0%
+iio um it's 3.3 volt logic and it will
+not<00:19:04.240><c> tolerate</c><00:19:04.720><c> 5</c><00:19:05.039><c> volts</c><00:19:05.440><c> it</c><00:19:05.520><c> won't</c><00:19:05.799><c> tolerate</c>
+
+00:19:06.430 --> 00:19:06.440 align:start position:0%
+not tolerate 5 volts it won't tolerate
+
+
+00:19:06.440 --> 00:19:08.750 align:start position:0%
+not tolerate 5 volts it won't tolerate
+shorts<00:19:07.440><c> these</c><00:19:07.640><c> signals</c><00:19:08.120><c> are</c><00:19:08.280><c> going</c><00:19:08.600><c> right</c>
+
+00:19:08.750 --> 00:19:08.760 align:start position:0%
+shorts these signals are going right
+
+
+00:19:08.760 --> 00:19:11.870 align:start position:0%
+shorts these signals are going right
+into<00:19:09.039><c> that</c><00:19:09.240><c> chip</c><00:19:10.039><c> and</c><00:19:10.280><c> anything</c><00:19:10.880><c> bad</c><00:19:11.440><c> that</c>
+
+00:19:11.870 --> 00:19:11.880 align:start position:0%
+into that chip and anything bad that
+
+
+00:19:11.880 --> 00:19:14.750 align:start position:0%
+into that chip and anything bad that
+happens<00:19:12.880><c> will</c><00:19:13.360><c> blow</c><00:19:14.000><c> that</c><00:19:14.159><c> part</c><00:19:14.280><c> of</c><00:19:14.400><c> the</c><00:19:14.480><c> chip</c>
+
+00:19:14.750 --> 00:19:14.760 align:start position:0%
+happens will blow that part of the chip
+
+
+00:19:14.760 --> 00:19:16.590 align:start position:0%
+happens will blow that part of the chip
+up<00:19:15.159><c> so</c><00:19:15.720><c> be</c>
+
+00:19:16.590 --> 00:19:16.600 align:start position:0%
+up so be
+
+
+00:19:16.600 --> 00:19:18.230 align:start position:0%
+up so be
+cautious
+
+00:19:18.230 --> 00:19:18.240 align:start position:0%
+cautious
+
+
+00:19:18.240 --> 00:19:20.789 align:start position:0%
+cautious
+um<00:19:19.240><c> there's</c><00:19:19.400><c> a</c><00:19:19.559><c> little</c><00:19:20.080><c> there's</c><00:19:20.280><c> some</c><00:19:20.440><c> extra</c>
+
+00:19:20.789 --> 00:19:20.799 align:start position:0%
+um there's a little there's some extra
+
+
+00:19:20.799 --> 00:19:24.230 align:start position:0%
+um there's a little there's some extra
+IO<00:19:21.280><c> here</c><00:19:22.440><c> um</c><00:19:23.440><c> these</c><00:19:23.640><c> funny</c><00:19:23.960><c> looking</c>
+
+00:19:24.230 --> 00:19:24.240 align:start position:0%
+IO here um these funny looking
+
+
+00:19:24.240 --> 00:19:27.549 align:start position:0%
+IO here um these funny looking
+connectors<00:19:25.240><c> are</c><00:19:25.640><c> for</c><00:19:26.120><c> this</c><00:19:26.280><c> one</c><00:19:26.640><c> is</c><00:19:26.880><c> for</c><00:19:27.240><c> a</c>
+
+00:19:27.549 --> 00:19:27.559 align:start position:0%
+connectors are for this one is for a
+
+
+00:19:27.559 --> 00:19:29.270 align:start position:0%
+connectors are for this one is for a
+camera<00:19:28.320><c> interface</c>
+
+00:19:29.270 --> 00:19:29.280 align:start position:0%
+camera interface
+
+
+00:19:29.280 --> 00:19:31.789 align:start position:0%
+camera interface
+an<00:19:29.440><c> emerging</c><00:19:30.120><c> camera</c><00:19:30.440><c> interface</c><00:19:30.840><c> standard</c>
+
+00:19:31.789 --> 00:19:31.799 align:start position:0%
+an emerging camera interface standard
+
+
+00:19:31.799 --> 00:19:34.270 align:start position:0%
+an emerging camera interface standard
+there<00:19:32.000><c> is</c><00:19:32.280><c> a</c><00:19:32.480><c> camera</c><00:19:33.440><c> I've</c><00:19:33.559><c> got</c><00:19:33.640><c> a</c><00:19:33.760><c> picture</c><00:19:34.080><c> of</c>
+
+00:19:34.270 --> 00:19:34.280 align:start position:0%
+there is a camera I've got a picture of
+
+
+00:19:34.280 --> 00:19:37.230 align:start position:0%
+there is a camera I've got a picture of
+a<00:19:34.440><c> prototype</c><00:19:34.960><c> camera</c><00:19:35.679><c> that's</c><00:19:36.120><c> in</c><00:19:36.240><c> the</c><00:19:36.400><c> pipes</c>
+
+00:19:37.230 --> 00:19:37.240 align:start position:0%
+a prototype camera that's in the pipes
+
+
+00:19:37.240 --> 00:19:41.390 align:start position:0%
+a prototype camera that's in the pipes
+and<00:19:37.480><c> this</c><00:19:37.679><c> is</c><00:19:37.880><c> a</c><00:19:38.039><c> DSi</c><00:19:38.960><c> spec</c><00:19:39.799><c> uh</c><00:19:39.960><c> LCD</c><00:19:40.679><c> panel</c>
+
+00:19:41.390 --> 00:19:41.400 align:start position:0%
+and this is a DSi spec uh LCD panel
+
+
+00:19:41.400 --> 00:19:44.310 align:start position:0%
+and this is a DSi spec uh LCD panel
+interface<00:19:41.919><c> for</c><00:19:42.200><c> directly</c><00:19:42.799><c> driving</c><00:19:43.799><c> LCD</c>
+
+00:19:44.310 --> 00:19:44.320 align:start position:0%
+interface for directly driving LCD
+
+
+00:19:44.320 --> 00:19:46.909 align:start position:0%
+interface for directly driving LCD
+panels
+
+00:19:46.909 --> 00:19:46.919 align:start position:0%
+panels
+
+
+00:19:46.919 --> 00:19:50.870 align:start position:0%
+panels
+next<00:19:47.919><c> so</c><00:19:48.480><c> there</c><00:19:48.559><c> are</c><00:19:48.720><c> two</c><00:19:49.360><c> models</c><00:19:50.360><c> and</c><00:19:50.760><c> there</c>
+
+00:19:50.870 --> 00:19:50.880 align:start position:0%
+next so there are two models and there
+
+
+00:19:50.880 --> 00:19:53.909 align:start position:0%
+next so there are two models and there
+are<00:19:51.120><c> two</c><00:19:51.919><c> Hardware</c><00:19:52.919><c> sorry</c><00:19:53.480><c> they're</c><00:19:53.679><c> two</c>
+
+00:19:53.909 --> 00:19:53.919 align:start position:0%
+are two Hardware sorry they're two
+
+
+00:19:53.919 --> 00:19:59.950 align:start position:0%
+are two Hardware sorry they're two
+Hardware<00:19:54.720><c> versions</c><00:19:56.200><c> um</c><00:19:57.200><c> uh</c><00:19:57.720><c> but</c><00:19:58.200><c> the</c>
+
+00:19:59.950 --> 00:19:59.960 align:start position:0%
+Hardware versions um uh but the
+
+
+00:19:59.960 --> 00:20:03.390 align:start position:0%
+Hardware versions um uh but the
+the<00:20:00.960><c> second</c><00:20:01.559><c> version</c><00:20:02.039><c> I</c><00:20:02.120><c> think</c><00:20:02.400><c> came</c><00:20:02.640><c> in</c><00:20:03.080><c> with</c>
+
+00:20:03.390 --> 00:20:03.400 align:start position:0%
+the second version I think came in with
+
+
+00:20:03.400 --> 00:20:06.390 align:start position:0%
+the second version I think came in with
+the<00:20:04.039><c> with</c><00:20:04.320><c> the</c><00:20:04.679><c> ship</c><00:20:05.200><c> initial</c><00:20:05.559><c> shipments</c><00:20:06.159><c> of</c>
+
+00:20:06.390 --> 00:20:06.400 align:start position:0%
+the with the ship initial shipments of
+
+
+00:20:06.400 --> 00:20:08.789 align:start position:0%
+the with the ship initial shipments of
+the<00:20:06.679><c> model</c><00:20:07.120><c> A</c>
+
+00:20:08.789 --> 00:20:08.799 align:start position:0%
+the model A
+
+
+00:20:08.799 --> 00:20:12.270 align:start position:0%
+the model A
+so<00:20:09.840><c> really</c><00:20:10.840><c> there's</c><00:20:11.200><c> two</c><00:20:11.480><c> versions</c><00:20:12.000><c> of</c><00:20:12.159><c> the</c>
+
+00:20:12.270 --> 00:20:12.280 align:start position:0%
+so really there's two versions of the
+
+
+00:20:12.280 --> 00:20:15.070 align:start position:0%
+so really there's two versions of the
+one<00:20:12.559><c> that</c><00:20:12.760><c> was</c><00:20:13.280><c> most</c><00:20:13.720><c> that</c><00:20:13.919><c> that</c><00:20:14.039><c> sold</c><00:20:14.480><c> to</c><00:20:14.720><c> most</c>
+
+00:20:15.070 --> 00:20:15.080 align:start position:0%
+one that was most that that sold to most
+
+
+00:20:15.080 --> 00:20:19.990 align:start position:0%
+one that was most that that sold to most
+people<00:20:15.799><c> the</c><00:20:15.960><c> model</c><00:20:16.760><c> B</c><00:20:17.840><c> um</c><00:20:18.840><c> and</c><00:20:19.320><c> it's</c>
+
+00:20:19.990 --> 00:20:20.000 align:start position:0%
+people the model B um and it's
+
+
+00:20:20.000 --> 00:20:22.270 align:start position:0%
+people the model B um and it's
+relatively<00:20:20.520><c> minor</c><00:20:20.840><c> I'll</c><00:20:21.039><c> go</c><00:20:21.159><c> into</c><00:20:21.400><c> the</c><00:20:22.120><c> the</c>
+
+00:20:22.270 --> 00:20:22.280 align:start position:0%
+relatively minor I'll go into the the
+
+
+00:20:22.280 --> 00:20:26.789 align:start position:0%
+relatively minor I'll go into the the
+actual<00:20:22.679><c> changes</c><00:20:23.919><c> but</c><00:20:24.919><c> the</c><00:20:25.280><c> two</c><00:20:25.520><c> basic</c><00:20:25.880><c> models</c>
+
+00:20:26.789 --> 00:20:26.799 align:start position:0%
+actual changes but the two basic models
+
+
+00:20:26.799 --> 00:20:30.190 align:start position:0%
+actual changes but the two basic models
+as<00:20:26.919><c> I</c><00:20:27.080><c> mentioned</c><00:20:27.720><c> are</c><00:20:28.480><c> uh</c><00:20:28.760><c> 35</c><00:20:29.120><c> and</c><00:20:29.200><c> $25</c><00:20:30.039><c> and</c>
+
+00:20:30.190 --> 00:20:30.200 align:start position:0%
+as I mentioned are uh 35 and $25 and
+
+
+00:20:30.200 --> 00:20:32.789 align:start position:0%
+as I mentioned are uh 35 and $25 and
+they're<00:20:30.400><c> aimed</c>
+
+00:20:32.789 --> 00:20:32.799 align:start position:0%
+
+
+
+00:20:32.799 --> 00:20:37.830 align:start position:0%
+
+at<00:20:33.799><c> Cost</c><00:20:34.159><c> sensitive</c><00:20:34.640><c> people</c><00:20:35.120><c> and</c><00:20:35.440><c> super</c><00:20:35.880><c> cost</c>
+
+00:20:37.830 --> 00:20:37.840 align:start position:0%
+at Cost sensitive people and super cost
+
+
+00:20:37.840 --> 00:20:41.110 align:start position:0%
+at Cost sensitive people and super cost
+sensitive
+
+00:20:41.110 --> 00:20:41.120 align:start position:0%
+
+
+
+00:20:41.120 --> 00:20:45.710 align:start position:0%
+
+next<00:20:42.120><c> so</c><00:20:43.000><c> as</c><00:20:43.159><c> we've</c><00:20:43.400><c> said</c><00:20:44.280><c> uh</c><00:20:44.480><c> the</c><00:20:44.679><c> basic</c><00:20:45.520><c> uh</c>
+
+00:20:45.710 --> 00:20:45.720 align:start position:0%
+next so as we've said uh the basic uh
+
+
+00:20:45.720 --> 00:20:50.789 align:start position:0%
+next so as we've said uh the basic uh
+unit<00:20:46.039><c> is</c><00:20:46.159><c> a</c><00:20:46.799><c> broadcom</c><00:20:47.799><c> uh</c><00:20:48.000><c> system</c><00:20:48.280><c> on</c><00:20:48.679><c> chip</c><00:20:49.679><c> it</c>
+
+00:20:50.789 --> 00:20:50.799 align:start position:0%
+unit is a broadcom uh system on chip it
+
+
+00:20:50.799 --> 00:20:55.230 align:start position:0%
+unit is a broadcom uh system on chip it
+contains<00:20:51.799><c> a</c><00:20:52.520><c> uh</c><00:20:53.039><c> CPU</c><00:20:53.960><c> a</c><00:20:54.159><c> graphics</c><00:20:54.640><c> processing</c>
+
+00:20:55.230 --> 00:20:55.240 align:start position:0%
+contains a uh CPU a graphics processing
+
+
+00:20:55.240 --> 00:20:59.950 align:start position:0%
+contains a uh CPU a graphics processing
+unit<00:20:56.240><c> and</c><00:20:57.120><c> a</c><00:20:57.360><c> lot</c><00:20:57.720><c> of</c><00:20:58.039><c> the</c>
+
+00:20:59.950 --> 00:20:59.960 align:start position:0%
+unit and a lot of the
+
+
+00:20:59.960 --> 00:21:01.190 align:start position:0%
+unit and a lot of the
+uh
+
+00:21:01.190 --> 00:21:01.200 align:start position:0%
+uh
+
+
+00:21:01.200 --> 00:21:23.789 align:start position:0%
+uh
+system<00:21:02.559><c> um</c><00:21:03.559><c> the</c><00:21:04.280><c> CPU</c><00:21:05.000><c> core</c><00:21:05.840><c> inside</c><00:21:06.240><c> the</c>
+
+00:21:23.789 --> 00:21:23.799 align:start position:0%
+
+
+
+00:21:23.799 --> 00:21:27.710 align:start position:0%
+
+chip<00:21:24.799><c> it's</c><00:21:25.600><c> extremely</c><00:21:26.200><c> popular</c><00:21:27.200><c> in</c><00:21:27.400><c> cell</c>
+
+00:21:27.710 --> 00:21:27.720 align:start position:0%
+chip it's extremely popular in cell
+
+
+00:21:27.720 --> 00:21:29.110 align:start position:0%
+chip it's extremely popular in cell
+phones
+
+00:21:29.110 --> 00:21:29.120 align:start position:0%
+phones
+
+
+00:21:29.120 --> 00:21:35.390 align:start position:0%
+phones
+and<00:21:30.120><c> um</c><00:21:30.360><c> the</c><00:21:30.559><c> support</c><00:21:31.000><c> for</c><00:21:31.240><c> it</c><00:21:32.000><c> is</c><00:21:32.880><c> building</c>
+
+00:21:35.390 --> 00:21:35.400 align:start position:0%
+and um the support for it is building
+
+
+00:21:35.400 --> 00:21:38.110 align:start position:0%
+and um the support for it is building
+quickly<00:21:36.400><c> the</c><00:21:36.600><c> default</c><00:21:36.919><c> speed</c><00:21:37.200><c> 700</c>
+
+00:21:38.110 --> 00:21:38.120 align:start position:0%
+quickly the default speed 700
+
+
+00:21:38.120 --> 00:21:41.789 align:start position:0%
+quickly the default speed 700
+MHz<00:21:39.120><c> uh</c><00:21:39.279><c> if</c><00:21:39.440><c> you</c><00:21:39.760><c> you're</c><00:21:39.960><c> into</c><00:21:40.240><c> that</c><00:21:40.520><c> you</c><00:21:40.679><c> can</c>
+
+00:21:41.789 --> 00:21:41.799 align:start position:0%
+MHz uh if you you're into that you can
+
+
+00:21:41.799 --> 00:21:44.350 align:start position:0%
+MHz uh if you you're into that you can
+explore<00:21:42.799><c> a</c><00:21:42.880><c> mild</c><00:21:43.200><c> amount</c><00:21:43.360><c> of</c><00:21:43.520><c> overclocking</c>
+
+00:21:44.350 --> 00:21:44.360 align:start position:0%
+explore a mild amount of overclocking
+
+
+00:21:44.360 --> 00:21:46.750 align:start position:0%
+explore a mild amount of overclocking
+without<00:21:44.840><c> voiding</c><00:21:45.200><c> your</c><00:21:45.400><c> warranty</c>
+
+00:21:46.750 --> 00:21:46.760 align:start position:0%
+without voiding your warranty
+
+
+00:21:46.760 --> 00:21:50.350 align:start position:0%
+without voiding your warranty
+and<00:21:47.760><c> a</c><00:21:47.919><c> more</c><00:21:48.600><c> aggressive</c><00:21:49.600><c> uh</c><00:21:49.720><c> amount</c><00:21:49.919><c> of</c>
+
+00:21:50.350 --> 00:21:50.360 align:start position:0%
+and a more aggressive uh amount of
+
+
+00:21:50.360 --> 00:21:52.710 align:start position:0%
+and a more aggressive uh amount of
+overclocking<00:21:51.360><c> which</c><00:21:51.520><c> will</c><00:21:51.720><c> set</c><00:21:52.000><c> a</c><00:21:52.159><c> bit</c><00:21:52.400><c> in</c><00:21:52.559><c> the</c>
+
+00:21:52.710 --> 00:21:52.720 align:start position:0%
+overclocking which will set a bit in the
+
+
+00:21:52.720 --> 00:21:56.870 align:start position:0%
+overclocking which will set a bit in the
+chip<00:21:53.039><c> that</c><00:21:53.200><c> says</c><00:21:54.120><c> this</c><00:21:54.320><c> guy</c><00:21:54.559><c> did</c><00:21:54.799><c> that</c><00:21:55.760><c> or</c><00:21:56.000><c> this</c>
+
+00:21:56.870 --> 00:21:56.880 align:start position:0%
+chip that says this guy did that or this
+
+
+00:21:56.880 --> 00:22:00.990 align:start position:0%
+chip that says this guy did that or this
+girl<00:21:57.880><c> and</c><00:21:58.039><c> there's</c><00:21:58.240><c> no</c><00:21:58.840><c> in</c><00:21:58.960><c> this</c><00:21:59.080><c> chip</c><00:21:59.799><c> now</c><00:22:00.799><c> uh</c>
+
+00:22:00.990 --> 00:22:01.000 align:start position:0%
+girl and there's no in this chip now uh
+
+
+00:22:01.000 --> 00:22:04.909 align:start position:0%
+girl and there's no in this chip now uh
+but<00:22:01.120><c> it</c><00:22:01.320><c> can</c><00:22:01.600><c> be</c><00:22:02.279><c> um</c><00:22:03.200><c> uh</c><00:22:03.600><c> easily</c><00:22:04.320><c> boosted</c><00:22:04.799><c> by</c>
+
+00:22:04.909 --> 00:22:04.919 align:start position:0%
+but it can be um uh easily boosted by
+
+
+00:22:04.919 --> 00:22:09.990 align:start position:0%
+but it can be um uh easily boosted by
+say<00:22:05.240><c> 15%</c><00:22:06.080><c> with</c><00:22:06.400><c> no</c><00:22:07.400><c> noticeable</c>
+
+00:22:09.990 --> 00:22:10.000 align:start position:0%
+
+
+
+00:22:10.000 --> 00:22:12.710 align:start position:0%
+
+consequences<00:22:11.000><c> the</c><00:22:11.240><c> mass</c><00:22:11.679><c> basic</c><00:22:11.960><c> mass</c><00:22:12.240><c> storage</c>
+
+00:22:12.710 --> 00:22:12.720 align:start position:0%
+consequences the mass basic mass storage
+
+
+00:22:12.720 --> 00:22:14.830 align:start position:0%
+consequences the mass basic mass storage
+is<00:22:12.880><c> an</c><00:22:13.080><c> SD</c><00:22:13.400><c> card</c><00:22:13.600><c> slot</c><00:22:14.000><c> that's</c><00:22:14.159><c> on</c><00:22:14.320><c> the</c><00:22:14.559><c> back</c><00:22:14.720><c> of</c>
+
+00:22:14.830 --> 00:22:14.840 align:start position:0%
+is an SD card slot that's on the back of
+
+
+00:22:14.840 --> 00:22:17.470 align:start position:0%
+is an SD card slot that's on the back of
+the<00:22:15.039><c> card</c><00:22:15.720><c> so</c><00:22:15.960><c> the</c><00:22:16.080><c> SD</c><00:22:16.400><c> card</c><00:22:16.640><c> slides</c><00:22:17.279><c> I</c><00:22:17.360><c> mean</c>
+
+00:22:17.470 --> 00:22:17.480 align:start position:0%
+the card so the SD card slides I mean
+
+
+00:22:17.480 --> 00:22:19.830 align:start position:0%
+the card so the SD card slides I mean
+the<00:22:17.640><c> SD</c><00:22:18.000><c> card</c><00:22:18.480><c> uh</c><00:22:18.600><c> slides</c><00:22:18.960><c> in</c><00:22:19.120><c> the</c><00:22:19.240><c> socket</c><00:22:19.600><c> on</c>
+
+00:22:19.830 --> 00:22:19.840 align:start position:0%
+the SD card uh slides in the socket on
+
+
+00:22:19.840 --> 00:22:24.669 align:start position:0%
+the SD card uh slides in the socket on
+the<00:22:20.559><c> underside</c><00:22:21.559><c> of</c><00:22:21.840><c> the</c><00:22:22.720><c> insert</c><00:22:23.400><c> card</c><00:22:24.400><c> uh</c><00:22:24.559><c> it</c>
+
+00:22:24.669 --> 00:22:24.679 align:start position:0%
+the underside of the insert card uh it
+
+
+00:22:24.679 --> 00:22:27.870 align:start position:0%
+the underside of the insert card uh it
+supports<00:22:25.600><c> standard</c><00:22:26.039><c> SD</c><00:22:26.400><c> cards</c><00:22:27.400><c> there</c><00:22:27.559><c> was</c><00:22:27.720><c> a</c>
+
+00:22:27.870 --> 00:22:27.880 align:start position:0%
+supports standard SD cards there was a
+
+
+00:22:27.880 --> 00:22:31.110 align:start position:0%
+supports standard SD cards there was a
+bug<00:22:28.120><c> in</c><00:22:28.200><c> the</c><00:22:28.279><c> front</c><00:22:28.520><c> firware</c><00:22:29.600><c> that</c><00:22:30.600><c> messed</c><00:22:30.919><c> up</c>
+
+00:22:31.110 --> 00:22:31.120 align:start position:0%
+bug in the front firware that messed up
+
+
+00:22:31.120 --> 00:22:33.830 align:start position:0%
+bug in the front firware that messed up
+compatibility<00:22:31.880><c> with</c><00:22:32.039><c> some</c><00:22:32.440><c> of</c><00:22:32.679><c> the</c><00:22:33.320><c> uh</c><00:22:33.520><c> class</c>
+
+00:22:33.830 --> 00:22:33.840 align:start position:0%
+compatibility with some of the uh class
+
+
+00:22:33.840 --> 00:22:37.110 align:start position:0%
+compatibility with some of the uh class
+10<00:22:34.400><c> very</c><00:22:34.640><c> very</c><00:22:34.880><c> highspeed</c><00:22:35.600><c> SD</c><00:22:35.960><c> cards</c><00:22:36.960><c> that</c>
+
+00:22:37.110 --> 00:22:37.120 align:start position:0%
+10 very very highspeed SD cards that
+
+
+00:22:37.120 --> 00:22:39.710 align:start position:0%
+10 very very highspeed SD cards that
+bug's<00:22:37.440><c> been</c><00:22:37.640><c> fixed</c><00:22:38.360><c> but</c><00:22:38.559><c> the</c><00:22:38.799><c> vast</c><00:22:39.159><c> majority</c>
+
+00:22:39.710 --> 00:22:39.720 align:start position:0%
+bug's been fixed but the vast majority
+
+
+00:22:39.720 --> 00:22:44.590 align:start position:0%
+bug's been fixed but the vast majority
+of<00:22:40.720><c> Boards</c><00:22:41.240><c> out</c><00:22:41.400><c> in</c><00:22:41.559><c> the</c><00:22:41.880><c> world</c><00:22:42.880><c> have</c><00:22:43.080><c> the</c><00:22:43.600><c> bug</c>
+
+00:22:44.590 --> 00:22:44.600 align:start position:0%
+of Boards out in the world have the bug
+
+
+00:22:44.600 --> 00:22:47.870 align:start position:0%
+of Boards out in the world have the bug
+so<00:22:45.559><c> unless</c><00:22:45.880><c> you</c><00:22:46.400><c> bought</c><00:22:46.640><c> your</c><00:22:46.799><c> unit</c><00:22:47.159><c> fairly</c>
+
+00:22:47.870 --> 00:22:47.880 align:start position:0%
+so unless you bought your unit fairly
+
+
+00:22:47.880 --> 00:22:50.310 align:start position:0%
+so unless you bought your unit fairly
+recently<00:22:48.880><c> uh</c><00:22:48.960><c> you</c><00:22:49.080><c> should</c><00:22:49.279><c> check</c><00:22:49.720><c> the</c><00:22:49.880><c> list</c>
+
+00:22:50.310 --> 00:22:50.320 align:start position:0%
+recently uh you should check the list
+
+
+00:22:50.320 --> 00:22:52.510 align:start position:0%
+recently uh you should check the list
+before<00:22:50.600><c> you</c><00:22:51.080><c> plump</c><00:22:51.440><c> down</c><00:22:51.600><c> your</c><00:22:51.760><c> 30</c><00:22:52.039><c> or</c><00:22:52.200><c> 50</c>
+
+00:22:52.510 --> 00:22:52.520 align:start position:0%
+before you plump down your 30 or 50
+
+
+00:22:52.520 --> 00:22:54.590 align:start position:0%
+before you plump down your 30 or 50
+bucks<00:22:52.760><c> for</c><00:22:52.960><c> the</c><00:22:53.159><c> super</c><00:22:53.480><c> duper</c><00:22:53.840><c> SD</c><00:22:54.240><c> card</c><00:22:54.520><c> you</c>
+
+00:22:54.590 --> 00:22:54.600 align:start position:0%
+bucks for the super duper SD card you
+
+
+00:22:54.600 --> 00:22:58.950 align:start position:0%
+bucks for the super duper SD card you
+should<00:22:54.880><c> check</c><00:22:55.159><c> the</c><00:22:55.320><c> list</c><00:22:56.320><c> uh</c><00:22:56.440><c> it's</c><00:22:56.640><c> HTTP</c><00:22:57.640><c> colon</c>
+
+00:22:58.950 --> 00:22:58.960 align:start position:0%
+should check the list uh it's HTTP colon
+
+
+00:22:58.960 --> 00:23:00.269 align:start position:0%
+should check the list uh it's HTTP colon
+that
+
+00:23:00.269 --> 00:23:00.279 align:start position:0%
+that
+
+
+00:23:00.279 --> 00:23:04.269 align:start position:0%
+that
+URL<00:23:01.720><c> um</c><00:23:02.720><c> the</c><00:23:02.919><c> colel</c><00:23:03.240><c> always</c><00:23:03.440><c> boots</c><00:23:03.799><c> off</c><00:23:03.919><c> the</c><00:23:04.000><c> SD</c>
+
+00:23:04.269 --> 00:23:04.279 align:start position:0%
+URL um the colel always boots off the SD
+
+
+00:23:04.279 --> 00:23:05.830 align:start position:0%
+URL um the colel always boots off the SD
+card<00:23:04.480><c> it</c><00:23:04.600><c> doesn't</c><00:23:04.760><c> know</c><00:23:04.880><c> how</c><00:23:05.000><c> to</c><00:23:05.120><c> do</c><00:23:05.279><c> anything</c>
+
+00:23:05.830 --> 00:23:05.840 align:start position:0%
+card it doesn't know how to do anything
+
+
+00:23:05.840 --> 00:23:07.750 align:start position:0%
+card it doesn't know how to do anything
+else
+
+00:23:07.750 --> 00:23:07.760 align:start position:0%
+else
+
+
+00:23:07.760 --> 00:23:13.669 align:start position:0%
+else
+except<00:23:09.159><c> uh</c><00:23:10.240><c> in</c><00:23:11.240><c> very</c><00:23:11.520><c> weird</c><00:23:11.799><c> circumstances</c>
+
+00:23:13.669 --> 00:23:13.679 align:start position:0%
+except uh in very weird circumstances
+
+
+00:23:13.679 --> 00:23:16.870 align:start position:0%
+except uh in very weird circumstances
+but<00:23:14.679><c> in</c><00:23:14.960><c> practic</c><00:23:15.760><c> at</c><00:23:15.840><c> a</c><00:23:16.039><c> practical</c><00:23:16.440><c> level</c><00:23:16.760><c> it</c>
+
+00:23:16.870 --> 00:23:16.880 align:start position:0%
+but in practic at a practical level it
+
+
+00:23:16.880 --> 00:23:19.669 align:start position:0%
+but in practic at a practical level it
+boots<00:23:17.440><c> off</c><00:23:17.600><c> the</c><00:23:17.720><c> SD</c><00:23:18.039><c> card</c><00:23:18.880><c> however</c><00:23:19.159><c> it's</c><00:23:19.480><c> very</c>
+
+00:23:19.669 --> 00:23:19.679 align:start position:0%
+boots off the SD card however it's very
+
+
+00:23:19.679 --> 00:23:23.029 align:start position:0%
+boots off the SD card however it's very
+easy<00:23:19.960><c> to</c><00:23:20.279><c> steer</c><00:23:21.279><c> all</c><00:23:21.600><c> subsequent</c><00:23:22.159><c> steps</c><00:23:22.720><c> for</c>
+
+00:23:23.029 --> 00:23:23.039 align:start position:0%
+easy to steer all subsequent steps for
+
+
+00:23:23.039 --> 00:23:26.950 align:start position:0%
+easy to steer all subsequent steps for
+example<00:23:24.039><c> setting</c><00:23:24.400><c> up</c><00:23:24.760><c> and</c><00:23:25.279><c> and</c><00:23:25.720><c> uh</c><00:23:26.520><c> running</c>
+
+00:23:26.950 --> 00:23:26.960 align:start position:0%
+example setting up and and uh running
+
+
+00:23:26.960 --> 00:23:28.950 align:start position:0%
+example setting up and and uh running
+the<00:23:27.159><c> uh</c><00:23:27.320><c> root</c><00:23:27.600><c> file</c><00:23:27.919><c> system</c><00:23:28.640><c> on</c><00:23:28.840><c> an</c>
+
+00:23:28.950 --> 00:23:28.960 align:start position:0%
+the uh root file system on an
+
+
+00:23:28.960 --> 00:23:32.029 align:start position:0%
+the uh root file system on an
+alternative<00:23:29.520><c> device</c><00:23:30.240><c> so</c><00:23:30.440><c> for</c><00:23:30.640><c> example</c><00:23:31.559><c> I</c><00:23:31.720><c> get</c>
+
+00:23:32.029 --> 00:23:32.039 align:start position:0%
+alternative device so for example I get
+
+
+00:23:32.039 --> 00:23:36.390 align:start position:0%
+alternative device so for example I get
+SD<00:23:32.400><c> cards</c><00:23:33.279><c> that</c><00:23:34.279><c> that</c><00:23:34.600><c> are</c><00:23:35.600><c> that</c><00:23:35.840><c> started</c><00:23:36.200><c> out</c>
+
+00:23:36.390 --> 00:23:36.400 align:start position:0%
+SD cards that that are that started out
+
+
+00:23:36.400 --> 00:23:38.870 align:start position:0%
+SD cards that that are that started out
+at<00:23:36.559><c> 4</c><00:23:36.919><c> gig</c><00:23:37.279><c> SD</c><00:23:37.640><c> cards</c><00:23:38.039><c> and</c><00:23:38.200><c> due</c><00:23:38.360><c> to</c><00:23:38.520><c> Hardware</c>
+
+00:23:38.870 --> 00:23:38.880 align:start position:0%
+at 4 gig SD cards and due to Hardware
+
+
+00:23:38.880 --> 00:23:41.310 align:start position:0%
+at 4 gig SD cards and due to Hardware
+failures<00:23:39.520><c> they</c><00:23:39.760><c> they're</c><00:23:40.679><c> turned</c><00:23:41.080><c> themselves</c>
+
+00:23:41.310 --> 00:23:41.320 align:start position:0%
+failures they they're turned themselves
+
+
+00:23:41.320 --> 00:23:42.710 align:start position:0%
+failures they they're turned themselves
+into<00:23:41.559><c> 700</c>
+
+00:23:42.710 --> 00:23:42.720 align:start position:0%
+into 700
+
+
+00:23:42.720 --> 00:23:46.909 align:start position:0%
+into 700
+Meg<00:23:43.720><c> but</c><00:23:44.159><c> the</c><00:23:44.520><c> first</c><00:23:45.039><c> part</c><00:23:45.840><c> of</c><00:23:46.000><c> the</c><00:23:46.159><c> system</c><00:23:46.720><c> can</c>
+
+00:23:46.909 --> 00:23:46.919 align:start position:0%
+Meg but the first part of the system can
+
+
+00:23:46.919 --> 00:23:50.029 align:start position:0%
+Meg but the first part of the system can
+boot<00:23:47.600><c> perfectly</c><00:23:48.039><c> fine</c><00:23:48.520><c> without</c><00:23:48.880><c> that</c><00:23:49.240><c> and</c><00:23:49.559><c> uh</c>
+
+00:23:50.029 --> 00:23:50.039 align:start position:0%
+boot perfectly fine without that and uh
+
+
+00:23:50.039 --> 00:23:51.269 align:start position:0%
+boot perfectly fine without that and uh
+well<00:23:50.279><c> this</c><00:23:50.360><c> is</c><00:23:50.520><c> one</c><00:23:50.640><c> of</c><00:23:50.720><c> the</c><00:23:50.840><c> things</c><00:23:51.000><c> that</c><00:23:51.159><c> we</c>
+
+00:23:51.269 --> 00:23:51.279 align:start position:0%
+well this is one of the things that we
+
+
+00:23:51.279 --> 00:23:54.950 align:start position:0%
+well this is one of the things that we
+can<00:23:51.440><c> go</c><00:23:51.640><c> in</c><00:23:52.240><c> to</c><00:23:52.799><c> on</c><00:23:53.320><c> Saturday</c><00:23:54.000><c> to</c><00:23:54.240><c> help</c><00:23:54.480><c> people</c>
+
+00:23:54.950 --> 00:23:54.960 align:start position:0%
+can go in to on Saturday to help people
+
+
+00:23:54.960 --> 00:23:57.430 align:start position:0%
+can go in to on Saturday to help people
+do<00:23:55.200><c> this</c><00:23:55.720><c> for</c><00:23:55.880><c> example</c><00:23:56.200><c> you</c><00:23:56.320><c> can</c><00:23:56.520><c> get</c><00:23:57.159><c> some</c>
+
+00:23:57.430 --> 00:23:57.440 align:start position:0%
+do this for example you can get some
+
+
+00:23:57.440 --> 00:23:59.750 align:start position:0%
+do this for example you can get some
+performance<00:23:57.880><c> boost</c><00:23:58.240><c> off</c><00:23:58.559><c> the</c><00:23:58.760><c> low</c><00:23:59.200><c> powered</c>
+
+00:23:59.750 --> 00:23:59.760 align:start position:0%
+performance boost off the low powered
+
+
+00:23:59.760 --> 00:24:01.990 align:start position:0%
+performance boost off the low powered
+over<00:24:00.039><c> the</c><00:24:00.159><c> low</c><00:24:00.440><c> powered</c><00:24:00.679><c> SD</c><00:24:01.000><c> cards</c><00:24:01.440><c> by</c><00:24:01.640><c> using</c>
+
+00:24:01.990 --> 00:24:02.000 align:start position:0%
+over the low powered SD cards by using
+
+
+00:24:02.000 --> 00:24:08.149 align:start position:0%
+over the low powered SD cards by using
+thumb<00:24:02.360><c> drives</c><00:24:03.360><c> you</c><00:24:03.440><c> can</c><00:24:03.640><c> also</c><00:24:03.960><c> use</c><00:24:04.520><c> USB</c><00:24:04.919><c> hard</c>
+
+00:24:08.149 --> 00:24:08.159 align:start position:0%
+
+
+
+00:24:08.159 --> 00:24:10.630 align:start position:0%
+
+drives<00:24:09.159><c> uh</c><00:24:09.279><c> the</c><00:24:09.400><c> video</c><00:24:09.679><c> I've</c><00:24:09.840><c> already</c><00:24:10.039><c> gone</c>
+
+00:24:10.630 --> 00:24:10.640 align:start position:0%
+drives uh the video I've already gone
+
+
+00:24:10.640 --> 00:24:14.190 align:start position:0%
+drives uh the video I've already gone
+over<00:24:11.640><c> uh</c><00:24:12.120><c> handles</c><00:24:12.600><c> a</c><00:24:12.799><c> wide</c><00:24:13.279><c> variety</c><00:24:13.720><c> of</c>
+
+00:24:14.190 --> 00:24:14.200 align:start position:0%
+over uh handles a wide variety of
+
+
+00:24:14.200 --> 00:24:16.029 align:start position:0%
+over uh handles a wide variety of
+resolutions
+
+00:24:16.029 --> 00:24:16.039 align:start position:0%
+resolutions
+
+
+00:24:16.039 --> 00:24:19.830 align:start position:0%
+resolutions
+but<00:24:17.039><c> it's</c><00:24:17.559><c> composite</c><00:24:18.279><c> out</c><00:24:18.400><c> of</c><00:24:18.520><c> that</c><00:24:18.640><c> RCA</c><00:24:19.159><c> jack</c>
+
+00:24:19.830 --> 00:24:19.840 align:start position:0%
+but it's composite out of that RCA jack
+
+
+00:24:19.840 --> 00:24:22.590 align:start position:0%
+but it's composite out of that RCA jack
+or<00:24:20.080><c> HDMI</c><00:24:21.039><c> it</c><00:24:21.200><c> doesn't</c><00:24:21.440><c> do</c><00:24:21.640><c> VGA</c><00:24:22.080><c> it</c><00:24:22.159><c> doesn't</c><00:24:22.400><c> do</c>
+
+00:24:22.590 --> 00:24:22.600 align:start position:0%
+or HDMI it doesn't do VGA it doesn't do
+
+
+00:24:22.600 --> 00:24:26.149 align:start position:0%
+or HDMI it doesn't do VGA it doesn't do
+analog<00:24:23.080><c> video</c><00:24:23.840><c> period</c><00:24:24.640><c> doesn't</c><00:24:24.960><c> do</c><00:24:25.120><c> it</c><00:24:25.840><c> so</c><00:24:26.080><c> if</c>
+
+00:24:26.149 --> 00:24:26.159 align:start position:0%
+analog video period doesn't do it so if
+
+
+00:24:26.159 --> 00:24:28.870 align:start position:0%
+analog video period doesn't do it so if
+you<00:24:26.320><c> want</c><00:24:26.520><c> to</c><00:24:26.760><c> use</c><00:24:27.520><c> BGA</c>
+
+00:24:28.870 --> 00:24:28.880 align:start position:0%
+you want to use BGA
+
+
+00:24:28.880 --> 00:24:30.269 align:start position:0%
+you want to use BGA
+uh<00:24:29.000><c> I</c><00:24:29.120><c> can't</c><00:24:29.320><c> show</c><00:24:29.520><c> you</c><00:24:29.720><c> this</c><00:24:29.880><c> thing</c><00:24:30.120><c> but</c>
+
+00:24:30.269 --> 00:24:30.279 align:start position:0%
+uh I can't show you this thing but
+
+
+00:24:30.279 --> 00:24:32.590 align:start position:0%
+uh I can't show you this thing but
+there's<00:24:30.399><c> a</c><00:24:30.600><c> little</c><00:24:31.320><c> blob</c><00:24:31.760><c> that</c><00:24:31.880><c> you</c><00:24:32.000><c> can</c><00:24:32.279><c> get</c>
+
+00:24:32.590 --> 00:24:32.600 align:start position:0%
+there's a little blob that you can get
+
+
+00:24:32.600 --> 00:24:35.710 align:start position:0%
+there's a little blob that you can get
+for<00:24:32.880><c> 30</c><00:24:33.120><c> or</c><00:24:33.240><c> 40</c><00:24:33.559><c> bucks</c><00:24:34.559><c> that</c><00:24:34.760><c> will</c><00:24:35.240><c> or</c><00:24:35.399><c> cheaper</c>
+
+00:24:35.710 --> 00:24:35.720 align:start position:0%
+for 30 or 40 bucks that will or cheaper
+
+
+00:24:35.720 --> 00:24:38.350 align:start position:0%
+for 30 or 40 bucks that will or cheaper
+from<00:24:35.919><c> Ada</c><00:24:36.279><c> fruit</c><00:24:37.279><c> um</c>
+
+00:24:38.350 --> 00:24:38.360 align:start position:0%
+from Ada fruit um
+
+
+00:24:38.360 --> 00:24:41.470 align:start position:0%
+from Ada fruit um
+a.com<00:24:39.360><c> uh</c><00:24:39.520><c> that</c><00:24:39.600><c> will</c><00:24:39.799><c> convert</c><00:24:40.200><c> the</c><00:24:40.320><c> HDMI</c><00:24:41.240><c> to</c>
+
+00:24:41.470 --> 00:24:41.480 align:start position:0%
+a.com uh that will convert the HDMI to
+
+
+00:24:41.480 --> 00:24:44.470 align:start position:0%
+a.com uh that will convert the HDMI to
+VGA<00:24:42.279><c> works</c><00:24:42.600><c> really</c>
+
+00:24:44.470 --> 00:24:44.480 align:start position:0%
+VGA works really
+
+
+00:24:44.480 --> 00:24:48.230 align:start position:0%
+VGA works really
+well<00:24:45.480><c> there</c><00:24:46.360><c> monoprice.com</c><00:24:47.360><c> sells</c><00:24:47.960><c> a</c>
+
+00:24:48.230 --> 00:24:48.240 align:start position:0%
+well there monoprice.com sells a
+
+
+00:24:48.240 --> 00:24:52.070 align:start position:0%
+well there monoprice.com sells a
+composite<00:24:48.880><c> to</c><00:24:49.159><c> BGA</c><00:24:49.720><c> adapter</c><00:24:50.279><c> for</c><00:24:50.720><c> 20</c><00:24:51.120><c> bucks</c>
+
+00:24:52.070 --> 00:24:52.080 align:start position:0%
+composite to BGA adapter for 20 bucks
+
+
+00:24:52.080 --> 00:24:55.990 align:start position:0%
+composite to BGA adapter for 20 bucks
+right<00:24:52.440><c> and</c><00:24:52.600><c> the</c><00:24:53.159><c> Adafruit</c><00:24:54.159><c> HDMI</c><00:24:54.880><c> to</c><00:24:55.039><c> BGA</c><00:24:55.799><c> that</c>
+
+00:24:55.990 --> 00:24:56.000 align:start position:0%
+right and the Adafruit HDMI to BGA that
+
+
+00:24:56.000 --> 00:24:59.549 align:start position:0%
+right and the Adafruit HDMI to BGA that
+includes<00:24:56.399><c> a</c><00:24:56.600><c> sound</c><00:24:57.159><c> jack</c><00:24:57.720><c> is</c><00:24:57.919><c> 20</c><00:24:58.159><c> bucks</c>
+
+00:24:59.549 --> 00:24:59.559 align:start position:0%
+includes a sound jack is 20 bucks
+
+
+00:24:59.559 --> 00:25:03.310 align:start position:0%
+includes a sound jack is 20 bucks
+yeah<00:24:59.760><c> adafruit.com</c><00:25:01.000><c> is</c><00:25:02.000><c> a</c><00:25:02.320><c> fabulous</c>
+
+00:25:03.310 --> 00:25:03.320 align:start position:0%
+yeah adafruit.com is a fabulous
+
+
+00:25:03.320 --> 00:25:04.750 align:start position:0%
+yeah adafruit.com is a fabulous
+commercial
+
+00:25:04.750 --> 00:25:04.760 align:start position:0%
+commercial
+
+
+00:25:04.760 --> 00:25:06.510 align:start position:0%
+commercial
+Source<00:25:05.760><c> the</c>
+
+00:25:06.510 --> 00:25:06.520 align:start position:0%
+Source the
+
+
+00:25:06.520 --> 00:25:12.669 align:start position:0%
+Source the
+audio<00:25:07.520><c> uh</c><00:25:08.120><c> is</c><00:25:08.559><c> just</c><00:25:09.440><c> plain</c><00:25:10.000><c> stereo</c><00:25:10.640><c> output</c><00:25:11.679><c> uh</c>
+
+00:25:12.669 --> 00:25:12.679 align:start position:0%
+audio uh is just plain stereo output uh
+
+
+00:25:12.679 --> 00:25:17.470 align:start position:0%
+audio uh is just plain stereo output uh
+it's<00:25:13.640><c> it</c><00:25:13.799><c> uses</c><00:25:14.240><c> a</c><00:25:14.799><c> uh</c><00:25:15.520><c> D</c><00:25:16.080><c> converter</c><00:25:16.679><c> in</c><00:25:16.919><c> the</c>
+
+00:25:17.470 --> 00:25:17.480 align:start position:0%
+it's it uses a uh D converter in the
+
+
+00:25:17.480 --> 00:25:22.029 align:start position:0%
+it's it uses a uh D converter in the
+main<00:25:18.480><c> chip</c><00:25:19.279><c> and</c><00:25:20.279><c> seems</c><00:25:20.640><c> to</c><00:25:20.880><c> be</c><00:25:21.600><c> kind</c><00:25:21.720><c> of</c>
+
+00:25:22.029 --> 00:25:22.039 align:start position:0%
+main chip and seems to be kind of
+
+
+00:25:22.039 --> 00:25:24.470 align:start position:0%
+main chip and seems to be kind of
+lagging<00:25:22.679><c> I</c><00:25:22.760><c> mean</c><00:25:23.279><c> everything</c><00:25:23.600><c> else</c><00:25:23.960><c> seems</c><00:25:24.240><c> to</c>
+
+00:25:24.470 --> 00:25:24.480 align:start position:0%
+lagging I mean everything else seems to
+
+
+00:25:24.480 --> 00:25:28.590 align:start position:0%
+lagging I mean everything else seems to
+just<00:25:24.679><c> work</c><00:25:25.039><c> great</c><00:25:25.600><c> and</c><00:25:26.200><c> is</c>
+
+00:25:28.590 --> 00:25:28.600 align:start position:0%
+just work great and is
+
+
+00:25:28.600 --> 00:25:32.750 align:start position:0%
+just work great and is
+all<00:25:28.960><c> joy</c><00:25:29.399><c> and</c><00:25:29.760><c> smiles</c><00:25:30.520><c> and</c><00:25:30.720><c> the</c><00:25:31.200><c> audio</c><00:25:32.200><c> uh</c><00:25:32.600><c> can</c>
+
+00:25:32.750 --> 00:25:32.760 align:start position:0%
+all joy and smiles and the audio uh can
+
+
+00:25:32.760 --> 00:25:36.630 align:start position:0%
+all joy and smiles and the audio uh can
+be<00:25:33.039><c> problematic</c><00:25:34.000><c> and</c><00:25:34.360><c> uh</c><00:25:34.760><c> Linux</c><00:25:35.320><c> bad</c><00:25:35.520><c> audio</c>
+
+00:25:36.630 --> 00:25:36.640 align:start position:0%
+be problematic and uh Linux bad audio
+
+
+00:25:36.640 --> 00:25:40.950 align:start position:0%
+be problematic and uh Linux bad audio
+never<00:25:37.640><c> it</c><00:25:37.760><c> makes</c><00:25:38.000><c> no</c><00:25:38.399><c> audio</c><00:25:39.399><c> until</c><00:25:39.679><c> you</c><00:25:39.880><c> figure</c>
+
+00:25:40.950 --> 00:25:40.960 align:start position:0%
+never it makes no audio until you figure
+
+
+00:25:40.960 --> 00:25:45.310 align:start position:0%
+never it makes no audio until you figure
+out<00:25:41.960><c> how</c><00:25:42.039><c> to</c><00:25:42.200><c> hold</c><00:25:42.360><c> your</c><00:25:42.600><c> face</c><00:25:43.600><c> uh</c><00:25:43.799><c> next</c>
+
+00:25:45.310 --> 00:25:45.320 align:start position:0%
+out how to hold your face uh next
+
+
+00:25:45.320 --> 00:25:47.389 align:start position:0%
+out how to hold your face uh next
+Slide<00:25:46.320><c> the</c><00:25:46.480><c> networking</c><00:25:46.960><c> I've</c><00:25:47.120><c> already</c>
+
+00:25:47.389 --> 00:25:47.399 align:start position:0%
+Slide the networking I've already
+
+
+00:25:47.399 --> 00:25:50.950 align:start position:0%
+Slide the networking I've already
+covered<00:25:48.279><c> but</c><00:25:48.600><c> except</c><00:25:48.880><c> to</c><00:25:49.080><c> say</c><00:25:49.399><c> that</c><00:25:50.320><c> um</c><00:25:50.799><c> there</c>
+
+00:25:50.950 --> 00:25:50.960 align:start position:0%
+covered but except to say that um there
+
+
+00:25:50.960 --> 00:25:54.389 align:start position:0%
+covered but except to say that um there
+is<00:25:51.159><c> good</c><00:25:51.399><c> support</c><00:25:51.960><c> for</c><00:25:52.600><c> wireless</c><00:25:53.600><c> uh</c><00:25:53.799><c> and</c>
+
+00:25:54.389 --> 00:25:54.399 align:start position:0%
+is good support for wireless uh and
+
+
+00:25:54.399 --> 00:25:57.269 align:start position:0%
+is good support for wireless uh and
+wired<00:25:54.919><c> ethernet</c><00:25:55.880><c> uh</c><00:25:56.080><c> adapters</c><00:25:56.679><c> that</c><00:25:56.799><c> run</c><00:25:57.039><c> on</c>
+
+00:25:57.269 --> 00:25:57.279 align:start position:0%
+wired ethernet uh adapters that run on
+
+
+00:25:57.279 --> 00:26:01.350 align:start position:0%
+wired ethernet uh adapters that run on
+USB<00:25:58.360><c> so</c><00:25:58.799><c> one</c><00:25:59.039><c> approach</c><00:25:59.840><c> you</c><00:26:00.320><c> for</c><00:26:00.640><c> a</c><00:26:00.840><c> cost</c>
+
+00:26:01.350 --> 00:26:01.360 align:start position:0%
+USB so one approach you for a cost
+
+
+00:26:01.360 --> 00:26:03.230 align:start position:0%
+USB so one approach you for a cost
+sensitive<00:26:02.360><c> uh</c>
+
+00:26:03.230 --> 00:26:03.240 align:start position:0%
+sensitive uh
+
+
+00:26:03.240 --> 00:26:06.110 align:start position:0%
+sensitive uh
+application<00:26:04.240><c> um</c><00:26:04.679><c> is</c><00:26:04.880><c> to</c><00:26:05.320><c> go</c><00:26:05.520><c> with</c><00:26:05.600><c> a</c><00:26:05.760><c> powered</c>
+
+00:26:06.110 --> 00:26:06.120 align:start position:0%
+application um is to go with a powered
+
+
+00:26:06.120 --> 00:26:09.830 align:start position:0%
+application um is to go with a powered
+Hub<00:26:07.120><c> or</c><00:26:07.960><c> even</c><00:26:08.440><c> a</c><00:26:08.559><c> plane</c><00:26:08.840><c> Hub</c><00:26:09.159><c> if</c><00:26:09.559><c> you're</c><00:26:09.720><c> going</c>
+
+00:26:09.830 --> 00:26:09.840 align:start position:0%
+Hub or even a plane Hub if you're going
+
+
+00:26:09.840 --> 00:26:11.110 align:start position:0%
+Hub or even a plane Hub if you're going
+to
+
+00:26:11.110 --> 00:26:11.120 align:start position:0%
+to
+
+
+00:26:11.120 --> 00:26:15.070 align:start position:0%
+to
+use<00:26:12.120><c> just</c><00:26:12.399><c> very</c><00:26:12.600><c> low</c><00:26:12.960><c> powered</c><00:26:13.559><c> um</c><00:26:14.080><c> peripherals</c>
+
+00:26:15.070 --> 00:26:15.080 align:start position:0%
+use just very low powered um peripherals
+
+
+00:26:15.080 --> 00:26:22.110 align:start position:0%
+use just very low powered um peripherals
+and<00:26:15.919><c> use</c><00:26:16.640><c> the</c><00:26:17.640><c> USB</c><00:26:18.559><c> or</c><00:26:19.559><c> wired</c><00:26:19.919><c> or</c><00:26:20.440><c> Wireless</c><00:26:21.440><c> EET</c>
+
+00:26:22.110 --> 00:26:22.120 align:start position:0%
+and use the USB or wired or Wireless EET
+
+
+00:26:22.120 --> 00:26:23.149 align:start position:0%
+and use the USB or wired or Wireless EET
+go
+
+00:26:23.149 --> 00:26:23.159 align:start position:0%
+go
+
+
+00:26:23.159 --> 00:26:26.990 align:start position:0%
+go
+ahead<00:26:24.159><c> USB</c><00:26:24.720><c> support</c><00:26:25.559><c> I've</c><00:26:25.720><c> already</c>
+
+00:26:26.990 --> 00:26:27.000 align:start position:0%
+ahead USB support I've already
+
+
+00:26:27.000 --> 00:26:29.510 align:start position:0%
+ahead USB support I've already
+covered<00:26:28.000><c> um</c><00:26:28.360><c> oops</c>
+
+00:26:29.510 --> 00:26:29.520 align:start position:0%
+covered um oops
+
+
+00:26:29.520 --> 00:26:31.630 align:start position:0%
+covered um oops
+sorry<00:26:30.520><c> key</c>
+
+00:26:31.630 --> 00:26:31.640 align:start position:0%
+sorry key
+
+
+00:26:31.640 --> 00:26:33.149 align:start position:0%
+sorry key
+thing
+
+00:26:33.149 --> 00:26:33.159 align:start position:0%
+thing
+
+
+00:26:33.159 --> 00:26:37.430 align:start position:0%
+thing
+the<00:26:34.159><c> power</c><00:26:35.120><c> on</c><00:26:35.480><c> the</c><00:26:36.360><c> all</c><00:26:36.480><c> of</c><00:26:36.600><c> the</c><00:26:37.120><c> all</c><00:26:37.240><c> of</c><00:26:37.360><c> the</c>
+
+00:26:37.430 --> 00:26:37.440 align:start position:0%
+the power on the all of the all of the
+
+
+00:26:37.440 --> 00:26:41.350 align:start position:0%
+the power on the all of the all of the
+wards<00:26:37.880><c> up</c><00:26:38.039><c> till</c><00:26:38.799><c> late</c><00:26:39.080><c> last</c><00:26:39.559><c> year</c><00:26:40.559><c> was</c><00:26:40.840><c> limited</c>
+
+00:26:41.350 --> 00:26:41.360 align:start position:0%
+wards up till late last year was limited
+
+
+00:26:41.360 --> 00:26:43.230 align:start position:0%
+wards up till late last year was limited
+the<00:26:41.520><c> power</c><00:26:41.840><c> that</c><00:26:41.960><c> could</c><00:26:42.159><c> be</c><00:26:42.360><c> fed</c><00:26:42.760><c> from</c><00:26:43.000><c> that</c>
+
+00:26:43.230 --> 00:26:43.240 align:start position:0%
+the power that could be fed from that
+
+
+00:26:43.240 --> 00:26:44.870 align:start position:0%
+the power that could be fed from that
+connector<00:26:43.720><c> the</c><00:26:43.880><c> power</c><00:26:44.080><c> connector</c><00:26:44.480><c> I</c><00:26:44.600><c> showed</c>
+
+00:26:44.870 --> 00:26:44.880 align:start position:0%
+connector the power connector I showed
+
+
+00:26:44.880 --> 00:26:48.789 align:start position:0%
+connector the power connector I showed
+you<00:26:45.440><c> to</c><00:26:45.679><c> the</c><00:26:45.840><c> USB</c><00:26:46.399><c> sockets</c><00:26:46.919><c> was</c><00:26:47.080><c> limited</c><00:26:47.600><c> by</c><00:26:47.960><c> a</c>
+
+00:26:48.789 --> 00:26:48.799 align:start position:0%
+you to the USB sockets was limited by a
+
+
+00:26:48.799 --> 00:26:53.789 align:start position:0%
+you to the USB sockets was limited by a
+a<00:26:49.240><c> fuse</c><00:26:50.240><c> that</c><00:26:51.080><c> basically</c><00:26:52.159><c> open</c><00:26:53.159><c> temporarily</c>
+
+00:26:53.789 --> 00:26:53.799 align:start position:0%
+a fuse that basically open temporarily
+
+
+00:26:53.799 --> 00:26:55.870 align:start position:0%
+a fuse that basically open temporarily
+opens<00:26:54.520><c> when</c><00:26:54.679><c> the</c><00:26:54.799><c> power</c><00:26:55.360><c> when</c><00:26:55.480><c> the</c><00:26:55.559><c> current</c>
+
+00:26:55.870 --> 00:26:55.880 align:start position:0%
+opens when the power when the current
+
+
+00:26:55.880 --> 00:26:57.190 align:start position:0%
+opens when the power when the current
+exceeds<00:26:56.200><c> about</c><00:26:56.360><c> a</c><00:26:56.440><c> half</c><00:26:56.559><c> an</c><00:26:56.720><c> amp</c><00:26:56.960><c> and</c><00:26:57.039><c> then</c>
+
+00:26:57.190 --> 00:26:57.200 align:start position:0%
+exceeds about a half an amp and then
+
+
+00:26:57.200 --> 00:27:00.430 align:start position:0%
+exceeds about a half an amp and then
+closes<00:26:57.600><c> back</c><00:26:57.760><c> down</c><00:26:58.520><c> the</c><00:26:58.679><c> net</c><00:26:58.919><c> of</c><00:26:59.159><c> that</c><00:26:59.480><c> is</c><00:27:00.279><c> you</c>
+
+00:27:00.430 --> 00:27:00.440 align:start position:0%
+closes back down the net of that is you
+
+
+00:27:00.440 --> 00:27:02.549 align:start position:0%
+closes back down the net of that is you
+can't<00:27:00.679><c> get</c><00:27:00.880><c> there</c><00:27:01.039><c> from</c><00:27:01.240><c> here</c><00:27:01.760><c> trying</c><00:27:02.039><c> to</c><00:27:02.200><c> run</c>
+
+00:27:02.549 --> 00:27:02.559 align:start position:0%
+can't get there from here trying to run
+
+
+00:27:02.559 --> 00:27:05.789 align:start position:0%
+can't get there from here trying to run
+say<00:27:02.919><c> a</c><00:27:03.080><c> USB</c><00:27:03.559><c> hard</c><00:27:03.840><c> drive</c><00:27:04.640><c> off</c><00:27:04.760><c> of</c><00:27:04.919><c> the</c><00:27:05.039><c> USB</c>
+
+00:27:05.789 --> 00:27:05.799 align:start position:0%
+say a USB hard drive off of the USB
+
+
+00:27:05.799 --> 00:27:08.029 align:start position:0%
+say a USB hard drive off of the USB
+connector<00:27:06.720><c> just</c><00:27:06.880><c> from</c><00:27:07.080><c> the</c><00:27:07.240><c> power</c><00:27:07.559><c> going</c><00:27:07.840><c> in</c>
+
+00:27:08.029 --> 00:27:08.039 align:start position:0%
+connector just from the power going in
+
+
+00:27:08.039 --> 00:27:10.750 align:start position:0%
+connector just from the power going in
+through<00:27:08.200><c> the</c><00:27:08.360><c> micro</c><00:27:08.760><c> USB</c><00:27:09.760><c> power</c><00:27:10.480><c> power</c>
+
+00:27:10.750 --> 00:27:10.760 align:start position:0%
+through the micro USB power power
+
+
+00:27:10.760 --> 00:27:14.029 align:start position:0%
+through the micro USB power power
+connection<00:27:11.640><c> you</c><00:27:11.880><c> have</c><00:27:12.000><c> to</c><00:27:12.120><c> use</c><00:27:12.279><c> a</c><00:27:12.399><c> powered</c><00:27:13.039><c> Hub</c>
+
+00:27:14.029 --> 00:27:14.039 align:start position:0%
+connection you have to use a powered Hub
+
+
+00:27:14.039 --> 00:27:19.029 align:start position:0%
+connection you have to use a powered Hub
+and<00:27:14.640><c> and</c><00:27:15.640><c> uh</c><00:27:16.080><c> if</c><00:27:16.200><c> you've</c><00:27:16.520><c> got</c><00:27:17.240><c> a</c><00:27:17.520><c> REV</c><00:27:17.919><c> two</c><00:27:18.360><c> board</c>
+
+00:27:19.029 --> 00:27:19.039 align:start position:0%
+and and uh if you've got a REV two board
+
+
+00:27:19.039 --> 00:27:21.269 align:start position:0%
+and and uh if you've got a REV two board
+and<00:27:19.159><c> you</c><00:27:19.240><c> can</c><00:27:19.399><c> tell</c><00:27:19.720><c> rev</c><00:27:20.080><c> rev</c><00:27:20.399><c> two</c><00:27:20.679><c> board</c><00:27:21.080><c> has</c>
+
+00:27:21.269 --> 00:27:21.279 align:start position:0%
+and you can tell rev rev two board has
+
+
+00:27:21.279 --> 00:27:22.909 align:start position:0%
+and you can tell rev rev two board has
+two<00:27:21.440><c> holes</c><00:27:21.720><c> in</c><00:27:21.880><c> it</c><00:27:22.080><c> it's</c><00:27:22.279><c> got</c><00:27:22.399><c> two</c><00:27:22.559><c> mounting</c>
+
+00:27:22.909 --> 00:27:22.919 align:start position:0%
+two holes in it it's got two mounting
+
+
+00:27:22.919 --> 00:27:25.870 align:start position:0%
+two holes in it it's got two mounting
+holes<00:27:23.600><c> it's</c><00:27:23.760><c> a</c><00:27:23.880><c> good</c><00:27:24.039><c> way</c><00:27:24.200><c> to</c><00:27:24.520><c> to</c><00:27:24.760><c> spot</c><00:27:25.080><c> it</c><00:27:25.760><c> uh</c>
+
+00:27:25.870 --> 00:27:25.880 align:start position:0%
+holes it's a good way to to spot it uh
+
+
+00:27:25.880 --> 00:27:27.230 align:start position:0%
+holes it's a good way to to spot it uh
+they<00:27:26.000><c> started</c><00:27:26.279><c> shipping</c><00:27:26.640><c> those</c><00:27:26.919><c> towards</c><00:27:27.159><c> the</c>
+
+00:27:27.230 --> 00:27:27.240 align:start position:0%
+they started shipping those towards the
+
+
+00:27:27.240 --> 00:27:28.669 align:start position:0%
+they started shipping those towards the
+end<00:27:27.360><c> of</c><00:27:27.520><c> last</c><00:27:27.760><c> year</c>
+
+00:27:28.669 --> 00:27:28.679 align:start position:0%
+end of last year
+
+
+00:27:28.679 --> 00:27:30.789 align:start position:0%
+end of last year
+that<00:27:29.279><c> they</c><00:27:29.399><c> got</c><00:27:29.559><c> rid</c><00:27:29.679><c> of</c><00:27:29.760><c> the</c><00:27:29.880><c> fuse</c><00:27:30.440><c> so</c><00:27:30.600><c> now</c><00:27:30.720><c> you</c>
+
+00:27:30.789 --> 00:27:30.799 align:start position:0%
+that they got rid of the fuse so now you
+
+
+00:27:30.799 --> 00:27:32.430 align:start position:0%
+that they got rid of the fuse so now you
+can<00:27:30.919><c> get</c><00:27:31.039><c> all</c><00:27:31.159><c> the</c><00:27:31.320><c> current</c><00:27:31.919><c> through</c><00:27:32.240><c> there</c>
+
+00:27:32.430 --> 00:27:32.440 align:start position:0%
+can get all the current through there
+
+
+00:27:32.440 --> 00:27:34.389 align:start position:0%
+can get all the current through there
+but<00:27:32.559><c> the</c><00:27:32.720><c> vast</c><00:27:32.960><c> majority</c><00:27:33.360><c> of</c><00:27:33.559><c> you</c><00:27:33.960><c> that</c>
+
+00:27:34.389 --> 00:27:34.399 align:start position:0%
+but the vast majority of you that
+
+
+00:27:34.399 --> 00:27:37.710 align:start position:0%
+but the vast majority of you that
+already<00:27:34.679><c> have</c><00:27:34.880><c> rpis</c><00:27:35.880><c> got</c><00:27:36.080><c> that</c><00:27:36.720><c> limitation</c>
+
+00:27:37.710 --> 00:27:37.720 align:start position:0%
+already have rpis got that limitation
+
+
+00:27:37.720 --> 00:27:40.110 align:start position:0%
+already have rpis got that limitation
+the<00:27:37.919><c> solution</c><00:27:38.399><c> again</c><00:27:38.640><c> is</c><00:27:39.120><c> just</c><00:27:39.240><c> a</c><00:27:39.399><c> power</c><00:27:39.840><c> hub</c>
+
+00:27:40.110 --> 00:27:40.120 align:start position:0%
+the solution again is just a power hub
+
+
+00:27:40.120 --> 00:27:43.990 align:start position:0%
+the solution again is just a power hub
+with<00:27:40.360><c> adequate</c><00:27:40.760><c> power</c><00:27:41.000><c> L</c><00:27:41.799><c> I</c><00:27:41.919><c> recommend</c><00:27:42.279><c> two</c>
+
+00:27:43.990 --> 00:27:44.000 align:start position:0%
+with adequate power L I recommend two
+
+
+00:27:44.000 --> 00:27:48.549 align:start position:0%
+with adequate power L I recommend two
+amps<00:27:45.000><c> oh</c><00:27:45.519><c> just</c><00:27:46.360><c> go</c><00:27:46.559><c> back</c><00:27:46.720><c> one</c><00:27:46.840><c> more</c><00:27:47.480><c> time</c><00:27:48.480><c> this</c>
+
+00:27:48.549 --> 00:27:48.559 align:start position:0%
+amps oh just go back one more time this
+
+
+00:27:48.559 --> 00:27:50.029 align:start position:0%
+amps oh just go back one more time this
+is
+
+00:27:50.029 --> 00:27:50.039 align:start position:0%
+is
+
+
+00:27:50.039 --> 00:27:52.909 align:start position:0%
+is
+the<00:27:51.039><c> yeah</c><00:27:51.360><c> this</c><00:27:51.480><c> is</c><00:27:51.799><c> the</c><00:27:52.200><c> the</c><00:27:52.399><c> Ultimate</c>
+
+00:27:52.909 --> 00:27:52.919 align:start position:0%
+the yeah this is the the Ultimate
+
+
+00:27:52.919 --> 00:27:54.870 align:start position:0%
+the yeah this is the the Ultimate
+Raspberry<00:27:53.519><c> Pie</c><00:27:53.799><c> box</c><00:27:54.120><c> that's</c><00:27:54.240><c> a</c><00:27:54.399><c> raspberry</c>
+
+00:27:54.870 --> 00:27:54.880 align:start position:0%
+Raspberry Pie box that's a raspberry
+
+
+00:27:54.880 --> 00:28:00.310 align:start position:0%
+Raspberry Pie box that's a raspberry
+brulee
+
+00:28:00.310 --> 00:28:00.320 align:start position:0%
+
+
+
+00:28:00.320 --> 00:28:03.310 align:start position:0%
+
+next
+
+00:28:03.310 --> 00:28:03.320 align:start position:0%
+next
+
+
+00:28:03.320 --> 00:28:08.630 align:start position:0%
+next
+um<00:28:04.320><c> I</c><00:28:05.320><c> just</c><00:28:05.480><c> said</c><00:28:06.039><c> that</c>
+
+00:28:08.630 --> 00:28:08.640 align:start position:0%
+um I just said that
+
+
+00:28:08.640 --> 00:28:12.630 align:start position:0%
+um I just said that
+cool<00:28:09.640><c> general</c><00:28:10.000><c> purpose</c><00:28:10.440><c> iio</c><00:28:11.440><c> um</c><00:28:11.679><c> there's</c><00:28:11.960><c> a</c><00:28:12.120><c> 26</c>
+
+00:28:12.630 --> 00:28:12.640 align:start position:0%
+cool general purpose iio um there's a 26
+
+
+00:28:12.640 --> 00:28:15.470 align:start position:0%
+cool general purpose iio um there's a 26
+pin<00:28:12.840><c> header</c><00:28:13.159><c> that</c><00:28:13.360><c> I</c><00:28:13.679><c> mentioned</c><00:28:14.120><c> earlier</c><00:28:15.120><c> and</c>
+
+00:28:15.470 --> 00:28:15.480 align:start position:0%
+pin header that I mentioned earlier and
+
+
+00:28:15.480 --> 00:28:20.070 align:start position:0%
+pin header that I mentioned earlier and
+these<00:28:15.679><c> are</c><00:28:15.919><c> the</c><00:28:16.519><c> signals</c><00:28:17.960><c> available</c><00:28:18.960><c> um</c><00:28:19.760><c> three</c>
+
+00:28:20.070 --> 00:28:20.080 align:start position:0%
+these are the signals available um three
+
+
+00:28:20.080 --> 00:28:21.990 align:start position:0%
+these are the signals available um three
+flavors<00:28:20.720><c> of</c><00:28:20.880><c> Serial</c>
+
+00:28:21.990 --> 00:28:22.000 align:start position:0%
+flavors of Serial
+
+
+00:28:22.000 --> 00:28:25.710 align:start position:0%
+flavors of Serial
+IO<00:28:23.000><c> um</c><00:28:23.240><c> that</c><00:28:23.440><c> cover</c><00:28:23.960><c> the</c><00:28:24.120><c> majority</c><00:28:24.760><c> of</c><00:28:25.200><c> low</c><00:28:25.480><c> and</c>
+
+00:28:25.710 --> 00:28:25.720 align:start position:0%
+IO um that cover the majority of low and
+
+
+00:28:25.720 --> 00:28:28.710 align:start position:0%
+IO um that cover the majority of low and
+high<00:28:26.039><c> speed</c><00:28:26.840><c> peripherals</c><00:28:27.840><c> uh</c><00:28:28.159><c> it</c><00:28:28.360><c> has</c><00:28:28.519><c> a</c>
+
+00:28:28.710 --> 00:28:28.720 align:start position:0%
+high speed peripherals uh it has a
+
+
+00:28:28.720 --> 00:28:32.310 align:start position:0%
+high speed peripherals uh it has a
+regular<00:28:29.120><c> asynchronous</c><00:28:30.399><c> serial</c><00:28:31.399><c> IO</c>
+
+00:28:32.310 --> 00:28:32.320 align:start position:0%
+regular asynchronous serial IO
+
+
+00:28:32.320 --> 00:28:34.430 align:start position:0%
+regular asynchronous serial IO
+connection<00:28:32.960><c> that</c><00:28:33.080><c> you</c><00:28:33.200><c> can</c><00:28:33.480><c> use</c><00:28:34.159><c> there's</c>
+
+00:28:34.430 --> 00:28:34.440 align:start position:0%
+connection that you can use there's
+
+
+00:28:34.440 --> 00:28:36.470 align:start position:0%
+connection that you can use there's
+there's<00:28:34.600><c> full</c><00:28:34.880><c> support</c><00:28:35.279><c> for</c><00:28:35.440><c> it</c><00:28:35.679><c> as</c><00:28:35.799><c> a</c><00:28:36.080><c> Linux</c>
+
+00:28:36.470 --> 00:28:36.480 align:start position:0%
+there's full support for it as a Linux
+
+
+00:28:36.480 --> 00:28:40.029 align:start position:0%
+there's full support for it as a Linux
+console<00:28:36.960><c> for</c><00:28:37.399><c> example</c><00:28:38.399><c> uh</c><00:28:38.559><c> and</c><00:28:38.679><c> then</c><00:28:39.039><c> there's</c>
+
+00:28:40.029 --> 00:28:40.039 align:start position:0%
+console for example uh and then there's
+
+
+00:28:40.039 --> 00:28:44.269 align:start position:0%
+console for example uh and then there's
+general<00:28:40.399><c> purpose</c><00:28:40.799><c> parallel</c><00:28:41.360><c> IO</c><00:28:42.360><c> this</c><00:28:42.519><c> is</c><00:28:43.279><c> a</c>
+
+00:28:44.269 --> 00:28:44.279 align:start position:0%
+general purpose parallel IO this is a
+
+
+00:28:44.279 --> 00:28:46.950 align:start position:0%
+general purpose parallel IO this is a
+accessory<00:28:44.919><c> that</c><00:28:45.039><c> adaa</c><00:28:45.320><c> fruit</c><00:28:45.760><c> cells</c><00:28:46.760><c> just</c>
+
+00:28:46.950 --> 00:28:46.960 align:start position:0%
+accessory that adaa fruit cells just
+
+
+00:28:46.960 --> 00:28:50.350 align:start position:0%
+accessory that adaa fruit cells just
+plugs<00:28:47.279><c> into</c><00:28:47.679><c> a</c><00:28:47.840><c> prototyping</c><00:28:48.679><c> board</c><00:28:49.679><c> and</c><00:28:49.960><c> it's</c>
+
+00:28:50.350 --> 00:28:50.360 align:start position:0%
+plugs into a prototyping board and it's
+
+
+00:28:50.360 --> 00:28:52.990 align:start position:0%
+plugs into a prototyping board and it's
+called<00:28:51.200><c> a</c>
+
+00:28:52.990 --> 00:28:53.000 align:start position:0%
+called a
+
+
+00:28:53.000 --> 00:28:55.549 align:start position:0%
+called a
+cobbler<00:28:54.000><c> raspberry</c><00:28:54.440><c> pie</c>
+
+00:28:55.549 --> 00:28:55.559 align:start position:0%
+cobbler raspberry pie
+
+
+00:28:55.559 --> 00:28:59.350 align:start position:0%
+cobbler raspberry pie
+cobbler<00:28:56.559><c> next</c>
+
+00:28:59.350 --> 00:28:59.360 align:start position:0%
+cobbler next
+
+
+00:28:59.360 --> 00:29:01.750 align:start position:0%
+cobbler next
+more<00:28:59.720><c> iio</c><00:29:00.480><c> and</c><00:29:00.720><c> I</c><00:29:00.960><c> I've</c><00:29:01.120><c> already</c><00:29:01.360><c> mentioned</c>
+
+00:29:01.750 --> 00:29:01.760 align:start position:0%
+more iio and I I've already mentioned
+
+
+00:29:01.760 --> 00:29:04.870 align:start position:0%
+more iio and I I've already mentioned
+that<00:29:02.039><c> the</c><00:29:02.320><c> uh</c><00:29:02.440><c> CSI</c><00:29:03.000><c> camera</c><00:29:03.919><c> there's</c><00:29:04.200><c> also</c>
+
+00:29:04.870 --> 00:29:04.880 align:start position:0%
+that the uh CSI camera there's also
+
+
+00:29:04.880 --> 00:29:08.470 align:start position:0%
+that the uh CSI camera there's also
+actually<00:29:05.240><c> a</c><00:29:05.480><c> second</c><00:29:06.080><c> iPad</c><00:29:06.640><c> C</c><00:29:07.559><c> Port</c><00:29:08.000><c> hiding</c><00:29:08.279><c> out</c>
+
+00:29:08.470 --> 00:29:08.480 align:start position:0%
+actually a second iPad C Port hiding out
+
+
+00:29:08.480 --> 00:29:10.710 align:start position:0%
+actually a second iPad C Port hiding out
+on<00:29:08.640><c> one</c><00:29:08.760><c> of</c><00:29:08.880><c> the</c><00:29:09.000><c> other</c><00:29:09.440><c> connectors</c><00:29:10.440><c> and</c><00:29:10.640><c> there</c>
+
+00:29:10.710 --> 00:29:10.720 align:start position:0%
+on one of the other connectors and there
+
+
+00:29:10.720 --> 00:29:14.789 align:start position:0%
+on one of the other connectors and there
+are<00:29:10.960><c> some</c><00:29:11.600><c> J</c><00:29:11.960><c> JTAG</c><00:29:12.840><c> ports</c><00:29:13.760><c> those</c><00:29:13.919><c> of</c><00:29:14.120><c> you</c><00:29:14.399><c> that</c>
+
+00:29:14.789 --> 00:29:14.799 align:start position:0%
+are some J JTAG ports those of you that
+
+
+00:29:14.799 --> 00:29:18.269 align:start position:0%
+are some J JTAG ports those of you that
+can<00:29:15.000><c> appreciate</c><00:29:15.559><c> what</c><00:29:15.720><c> that</c><00:29:15.880><c> is</c>
+
+00:29:18.269 --> 00:29:18.279 align:start position:0%
+can appreciate what that is
+
+
+00:29:18.279 --> 00:29:22.350 align:start position:0%
+can appreciate what that is
+next<00:29:19.440><c> um</c><00:29:20.440><c> this</c><00:29:20.640><c> goes</c><00:29:20.840><c> over</c><00:29:21.120><c> the</c><00:29:21.320><c> version</c><00:29:21.600><c> two</c>
+
+00:29:22.350 --> 00:29:22.360 align:start position:0%
+next um this goes over the version two
+
+
+00:29:22.360 --> 00:29:24.789 align:start position:0%
+next um this goes over the version two
+changes<00:29:23.360><c> as</c><00:29:23.480><c> I</c><00:29:23.600><c> said</c><00:29:23.799><c> it</c><00:29:24.000><c> D</c><00:29:24.200><c> they</c><00:29:24.320><c> doubled</c><00:29:24.640><c> the</c>
+
+00:29:24.789 --> 00:29:24.799 align:start position:0%
+changes as I said it D they doubled the
+
+
+00:29:24.799 --> 00:29:28.870 align:start position:0%
+changes as I said it D they doubled the
+ram<00:29:25.480><c> to</c><00:29:25.760><c> half</c><00:29:25.960><c> a</c><00:29:26.799><c> gig</c><00:29:27.159><c> for</c><00:29:27.360><c> model</c><00:29:27.600><c> B</c>
+
+00:29:28.870 --> 00:29:28.880 align:start position:0%
+ram to half a gig for model B
+
+
+00:29:28.880 --> 00:29:31.909 align:start position:0%
+ram to half a gig for model B
+uh<00:29:29.039><c> and</c><00:29:29.360><c> corate</c><00:29:29.880><c> from</c><00:29:30.080><c> Model</c><00:29:30.559><c> A</c><00:29:31.559><c> remove</c><00:29:31.840><c> the</c>
+
+00:29:31.909 --> 00:29:31.919 align:start position:0%
+uh and corate from Model A remove the
+
+
+00:29:31.919 --> 00:29:34.909 align:start position:0%
+uh and corate from Model A remove the
+current<00:29:32.159><c> limiting</c><00:29:33.159><c> rearrange</c><00:29:33.600><c> the</c><00:29:33.720><c> gopo</c>
+
+00:29:34.909 --> 00:29:34.919 align:start position:0%
+current limiting rearrange the gopo
+
+
+00:29:34.919 --> 00:29:37.990 align:start position:0%
+current limiting rearrange the gopo
+slightly<00:29:35.919><c> uh</c><00:29:36.519><c> added</c><00:29:36.840><c> the</c><00:29:36.919><c> two</c><00:29:37.080><c> mounting</c><00:29:37.480><c> holes</c>
+
+00:29:37.990 --> 00:29:38.000 align:start position:0%
+slightly uh added the two mounting holes
+
+
+00:29:38.000 --> 00:29:41.149 align:start position:0%
+slightly uh added the two mounting holes
+so<00:29:38.640><c> if</c><00:29:38.840><c> you</c><00:29:39.039><c> see</c><00:29:39.480><c> these</c><00:29:39.679><c> two</c><00:29:39.960><c> holes</c><00:29:40.559><c> you</c><00:29:40.760><c> have</c><00:29:40.960><c> a</c>
+
+00:29:41.149 --> 00:29:41.159 align:start position:0%
+so if you see these two holes you have a
+
+
+00:29:41.159 --> 00:29:45.669 align:start position:0%
+so if you see these two holes you have a
+REV<00:29:41.480><c> two</c><00:29:41.840><c> BO</c><00:29:42.320><c> so</c><00:29:42.559><c> just</c><00:29:43.080><c> two</c><00:29:43.320><c> holes</c><00:29:43.880><c> rev</c><00:29:44.519><c> two</c><00:29:45.519><c> and</c>
+
+00:29:45.669 --> 00:29:45.679 align:start position:0%
+REV two BO so just two holes rev two and
+
+
+00:29:45.679 --> 00:29:48.950 align:start position:0%
+REV two BO so just two holes rev two and
+they<00:29:45.919><c> also</c><00:29:46.360><c> put</c><00:29:46.600><c> in</c><00:29:47.320><c> a</c><00:29:47.559><c> reset</c><00:29:48.279><c> circuit</c><00:29:48.720><c> so</c><00:29:48.880><c> if</c>
+
+00:29:48.950 --> 00:29:48.960 align:start position:0%
+they also put in a reset circuit so if
+
+
+00:29:48.960 --> 00:29:51.470 align:start position:0%
+they also put in a reset circuit so if
+you<00:29:49.080><c> short</c><00:29:49.480><c> these</c><00:29:49.720><c> two</c><00:29:50.600><c> connections</c><00:29:51.200><c> right</c>
+
+00:29:51.470 --> 00:29:51.480 align:start position:0%
+you short these two connections right
+
+
+00:29:51.480 --> 00:29:55.389 align:start position:0%
+you short these two connections right
+here<00:29:52.480><c> uh</c><00:29:52.640><c> it</c><00:29:52.760><c> triggers</c><00:29:53.760><c> reset</c>
+
+00:29:55.389 --> 00:29:55.399 align:start position:0%
+here uh it triggers reset
+
+
+00:29:55.399 --> 00:29:58.029 align:start position:0%
+here uh it triggers reset
+next<00:29:56.399><c> software</c><00:29:57.080><c> there</c><00:29:57.159><c> are</c><00:29:57.279><c> a</c><00:29:57.360><c> lot</c><00:29:57.480><c> of</c><00:29:57.640><c> OS</c>
+
+00:29:58.029 --> 00:29:58.039 align:start position:0%
+next software there are a lot of OS
+
+
+00:29:58.039 --> 00:30:03.029 align:start position:0%
+next software there are a lot of OS
+reports<00:29:58.320><c> in</c><00:29:58.960><c> progress</c><00:29:59.960><c> um</c><00:30:00.360><c> the</c><00:30:00.840><c> most</c><00:30:01.840><c> uh</c><00:30:02.159><c> well</c>
+
+00:30:03.029 --> 00:30:03.039 align:start position:0%
+reports in progress um the most uh well
+
+
+00:30:03.039 --> 00:30:05.669 align:start position:0%
+reports in progress um the most uh well
+supported<00:30:04.039><c> just</c><00:30:04.240><c> out</c><00:30:04.360><c> of</c><00:30:04.519><c> the</c><00:30:04.679><c> box</c><00:30:05.240><c> it</c><00:30:05.440><c> just</c>
+
+00:30:05.669 --> 00:30:05.679 align:start position:0%
+supported just out of the box it just
+
+
+00:30:05.679 --> 00:30:10.190 align:start position:0%
+supported just out of the box it just
+works<00:30:06.679><c> OS</c><00:30:07.360><c> is</c><00:30:07.600><c> a</c><00:30:07.760><c> version</c><00:30:08.000><c> of</c><00:30:08.159><c> Debian</c><00:30:09.000><c> Linux</c><00:30:10.000><c> uh</c>
+
+00:30:10.190 --> 00:30:10.200 align:start position:0%
+works OS is a version of Debian Linux uh
+
+
+00:30:10.200 --> 00:30:13.190 align:start position:0%
+works OS is a version of Debian Linux uh
+it's<00:30:10.519><c> the</c><00:30:10.960><c> uh</c><00:30:11.399><c> code</c><00:30:12.120><c> code</c><00:30:12.399><c> name</c><00:30:12.679><c> a</c><00:30:12.919><c> project</c>
+
+00:30:13.190 --> 00:30:13.200 align:start position:0%
+it's the uh code code name a project
+
+
+00:30:13.200 --> 00:30:16.110 align:start position:0%
+it's the uh code code name a project
+named<00:30:13.640><c> Wheezy</c><00:30:14.279><c> which</c><00:30:14.399><c> is</c><00:30:14.760><c> a</c><00:30:15.519><c> short</c><00:30:15.799><c> for</c>
+
+00:30:16.110 --> 00:30:16.120 align:start position:0%
+named Wheezy which is a short for
+
+
+00:30:16.120 --> 00:30:19.509 align:start position:0%
+named Wheezy which is a short for
+version<00:30:17.120><c> seven</c><00:30:17.799><c> and</c><00:30:18.360><c> I'm</c><00:30:18.440><c> going</c><00:30:18.559><c> to</c><00:30:18.679><c> go</c><00:30:18.840><c> over</c>
+
+00:30:19.509 --> 00:30:19.519 align:start position:0%
+version seven and I'm going to go over
+
+
+00:30:19.519 --> 00:30:25.350 align:start position:0%
+version seven and I'm going to go over
+few<00:30:20.080><c> minutes</c><00:30:21.240><c> uh</c><00:30:22.320><c> the</c><00:30:23.320><c> current</c><00:30:23.640><c> version</c><00:30:24.200><c> is</c><00:30:25.120><c> uh</c>
+
+00:30:25.350 --> 00:30:25.360 align:start position:0%
+few minutes uh the current version is uh
+
+
+00:30:25.360 --> 00:30:28.789 align:start position:0%
+few minutes uh the current version is uh
+dated<00:30:25.720><c> mid</c><00:30:26.279><c> December</c><00:30:27.279><c> of</c><00:30:27.559><c> last</c><00:30:27.760><c> year</c><00:30:28.039><c> here</c><00:30:28.640><c> uh</c>
+
+00:30:28.789 --> 00:30:28.799 align:start position:0%
+dated mid December of last year here uh
+
+
+00:30:28.799 --> 00:30:30.750 align:start position:0%
+dated mid December of last year here uh
+there's<00:30:28.960><c> an</c><00:30:29.120><c> earlier</c><00:30:29.679><c> one</c><00:30:30.279><c> that</c><00:30:30.399><c> uses</c>
+
+00:30:30.750 --> 00:30:30.760 align:start position:0%
+there's an earlier one that uses
+
+
+00:30:30.760 --> 00:30:32.190 align:start position:0%
+there's an earlier one that uses
+software<00:30:31.120><c> floating</c><00:30:31.519><c> Point</c><00:30:31.760><c> emulated</c>
+
+00:30:32.190 --> 00:30:32.200 align:start position:0%
+software floating Point emulated
+
+
+00:30:32.200 --> 00:30:34.350 align:start position:0%
+software floating Point emulated
+floating<00:30:32.559><c> point</c><00:30:33.279><c> that</c><00:30:33.399><c> is</c><00:30:33.600><c> necessary</c><00:30:33.960><c> to</c><00:30:34.120><c> run</c>
+
+00:30:34.350 --> 00:30:34.360 align:start position:0%
+floating point that is necessary to run
+
+
+00:30:34.360 --> 00:30:36.269 align:start position:0%
+floating point that is necessary to run
+Oracle
+
+00:30:36.269 --> 00:30:36.279 align:start position:0%
+Oracle
+
+
+00:30:36.279 --> 00:30:39.990 align:start position:0%
+Oracle
+Java<00:30:37.279><c> the</c><00:30:37.760><c> easy</c><00:30:38.120><c> way</c><00:30:38.240><c> to</c><00:30:38.440><c> get</c><00:30:38.600><c> started</c><00:30:39.519><c> is</c><00:30:39.760><c> with</c>
+
+00:30:39.990 --> 00:30:40.000 align:start position:0%
+Java the easy way to get started is with
+
+
+00:30:40.000 --> 00:30:41.110 align:start position:0%
+Java the easy way to get started is with
+a
+
+00:30:41.110 --> 00:30:41.120 align:start position:0%
+a
+
+
+00:30:41.120 --> 00:30:45.789 align:start position:0%
+a
+pre<00:30:42.120><c> installed</c><00:30:42.880><c> SD</c><00:30:43.279><c> card</c><00:30:44.200><c> you</c><00:30:44.320><c> can</c><00:30:44.519><c> buy</c><00:30:44.919><c> from</c>
+
+00:30:45.789 --> 00:30:45.799 align:start position:0%
+pre installed SD card you can buy from
+
+
+00:30:45.799 --> 00:30:47.789 align:start position:0%
+pre installed SD card you can buy from
+many<00:30:46.080><c> sources</c><00:30:46.760><c> and</c><00:30:47.039><c> uh</c><00:30:47.120><c> we'll</c><00:30:47.320><c> cover</c><00:30:47.559><c> that</c><00:30:47.679><c> in</c>
+
+00:30:47.789 --> 00:30:47.799 align:start position:0%
+many sources and uh we'll cover that in
+
+
+00:30:47.799 --> 00:30:51.630 align:start position:0%
+many sources and uh we'll cover that in
+just<00:30:47.919><c> a</c><00:30:48.360><c> second</c><00:30:49.360><c> um</c><00:30:50.200><c> but</c><00:30:50.360><c> it's</c><00:30:50.559><c> also</c><00:30:51.159><c> very</c><00:30:51.440><c> very</c>
+
+00:30:51.630 --> 00:30:51.640 align:start position:0%
+just a second um but it's also very very
+
+
+00:30:51.640 --> 00:30:54.509 align:start position:0%
+just a second um but it's also very very
+easy<00:30:52.120><c> to</c><00:30:52.360><c> prepare</c><00:30:52.919><c> an</c><00:30:53.120><c> SD</c><00:30:53.440><c> card</c><00:30:53.720><c> for</c><00:30:53.919><c> use</c><00:30:54.360><c> and</c>
+
+00:30:54.509 --> 00:30:54.519 align:start position:0%
+easy to prepare an SD card for use and
+
+
+00:30:54.519 --> 00:30:58.230 align:start position:0%
+easy to prepare an SD card for use and
+on<00:30:54.799><c> Saturday</c><00:30:55.720><c> we'll</c><00:30:56.039><c> have</c><00:30:56.399><c> a</c><00:30:56.600><c> factory</c><00:30:57.440><c> set</c><00:30:57.679><c> up</c>
+
+00:30:58.230 --> 00:30:58.240 align:start position:0%
+on Saturday we'll have a factory set up
+
+
+00:30:58.240 --> 00:31:00.149 align:start position:0%
+on Saturday we'll have a factory set up
+to<00:30:59.000><c> to</c><00:30:59.200><c> do</c>
+
+00:31:00.149 --> 00:31:00.159 align:start position:0%
+to to do
+
+
+00:31:00.159 --> 00:31:01.870 align:start position:0%
+to to do
+that
+
+00:31:01.870 --> 00:31:01.880 align:start position:0%
+that
+
+
+00:31:01.880 --> 00:31:05.269 align:start position:0%
+that
+um<00:31:02.880><c> the</c><00:31:03.159><c> starting</c><00:31:03.559><c> point</c><00:31:03.760><c> for</c>
+
+00:31:05.269 --> 00:31:05.279 align:start position:0%
+um the starting point for
+
+
+00:31:05.279 --> 00:31:10.190 align:start position:0%
+um the starting point for
+beginner<00:31:06.279><c> to</c><00:31:07.279><c> find</c><00:31:07.639><c> the</c><00:31:08.399><c> quick</c><00:31:08.639><c> start</c><00:31:09.200><c> guide</c>
+
+00:31:10.190 --> 00:31:10.200 align:start position:0%
+beginner to find the quick start guide
+
+
+00:31:10.200 --> 00:31:12.430 align:start position:0%
+beginner to find the quick start guide
+find<00:31:10.440><c> your</c><00:31:10.679><c> operating</c><00:31:11.120><c> system</c><00:31:11.519><c> image</c><00:31:12.000><c> for</c>
+
+00:31:12.430 --> 00:31:12.440 align:start position:0%
+find your operating system image for
+
+
+00:31:12.440 --> 00:31:16.470 align:start position:0%
+find your operating system image for
+instructions<00:31:13.200><c> for</c><00:31:14.200><c> not</c><00:31:14.720><c> doing</c><00:31:15.080><c> that</c><00:31:15.840><c> uh</c><00:31:16.080><c> is</c><00:31:16.320><c> at</c>
+
+00:31:16.470 --> 00:31:16.480 align:start position:0%
+instructions for not doing that uh is at
+
+
+00:31:16.480 --> 00:31:19.870 align:start position:0%
+instructions for not doing that uh is at
+the<00:31:16.639><c> download</c><00:31:17.120><c> site</c><00:31:17.960><c> next</c><00:31:18.960><c> okay</c><00:31:19.200><c> resources</c><00:31:19.799><c> I</c>
+
+00:31:19.870 --> 00:31:19.880 align:start position:0%
+the download site next okay resources I
+
+
+00:31:19.880 --> 00:31:21.750 align:start position:0%
+the download site next okay resources I
+think<00:31:20.039><c> I'm</c><00:31:20.679><c> three</c>
+
+00:31:21.750 --> 00:31:21.760 align:start position:0%
+think I'm three
+
+
+00:31:21.760 --> 00:31:26.110 align:start position:0%
+think I'm three
+slides<00:31:23.159><c> um</c><00:31:24.159><c> the</c><00:31:24.559><c> nonprofit</c><00:31:25.240><c> Foundation</c>
+
+00:31:26.110 --> 00:31:26.120 align:start position:0%
+slides um the nonprofit Foundation
+
+
+00:31:26.120 --> 00:31:28.549 align:start position:0%
+slides um the nonprofit Foundation
+that's<00:31:26.360><c> behind</c><00:31:26.679><c> Raspberry</c><00:31:27.200><c> Pi</c>
+
+00:31:28.549 --> 00:31:28.559 align:start position:0%
+that's behind Raspberry Pi
+
+
+00:31:28.559 --> 00:31:31.310 align:start position:0%
+that's behind Raspberry Pi
+um<00:31:29.000><c> is</c><00:31:29.279><c> at</c><00:31:29.519><c> raspberrypi.org</c>
+
+00:31:31.310 --> 00:31:31.320 align:start position:0%
+um is at raspberrypi.org
+
+
+00:31:31.320 --> 00:31:35.870 align:start position:0%
+um is at raspberrypi.org
+and<00:31:32.320><c> that</c><00:31:32.840><c> uh</c><00:31:32.919><c> it</c><00:31:33.080><c> has</c><00:31:33.279><c> a</c><00:31:34.120><c> very</c><00:31:34.360><c> very</c><00:31:34.519><c> good</c><00:31:34.720><c> blog</c>
+
+00:31:35.870 --> 00:31:35.880 align:start position:0%
+and that uh it has a very very good blog
+
+
+00:31:35.880 --> 00:31:40.190 align:start position:0%
+and that uh it has a very very good blog
+site<00:31:36.880><c> uh</c><00:31:37.000><c> a</c><00:31:37.159><c> whole</c><00:31:37.440><c> bunch</c><00:31:37.639><c> of</c><00:31:37.880><c> forums</c><00:31:39.200><c> with</c>
+
+00:31:40.190 --> 00:31:40.200 align:start position:0%
+site uh a whole bunch of forums with
+
+
+00:31:40.200 --> 00:31:43.230 align:start position:0%
+site uh a whole bunch of forums with
+more<00:31:40.399><c> than</c><00:31:40.880><c> 100,000</c><00:31:41.880><c> uh</c><00:31:42.080><c> people</c><00:31:42.519><c> on</c><00:31:42.679><c> the</c>
+
+00:31:43.230 --> 00:31:43.240 align:start position:0%
+more than 100,000 uh people on the
+
+
+00:31:43.240 --> 00:31:48.029 align:start position:0%
+more than 100,000 uh people on the
+forums<00:31:44.279><c> and</c><00:31:45.279><c> uh</c><00:31:45.480><c> just</c><00:31:45.799><c> tons</c><00:31:46.039><c> of</c><00:31:46.600><c> community</c><00:31:47.600><c> uh</c>
+
+00:31:48.029 --> 00:31:48.039 align:start position:0%
+forums and uh just tons of community uh
+
+
+00:31:48.039 --> 00:31:50.350 align:start position:0%
+forums and uh just tons of community uh
+efforts<00:31:48.440><c> that</c><00:31:48.559><c> are</c><00:31:48.760><c> being</c><00:31:49.200><c> uh</c><00:31:49.360><c> published</c>
+
+00:31:50.350 --> 00:31:50.360 align:start position:0%
+efforts that are being uh published
+
+
+00:31:50.360 --> 00:31:54.909 align:start position:0%
+efforts that are being uh published
+there<00:31:50.960><c> and</c><00:31:51.399><c> is</c><00:31:51.720><c> a</c><00:31:52.320><c> very</c><00:31:52.559><c> good</c><00:31:53.159><c> source</c><00:31:54.159><c> uh</c><00:31:54.480><c> of</c>
+
+00:31:54.909 --> 00:31:54.919 align:start position:0%
+there and is a very good source uh of
+
+
+00:31:54.919 --> 00:31:58.870 align:start position:0%
+there and is a very good source uh of
+what's<00:31:55.600><c> happening</c><00:31:56.600><c> the</c><00:31:56.799><c> next</c><00:31:57.240><c> link</c><00:31:58.000><c> is</c><00:31:58.639><c> the</c>
+
+00:31:58.870 --> 00:31:58.880 align:start position:0%
+what's happening the next link is the
+
+
+00:31:58.880 --> 00:32:01.149 align:start position:0%
+what's happening the next link is the
+place<00:31:59.120><c> to</c><00:31:59.320><c> go</c><00:31:59.760><c> for</c><00:32:00.080><c> information</c><00:32:00.960><c> about</c>
+
+00:32:01.149 --> 00:32:01.159 align:start position:0%
+place to go for information about
+
+
+00:32:01.159 --> 00:32:05.750 align:start position:0%
+place to go for information about
+Raspberry<00:32:02.080><c> Pi</c><00:32:03.080><c> uh</c><00:32:03.279><c> the</c><00:32:03.519><c> elinux</c><00:32:04.519><c> um</c><00:32:04.639><c> RPI</c><00:32:05.159><c> Hub</c><00:32:05.519><c> is</c>
+
+00:32:05.750 --> 00:32:05.760 align:start position:0%
+Raspberry Pi uh the elinux um RPI Hub is
+
+
+00:32:05.760 --> 00:32:11.230 align:start position:0%
+Raspberry Pi uh the elinux um RPI Hub is
+a<00:32:06.600><c> Wiki</c><00:32:07.600><c> and</c><00:32:08.399><c> has</c><00:32:09.399><c> vast</c><00:32:10.000><c> quantities</c><00:32:11.000><c> of</c>
+
+00:32:11.230 --> 00:32:11.240 align:start position:0%
+a Wiki and has vast quantities of
+
+
+00:32:11.240 --> 00:32:15.029 align:start position:0%
+a Wiki and has vast quantities of
+reference<00:32:12.159><c> material</c><00:32:13.159><c> and</c><00:32:13.880><c> in</c><00:32:14.039><c> particular</c><00:32:14.919><c> if</c>
+
+00:32:15.029 --> 00:32:15.039 align:start position:0%
+reference material and in particular if
+
+
+00:32:15.039 --> 00:32:17.669 align:start position:0%
+reference material and in particular if
+you're<00:32:15.240><c> interested</c><00:32:15.679><c> in</c><00:32:16.039><c> buying</c><00:32:16.760><c> Raspberry</c><00:32:17.279><c> Pi</c>
+
+00:32:17.669 --> 00:32:17.679 align:start position:0%
+you're interested in buying Raspberry Pi
+
+
+00:32:17.679 --> 00:32:19.710 align:start position:0%
+you're interested in buying Raspberry Pi
+or<00:32:17.919><c> an</c><00:32:18.159><c> accessory</c><00:32:18.600><c> or</c><00:32:18.760><c> something</c><00:32:19.120><c> like</c><00:32:19.320><c> that</c>
+
+00:32:19.710 --> 00:32:19.720 align:start position:0%
+or an accessory or something like that
+
+
+00:32:19.720 --> 00:32:21.990 align:start position:0%
+or an accessory or something like that
+URL<00:32:20.120><c> at</c><00:32:20.240><c> the</c><00:32:20.360><c> bottom</c>
+
+00:32:21.990 --> 00:32:22.000 align:start position:0%
+URL at the bottom
+
+
+00:32:22.000 --> 00:32:24.629 align:start position:0%
+URL at the bottom
+cover<00:32:23.000><c> Publications</c><00:32:23.679><c> there's</c><00:32:23.840><c> a</c><00:32:24.000><c> free</c><00:32:24.240><c> online</c>
+
+00:32:24.629 --> 00:32:24.639 align:start position:0%
+cover Publications there's a free online
+
+
+00:32:24.639 --> 00:32:26.029 align:start position:0%
+cover Publications there's a free online
+magazine<00:32:25.240><c> called</c>
+
+00:32:26.029 --> 00:32:26.039 align:start position:0%
+magazine called
+
+
+00:32:26.039 --> 00:32:28.669 align:start position:0%
+magazine called
+Magpie<00:32:27.039><c> uh</c><00:32:27.159><c> at</c><00:32:27.320><c> that</c><00:32:27.480><c> link</c><00:32:28.240><c> there's</c><00:32:28.480><c> an</c>
+
+00:32:28.669 --> 00:32:28.679 align:start position:0%
+Magpie uh at that link there's an
+
+
+00:32:28.679 --> 00:32:31.230 align:start position:0%
+Magpie uh at that link there's an
+educational<00:32:29.240><c> manual</c><00:32:30.120><c> which</c><00:32:30.360><c> someone</c>
+
+00:32:31.230 --> 00:32:31.240 align:start position:0%
+educational manual which someone
+
+
+00:32:31.240 --> 00:32:33.909 align:start position:0%
+educational manual which someone
+mentioned<00:32:32.240><c> uh</c><00:32:32.360><c> that's</c><00:32:32.600><c> available</c><00:32:33.159><c> and</c><00:32:33.440><c> the</c>
+
+00:32:33.909 --> 00:32:33.919 align:start position:0%
+mentioned uh that's available and the
+
+
+00:32:33.919 --> 00:32:36.230 align:start position:0%
+mentioned uh that's available and the
+the<00:32:34.120><c> URL</c><00:32:34.600><c> is</c><00:32:34.799><c> about</c><00:32:35.080><c> that</c><00:32:35.320><c> wide</c><00:32:35.600><c> so</c><00:32:35.880><c> I</c><00:32:36.000><c> made</c><00:32:36.120><c> a</c>
+
+00:32:36.230 --> 00:32:36.240 align:start position:0%
+the URL is about that wide so I made a
+
+
+00:32:36.240 --> 00:32:38.269 align:start position:0%
+the URL is about that wide so I made a
+tiny<00:32:36.480><c> URL</c><00:32:36.919><c> and</c><00:32:37.039><c> it's</c><00:32:37.240><c> stable</c><00:32:37.639><c> it</c><00:32:37.799><c> points</c><00:32:38.080><c> to</c>
+
+00:32:38.269 --> 00:32:38.279 align:start position:0%
+tiny URL and it's stable it points to
+
+
+00:32:38.279 --> 00:32:40.669 align:start position:0%
+tiny URL and it's stable it points to
+the<00:32:38.440><c> official</c><00:32:39.159><c> it</c><00:32:39.320><c> expands</c><00:32:39.760><c> to</c><00:32:39.919><c> the</c><00:32:40.039><c> official</c>
+
+00:32:40.669 --> 00:32:40.679 align:start position:0%
+the official it expands to the official
+
+
+00:32:40.679 --> 00:32:44.909 align:start position:0%
+the official it expands to the official
+URL<00:32:41.679><c> and</c><00:32:42.159><c> uh</c><00:32:42.279><c> they</c><00:32:42.399><c> are</c><00:32:42.639><c> updating</c><00:32:43.440><c> it</c><00:32:44.440><c> but</c><00:32:44.799><c> uh</c>
+
+00:32:44.909 --> 00:32:44.919 align:start position:0%
+URL and uh they are updating it but uh
+
+
+00:32:44.919 --> 00:32:46.950 align:start position:0%
+URL and uh they are updating it but uh
+you<00:32:45.000><c> can</c><00:32:45.200><c> find</c><00:32:45.399><c> that</c><00:32:45.559><c> educational</c><00:32:46.120><c> man</c><00:32:46.480><c> manual</c>
+
+00:32:46.950 --> 00:32:46.960 align:start position:0%
+you can find that educational man manual
+
+
+00:32:46.960 --> 00:32:50.470 align:start position:0%
+you can find that educational man manual
+with<00:32:47.279><c> Google</c><00:32:47.559><c> in</c><00:32:47.720><c> about</c><00:32:48.200><c> 10</c><00:32:48.840><c> seconds</c><00:32:49.840><c> uh</c>
+
+00:32:50.470 --> 00:32:50.480 align:start position:0%
+with Google in about 10 seconds uh
+
+
+00:32:50.480 --> 00:32:52.909 align:start position:0%
+with Google in about 10 seconds uh
+communities<00:32:51.480><c> there</c><00:32:51.600><c> are</c><00:32:52.120><c> uh</c><00:32:52.320><c> a</c><00:32:52.440><c> ton</c><00:32:52.639><c> of</c>
+
+00:32:52.909 --> 00:32:52.919 align:start position:0%
+communities there are uh a ton of
+
+
+00:32:52.919 --> 00:32:57.509 align:start position:0%
+communities there are uh a ton of
+communities<00:32:53.639><c> listed</c><00:32:54.519><c> at</c><00:32:54.960><c> the</c><00:32:55.639><c> U</c><00:32:56.600><c> the</c><00:32:56.720><c> elinux</c>
+
+00:32:57.509 --> 00:32:57.519 align:start position:0%
+communities listed at the U the elinux
+
+
+00:32:57.519 --> 00:33:03.070 align:start position:0%
+communities listed at the U the elinux
+wiki<00:32:58.200><c> site</c><00:32:59.440><c> and</c><00:33:00.440><c> uh</c><00:33:00.840><c> also</c><00:33:01.639><c> via</c><00:33:02.240><c> the</c><00:33:02.600><c> raspberry</c>
+
+00:33:03.070 --> 00:33:03.080 align:start position:0%
+wiki site and uh also via the raspberry
+
+
+00:33:03.080 --> 00:33:05.230 align:start position:0%
+wiki site and uh also via the raspberry
+p.org
+
+00:33:05.230 --> 00:33:05.240 align:start position:0%
+p.org
+
+
+00:33:05.240 --> 00:33:08.509 align:start position:0%
+p.org
+site<00:33:06.240><c> here</c><00:33:06.360><c> are</c><00:33:06.480><c> a</c><00:33:06.600><c> few</c><00:33:07.159><c> books</c><00:33:08.159><c> I've</c><00:33:08.320><c> heard</c>
+
+00:33:08.509 --> 00:33:08.519 align:start position:0%
+site here are a few books I've heard
+
+
+00:33:08.519 --> 00:33:10.870 align:start position:0%
+site here are a few books I've heard
+that<00:33:08.720><c> top</c><00:33:08.960><c> one</c><00:33:09.120><c> is</c><00:33:09.360><c> really</c><00:33:10.039><c> popular</c><00:33:10.519><c> oh</c><00:33:10.720><c> there</c>
+
+00:33:10.870 --> 00:33:10.880 align:start position:0%
+that top one is really popular oh there
+
+
+00:33:10.880 --> 00:33:12.789 align:start position:0%
+that top one is really popular oh there
+it
+
+00:33:12.789 --> 00:33:12.799 align:start position:0%
+it
+
+
+00:33:12.799 --> 00:33:16.629 align:start position:0%
+it
+is<00:33:13.799><c> we'll</c><00:33:13.960><c> be</c><00:33:14.120><c> giving</c><00:33:14.799><c> away</c><00:33:15.799><c> two</c><00:33:16.120><c> copies</c><00:33:16.440><c> of</c>
+
+00:33:16.629 --> 00:33:16.639 align:start position:0%
+is we'll be giving away two copies of
+
+
+00:33:16.639 --> 00:33:18.629 align:start position:0%
+is we'll be giving away two copies of
+this<00:33:17.000><c> courtesy</c><00:33:17.600><c> of</c><00:33:17.840><c> the</c>
+
+00:33:18.629 --> 00:33:18.639 align:start position:0%
+this courtesy of the
+
+
+00:33:18.639 --> 00:33:22.750 align:start position:0%
+this courtesy of the
+publisher<00:33:19.639><c> uh</c><00:33:20.120><c> at</c><00:33:20.240><c> the</c><00:33:20.360><c> end</c><00:33:20.519><c> of</c><00:33:20.720><c> the</c><00:33:21.760><c> session</c>
+
+00:33:22.750 --> 00:33:22.760 align:start position:0%
+publisher uh at the end of the session
+
+
+00:33:22.760 --> 00:33:26.230 align:start position:0%
+publisher uh at the end of the session
+um<00:33:23.159><c> the</c><00:33:23.519><c> next</c><00:33:23.720><c> one</c><00:33:24.200><c> uh</c><00:33:24.320><c> was</c><00:33:24.480><c> written</c><00:33:24.880><c> by</c><00:33:25.720><c> uh</c><00:33:26.120><c> one</c>
+
+00:33:26.230 --> 00:33:26.240 align:start position:0%
+um the next one uh was written by uh one
+
+
+00:33:26.240 --> 00:33:29.789 align:start position:0%
+um the next one uh was written by uh one
+of<00:33:26.320><c> the</c><00:33:26.519><c> creators</c><00:33:27.200><c> uh</c><00:33:28.000><c> Upton</c><00:33:28.840><c> and</c><00:33:28.960><c> is</c><00:33:29.120><c> a</c><00:33:29.320><c> good</c>
+
+00:33:29.789 --> 00:33:29.799 align:start position:0%
+of the creators uh Upton and is a good
+
+
+00:33:29.799 --> 00:33:32.669 align:start position:0%
+of the creators uh Upton and is a good
+starting<00:33:30.240><c> point</c><00:33:31.000><c> but</c><00:33:31.200><c> really</c><00:33:31.799><c> if</c><00:33:31.919><c> you</c><00:33:32.159><c> search</c>
+
+00:33:32.669 --> 00:33:32.679 align:start position:0%
+starting point but really if you search
+
+
+00:33:32.679 --> 00:33:35.470 align:start position:0%
+starting point but really if you search
+Amazon<00:33:33.320><c> and</c><00:33:33.519><c> Barnes</c><00:33:33.799><c> &</c><00:33:33.960><c> Noble</c><00:33:34.720><c> you'll</c><00:33:34.919><c> see</c>
+
+00:33:35.470 --> 00:33:35.480 align:start position:0%
+Amazon and Barnes & Noble you'll see
+
+
+00:33:35.480 --> 00:33:39.669 align:start position:0%
+Amazon and Barnes & Noble you'll see
+dozens<00:33:36.480><c> of</c><00:33:36.679><c> books</c><00:33:37.519><c> that</c><00:33:37.880><c> that</c><00:33:38.399><c> that</c><00:33:38.559><c> go</c><00:33:38.720><c> into</c>
+
+00:33:39.669 --> 00:33:39.679 align:start position:0%
+dozens of books that that that go into
+
+
+00:33:39.679 --> 00:33:44.629 align:start position:0%
+dozens of books that that that go into
+different
+
+00:33:44.629 --> 00:33:44.639 align:start position:0%
+
+
+
+00:33:44.639 --> 00:33:48.629 align:start position:0%
+
+specializations<00:33:46.000><c> and</c><00:33:47.000><c> here's</c><00:33:47.519><c> the</c><00:33:48.399><c> how</c><00:33:48.519><c> do</c>
+
+00:33:48.629 --> 00:33:48.639 align:start position:0%
+specializations and here's the how do
+
+
+00:33:48.639 --> 00:33:49.590 align:start position:0%
+specializations and here's the how do
+you<00:33:48.840><c> get</c>
+
+00:33:49.590 --> 00:33:49.600 align:start position:0%
+you get
+
+
+00:33:49.600 --> 00:33:52.310 align:start position:0%
+you get
+started<00:33:50.760><c> so</c>
+
+00:33:52.310 --> 00:33:52.320 align:start position:0%
+started so
+
+
+00:33:52.320 --> 00:33:57.830 align:start position:0%
+started so
+you<00:33:53.720><c> um</c><00:33:54.720><c> insert</c><00:33:55.159><c> your</c><00:33:55.360><c> SD</c><00:33:55.799><c> card</c>
+
+00:33:57.830 --> 00:33:57.840 align:start position:0%
+you um insert your SD card
+
+
+00:33:57.840 --> 00:34:02.789 align:start position:0%
+you um insert your SD card
+you<00:33:58.480><c> connect</c><00:33:58.799><c> the</c><00:33:59.080><c> display</c><00:34:00.080><c> either</c><00:34:00.960><c> RCA</c><00:34:01.480><c> or</c>
+
+00:34:02.789 --> 00:34:02.799 align:start position:0%
+you connect the display either RCA or
+
+
+00:34:02.799 --> 00:34:06.789 align:start position:0%
+you connect the display either RCA or
+HDMI<00:34:03.799><c> connect</c><00:34:04.399><c> the</c><00:34:05.039><c> USB</c><00:34:05.519><c> C</c><00:34:05.960><c> keyboard</c><00:34:06.240><c> and</c>
+
+00:34:06.789 --> 00:34:06.799 align:start position:0%
+HDMI connect the USB C keyboard and
+
+
+00:34:06.799 --> 00:34:09.430 align:start position:0%
+HDMI connect the USB C keyboard and
+mouse<00:34:07.799><c> connect</c><00:34:08.119><c> the</c>
+
+00:34:09.430 --> 00:34:09.440 align:start position:0%
+mouse connect the
+
+
+00:34:09.440 --> 00:34:12.310 align:start position:0%
+mouse connect the
+network<00:34:10.440><c> turn</c><00:34:10.639><c> on</c><00:34:10.839><c> the</c>
+
+00:34:12.310 --> 00:34:12.320 align:start position:0%
+network turn on the
+
+
+00:34:12.320 --> 00:34:14.909 align:start position:0%
+network turn on the
+power<00:34:13.320><c> and</c><00:34:14.000><c> that's</c>
+
+00:34:14.909 --> 00:34:14.919 align:start position:0%
+power and that's
+
+
+00:34:14.919 --> 00:34:17.750 align:start position:0%
+power and that's
+it
+
+00:34:17.750 --> 00:34:17.760 align:start position:0%
+it
+
+
+00:34:17.760 --> 00:34:24.109 align:start position:0%
+it
+next<00:34:18.760><c> so</c><00:34:19.079><c> that'll</c><00:34:19.359><c> turn</c><00:34:19.520><c> it</c><00:34:19.679><c> over</c><00:34:20.240><c> to</c><00:34:21.240><c> Alan</c>
+
+00:34:24.109 --> 00:34:24.119 align:start position:0%
+
+
+
+00:34:24.119 --> 00:34:28.589 align:start position:0%
+
+and<00:34:25.119><c> if</c><00:34:25.560><c> you</c><00:34:26.560><c> push</c><00:34:26.879><c> that</c><00:34:27.079><c> button</c>
+
+00:34:28.589 --> 00:34:28.599 align:start position:0%
+and if you push that button
+
+
+00:34:28.599 --> 00:34:38.909 align:start position:0%
+and if you push that button
+mute<00:34:29.599><c> muted</c>
+
+00:34:38.909 --> 00:34:38.919 align:start position:0%
+
+
+
+00:34:38.919 --> 00:34:46.349 align:start position:0%
+
+now<00:34:39.919><c> on</c>
+
+00:34:46.349 --> 00:34:46.359 align:start position:0%
+
+
+
+00:34:46.359 --> 00:34:48.310 align:start position:0%
+
+your<00:34:47.359><c> mic</c>
+
+00:34:48.310 --> 00:34:48.320 align:start position:0%
+your mic
+
+
+00:34:48.320 --> 00:34:51.909 align:start position:0%
+your mic
+check<00:34:49.320><c> is</c><00:34:49.399><c> that</c><00:34:49.760><c> okay</c><00:34:50.320><c> oh</c><00:34:50.480><c> yeah</c>
+
+00:34:51.909 --> 00:34:51.919 align:start position:0%
+check is that okay oh yeah
+
+
+00:34:51.919 --> 00:34:56.630 align:start position:0%
+check is that okay oh yeah
+cool
+
+00:34:56.630 --> 00:34:56.640 align:start position:0%
+
+
+
+00:34:56.640 --> 00:35:00.110 align:start position:0%
+
+so<00:34:57.680><c> start</c><00:34:57.800><c> a</c><00:34:57.880><c> slow</c><00:34:58.040><c> clap</c><00:34:58.320><c> repeat</c><00:34:58.640><c> that</c><00:34:58.720><c> was</c>
+
+00:35:00.110 --> 00:35:00.120 align:start position:0%
+so start a slow clap repeat that was
+
+
+00:35:00.120 --> 00:35:03.470 align:start position:0%
+so start a slow clap repeat that was
+[Applause]
+
+00:35:03.470 --> 00:35:03.480 align:start position:0%
+
+
+
+00:35:03.480 --> 00:35:05.430 align:start position:0%
+
+awesome<00:35:04.480><c> that's</c><00:35:04.720><c> enough</c><00:35:04.920><c> it</c><00:35:05.000><c> wasn't</c><00:35:05.240><c> that</c>
+
+00:35:05.430 --> 00:35:05.440 align:start position:0%
+awesome that's enough it wasn't that
+
+
+00:35:05.440 --> 00:35:07.230 align:start position:0%
+awesome that's enough it wasn't that
+great<00:35:05.800><c> it</c><00:35:05.960><c> was</c>
+
+00:35:07.230 --> 00:35:07.240 align:start position:0%
+great it was
+
+
+00:35:07.240 --> 00:35:09.990 align:start position:0%
+great it was
+okay<00:35:08.240><c> um</c><00:35:08.680><c> so</c><00:35:08.920><c> thank</c><00:35:09.079><c> you</c><00:35:09.200><c> guys</c><00:35:09.320><c> for</c><00:35:09.480><c> coming</c><00:35:09.680><c> out</c>
+
+00:35:09.990 --> 00:35:10.000 align:start position:0%
+okay um so thank you guys for coming out
+
+
+00:35:10.000 --> 00:35:12.510 align:start position:0%
+okay um so thank you guys for coming out
+my<00:35:10.119><c> name</c><00:35:10.320><c> is</c><00:35:10.520><c> Alan</c><00:35:10.839><c> diaper</c><00:35:11.480><c> and</c><00:35:12.079><c> I</c><00:35:12.240><c> and</c><00:35:12.400><c> the</c>
+
+00:35:12.510 --> 00:35:12.520 align:start position:0%
+my name is Alan diaper and I and the
+
+
+00:35:12.520 --> 00:35:13.870 align:start position:0%
+my name is Alan diaper and I and the
+rest<00:35:12.640><c> of</c><00:35:12.800><c> these</c><00:35:12.920><c> folks</c><00:35:13.160><c> are</c><00:35:13.280><c> from</c><00:35:13.400><c> a</c><00:35:13.560><c> place</c>
+
+00:35:13.870 --> 00:35:13.880 align:start position:0%
+rest of these folks are from a place
+
+
+00:35:13.880 --> 00:35:16.510 align:start position:0%
+rest of these folks are from a place
+called<00:35:14.320><c> Splat</c><00:35:14.760><c> space</c><00:35:15.240><c> which</c><00:35:15.480><c> is</c><00:35:15.720><c> a</c><00:35:16.079><c> haacker</c>
+
+00:35:16.510 --> 00:35:16.520 align:start position:0%
+called Splat space which is a haacker
+
+
+00:35:16.520 --> 00:35:19.109 align:start position:0%
+called Splat space which is a haacker
+space<00:35:17.359><c> maker</c><00:35:17.800><c> space</c><00:35:18.280><c> allar</c><00:35:18.520><c> around</c><00:35:18.800><c> cool</c>
+
+00:35:19.109 --> 00:35:19.119 align:start position:0%
+space maker space allar around cool
+
+
+00:35:19.119 --> 00:35:22.069 align:start position:0%
+space maker space allar around cool
+place<00:35:19.520><c> in</c><00:35:19.800><c> Dura</c><00:35:20.720><c> and</c><00:35:21.119><c> um</c><00:35:21.680><c> one</c><00:35:21.760><c> of</c><00:35:21.800><c> the</c><00:35:21.880><c> things</c>
+
+00:35:22.069 --> 00:35:22.079 align:start position:0%
+place in Dura and um one of the things
+
+
+00:35:22.079 --> 00:35:23.550 align:start position:0%
+place in Dura and um one of the things
+we<00:35:22.200><c> do</c><00:35:22.359><c> there</c><00:35:22.520><c> is</c><00:35:22.640><c> fiddle</c><00:35:23.000><c> with</c><00:35:23.200><c> the</c><00:35:23.320><c> latest</c>
+
+00:35:23.550 --> 00:35:23.560 align:start position:0%
+we do there is fiddle with the latest
+
+
+00:35:23.560 --> 00:35:24.990 align:start position:0%
+we do there is fiddle with the latest
+and<00:35:23.680><c> greatest</c><00:35:24.040><c> new</c><00:35:24.200><c> technologies</c><00:35:24.800><c> and</c>
+
+00:35:24.990 --> 00:35:25.000 align:start position:0%
+and greatest new technologies and
+
+
+00:35:25.000 --> 00:35:27.470 align:start position:0%
+and greatest new technologies and
+Raspberry<00:35:25.480><c> Pi</c><00:35:26.079><c> certainly</c><00:35:26.520><c> qualifies</c><00:35:27.200><c> as</c><00:35:27.359><c> one</c>
+
+00:35:27.470 --> 00:35:27.480 align:start position:0%
+Raspberry Pi certainly qualifies as one
+
+
+00:35:27.480 --> 00:35:31.390 align:start position:0%
+Raspberry Pi certainly qualifies as one
+of<00:35:28.119><c> those</c><00:35:29.119><c> quick</c><00:35:29.480><c> show</c><00:35:29.800><c> of</c><00:35:30.000><c> hands</c><00:35:30.599><c> who</c><00:35:30.920><c> has</c>
+
+00:35:31.390 --> 00:35:31.400 align:start position:0%
+of those quick show of hands who has
+
+
+00:35:31.400 --> 00:35:33.910 align:start position:0%
+of those quick show of hands who has
+written<00:35:31.760><c> a</c><00:35:31.920><c> computer</c><00:35:32.480><c> program</c>
+
+00:35:33.910 --> 00:35:33.920 align:start position:0%
+written a computer program
+
+
+00:35:33.920 --> 00:35:36.470 align:start position:0%
+written a computer program
+before<00:35:34.920><c> keep</c><00:35:35.240><c> that</c><00:35:35.440><c> up</c><00:35:35.720><c> if</c><00:35:35.839><c> you</c><00:35:36.000><c> learned</c><00:35:36.359><c> how</c>
+
+00:35:36.470 --> 00:35:36.480 align:start position:0%
+before keep that up if you learned how
+
+
+00:35:36.480 --> 00:35:39.109 align:start position:0%
+before keep that up if you learned how
+to<00:35:36.680><c> program</c><00:35:37.119><c> on</c><00:35:37.359><c> one</c><00:35:37.599><c> of</c><00:35:38.200><c> the</c><00:35:38.359><c> Vic</c><00:35:38.599><c> 20</c><00:35:39.000><c> the</c>
+
+00:35:39.109 --> 00:35:39.119 align:start position:0%
+to program on one of the Vic 20 the
+
+
+00:35:39.119 --> 00:35:42.430 align:start position:0%
+to program on one of the Vic 20 the
+congro<00:35:39.560><c> 64</c><00:35:40.240><c> the</c><00:35:40.359><c> Apple</c><00:35:40.599><c> 2</c><00:35:40.920><c> or</c><00:35:41.160><c> any</c><00:35:41.440><c> Apple</c><00:35:42.320><c> you</c>
+
+00:35:42.430 --> 00:35:42.440 align:start position:0%
+congro 64 the Apple 2 or any Apple you
+
+
+00:35:42.440 --> 00:35:46.829 align:start position:0%
+congro 64 the Apple 2 or any Apple you
+know<00:35:42.599><c> back</c><00:35:42.760><c> when</c><00:35:42.880><c> they</c><00:35:42.960><c> were</c><00:35:43.280><c> good</c><00:35:44.280><c> and</c><00:35:44.920><c> um</c>
+
+00:35:46.829 --> 00:35:46.839 align:start position:0%
+know back when they were good and um
+
+
+00:35:46.839 --> 00:35:50.750 align:start position:0%
+know back when they were good and um
+800<00:35:47.920><c> 360</c><00:35:48.920><c> yeah</c><00:35:49.680><c> anybody</c><00:35:50.000><c> learn</c><00:35:50.280><c> you</c><00:35:50.359><c> learn</c><00:35:50.680><c> out</c>
+
+00:35:50.750 --> 00:35:50.760 align:start position:0%
+800 360 yeah anybody learn you learn out
+
+
+00:35:50.760 --> 00:35:53.589 align:start position:0%
+800 360 yeah anybody learn you learn out
+of<00:35:51.000><c> 360</c><00:35:51.640><c> yeah</c><00:35:51.839><c> yeah</c><00:35:52.000><c> ANM</c><00:35:52.760><c> sure</c><00:35:53.000><c> assembly</c>
+
+00:35:53.589 --> 00:35:53.599 align:start position:0%
+of 360 yeah yeah ANM sure assembly
+
+
+00:35:53.599 --> 00:35:56.270 align:start position:0%
+of 360 yeah yeah ANM sure assembly
+assembly<00:35:54.240><c> language</c><00:35:55.240><c> got</c><00:35:55.359><c> a</c><00:35:55.440><c> few</c><00:35:55.560><c> of</c><00:35:55.720><c> those</c>
+
+00:35:56.270 --> 00:35:56.280 align:start position:0%
+assembly language got a few of those
+
+
+00:35:56.280 --> 00:35:58.630 align:start position:0%
+assembly language got a few of those
+hands<00:35:56.520><c> for</c><00:35:56.800><c> those</c><00:35:57.440><c> wow</c>
+
+00:35:58.630 --> 00:35:58.640 align:start position:0%
+hands for those wow
+
+
+00:35:58.640 --> 00:36:00.270 align:start position:0%
+hands for those wow
+so<00:35:59.040><c> I'm</c><00:35:59.240><c> I'm</c><00:35:59.400><c> happy</c><00:35:59.560><c> to</c><00:35:59.720><c> announce</c><00:36:00.040><c> you</c><00:36:00.160><c> guys</c>
+
+00:36:00.270 --> 00:36:00.280 align:start position:0%
+so I'm I'm happy to announce you guys
+
+
+00:36:00.280 --> 00:36:01.990 align:start position:0%
+so I'm I'm happy to announce you guys
+that<00:36:00.400><c> computers</c><00:36:00.760><c> have</c><00:36:00.880><c> gotten</c><00:36:01.079><c> a</c><00:36:01.200><c> lot</c><00:36:01.400><c> smaller</c>
+
+00:36:01.990 --> 00:36:02.000 align:start position:0%
+that computers have gotten a lot smaller
+
+
+00:36:02.000 --> 00:36:04.950 align:start position:0%
+that computers have gotten a lot smaller
+and<00:36:02.200><c> one</c><00:36:02.560><c> of</c><00:36:03.560><c> one</c><00:36:03.680><c> of</c><00:36:03.880><c> those</c><00:36:04.160><c> is</c><00:36:04.319><c> the</c><00:36:04.440><c> Raspberry</c>
+
+00:36:04.950 --> 00:36:04.960 align:start position:0%
+and one of one of those is the Raspberry
+
+
+00:36:04.960 --> 00:36:07.550 align:start position:0%
+and one of one of those is the Raspberry
+Pi<00:36:05.319><c> so</c><00:36:05.760><c> myself</c><00:36:06.160><c> I'm</c><00:36:06.280><c> a</c><00:36:06.440><c> computer</c><00:36:06.800><c> programmer</c>
+
+00:36:07.550 --> 00:36:07.560 align:start position:0%
+Pi so myself I'm a computer programmer
+
+
+00:36:07.560 --> 00:36:10.190 align:start position:0%
+Pi so myself I'm a computer programmer
+and<00:36:08.000><c> um</c><00:36:08.800><c> one</c><00:36:08.920><c> of</c><00:36:09.000><c> the</c><00:36:09.160><c> pieces</c><00:36:09.440><c> of</c><00:36:09.760><c> Hardware</c>
+
+00:36:10.190 --> 00:36:10.200 align:start position:0%
+and um one of the pieces of Hardware
+
+
+00:36:10.200 --> 00:36:11.630 align:start position:0%
+and um one of the pieces of Hardware
+that<00:36:10.400><c> that</c><00:36:10.560><c> came</c><00:36:10.720><c> out</c><00:36:10.880><c> fairly</c><00:36:11.160><c> recently</c><00:36:11.520><c> is</c>
+
+00:36:11.630 --> 00:36:11.640 align:start position:0%
+that that came out fairly recently is
+
+
+00:36:11.640 --> 00:36:13.630 align:start position:0%
+that that came out fairly recently is
+the<00:36:11.760><c> Arduino</c><00:36:12.359><c> and</c><00:36:12.520><c> I</c><00:36:12.760><c> suspect</c><00:36:13.119><c> a</c><00:36:13.200><c> lot</c><00:36:13.319><c> of</c><00:36:13.400><c> folks</c>
+
+00:36:13.630 --> 00:36:13.640 align:start position:0%
+the Arduino and I suspect a lot of folks
+
+
+00:36:13.640 --> 00:36:17.030 align:start position:0%
+the Arduino and I suspect a lot of folks
+in<00:36:13.760><c> this</c><00:36:13.920><c> room</c><00:36:14.599><c> have</c><00:36:15.200><c> arduinos</c><00:36:16.200><c> and</c><00:36:16.560><c> arduinos</c>
+
+00:36:17.030 --> 00:36:17.040 align:start position:0%
+in this room have arduinos and arduinos
+
+
+00:36:17.040 --> 00:36:19.349 align:start position:0%
+in this room have arduinos and arduinos
+are<00:36:17.160><c> certainly</c><00:36:17.599><c> an</c><00:36:17.760><c> awesome</c><00:36:18.400><c> if</c><00:36:18.520><c> not</c><00:36:18.800><c> radical</c>
+
+00:36:19.349 --> 00:36:19.359 align:start position:0%
+are certainly an awesome if not radical
+
+
+00:36:19.359 --> 00:36:21.710 align:start position:0%
+are certainly an awesome if not radical
+piece<00:36:19.520><c> of</c><00:36:19.760><c> technology</c><00:36:20.760><c> but</c><00:36:21.200><c> uh</c><00:36:21.359><c> the</c>
+
+00:36:21.710 --> 00:36:21.720 align:start position:0%
+piece of technology but uh the
+
+
+00:36:21.720 --> 00:36:23.829 align:start position:0%
+piece of technology but uh the
+development<00:36:22.359><c> process</c><00:36:22.720><c> for</c><00:36:22.920><c> an</c><00:36:23.079><c> arduo</c><00:36:23.640><c> is</c>
+
+00:36:23.829 --> 00:36:23.839 align:start position:0%
+development process for an arduo is
+
+
+00:36:23.839 --> 00:36:26.109 align:start position:0%
+development process for an arduo is
+actually<00:36:24.079><c> fairly</c><00:36:24.520><c> convoluted</c><00:36:25.520><c> namely</c><00:36:26.000><c> you</c>
+
+00:36:26.109 --> 00:36:26.119 align:start position:0%
+actually fairly convoluted namely you
+
+
+00:36:26.119 --> 00:36:29.670 align:start position:0%
+actually fairly convoluted namely you
+need<00:36:26.319><c> to</c><00:36:26.640><c> have</c><00:36:26.960><c> a</c><00:36:27.160><c> PC</c><00:36:27.680><c> a</c><00:36:27.839><c> real</c><00:36:28.280><c> computer</c><00:36:29.280><c> to</c><00:36:29.480><c> do</c>
+
+00:36:29.670 --> 00:36:29.680 align:start position:0%
+need to have a PC a real computer to do
+
+
+00:36:29.680 --> 00:36:31.589 align:start position:0%
+need to have a PC a real computer to do
+work<00:36:29.920><c> on</c><00:36:30.040><c> an</c><00:36:30.160><c> Arduino</c><00:36:30.680><c> you</c><00:36:30.839><c> can't</c><00:36:31.160><c> program</c>
+
+00:36:31.589 --> 00:36:31.599 align:start position:0%
+work on an Arduino you can't program
+
+
+00:36:31.599 --> 00:36:34.349 align:start position:0%
+work on an Arduino you can't program
+directly<00:36:31.960><c> on</c><00:36:32.119><c> the</c><00:36:32.240><c> Arduino</c><00:36:33.079><c> and</c><00:36:33.240><c> in</c><00:36:33.440><c> fact</c><00:36:34.240><c> uh</c>
+
+00:36:34.349 --> 00:36:34.359 align:start position:0%
+directly on the Arduino and in fact uh
+
+
+00:36:34.359 --> 00:36:36.710 align:start position:0%
+directly on the Arduino and in fact uh
+about<00:36:34.520><c> a</c><00:36:34.680><c> year</c><00:36:34.839><c> and</c><00:36:34.960><c> a</c><00:36:35.079><c> half</c><00:36:35.319><c> ago</c><00:36:35.880><c> I</c><00:36:36.280><c> myself</c><00:36:36.560><c> and</c>
+
+00:36:36.710 --> 00:36:36.720 align:start position:0%
+about a year and a half ago I myself and
+
+
+00:36:36.720 --> 00:36:40.230 align:start position:0%
+about a year and a half ago I myself and
+another<00:36:36.960><c> friend</c><00:36:37.240><c> became</c><00:36:37.520><c> so</c><00:36:38.160><c> uh</c><00:36:39.079><c> uh</c><00:36:39.880><c> annoyed</c>
+
+00:36:40.230 --> 00:36:40.240 align:start position:0%
+another friend became so uh uh annoyed
+
+
+00:36:40.240 --> 00:36:41.750 align:start position:0%
+another friend became so uh uh annoyed
+at<00:36:40.400><c> this</c><00:36:40.520><c> that</c><00:36:40.640><c> we</c><00:36:40.800><c> tried</c><00:36:41.040><c> to</c><00:36:41.200><c> write</c><00:36:41.440><c> a</c><00:36:41.560><c> high</c>
+
+00:36:41.750 --> 00:36:41.760 align:start position:0%
+at this that we tried to write a high
+
+
+00:36:41.760 --> 00:36:43.030 align:start position:0%
+at this that we tried to write a high
+level<00:36:42.000><c> programming</c><00:36:42.440><c> language</c><00:36:42.800><c> that</c><00:36:42.880><c> would</c>
+
+00:36:43.030 --> 00:36:43.040 align:start position:0%
+level programming language that would
+
+
+00:36:43.040 --> 00:36:44.870 align:start position:0%
+level programming language that would
+run<00:36:43.280><c> on</c><00:36:43.599><c> directly</c><00:36:43.880><c> on</c><00:36:44.040><c> the</c><00:36:44.119><c> Arduino</c><00:36:44.680><c> and</c><00:36:44.800><c> it</c>
+
+00:36:44.870 --> 00:36:44.880 align:start position:0%
+run on directly on the Arduino and it
+
+
+00:36:44.880 --> 00:36:46.430 align:start position:0%
+run on directly on the Arduino and it
+was<00:36:45.040><c> a</c><00:36:45.200><c> just</c><00:36:45.319><c> a</c><00:36:45.440><c> miserable</c><00:36:45.839><c> failure</c><00:36:46.200><c> so</c><00:36:46.359><c> it</c>
+
+00:36:46.430 --> 00:36:46.440 align:start position:0%
+was a just a miserable failure so it
+
+
+00:36:46.440 --> 00:36:48.349 align:start position:0%
+was a just a miserable failure so it
+wasn't<00:36:46.800><c> possible</c><00:36:47.400><c> the</c><00:36:47.480><c> Arduino</c><00:36:47.920><c> certainly</c><00:36:48.200><c> is</c>
+
+00:36:48.349 --> 00:36:48.359 align:start position:0%
+wasn't possible the Arduino certainly is
+
+
+00:36:48.359 --> 00:36:49.710 align:start position:0%
+wasn't possible the Arduino certainly is
+fun<00:36:48.640><c> and</c><00:36:48.720><c> it's</c><00:36:48.920><c> still</c><00:36:49.160><c> cheaper</c><00:36:49.520><c> than</c><00:36:49.640><c> the</c>
+
+00:36:49.710 --> 00:36:49.720 align:start position:0%
+fun and it's still cheaper than the
+
+
+00:36:49.720 --> 00:36:51.349 align:start position:0%
+fun and it's still cheaper than the
+Raspberry<00:36:50.160><c> Pi</c><00:36:50.359><c> and</c><00:36:50.520><c> still</c><00:36:50.640><c> a</c><00:36:50.760><c> great</c><00:36:51.000><c> platform</c>
+
+00:36:51.349 --> 00:36:51.359 align:start position:0%
+Raspberry Pi and still a great platform
+
+
+00:36:51.359 --> 00:36:53.870 align:start position:0%
+Raspberry Pi and still a great platform
+for<00:36:51.480><c> a</c><00:36:51.640><c> lot</c><00:36:51.760><c> of</c><00:36:51.920><c> stuff</c><00:36:52.839><c> um</c><00:36:53.119><c> but</c><00:36:53.440><c> you</c><00:36:53.599><c> can't</c>
+
+00:36:53.870 --> 00:36:53.880 align:start position:0%
+for a lot of stuff um but you can't
+
+
+00:36:53.880 --> 00:36:55.470 align:start position:0%
+for a lot of stuff um but you can't
+develop<00:36:54.280><c> on</c><00:36:54.440><c> it</c><00:36:54.640><c> it</c><00:36:54.800><c> requires</c><00:36:55.200><c> another</c>
+
+00:36:55.470 --> 00:36:55.480 align:start position:0%
+develop on it it requires another
+
+
+00:36:55.480 --> 00:36:56.950 align:start position:0%
+develop on it it requires another
+computer<00:36:56.280><c> and</c><00:36:56.400><c> I</c><00:36:56.480><c> think</c><00:36:56.640><c> from</c><00:36:56.800><c> the</c>
+
+00:36:56.950 --> 00:36:56.960 align:start position:0%
+computer and I think from the
+
+
+00:36:56.960 --> 00:36:59.630 align:start position:0%
+computer and I think from the
+perspective<00:36:57.359><c> of</c><00:36:57.680><c> people</c><00:36:58.599><c> uh</c><00:36:59.000><c> learning</c><00:36:59.400><c> to</c>
+
+00:36:59.630 --> 00:36:59.640 align:start position:0%
+perspective of people uh learning to
+
+
+00:36:59.640 --> 00:37:00.990 align:start position:0%
+perspective of people uh learning to
+program<00:37:00.040><c> it's</c><00:37:00.240><c> really</c><00:37:00.480><c> important</c><00:37:00.880><c> that</c>
+
+00:37:00.990 --> 00:37:01.000 align:start position:0%
+program it's really important that
+
+
+00:37:01.000 --> 00:37:03.790 align:start position:0%
+program it's really important that
+you're<00:37:01.200><c> able</c><00:37:01.480><c> to</c><00:37:01.800><c> to</c><00:37:02.240><c> interactively</c><00:37:03.200><c> program</c>
+
+00:37:03.790 --> 00:37:03.800 align:start position:0%
+you're able to to interactively program
+
+
+00:37:03.800 --> 00:37:05.589 align:start position:0%
+you're able to to interactively program
+on<00:37:04.200><c> whatever</c><00:37:04.520><c> it</c><00:37:04.599><c> is</c><00:37:04.720><c> you're</c><00:37:04.920><c> programming</c><00:37:05.280><c> for</c>
+
+00:37:05.589 --> 00:37:05.599 align:start position:0%
+on whatever it is you're programming for
+
+
+00:37:05.599 --> 00:37:07.630 align:start position:0%
+on whatever it is you're programming for
+that's<00:37:05.720><c> how</c><00:37:05.839><c> we</c><00:37:05.960><c> learn</c><00:37:06.680><c> I'm</c><00:37:06.880><c> I'm</c><00:37:07.000><c> hesitant</c><00:37:07.359><c> to</c>
+
+00:37:07.630 --> 00:37:07.640 align:start position:0%
+that's how we learn I'm I'm hesitant to
+
+
+00:37:07.640 --> 00:37:09.829 align:start position:0%
+that's how we learn I'm I'm hesitant to
+to<00:37:08.440><c> tell</c><00:37:08.720><c> people</c><00:37:08.920><c> to</c><00:37:09.040><c> learn</c><00:37:09.280><c> how</c><00:37:09.359><c> to</c><00:37:09.520><c> program</c>
+
+00:37:09.829 --> 00:37:09.839 align:start position:0%
+to tell people to learn how to program
+
+
+00:37:09.839 --> 00:37:11.910 align:start position:0%
+to tell people to learn how to program
+in<00:37:10.000><c> ways</c><00:37:10.240><c> that</c><00:37:10.359><c> I</c><00:37:10.480><c> did</c><00:37:10.680><c> not</c><00:37:11.280><c> but</c><00:37:11.440><c> I</c><00:37:11.599><c> definitely</c>
+
+00:37:11.910 --> 00:37:11.920 align:start position:0%
+in ways that I did not but I definitely
+
+
+00:37:11.920 --> 00:37:13.109 align:start position:0%
+in ways that I did not but I definitely
+know<00:37:12.119><c> there</c><00:37:12.200><c> were</c><00:37:12.359><c> a</c><00:37:12.440><c> lot</c><00:37:12.520><c> of</c><00:37:12.640><c> late</c><00:37:12.880><c> nights</c>
+
+00:37:13.109 --> 00:37:13.119 align:start position:0%
+know there were a lot of late nights
+
+
+00:37:13.119 --> 00:37:14.309 align:start position:0%
+know there were a lot of late nights
+where<00:37:13.240><c> it</c><00:37:13.319><c> was</c><00:37:13.440><c> me</c><00:37:13.599><c> in</c><00:37:13.720><c> the</c><00:37:13.839><c> computer</c>
+
+00:37:14.309 --> 00:37:14.319 align:start position:0%
+where it was me in the computer
+
+
+00:37:14.319 --> 00:37:16.230 align:start position:0%
+where it was me in the computer
+interacting<00:37:15.280><c> and</c><00:37:15.480><c> that's</c><00:37:15.800><c> that's</c><00:37:16.000><c> just</c><00:37:16.160><c> how</c>
+
+00:37:16.230 --> 00:37:16.240 align:start position:0%
+interacting and that's that's just how
+
+
+00:37:16.240 --> 00:37:18.150 align:start position:0%
+interacting and that's that's just how
+you<00:37:16.400><c> learn</c><00:37:16.839><c> and</c><00:37:17.200><c> the</c><00:37:17.319><c> most</c><00:37:17.520><c> exciting</c><00:37:17.880><c> thing</c><00:37:18.000><c> to</c>
+
+00:37:18.150 --> 00:37:18.160 align:start position:0%
+you learn and the most exciting thing to
+
+
+00:37:18.160 --> 00:37:20.030 align:start position:0%
+you learn and the most exciting thing to
+me<00:37:18.280><c> about</c><00:37:18.440><c> the</c><00:37:18.560><c> Raspberry</c><00:37:19.000><c> Pi</c><00:37:19.640><c> is</c><00:37:19.800><c> that</c><00:37:19.920><c> it</c>
+
+00:37:20.030 --> 00:37:20.040 align:start position:0%
+me about the Raspberry Pi is that it
+
+
+00:37:20.040 --> 00:37:21.550 align:start position:0%
+me about the Raspberry Pi is that it
+makes<00:37:20.280><c> that</c><00:37:20.440><c> level</c><00:37:20.680><c> of</c><00:37:20.800><c> interaction</c>
+
+00:37:21.550 --> 00:37:21.560 align:start position:0%
+makes that level of interaction
+
+
+00:37:21.560 --> 00:37:23.790 align:start position:0%
+makes that level of interaction
+incredibly<00:37:22.560><c> affordable</c><00:37:23.119><c> for</c><00:37:23.400><c> pretty</c><00:37:23.599><c> much</c>
+
+00:37:23.790 --> 00:37:23.800 align:start position:0%
+incredibly affordable for pretty much
+
+
+00:37:23.800 --> 00:37:28.069 align:start position:0%
+incredibly affordable for pretty much
+anybody<00:37:24.160><c> to</c><00:37:24.359><c> get</c><00:37:24.520><c> into</c><00:37:25.599><c> so</c><00:37:26.599><c> um</c><00:37:27.520><c> Pete</c><00:37:27.960><c> uh</c>
+
+00:37:28.069 --> 00:37:28.079 align:start position:0%
+anybody to get into so um Pete uh
+
+
+00:37:28.079 --> 00:37:30.230 align:start position:0%
+anybody to get into so um Pete uh
+intimated<00:37:28.720><c> that</c><00:37:28.960><c> the</c><00:37:29.119><c> Raspberry</c><00:37:29.640><c> Pi</c><00:37:30.000><c> comes</c>
+
+00:37:30.230 --> 00:37:30.240 align:start position:0%
+intimated that the Raspberry Pi comes
+
+
+00:37:30.240 --> 00:37:33.470 align:start position:0%
+intimated that the Raspberry Pi comes
+loaded<00:37:30.599><c> with</c><00:37:30.920><c> scratch</c><00:37:31.920><c> uh</c><00:37:32.079><c> scratch</c><00:37:32.839><c> is</c><00:37:33.200><c> a</c>
+
+00:37:33.470 --> 00:37:33.480 align:start position:0%
+loaded with scratch uh scratch is a
+
+
+00:37:33.480 --> 00:37:35.510 align:start position:0%
+loaded with scratch uh scratch is a
+development<00:37:34.040><c> environment</c><00:37:35.040><c> uh</c><00:37:35.200><c> that</c><00:37:35.280><c> was</c>
+
+00:37:35.510 --> 00:37:35.520 align:start position:0%
+development environment uh that was
+
+
+00:37:35.520 --> 00:37:38.309 align:start position:0%
+development environment uh that was
+developed<00:37:36.079><c> by</c><00:37:36.640><c> the</c><00:37:36.760><c> media</c><00:37:37.119><c> lab</c><00:37:37.359><c> at</c><00:37:37.520><c> MIT</c><00:37:38.160><c> it's</c>
+
+00:37:38.309 --> 00:37:38.319 align:start position:0%
+developed by the media lab at MIT it's
+
+
+00:37:38.319 --> 00:37:40.430 align:start position:0%
+developed by the media lab at MIT it's
+based<00:37:38.560><c> on</c><00:37:38.800><c> squeak</c><00:37:39.280><c> or</c><00:37:39.680><c> just</c><00:37:39.839><c> a</c><00:37:40.000><c> kind</c><00:37:40.079><c> of</c><00:37:40.200><c> small</c>
+
+00:37:40.430 --> 00:37:40.440 align:start position:0%
+based on squeak or just a kind of small
+
+
+00:37:40.440 --> 00:37:42.150 align:start position:0%
+based on squeak or just a kind of small
+talk<00:37:40.640><c> but</c><00:37:40.720><c> it</c><00:37:40.800><c> doesn't</c><00:37:41.040><c> matter</c><00:37:41.280><c> anyway</c><00:37:41.560><c> it's</c><00:37:41.640><c> a</c>
+
+00:37:42.150 --> 00:37:42.160 align:start position:0%
+talk but it doesn't matter anyway it's a
+
+
+00:37:42.160 --> 00:37:45.069 align:start position:0%
+talk but it doesn't matter anyway it's a
+cool<00:37:43.160><c> uh</c><00:37:43.560><c> IDE</c><00:37:44.119><c> that's</c><00:37:44.319><c> incredibly</c><00:37:44.760><c> easy</c><00:37:44.960><c> to</c>
+
+00:37:45.069 --> 00:37:45.079 align:start position:0%
+cool uh IDE that's incredibly easy to
+
+
+00:37:45.079 --> 00:37:47.109 align:start position:0%
+cool uh IDE that's incredibly easy to
+use<00:37:45.240><c> and</c><00:37:45.400><c> it's</c><00:37:45.599><c> extremely</c><00:37:46.040><c> visual</c><00:37:46.720><c> it</c><00:37:46.839><c> comes</c>
+
+00:37:47.109 --> 00:37:47.119 align:start position:0%
+use and it's extremely visual it comes
+
+
+00:37:47.119 --> 00:37:49.349 align:start position:0%
+use and it's extremely visual it comes
+loaded<00:37:47.520><c> on</c><00:37:47.760><c> many</c><00:37:48.040><c> of</c><00:37:48.240><c> the</c><00:37:48.560><c> operating</c><00:37:49.000><c> system</c>
+
+00:37:49.349 --> 00:37:49.359 align:start position:0%
+loaded on many of the operating system
+
+
+00:37:49.359 --> 00:37:51.190 align:start position:0%
+loaded on many of the operating system
+distributions<00:37:50.280><c> uh</c><00:37:50.359><c> for</c><00:37:50.560><c> the</c><00:37:50.680><c> Raspberry</c><00:37:51.040><c> p</c>
+
+00:37:51.190 --> 00:37:51.200 align:start position:0%
+distributions uh for the Raspberry p
+
+
+00:37:51.200 --> 00:37:52.589 align:start position:0%
+distributions uh for the Raspberry p
+including<00:37:51.560><c> the</c><00:37:51.680><c> official</c><00:37:51.960><c> one</c><00:37:52.240><c> from</c><00:37:52.480><c> the</c>
+
+00:37:52.589 --> 00:37:52.599 align:start position:0%
+including the official one from the
+
+
+00:37:52.599 --> 00:37:54.910 align:start position:0%
+including the official one from the
+Raspberry<00:37:53.079><c> Pi</c><00:37:53.359><c> foundation</c><00:37:54.359><c> so</c><00:37:54.599><c> one</c><00:37:54.680><c> of</c><00:37:54.800><c> the</c>
+
+00:37:54.910 --> 00:37:54.920 align:start position:0%
+Raspberry Pi foundation so one of the
+
+
+00:37:54.920 --> 00:37:56.670 align:start position:0%
+Raspberry Pi foundation so one of the
+things<00:37:55.160><c> I</c><00:37:55.280><c> hope</c><00:37:55.480><c> to</c><00:37:55.560><c> do</c><00:37:55.720><c> for</c><00:37:55.880><c> you</c><00:37:56.040><c> guys</c><00:37:56.240><c> tonight</c>
+
+00:37:56.670 --> 00:37:56.680 align:start position:0%
+things I hope to do for you guys tonight
+
+
+00:37:56.680 --> 00:37:58.710 align:start position:0%
+things I hope to do for you guys tonight
+is<00:37:56.920><c> introduce</c><00:37:57.599><c> to</c><00:37:57.720><c> scratch</c><00:37:58.040><c> and</c><00:37:58.160><c> show</c><00:37:58.359><c> you</c><00:37:58.520><c> how</c>
+
+00:37:58.710 --> 00:37:58.720 align:start position:0%
+is introduce to scratch and show you how
+
+
+00:37:58.720 --> 00:38:00.510 align:start position:0%
+is introduce to scratch and show you how
+easy<00:37:58.960><c> and</c><00:37:59.160><c> fun</c><00:37:59.440><c> it</c><00:37:59.520><c> is</c><00:37:59.640><c> to</c><00:37:59.839><c> write</c><00:38:00.119><c> computer</c>
+
+00:38:00.510 --> 00:38:00.520 align:start position:0%
+easy and fun it is to write computer
+
+
+00:38:00.520 --> 00:38:02.589 align:start position:0%
+easy and fun it is to write computer
+programs<00:38:01.440><c> with</c><00:38:01.599><c> scratch</c><00:38:02.119><c> scratch</c><00:38:02.440><c> is</c>
+
+00:38:02.589 --> 00:38:02.599 align:start position:0%
+programs with scratch scratch is
+
+
+00:38:02.599 --> 00:38:04.990 align:start position:0%
+programs with scratch scratch is
+absolutely<00:38:03.040><c> cool</c><00:38:03.960><c> before</c><00:38:04.280><c> I</c><00:38:04.440><c> do</c><00:38:04.640><c> that</c><00:38:04.839><c> though</c>
+
+00:38:04.990 --> 00:38:05.000 align:start position:0%
+absolutely cool before I do that though
+
+
+00:38:05.000 --> 00:38:06.670 align:start position:0%
+absolutely cool before I do that though
+I<00:38:05.079><c> wanted</c><00:38:05.280><c> to</c><00:38:05.480><c> dig</c><00:38:05.640><c> in</c><00:38:05.800><c> a</c><00:38:05.920><c> little</c><00:38:06.119><c> more</c><00:38:06.280><c> on</c><00:38:06.560><c> how</c>
+
+00:38:06.670 --> 00:38:06.680 align:start position:0%
+I wanted to dig in a little more on how
+
+
+00:38:06.680 --> 00:38:09.790 align:start position:0%
+I wanted to dig in a little more on how
+you<00:38:06.800><c> develop</c><00:38:07.240><c> software</c><00:38:08.040><c> for</c><00:38:08.839><c> other</c><00:38:09.440><c> using</c>
+
+00:38:09.790 --> 00:38:09.800 align:start position:0%
+you develop software for other using
+
+
+00:38:09.800 --> 00:38:11.390 align:start position:0%
+you develop software for other using
+other<00:38:10.000><c> programming</c><00:38:10.400><c> languages</c><00:38:10.960><c> on</c><00:38:11.280><c> the</c>
+
+00:38:11.390 --> 00:38:11.400 align:start position:0%
+other programming languages on the
+
+
+00:38:11.400 --> 00:38:15.510 align:start position:0%
+other programming languages on the
+Raspberry<00:38:12.119><c> Pi</c><00:38:13.119><c> uh</c><00:38:13.920><c> so</c><00:38:14.160><c> it</c><00:38:14.319><c> being</c><00:38:14.720><c> a</c><00:38:14.960><c> full-blown</c>
+
+00:38:15.510 --> 00:38:15.520 align:start position:0%
+Raspberry Pi uh so it being a full-blown
+
+
+00:38:15.520 --> 00:38:18.270 align:start position:0%
+Raspberry Pi uh so it being a full-blown
+Linux<00:38:15.839><c> machine</c><00:38:16.160><c> you</c><00:38:16.280><c> can</c><00:38:16.400><c> do</c><00:38:16.720><c> any</c><00:38:16.920><c> manner</c><00:38:17.319><c> of</c><00:38:17.599><c> C</c>
+
+00:38:18.270 --> 00:38:18.280 align:start position:0%
+Linux machine you can do any manner of C
+
+
+00:38:18.280 --> 00:38:21.190 align:start position:0%
+Linux machine you can do any manner of C
+C++<00:38:19.280><c> pretty</c><00:38:19.480><c> much</c><00:38:19.680><c> any</c><00:38:20.240><c> compiled</c><00:38:20.720><c> language</c><00:38:21.079><c> or</c>
+
+00:38:21.190 --> 00:38:21.200 align:start position:0%
+C++ pretty much any compiled language or
+
+
+00:38:21.200 --> 00:38:22.670 align:start position:0%
+C++ pretty much any compiled language or
+even<00:38:21.480><c> interpreted</c><00:38:22.000><c> language</c><00:38:22.359><c> that</c><00:38:22.440><c> you're</c>
+
+00:38:22.670 --> 00:38:22.680 align:start position:0%
+even interpreted language that you're
+
+
+00:38:22.680 --> 00:38:24.670 align:start position:0%
+even interpreted language that you're
+used<00:38:22.920><c> to</c><00:38:23.079><c> developing</c><00:38:23.560><c> with</c><00:38:23.839><c> on</c><00:38:24.200><c> some</c><00:38:24.400><c> kind</c><00:38:24.520><c> of</c>
+
+00:38:24.670 --> 00:38:24.680 align:start position:0%
+used to developing with on some kind of
+
+
+00:38:24.680 --> 00:38:27.109 align:start position:0%
+used to developing with on some kind of
+Unix<00:38:25.079><c> will</c><00:38:25.319><c> probably</c><00:38:25.720><c> work</c><00:38:26.359><c> on</c><00:38:26.520><c> the</c><00:38:26.640><c> Raspberry</c>
+
+00:38:27.109 --> 00:38:27.119 align:start position:0%
+Unix will probably work on the Raspberry
+
+
+00:38:27.119 --> 00:38:30.470 align:start position:0%
+Unix will probably work on the Raspberry
+Pi<00:38:27.520><c> so</c><00:38:27.640><c> you</c><00:38:27.720><c> can</c><00:38:28.040><c> all</c><00:38:28.200><c> that</c><00:38:28.400><c> all</c><00:38:28.520><c> that</c><00:38:28.920><c> works</c>
+
+00:38:30.470 --> 00:38:30.480 align:start position:0%
+Pi so you can all that all that works
+
+
+00:38:30.480 --> 00:38:33.670 align:start position:0%
+Pi so you can all that all that works
+um<00:38:31.480><c> professionally</c><00:38:32.079><c> I</c><00:38:32.160><c> do</c><00:38:32.359><c> a</c><00:38:32.440><c> lot</c><00:38:32.599><c> of</c><00:38:32.880><c> jbm</c><00:38:33.440><c> or</c>
+
+00:38:33.670 --> 00:38:33.680 align:start position:0%
+um professionally I do a lot of jbm or
+
+
+00:38:33.680 --> 00:38:36.309 align:start position:0%
+um professionally I do a lot of jbm or
+Java<00:38:34.359><c> closure</c><00:38:34.880><c> Scala</c><00:38:35.319><c> jrv</c><00:38:36.000><c> kind</c><00:38:36.119><c> of</c>
+
+00:38:36.309 --> 00:38:36.319 align:start position:0%
+Java closure Scala jrv kind of
+
+
+00:38:36.319 --> 00:38:39.069 align:start position:0%
+Java closure Scala jrv kind of
+development<00:38:37.319><c> uh</c><00:38:37.440><c> so</c><00:38:37.640><c> for</c><00:38:37.839><c> me</c><00:38:38.560><c> the</c><00:38:38.720><c> cool</c><00:38:38.920><c> thing</c>
+
+00:38:39.069 --> 00:38:39.079 align:start position:0%
+development uh so for me the cool thing
+
+
+00:38:39.079 --> 00:38:40.910 align:start position:0%
+development uh so for me the cool thing
+about<00:38:39.240><c> the</c><00:38:39.359><c> raspber</c><00:38:39.839><c> pi</c><00:38:40.079><c> is</c><00:38:40.240><c> that</c><00:38:40.400><c> Oracle</c>
+
+00:38:40.910 --> 00:38:40.920 align:start position:0%
+about the raspber pi is that Oracle
+
+
+00:38:40.920 --> 00:38:42.390 align:start position:0%
+about the raspber pi is that Oracle
+distributes<00:38:41.480><c> a</c><00:38:41.599><c> version</c><00:38:41.880><c> of</c><00:38:42.000><c> the</c><00:38:42.119><c> Java</c>
+
+00:38:42.390 --> 00:38:42.400 align:start position:0%
+distributes a version of the Java
+
+
+00:38:42.400 --> 00:38:44.550 align:start position:0%
+distributes a version of the Java
+virtual<00:38:42.760><c> machine</c><00:38:43.480><c> that</c><00:38:43.680><c> runs</c><00:38:44.119><c> on</c><00:38:44.440><c> the</c>
+
+00:38:44.550 --> 00:38:44.560 align:start position:0%
+virtual machine that runs on the
+
+
+00:38:44.560 --> 00:38:46.150 align:start position:0%
+virtual machine that runs on the
+Raspberry<00:38:45.040><c> Pi</c><00:38:45.200><c> and</c><00:38:45.319><c> actually</c><00:38:45.640><c> they'</c><00:38:45.920><c> they've</c>
+
+00:38:46.150 --> 00:38:46.160 align:start position:0%
+Raspberry Pi and actually they' they've
+
+
+00:38:46.160 --> 00:38:48.069 align:start position:0%
+Raspberry Pi and actually they' they've
+dedicated<00:38:46.680><c> they</c><00:38:46.800><c> have</c><00:38:47.040><c> staff</c><00:38:47.480><c> dedicated</c><00:38:47.920><c> to</c>
+
+00:38:48.069 --> 00:38:48.079 align:start position:0%
+dedicated they have staff dedicated to
+
+
+00:38:48.079 --> 00:38:50.430 align:start position:0%
+dedicated they have staff dedicated to
+improving<00:38:48.480><c> and</c><00:38:48.680><c> maintaining</c><00:38:49.680><c> this</c><00:38:49.920><c> version</c>
+
+00:38:50.430 --> 00:38:50.440 align:start position:0%
+improving and maintaining this version
+
+
+00:38:50.440 --> 00:38:53.589 align:start position:0%
+improving and maintaining this version
+of<00:38:50.720><c> the</c><00:38:50.839><c> jbm</c><00:38:51.520><c> so</c><00:38:52.119><c> Oracle</c><00:38:52.560><c> has</c><00:38:52.760><c> invested</c><00:38:53.359><c> in</c><00:38:53.440><c> a</c>
+
+00:38:53.589 --> 00:38:53.599 align:start position:0%
+of the jbm so Oracle has invested in a
+
+
+00:38:53.599 --> 00:38:55.670 align:start position:0%
+of the jbm so Oracle has invested in a
+sense<00:38:53.960><c> in</c><00:38:54.119><c> in</c><00:38:54.240><c> the</c><00:38:54.359><c> Raspberry</c><00:38:54.800><c> Pi</c><00:38:55.000><c> and</c><00:38:55.079><c> the</c><00:38:55.200><c> jbm</c>
+
+00:38:55.670 --> 00:38:55.680 align:start position:0%
+sense in in the Raspberry Pi and the jbm
+
+
+00:38:55.680 --> 00:38:57.950 align:start position:0%
+sense in in the Raspberry Pi and the jbm
+they<00:38:55.839><c> make</c><00:38:56.000><c> for</c><00:38:56.160><c> it</c><00:38:56.280><c> is</c><00:38:56.480><c> good</c><00:38:57.119><c> um</c><00:38:57.520><c> do</c><00:38:57.680><c> need</c><00:38:57.800><c> to</c>
+
+00:38:57.950 --> 00:38:57.960 align:start position:0%
+they make for it is good um do need to
+
+
+00:38:57.960 --> 00:39:00.829 align:start position:0%
+they make for it is good um do need to
+make<00:38:58.119><c> sure</c><00:38:58.359><c> to</c><00:38:58.599><c> install</c><00:38:59.480><c> the</c><00:38:59.720><c> soft</c><00:39:00.119><c> float</c>
+
+00:39:00.829 --> 00:39:00.839 align:start position:0%
+make sure to install the soft float
+
+
+00:39:00.839 --> 00:39:04.190 align:start position:0%
+make sure to install the soft float
+version<00:39:01.520><c> of</c><00:39:02.240><c> uh</c><00:39:03.119><c> uh</c><00:39:03.280><c> rasbian</c><00:39:03.880><c> which</c><00:39:03.960><c> is</c><00:39:04.079><c> the</c>
+
+00:39:04.190 --> 00:39:04.200 align:start position:0%
+version of uh uh rasbian which is the
+
+
+00:39:04.200 --> 00:39:05.190 align:start position:0%
+version of uh uh rasbian which is the
+Linux
+
+00:39:05.190 --> 00:39:05.200 align:start position:0%
+Linux
+
+
+00:39:05.200 --> 00:39:09.349 align:start position:0%
+Linux
+yes<00:39:06.200><c> just</c>
+
+00:39:09.349 --> 00:39:09.359 align:start position:0%
+
+
+
+00:39:09.359 --> 00:39:18.069 align:start position:0%
+
+released<00:39:10.359><c> early</c><00:39:10.760><c> access</c><00:39:11.599><c> I</c><00:39:11.720><c> gotta</c>
+
+00:39:18.069 --> 00:39:18.079 align:start position:0%
+
+
+
+00:39:18.079 --> 00:39:21.270 align:start position:0%
+
+go<00:39:19.079><c> oh</c><00:39:19.280><c> that's</c>
+
+00:39:21.270 --> 00:39:21.280 align:start position:0%
+go oh that's
+
+
+00:39:21.280 --> 00:39:25.950 align:start position:0%
+go oh that's
+awesome<00:39:22.280><c> that</c><00:39:22.359><c> is</c><00:39:23.319><c> mind-blowingly</c>
+
+00:39:25.950 --> 00:39:25.960 align:start position:0%
+awesome that is mind-blowingly
+
+
+00:39:25.960 --> 00:39:30.430 align:start position:0%
+awesome that is mind-blowingly
+epic<00:39:26.960><c> wow</c><00:39:27.560><c> wow</c><00:39:27.839><c> thank</c><00:39:28.000><c> you</c><00:39:28.599><c> yes</c><00:39:29.319><c> um</c><00:39:29.560><c> a</c><00:39:30.160><c> today</c>
+
+00:39:30.430 --> 00:39:30.440 align:start position:0%
+epic wow wow thank you yes um a today
+
+
+00:39:30.440 --> 00:39:33.150 align:start position:0%
+epic wow wow thank you yes um a today
+was<00:39:30.560><c> a</c><00:39:30.680><c> new</c><00:39:30.880><c> zero</c>
+
+00:39:33.150 --> 00:39:33.160 align:start position:0%
+was a new zero
+
+
+00:39:33.160 --> 00:39:37.990 align:start position:0%
+was a new zero
+day<00:39:34.160><c> so</c><00:39:34.880><c> I</c><00:39:35.000><c> don't</c><00:39:35.240><c> know</c>
+
+00:39:37.990 --> 00:39:38.000 align:start position:0%
+
+
+
+00:39:38.000 --> 00:39:40.910 align:start position:0%
+
+that<00:39:39.000><c> in</c><00:39:39.160><c> mind</c><00:39:39.760><c> that's</c><00:39:40.000><c> actually</c><00:39:40.319><c> really</c><00:39:40.800><c> I'm</c>
+
+00:39:40.910 --> 00:39:40.920 align:start position:0%
+that in mind that's actually really I'm
+
+
+00:39:40.920 --> 00:39:42.150 align:start position:0%
+that in mind that's actually really I'm
+sorry<00:39:41.160><c> to</c><00:39:41.280><c> hear</c><00:39:41.400><c> that</c><00:39:41.560><c> because</c><00:39:41.760><c> much</c><00:39:41.880><c> of</c><00:39:42.040><c> my</c>
+
+00:39:42.150 --> 00:39:42.160 align:start position:0%
+sorry to hear that because much of my
+
+
+00:39:42.160 --> 00:39:43.990 align:start position:0%
+sorry to hear that because much of my
+mission<00:39:42.480><c> critical</c><00:39:42.920><c> Cloud</c><00:39:43.240><c> infrastructure</c><00:39:43.800><c> is</c>
+
+00:39:43.990 --> 00:39:44.000 align:start position:0%
+mission critical Cloud infrastructure is
+
+
+00:39:44.000 --> 00:39:46.109 align:start position:0%
+mission critical Cloud infrastructure is
+Raspberry<00:39:44.400><c> Pi</c>
+
+00:39:46.109 --> 00:39:46.119 align:start position:0%
+Raspberry Pi
+
+
+00:39:46.119 --> 00:39:48.950 align:start position:0%
+Raspberry Pi
+based<00:39:47.119><c> that's</c>
+
+00:39:48.950 --> 00:39:48.960 align:start position:0%
+based that's
+
+
+00:39:48.960 --> 00:39:51.950 align:start position:0%
+based that's
+worrisome<00:39:49.960><c> rry</c>
+
+00:39:51.950 --> 00:39:51.960 align:start position:0%
+worrisome rry
+
+
+00:39:51.960 --> 00:39:56.349 align:start position:0%
+worrisome rry
+PI<00:39:53.200><c> right</c><00:39:54.200><c> anyway</c><00:39:55.000><c> thank</c><00:39:55.160><c> you</c><00:39:55.520><c> the</c><00:39:55.720><c> uh</c><00:39:55.839><c> the</c><00:39:55.920><c> RAS</c>
+
+00:39:56.349 --> 00:39:56.359 align:start position:0%
+PI right anyway thank you the uh the RAS
+
+
+00:39:56.359 --> 00:39:59.270 align:start position:0%
+PI right anyway thank you the uh the RAS
+Pi<00:39:56.560><c> runs</c><00:39:56.960><c> Java</c><00:39:57.640><c> maybe</c><00:39:58.160><c> a</c><00:39:58.280><c> fly</c><00:39:58.720><c> flaw</c><00:39:59.000><c> and</c><00:39:59.079><c> easy</c>
+
+00:39:59.270 --> 00:39:59.280 align:start position:0%
+Pi runs Java maybe a fly flaw and easy
+
+
+00:39:59.280 --> 00:40:00.589 align:start position:0%
+Pi runs Java maybe a fly flaw and easy
+to<00:39:59.440><c> hack</c><00:39:59.599><c> versions</c><00:39:59.839><c> of</c><00:39:59.960><c> java</c><00:40:00.200><c> yes</c><00:40:00.359><c> another</c>
+
+00:40:00.589 --> 00:40:00.599 align:start position:0%
+to hack versions of java yes another
+
+
+00:40:00.599 --> 00:40:03.069 align:start position:0%
+to hack versions of java yes another
+question<00:40:01.240><c> is</c><00:40:01.760><c> the</c><00:40:01.920><c> Oracle</c><00:40:02.359><c> version</c><00:40:02.599><c> of</c><00:40:02.760><c> java</c>
+
+00:40:03.069 --> 00:40:03.079 align:start position:0%
+question is the Oracle version of java
+
+
+00:40:03.079 --> 00:40:06.150 align:start position:0%
+question is the Oracle version of java
+the<00:40:03.200><c> only</c><00:40:03.520><c> Java</c><00:40:04.000><c> that</c><00:40:04.480><c> that</c><00:40:04.560><c> can</c><00:40:04.720><c> run</c><00:40:04.880><c> on</c><00:40:05.160><c> arm</c>
+
+00:40:06.150 --> 00:40:06.160 align:start position:0%
+the only Java that that can run on arm
+
+
+00:40:06.160 --> 00:40:07.510 align:start position:0%
+the only Java that that can run on arm
+uh<00:40:06.319><c> the</c><00:40:06.440><c> question</c><00:40:06.760><c> was</c><00:40:06.960><c> is</c><00:40:07.079><c> the</c><00:40:07.200><c> Oracle</c>
+
+00:40:07.510 --> 00:40:07.520 align:start position:0%
+uh the question was is the Oracle
+
+
+00:40:07.520 --> 00:40:09.309 align:start position:0%
+uh the question was is the Oracle
+version<00:40:07.839><c> the</c><00:40:07.920><c> only</c><00:40:08.200><c> version</c><00:40:08.440><c> that</c><00:40:08.560><c> runs</c><00:40:09.079><c> uh</c><00:40:09.240><c> I</c>
+
+00:40:09.309 --> 00:40:09.319 align:start position:0%
+version the only version that runs uh I
+
+
+00:40:09.319 --> 00:40:10.670 align:start position:0%
+version the only version that runs uh I
+don't<00:40:09.560><c> know</c><00:40:09.839><c> but</c><00:40:09.960><c> it's</c><00:40:10.079><c> the</c><00:40:10.200><c> only</c><00:40:10.359><c> one</c><00:40:10.520><c> I've</c>
+
+00:40:10.670 --> 00:40:10.680 align:start position:0%
+don't know but it's the only one I've
+
+
+00:40:10.680 --> 00:40:12.230 align:start position:0%
+don't know but it's the only one I've
+ever<00:40:10.880><c> used</c><00:40:11.480><c> and</c><00:40:11.599><c> it's</c><00:40:11.720><c> the</c><00:40:11.800><c> easiest</c><00:40:12.079><c> to</c>
+
+00:40:12.230 --> 00:40:12.240 align:start position:0%
+ever used and it's the easiest to
+
+
+00:40:12.240 --> 00:40:21.550 align:start position:0%
+ever used and it's the easiest to
+install<00:40:12.520><c> as</c><00:40:12.640><c> far</c><00:40:12.720><c> as</c><00:40:12.800><c> I</c><00:40:13.200><c> know</c>
+
+00:40:21.550 --> 00:40:21.560 align:start position:0%
+
+
+
+00:40:21.560 --> 00:40:25.150 align:start position:0%
+
+yes<00:40:22.560><c> oh</c>
+
+00:40:25.150 --> 00:40:25.160 align:start position:0%
+
+
+
+00:40:25.160 --> 00:40:27.430 align:start position:0%
+
+okay<00:40:26.160><c> okay</c><00:40:26.480><c> so</c><00:40:26.640><c> it</c><00:40:26.720><c> sounds</c><00:40:26.920><c> like</c><00:40:27.079><c> there's</c><00:40:27.319><c> some</c>
+
+00:40:27.430 --> 00:40:27.440 align:start position:0%
+okay okay so it sounds like there's some
+
+
+00:40:27.440 --> 00:40:28.990 align:start position:0%
+okay okay so it sounds like there's some
+Alternatives<00:40:28.359><c> again</c><00:40:28.560><c> I've</c><00:40:28.680><c> only</c><00:40:28.839><c> had</c>
+
+00:40:28.990 --> 00:40:29.000 align:start position:0%
+Alternatives again I've only had
+
+
+00:40:29.000 --> 00:40:30.390 align:start position:0%
+Alternatives again I've only had
+experience<00:40:29.319><c> with</c><00:40:29.480><c> oral</c><00:40:29.920><c> and</c><00:40:30.119><c> now</c><00:40:30.240><c> that</c>
+
+00:40:30.390 --> 00:40:30.400 align:start position:0%
+experience with oral and now that
+
+
+00:40:30.400 --> 00:40:31.870 align:start position:0%
+experience with oral and now that
+they're<00:40:30.760><c> have</c><00:40:30.880><c> a</c><00:40:30.960><c> hard</c><00:40:31.160><c> FL</c><00:40:31.400><c> version</c><00:40:31.720><c> that's</c>
+
+00:40:31.870 --> 00:40:31.880 align:start position:0%
+they're have a hard FL version that's
+
+
+00:40:31.880 --> 00:40:36.150 align:start position:0%
+they're have a hard FL version that's
+probably<00:40:32.119><c> the</c><00:40:32.200><c> one</c><00:40:32.280><c> I'll</c><00:40:32.480><c> continue</c><00:40:32.720><c> to</c><00:40:32.880><c> use</c><00:40:34.160><c> um</c>
+
+00:40:36.150 --> 00:40:36.160 align:start position:0%
+probably the one I'll continue to use um
+
+
+00:40:36.160 --> 00:40:39.390 align:start position:0%
+probably the one I'll continue to use um
+so<00:40:37.160><c> uh</c><00:40:38.119><c> that's</c><00:40:38.359><c> pretty</c><00:40:38.560><c> much</c><00:40:38.760><c> all</c><00:40:38.920><c> I</c><00:40:39.079><c> had</c><00:40:39.200><c> to</c>
+
+00:40:39.390 --> 00:40:39.400 align:start position:0%
+so uh that's pretty much all I had to
+
+
+00:40:39.400 --> 00:40:40.990 align:start position:0%
+so uh that's pretty much all I had to
+say<00:40:39.920><c> uh</c><00:40:40.079><c> and</c><00:40:40.280><c> before</c><00:40:40.520><c> getting</c><00:40:40.720><c> into</c><00:40:40.920><c> the</c>
+
+00:40:40.990 --> 00:40:41.000 align:start position:0%
+say uh and before getting into the
+
+
+00:40:41.000 --> 00:40:42.589 align:start position:0%
+say uh and before getting into the
+scratch<00:40:41.319><c> demo</c><00:40:41.680><c> before</c><00:40:41.880><c> I</c><00:40:42.000><c> do</c><00:40:42.200><c> that</c><00:40:42.440><c> does</c>
+
+00:40:42.589 --> 00:40:42.599 align:start position:0%
+scratch demo before I do that does
+
+
+00:40:42.599 --> 00:40:43.870 align:start position:0%
+scratch demo before I do that does
+anybody<00:40:42.920><c> have</c><00:40:43.079><c> any</c><00:40:43.319><c> questions</c><00:40:43.640><c> about</c>
+
+00:40:43.870 --> 00:40:43.880 align:start position:0%
+anybody have any questions about
+
+
+00:40:43.880 --> 00:40:45.510 align:start position:0%
+anybody have any questions about
+programming<00:40:44.280><c> on</c><00:40:44.400><c> the</c><00:40:44.520><c> Raspberry</c>
+
+00:40:45.510 --> 00:40:45.520 align:start position:0%
+programming on the Raspberry
+
+
+00:40:45.520 --> 00:41:12.510 align:start position:0%
+programming on the Raspberry
+Pi<00:40:46.520><c> all</c><00:40:46.599><c> right</c><00:40:46.720><c> let's</c><00:40:46.839><c> do</c><00:40:47.000><c> some</c><00:40:47.160><c> scratch</c>
+
+00:41:12.510 --> 00:41:12.520 align:start position:0%
+
+
+
+00:41:12.520 --> 00:41:17.349 align:start position:0%
+
+Swit<00:41:13.520><c> so</c>
+
+00:41:17.349 --> 00:41:17.359 align:start position:0%
+
+
+
+00:41:17.359 --> 00:41:20.990 align:start position:0%
+
+uh<00:41:18.359><c> I</c><00:41:18.400><c> don't</c>
+
+00:41:20.990 --> 00:41:21.000 align:start position:0%
+
+
+
+00:41:21.000 --> 00:41:25.349 align:start position:0%
+
+close<00:41:22.000><c> top</c><00:41:22.280><c> left</c><00:41:23.000><c> what</c><00:41:24.000><c> top</c><00:41:24.319><c> left</c><00:41:24.520><c> of</c><00:41:24.680><c> your</c><00:41:25.280><c> of</c>
+
+00:41:25.349 --> 00:41:25.359 align:start position:0%
+close top left what top left of your of
+
+
+00:41:25.359 --> 00:41:28.030 align:start position:0%
+close top left what top left of your of
+the<00:41:25.480><c> screen</c><00:41:25.800><c> that</c><00:41:25.880><c> you're</c><00:41:26.040><c> looking</c><00:41:26.280><c> at</c><00:41:26.680><c> oh</c><00:41:27.400><c> oh</c>
+
+00:41:28.030 --> 00:41:28.040 align:start position:0%
+the screen that you're looking at oh oh
+
+
+00:41:28.040 --> 00:41:30.150 align:start position:0%
+the screen that you're looking at oh oh
+that<00:41:28.160><c> it's</c><00:41:28.280><c> something</c><00:41:28.560><c> different</c><00:41:29.480><c> okay</c><00:41:29.920><c> so</c>
+
+00:41:30.150 --> 00:41:30.160 align:start position:0%
+that it's something different okay so
+
+
+00:41:30.160 --> 00:41:32.630 align:start position:0%
+that it's something different okay so
+for<00:41:30.319><c> those</c><00:41:30.480><c> of</c><00:41:30.560><c> you</c><00:41:30.760><c> who</c><00:41:31.119><c> uh</c><00:41:32.119><c> those</c><00:41:32.240><c> of</c><00:41:32.359><c> you</c><00:41:32.480><c> who</c>
+
+00:41:32.630 --> 00:41:32.640 align:start position:0%
+for those of you who uh those of you who
+
+
+00:41:32.640 --> 00:41:34.790 align:start position:0%
+for those of you who uh those of you who
+don't<00:41:32.920><c> know</c><00:41:33.839><c> um</c><00:41:34.200><c> we're</c><00:41:34.400><c> running</c><00:41:34.640><c> this</c>
+
+00:41:34.790 --> 00:41:34.800 align:start position:0%
+don't know um we're running this
+
+
+00:41:34.800 --> 00:41:37.670 align:start position:0%
+don't know um we're running this
+presentation<00:41:35.200><c> on</c><00:41:35.319><c> a</c><00:41:35.440><c> Raspberry</c><00:41:35.880><c> Pi</c><00:41:36.520><c> so</c><00:41:37.480><c> that's</c>
+
+00:41:37.670 --> 00:41:37.680 align:start position:0%
+presentation on a Raspberry Pi so that's
+
+
+00:41:37.680 --> 00:41:38.589 align:start position:0%
+presentation on a Raspberry Pi so that's
+pretty
+
+00:41:38.589 --> 00:41:38.599 align:start position:0%
+pretty
+
+
+00:41:38.599 --> 00:41:41.390 align:start position:0%
+pretty
+cool<00:41:39.599><c> okay</c><00:41:39.800><c> so</c><00:41:40.160><c> this</c><00:41:40.359><c> is</c><00:41:40.520><c> what</c><00:41:40.680><c> scratch</c><00:41:41.119><c> looks</c>
+
+00:41:41.390 --> 00:41:41.400 align:start position:0%
+cool okay so this is what scratch looks
+
+
+00:41:41.400 --> 00:41:43.470 align:start position:0%
+cool okay so this is what scratch looks
+like<00:41:41.920><c> scratch</c><00:41:42.359><c> runs</c><00:41:42.680><c> on</c><00:41:42.800><c> the</c><00:41:42.920><c> Raspberry</c><00:41:43.319><c> Pi</c>
+
+00:41:43.470 --> 00:41:43.480 align:start position:0%
+like scratch runs on the Raspberry Pi
+
+
+00:41:43.480 --> 00:41:44.990 align:start position:0%
+like scratch runs on the Raspberry Pi
+and<00:41:43.560><c> is</c><00:41:43.720><c> distributed</c><00:41:44.200><c> with</c><00:41:44.319><c> the</c><00:41:44.400><c> Raspberry</c><00:41:44.800><c> Pi</c>
+
+00:41:44.990 --> 00:41:45.000 align:start position:0%
+and is distributed with the Raspberry Pi
+
+
+00:41:45.000 --> 00:41:47.230 align:start position:0%
+and is distributed with the Raspberry Pi
+but<00:41:45.119><c> it</c><00:41:45.240><c> also</c><00:41:45.480><c> runs</c><00:41:45.800><c> on</c><00:41:46.079><c> Mac</c><00:41:46.440><c> Linux</c><00:41:47.040><c> and</c>
+
+00:41:47.230 --> 00:41:47.240 align:start position:0%
+but it also runs on Mac Linux and
+
+
+00:41:47.240 --> 00:41:48.790 align:start position:0%
+but it also runs on Mac Linux and
+windows<00:41:47.680><c> so</c><00:41:47.839><c> actually</c><00:41:48.040><c> if</c><00:41:48.079><c> you</c><00:41:48.200><c> have</c><00:41:48.280><c> a</c><00:41:48.400><c> laptop</c>
+
+00:41:48.790 --> 00:41:48.800 align:start position:0%
+windows so actually if you have a laptop
+
+
+00:41:48.800 --> 00:41:50.069 align:start position:0%
+windows so actually if you have a laptop
+open<00:41:48.960><c> you</c><00:41:49.040><c> can</c><00:41:49.160><c> go</c><00:41:49.280><c> download</c><00:41:49.599><c> it</c><00:41:49.760><c> right</c><00:41:49.880><c> now</c>
+
+00:41:50.069 --> 00:41:50.079 align:start position:0%
+open you can go download it right now
+
+
+00:41:50.079 --> 00:41:52.829 align:start position:0%
+open you can go download it right now
+and<00:41:50.760><c> uh</c><00:41:50.880><c> install</c><00:41:51.200><c> it</c><00:41:51.560><c> fairly</c><00:41:51.960><c> quickly</c><00:41:52.720><c> there's</c>
+
+00:41:52.829 --> 00:41:52.839 align:start position:0%
+and uh install it fairly quickly there's
+
+
+00:41:52.839 --> 00:41:56.870 align:start position:0%
+and uh install it fairly quickly there's
+a<00:41:53.079><c> web</c><00:41:53.319><c> app</c><00:41:53.560><c> version</c><00:41:54.000><c> called</c><00:41:54.359><c> Snap</c><00:41:55.119><c> Snap</c><00:41:55.880><c> up</c>
+
+00:41:56.870 --> 00:41:56.880 align:start position:0%
+a web app version called Snap Snap up
+
+
+00:41:56.880 --> 00:41:58.150 align:start position:0%
+a web app version called Snap Snap up
+snap
+
+00:41:58.150 --> 00:41:58.160 align:start position:0%
+snap
+
+
+00:41:58.160 --> 00:42:00.990 align:start position:0%
+snap
+okay<00:41:59.160><c> so</c><00:41:59.880><c> there</c><00:41:59.960><c> are</c><00:42:00.079><c> a</c><00:42:00.119><c> lot</c><00:42:00.240><c> of</c><00:42:00.319><c> versions</c><00:42:00.640><c> to</c>
+
+00:42:00.990 --> 00:42:01.000 align:start position:0%
+okay so there are a lot of versions to
+
+
+00:42:01.000 --> 00:42:04.230 align:start position:0%
+okay so there are a lot of versions to
+try<00:42:02.000><c> I've</c><00:42:02.960><c> mostly</c><00:42:03.359><c> played</c><00:42:03.599><c> with</c><00:42:03.720><c> the</c><00:42:03.839><c> one</c><00:42:04.079><c> on</c>
+
+00:42:04.230 --> 00:42:04.240 align:start position:0%
+try I've mostly played with the one on
+
+
+00:42:04.240 --> 00:42:05.710 align:start position:0%
+try I've mostly played with the one on
+the<00:42:04.400><c> Raspberry</c><00:42:04.839><c> Pi</c><00:42:05.040><c> so</c><00:42:05.160><c> what</c><00:42:05.280><c> are</c><00:42:05.359><c> we</c><00:42:05.480><c> looking</c>
+
+00:42:05.710 --> 00:42:05.720 align:start position:0%
+the Raspberry Pi so what are we looking
+
+
+00:42:05.720 --> 00:42:09.270 align:start position:0%
+the Raspberry Pi so what are we looking
+at<00:42:05.960><c> here</c><00:42:06.839><c> well</c><00:42:07.079><c> we</c><00:42:07.200><c> have</c><00:42:07.400><c> a</c><00:42:07.680><c> stage</c><00:42:08.560><c> this</c><00:42:09.079><c> uh</c>
+
+00:42:09.270 --> 00:42:09.280 align:start position:0%
+at here well we have a stage this uh
+
+
+00:42:09.280 --> 00:42:12.870 align:start position:0%
+at here well we have a stage this uh
+scratch<00:42:09.760><c> being</c><00:42:10.359><c> visually</c><00:42:11.520><c> oriented</c><00:42:12.520><c> uh</c><00:42:12.720><c> the</c>
+
+00:42:12.870 --> 00:42:12.880 align:start position:0%
+scratch being visually oriented uh the
+
+
+00:42:12.880 --> 00:42:16.510 align:start position:0%
+scratch being visually oriented uh the
+output<00:42:13.359><c> or</c><00:42:13.520><c> the</c><00:42:13.640><c> things</c><00:42:13.839><c> you</c><00:42:14.280><c> program</c><00:42:15.359><c> uh</c><00:42:16.359><c> the</c>
+
+00:42:16.510 --> 00:42:16.520 align:start position:0%
+output or the things you program uh the
+
+
+00:42:16.520 --> 00:42:18.630 align:start position:0%
+output or the things you program uh the
+activities<00:42:16.920><c> you</c><00:42:17.119><c> program</c><00:42:17.960><c> generally</c><00:42:18.359><c> are</c>
+
+00:42:18.630 --> 00:42:18.640 align:start position:0%
+activities you program generally are
+
+
+00:42:18.640 --> 00:42:21.030 align:start position:0%
+activities you program generally are
+visual<00:42:19.160><c> so</c><00:42:19.960><c> this</c><00:42:20.119><c> is</c><00:42:20.240><c> our</c><00:42:20.480><c> stage</c><00:42:20.839><c> this</c><00:42:20.920><c> is</c>
+
+00:42:21.030 --> 00:42:21.040 align:start position:0%
+visual so this is our stage this is
+
+
+00:42:21.040 --> 00:42:22.990 align:start position:0%
+visual so this is our stage this is
+where<00:42:21.280><c> things</c><00:42:21.400><c> will</c><00:42:21.640><c> happen</c><00:42:22.119><c> and</c><00:42:22.440><c> this</c><00:42:22.559><c> is</c><00:42:22.720><c> a</c>
+
+00:42:22.990 --> 00:42:23.000 align:start position:0%
+where things will happen and this is a
+
+
+00:42:23.000 --> 00:42:25.670 align:start position:0%
+where things will happen and this is a
+cat<00:42:23.359><c> and</c><00:42:23.559><c> he</c><00:42:23.760><c> is</c><00:42:24.000><c> what</c><00:42:24.119><c> scratch</c><00:42:24.599><c> considers</c><00:42:25.480><c> a</c>
+
+00:42:25.670 --> 00:42:25.680 align:start position:0%
+cat and he is what scratch considers a
+
+
+00:42:25.680 --> 00:42:28.589 align:start position:0%
+cat and he is what scratch considers a
+Sprite<00:42:26.640><c> a</c><00:42:26.760><c> Sprite</c><00:42:27.400><c> is</c><00:42:27.640><c> an</c><00:42:27.839><c> image</c><00:42:28.240><c> or</c><00:42:28.440><c> a</c>
+
+00:42:28.589 --> 00:42:28.599 align:start position:0%
+Sprite a Sprite is an image or a
+
+
+00:42:28.599 --> 00:42:29.870 align:start position:0%
+Sprite a Sprite is an image or a
+resource<00:42:29.040><c> that</c><00:42:29.119><c> you</c><00:42:29.200><c> can</c><00:42:29.359><c> include</c><00:42:29.640><c> in</c><00:42:29.720><c> your</c>
+
+00:42:29.870 --> 00:42:29.880 align:start position:0%
+resource that you can include in your
+
+
+00:42:29.880 --> 00:42:32.030 align:start position:0%
+resource that you can include in your
+scratch<00:42:30.280><c> program</c><00:42:30.680><c> and</c><00:42:31.240><c> by</c><00:42:31.359><c> default</c><00:42:31.760><c> we</c><00:42:31.880><c> get</c>
+
+00:42:32.030 --> 00:42:32.040 align:start position:0%
+scratch program and by default we get
+
+
+00:42:32.040 --> 00:42:33.589 align:start position:0%
+scratch program and by default we get
+this<00:42:32.200><c> cool</c>
+
+00:42:33.589 --> 00:42:33.599 align:start position:0%
+this cool
+
+
+00:42:33.599 --> 00:42:37.790 align:start position:0%
+this cool
+cap<00:42:34.599><c> well</c><00:42:34.760><c> in</c><00:42:34.839><c> order</c><00:42:35.160><c> to</c><00:42:35.280><c> do</c><00:42:35.480><c> anything</c><00:42:36.359><c> we</c><00:42:36.520><c> need</c>
+
+00:42:37.790 --> 00:42:37.800 align:start position:0%
+cap well in order to do anything we need
+
+
+00:42:37.800 --> 00:42:40.150 align:start position:0%
+cap well in order to do anything we need
+to<00:42:38.800><c> add</c><00:42:38.960><c> a</c><00:42:39.079><c> little</c><00:42:39.280><c> block</c><00:42:39.520><c> here</c><00:42:39.640><c> to</c><00:42:39.800><c> represent</c>
+
+00:42:40.150 --> 00:42:40.160 align:start position:0%
+to add a little block here to represent
+
+
+00:42:40.160 --> 00:42:42.470 align:start position:0%
+to add a little block here to represent
+the<00:42:40.400><c> program</c><00:42:40.720><c> starting</c><00:42:41.359><c> this</c><00:42:41.480><c> is</c><00:42:41.920><c> similar</c><00:42:42.280><c> to</c>
+
+00:42:42.470 --> 00:42:42.480 align:start position:0%
+the program starting this is similar to
+
+
+00:42:42.480 --> 00:42:46.190 align:start position:0%
+the program starting this is similar to
+writing<00:42:42.920><c> your</c><00:42:43.160><c> main</c><00:42:43.440><c> function</c><00:42:43.720><c> in</c><00:42:43.920><c> C</c><00:42:44.200><c> or</c><00:42:44.760><c> uh</c>
+
+00:42:46.190 --> 00:42:46.200 align:start position:0%
+writing your main function in C or uh
+
+
+00:42:46.200 --> 00:42:48.710 align:start position:0%
+writing your main function in C or uh
+Java<00:42:47.200><c> uh</c><00:42:47.319><c> and</c><00:42:47.480><c> this</c><00:42:47.599><c> tells</c><00:42:47.920><c> the</c><00:42:48.079><c> program</c><00:42:48.319><c> to</c><00:42:48.480><c> do</c>
+
+00:42:48.710 --> 00:42:48.720 align:start position:0%
+Java uh and this tells the program to do
+
+
+00:42:48.720 --> 00:42:52.150 align:start position:0%
+Java uh and this tells the program to do
+stuff<00:42:48.960><c> when</c><00:42:49.119><c> we</c><00:42:49.280><c> click</c><00:42:49.880><c> uh</c><00:42:50.680><c> the</c><00:42:51.680><c> the</c><00:42:51.839><c> green</c>
+
+00:42:52.150 --> 00:42:52.160 align:start position:0%
+stuff when we click uh the the green
+
+
+00:42:52.160 --> 00:42:54.190 align:start position:0%
+stuff when we click uh the the green
+flag<00:42:52.760><c> over</c><00:42:53.000><c> here</c><00:42:53.400><c> this</c><00:42:53.480><c> is</c><00:42:53.680><c> basically</c><00:42:54.040><c> the</c>
+
+00:42:54.190 --> 00:42:54.200 align:start position:0%
+flag over here this is basically the
+
+
+00:42:54.200 --> 00:42:56.589 align:start position:0%
+flag over here this is basically the
+start<00:42:54.480><c> and</c><00:42:54.680><c> stop</c><00:42:54.920><c> buttons</c><00:42:55.160><c> for</c><00:42:55.280><c> our</c><00:42:55.599><c> program</c>
+
+00:42:56.589 --> 00:42:56.599 align:start position:0%
+start and stop buttons for our program
+
+
+00:42:56.599 --> 00:42:59.069 align:start position:0%
+start and stop buttons for our program
+now<00:42:56.760><c> what</c><00:42:56.880><c> I</c><00:42:57.000><c> like</c><00:42:57.280><c> to</c><00:42:57.440><c> write</c><00:42:57.640><c> is</c><00:42:57.760><c> a</c><00:42:58.079><c> program</c>
+
+00:42:59.069 --> 00:42:59.079 align:start position:0%
+now what I like to write is a program
+
+
+00:42:59.079 --> 00:43:01.750 align:start position:0%
+now what I like to write is a program
+that<00:43:00.000><c> gets</c><00:43:00.280><c> the</c><00:43:00.440><c> cat</c><00:43:00.640><c> to</c><00:43:00.880><c> say</c><00:43:01.240><c> something</c><00:43:01.640><c> when</c>
+
+00:43:01.750 --> 00:43:01.760 align:start position:0%
+that gets the cat to say something when
+
+
+00:43:01.760 --> 00:43:03.589 align:start position:0%
+that gets the cat to say something when
+I<00:43:01.880><c> hover</c><00:43:02.160><c> the</c><00:43:02.319><c> mouse</c><00:43:02.640><c> over</c>
+
+00:43:03.589 --> 00:43:03.599 align:start position:0%
+I hover the mouse over
+
+
+00:43:03.599 --> 00:43:05.750 align:start position:0%
+I hover the mouse over
+him<00:43:04.599><c> well</c><00:43:04.880><c> we</c><00:43:05.000><c> know</c><00:43:05.200><c> there</c><00:43:05.280><c> are</c><00:43:05.400><c> kind</c><00:43:05.520><c> of</c><00:43:05.599><c> two</c>
+
+00:43:05.750 --> 00:43:05.760 align:start position:0%
+him well we know there are kind of two
+
+
+00:43:05.760 --> 00:43:07.430 align:start position:0%
+him well we know there are kind of two
+states<00:43:06.119><c> there's</c><00:43:06.240><c> a</c><00:43:06.440><c> state</c><00:43:06.640><c> where</c><00:43:06.800><c> the</c><00:43:06.920><c> mouse</c>
+
+00:43:07.430 --> 00:43:07.440 align:start position:0%
+states there's a state where the mouse
+
+
+00:43:07.440 --> 00:43:08.790 align:start position:0%
+states there's a state where the mouse
+isn't<00:43:07.680><c> on</c><00:43:07.839><c> the</c><00:43:08.000><c> cat</c><00:43:08.200><c> and</c><00:43:08.319><c> there's</c><00:43:08.480><c> a</c><00:43:08.640><c> state</c>
+
+00:43:08.790 --> 00:43:08.800 align:start position:0%
+isn't on the cat and there's a state
+
+
+00:43:08.800 --> 00:43:10.589 align:start position:0%
+isn't on the cat and there's a state
+where<00:43:08.920><c> the</c><00:43:09.040><c> mouse</c><00:43:09.359><c> is</c><00:43:09.480><c> on</c><00:43:09.599><c> the</c><00:43:09.800><c> cat</c><00:43:10.040><c> so</c><00:43:10.160><c> we</c><00:43:10.520><c> we</c>
+
+00:43:10.589 --> 00:43:10.599 align:start position:0%
+where the mouse is on the cat so we we
+
+
+00:43:10.599 --> 00:43:12.950 align:start position:0%
+where the mouse is on the cat so we we
+know<00:43:10.720><c> we</c><00:43:10.839><c> need</c><00:43:10.960><c> an</c><00:43:11.160><c> if</c><00:43:11.559><c> statement</c><00:43:12.520><c> well</c><00:43:12.680><c> under</c>
+
+00:43:12.950 --> 00:43:12.960 align:start position:0%
+know we need an if statement well under
+
+
+00:43:12.960 --> 00:43:15.510 align:start position:0%
+know we need an if statement well under
+the<00:43:13.599><c> left</c><00:43:13.880><c> hand</c><00:43:14.119><c> side</c><00:43:14.440><c> of</c><00:43:14.559><c> the</c><00:43:14.720><c> IDE</c><00:43:15.160><c> here</c><00:43:15.359><c> we</c>
+
+00:43:15.510 --> 00:43:15.520 align:start position:0%
+the left hand side of the IDE here we
+
+
+00:43:15.520 --> 00:43:17.549 align:start position:0%
+the left hand side of the IDE here we
+have<00:43:16.079><c> a</c><00:43:16.200><c> selection</c><00:43:16.640><c> of</c><00:43:16.839><c> control</c><00:43:17.200><c> flow</c>
+
+00:43:17.549 --> 00:43:17.559 align:start position:0%
+have a selection of control flow
+
+
+00:43:17.559 --> 00:43:19.589 align:start position:0%
+have a selection of control flow
+features<00:43:18.000><c> and</c><00:43:18.119><c> they're</c><00:43:18.319><c> all</c><00:43:18.839><c> Visual</c><00:43:19.280><c> and</c><00:43:19.440><c> look</c>
+
+00:43:19.589 --> 00:43:19.599 align:start position:0%
+features and they're all Visual and look
+
+
+00:43:19.599 --> 00:43:21.790 align:start position:0%
+features and they're all Visual and look
+there's<00:43:19.760><c> an</c><00:43:19.880><c> IFL</c><00:43:20.319><c> statement</c><00:43:21.280><c> and</c><00:43:21.400><c> what</c><00:43:21.520><c> I</c><00:43:21.599><c> can</c>
+
+00:43:21.790 --> 00:43:21.800 align:start position:0%
+there's an IFL statement and what I can
+
+
+00:43:21.800 --> 00:43:26.589 align:start position:0%
+there's an IFL statement and what I can
+do<00:43:22.200><c> is</c><00:43:23.119><c> pop</c><00:43:23.480><c> that</c><00:43:24.119><c> in</c><00:43:25.119><c> and</c><00:43:25.359><c> actually</c><00:43:26.160><c> I</c><00:43:26.280><c> want</c>
+
+00:43:26.589 --> 00:43:26.599 align:start position:0%
+do is pop that in and actually I want
+
+
+00:43:26.599 --> 00:43:31.510 align:start position:0%
+do is pop that in and actually I want
+this<00:43:26.760><c> to</c><00:43:26.920><c> have</c><00:43:27.440><c> happen</c><00:43:28.559><c> uh</c><00:43:29.559><c> forever</c><00:43:30.520><c> so</c><00:43:31.359><c> we</c>
+
+00:43:31.510 --> 00:43:31.520 align:start position:0%
+this to have happen uh forever so we
+
+
+00:43:31.520 --> 00:43:33.870 align:start position:0%
+this to have happen uh forever so we
+also<00:43:31.720><c> have</c><00:43:31.839><c> a</c><00:43:31.960><c> little</c><00:43:32.160><c> forever</c><00:43:32.720><c> block</c><00:43:33.720><c> and</c>
+
+00:43:33.870 --> 00:43:33.880 align:start position:0%
+also have a little forever block and
+
+
+00:43:33.880 --> 00:43:35.910 align:start position:0%
+also have a little forever block and
+that's<00:43:34.079><c> like</c><00:43:34.160><c> a</c><00:43:34.319><c> wild</c><00:43:34.599><c> true</c>
+
+00:43:35.910 --> 00:43:35.920 align:start position:0%
+that's like a wild true
+
+
+00:43:35.920 --> 00:43:38.510 align:start position:0%
+that's like a wild true
+Loop<00:43:36.920><c> we</c><00:43:37.040><c> have</c><00:43:37.160><c> a</c><00:43:37.280><c> little</c><00:43:37.480><c> sensing</c><00:43:38.000><c> thing</c><00:43:38.240><c> so</c><00:43:38.400><c> I</c>
+
+00:43:38.510 --> 00:43:38.520 align:start position:0%
+Loop we have a little sensing thing so I
+
+
+00:43:38.520 --> 00:43:43.109 align:start position:0%
+Loop we have a little sensing thing so I
+can<00:43:38.760><c> say</c><00:43:39.280><c> if</c><00:43:40.280><c> the</c><00:43:40.839><c> Sprite</c><00:43:41.839><c> is</c>
+
+00:43:43.109 --> 00:43:43.119 align:start position:0%
+can say if the Sprite is
+
+
+00:43:43.119 --> 00:43:45.190 align:start position:0%
+can say if the Sprite is
+touching<00:43:44.119><c> the</c><00:43:44.280><c> mouse</c>
+
+00:43:45.190 --> 00:43:45.200 align:start position:0%
+touching the mouse
+
+
+00:43:45.200 --> 00:43:48.069 align:start position:0%
+touching the mouse
+pointer<00:43:46.200><c> then</c><00:43:46.680><c> I</c>
+
+00:43:48.069 --> 00:43:48.079 align:start position:0%
+pointer then I
+
+
+00:43:48.079 --> 00:43:54.630 align:start position:0%
+pointer then I
+want<00:43:49.400><c> the</c><00:43:50.400><c> what</c><00:43:50.520><c> should</c><00:43:50.640><c> I</c><00:43:50.880><c> do</c><00:43:51.880><c> move</c><00:43:52.640><c> away</c><00:43:53.640><c> oh</c>
+
+00:43:54.630 --> 00:43:54.640 align:start position:0%
+want the what should I do move away oh
+
+
+00:43:54.640 --> 00:43:58.109 align:start position:0%
+want the what should I do move away oh
+yeah<00:43:55.079><c> some</c><00:43:55.440><c> we</c><00:43:55.559><c> have</c><00:43:55.680><c> a</c><00:43:55.800><c> scratcher</c>
+
+00:43:58.109 --> 00:43:58.119 align:start position:0%
+yeah some we have a scratcher
+
+
+00:43:58.119 --> 00:44:02.109 align:start position:0%
+yeah some we have a scratcher
+I<00:43:58.400><c> played</c><00:43:58.800><c> this</c><00:43:59.119><c> last</c><00:43:59.680><c> time</c><00:44:00.359><c> before</c>
+
+00:44:02.109 --> 00:44:02.119 align:start position:0%
+I played this last time before
+
+
+00:44:02.119 --> 00:44:10.470 align:start position:0%
+I played this last time before
+yeah<00:44:03.119><c> you</c><00:44:03.240><c> may</c><00:44:03.440><c> be</c><00:44:03.599><c> more</c><00:44:03.800><c> experienced</c><00:44:04.280><c> than</c><00:44:04.400><c> I</c>
+
+00:44:10.470 --> 00:44:10.480 align:start position:0%
+
+
+
+00:44:10.480 --> 00:44:22.309 align:start position:0%
+
+am
+
+00:44:22.309 --> 00:44:22.319 align:start position:0%
+
+
+
+00:44:22.319 --> 00:44:25.150 align:start position:0%
+
+oops<00:44:23.319><c> so</c><00:44:23.880><c> now</c><00:44:24.079><c> we've</c><00:44:24.280><c> have</c><00:44:24.440><c> our</c><00:44:24.720><c> program</c>
+
+00:44:25.150 --> 00:44:25.160 align:start position:0%
+oops so now we've have our program
+
+
+00:44:25.160 --> 00:44:27.349 align:start position:0%
+oops so now we've have our program
+written<00:44:25.800><c> and</c><00:44:26.079><c> I</c><00:44:26.160><c> can</c><00:44:26.400><c> start</c><00:44:26.680><c> it</c><00:44:26.880><c> by</c><00:44:27.160><c> hitting</c>
+
+00:44:27.349 --> 00:44:27.359 align:start position:0%
+written and I can start it by hitting
+
+
+00:44:27.359 --> 00:44:29.710 align:start position:0%
+written and I can start it by hitting
+the<00:44:27.480><c> green</c><00:44:27.760><c> flag</c><00:44:28.559><c> and</c><00:44:28.680><c> the</c><00:44:28.839><c> default</c><00:44:29.200><c> Behavior</c>
+
+00:44:29.710 --> 00:44:29.720 align:start position:0%
+the green flag and the default Behavior
+
+
+00:44:29.720 --> 00:44:31.870 align:start position:0%
+the green flag and the default Behavior
+now<00:44:30.079><c> is</c><00:44:30.640><c> for</c><00:44:30.960><c> the</c><00:44:31.119><c> the</c><00:44:31.240><c> cats</c><00:44:31.440><c> to</c><00:44:31.559><c> say</c><00:44:31.760><c> I'm</c>
+
+00:44:31.870 --> 00:44:31.880 align:start position:0%
+now is for the the cats to say I'm
+
+
+00:44:31.880 --> 00:44:32.990 align:start position:0%
+now is for the the cats to say I'm
+lonely<00:44:32.240><c> that's</c><00:44:32.400><c> because</c><00:44:32.520><c> we're</c><00:44:32.680><c> not</c><00:44:32.839><c> we're</c>
+
+00:44:32.990 --> 00:44:33.000 align:start position:0%
+lonely that's because we're not we're
+
+
+00:44:33.000 --> 00:44:34.710 align:start position:0%
+lonely that's because we're not we're
+not<00:44:33.160><c> petting</c><00:44:33.480><c> him</c><00:44:34.079><c> and</c><00:44:34.200><c> what's</c><00:44:34.400><c> happening</c>
+
+00:44:34.710 --> 00:44:34.720 align:start position:0%
+not petting him and what's happening
+
+
+00:44:34.720 --> 00:44:37.230 align:start position:0%
+not petting him and what's happening
+over<00:44:34.880><c> here</c><00:44:35.079><c> in</c><00:44:35.200><c> our</c><00:44:35.359><c> Loop</c><00:44:35.880><c> is</c><00:44:36.520><c> um</c><00:44:36.839><c> the</c><00:44:36.960><c> mouse</c>
+
+00:44:37.230 --> 00:44:37.240 align:start position:0%
+over here in our Loop is um the mouse
+
+
+00:44:37.240 --> 00:44:38.790 align:start position:0%
+over here in our Loop is um the mouse
+pointer<00:44:37.520><c> is</c><00:44:37.680><c> not</c><00:44:37.920><c> touching</c><00:44:38.280><c> so</c><00:44:38.480><c> we</c><00:44:38.599><c> fall</c>
+
+00:44:38.790 --> 00:44:38.800 align:start position:0%
+pointer is not touching so we fall
+
+
+00:44:38.800 --> 00:44:40.950 align:start position:0%
+pointer is not touching so we fall
+through<00:44:38.960><c> to</c><00:44:39.160><c> the</c><00:44:39.280><c> else</c><00:44:40.079><c> and</c><00:44:40.200><c> the</c><00:44:40.359><c> cat</c><00:44:40.559><c> thinks</c>
+
+00:44:40.950 --> 00:44:40.960 align:start position:0%
+through to the else and the cat thinks
+
+
+00:44:40.960 --> 00:44:43.510 align:start position:0%
+through to the else and the cat thinks
+I'm<00:44:41.119><c> lonely</c><00:44:41.559><c> that's</c><00:44:42.319><c> really</c><00:44:42.599><c> depressing</c>
+
+00:44:43.510 --> 00:44:43.520 align:start position:0%
+I'm lonely that's really depressing
+
+
+00:44:43.520 --> 00:44:45.309 align:start position:0%
+I'm lonely that's really depressing
+let's<00:44:44.079><c> let's</c><00:44:44.319><c> pet</c><00:44:44.559><c> his</c><00:44:44.720><c> head</c><00:44:44.880><c> and</c><00:44:45.000><c> see</c><00:44:45.160><c> what</c>
+
+00:44:45.309 --> 00:44:45.319 align:start position:0%
+let's let's pet his head and see what
+
+
+00:44:45.319 --> 00:44:48.150 align:start position:0%
+let's let's pet his head and see what
+happens<00:44:46.079><c> oh</c><00:44:46.240><c> there</c><00:44:46.359><c> we</c>
+
+00:44:48.150 --> 00:44:48.160 align:start position:0%
+happens oh there we
+
+
+00:44:48.160 --> 00:44:49.790 align:start position:0%
+happens oh there we
+go
+
+00:44:49.790 --> 00:44:49.800 align:start position:0%
+go
+
+
+00:44:49.800 --> 00:44:52.069 align:start position:0%
+go
+so<00:44:50.800><c> oh</c><00:44:50.960><c> wait</c><00:44:51.079><c> I'm</c><00:44:51.160><c> Gonna</c><00:44:51.400><c> Keep</c><00:44:51.520><c> it</c><00:44:51.599><c> on</c><00:44:51.760><c> there</c><00:44:51.920><c> so</c>
+
+00:44:52.069 --> 00:44:52.079 align:start position:0%
+so oh wait I'm Gonna Keep it on there so
+
+
+00:44:52.079 --> 00:44:53.309 align:start position:0%
+so oh wait I'm Gonna Keep it on there so
+he<00:44:52.200><c> stays</c>
+
+00:44:53.309 --> 00:44:53.319 align:start position:0%
+he stays
+
+
+00:44:53.319 --> 00:44:55.630 align:start position:0%
+he stays
+Happ<00:44:54.319><c> oh</c><00:44:54.480><c> it's</c><00:44:54.640><c> hard</c>
+
+00:44:55.630 --> 00:44:55.640 align:start position:0%
+Happ oh it's hard
+
+
+00:44:55.640 --> 00:44:58.549 align:start position:0%
+Happ oh it's hard
+okay<00:44:56.640><c> um</c><00:44:57.040><c> so</c><00:44:57.160><c> that's</c><00:44:57.280><c> really</c><00:44:57.480><c> I</c><00:44:57.640><c> had</c><00:44:57.800><c> to</c><00:44:57.960><c> show</c>
+
+00:44:58.549 --> 00:44:58.559 align:start position:0%
+okay um so that's really I had to show
+
+
+00:44:58.559 --> 00:45:01.870 align:start position:0%
+okay um so that's really I had to show
+basically<00:44:59.440><c> that</c><00:45:00.119><c> the</c>
+
+00:45:01.870 --> 00:45:01.880 align:start position:0%
+basically that the
+
+
+00:45:01.880 --> 00:45:05.870 align:start position:0%
+basically that the
+uh<00:45:02.920><c> who</c><00:45:03.920><c> I</c><00:45:04.040><c> thought</c><00:45:04.160><c> there</c><00:45:04.240><c> was</c><00:45:04.319><c> a</c><00:45:04.440><c> bug</c><00:45:04.680><c> in</c><00:45:04.760><c> my</c>
+
+00:45:05.870 --> 00:45:05.880 align:start position:0%
+uh who I thought there was a bug in my
+
+
+00:45:05.880 --> 00:45:09.549 align:start position:0%
+uh who I thought there was a bug in my
+program<00:45:07.119><c> um</c><00:45:08.119><c> so</c><00:45:08.280><c> on</c><00:45:08.400><c> your</c><00:45:08.559><c> e</c><00:45:09.040><c> piie</c><00:45:09.359><c> comes</c>
+
+00:45:09.549 --> 00:45:09.559 align:start position:0%
+program um so on your e piie comes
+
+
+00:45:09.559 --> 00:45:11.549 align:start position:0%
+program um so on your e piie comes
+loaded<00:45:09.839><c> with</c><00:45:10.000><c> scratch</c><00:45:10.480><c> I</c><00:45:10.599><c> really</c><00:45:10.839><c> recommend</c>
+
+00:45:11.549 --> 00:45:11.559 align:start position:0%
+loaded with scratch I really recommend
+
+
+00:45:11.559 --> 00:45:14.870 align:start position:0%
+loaded with scratch I really recommend
+firing<00:45:11.920><c> it</c><00:45:12.079><c> up</c><00:45:12.839><c> um</c><00:45:13.480><c> it's</c><00:45:14.280><c> I</c><00:45:14.359><c> mean</c><00:45:14.559><c> you</c><00:45:14.680><c> know</c>
+
+00:45:14.870 --> 00:45:14.880 align:start position:0%
+firing it up um it's I mean you know
+
+
+00:45:14.880 --> 00:45:17.190 align:start position:0%
+firing it up um it's I mean you know
+I've<00:45:15.119><c> I've</c><00:45:16.000><c> done</c><00:45:16.280><c> programming</c><00:45:16.680><c> on</c><00:45:16.760><c> a</c><00:45:16.880><c> variety</c>
+
+00:45:17.190 --> 00:45:17.200 align:start position:0%
+I've I've done programming on a variety
+
+
+00:45:17.200 --> 00:45:19.270 align:start position:0%
+I've I've done programming on a variety
+of<00:45:17.319><c> platforms</c><00:45:17.760><c> and</c><00:45:17.839><c> I</c><00:45:17.960><c> had</c><00:45:18.119><c> a</c><00:45:18.280><c> lot</c><00:45:18.480><c> of</c><00:45:18.680><c> fun</c><00:45:19.119><c> with</c>
+
+00:45:19.270 --> 00:45:19.280 align:start position:0%
+of platforms and I had a lot of fun with
+
+
+00:45:19.280 --> 00:45:21.710 align:start position:0%
+of platforms and I had a lot of fun with
+scratch<00:45:19.800><c> and</c><00:45:20.160><c> you</c><00:45:20.319><c> know</c><00:45:21.119><c> uh</c><00:45:21.240><c> it's</c><00:45:21.359><c> just</c><00:45:21.520><c> really</c>
+
+00:45:21.710 --> 00:45:21.720 align:start position:0%
+scratch and you know uh it's just really
+
+
+00:45:21.720 --> 00:45:22.990 align:start position:0%
+scratch and you know uh it's just really
+cool<00:45:22.040><c> and</c><00:45:22.119><c> I</c><00:45:22.200><c> think</c><00:45:22.319><c> it's</c><00:45:22.480><c> a</c><00:45:22.640><c> great</c><00:45:22.800><c> way</c><00:45:22.920><c> to</c>
+
+00:45:22.990 --> 00:45:23.000 align:start position:0%
+cool and I think it's a great way to
+
+
+00:45:23.000 --> 00:45:25.150 align:start position:0%
+cool and I think it's a great way to
+show<00:45:23.240><c> people</c><00:45:23.520><c> the</c><00:45:23.680><c> potential</c><00:45:24.319><c> of</c><00:45:25.000><c> the</c>
+
+00:45:25.150 --> 00:45:25.160 align:start position:0%
+show people the potential of the
+
+
+00:45:25.160 --> 00:45:27.309 align:start position:0%
+show people the potential of the
+Raspberry<00:45:25.599><c> Pi</c><00:45:25.839><c> and</c><00:45:25.960><c> computers</c><00:45:26.319><c> in</c><00:45:26.440><c> general</c><00:45:27.200><c> a</c>
+
+00:45:27.309 --> 00:45:27.319 align:start position:0%
+Raspberry Pi and computers in general a
+
+
+00:45:27.319 --> 00:45:28.829 align:start position:0%
+Raspberry Pi and computers in general a
+way<00:45:27.440><c> to</c><00:45:27.559><c> interest</c><00:45:27.839><c> them</c><00:45:27.920><c> in</c><00:45:28.079><c> programming</c>
+
+00:45:28.829 --> 00:45:28.839 align:start position:0%
+way to interest them in programming
+
+
+00:45:28.839 --> 00:45:30.349 align:start position:0%
+way to interest them in programming
+similar<00:45:29.119><c> to</c><00:45:29.200><c> the</c><00:45:29.319><c> ways</c><00:45:29.559><c> that</c><00:45:29.760><c> we</c><00:45:30.000><c> originally</c>
+
+00:45:30.349 --> 00:45:30.359 align:start position:0%
+similar to the ways that we originally
+
+
+00:45:30.359 --> 00:45:31.510 align:start position:0%
+similar to the ways that we originally
+got<00:45:30.520><c> interested</c><00:45:30.880><c> when</c><00:45:31.000><c> we</c><00:45:31.079><c> started</c><00:45:31.319><c> playing</c>
+
+00:45:31.510 --> 00:45:31.520 align:start position:0%
+got interested when we started playing
+
+
+00:45:31.520 --> 00:45:34.190 align:start position:0%
+got interested when we started playing
+with<00:45:31.680><c> Vic</c><00:45:31.839><c> 20s</c><00:45:32.119><c> and</c><00:45:32.240><c> apple</c><00:45:32.480><c> 2's</c><00:45:33.400><c> conv</c><00:45:34.000><c> before</c>
+
+00:45:34.190 --> 00:45:34.200 align:start position:0%
+with Vic 20s and apple 2's conv before
+
+
+00:45:34.200 --> 00:45:36.750 align:start position:0%
+with Vic 20s and apple 2's conv before
+us<00:45:34.960><c> um</c><00:45:35.319><c> so</c><00:45:35.599><c> without</c><00:45:35.800><c> further</c><00:45:36.040><c> Ado</c><00:45:36.280><c> I</c><00:45:36.440><c> present</c>
+
+00:45:36.750 --> 00:45:36.760 align:start position:0%
+us um so without further Ado I present
+
+
+00:45:36.760 --> 00:45:39.109 align:start position:0%
+us um so without further Ado I present
+Clinton<00:45:37.280><c> Nixon</c><00:45:38.280><c> who</c><00:45:38.400><c> will</c><00:45:38.599><c> talk</c><00:45:38.800><c> a</c><00:45:38.880><c> little</c>
+
+00:45:39.109 --> 00:45:39.119 align:start position:0%
+Clinton Nixon who will talk a little
+
+
+00:45:39.119 --> 00:45:40.670 align:start position:0%
+Clinton Nixon who will talk a little
+more<00:45:39.480><c> about</c><00:45:39.720><c> development</c><00:45:40.079><c> of</c><00:45:40.200><c> the</c><00:45:40.280><c> Rasberry</c>
+
+00:45:40.670 --> 00:45:40.680 align:start position:0%
+more about development of the Rasberry
+
+
+00:45:40.680 --> 00:45:42.950 align:start position:0%
+more about development of the Rasberry
+piie<00:45:40.839><c> and</c><00:45:40.920><c> show</c><00:45:41.160><c> us</c><00:45:41.760><c> his</c><00:45:42.119><c> pretty</c>
+
+00:45:42.950 --> 00:45:42.960 align:start position:0%
+piie and show us his pretty
+
+
+00:45:42.960 --> 00:45:45.870 align:start position:0%
+piie and show us his pretty
+insane<00:45:43.960><c> uh</c><00:45:44.240><c> Rasberry</c><00:45:44.680><c> Pi</c><00:45:44.839><c> setup</c><00:45:45.559><c> he's</c><00:45:45.680><c> doing</c>
+
+00:45:45.870 --> 00:45:45.880 align:start position:0%
+insane uh Rasberry Pi setup he's doing
+
+
+00:45:45.880 --> 00:45:47.549 align:start position:0%
+insane uh Rasberry Pi setup he's doing
+like<00:45:46.000><c> day-to-day</c><00:45:46.440><c> development</c><00:45:46.800><c> on</c><00:45:46.920><c> it</c><00:45:47.200><c> he's</c>
+
+00:45:47.549 --> 00:45:47.559 align:start position:0%
+like day-to-day development on it he's
+
+
+00:45:47.559 --> 00:45:48.790 align:start position:0%
+like day-to-day development on it he's
+full<00:45:47.920><c> full</c>
+
+00:45:48.790 --> 00:45:48.800 align:start position:0%
+full full
+
+
+00:45:48.800 --> 00:45:55.750 align:start position:0%
+full full
+on
+
+00:45:55.750 --> 00:45:55.760 align:start position:0%
+
+
+
+00:45:55.760 --> 00:45:58.069 align:start position:0%
+
+yeah<00:45:56.760><c> okay</c>
+
+00:45:58.069 --> 00:45:58.079 align:start position:0%
+yeah okay
+
+
+00:45:58.079 --> 00:46:01.190 align:start position:0%
+yeah okay
+greaty<00:45:59.079><c> that</c><00:45:59.200><c> was</c><00:45:59.359><c> awesome</c><00:46:00.040><c> um</c><00:46:00.720><c> you</c><00:46:00.880><c> got</c><00:46:01.040><c> my</c>
+
+00:46:01.190 --> 00:46:01.200 align:start position:0%
+greaty that was awesome um you got my
+
+
+00:46:01.200 --> 00:46:02.750 align:start position:0%
+greaty that was awesome um you got my
+last<00:46:01.359><c> name</c><00:46:01.599><c> wrong</c><00:46:01.839><c> which</c><00:46:01.960><c> is</c><00:46:02.119><c> interesting</c>
+
+00:46:02.750 --> 00:46:02.760 align:start position:0%
+last name wrong which is interesting
+
+
+00:46:02.760 --> 00:46:07.030 align:start position:0%
+last name wrong which is interesting
+besides<00:46:03.200><c> that</c><00:46:03.880><c> uh</c><00:46:04.119><c> so</c><00:46:04.720><c> I</c><00:46:05.599><c> oh</c><00:46:05.839><c> dve</c><00:46:06.240><c> SP</c><00:46:06.599><c> yeah</c><00:46:06.839><c> yeah</c>
+
+00:46:07.030 --> 00:46:07.040 align:start position:0%
+besides that uh so I oh dve SP yeah yeah
+
+
+00:46:07.040 --> 00:46:09.109 align:start position:0%
+besides that uh so I oh dve SP yeah yeah
+that's<00:46:07.240><c> that's</c><00:46:07.359><c> the</c><00:46:07.559><c> thing</c><00:46:08.200><c> um</c><00:46:08.440><c> anyway</c><00:46:08.839><c> yeah</c><00:46:09.000><c> I</c>
+
+00:46:09.109 --> 00:46:09.119 align:start position:0%
+that's that's the thing um anyway yeah I
+
+
+00:46:09.119 --> 00:46:11.030 align:start position:0%
+that's that's the thing um anyway yeah I
+am<00:46:09.280><c> doing</c><00:46:09.559><c> day-to-day</c><00:46:10.040><c> development</c><00:46:10.599><c> on</c><00:46:10.839><c> my</c>
+
+00:46:11.030 --> 00:46:11.040 align:start position:0%
+am doing day-to-day development on my
+
+
+00:46:11.040 --> 00:46:12.950 align:start position:0%
+am doing day-to-day development on my
+Raspberry<00:46:11.480><c> Pi</c><00:46:11.839><c> so</c><00:46:12.280><c> a</c><00:46:12.359><c> lot</c><00:46:12.480><c> of</c><00:46:12.559><c> people</c><00:46:12.720><c> race</c>
+
+00:46:12.950 --> 00:46:12.960 align:start position:0%
+Raspberry Pi so a lot of people race
+
+
+00:46:12.960 --> 00:46:14.470 align:start position:0%
+Raspberry Pi so a lot of people race
+their<00:46:13.079><c> hands</c><00:46:13.319><c> earlier</c><00:46:13.800><c> when</c><00:46:14.160><c> talking</c><00:46:14.359><c> about</c>
+
+00:46:14.470 --> 00:46:14.480 align:start position:0%
+their hands earlier when talking about
+
+
+00:46:14.480 --> 00:46:17.470 align:start position:0%
+their hands earlier when talking about
+Vic<00:46:14.640><c> 20s</c><00:46:15.000><c> and</c><00:46:15.160><c> apple</c><00:46:15.440><c> 2s</c><00:46:16.440><c> I</c><00:46:17.040><c> maybe</c><00:46:17.280><c> was</c><00:46:17.400><c> a</c>
+
+00:46:17.470 --> 00:46:17.480 align:start position:0%
+Vic 20s and apple 2s I maybe was a
+
+
+00:46:17.480 --> 00:46:18.710 align:start position:0%
+Vic 20s and apple 2s I maybe was a
+little<00:46:17.599><c> bit</c><00:46:17.680><c> younger</c><00:46:18.000><c> my</c><00:46:18.079><c> first</c><00:46:18.280><c> computer</c><00:46:18.599><c> was</c>
+
+00:46:18.710 --> 00:46:18.720 align:start position:0%
+little bit younger my first computer was
+
+
+00:46:18.720 --> 00:46:22.109 align:start position:0%
+little bit younger my first computer was
+a<00:46:18.839><c> PC</c><00:46:19.359><c> Junior</c><00:46:20.359><c> um</c><00:46:20.880><c> which</c><00:46:21.040><c> is</c><00:46:21.559><c> my</c><00:46:21.720><c> my</c><00:46:21.839><c> parents</c>
+
+00:46:22.109 --> 00:46:22.119 align:start position:0%
+a PC Junior um which is my my parents
+
+
+00:46:22.119 --> 00:46:23.710 align:start position:0%
+a PC Junior um which is my my parents
+bought<00:46:22.319><c> it</c><00:46:22.440><c> at</c><00:46:22.599><c> the</c><00:46:22.839><c> at</c><00:46:22.960><c> the</c><00:46:23.040><c> hardware</c><00:46:23.440><c> store</c>
+
+00:46:23.710 --> 00:46:23.720 align:start position:0%
+bought it at the at the hardware store
+
+
+00:46:23.720 --> 00:46:26.150 align:start position:0%
+bought it at the at the hardware store
+where<00:46:23.920><c> they</c><00:46:24.559><c> where</c><00:46:24.680><c> they</c><00:46:24.839><c> bought</c><00:46:25.079><c> their</c><00:46:25.240><c> tools</c>
+
+00:46:26.150 --> 00:46:26.160 align:start position:0%
+where they where they bought their tools
+
+
+00:46:26.160 --> 00:46:28.109 align:start position:0%
+where they where they bought their tools
+um<00:46:26.280><c> we</c><00:46:26.359><c> were</c><00:46:26.520><c> farmers</c><00:46:27.200><c> anyway</c><00:46:27.599><c> it</c><00:46:27.720><c> was</c><00:46:27.960><c> uh</c><00:46:28.040><c> it</c>
+
+00:46:28.109 --> 00:46:28.119 align:start position:0%
+um we were farmers anyway it was uh it
+
+
+00:46:28.119 --> 00:46:29.309 align:start position:0%
+um we were farmers anyway it was uh it
+was<00:46:28.240><c> funny</c><00:46:28.440><c> they</c><00:46:28.520><c> were</c><00:46:28.640><c> on</c><00:46:28.800><c> sale</c><00:46:29.040><c> because</c><00:46:29.200><c> they</c>
+
+00:46:29.309 --> 00:46:29.319 align:start position:0%
+was funny they were on sale because they
+
+
+00:46:29.319 --> 00:46:31.549 align:start position:0%
+was funny they were on sale because they
+had<00:46:29.400><c> that</c><00:46:29.599><c> crazy</c><00:46:29.839><c> little</c><00:46:30.000><c> chicken</c><00:46:30.559><c> keyboard</c>
+
+00:46:31.549 --> 00:46:31.559 align:start position:0%
+had that crazy little chicken keyboard
+
+
+00:46:31.559 --> 00:46:33.670 align:start position:0%
+had that crazy little chicken keyboard
+and<00:46:31.839><c> you</c><00:46:31.920><c> know</c><00:46:32.400><c> the</c><00:46:32.559><c> thing</c><00:46:32.839><c> about</c><00:46:33.160><c> that</c><00:46:33.319><c> is</c><00:46:33.520><c> I</c>
+
+00:46:33.670 --> 00:46:33.680 align:start position:0%
+and you know the thing about that is I
+
+
+00:46:33.680 --> 00:46:36.710 align:start position:0%
+and you know the thing about that is I
+had<00:46:33.880><c> this</c><00:46:34.400><c> really</c><00:46:35.400><c> kind</c><00:46:35.520><c> of</c><00:46:35.680><c> crappy</c><00:46:36.079><c> computer</c>
+
+00:46:36.710 --> 00:46:36.720 align:start position:0%
+had this really kind of crappy computer
+
+
+00:46:36.720 --> 00:46:38.670 align:start position:0%
+had this really kind of crappy computer
+with<00:46:36.839><c> a</c><00:46:36.960><c> weird</c><00:46:37.240><c> keyboard</c><00:46:37.839><c> that</c><00:46:38.000><c> had</c><00:46:38.200><c> no</c><00:46:38.400><c> hard</c>
+
+00:46:38.670 --> 00:46:38.680 align:start position:0%
+with a weird keyboard that had no hard
+
+
+00:46:38.680 --> 00:46:41.030 align:start position:0%
+with a weird keyboard that had no hard
+drive<00:46:39.240><c> and</c><00:46:39.400><c> those</c><00:46:39.640><c> limitations</c><00:46:40.240><c> drove</c><00:46:40.599><c> me</c><00:46:40.760><c> to</c>
+
+00:46:41.030 --> 00:46:41.040 align:start position:0%
+drive and those limitations drove me to
+
+
+00:46:41.040 --> 00:46:44.150 align:start position:0%
+drive and those limitations drove me to
+really<00:46:41.359><c> want</c><00:46:41.559><c> to</c><00:46:41.720><c> play</c><00:46:41.960><c> with</c><00:46:42.079><c> it</c><00:46:42.880><c> program</c><00:46:43.880><c> so</c>
+
+00:46:44.150 --> 00:46:44.160 align:start position:0%
+really want to play with it program so
+
+
+00:46:44.160 --> 00:46:46.549 align:start position:0%
+really want to play with it program so
+now<00:46:44.559><c> today</c><00:46:45.079><c> here</c><00:46:45.240><c> I</c><00:46:45.359><c> am</c><00:46:45.800><c> I</c><00:46:45.920><c> go</c><00:46:46.040><c> to</c><00:46:46.119><c> work</c><00:46:46.319><c> every</c>
+
+00:46:46.549 --> 00:46:46.559 align:start position:0%
+now today here I am I go to work every
+
+
+00:46:46.559 --> 00:46:48.750 align:start position:0%
+now today here I am I go to work every
+day<00:46:47.160><c> um</c><00:46:47.599><c> you</c><00:46:47.720><c> know</c><00:46:48.000><c> I</c><00:46:48.119><c> have</c><00:46:48.240><c> to</c><00:46:48.319><c> communicate</c>
+
+00:46:48.750 --> 00:46:48.760 align:start position:0%
+day um you know I have to communicate
+
+
+00:46:48.760 --> 00:46:52.030 align:start position:0%
+day um you know I have to communicate
+with<00:46:48.920><c> people</c><00:46:49.319><c> and</c><00:46:49.760><c> there's</c><00:46:50.760><c> it</c><00:46:51.440><c> and</c><00:46:51.599><c> all</c><00:46:51.839><c> that</c>
+
+00:46:52.030 --> 00:46:52.040 align:start position:0%
+with people and there's it and all that
+
+
+00:46:52.040 --> 00:46:53.710 align:start position:0%
+with people and there's it and all that
+so<00:46:52.520><c> they</c><00:46:52.640><c> want</c><00:46:52.800><c> me</c><00:46:52.920><c> to</c><00:46:53.079><c> have</c><00:46:53.280><c> a</c><00:46:53.400><c> certain</c>
+
+00:46:53.710 --> 00:46:53.720 align:start position:0%
+so they want me to have a certain
+
+
+00:46:53.720 --> 00:46:56.430 align:start position:0%
+so they want me to have a certain
+computer<00:46:54.200><c> so</c><00:46:54.400><c> they</c><00:46:54.680><c> give</c><00:46:54.800><c> me</c><00:46:55.000><c> this</c><00:46:55.319><c> this</c><00:46:55.760><c> uh</c>
+
+00:46:56.430 --> 00:46:56.440 align:start position:0%
+computer so they give me this this uh
+
+
+00:46:56.440 --> 00:46:59.190 align:start position:0%
+computer so they give me this this uh
+Mac<00:46:57.040><c> book</c><00:46:57.240><c> it's</c><00:46:57.359><c> all</c><00:46:57.520><c> right</c><00:46:57.720><c> it's</c><00:46:57.960><c> nice</c><00:46:58.880><c> um</c><00:46:59.079><c> and</c>
+
+00:46:59.190 --> 00:46:59.200 align:start position:0%
+Mac book it's all right it's nice um and
+
+
+00:46:59.200 --> 00:47:02.109 align:start position:0%
+Mac book it's all right it's nice um and
+it's<00:46:59.440><c> powerful</c><00:46:59.920><c> I</c><00:47:00.000><c> can</c><00:47:00.240><c> sit</c><00:47:00.599><c> there</c><00:47:00.839><c> and</c><00:47:01.200><c> run</c><00:47:02.000><c> uh</c>
+
+00:47:02.109 --> 00:47:02.119 align:start position:0%
+it's powerful I can sit there and run uh
+
+
+00:47:02.119 --> 00:47:04.309 align:start position:0%
+it's powerful I can sit there and run uh
+you<00:47:02.200><c> know</c><00:47:02.440><c> jvm</c><00:47:02.880><c> on</c><00:47:03.000><c> it</c><00:47:03.160><c> I</c><00:47:03.280><c> have</c><00:47:03.480><c> five</c><00:47:03.680><c> jvms</c><00:47:04.160><c> up</c>
+
+00:47:04.309 --> 00:47:04.319 align:start position:0%
+you know jvm on it I have five jvms up
+
+
+00:47:04.319 --> 00:47:06.670 align:start position:0%
+you know jvm on it I have five jvms up
+I'm<00:47:04.440><c> doing</c><00:47:04.680><c> this</c><00:47:04.800><c> and</c><00:47:04.960><c> do</c><00:47:05.119><c> with</c><00:47:05.440><c> that</c><00:47:06.440><c> and</c><00:47:06.559><c> it</c>
+
+00:47:06.670 --> 00:47:06.680 align:start position:0%
+I'm doing this and do with that and it
+
+
+00:47:06.680 --> 00:47:08.030 align:start position:0%
+I'm doing this and do with that and it
+doesn't<00:47:06.880><c> blink</c><00:47:07.160><c> an</c><00:47:07.280><c> eye</c><00:47:07.480><c> it</c><00:47:07.559><c> doesn't</c><00:47:07.760><c> break</c><00:47:07.920><c> a</c>
+
+00:47:08.030 --> 00:47:08.040 align:start position:0%
+doesn't blink an eye it doesn't break a
+
+
+00:47:08.040 --> 00:47:10.589 align:start position:0%
+doesn't blink an eye it doesn't break a
+sweat<00:47:08.800><c> and</c><00:47:08.920><c> it's</c><00:47:09.200><c> great</c><00:47:09.520><c> but</c><00:47:09.720><c> the</c><00:47:09.920><c> limitations</c>
+
+00:47:10.589 --> 00:47:10.599 align:start position:0%
+sweat and it's great but the limitations
+
+
+00:47:10.599 --> 00:47:13.190 align:start position:0%
+sweat and it's great but the limitations
+are<00:47:10.880><c> gone</c><00:47:11.520><c> and</c><00:47:11.640><c> that's</c><00:47:11.800><c> not</c><00:47:12.040><c> that</c><00:47:12.240><c> fun</c><00:47:12.960><c> so</c><00:47:13.079><c> when</c>
+
+00:47:13.190 --> 00:47:13.200 align:start position:0%
+are gone and that's not that fun so when
+
+
+00:47:13.200 --> 00:47:15.069 align:start position:0%
+are gone and that's not that fun so when
+the<00:47:13.359><c> day</c><00:47:13.520><c> is</c><00:47:13.680><c> over</c><00:47:14.079><c> I</c><00:47:14.200><c> unplug</c><00:47:14.680><c> that</c><00:47:14.839><c> thing</c><00:47:15.000><c> and</c>
+
+00:47:15.069 --> 00:47:15.079 align:start position:0%
+the day is over I unplug that thing and
+
+
+00:47:15.079 --> 00:47:17.030 align:start position:0%
+the day is over I unplug that thing and
+I<00:47:15.200><c> turn</c><00:47:15.359><c> on</c><00:47:15.480><c> my</c><00:47:15.640><c> Raspberry</c><00:47:16.160><c> Pi</c><00:47:16.720><c> which</c><00:47:16.839><c> is</c>
+
+00:47:17.030 --> 00:47:17.040 align:start position:0%
+I turn on my Raspberry Pi which is
+
+
+00:47:17.040 --> 00:47:20.309 align:start position:0%
+I turn on my Raspberry Pi which is
+awesome<00:47:17.680><c> I</c><00:47:17.760><c> need</c><00:47:17.920><c> to</c><00:47:18.079><c> switch</c><00:47:18.440><c> over</c><00:47:19.119><c> can</c><00:47:19.720><c> uh</c><00:47:19.880><c> you</c>
+
+00:47:20.309 --> 00:47:20.319 align:start position:0%
+awesome I need to switch over can uh you
+
+
+00:47:20.319 --> 00:47:24.230 align:start position:0%
+awesome I need to switch over can uh you
+plug<00:47:20.880><c> that</c><00:47:21.160><c> into</c><00:47:21.680><c> there</c><00:47:22.040><c> I</c><00:47:22.200><c> think</c><00:47:22.760><c> so</c><00:47:23.760><c> we're</c><00:47:24.160><c> g</c>
+
+00:47:24.230 --> 00:47:24.240 align:start position:0%
+plug that into there I think so we're g
+
+
+00:47:24.240 --> 00:47:25.829 align:start position:0%
+plug that into there I think so we're g
+to<00:47:24.400><c> switch</c><00:47:24.720><c> real</c><00:47:24.920><c> quick</c>
+
+00:47:25.829 --> 00:47:25.839 align:start position:0%
+to switch real quick
+
+
+00:47:25.839 --> 00:47:29.670 align:start position:0%
+to switch real quick
+over<00:47:26.920><c> the</c><00:47:27.000><c> Raspberry</c><00:47:27.480><c> Pi</c><00:47:28.440><c> as</c><00:47:28.680><c> they</c><00:47:28.839><c> said</c><00:47:29.319><c> as</c>
+
+00:47:29.670 --> 00:47:29.680 align:start position:0%
+over the Raspberry Pi as they said as
+
+
+00:47:29.680 --> 00:47:31.870 align:start position:0%
+over the Raspberry Pi as they said as
+everyone<00:47:29.920><c> has</c><00:47:30.040><c> mentioned</c><00:47:30.440><c> has</c><00:47:31.000><c> run</c><00:47:31.480><c> several</c>
+
+00:47:31.870 --> 00:47:31.880 align:start position:0%
+everyone has mentioned has run several
+
+
+00:47:31.880 --> 00:47:33.950 align:start position:0%
+everyone has mentioned has run several
+different<00:47:32.200><c> operating</c><00:47:32.520><c> systems</c><00:47:32.880><c> already</c><00:47:33.800><c> um</c>
+
+00:47:33.950 --> 00:47:33.960 align:start position:0%
+different operating systems already um
+
+
+00:47:33.960 --> 00:47:36.990 align:start position:0%
+different operating systems already um
+out<00:47:34.200><c> there</c><00:47:34.319><c> you'll</c><00:47:34.559><c> see</c><00:47:35.240><c> Demian</c><00:47:35.680><c> linit</c><00:47:36.200><c> for</c><00:47:36.400><c> it</c>
+
+00:47:36.990 --> 00:47:37.000 align:start position:0%
+out there you'll see Demian linit for it
+
+
+00:47:37.000 --> 00:47:38.630 align:start position:0%
+out there you'll see Demian linit for it
+uh<00:47:37.079><c> you'll</c><00:47:37.240><c> see</c><00:47:37.400><c> arch</c><00:47:37.680><c> linit</c><00:47:38.040><c> for</c><00:47:38.200><c> it</c><00:47:38.400><c> which</c>
+
+00:47:38.630 --> 00:47:38.640 align:start position:0%
+uh you'll see arch linit for it which
+
+
+00:47:38.640 --> 00:47:41.309 align:start position:0%
+uh you'll see arch linit for it which
+I'm<00:47:38.880><c> running</c><00:47:39.280><c> right</c><00:47:39.440><c> here</c><00:47:40.119><c> uh</c><00:47:40.240><c> you'll</c><00:47:40.440><c> see</c><00:47:41.160><c> uh</c>
+
+00:47:41.309 --> 00:47:41.319 align:start position:0%
+I'm running right here uh you'll see uh
+
+
+00:47:41.319 --> 00:47:43.750 align:start position:0%
+I'm running right here uh you'll see uh
+plan<00:47:41.640><c> nine</c><00:47:42.160><c> for</c><00:47:42.400><c> it</c><00:47:42.599><c> which</c><00:47:42.720><c> is</c><00:47:43.079><c> awesome</c><00:47:43.559><c> in</c>
+
+00:47:43.750 --> 00:47:43.760 align:start position:0%
+plan nine for it which is awesome in
+
+
+00:47:43.760 --> 00:47:45.870 align:start position:0%
+plan nine for it which is awesome in
+Fondo<00:47:44.240><c> run</c><00:47:44.920><c> uh</c><00:47:45.000><c> someone's</c><00:47:45.280><c> working</c><00:47:45.480><c> on</c><00:47:45.640><c> high</c>
+
+00:47:45.870 --> 00:47:45.880 align:start position:0%
+Fondo run uh someone's working on high
+
+
+00:47:45.880 --> 00:47:47.990 align:start position:0%
+Fondo run uh someone's working on high
+coup<00:47:46.079><c> for</c><00:47:46.280><c> it</c><00:47:46.520><c> which</c><00:47:46.720><c> when</c><00:47:46.920><c> that</c><00:47:47.599><c> you</c><00:47:47.720><c> know</c><00:47:47.920><c> I</c>
+
+00:47:47.990 --> 00:47:48.000 align:start position:0%
+coup for it which when that you know I
+
+
+00:47:48.000 --> 00:47:49.510 align:start position:0%
+coup for it which when that you know I
+know<00:47:48.119><c> this</c><00:47:48.240><c> is</c><00:47:48.359><c> liit</c><00:47:48.640><c> users</c><00:47:48.880><c> group</c><00:47:49.280><c> but</c><00:47:49.400><c> when</c>
+
+00:47:49.510 --> 00:47:49.520 align:start position:0%
+know this is liit users group but when
+
+
+00:47:49.520 --> 00:47:51.390 align:start position:0%
+know this is liit users group but when
+high<00:47:49.720><c> coup</c><00:47:49.880><c> for</c><00:47:50.160><c> comes</c><00:47:50.359><c> out</c><00:47:50.880><c> there</c><00:47:50.960><c> is</c><00:47:51.160><c> nothing</c>
+
+00:47:51.390 --> 00:47:51.400 align:start position:0%
+high coup for comes out there is nothing
+
+
+00:47:51.400 --> 00:47:52.510 align:start position:0%
+high coup for comes out there is nothing
+that's<00:47:51.559><c> going</c><00:47:51.680><c> to</c><00:47:51.800><c> stop</c><00:47:52.000><c> me</c><00:47:52.119><c> from</c><00:47:52.280><c> playing</c>
+
+00:47:52.510 --> 00:47:52.520 align:start position:0%
+that's going to stop me from playing
+
+
+00:47:52.520 --> 00:47:53.950 align:start position:0%
+that's going to stop me from playing
+with<00:47:52.680><c> that</c>
+
+00:47:53.950 --> 00:47:53.960 align:start position:0%
+with that
+
+
+00:47:53.960 --> 00:47:57.309 align:start position:0%
+with that
+247<00:47:54.960><c> there</c><00:47:55.040><c> we</c><00:47:55.200><c> are</c><00:47:55.800><c> awesome</c><00:47:56.520><c> so</c><00:47:57.040><c> I'm</c><00:47:57.119><c> going</c><00:47:57.200><c> to</c>
+
+00:47:57.309 --> 00:47:57.319 align:start position:0%
+247 there we are awesome so I'm going to
+
+
+00:47:57.319 --> 00:48:01.030 align:start position:0%
+247 there we are awesome so I'm going to
+show<00:47:57.520><c> you</c><00:47:57.800><c> guys</c><00:47:58.480><c> how</c><00:47:59.160><c> exciting</c><00:48:00.079><c> and</c><00:48:00.520><c> limited</c>
+
+00:48:01.030 --> 00:48:01.040 align:start position:0%
+show you guys how exciting and limited
+
+
+00:48:01.040 --> 00:48:04.470 align:start position:0%
+show you guys how exciting and limited
+this<00:48:01.359><c> little</c><00:48:01.680><c> machine</c><00:48:02.160><c> is</c><00:48:03.160><c> so</c><00:48:03.640><c> cool</c><00:48:03.960><c> here</c><00:48:04.119><c> I</c><00:48:04.240><c> am</c>
+
+00:48:04.470 --> 00:48:04.480 align:start position:0%
+this little machine is so cool here I am
+
+
+00:48:04.480 --> 00:48:06.190 align:start position:0%
+this little machine is so cool here I am
+this<00:48:04.559><c> is</c><00:48:04.720><c> my</c><00:48:04.880><c> raspberry</c><00:48:05.280><c> Prim</c><00:48:05.480><c> machine</c><00:48:05.920><c> it's</c>
+
+00:48:06.190 --> 00:48:06.200 align:start position:0%
+this is my raspberry Prim machine it's
+
+
+00:48:06.200 --> 00:48:09.750 align:start position:0%
+this is my raspberry Prim machine it's
+running<00:48:07.000><c> um</c><00:48:07.280><c> the</c><00:48:07.480><c> awesome</c><00:48:08.040><c> Window</c><00:48:08.640><c> Manager</c><00:48:09.640><c> uh</c>
+
+00:48:09.750 --> 00:48:09.760 align:start position:0%
+running um the awesome Window Manager uh
+
+
+00:48:09.760 --> 00:48:12.150 align:start position:0%
+running um the awesome Window Manager uh
+which<00:48:09.880><c> you</c><00:48:10.000><c> may</c><00:48:10.119><c> have</c><00:48:10.240><c> heard</c><00:48:10.559><c> of</c><00:48:11.559><c> and</c><00:48:11.680><c> I'm</c><00:48:11.760><c> GNA</c>
+
+00:48:12.150 --> 00:48:12.160 align:start position:0%
+which you may have heard of and I'm GNA
+
+
+00:48:12.160 --> 00:48:15.470 align:start position:0%
+which you may have heard of and I'm GNA
+start<00:48:12.440><c> a</c><00:48:12.599><c> terminal</c><00:48:13.119><c> here</c><00:48:14.000><c> so</c><00:48:14.880><c> how</c><00:48:15.079><c> would</c><00:48:15.280><c> you</c>
+
+00:48:15.470 --> 00:48:15.480 align:start position:0%
+start a terminal here so how would you
+
+
+00:48:15.480 --> 00:48:17.630 align:start position:0%
+start a terminal here so how would you
+develop<00:48:15.920><c> on</c><00:48:16.040><c> a</c><00:48:16.200><c> machine</c><00:48:16.599><c> like</c><00:48:16.800><c> this</c><00:48:17.119><c> where</c><00:48:17.559><c> you</c>
+
+00:48:17.630 --> 00:48:17.640 align:start position:0%
+develop on a machine like this where you
+
+
+00:48:17.640 --> 00:48:19.309 align:start position:0%
+develop on a machine like this where you
+know<00:48:17.880><c> it</c><00:48:18.000><c> is</c><00:48:18.200><c> pretty</c><00:48:18.400><c> slow</c><00:48:18.800><c> I'm</c><00:48:18.880><c> going</c><00:48:18.960><c> to</c><00:48:19.119><c> type</c>
+
+00:48:19.309 --> 00:48:19.319 align:start position:0%
+know it is pretty slow I'm going to type
+
+
+00:48:19.319 --> 00:48:21.670 align:start position:0%
+know it is pretty slow I'm going to type
+LS<00:48:20.160><c> and</c><00:48:20.280><c> you're</c><00:48:20.400><c> going</c><00:48:20.520><c> to</c><00:48:20.599><c> see</c><00:48:21.160><c> it</c><00:48:21.359><c> actually</c>
+
+00:48:21.670 --> 00:48:21.680 align:start position:0%
+LS and you're going to see it actually
+
+
+00:48:21.680 --> 00:48:23.990 align:start position:0%
+LS and you're going to see it actually
+takes<00:48:22.240><c> well</c><00:48:22.440><c> it</c><00:48:22.520><c> didn't</c><00:48:22.680><c> take</c><00:48:22.839><c> that</c><00:48:23.000><c> long</c><00:48:23.280><c> but</c>
+
+00:48:23.990 --> 00:48:24.000 align:start position:0%
+takes well it didn't take that long but
+
+
+00:48:24.000 --> 00:48:26.150 align:start position:0%
+takes well it didn't take that long but
+um<00:48:25.000><c> once</c><00:48:25.200><c> I</c><00:48:25.319><c> get</c><00:48:25.400><c> a</c><00:48:25.520><c> couple</c><00:48:25.680><c> of</c><00:48:25.800><c> things</c><00:48:25.960><c> going</c>
+
+00:48:26.150 --> 00:48:26.160 align:start position:0%
+um once I get a couple of things going
+
+
+00:48:26.160 --> 00:48:27.549 align:start position:0%
+um once I get a couple of things going
+you're<00:48:26.240><c> going</c><00:48:26.319><c> to</c><00:48:26.400><c> see</c><00:48:26.520><c> it</c><00:48:26.920><c> slow</c><00:48:27.079><c> to</c><00:48:27.200><c> draw</c><00:48:27.440><c> the</c>
+
+00:48:27.549 --> 00:48:27.559 align:start position:0%
+you're going to see it slow to draw the
+
+
+00:48:27.559 --> 00:48:30.190 align:start position:0%
+you're going to see it slow to draw the
+screen<00:48:28.440><c> so</c><00:48:28.680><c> what</c><00:48:28.800><c> would</c><00:48:28.960><c> I</c><00:48:29.160><c> do</c><00:48:29.359><c> in</c><00:48:29.520><c> this</c><00:48:29.760><c> case</c>
+
+00:48:30.190 --> 00:48:30.200 align:start position:0%
+screen so what would I do in this case
+
+
+00:48:30.200 --> 00:48:32.309 align:start position:0%
+screen so what would I do in this case
+well<00:48:31.040><c> there's</c><00:48:31.200><c> a</c><00:48:31.280><c> couple</c><00:48:31.520><c> of</c><00:48:31.680><c> things</c><00:48:32.160><c> the</c>
+
+00:48:32.309 --> 00:48:32.319 align:start position:0%
+well there's a couple of things the
+
+
+00:48:32.319 --> 00:48:34.190 align:start position:0%
+well there's a couple of things the
+thing<00:48:32.559><c> that</c>
+
+00:48:34.190 --> 00:48:34.200 align:start position:0%
+thing that
+
+
+00:48:34.200 --> 00:48:38.030 align:start position:0%
+thing that
+I<00:48:35.200><c> have</c><00:48:35.400><c> been</c><00:48:35.599><c> doing</c><00:48:35.880><c> the</c><00:48:36.040><c> most</c><00:48:36.599><c> is</c><00:48:36.760><c> using</c><00:48:37.359><c> very</c>
+
+00:48:38.030 --> 00:48:38.040 align:start position:0%
+I have been doing the most is using very
+
+
+00:48:38.040 --> 00:48:41.390 align:start position:0%
+I have been doing the most is using very
+limited<00:48:38.960><c> tools</c><00:48:39.960><c> um</c><00:48:40.400><c> that</c><00:48:40.520><c> sort</c><00:48:40.720><c> of</c><00:48:40.839><c> remind</c><00:48:41.160><c> me</c>
+
+00:48:41.390 --> 00:48:41.400 align:start position:0%
+limited tools um that sort of remind me
+
+
+00:48:41.400 --> 00:48:43.549 align:start position:0%
+limited tools um that sort of remind me
+of<00:48:41.559><c> the</c><00:48:41.800><c> past</c>
+
+00:48:43.549 --> 00:48:43.559 align:start position:0%
+of the past
+
+
+00:48:43.559 --> 00:48:46.430 align:start position:0%
+of the past
+so<00:48:44.559><c> has</c><00:48:44.720><c> anyone</c><00:48:45.000><c> in</c><00:48:45.119><c> here</c><00:48:45.280><c> ever</c><00:48:45.480><c> heard</c><00:48:45.839><c> of</c><00:48:46.160><c> the</c>
+
+00:48:46.430 --> 00:48:46.440 align:start position:0%
+so has anyone in here ever heard of the
+
+
+00:48:46.440 --> 00:48:47.950 align:start position:0%
+so has anyone in here ever heard of the
+suckless
+
+00:48:47.950 --> 00:48:47.960 align:start position:0%
+suckless
+
+
+00:48:47.960 --> 00:48:50.430 align:start position:0%
+suckless
+tools<00:48:48.960><c> we</c><00:48:49.200><c> got</c><00:48:49.440><c> someone</c><00:48:49.799><c> right</c><00:48:49.920><c> here</c><00:48:50.119><c> who's</c>
+
+00:48:50.430 --> 00:48:50.440 align:start position:0%
+tools we got someone right here who's
+
+
+00:48:50.440 --> 00:48:54.150 align:start position:0%
+tools we got someone right here who's
+who's<00:48:50.680><c> great</c><00:48:51.520><c> um</c><00:48:52.480><c> so</c><00:48:52.880><c> you</c><00:48:53.000><c> know</c><00:48:53.680><c> it's</c><00:48:53.799><c> sort</c><00:48:53.960><c> of</c>
+
+00:48:54.150 --> 00:48:54.160 align:start position:0%
+who's great um so you know it's sort of
+
+
+00:48:54.160 --> 00:48:56.390 align:start position:0%
+who's great um so you know it's sort of
+this<00:48:54.400><c> this</c><00:48:54.599><c> group</c><00:48:54.839><c> of</c><00:48:55.240><c> uh</c><00:48:55.400><c> people</c><00:48:55.720><c> who</c><00:48:56.160><c> make</c>
+
+00:48:56.390 --> 00:48:56.400 align:start position:0%
+this this group of uh people who make
+
+
+00:48:56.400 --> 00:49:00.030 align:start position:0%
+this this group of uh people who make
+tool<00:48:57.079><c> that</c><00:48:57.200><c> are</c><00:48:58.040><c> uh</c><00:48:58.839><c> very</c><00:48:59.160><c> very</c><00:48:59.480><c> focused</c><00:48:59.880><c> on</c>
+
+00:49:00.030 --> 00:49:00.040 align:start position:0%
+tool that are uh very very focused on
+
+
+00:49:00.040 --> 00:49:01.950 align:start position:0%
+tool that are uh very very focused on
+doing<00:49:00.319><c> one</c><00:49:00.559><c> thing</c><00:49:00.799><c> for</c><00:49:01.000><c> example</c><00:49:01.359><c> this</c><00:49:01.559><c> browser</c>
+
+00:49:01.950 --> 00:49:01.960 align:start position:0%
+doing one thing for example this browser
+
+
+00:49:01.960 --> 00:49:04.910 align:start position:0%
+doing one thing for example this browser
+right<00:49:02.119><c> here</c><00:49:02.400><c> is</c><00:49:02.599><c> a</c><00:49:02.920><c> uh</c><00:49:03.280><c> webkit</c><00:49:03.760><c> browser</c><00:49:04.319><c> but</c>
+
+00:49:04.910 --> 00:49:04.920 align:start position:0%
+right here is a uh webkit browser but
+
+
+00:49:04.920 --> 00:49:07.230 align:start position:0%
+right here is a uh webkit browser but
+you<00:49:05.160><c> can't</c><00:49:05.520><c> even</c><00:49:05.880><c> go</c><00:49:06.040><c> to</c><00:49:06.200><c> another</c><00:49:06.480><c> web</c><00:49:06.680><c> page</c>
+
+00:49:07.230 --> 00:49:07.240 align:start position:0%
+you can't even go to another web page
+
+
+00:49:07.240 --> 00:49:08.710 align:start position:0%
+you can't even go to another web page
+you<00:49:07.559><c> besides</c><00:49:07.839><c> clicking</c><00:49:08.079><c> on</c><00:49:08.200><c> links</c><00:49:08.480><c> you</c><00:49:08.599><c> just</c>
+
+00:49:08.710 --> 00:49:08.720 align:start position:0%
+you besides clicking on links you just
+
+
+00:49:08.720 --> 00:49:12.030 align:start position:0%
+you besides clicking on links you just
+start<00:49:08.920><c> it</c><00:49:09.040><c> and</c><00:49:09.200><c> that's</c><00:49:09.359><c> all</c><00:49:09.480><c> you</c><00:49:09.680><c> get</c><00:49:10.799><c> um</c><00:49:11.799><c> so</c>
+
+00:49:12.030 --> 00:49:12.040 align:start position:0%
+start it and that's all you get um so
+
+
+00:49:12.040 --> 00:49:14.910 align:start position:0%
+start it and that's all you get um so
+that's<00:49:12.160><c> what</c><00:49:12.319><c> I</c><00:49:12.440><c> use</c><00:49:13.119><c> and</c><00:49:13.240><c> it's</c><00:49:13.440><c> awesome</c>
+
+00:49:14.910 --> 00:49:14.920 align:start position:0%
+that's what I use and it's awesome
+
+
+00:49:14.920 --> 00:49:18.829 align:start position:0%
+that's what I use and it's awesome
+um<00:49:15.920><c> uh</c><00:49:16.040><c> you</c><00:49:16.160><c> know</c><00:49:16.960><c> in</c><00:49:17.160><c> fact</c><00:49:17.760><c> one</c><00:49:17.880><c> of</c><00:49:18.040><c> them</c><00:49:18.599><c> said</c>
+
+00:49:18.829 --> 00:49:18.839 align:start position:0%
+um uh you know in fact one of them said
+
+
+00:49:18.839 --> 00:49:20.549 align:start position:0%
+um uh you know in fact one of them said
+something<00:49:19.119><c> recently</c><00:49:19.520><c> about</c><00:49:19.720><c> ET</c><00:49:20.000><c> term</c><00:49:20.280><c> and</c><00:49:20.400><c> how</c>
+
+00:49:20.549 --> 00:49:20.559 align:start position:0%
+something recently about ET term and how
+
+
+00:49:20.559 --> 00:49:22.950 align:start position:0%
+something recently about ET term and how
+X<00:49:20.799><c> term</c><00:49:21.200><c> is</c><00:49:21.440><c> bloated</c><00:49:22.119><c> it's</c><00:49:22.240><c> a</c><00:49:22.359><c> bloated</c><00:49:22.799><c> piece</c>
+
+00:49:22.950 --> 00:49:22.960 align:start position:0%
+X term is bloated it's a bloated piece
+
+
+00:49:22.960 --> 00:49:25.910 align:start position:0%
+X term is bloated it's a bloated piece
+of<00:49:23.359><c> software</c><00:49:24.359><c> so</c><00:49:25.000><c> I</c><00:49:25.119><c> read</c><00:49:25.319><c> that</c><00:49:25.520><c> I</c><00:49:25.640><c> thought</c>
+
+00:49:25.910 --> 00:49:25.920 align:start position:0%
+of software so I read that I thought
+
+
+00:49:25.920 --> 00:49:27.349 align:start position:0%
+of software so I read that I thought
+well<00:49:26.200><c> you</c><00:49:26.319><c> know</c><00:49:26.760><c> I'm</c><00:49:26.880><c> working</c><00:49:27.119><c> on</c><00:49:27.240><c> my</c>
+
+00:49:27.349 --> 00:49:27.359 align:start position:0%
+well you know I'm working on my
+
+
+00:49:27.359 --> 00:49:28.789 align:start position:0%
+well you know I'm working on my
+Raspberry<00:49:27.799><c> Pi</c><00:49:28.000><c> I</c><00:49:28.040><c> don't</c><00:49:28.119><c> want</c><00:49:28.200><c> to</c><00:49:28.280><c> blo</c><00:49:28.520><c> a</c><00:49:28.640><c> piece</c>
+
+00:49:28.789 --> 00:49:28.799 align:start position:0%
+Raspberry Pi I don't want to blo a piece
+
+
+00:49:28.799 --> 00:49:29.549 align:start position:0%
+Raspberry Pi I don't want to blo a piece
+of
+
+00:49:29.549 --> 00:49:29.559 align:start position:0%
+of
+
+
+00:49:29.559 --> 00:49:32.870 align:start position:0%
+of
+software<00:49:30.559><c> so</c><00:49:30.720><c> I</c><00:49:30.839><c> look</c><00:49:31.040><c> to</c><00:49:31.160><c> see</c><00:49:32.119><c> what</c><00:49:32.520><c> they</c><00:49:32.720><c> had</c>
+
+00:49:32.870 --> 00:49:32.880 align:start position:0%
+software so I look to see what they had
+
+
+00:49:32.880 --> 00:49:34.750 align:start position:0%
+software so I look to see what they had
+as<00:49:33.000><c> an</c><00:49:33.160><c> alternative</c><00:49:33.920><c> and</c><00:49:34.079><c> what</c><00:49:34.240><c> they</c><00:49:34.400><c> had</c><00:49:34.559><c> was</c>
+
+00:49:34.750 --> 00:49:34.760 align:start position:0%
+as an alternative and what they had was
+
+
+00:49:34.760 --> 00:49:37.230 align:start position:0%
+as an alternative and what they had was
+something<00:49:35.000><c> called</c><00:49:35.200><c> Simple</c><00:49:35.559><c> term</c><00:49:36.400><c> or</c><00:49:36.599><c> or</c><00:49:36.839><c> St</c>
+
+00:49:37.230 --> 00:49:37.240 align:start position:0%
+something called Simple term or or St
+
+
+00:49:37.240 --> 00:49:39.910 align:start position:0%
+something called Simple term or or St
+for<00:49:37.480><c> short</c><00:49:38.480><c> um</c><00:49:38.839><c> and</c><00:49:38.960><c> we're</c><00:49:39.079><c> gonna</c><00:49:39.440><c> we're</c><00:49:39.559><c> gonna</c>
+
+00:49:39.910 --> 00:49:39.920 align:start position:0%
+for short um and we're gonna we're gonna
+
+
+00:49:39.920 --> 00:49:42.109 align:start position:0%
+for short um and we're gonna we're gonna
+develop<00:49:40.359><c> that</c><00:49:40.720><c> right</c><00:49:40.880><c> now</c><00:49:41.200><c> so</c><00:49:41.599><c> one</c><00:49:41.720><c> of</c><00:49:41.880><c> their</c>
+
+00:49:42.109 --> 00:49:42.119 align:start position:0%
+develop that right now so one of their
+
+
+00:49:42.119 --> 00:49:44.430 align:start position:0%
+develop that right now so one of their
+philosophies<00:49:42.799><c> is</c><00:49:42.920><c> that</c><00:49:43.119><c> configuration</c><00:49:43.720><c> files</c>
+
+00:49:44.430 --> 00:49:44.440 align:start position:0%
+philosophies is that configuration files
+
+
+00:49:44.440 --> 00:49:47.750 align:start position:0%
+philosophies is that configuration files
+are<00:49:44.599><c> sort</c><00:49:44.760><c> of</c><00:49:44.960><c> bunk</c><00:49:45.960><c> um</c><00:49:46.920><c> you</c><00:49:47.040><c> know</c><00:49:47.400><c> reading</c>
+
+00:49:47.750 --> 00:49:47.760 align:start position:0%
+are sort of bunk um you know reading
+
+
+00:49:47.760 --> 00:49:49.390 align:start position:0%
+are sort of bunk um you know reading
+configuration<00:49:48.319><c> files</c><00:49:48.640><c> just</c><00:49:48.760><c> takes</c><00:49:49.040><c> up</c><00:49:49.200><c> more</c>
+
+00:49:49.390 --> 00:49:49.400 align:start position:0%
+configuration files just takes up more
+
+
+00:49:49.400 --> 00:49:51.309 align:start position:0%
+configuration files just takes up more
+memory<00:49:49.720><c> and</c><00:49:49.839><c> more</c><00:49:50.040><c> room</c><00:49:50.799><c> why</c><00:49:50.920><c> don't</c><00:49:51.040><c> you</c><00:49:51.160><c> just</c>
+
+00:49:51.309 --> 00:49:51.319 align:start position:0%
+memory and more room why don't you just
+
+
+00:49:51.319 --> 00:49:53.789 align:start position:0%
+memory and more room why don't you just
+edit<00:49:51.520><c> the</c><00:49:51.640><c> code</c><00:49:51.880><c> and</c><00:49:52.000><c> then</c><00:49:52.359><c> recompile</c><00:49:52.880><c> it</c><00:49:53.280><c> so</c>
+
+00:49:53.789 --> 00:49:53.799 align:start position:0%
+edit the code and then recompile it so
+
+
+00:49:53.799 --> 00:49:55.030 align:start position:0%
+edit the code and then recompile it so
+you<00:49:53.960><c> guys</c><00:49:54.079><c> are</c><00:49:54.319><c> probably</c><00:49:54.640><c> having</c><00:49:54.880><c> some</c>
+
+00:49:55.030 --> 00:49:55.040 align:start position:0%
+you guys are probably having some
+
+
+00:49:55.040 --> 00:49:57.190 align:start position:0%
+you guys are probably having some
+trouble<00:49:55.319><c> seeing</c><00:49:55.720><c> that</c><00:49:56.000><c> back</c><00:49:56.280><c> there</c><00:49:57.079><c> uh</c>
+
+00:49:57.190 --> 00:49:57.200 align:start position:0%
+trouble seeing that back there uh
+
+
+00:49:57.200 --> 00:49:59.270 align:start position:0%
+trouble seeing that back there uh
+because<00:49:57.440><c> the</c><00:49:57.599><c> font</c><00:49:57.880><c> isn't</c><00:49:58.200><c> very</c><00:49:58.480><c> big</c><00:49:59.040><c> well</c><00:49:59.200><c> you</c>
+
+00:49:59.270 --> 00:49:59.280 align:start position:0%
+because the font isn't very big well you
+
+
+00:49:59.280 --> 00:50:00.990 align:start position:0%
+because the font isn't very big well you
+can<00:49:59.520><c> guess</c><00:49:59.760><c> what</c><00:49:59.920><c> simple</c><00:50:00.280><c> terminal</c><00:50:00.720><c> doesn't</c>
+
+00:50:00.990 --> 00:50:01.000 align:start position:0%
+can guess what simple terminal doesn't
+
+
+00:50:01.000 --> 00:50:04.270 align:start position:0%
+can guess what simple terminal doesn't
+have<00:50:01.200><c> a</c><00:50:01.319><c> way</c><00:50:01.440><c> to</c><00:50:01.720><c> increase</c><00:50:02.079><c> the</c><00:50:02.200><c> font</c><00:50:02.520><c> size</c><00:50:03.520><c> so</c>
+
+00:50:04.270 --> 00:50:04.280 align:start position:0%
+have a way to increase the font size so
+
+
+00:50:04.280 --> 00:50:06.030 align:start position:0%
+have a way to increase the font size so
+let's<00:50:04.520><c> do</c><00:50:04.839><c> that</c><00:50:05.000><c> so</c><00:50:05.160><c> you</c><00:50:05.280><c> guys</c><00:50:05.440><c> can</c><00:50:05.599><c> read</c><00:50:05.839><c> this</c>
+
+00:50:06.030 --> 00:50:06.040 align:start position:0%
+let's do that so you guys can read this
+
+
+00:50:06.040 --> 00:50:10.030 align:start position:0%
+let's do that so you guys can read this
+better<00:50:07.079><c> so</c><00:50:08.079><c> I</c><00:50:08.240><c> use</c><00:50:08.839><c> them</c><00:50:09.240><c> on</c><00:50:09.559><c> here</c><00:50:09.920><c> I'm</c>
+
+00:50:10.030 --> 00:50:10.040 align:start position:0%
+better so I use them on here I'm
+
+
+00:50:10.040 --> 00:50:11.829 align:start position:0%
+better so I use them on here I'm
+normally<00:50:10.359><c> an</c><00:50:10.520><c> emac</c><00:50:11.079><c> guy</c><00:50:11.319><c> but</c><00:50:11.440><c> you</c><00:50:11.520><c> should</c><00:50:11.680><c> see</c>
+
+00:50:11.829 --> 00:50:11.839 align:start position:0%
+normally an emac guy but you should see
+
+
+00:50:11.839 --> 00:50:15.630 align:start position:0%
+normally an emac guy but you should see
+how<00:50:11.920><c> long</c><00:50:12.119><c> emx</c><00:50:12.440><c> takes</c><00:50:12.680><c> to</c><00:50:12.799><c> start</c>
+
+00:50:15.630 --> 00:50:15.640 align:start position:0%
+
+
+
+00:50:15.640 --> 00:50:20.069 align:start position:0%
+
+um<00:50:16.640><c> it's</c><00:50:16.960><c> it's</c><00:50:17.160><c> pretty</c><00:50:17.400><c> cool</c><00:50:17.880><c> um</c><00:50:18.520><c> why</c><00:50:18.680><c> not</c><00:50:19.640><c> so</c>
+
+00:50:20.069 --> 00:50:20.079 align:start position:0%
+um it's it's pretty cool um why not so
+
+
+00:50:20.079 --> 00:50:23.109 align:start position:0%
+um it's it's pretty cool um why not so
+that's<00:50:20.240><c> a</c><00:50:20.400><c> great</c><00:50:20.839><c> question</c><00:50:21.839><c> um</c><00:50:22.720><c> so</c><00:50:22.920><c> you</c><00:50:23.040><c> know</c>
+
+00:50:23.109 --> 00:50:23.119 align:start position:0%
+that's a great question um so you know
+
+
+00:50:23.119 --> 00:50:25.069 align:start position:0%
+that's a great question um so you know
+we're<00:50:23.280><c> running</c><00:50:23.599><c> over</c><00:50:23.839><c> here</c><00:50:24.400><c> uh</c><00:50:24.799><c> it</c><00:50:24.880><c> used</c><00:50:25.040><c> to</c>
+
+00:50:25.069 --> 00:50:25.079 align:start position:0%
+we're running over here uh it used to
+
+
+00:50:25.079 --> 00:50:26.670 align:start position:0%
+we're running over here uh it used to
+not<00:50:25.240><c> be</c><00:50:25.359><c> anti-</c><00:50:25.640><c> alist</c><00:50:26.040><c> but</c><00:50:26.119><c> I</c><00:50:26.200><c> added</c><00:50:26.440><c> that</c>
+
+00:50:26.670 --> 00:50:26.680 align:start position:0%
+not be anti- alist but I added that
+
+
+00:50:26.680 --> 00:50:28.270 align:start position:0%
+not be anti- alist but I added that
+we're<00:50:26.799><c> running</c><00:50:27.000><c> with</c><00:50:27.119><c> only</c><00:50:27.280><c> a</c><00:50:27.400><c> pistol</c><00:50:27.720><c> size</c><00:50:28.040><c> of</c>
+
+00:50:28.270 --> 00:50:28.280 align:start position:0%
+we're running with only a pistol size of
+
+
+00:50:28.280 --> 00:50:31.670 align:start position:0%
+we're running with only a pistol size of
+of<00:50:28.440><c> 18</c><00:50:28.839><c> and</c><00:50:29.000><c> that's</c><00:50:29.200><c> just</c><00:50:29.359><c> not</c><00:50:29.720><c> enough</c><00:50:30.720><c> so</c><00:50:31.359><c> um</c>
+
+00:50:31.670 --> 00:50:31.680 align:start position:0%
+of 18 and that's just not enough so um
+
+
+00:50:31.680 --> 00:50:33.870 align:start position:0%
+of 18 and that's just not enough so um
+let's<00:50:31.960><c> move</c><00:50:32.280><c> forward</c><00:50:32.640><c> to</c>
+
+00:50:33.870 --> 00:50:33.880 align:start position:0%
+let's move forward to
+
+
+00:50:33.880 --> 00:50:37.069 align:start position:0%
+let's move forward to
+that<00:50:34.880><c> and</c><00:50:35.480><c> change</c><00:50:36.000><c> that</c><00:50:36.240><c> over</c>
+
+00:50:37.069 --> 00:50:37.079 align:start position:0%
+that and change that over
+
+
+00:50:37.079 --> 00:50:41.750 align:start position:0%
+that and change that over
+to<00:50:38.160><c> 36</c><00:50:39.160><c> that's</c><00:50:39.440><c> what</c><00:50:39.559><c> I</c><00:50:39.680><c> was</c><00:50:39.799><c> about</c><00:50:39.960><c> to</c><00:50:40.160><c> say</c><00:50:41.160><c> 36</c>
+
+00:50:41.750 --> 00:50:41.760 align:start position:0%
+to 36 that's what I was about to say 36
+
+
+00:50:41.760 --> 00:50:45.109 align:start position:0%
+to 36 that's what I was about to say 36
+there<00:50:41.880><c> we</c><00:50:42.040><c> are</c><00:50:42.680><c> cool</c><00:50:43.200><c> cool</c><00:50:43.520><c> here</c><00:50:43.680><c> we</c><00:50:43.799><c> are</c><00:50:44.440><c> now</c>
+
+00:50:45.109 --> 00:50:45.119 align:start position:0%
+there we are cool cool here we are now
+
+
+00:50:45.119 --> 00:50:48.789 align:start position:0%
+there we are cool cool here we are now
+let's<00:50:45.359><c> just</c><00:50:45.559><c> run</c><00:50:45.799><c> a</c>
+
+00:50:48.789 --> 00:50:48.799 align:start position:0%
+
+
+
+00:50:48.799 --> 00:50:52.470 align:start position:0%
+
+make<00:50:49.799><c> whoa</c><00:50:50.240><c> oh</c><00:50:50.520><c> yeah</c><00:50:51.200><c> so</c><00:50:51.599><c> Raspberry</c><00:50:52.119><c> Pi</c><00:50:52.359><c> does</c>
+
+00:50:52.470 --> 00:50:52.480 align:start position:0%
+make whoa oh yeah so Raspberry Pi does
+
+
+00:50:52.480 --> 00:50:54.549 align:start position:0%
+make whoa oh yeah so Raspberry Pi does
+not<00:50:52.640><c> have</c><00:50:52.720><c> an</c><00:50:52.839><c> onboard</c><00:50:53.280><c> clock</c><00:50:53.839><c> which</c><00:50:54.000><c> is</c><00:50:54.440><c> which</c>
+
+00:50:54.549 --> 00:50:54.559 align:start position:0%
+not have an onboard clock which is which
+
+
+00:50:54.559 --> 00:50:57.190 align:start position:0%
+not have an onboard clock which is which
+is<00:50:54.760><c> cool</c><00:50:55.760><c> um</c>
+
+00:50:57.190 --> 00:50:57.200 align:start position:0%
+is cool um
+
+
+00:50:57.200 --> 00:51:00.750 align:start position:0%
+is cool um
+it<00:50:57.319><c> runs</c><00:50:57.680><c> out</c><00:50:58.520><c> so</c><00:50:59.000><c> uh</c><00:50:59.160><c> I</c><00:50:59.359><c> never</c><00:50:59.680><c> remember</c><00:51:00.200><c> how</c>
+
+00:51:00.750 --> 00:51:00.760 align:start position:0%
+it runs out so uh I never remember how
+
+
+00:51:00.760 --> 00:51:04.670 align:start position:0%
+it runs out so uh I never remember how
+to<00:51:01.760><c> uh</c><00:51:01.960><c> do</c><00:51:02.240><c> this</c><00:51:02.480><c> but</c><00:51:02.599><c> I'm</c><00:51:02.760><c> gonna</c>
+
+00:51:04.670 --> 00:51:04.680 align:start position:0%
+to uh do this but I'm gonna
+
+
+00:51:04.680 --> 00:51:07.750 align:start position:0%
+to uh do this but I'm gonna
+um<00:51:05.680><c> yeah</c>
+
+00:51:07.750 --> 00:51:07.760 align:start position:0%
+um yeah
+
+
+00:51:07.760 --> 00:51:11.349 align:start position:0%
+um yeah
+yeah<00:51:08.760><c> oh</c><00:51:09.040><c> make</c><00:51:09.680><c> oh</c><00:51:09.839><c> it</c><00:51:09.920><c> did</c><00:51:10.160><c> work</c><00:51:10.400><c> it</c><00:51:10.520><c> just</c><00:51:10.920><c> did</c>
+
+00:51:11.349 --> 00:51:11.359 align:start position:0%
+yeah oh make oh it did work it just did
+
+
+00:51:11.359 --> 00:51:16.069 align:start position:0%
+yeah oh make oh it did work it just did
+yeah<00:51:11.559><c> yeah</c><00:51:12.119><c> so</c>
+
+00:51:16.069 --> 00:51:16.079 align:start position:0%
+
+
+
+00:51:16.079 --> 00:51:18.510 align:start position:0%
+
+um<00:51:17.079><c> oh</c><00:51:17.319><c> yeah</c><00:51:17.599><c> it</c><00:51:17.680><c> did</c><00:51:17.839><c> not</c><00:51:18.000><c> work</c><00:51:18.200><c> I</c><00:51:18.280><c> just</c><00:51:18.400><c> have</c>
+
+00:51:18.510 --> 00:51:18.520 align:start position:0%
+um oh yeah it did not work I just have
+
+
+00:51:18.520 --> 00:51:19.870 align:start position:0%
+um oh yeah it did not work I just have
+to<00:51:18.599><c> make</c><00:51:18.720><c> clean</c><00:51:19.119><c> thank</c><00:51:19.240><c> you</c><00:51:19.480><c> whoever</c><00:51:19.760><c> just</c>
+
+00:51:19.870 --> 00:51:19.880 align:start position:0%
+to make clean thank you whoever just
+
+
+00:51:19.880 --> 00:51:21.990 align:start position:0%
+to make clean thank you whoever just
+said<00:51:20.079><c> that</c><00:51:20.280><c> off</c><00:51:20.960><c> out</c>
+
+00:51:21.990 --> 00:51:22.000 align:start position:0%
+said that off out
+
+
+00:51:22.000 --> 00:51:25.030 align:start position:0%
+said that off out
+there<00:51:23.000><c> all</c>
+
+00:51:25.030 --> 00:51:25.040 align:start position:0%
+there all
+
+
+00:51:25.040 --> 00:51:27.510 align:start position:0%
+there all
+right<00:51:26.040><c> here</c><00:51:26.160><c> you</c><00:51:26.280><c> are</c><00:51:26.599><c> this</c><00:51:26.680><c> will</c><00:51:26.839><c> just</c><00:51:26.960><c> take</c><00:51:27.119><c> a</c>
+
+00:51:27.510 --> 00:51:27.520 align:start position:0%
+right here you are this will just take a
+
+
+00:51:27.520 --> 00:51:34.270 align:start position:0%
+right here you are this will just take a
+sec<00:51:28.520><c> new</c><00:51:29.280><c> awesome</c>
+
+00:51:34.270 --> 00:51:34.280 align:start position:0%
+
+
+
+00:51:34.280 --> 00:51:36.549 align:start position:0%
+
+terminal<00:51:35.280><c> awesome</c><00:51:35.640><c> is</c><00:51:35.720><c> the</c><00:51:35.839><c> window</c><00:51:36.079><c> and</c><00:51:36.480><c> that</c>
+
+00:51:36.549 --> 00:51:36.559 align:start position:0%
+terminal awesome is the window and that
+
+
+00:51:36.559 --> 00:51:38.470 align:start position:0%
+terminal awesome is the window and that
+is<00:51:36.680><c> correct</c>
+
+00:51:38.470 --> 00:51:38.480 align:start position:0%
+is correct
+
+
+00:51:38.480 --> 00:51:41.270 align:start position:0%
+is correct
+um<00:51:39.480><c> so</c><00:51:39.880><c> yes</c><00:51:40.079><c> I'm</c><00:51:40.200><c> using</c><00:51:40.599><c> this</c><00:51:40.839><c> I'm</c><00:51:40.960><c> using</c><00:51:41.160><c> a</c>
+
+00:51:41.270 --> 00:51:41.280 align:start position:0%
+um so yes I'm using this I'm using a
+
+
+00:51:41.280 --> 00:51:42.390 align:start position:0%
+um so yes I'm using this I'm using a
+thing<00:51:41.400><c> called</c><00:51:41.599><c> surf</c><00:51:41.920><c> I'm</c><00:51:42.000><c> using</c><00:51:42.200><c> a</c><00:51:42.280><c> thing</c>
+
+00:51:42.390 --> 00:51:42.400 align:start position:0%
+thing called surf I'm using a thing
+
+
+00:51:42.400 --> 00:51:45.829 align:start position:0%
+thing called surf I'm using a thing
+called<00:51:42.640><c> surf</c><00:51:43.040><c> raw</c><00:51:43.839><c> um</c><00:51:43.960><c> if</c><00:51:44.040><c> you</c><00:51:44.119><c> haven't</c><00:51:44.640><c> used</c><00:51:45.640><c> I</c>
+
+00:51:45.829 --> 00:51:45.839 align:start position:0%
+called surf raw um if you haven't used I
+
+
+00:51:45.839 --> 00:51:48.789 align:start position:0%
+called surf raw um if you haven't used I
+recommend<00:51:46.240><c> trying</c><00:51:46.559><c> it</c><00:51:47.040><c> so</c><00:51:47.599><c> while</c><00:51:47.839><c> this</c><00:51:47.960><c> is</c><00:51:48.440><c> uh</c>
+
+00:51:48.789 --> 00:51:48.799 align:start position:0%
+recommend trying it so while this is uh
+
+
+00:51:48.799 --> 00:51:51.470 align:start position:0%
+recommend trying it so while this is uh
+uh<00:51:48.960><c> compiling</c><00:51:49.559><c> a</c><00:51:49.720><c> very</c><00:51:49.920><c> small</c><00:51:50.200><c> program</c><00:51:50.640><c> here</c>
+
+00:51:51.470 --> 00:51:51.480 align:start position:0%
+uh compiling a very small program here
+
+
+00:51:51.480 --> 00:51:54.109 align:start position:0%
+uh compiling a very small program here
+um<00:51:51.960><c> there</c><00:51:52.079><c> we</c><00:51:52.200><c> are</c><00:51:52.720><c> okay</c><00:51:53.119><c> it</c><00:51:53.359><c> it</c><00:51:53.480><c> seems</c><00:51:53.720><c> to</c><00:51:53.839><c> be</c>
+
+00:51:54.109 --> 00:51:54.119 align:start position:0%
+um there we are okay it it seems to be
+
+
+00:51:54.119 --> 00:51:57.870 align:start position:0%
+um there we are okay it it seems to be
+compiled<00:51:55.240><c> um</c><00:51:56.240><c> why</c><00:51:56.960><c> is</c><00:51:57.079><c> this</c><00:51:57.280><c> interesting</c><00:51:57.720><c> in</c>
+
+00:51:57.870 --> 00:51:57.880 align:start position:0%
+compiled um why is this interesting in
+
+
+00:51:57.880 --> 00:51:59.630 align:start position:0%
+compiled um why is this interesting in
+any<00:51:58.079><c> way</c><00:51:58.319><c> like</c><00:51:58.559><c> why</c><00:51:58.839><c> would</c><00:51:59.000><c> I</c><00:51:59.280><c> yeah</c><00:51:59.440><c> there</c><00:51:59.520><c> we</c>
+
+00:51:59.630 --> 00:51:59.640 align:start position:0%
+any way like why would I yeah there we
+
+
+00:51:59.640 --> 00:52:02.510 align:start position:0%
+any way like why would I yeah there we
+are<00:52:00.040><c> look</c><00:52:00.119><c> at</c><00:52:00.319><c> that</c><00:52:01.119><c> that</c><00:52:01.280><c> is</c>
+
+00:52:02.510 --> 00:52:02.520 align:start position:0%
+are look at that that is
+
+
+00:52:02.520 --> 00:52:05.950 align:start position:0%
+are look at that that is
+configuration<00:52:03.520><c> yeah</c><00:52:04.319><c> um</c><00:52:04.799><c> and</c><00:52:05.079><c> fact</c><00:52:05.280><c> if</c><00:52:05.440><c> I</c><00:52:05.720><c> say</c>
+
+00:52:05.950 --> 00:52:05.960 align:start position:0%
+configuration yeah um and fact if I say
+
+
+00:52:05.960 --> 00:52:08.309 align:start position:0%
+configuration yeah um and fact if I say
+make<00:52:06.240><c> clean</c><00:52:06.760><c> over</c><00:52:07.000><c> here</c><00:52:07.520><c> or</c><00:52:07.680><c> not</c><00:52:07.839><c> make</c><00:52:08.000><c> clean</c>
+
+00:52:08.309 --> 00:52:08.319 align:start position:0%
+make clean over here or not make clean
+
+
+00:52:08.319 --> 00:52:10.349 align:start position:0%
+make clean over here or not make clean
+but<00:52:08.599><c> uh</c><00:52:09.559><c> make</c>
+
+00:52:10.349 --> 00:52:10.359 align:start position:0%
+but uh make
+
+
+00:52:10.359 --> 00:52:14.230 align:start position:0%
+but uh make
+install<00:52:11.359><c> from</c><00:52:11.559><c> now</c><00:52:11.760><c> on</c><00:52:12.240><c> whenever</c><00:52:12.920><c> I</c><00:52:13.319><c> hit</c><00:52:13.880><c> my</c>
+
+00:52:14.230 --> 00:52:14.240 align:start position:0%
+install from now on whenever I hit my
+
+
+00:52:14.240 --> 00:52:17.910 align:start position:0%
+install from now on whenever I hit my
+enter<00:52:14.720><c> because</c><00:52:15.119><c> I'm</c><00:52:15.280><c> using</c><00:52:16.000><c> uh</c><00:52:17.000><c> uh</c><00:52:17.160><c> awesome</c>
+
+00:52:17.910 --> 00:52:17.920 align:start position:0%
+enter because I'm using uh uh awesome
+
+
+00:52:17.920 --> 00:52:20.630 align:start position:0%
+enter because I'm using uh uh awesome
+I'll<00:52:18.200><c> get</c><00:52:18.440><c> my</c><00:52:18.559><c> new</c><00:52:18.760><c> bid</c><00:52:19.000><c> terminal</c><00:52:19.760><c> so</c><00:52:20.280><c> why</c><00:52:20.440><c> is</c>
+
+00:52:20.630 --> 00:52:20.640 align:start position:0%
+I'll get my new bid terminal so why is
+
+
+00:52:20.640 --> 00:52:23.589 align:start position:0%
+I'll get my new bid terminal so why is
+this<00:52:20.839><c> interesting</c><00:52:21.240><c> at</c><00:52:21.720><c> all</c><00:52:22.720><c> uh</c><00:52:22.960><c> besides</c><00:52:23.400><c> sort</c>
+
+00:52:23.589 --> 00:52:23.599 align:start position:0%
+this interesting at all uh besides sort
+
+
+00:52:23.599 --> 00:52:25.829 align:start position:0%
+this interesting at all uh besides sort
+of<00:52:23.839><c> novelty</c><00:52:24.839><c> this</c><00:52:24.960><c> is</c><00:52:25.240><c> this</c><00:52:25.359><c> is</c><00:52:25.559><c> why</c><00:52:25.680><c> it's</c>
+
+00:52:25.829 --> 00:52:25.839 align:start position:0%
+of novelty this is this is why it's
+
+
+00:52:25.839 --> 00:52:27.190 align:start position:0%
+of novelty this is this is why it's
+interesting<00:52:26.119><c> to</c><00:52:26.280><c> me</c>
+
+00:52:27.190 --> 00:52:27.200 align:start position:0%
+interesting to me
+
+
+00:52:27.200 --> 00:52:29.150 align:start position:0%
+interesting to me
+I'm<00:52:27.359><c> learning</c><00:52:27.760><c> about</c><00:52:28.040><c> tools</c><00:52:28.520><c> that</c><00:52:28.680><c> I</c><00:52:28.880><c> have</c><00:52:29.000><c> to</c>
+
+00:52:29.150 --> 00:52:29.160 align:start position:0%
+I'm learning about tools that I have to
+
+
+00:52:29.160 --> 00:52:31.549 align:start position:0%
+I'm learning about tools that I have to
+use<00:52:29.480><c> because</c><00:52:29.640><c> I'm</c><00:52:29.799><c> dealing</c><00:52:30.119><c> with</c><00:52:30.359><c> such</c><00:52:31.280><c> a</c><00:52:31.400><c> sort</c>
+
+00:52:31.549 --> 00:52:31.559 align:start position:0%
+use because I'm dealing with such a sort
+
+
+00:52:31.559 --> 00:52:36.150 align:start position:0%
+use because I'm dealing with such a sort
+of<00:52:32.119><c> small</c><00:52:32.960><c> um</c><00:52:33.240><c> machine</c><00:52:34.240><c> that</c><00:52:35.160><c> are</c><00:52:35.520><c> great</c><00:52:35.760><c> tools</c>
+
+00:52:36.150 --> 00:52:36.160 align:start position:0%
+of small um machine that are great tools
+
+
+00:52:36.160 --> 00:52:38.030 align:start position:0%
+of small um machine that are great tools
+and<00:52:36.280><c> are</c><00:52:36.520><c> very</c><00:52:36.799><c> fast</c><00:52:37.040><c> tools</c><00:52:37.400><c> even</c><00:52:37.640><c> though</c><00:52:37.960><c> you</c>
+
+00:52:38.030 --> 00:52:38.040 align:start position:0%
+and are very fast tools even though you
+
+
+00:52:38.040 --> 00:52:40.190 align:start position:0%
+and are very fast tools even though you
+know<00:52:38.240><c> normally</c><00:52:39.000><c> I</c><00:52:39.079><c> may</c><00:52:39.280><c> be</c><00:52:39.440><c> running</c><00:52:40.000><c> um</c>
+
+00:52:40.190 --> 00:52:40.200 align:start position:0%
+know normally I may be running um
+
+
+00:52:40.200 --> 00:52:42.470 align:start position:0%
+know normally I may be running um
+normally<00:52:40.520><c> I'm</c><00:52:40.599><c> running</c><00:52:40.880><c> inside</c><00:52:41.240><c> of</c><00:52:41.359><c> a</c><00:52:41.680><c> a</c><00:52:41.839><c> VM</c><00:52:42.280><c> on</c>
+
+00:52:42.470 --> 00:52:42.480 align:start position:0%
+normally I'm running inside of a a VM on
+
+
+00:52:42.480 --> 00:52:44.630 align:start position:0%
+normally I'm running inside of a a VM on
+my<00:52:42.760><c> MacBook</c><00:52:43.400><c> but</c><00:52:43.599><c> still</c><00:52:43.799><c> that</c><00:52:43.960><c> BM</c><00:52:44.240><c> has</c><00:52:44.400><c> four</c>
+
+00:52:44.630 --> 00:52:44.640 align:start position:0%
+my MacBook but still that BM has four
+
+
+00:52:44.640 --> 00:52:46.270 align:start position:0%
+my MacBook but still that BM has four
+gigs<00:52:45.000><c> and</c><00:52:45.119><c> it's</c><00:52:45.280><c> super</c><00:52:45.640><c> fast</c><00:52:45.920><c> and</c><00:52:46.040><c> it's</c>
+
+00:52:46.270 --> 00:52:46.280 align:start position:0%
+gigs and it's super fast and it's
+
+
+00:52:46.280 --> 00:52:48.710 align:start position:0%
+gigs and it's super fast and it's
+awesome<00:52:47.280><c> um</c><00:52:47.720><c> the</c><00:52:47.920><c> same</c><00:52:48.119><c> programs</c><00:52:48.400><c> run</c><00:52:48.559><c> on</c>
+
+00:52:48.710 --> 00:52:48.720 align:start position:0%
+awesome um the same programs run on
+
+
+00:52:48.720 --> 00:52:50.710 align:start position:0%
+awesome um the same programs run on
+there<00:52:48.839><c> St</c><00:52:49.200><c> runs</c><00:52:49.400><c> on</c><00:52:49.599><c> there</c><00:52:49.839><c> uh</c><00:52:49.960><c> surf</c><00:52:50.280><c> runs</c><00:52:50.520><c> on</c>
+
+00:52:50.710 --> 00:52:50.720 align:start position:0%
+there St runs on there uh surf runs on
+
+
+00:52:50.720 --> 00:52:51.910 align:start position:0%
+there St runs on there uh surf runs on
+there<00:52:50.920><c> Sur</c><00:52:51.280><c> for</c><00:52:51.440><c> all</c><00:52:51.599><c> which</c><00:52:51.720><c> I'm</c><00:52:51.760><c> going</c><00:52:51.880><c> to</c>
+
+00:52:51.910 --> 00:52:51.920 align:start position:0%
+there Sur for all which I'm going to
+
+
+00:52:51.920 --> 00:52:56.670 align:start position:0%
+there Sur for all which I'm going to
+show<00:52:52.040><c> you</c><00:52:52.160><c> in</c><00:52:52.200><c> a</c><00:52:52.319><c> minute</c><00:52:52.480><c> runs</c><00:52:52.720><c> on</c><00:52:52.960><c> there</c><00:52:53.720><c> um</c>
+
+00:52:56.670 --> 00:52:56.680 align:start position:0%
+show you in a minute runs on there um
+
+
+00:52:56.680 --> 00:52:59.670 align:start position:0%
+show you in a minute runs on there um
+but<00:52:56.799><c> you</c><00:52:56.920><c> know</c><00:52:57.119><c> there</c><00:52:57.240><c> we</c><00:52:57.359><c> are</c><00:52:57.680><c> so</c><00:52:57.880><c> surf</c><00:52:58.400><c> ra</c><00:52:58.920><c> is</c>
+
+00:52:59.670 --> 00:52:59.680 align:start position:0%
+but you know there we are so surf ra is
+
+
+00:52:59.680 --> 00:53:02.990 align:start position:0%
+but you know there we are so surf ra is
+the<00:53:00.480><c> coolest</c><00:53:01.040><c> thing</c><00:53:01.359><c> that</c><00:53:01.520><c> I</c><00:53:01.680><c> learned</c><00:53:02.240><c> from</c><00:53:02.599><c> my</c>
+
+00:53:02.990 --> 00:53:03.000 align:start position:0%
+the coolest thing that I learned from my
+
+
+00:53:03.000 --> 00:53:07.349 align:start position:0%
+the coolest thing that I learned from my
+uh<00:53:03.920><c> time</c><00:53:04.119><c> on</c><00:53:04.359><c> here</c><00:53:05.000><c> so</c><00:53:06.000><c> let</c><00:53:06.119><c> me</c>
+
+00:53:07.349 --> 00:53:07.359 align:start position:0%
+uh time on here so let me
+
+
+00:53:07.359 --> 00:53:13.829 align:start position:0%
+uh time on here so let me
+uh<00:53:08.359><c> go</c><00:53:08.680><c> over</c><00:53:09.079><c> to</c>
+
+00:53:13.829 --> 00:53:13.839 align:start position:0%
+
+
+
+00:53:13.839 --> 00:53:17.630 align:start position:0%
+
+this<00:53:14.839><c> there</c><00:53:14.960><c> we</c><00:53:15.079><c> are</c><00:53:15.640><c> so</c><00:53:15.839><c> surf</c><00:53:16.599><c> is</c><00:53:16.760><c> written</c><00:53:17.440><c> by</c>
+
+00:53:17.630 --> 00:53:17.640 align:start position:0%
+this there we are so surf is written by
+
+
+00:53:17.640 --> 00:53:20.230 align:start position:0%
+this there we are so surf is written by
+of<00:53:17.799><c> all</c><00:53:18.040><c> people</c><00:53:18.760><c> a</c><00:53:18.880><c> man</c><00:53:19.359><c> that</c><00:53:19.920><c> sort</c><00:53:20.119><c> of</c>
+
+00:53:20.230 --> 00:53:20.240 align:start position:0%
+of all people a man that sort of
+
+
+00:53:20.240 --> 00:53:21.710 align:start position:0%
+of all people a man that sort of
+Infamous<00:53:20.680><c> that</c><00:53:20.760><c> you've</c><00:53:20.920><c> heard</c><00:53:21.079><c> of</c><00:53:21.400><c> um</c><00:53:21.520><c> named</c>
+
+00:53:21.710 --> 00:53:21.720 align:start position:0%
+Infamous that you've heard of um named
+
+
+00:53:21.720 --> 00:53:23.630 align:start position:0%
+Infamous that you've heard of um named
+Julian<00:53:22.079><c> Assange</c><00:53:22.880><c> uh</c><00:53:22.960><c> he</c><00:53:23.040><c> wrote</c><00:53:23.280><c> it</c><00:53:23.440><c> long</c>
+
+00:53:23.630 --> 00:53:23.640 align:start position:0%
+Julian Assange uh he wrote it long
+
+
+00:53:23.640 --> 00:53:27.549 align:start position:0%
+Julian Assange uh he wrote it long
+before<00:53:23.880><c> he</c><00:53:24.000><c> did</c><00:53:24.240><c> anything</c><00:53:24.760><c> else</c><00:53:25.760><c> like</c><00:53:26.160><c> pain</c>
+
+00:53:27.549 --> 00:53:27.559 align:start position:0%
+before he did anything else like pain
+
+
+00:53:27.559 --> 00:53:30.270 align:start position:0%
+before he did anything else like pain
+um<00:53:28.559><c> whatever</c><00:53:28.839><c> you</c><00:53:29.000><c> think</c><00:53:29.440><c> pinky</c><00:53:29.760><c> is</c><00:53:29.839><c> a</c><00:53:30.040><c> good</c>
+
+00:53:30.270 --> 00:53:30.280 align:start position:0%
+um whatever you think pinky is a good
+
+
+00:53:30.280 --> 00:53:33.430 align:start position:0%
+um whatever you think pinky is a good
+adjective<00:53:30.680><c> it's</c><00:53:30.920><c> fun</c><00:53:31.079><c> to</c><00:53:31.240><c> say</c><00:53:31.880><c> so</c><00:53:32.280><c> um</c><00:53:33.079><c> but</c><00:53:33.240><c> it</c>
+
+00:53:33.430 --> 00:53:33.440 align:start position:0%
+adjective it's fun to say so um but it
+
+
+00:53:33.440 --> 00:53:35.190 align:start position:0%
+adjective it's fun to say so um but it
+has<00:53:33.720><c> lots</c><00:53:33.880><c> of</c><00:53:34.040><c> these</c><00:53:34.160><c> things</c><00:53:34.400><c> called</c><00:53:34.599><c> portlets</c>
+
+00:53:35.190 --> 00:53:35.200 align:start position:0%
+has lots of these things called portlets
+
+
+00:53:35.200 --> 00:53:37.589 align:start position:0%
+has lots of these things called portlets
+where<00:53:35.599><c> you</c><00:53:35.960><c> can</c><00:53:36.160><c> from</c><00:53:36.319><c> the</c><00:53:36.440><c> command</c><00:53:36.799><c> line</c>
+
+00:53:37.589 --> 00:53:37.599 align:start position:0%
+where you can from the command line
+
+
+00:53:37.599 --> 00:53:39.589 align:start position:0%
+where you can from the command line
+access<00:53:38.000><c> your</c><00:53:38.280><c> favorite</c><00:53:38.680><c> websites</c><00:53:39.319><c> which</c><00:53:39.440><c> will</c>
+
+00:53:39.589 --> 00:53:39.599 align:start position:0%
+access your favorite websites which will
+
+
+00:53:39.599 --> 00:53:41.950 align:start position:0%
+access your favorite websites which will
+come<00:53:39.720><c> out</c><00:53:39.839><c> in</c><00:53:39.960><c> the</c><00:53:40.119><c> browser</c><00:53:40.520><c> your</c><00:53:40.720><c> choice</c><00:53:41.520><c> so</c><00:53:41.839><c> I</c>
+
+00:53:41.950 --> 00:53:41.960 align:start position:0%
+come out in the browser your choice so I
+
+
+00:53:41.960 --> 00:53:43.710 align:start position:0%
+come out in the browser your choice so I
+like<00:53:42.079><c> to</c><00:53:42.160><c> use</c><00:53:42.319><c> D</c><00:53:42.559><c> let</c><00:53:42.760><c> go</c><00:53:43.040><c> I</c><00:53:43.119><c> want</c><00:53:43.240><c> to</c><00:53:43.359><c> know</c><00:53:43.520><c> more</c>
+
+00:53:43.710 --> 00:53:43.720 align:start position:0%
+like to use D let go I want to know more
+
+
+00:53:43.720 --> 00:53:52.309 align:start position:0%
+like to use D let go I want to know more
+about<00:53:44.480><c> uh</c><00:53:44.880><c> uh</c><00:53:45.040><c> programming</c><00:53:45.440><c> on</c><00:53:45.520><c> the</c><00:53:45.599><c> Raspberry</c>
+
+00:53:52.309 --> 00:53:52.319 align:start position:0%
+
+
+
+00:53:52.319 --> 00:53:56.030 align:start position:0%
+
+Pi<00:53:53.319><c> and</c><00:53:54.000><c> lo</c><00:53:54.200><c> and</c><00:53:54.400><c> behold</c><00:53:55.359><c> here</c><00:53:55.480><c> it</c><00:53:55.599><c> is</c><00:53:55.799><c> now</c><00:53:55.960><c> I've</c>
+
+00:53:56.030 --> 00:53:56.040 align:start position:0%
+Pi and lo and behold here it is now I've
+
+
+00:53:56.040 --> 00:53:59.589 align:start position:0%
+Pi and lo and behold here it is now I've
+told<00:53:56.240><c> it</c><00:53:56.640><c> use</c><00:53:57.040><c> a</c><00:53:57.680><c> w3m</c><00:53:58.680><c> uh</c><00:53:58.839><c> for</c><00:53:59.000><c> a</c><00:53:59.119><c> t</c><00:53:59.359><c> space</c>
+
+00:53:59.589 --> 00:53:59.599 align:start position:0%
+told it use a w3m uh for a t space
+
+
+00:53:59.599 --> 00:54:03.230 align:start position:0%
+told it use a w3m uh for a t space
+browser<00:54:00.079><c> because</c><00:54:00.640><c> I</c><00:54:01.000><c> uh</c><00:54:01.920><c> um</c><00:54:02.720><c> because</c><00:54:03.079><c> even</c>
+
+00:54:03.230 --> 00:54:03.240 align:start position:0%
+browser because I uh um because even
+
+
+00:54:03.240 --> 00:54:05.510 align:start position:0%
+browser because I uh um because even
+surf<00:54:03.599><c> takes</c><00:54:03.760><c> a</c><00:54:03.920><c> little</c><00:54:04.280><c> bit</c><00:54:04.480><c> to</c><00:54:04.640><c> start</c><00:54:05.319><c> but</c><00:54:05.440><c> I</c>
+
+00:54:05.510 --> 00:54:05.520 align:start position:0%
+surf takes a little bit to start but I
+
+
+00:54:05.520 --> 00:54:09.430 align:start position:0%
+surf takes a little bit to start but I
+can<00:54:05.640><c> tell</c><00:54:05.839><c> it</c><00:54:05.960><c> to</c><00:54:06.119><c> use</c><00:54:06.760><c> um</c><00:54:07.160><c> you</c><00:54:07.280><c> know</c><00:54:07.520><c> my</c><00:54:07.720><c> normal</c>
+
+00:54:09.430 --> 00:54:09.440 align:start position:0%
+can tell it to use um you know my normal
+
+
+00:54:09.440 --> 00:54:12.829 align:start position:0%
+can tell it to use um you know my normal
+uh<00:54:10.440><c> my</c><00:54:10.559><c> normal</c><00:54:10.880><c> graphical</c><00:54:11.520><c> browser</c><00:54:12.520><c> so</c><00:54:12.760><c> this</c>
+
+00:54:12.829 --> 00:54:12.839 align:start position:0%
+uh my normal graphical browser so this
+
+
+00:54:12.839 --> 00:54:15.270 align:start position:0%
+uh my normal graphical browser so this
+is<00:54:13.079><c> awesome</c><00:54:13.640><c> I</c><00:54:13.760><c> have</c><00:54:14.000><c> a</c><00:54:14.200><c> a</c><00:54:14.359><c> browser</c><00:54:14.960><c> that</c><00:54:15.160><c> is</c>
+
+00:54:15.270 --> 00:54:15.280 align:start position:0%
+is awesome I have a a browser that is
+
+
+00:54:15.280 --> 00:54:16.789 align:start position:0%
+is awesome I have a a browser that is
+the<00:54:15.440><c> smallest</c><00:54:15.760><c> thing</c><00:54:15.920><c> I</c><00:54:16.040><c> can</c><00:54:16.200><c> possibly</c><00:54:16.480><c> use</c><00:54:16.599><c> on</c>
+
+00:54:16.789 --> 00:54:16.799 align:start position:0%
+the smallest thing I can possibly use on
+
+
+00:54:16.799 --> 00:54:19.470 align:start position:0%
+the smallest thing I can possibly use on
+here<00:54:17.280><c> but</c><00:54:17.440><c> doesn't</c><00:54:17.760><c> have</c><00:54:18.079><c> great</c><00:54:18.480><c> navigation</c>
+
+00:54:19.470 --> 00:54:19.480 align:start position:0%
+here but doesn't have great navigation
+
+
+00:54:19.480 --> 00:54:22.510 align:start position:0%
+here but doesn't have great navigation
+uh<00:54:19.599><c> to</c><00:54:19.880><c> to</c><00:54:20.200><c> you</c><00:54:20.280><c> know</c><00:54:20.760><c> go</c><00:54:21.040><c> to</c><00:54:21.400><c> certain</c><00:54:21.720><c> sites</c><00:54:22.319><c> so</c>
+
+00:54:22.510 --> 00:54:22.520 align:start position:0%
+uh to to you know go to certain sites so
+
+
+00:54:22.520 --> 00:54:23.990 align:start position:0%
+uh to to you know go to certain sites so
+now<00:54:22.680><c> I</c><00:54:22.799><c> have</c><00:54:22.920><c> another</c><00:54:23.160><c> tool</c><00:54:23.400><c> that</c><00:54:23.520><c> HS</c><00:54:23.799><c> into</c>
+
+00:54:23.990 --> 00:54:24.000 align:start position:0%
+now I have another tool that HS into
+
+
+00:54:24.000 --> 00:54:25.510 align:start position:0%
+now I have another tool that HS into
+that<00:54:24.160><c> and</c><00:54:24.280><c> of</c><00:54:24.400><c> course</c><00:54:24.599><c> this</c><00:54:24.760><c> ties</c><00:54:25.040><c> us</c><00:54:25.200><c> all</c><00:54:25.400><c> back</c>
+
+00:54:25.510 --> 00:54:25.520 align:start position:0%
+that and of course this ties us all back
+
+
+00:54:25.520 --> 00:54:27.430 align:start position:0%
+that and of course this ties us all back
+to<00:54:25.640><c> the</c><00:54:25.760><c> sort</c><00:54:25.920><c> of</c><00:54:26.400><c> unit's</c><00:54:26.799><c> philosophy</c><00:54:27.319><c> of</c>
+
+00:54:27.430 --> 00:54:27.440 align:start position:0%
+to the sort of unit's philosophy of
+
+
+00:54:27.440 --> 00:54:30.150 align:start position:0%
+to the sort of unit's philosophy of
+having<00:54:27.680><c> very</c><00:54:27.920><c> small</c><00:54:28.280><c> programs</c><00:54:29.079><c> that</c><00:54:29.240><c> all</c><00:54:29.960><c> uh</c>
+
+00:54:30.150 --> 00:54:30.160 align:start position:0%
+having very small programs that all uh
+
+
+00:54:30.160 --> 00:54:31.789 align:start position:0%
+having very small programs that all uh
+you<00:54:30.280><c> know</c><00:54:30.480><c> use</c><00:54:30.799><c> text</c><00:54:31.040><c> to</c><00:54:31.200><c> talk</c><00:54:31.359><c> to</c><00:54:31.480><c> each</c><00:54:31.599><c> other</c>
+
+00:54:31.789 --> 00:54:31.799 align:start position:0%
+you know use text to talk to each other
+
+
+00:54:31.799 --> 00:54:33.870 align:start position:0%
+you know use text to talk to each other
+and<00:54:31.920><c> send</c><00:54:32.119><c> this</c><00:54:32.319><c> back</c><00:54:32.400><c> and</c><00:54:32.559><c> forth</c><00:54:33.119><c> you</c><00:54:33.319><c> prented</c>
+
+00:54:33.870 --> 00:54:33.880 align:start position:0%
+and send this back and forth you prented
+
+
+00:54:33.880 --> 00:54:36.349 align:start position:0%
+and send this back and forth you prented
+gopher
+
+00:54:36.349 --> 00:54:36.359 align:start position:0%
+gopher
+
+
+00:54:36.359 --> 00:54:40.349 align:start position:0%
+gopher
+yes<00:54:37.359><c> kind</c><00:54:37.559><c> of</c><00:54:38.079><c> kind</c><00:54:38.240><c> of</c><00:54:38.440><c> I</c><00:54:38.640><c> have</c><00:54:39.119><c> so</c><00:54:39.640><c> um</c><00:54:40.280><c> you</c>
+
+00:54:40.349 --> 00:54:40.359 align:start position:0%
+yes kind of kind of I have so um you
+
+
+00:54:40.359 --> 00:54:43.390 align:start position:0%
+yes kind of kind of I have so um you
+know<00:54:41.280><c> being</c><00:54:41.680><c> within</c><00:54:41.960><c> this</c><00:54:42.200><c> this</c><00:54:42.480><c> very</c><00:54:42.720><c> limited</c>
+
+00:54:43.390 --> 00:54:43.400 align:start position:0%
+know being within this this very limited
+
+
+00:54:43.400 --> 00:54:47.150 align:start position:0%
+know being within this this very limited
+place<00:54:43.920><c> has</c><00:54:44.119><c> sort</c><00:54:44.280><c> of</c><00:54:44.839><c> renewed</c><00:54:45.359><c> and</c><00:54:45.960><c> revigor</c><00:54:46.960><c> my</c>
+
+00:54:47.150 --> 00:54:47.160 align:start position:0%
+place has sort of renewed and revigor my
+
+
+00:54:47.160 --> 00:54:50.630 align:start position:0%
+place has sort of renewed and revigor my
+love<00:54:47.359><c> for</c><00:54:47.599><c> this</c><00:54:47.920><c> philosophy</c><00:54:49.000><c> um</c><00:54:50.000><c> do</c><00:54:50.160><c> I</c><00:54:50.359><c> have</c>
+
+00:54:50.630 --> 00:54:50.640 align:start position:0%
+love for this philosophy um do I have
+
+
+00:54:50.640 --> 00:54:52.309 align:start position:0%
+love for this philosophy um do I have
+two<00:54:50.799><c> minutes</c><00:54:51.119><c> left</c><00:54:51.359><c> that's</c><00:54:51.480><c> what</c><00:54:51.640><c> that</c><00:54:51.839><c> saying</c>
+
+00:54:52.309 --> 00:54:52.319 align:start position:0%
+two minutes left that's what that saying
+
+
+00:54:52.319 --> 00:54:55.069 align:start position:0%
+two minutes left that's what that saying
+there<00:54:52.680><c> awesome</c><00:54:53.440><c> um</c><00:54:53.720><c> has</c><00:54:54.280><c> reinvigorated</c><00:54:54.960><c> my</c>
+
+00:54:55.069 --> 00:54:55.079 align:start position:0%
+there awesome um has reinvigorated my
+
+
+00:54:55.079 --> 00:54:57.150 align:start position:0%
+there awesome um has reinvigorated my
+love<00:54:55.200><c> for</c><00:54:55.319><c> this</c><00:54:55.480><c> philosophy</c><00:54:56.400><c> many</c><00:54:56.599><c> of</c><00:54:56.720><c> us</c><00:54:56.880><c> may</c>
+
+00:54:57.150 --> 00:54:57.160 align:start position:0%
+love for this philosophy many of us may
+
+
+00:54:57.160 --> 00:54:59.710 align:start position:0%
+love for this philosophy many of us may
+find<00:54:58.079><c> uh</c><00:54:58.160><c> when</c><00:54:58.280><c> we're</c><00:54:58.440><c> working</c><00:54:58.760><c> dayto</c><00:54:59.200><c> day</c><00:54:59.599><c> in</c>
+
+00:54:59.710 --> 00:54:59.720 align:start position:0%
+find uh when we're working dayto day in
+
+
+00:54:59.720 --> 00:55:02.630 align:start position:0%
+find uh when we're working dayto day in
+our<00:54:59.960><c> jobs</c><00:55:00.920><c> that</c><00:55:01.200><c> because</c><00:55:01.880><c> you</c><00:55:02.000><c> know</c><00:55:02.319><c> we</c><00:55:02.440><c> need</c>
+
+00:55:02.630 --> 00:55:02.640 align:start position:0%
+our jobs that because you know we need
+
+
+00:55:02.640 --> 00:55:05.309 align:start position:0%
+our jobs that because you know we need
+to<00:55:02.839><c> support</c><00:55:03.359><c> someone's</c><00:55:03.839><c> IE</c><00:55:04.119><c> machine</c><00:55:04.760><c> or</c><00:55:05.000><c> IE</c>
+
+00:55:05.309 --> 00:55:05.319 align:start position:0%
+to support someone's IE machine or IE
+
+
+00:55:05.319 --> 00:55:07.349 align:start position:0%
+to support someone's IE machine or IE
+browser<00:55:05.839><c> or</c><00:55:06.200><c> we</c><00:55:06.319><c> need</c><00:55:06.480><c> to</c><00:55:06.640><c> talk</c><00:55:06.799><c> to</c><00:55:06.960><c> people</c>
+
+00:55:07.349 --> 00:55:07.359 align:start position:0%
+browser or we need to talk to people
+
+
+00:55:07.359 --> 00:55:09.349 align:start position:0%
+browser or we need to talk to people
+using<00:55:08.040><c> Skype</c><00:55:08.440><c> because</c><00:55:08.640><c> that's</c><00:55:08.760><c> all</c><00:55:08.960><c> they</c><00:55:09.119><c> use</c>
+
+00:55:09.349 --> 00:55:09.359 align:start position:0%
+using Skype because that's all they use
+
+
+00:55:09.359 --> 00:55:11.150 align:start position:0%
+using Skype because that's all they use
+or<00:55:09.520><c> whatever</c><00:55:10.240><c> um</c><00:55:10.359><c> it's</c><00:55:10.480><c> very</c><00:55:10.640><c> easy</c><00:55:10.839><c> to</c><00:55:10.960><c> get</c>
+
+00:55:11.150 --> 00:55:11.160 align:start position:0%
+or whatever um it's very easy to get
+
+
+00:55:11.160 --> 00:55:13.430 align:start position:0%
+or whatever um it's very easy to get
+away<00:55:11.599><c> from</c><00:55:11.960><c> this</c><00:55:12.079><c> sort</c><00:55:12.240><c> of</c><00:55:12.480><c> core</c><00:55:12.880><c> philosophy</c>
+
+00:55:13.430 --> 00:55:13.440 align:start position:0%
+away from this sort of core philosophy
+
+
+00:55:13.440 --> 00:55:15.589 align:start position:0%
+away from this sort of core philosophy
+of<00:55:13.839><c> using</c><00:55:14.160><c> text</c><00:55:14.520><c> files</c><00:55:14.839><c> using</c><00:55:15.160><c> very</c><00:55:15.319><c> small</c>
+
+00:55:15.589 --> 00:55:15.599 align:start position:0%
+of using text files using very small
+
+
+00:55:15.599 --> 00:55:17.190 align:start position:0%
+of using text files using very small
+programs<00:55:15.880><c> that</c><00:55:16.040><c> commun</c><00:55:16.440><c> back</c><00:55:16.520><c> and</c><00:55:16.680><c> forth</c><00:55:17.079><c> It's</c>
+
+00:55:17.190 --> 00:55:17.200 align:start position:0%
+programs that commun back and forth It's
+
+
+00:55:17.200 --> 00:55:18.470 align:start position:0%
+programs that commun back and forth It's
+not
+
+00:55:18.470 --> 00:55:18.480 align:start position:0%
+not
+
+
+00:55:18.480 --> 00:55:22.029 align:start position:0%
+not
+practical<00:55:19.480><c> but</c><00:55:19.839><c> I'm</c><00:55:20.680><c> you</c><00:55:20.799><c> know</c><00:55:21.119><c> any</c><00:55:21.480><c> anybody</c>
+
+00:55:22.029 --> 00:55:22.039 align:start position:0%
+practical but I'm you know any anybody
+
+
+00:55:22.039 --> 00:55:24.150 align:start position:0%
+practical but I'm you know any anybody
+who<00:55:22.319><c> who</c><00:55:22.680><c> is</c><00:55:22.960><c> here</c><00:55:23.160><c> at</c><00:55:23.359><c> L</c><00:55:23.640><c> users</c><00:55:23.880><c> group</c><00:55:24.079><c> I</c>
+
+00:55:24.150 --> 00:55:24.160 align:start position:0%
+who who is here at L users group I
+
+
+00:55:24.160 --> 00:55:26.309 align:start position:0%
+who who is here at L users group I
+imagine<00:55:24.400><c> is</c><00:55:24.520><c> a</c><00:55:24.599><c> little</c><00:55:24.720><c> bit</c><00:55:24.839><c> of</c><00:55:24.920><c> an</c><00:55:25.160><c> idealist</c><00:55:26.160><c> I</c>
+
+00:55:26.309 --> 00:55:26.319 align:start position:0%
+imagine is a little bit of an idealist I
+
+
+00:55:26.319 --> 00:55:28.470 align:start position:0%
+imagine is a little bit of an idealist I
+I<00:55:26.440><c> know</c><00:55:26.640><c> I</c><00:55:26.799><c> am</c><00:55:27.240><c> that's</c><00:55:27.359><c> sort</c><00:55:27.520><c> of</c><00:55:27.640><c> my</c><00:55:27.799><c> core</c><00:55:28.359><c> and</c>
+
+00:55:28.470 --> 00:55:28.480 align:start position:0%
+I know I am that's sort of my core and
+
+
+00:55:28.480 --> 00:55:30.230 align:start position:0%
+I know I am that's sort of my core and
+so<00:55:28.680><c> by</c><00:55:28.760><c> using</c><00:55:29.000><c> the</c><00:55:29.079><c> Rasberry</c><00:55:29.599><c> Pi</c><00:55:29.799><c> I've</c><00:55:29.960><c> managed</c>
+
+00:55:30.230 --> 00:55:30.240 align:start position:0%
+so by using the Rasberry Pi I've managed
+
+
+00:55:30.240 --> 00:55:32.470 align:start position:0%
+so by using the Rasberry Pi I've managed
+to<00:55:30.440><c> bring</c><00:55:30.760><c> back</c><00:55:31.000><c> the</c><00:55:31.119><c> fun</c><00:55:31.359><c> of</c><00:55:31.559><c> development</c><00:55:32.319><c> by</c>
+
+00:55:32.470 --> 00:55:32.480 align:start position:0%
+to bring back the fun of development by
+
+
+00:55:32.480 --> 00:55:35.470 align:start position:0%
+to bring back the fun of development by
+getting<00:55:32.720><c> to</c><00:55:33.280><c> uh</c><00:55:33.440><c> work</c><00:55:33.720><c> in</c><00:55:34.440><c> not</c><00:55:34.760><c> an</c><00:55:35.000><c> ideal</c>
+
+00:55:35.470 --> 00:55:35.480 align:start position:0%
+getting to uh work in not an ideal
+
+
+00:55:35.480 --> 00:55:37.630 align:start position:0%
+getting to uh work in not an ideal
+environment<00:55:35.960><c> as</c><00:55:36.079><c> in</c><00:55:36.440><c> the</c><00:55:36.680><c> most</c><00:55:37.039><c> powerful</c><00:55:37.440><c> or</c>
+
+00:55:37.630 --> 00:55:37.640 align:start position:0%
+environment as in the most powerful or
+
+
+00:55:37.640 --> 00:55:40.309 align:start position:0%
+environment as in the most powerful or
+the<00:55:37.799><c> most</c><00:55:38.319><c> um</c><00:55:38.520><c> you</c><00:55:38.640><c> know</c><00:55:39.000><c> pretty</c><00:55:39.559><c> but</c><00:55:39.680><c> an</c><00:55:39.920><c> ideal</c>
+
+00:55:40.309 --> 00:55:40.319 align:start position:0%
+the most um you know pretty but an ideal
+
+
+00:55:40.319 --> 00:55:42.270 align:start position:0%
+the most um you know pretty but an ideal
+environment<00:55:40.799><c> as</c><00:55:40.880><c> in</c><00:55:41.119><c> one</c><00:55:41.319><c> that</c><00:55:41.520><c> really</c><00:55:41.799><c> fits</c>
+
+00:55:42.270 --> 00:55:42.280 align:start position:0%
+environment as in one that really fits
+
+
+00:55:42.280 --> 00:55:44.589 align:start position:0%
+environment as in one that really fits
+the<00:55:42.440><c> things</c><00:55:42.640><c> that</c><00:55:42.880><c> I</c><00:55:43.160><c> love</c><00:55:43.480><c> about</c><00:55:43.720><c> Computing</c>
+
+00:55:44.589 --> 00:55:44.599 align:start position:0%
+the things that I love about Computing
+
+
+00:55:44.599 --> 00:55:46.390 align:start position:0%
+the things that I love about Computing
+and<00:55:44.799><c> fits</c><00:55:45.160><c> my</c><00:55:45.280><c> sort</c><00:55:45.440><c> of</c><00:55:45.599><c> ideals</c><00:55:45.960><c> for</c><00:55:46.160><c> how</c><00:55:46.319><c> I</c>
+
+00:55:46.390 --> 00:55:46.400 align:start position:0%
+and fits my sort of ideals for how I
+
+
+00:55:46.400 --> 00:55:48.789 align:start position:0%
+and fits my sort of ideals for how I
+want<00:55:46.599><c> programs</c><00:55:46.960><c> to</c><00:55:47.119><c> work</c><00:55:47.839><c> so</c><00:55:48.240><c> anyway</c><00:55:48.599><c> does</c>
+
+00:55:48.789 --> 00:55:48.799 align:start position:0%
+want programs to work so anyway does
+
+
+00:55:48.799 --> 00:55:50.630 align:start position:0%
+want programs to work so anyway does
+anyone<00:55:49.119><c> have</c><00:55:49.319><c> any</c><00:55:49.520><c> questions</c><00:55:49.880><c> about</c><00:55:50.240><c> uh</c><00:55:50.440><c> how</c>
+
+00:55:50.630 --> 00:55:50.640 align:start position:0%
+anyone have any questions about uh how
+
+
+00:55:50.640 --> 00:55:54.789 align:start position:0%
+anyone have any questions about uh how
+you<00:55:50.760><c> can</c><00:55:50.960><c> get</c><00:55:51.119><c> set</c><00:55:51.359><c> up</c><00:55:51.760><c> on</c><00:55:51.920><c> on</c><00:55:52.200><c> here</c><00:55:52.960><c> um</c><00:55:53.960><c> but</c><00:55:54.480><c> oh</c>
+
+00:55:54.789 --> 00:55:54.799 align:start position:0%
+you can get set up on on here um but oh
+
+
+00:55:54.799 --> 00:55:55.710 align:start position:0%
+you can get set up on on here um but oh
+there's<00:55:54.960><c> one</c><00:55:55.079><c> other</c><00:55:55.200><c> thing</c><00:55:55.319><c> I</c><00:55:55.359><c> want</c><00:55:55.480><c> to</c><00:55:55.599><c> talk</c>
+
+00:55:55.710 --> 00:55:55.720 align:start position:0%
+there's one other thing I want to talk
+
+
+00:55:55.720 --> 00:55:56.829 align:start position:0%
+there's one other thing I want to talk
+about<00:55:55.920><c> real</c><00:55:56.079><c> quick</c>
+
+00:55:56.829 --> 00:55:56.839 align:start position:0%
+about real quick
+
+
+00:55:56.839 --> 00:55:59.150 align:start position:0%
+about real quick
+um<00:55:57.240><c> since</c><00:55:57.599><c> no</c><00:55:57.760><c> one</c><00:55:58.160><c> slamed</c><00:55:58.680><c> their</c><00:55:58.760><c> hand</c><00:55:58.920><c> up</c>
+
+00:55:59.150 --> 00:55:59.160 align:start position:0%
+um since no one slamed their hand up
+
+
+00:55:59.160 --> 00:56:02.190 align:start position:0%
+um since no one slamed their hand up
+there<00:55:59.960><c> um</c><00:56:00.599><c> there's</c><00:56:00.760><c> a</c><00:56:01.039><c> really</c><00:56:01.480><c> great</c><00:56:01.880><c> program</c>
+
+00:56:02.190 --> 00:56:02.200 align:start position:0%
+there um there's a really great program
+
+
+00:56:02.200 --> 00:56:03.630 align:start position:0%
+there um there's a really great program
+out<00:56:02.359><c> there</c><00:56:02.520><c> that</c><00:56:02.720><c> unfortunately</c><00:56:03.319><c> because</c>
+
+00:56:03.630 --> 00:56:03.640 align:start position:0%
+out there that unfortunately because
+
+
+00:56:03.640 --> 00:56:05.270 align:start position:0%
+out there that unfortunately because
+Network<00:56:03.960><c> situations</c><00:56:04.400><c> I</c><00:56:04.520><c> can't</c><00:56:04.640><c> demote</c><00:56:05.000><c> to</c><00:56:05.079><c> you</c>
+
+00:56:05.270 --> 00:56:05.280 align:start position:0%
+Network situations I can't demote to you
+
+
+00:56:05.280 --> 00:56:07.029 align:start position:0%
+Network situations I can't demote to you
+but<00:56:05.640><c> I</c><00:56:05.720><c> will</c><00:56:05.880><c> definitely</c><00:56:06.160><c> demote</c><00:56:06.599><c> to</c><00:56:06.760><c> anyone</c>
+
+00:56:07.029 --> 00:56:07.039 align:start position:0%
+but I will definitely demote to anyone
+
+
+00:56:07.039 --> 00:56:08.789 align:start position:0%
+but I will definitely demote to anyone
+on<00:56:07.200><c> Saturday</c><00:56:07.520><c> who</c><00:56:07.640><c> wants</c><00:56:07.839><c> to</c><00:56:07.920><c> see</c><00:56:08.079><c> it</c><00:56:08.440><c> Ada</c><00:56:08.680><c> a</c>
+
+00:56:08.789 --> 00:56:08.799 align:start position:0%
+on Saturday who wants to see it Ada a
+
+
+00:56:08.799 --> 00:56:10.430 align:start position:0%
+on Saturday who wants to see it Ada a
+fruit<00:56:09.039><c> the</c><00:56:09.119><c> same</c><00:56:09.319><c> people</c><00:56:09.599><c> who</c><00:56:10.079><c> um</c><00:56:10.240><c> you</c><00:56:10.319><c> know</c>
+
+00:56:10.430 --> 00:56:10.440 align:start position:0%
+fruit the same people who um you know
+
+
+00:56:10.440 --> 00:56:11.630 align:start position:0%
+fruit the same people who um you know
+you<00:56:10.520><c> could</c><00:56:10.640><c> buy</c><00:56:10.760><c> a</c><00:56:10.839><c> raspberry</c><00:56:11.200><c> piie</c><00:56:11.319><c> firm</c><00:56:11.520><c> and</c>
+
+00:56:11.630 --> 00:56:11.640 align:start position:0%
+you could buy a raspberry piie firm and
+
+
+00:56:11.640 --> 00:56:13.430 align:start position:0%
+you could buy a raspberry piie firm and
+lots<00:56:11.839><c> of</c><00:56:12.119><c> of</c><00:56:12.280><c> tools</c><00:56:12.520><c> for</c><00:56:12.680><c> it</c><00:56:13.119><c> they</c><00:56:13.240><c> have</c><00:56:13.319><c> a</c>
+
+00:56:13.430 --> 00:56:13.440 align:start position:0%
+lots of of tools for it they have a
+
+
+00:56:13.440 --> 00:56:15.309 align:start position:0%
+lots of of tools for it they have a
+great<00:56:13.599><c> thing</c><00:56:13.720><c> out</c><00:56:13.839><c> there</c><00:56:13.960><c> called</c><00:56:14.079><c> a</c><00:56:14.200><c> web</c><00:56:14.400><c> IDE</c>
+
+00:56:15.309 --> 00:56:15.319 align:start position:0%
+great thing out there called a web IDE
+
+
+00:56:15.319 --> 00:56:17.470 align:start position:0%
+great thing out there called a web IDE
+uh<00:56:15.400><c> for</c><00:56:15.559><c> the</c><00:56:15.680><c> Raspberry</c><00:56:16.160><c> Pi</c><00:56:16.839><c> uh</c><00:56:16.960><c> you</c><00:56:17.119><c> install</c>
+
+00:56:17.470 --> 00:56:17.480 align:start position:0%
+uh for the Raspberry Pi uh you install
+
+
+00:56:17.480 --> 00:56:18.910 align:start position:0%
+uh for the Raspberry Pi uh you install
+on<00:56:17.640><c> there</c><00:56:17.799><c> it</c><00:56:17.920><c> runs</c><00:56:18.240><c> you</c><00:56:18.359><c> put</c><00:56:18.480><c> your</c><00:56:18.559><c> Raspberry</c>
+
+00:56:18.910 --> 00:56:18.920 align:start position:0%
+on there it runs you put your Raspberry
+
+
+00:56:18.920 --> 00:56:20.630 align:start position:0%
+on there it runs you put your Raspberry
+Pi<00:56:19.039><c> in</c><00:56:19.119><c> the</c><00:56:19.240><c> corner</c><00:56:19.839><c> you</c><00:56:19.920><c> don't</c><00:56:20.119><c> ever</c><00:56:20.400><c> have</c><00:56:20.520><c> to</c>
+
+00:56:20.630 --> 00:56:20.640 align:start position:0%
+Pi in the corner you don't ever have to
+
+
+00:56:20.640 --> 00:56:22.029 align:start position:0%
+Pi in the corner you don't ever have to
+think<00:56:20.799><c> about</c><00:56:20.920><c> it</c><00:56:21.119><c> again</c><00:56:21.359><c> because</c><00:56:21.520><c> it</c><00:56:21.720><c> uses</c>
+
+00:56:22.029 --> 00:56:22.039 align:start position:0%
+think about it again because it uses
+
+
+00:56:22.039 --> 00:56:24.990 align:start position:0%
+think about it again because it uses
+aaji<00:56:22.680><c> to</c><00:56:23.480><c> broadcast</c><00:56:24.119><c> its</c><00:56:24.319><c> domain</c><00:56:24.599><c> name</c><00:56:24.799><c> out</c>
+
+00:56:24.990 --> 00:56:25.000 align:start position:0%
+aaji to broadcast its domain name out
+
+
+00:56:25.000 --> 00:56:27.270 align:start position:0%
+aaji to broadcast its domain name out
+there<00:56:25.280><c> so</c><00:56:25.960><c> you're</c><00:56:26.440><c> at</c><00:56:26.559><c> home</c><00:56:26.720><c> you</c><00:56:26.920><c> type</c><00:56:27.079><c> in</c>
+
+00:56:27.270 --> 00:56:27.280 align:start position:0%
+there so you're at home you type in
+
+
+00:56:27.280 --> 00:56:29.349 align:start position:0%
+there so you're at home you type in
+raspberry<00:56:27.720><c> pi.</c><00:56:28.079><c> local</c><00:56:28.839><c> gives</c><00:56:29.000><c> you</c><00:56:29.160><c> a</c>
+
+00:56:29.349 --> 00:56:29.359 align:start position:0%
+raspberry pi. local gives you a
+
+
+00:56:29.359 --> 00:56:32.270 align:start position:0%
+raspberry pi. local gives you a
+beautiful<00:56:29.960><c> web-based</c><00:56:30.880><c> uh</c><00:56:31.160><c> uh</c><00:56:31.319><c> IDE</c><00:56:31.720><c> to</c><00:56:31.920><c> develop</c>
+
+00:56:32.270 --> 00:56:32.280 align:start position:0%
+beautiful web-based uh uh IDE to develop
+
+
+00:56:32.280 --> 00:56:34.510 align:start position:0%
+beautiful web-based uh uh IDE to develop
+python<00:56:32.680><c> in</c><00:56:33.039><c> so</c><00:56:33.200><c> if</c><00:56:33.280><c> you're</c><00:56:33.400><c> a</c><00:56:33.559><c> python</c><00:56:34.280><c> uh</c>
+
+00:56:34.510 --> 00:56:34.520 align:start position:0%
+python in so if you're a python uh
+
+
+00:56:34.520 --> 00:56:37.150 align:start position:0%
+python in so if you're a python uh
+person<00:56:35.400><c> uh</c><00:56:35.520><c> it's</c><00:56:35.640><c> a</c><00:56:35.799><c> really</c><00:56:36.039><c> cool</c><00:56:36.280><c> tool</c><00:56:36.760><c> that</c>
+
+00:56:37.150 --> 00:56:37.160 align:start position:0%
+person uh it's a really cool tool that
+
+
+00:56:37.160 --> 00:56:39.470 align:start position:0%
+person uh it's a really cool tool that
+um<00:56:37.559><c> they</c><00:56:37.760><c> include</c><00:56:38.119><c> a</c><00:56:38.280><c> debugger</c><00:56:39.160><c> and</c><00:56:39.319><c> a</c>
+
+00:56:39.470 --> 00:56:39.480 align:start position:0%
+um they include a debugger and a
+
+
+00:56:39.480 --> 00:56:41.309 align:start position:0%
+um they include a debugger and a
+visualizer<00:56:40.000><c> for</c><00:56:40.160><c> the</c><00:56:40.319><c> code</c><00:56:40.680><c> all</c><00:56:40.880><c> within</c><00:56:41.160><c> the</c>
+
+00:56:41.309 --> 00:56:41.319 align:start position:0%
+visualizer for the code all within the
+
+
+00:56:41.319 --> 00:56:43.910 align:start position:0%
+visualizer for the code all within the
+web<00:56:41.640><c> browser</c><00:56:42.039><c> so</c><00:56:42.359><c> it's</c><00:56:42.599><c> another</c><00:56:42.960><c> good</c><00:56:43.160><c> way</c><00:56:43.280><c> to</c>
+
+00:56:43.910 --> 00:56:43.920 align:start position:0%
+web browser so it's another good way to
+
+
+00:56:43.920 --> 00:56:45.270 align:start position:0%
+web browser so it's another good way to
+uh<00:56:44.039><c> program</c><00:56:44.400><c> on</c><00:56:44.559><c> your</c><00:56:44.680><c> pie</c><00:56:44.880><c> that</c><00:56:45.000><c> I've</c><00:56:45.079><c> seen</c><00:56:45.200><c> a</c>
+
+00:56:45.270 --> 00:56:45.280 align:start position:0%
+uh program on your pie that I've seen a
+
+
+00:56:45.280 --> 00:56:47.390 align:start position:0%
+uh program on your pie that I've seen a
+lot<00:56:45.359><c> of</c><00:56:45.480><c> people</c><00:56:45.680><c> do</c><00:56:46.280><c> which</c><00:56:46.400><c> is</c><00:56:46.520><c> to</c><00:56:46.680><c> use</c><00:56:46.880><c> it</c><00:56:47.240><c> as</c>
+
+00:56:47.390 --> 00:56:47.400 align:start position:0%
+lot of people do which is to use it as
+
+
+00:56:47.400 --> 00:56:49.589 align:start position:0%
+lot of people do which is to use it as
+sort<00:56:47.599><c> of</c><00:56:47.680><c> a</c><00:56:47.880><c> remote</c><00:56:48.280><c> machine</c><00:56:48.760><c> either</c><00:56:49.039><c> sshing</c>
+
+00:56:49.589 --> 00:56:49.599 align:start position:0%
+sort of a remote machine either sshing
+
+
+00:56:49.599 --> 00:56:54.430 align:start position:0%
+sort of a remote machine either sshing
+into<00:56:49.839><c> it</c><00:56:50.000><c> developing</c><00:56:50.880><c> or</c><00:56:51.599><c> uh</c><00:56:51.880><c> uh</c><00:56:52.000><c> using</c><00:56:52.400><c> web</c><00:56:52.640><c> ID</c>
+
+00:56:54.430 --> 00:56:54.440 align:start position:0%
+into it developing or uh uh using web ID
+
+
+00:56:54.440 --> 00:56:56.670 align:start position:0%
+into it developing or uh uh using web ID
+anyway<00:56:55.440><c> there's</c><00:56:55.640><c> nothing</c><00:56:55.880><c> else</c><00:56:56.400><c> I'm</c><00:56:56.520><c> going</c><00:56:56.599><c> to</c>
+
+00:56:56.670 --> 00:56:56.680 align:start position:0%
+anyway there's nothing else I'm going to
+
+
+00:56:56.680 --> 00:57:02.950 align:start position:0%
+anyway there's nothing else I'm going to
+turn<00:56:56.880><c> over</c><00:56:57.000><c> to</c>
+
+00:57:02.950 --> 00:57:02.960 align:start position:0%
+
+
+
+00:57:02.960 --> 00:57:09.990 align:start position:0%
+
+[Applause]
+
+00:57:09.990 --> 00:57:10.000 align:start position:0%
+
+
+
+00:57:10.000 --> 00:57:13.470 align:start position:0%
+
+Peter<00:57:11.000><c> hello</c><00:57:11.720><c> uh</c><00:57:12.400><c> so</c><00:57:12.839><c> whenever</c><00:57:13.160><c> you</c><00:57:13.280><c> have</c><00:57:13.359><c> a</c>
+
+00:57:13.470 --> 00:57:13.480 align:start position:0%
+Peter hello uh so whenever you have a
+
+
+00:57:13.480 --> 00:57:16.390 align:start position:0%
+Peter hello uh so whenever you have a
+panel<00:57:13.760><c> of</c><00:57:13.920><c> people</c><00:57:14.520><c> um</c><00:57:14.720><c> and</c><00:57:14.839><c> of</c><00:57:14.960><c> course</c><00:57:15.119><c> I</c><00:57:15.400><c> had</c>
+
+00:57:16.390 --> 00:57:16.400 align:start position:0%
+panel of people um and of course I had
+
+
+00:57:16.400 --> 00:57:18.950 align:start position:0%
+panel of people um and of course I had
+met<00:57:16.839><c> dryb</c><00:57:17.720><c> before</c><00:57:18.000><c> tonight</c><00:57:18.520><c> but</c><00:57:18.640><c> whenever</c><00:57:18.880><c> you</c>
+
+00:57:18.950 --> 00:57:18.960 align:start position:0%
+met dryb before tonight but whenever you
+
+
+00:57:18.960 --> 00:57:19.990 align:start position:0%
+met dryb before tonight but whenever you
+have<00:57:19.039><c> a</c><00:57:19.119><c> panel</c><00:57:19.359><c> you're</c><00:57:19.480><c> gonna</c><00:57:19.680><c> have</c><00:57:19.760><c> to</c><00:57:19.880><c> have</c>
+
+00:57:19.990 --> 00:57:20.000 align:start position:0%
+have a panel you're gonna have to have
+
+
+00:57:20.000 --> 00:57:21.710 align:start position:0%
+have a panel you're gonna have to have
+people<00:57:20.240><c> that</c><00:57:20.400><c> contradict</c><00:57:20.839><c> each</c><00:57:20.960><c> other</c><00:57:21.200><c> so</c><00:57:21.599><c> I'm</c>
+
+00:57:21.710 --> 00:57:21.720 align:start position:0%
+people that contradict each other so I'm
+
+
+00:57:21.720 --> 00:57:23.390 align:start position:0%
+people that contradict each other so I'm
+going<00:57:21.799><c> to</c><00:57:21.920><c> start</c><00:57:22.079><c> out</c><00:57:22.240><c> by</c><00:57:22.359><c> saying</c><00:57:22.720><c> emac</c><00:57:23.160><c> works</c>
+
+00:57:23.390 --> 00:57:23.400 align:start position:0%
+going to start out by saying emac works
+
+
+00:57:23.400 --> 00:57:26.309 align:start position:0%
+going to start out by saying emac works
+great<00:57:23.599><c> on</c><00:57:23.760><c> Raspberry</c><00:57:24.200><c> Pie</c>
+
+00:57:26.309 --> 00:57:26.319 align:start position:0%
+great on Raspberry Pie
+
+
+00:57:26.319 --> 00:57:28.470 align:start position:0%
+great on Raspberry Pie
+PR<00:57:26.680><c> easy</c><00:57:27.559><c> but</c><00:57:27.680><c> I</c><00:57:27.760><c> don't</c><00:57:27.880><c> use</c><00:57:28.039><c> an</c><00:57:28.160><c> awesome</c>
+
+00:57:28.470 --> 00:57:28.480 align:start position:0%
+PR easy but I don't use an awesome
+
+
+00:57:28.480 --> 00:57:31.190 align:start position:0%
+PR easy but I don't use an awesome
+window<00:57:28.839><c> manager</c><00:57:29.160><c> and</c><00:57:29.280><c> that</c><00:57:29.400><c> might</c><00:57:29.520><c> be</c><00:57:29.640><c> the</c>
+
+00:57:31.190 --> 00:57:31.200 align:start position:0%
+window manager and that might be the
+
+
+00:57:31.200 --> 00:57:35.390 align:start position:0%
+window manager and that might be the
+difference<00:57:32.200><c> so</c><00:57:32.839><c> so</c><00:57:33.039><c> I'm</c><00:57:33.240><c> the</c><00:57:33.640><c> uh</c><00:57:34.319><c> exhibits</c><00:57:35.240><c> uh</c>
+
+00:57:35.390 --> 00:57:35.400 align:start position:0%
+difference so so I'm the uh exhibits uh
+
+
+00:57:35.400 --> 00:57:36.910 align:start position:0%
+difference so so I'm the uh exhibits uh
+engineer<00:57:35.799><c> at</c><00:57:35.920><c> the</c><00:57:36.039><c> Museum</c><00:57:36.319><c> of</c><00:57:36.440><c> Life</c><00:57:36.680><c> Science</c>
+
+00:57:36.910 --> 00:57:36.920 align:start position:0%
+engineer at the Museum of Life Science
+
+
+00:57:36.920 --> 00:57:39.150 align:start position:0%
+engineer at the Museum of Life Science
+and<00:57:37.079><c> Duram</c><00:57:38.000><c> and</c><00:57:38.160><c> I</c><00:57:38.400><c> have</c><00:57:38.559><c> to</c><00:57:38.640><c> work</c><00:57:38.799><c> with</c><00:57:38.960><c> a</c><00:57:39.039><c> lot</c>
+
+00:57:39.150 --> 00:57:39.160 align:start position:0%
+and Duram and I have to work with a lot
+
+
+00:57:39.160 --> 00:57:40.990 align:start position:0%
+and Duram and I have to work with a lot
+of<00:57:39.319><c> different</c><00:57:39.599><c> microcontrollers</c><00:57:40.520><c> and</c><00:57:40.720><c> such</c>
+
+00:57:40.990 --> 00:57:41.000 align:start position:0%
+of different microcontrollers and such
+
+
+00:57:41.000 --> 00:57:43.430 align:start position:0%
+of different microcontrollers and such
+like<00:57:41.359><c> uh</c><00:57:41.640><c> pick</c><00:57:41.880><c> microcontrollers</c><00:57:42.720><c> and</c><00:57:43.280><c> now</c>
+
+00:57:43.430 --> 00:57:43.440 align:start position:0%
+like uh pick microcontrollers and now
+
+
+00:57:43.440 --> 00:57:45.190 align:start position:0%
+like uh pick microcontrollers and now
+I'm<00:57:43.520><c> starting</c><00:57:43.760><c> to</c><00:57:43.839><c> use</c><00:57:44.000><c> Arduino</c><00:57:44.720><c> things</c><00:57:44.960><c> like</c>
+
+00:57:45.190 --> 00:57:45.200 align:start position:0%
+I'm starting to use Arduino things like
+
+
+00:57:45.200 --> 00:57:48.230 align:start position:0%
+I'm starting to use Arduino things like
+that<00:57:45.720><c> so</c><00:57:45.960><c> the</c><00:57:46.119><c> the</c><00:57:46.280><c> real</c><00:57:46.880><c> difference</c><00:57:47.400><c> the</c><00:57:48.119><c> what</c>
+
+00:57:48.230 --> 00:57:48.240 align:start position:0%
+that so the the real difference the what
+
+
+00:57:48.240 --> 00:57:49.829 align:start position:0%
+that so the the real difference the what
+a<00:57:48.359><c> microcontroller</c><00:57:49.039><c> is</c><00:57:49.160><c> is</c><00:57:49.359><c> a</c><00:57:49.480><c> computer</c>
+
+00:57:49.829 --> 00:57:49.839 align:start position:0%
+a microcontroller is is a computer
+
+
+00:57:49.839 --> 00:57:51.029 align:start position:0%
+a microcontroller is is a computer
+that's<00:57:50.000><c> so</c><00:57:50.240><c> simple</c><00:57:50.480><c> it</c><00:57:50.599><c> can't</c><00:57:50.799><c> have</c><00:57:50.920><c> an</c>
+
+00:57:51.029 --> 00:57:51.039 align:start position:0%
+that's so simple it can't have an
+
+
+00:57:51.039 --> 00:57:53.390 align:start position:0%
+that's so simple it can't have an
+operating<00:57:51.440><c> system</c><00:57:52.119><c> and</c><00:57:52.319><c> basically</c><00:57:53.079><c> anything</c>
+
+00:57:53.390 --> 00:57:53.400 align:start position:0%
+operating system and basically anything
+
+
+00:57:53.400 --> 00:57:54.549 align:start position:0%
+operating system and basically anything
+below<00:57:53.640><c> that</c><00:57:53.799><c> line</c><00:57:54.079><c> we</c><00:57:54.200><c> call</c><00:57:54.359><c> it</c><00:57:54.440><c> a</c>
+
+00:57:54.549 --> 00:57:54.559 align:start position:0%
+below that line we call it a
+
+
+00:57:54.559 --> 00:57:56.789 align:start position:0%
+below that line we call it a
+microcontroller<00:57:55.559><c> and</c><00:57:56.240><c> last</c><00:57:56.400><c> couple</c><00:57:56.640><c> years</c>
+
+00:57:56.789 --> 00:57:56.799 align:start position:0%
+microcontroller and last couple years
+
+
+00:57:56.799 --> 00:57:58.109 align:start position:0%
+microcontroller and last couple years
+microcontrollers<00:57:57.359><c> have</c><00:57:57.480><c> got</c><00:57:57.680><c> more</c><00:57:57.799><c> and</c><00:57:57.920><c> more</c>
+
+00:57:58.109 --> 00:57:58.119 align:start position:0%
+microcontrollers have got more and more
+
+
+00:57:58.119 --> 00:57:59.190 align:start position:0%
+microcontrollers have got more and more
+complicated<00:57:58.559><c> we</c><00:57:58.680><c> have</c><00:57:58.799><c> things</c><00:57:58.920><c> like</c><00:57:59.039><c> the</c>
+
+00:57:59.190 --> 00:57:59.200 align:start position:0%
+complicated we have things like the
+
+
+00:57:59.200 --> 00:58:01.589 align:start position:0%
+complicated we have things like the
+Arduino<00:57:59.640><c> and</c><00:57:59.799><c> really</c><00:58:00.000><c> nice</c><00:58:00.280><c> things</c><00:58:01.200><c> um</c><00:58:01.440><c> but</c>
+
+00:58:01.589 --> 00:58:01.599 align:start position:0%
+Arduino and really nice things um but
+
+
+00:58:01.599 --> 00:58:04.349 align:start position:0%
+Arduino and really nice things um but
+I'm<00:58:01.720><c> always</c><00:58:02.000><c> looking</c><00:58:02.760><c> for</c><00:58:03.760><c> uh</c><00:58:03.880><c> where</c><00:58:04.079><c> does</c><00:58:04.240><c> the</c>
+
+00:58:04.349 --> 00:58:04.359 align:start position:0%
+I'm always looking for uh where does the
+
+
+00:58:04.359 --> 00:58:05.990 align:start position:0%
+I'm always looking for uh where does the
+computer<00:58:04.640><c> with</c><00:58:04.760><c> an</c><00:58:04.880><c> operating</c><00:58:05.200><c> system</c><00:58:05.480><c> start</c>
+
+00:58:05.990 --> 00:58:06.000 align:start position:0%
+computer with an operating system start
+
+
+00:58:06.000 --> 00:58:07.430 align:start position:0%
+computer with an operating system start
+because<00:58:06.359><c> I</c><00:58:06.440><c> would</c><00:58:06.640><c> love</c><00:58:06.799><c> to</c><00:58:06.920><c> be</c><00:58:07.039><c> working</c><00:58:07.240><c> on</c><00:58:07.359><c> a</c>
+
+00:58:07.430 --> 00:58:07.440 align:start position:0%
+because I would love to be working on a
+
+
+00:58:07.440 --> 00:58:09.710 align:start position:0%
+because I would love to be working on a
+microcontroller<00:58:08.160><c> and</c><00:58:08.319><c> just</c><00:58:08.480><c> fire</c><00:58:08.760><c> up</c><00:58:08.920><c> emac</c>
+
+00:58:09.710 --> 00:58:09.720 align:start position:0%
+microcontroller and just fire up emac
+
+
+00:58:09.720 --> 00:58:11.510 align:start position:0%
+microcontroller and just fire up emac
+change<00:58:10.119><c> something</c><00:58:10.559><c> and</c><00:58:10.680><c> write</c><00:58:10.880><c> it</c><00:58:10.960><c> out</c><00:58:11.200><c> and</c><00:58:11.280><c> so</c>
+
+00:58:11.510 --> 00:58:11.520 align:start position:0%
+change something and write it out and so
+
+
+00:58:11.520 --> 00:58:13.270 align:start position:0%
+change something and write it out and so
+again<00:58:11.799><c> I</c><00:58:12.160><c> having</c><00:58:12.319><c> a</c><00:58:12.440><c> development</c><00:58:12.960><c> system</c>
+
+00:58:13.270 --> 00:58:13.280 align:start position:0%
+again I having a development system
+
+
+00:58:13.280 --> 00:58:15.549 align:start position:0%
+again I having a development system
+that's<00:58:13.440><c> also</c><00:58:13.680><c> your</c><00:58:13.880><c> target</c><00:58:14.200><c> systems</c><00:58:14.799><c> right</c><00:58:15.319><c> so</c>
+
+00:58:15.549 --> 00:58:15.559 align:start position:0%
+that's also your target systems right so
+
+
+00:58:15.559 --> 00:58:17.230 align:start position:0%
+that's also your target systems right so
+my<00:58:15.760><c> question</c><00:58:16.079><c> that</c><00:58:16.280><c> I</c><00:58:16.520><c> that</c><00:58:16.640><c> I</c><00:58:16.839><c> tried</c><00:58:17.079><c> to</c>
+
+00:58:17.230 --> 00:58:17.240 align:start position:0%
+my question that I that I tried to
+
+
+00:58:17.240 --> 00:58:20.670 align:start position:0%
+my question that I that I tried to
+answer<00:58:17.799><c> uh</c><00:58:18.440><c> the</c><00:58:18.559><c> last</c><00:58:19.240><c> sparkon</c><00:58:20.240><c> and</c><00:58:20.480><c> what</c><00:58:20.559><c> I</c>
+
+00:58:20.670 --> 00:58:20.680 align:start position:0%
+answer uh the last sparkon and what I
+
+
+00:58:20.680 --> 00:58:22.710 align:start position:0%
+answer uh the last sparkon and what I
+built<00:58:20.920><c> this</c><00:58:21.079><c> thing</c><00:58:21.240><c> for</c><00:58:21.880><c> is</c><00:58:22.039><c> can</c><00:58:22.599><c> high</c>
+
+00:58:22.710 --> 00:58:22.720 align:start position:0%
+built this thing for is can high
+
+
+00:58:22.720 --> 00:58:24.589 align:start position:0%
+built this thing for is can high
+performance<00:58:23.079><c> significant</c><00:58:23.559><c> image</c><00:58:23.880><c> processing</c>
+
+00:58:24.589 --> 00:58:24.599 align:start position:0%
+performance significant image processing
+
+
+00:58:24.599 --> 00:58:26.150 align:start position:0%
+performance significant image processing
+and<00:58:24.760><c> do</c><00:58:24.960><c> something</c><00:58:25.160><c> useful</c><00:58:25.480><c> with</c><00:58:25.599><c> some</c><00:58:25.720><c> Motors</c>
+
+00:58:26.150 --> 00:58:26.160 align:start position:0%
+and do something useful with some Motors
+
+
+00:58:26.160 --> 00:58:29.270 align:start position:0%
+and do something useful with some Motors
+so<00:58:26.880><c> I</c><00:58:26.960><c> work</c><00:58:27.240><c> with</c><00:58:27.599><c> um</c><00:58:28.400><c> microcontrollers</c><00:58:29.119><c> that</c>
+
+00:58:29.270 --> 00:58:29.280 align:start position:0%
+so I work with um microcontrollers that
+
+
+00:58:29.280 --> 00:58:30.910 align:start position:0%
+so I work with um microcontrollers that
+do<00:58:29.440><c> stepper</c><00:58:29.799><c> Motors</c><00:58:30.119><c> and</c><00:58:30.240><c> move</c><00:58:30.440><c> things</c><00:58:30.640><c> around</c>
+
+00:58:30.910 --> 00:58:30.920 align:start position:0%
+do stepper Motors and move things around
+
+
+00:58:30.920 --> 00:58:32.349 align:start position:0%
+do stepper Motors and move things around
+I<00:58:31.000><c> thought</c><00:58:31.200><c> my</c><00:58:31.319><c> right</c><00:58:31.520><c> R</c><00:58:31.760><c> pie</c><00:58:31.920><c> needs</c><00:58:32.079><c> to</c><00:58:32.200><c> have</c>
+
+00:58:32.349 --> 00:58:32.359 align:start position:0%
+I thought my right R pie needs to have
+
+
+00:58:32.359 --> 00:58:33.910 align:start position:0%
+I thought my right R pie needs to have
+hands<00:58:32.760><c> needs</c><00:58:32.960><c> to</c><00:58:33.039><c> be</c><00:58:33.119><c> able</c><00:58:33.280><c> to</c><00:58:33.359><c> do</c><00:58:33.599><c> stuff</c><00:58:33.799><c> and</c>
+
+00:58:33.910 --> 00:58:33.920 align:start position:0%
+hands needs to be able to do stuff and
+
+
+00:58:33.920 --> 00:58:36.470 align:start position:0%
+hands needs to be able to do stuff and
+move<00:58:34.240><c> stuff</c><00:58:34.480><c> around</c><00:58:35.440><c> um</c><00:58:35.680><c> and</c><00:58:35.839><c> of</c><00:58:36.000><c> course</c><00:58:36.359><c> then</c>
+
+00:58:36.470 --> 00:58:36.480 align:start position:0%
+move stuff around um and of course then
+
+
+00:58:36.480 --> 00:58:38.390 align:start position:0%
+move stuff around um and of course then
+the<00:58:36.599><c> real</c><00:58:36.920><c> challenge</c><00:58:37.280><c> is</c><00:58:37.559><c> okay</c><00:58:37.799><c> how</c><00:58:38.079><c> capable</c>
+
+00:58:38.390 --> 00:58:38.400 align:start position:0%
+the real challenge is okay how capable
+
+
+00:58:38.400 --> 00:58:40.109 align:start position:0%
+the real challenge is okay how capable
+is<00:58:38.520><c> the</c><00:58:38.680><c> machine</c><00:58:39.359><c> can</c><00:58:39.480><c> we</c><00:58:39.599><c> do</c><00:58:39.720><c> something</c><00:58:39.960><c> like</c>
+
+00:58:40.109 --> 00:58:40.119 align:start position:0%
+is the machine can we do something like
+
+
+00:58:40.119 --> 00:58:41.870 align:start position:0%
+is the machine can we do something like
+image<00:58:40.440><c> processing</c><00:58:40.839><c> on</c><00:58:41.000><c> it</c><00:58:41.119><c> so</c><00:58:41.319><c> can</c><00:58:41.440><c> we</c><00:58:41.559><c> give</c><00:58:41.680><c> it</c>
+
+00:58:41.870 --> 00:58:41.880 align:start position:0%
+image processing on it so can we give it
+
+
+00:58:41.880 --> 00:58:44.150 align:start position:0%
+image processing on it so can we give it
+eyes<00:58:42.240><c> to</c>
+
+00:58:44.150 --> 00:58:44.160 align:start position:0%
+eyes to
+
+
+00:58:44.160 --> 00:58:46.430 align:start position:0%
+eyes to
+next<00:58:45.160><c> so</c><00:58:45.480><c> there's</c><00:58:45.720><c> one</c><00:58:45.880><c> other</c><00:58:46.079><c> chip</c><00:58:46.319><c> you're</c>
+
+00:58:46.430 --> 00:58:46.440 align:start position:0%
+next so there's one other chip you're
+
+
+00:58:46.440 --> 00:58:48.109 align:start position:0%
+next so there's one other chip you're
+going<00:58:46.559><c> to</c><00:58:46.680><c> need</c><00:58:46.920><c> so</c><00:58:47.079><c> you</c><00:58:47.160><c> got</c><00:58:47.280><c> your</c><00:58:47.440><c> raspberry</c>
+
+00:58:48.109 --> 00:58:48.119 align:start position:0%
+going to need so you got your raspberry
+
+
+00:58:48.119 --> 00:58:50.829 align:start position:0%
+going to need so you got your raspberry
+piie<00:58:49.119><c> but</c><00:58:49.520><c> if</c><00:58:49.640><c> you</c><00:58:49.799><c> take</c><00:58:50.079><c> the</c><00:58:50.400><c> one</c><00:58:50.520><c> of</c><00:58:50.680><c> those</c>
+
+00:58:50.829 --> 00:58:50.839 align:start position:0%
+piie but if you take the one of those
+
+
+00:58:50.839 --> 00:58:53.510 align:start position:0%
+piie but if you take the one of those
+GPO<00:58:51.480><c> pins</c><00:58:52.160><c> and</c><00:58:52.280><c> you</c><00:58:52.440><c> try</c><00:58:52.599><c> to</c><00:58:52.839><c> turn</c><00:58:53.200><c> something</c>
+
+00:58:53.510 --> 00:58:53.520 align:start position:0%
+GPO pins and you try to turn something
+
+
+00:58:53.520 --> 00:58:55.430 align:start position:0%
+GPO pins and you try to turn something
+on<00:58:53.839><c> with</c><00:58:53.960><c> it</c><00:58:54.599><c> uh</c><00:58:54.680><c> you</c><00:58:54.799><c> realize</c><00:58:55.119><c> it's</c><00:58:55.240><c> only</c><00:58:55.359><c> a</c>
+
+00:58:55.430 --> 00:58:55.440 align:start position:0%
+on with it uh you realize it's only a
+
+
+00:58:55.440 --> 00:58:57.029 align:start position:0%
+on with it uh you realize it's only a
+few<00:58:55.599><c> milli</c><00:58:56.319><c> and</c><00:58:56.440><c> you</c><00:58:56.559><c> really</c><00:58:56.720><c> can't</c><00:58:56.880><c> do</c>
+
+00:58:57.029 --> 00:58:57.039 align:start position:0%
+few milli and you really can't do
+
+
+00:58:57.039 --> 00:58:59.230 align:start position:0%
+few milli and you really can't do
+anything<00:58:57.319><c> maybe</c><00:58:57.559><c> a</c><00:58:57.799><c> maybe</c>
+
+00:58:59.230 --> 00:58:59.240 align:start position:0%
+anything maybe a maybe
+
+
+00:58:59.240 --> 00:59:02.470 align:start position:0%
+anything maybe a maybe
+a<00:59:00.240><c> pager</c><00:59:00.680><c> motor</c><00:59:01.119><c> you</c><00:59:01.240><c> know</c><00:59:01.520><c> from</c><00:59:01.680><c> a</c><00:59:01.880><c> from</c><00:59:02.039><c> a</c>
+
+00:59:02.470 --> 00:59:02.480 align:start position:0%
+a pager motor you know from a from a
+
+
+00:59:02.480 --> 00:59:04.750 align:start position:0%
+a pager motor you know from a from a
+thing<00:59:02.920><c> a</c><00:59:03.039><c> little</c><00:59:03.359><c> tiny</c><00:59:04.359><c> one</c><00:59:04.480><c> of</c><00:59:04.559><c> those</c>
+
+00:59:04.750 --> 00:59:04.760 align:start position:0%
+thing a little tiny one of those
+
+
+00:59:04.760 --> 00:59:06.270 align:start position:0%
+thing a little tiny one of those
+vibrating<00:59:05.160><c> motors</c><00:59:05.480><c> from</c><00:59:05.640><c> a</c><00:59:05.799><c> cell</c><00:59:05.960><c> phone</c><00:59:06.160><c> or</c>
+
+00:59:06.270 --> 00:59:06.280 align:start position:0%
+vibrating motors from a cell phone or
+
+
+00:59:06.280 --> 00:59:07.950 align:start position:0%
+vibrating motors from a cell phone or
+something<00:59:06.520><c> like</c><00:59:06.720><c> that</c><00:59:07.079><c> but</c><00:59:07.440><c> you</c><00:59:07.599><c> really</c><00:59:07.760><c> don't</c>
+
+00:59:07.950 --> 00:59:07.960 align:start position:0%
+something like that but you really don't
+
+
+00:59:07.960 --> 00:59:11.230 align:start position:0%
+something like that but you really don't
+have<00:59:08.160><c> enough</c><00:59:08.359><c> current</c><00:59:08.799><c> to</c><00:59:09.760><c> run</c><00:59:10.440><c> any</c>
+
+00:59:11.230 --> 00:59:11.240 align:start position:0%
+have enough current to run any
+
+
+00:59:11.240 --> 00:59:12.750 align:start position:0%
+have enough current to run any
+reasonable<00:59:11.680><c> piece</c><00:59:11.839><c> of</c><00:59:11.960><c> equipment</c><00:59:12.359><c> so</c><00:59:12.599><c> this</c>
+
+00:59:12.750 --> 00:59:12.760 align:start position:0%
+reasonable piece of equipment so this
+
+
+00:59:12.760 --> 00:59:15.870 align:start position:0%
+reasonable piece of equipment so this
+chip<00:59:13.079><c> uln</c><00:59:13.760><c> 2003</c><00:59:14.160><c> is</c><00:59:14.240><c> the</c><00:59:14.359><c> one</c><00:59:14.520><c> I</c><00:59:14.680><c> use</c><00:59:15.520><c> uh</c><00:59:15.680><c> gives</c>
+
+00:59:15.870 --> 00:59:15.880 align:start position:0%
+chip uln 2003 is the one I use uh gives
+
+
+00:59:15.880 --> 00:59:18.750 align:start position:0%
+chip uln 2003 is the one I use uh gives
+you<00:59:16.319><c> seven</c><00:59:17.319><c> Uh</c><00:59:17.520><c> current</c><00:59:17.880><c> amplifiers</c>
+
+00:59:18.750 --> 00:59:18.760 align:start position:0%
+you seven Uh current amplifiers
+
+
+00:59:18.760 --> 00:59:22.230 align:start position:0%
+you seven Uh current amplifiers
+basically<00:59:19.559><c> so</c><00:59:19.720><c> you</c><00:59:19.880><c> hook</c><00:59:20.559><c> the</c><00:59:20.720><c> output</c><00:59:21.559><c> to</c>
+
+00:59:22.230 --> 00:59:22.240 align:start position:0%
+basically so you hook the output to
+
+
+00:59:22.240 --> 00:59:24.029 align:start position:0%
+basically so you hook the output to
+whatever<00:59:22.599><c> your</c><00:59:22.839><c> powered</c><00:59:23.200><c> device</c><00:59:23.559><c> is</c><00:59:23.799><c> and</c><00:59:23.880><c> then</c>
+
+00:59:24.029 --> 00:59:24.039 align:start position:0%
+whatever your powered device is and then
+
+
+00:59:24.039 --> 00:59:25.270 align:start position:0%
+whatever your powered device is and then
+the<00:59:24.160><c> other</c><00:59:24.359><c> side</c><00:59:24.520><c> of</c><00:59:24.599><c> your</c><00:59:24.720><c> device</c><00:59:24.960><c> you</c><00:59:25.119><c> hook</c>
+
+00:59:25.270 --> 00:59:25.280 align:start position:0%
+the other side of your device you hook
+
+
+00:59:25.280 --> 00:59:27.789 align:start position:0%
+the other side of your device you hook
+to<00:59:25.400><c> say</c><00:59:25.559><c> 12</c><00:59:25.799><c> vol</c><00:59:26.440><c> or</c><00:59:26.599><c> 15</c><00:59:27.000><c> volts</c><00:59:27.400><c> you</c><00:59:27.480><c> can</c><00:59:27.640><c> hook</c>
+
+00:59:27.789 --> 00:59:27.799 align:start position:0%
+to say 12 vol or 15 volts you can hook
+
+
+00:59:27.799 --> 00:59:29.069 align:start position:0%
+to say 12 vol or 15 volts you can hook
+it<00:59:27.880><c> to</c><00:59:27.960><c> 30</c><00:59:28.240><c> volts</c><00:59:28.480><c> you</c><00:59:28.520><c> can</c><00:59:28.640><c> hook</c><00:59:28.760><c> it</c><00:59:28.799><c> to</c><00:59:28.920><c> any</c>
+
+00:59:29.069 --> 00:59:29.079 align:start position:0%
+it to 30 volts you can hook it to any
+
+
+00:59:29.079 --> 00:59:30.710 align:start position:0%
+it to 30 volts you can hook it to any
+voltage<00:59:29.400><c> you</c><00:59:29.520><c> want</c><00:59:30.000><c> and</c><00:59:30.119><c> that's</c><00:59:30.319><c> the</c><00:59:30.440><c> beauty</c>
+
+00:59:30.710 --> 00:59:30.720 align:start position:0%
+voltage you want and that's the beauty
+
+
+00:59:30.720 --> 00:59:32.630 align:start position:0%
+voltage you want and that's the beauty
+of<00:59:30.880><c> this</c><00:59:31.079><c> thing</c><00:59:31.520><c> so</c><00:59:31.640><c> you</c><00:59:31.720><c> can</c><00:59:31.839><c> have</c><00:59:32.000><c> 30</c><00:59:32.319><c> volts</c>
+
+00:59:32.630 --> 00:59:32.640 align:start position:0%
+of this thing so you can have 30 volts
+
+
+00:59:32.640 --> 00:59:36.109 align:start position:0%
+of this thing so you can have 30 volts
+driving<00:59:33.480><c> a</c><00:59:34.480><c> high</c><00:59:34.680><c> current</c><00:59:34.920><c> motor</c><00:59:35.200><c> or</c><00:59:35.359><c> whatever</c>
+
+00:59:36.109 --> 00:59:36.119 align:start position:0%
+driving a high current motor or whatever
+
+
+00:59:36.119 --> 00:59:38.029 align:start position:0%
+driving a high current motor or whatever
+on<00:59:36.319><c> the</c><00:59:36.520><c> right</c><00:59:36.799><c> side</c><00:59:36.960><c> of</c><00:59:37.119><c> this</c><00:59:37.319><c> chip</c><00:59:37.839><c> and</c><00:59:37.960><c> on</c>
+
+00:59:38.029 --> 00:59:38.039 align:start position:0%
+on the right side of this chip and on
+
+
+00:59:38.039 --> 00:59:40.270 align:start position:0%
+on the right side of this chip and on
+the<00:59:38.200><c> left</c><00:59:38.440><c> side</c><00:59:38.559><c> of</c><00:59:38.680><c> the</c><00:59:38.799><c> chip</c><00:59:39.160><c> you've</c><00:59:39.400><c> got</c><00:59:39.640><c> 3.3</c>
+
+00:59:40.270 --> 00:59:40.280 align:start position:0%
+the left side of the chip you've got 3.3
+
+
+00:59:40.280 --> 00:59:42.349 align:start position:0%
+the left side of the chip you've got 3.3
+volts<00:59:40.599><c> coming</c><00:59:40.799><c> from</c><00:59:40.960><c> your</c><00:59:41.079><c> Arduino</c><00:59:41.799><c> I</c><00:59:41.880><c> mean</c>
+
+00:59:42.349 --> 00:59:42.359 align:start position:0%
+volts coming from your Arduino I mean
+
+
+00:59:42.359 --> 00:59:44.150 align:start position:0%
+volts coming from your Arduino I mean
+well<00:59:42.480><c> Arduino</c><00:59:42.920><c> or</c><00:59:43.039><c> Raspberry</c><00:59:43.480><c> Pi</c><00:59:43.720><c> so</c><00:59:43.920><c> whatever</c>
+
+00:59:44.150 --> 00:59:44.160 align:start position:0%
+well Arduino or Raspberry Pi so whatever
+
+
+00:59:44.160 --> 00:59:47.470 align:start position:0%
+well Arduino or Raspberry Pi so whatever
+your<00:59:44.559><c> lowlevel</c><00:59:45.280><c> controller</c><00:59:45.720><c> is</c><00:59:46.359><c> so</c><00:59:46.920><c> so</c><00:59:47.319><c> this</c>
+
+00:59:47.470 --> 00:59:47.480 align:start position:0%
+your lowlevel controller is so so this
+
+
+00:59:47.480 --> 00:59:49.309 align:start position:0%
+your lowlevel controller is so so this
+thing<00:59:47.680><c> lets</c><00:59:47.920><c> you</c><00:59:48.280><c> interface</c><00:59:48.799><c> with</c><00:59:49.000><c> another</c>
+
+00:59:49.309 --> 00:59:49.319 align:start position:0%
+thing lets you interface with another
+
+
+00:59:49.319 --> 00:59:51.430 align:start position:0%
+thing lets you interface with another
+voltage<00:59:49.920><c> and</c><00:59:50.240><c> more</c><00:59:50.400><c> importantly</c><00:59:51.240><c> High</c>
+
+00:59:51.430 --> 00:59:51.440 align:start position:0%
+voltage and more importantly High
+
+
+00:59:51.440 --> 00:59:53.470 align:start position:0%
+voltage and more importantly High
+current<00:59:52.079><c> so</c><00:59:52.280><c> let's</c><00:59:52.480><c> go</c><00:59:52.559><c> to</c><00:59:52.680><c> the</c><00:59:52.799><c> next</c><00:59:52.960><c> slide</c>
+
+00:59:53.470 --> 00:59:53.480 align:start position:0%
+current so let's go to the next slide
+
+
+00:59:53.480 --> 00:59:55.230 align:start position:0%
+current so let's go to the next slide
+and<00:59:53.599><c> to</c><00:59:53.720><c> give</c><00:59:53.880><c> everybody</c><00:59:54.160><c> a</c><00:59:54.359><c> quick</c><00:59:54.599><c> lesson</c><00:59:55.039><c> in</c>
+
+00:59:55.230 --> 00:59:55.240 align:start position:0%
+and to give everybody a quick lesson in
+
+
+00:59:55.240 --> 00:59:56.630 align:start position:0%
+and to give everybody a quick lesson in
+transistor<00:59:55.760><c> Theory</c><00:59:56.079><c> in</c><00:59:56.160><c> case</c><00:59:56.319><c> you</c><00:59:56.400><c> don't</c><00:59:56.520><c> know</c>
+
+00:59:56.630 --> 00:59:56.640 align:start position:0%
+transistor Theory in case you don't know
+
+
+00:59:56.640 --> 00:59:59.390 align:start position:0%
+transistor Theory in case you don't know
+how<00:59:56.960><c> transistors</c><00:59:57.480><c> work</c><00:59:57.720><c> I'm</c><00:59:57.839><c> just</c><00:59:58.039><c> gonna</c><00:59:59.039><c> okay</c>
+
+00:59:59.390 --> 00:59:59.400 align:start position:0%
+how transistors work I'm just gonna okay
+
+
+00:59:59.400 --> 01:00:00.870 align:start position:0%
+how transistors work I'm just gonna okay
+so<00:59:59.559><c> a</c><00:59:59.680><c> transistor</c><01:00:00.200><c> has</c><01:00:00.280><c> a</c><01:00:00.440><c> thing</c><01:00:00.559><c> called</c><01:00:00.720><c> a</c>
+
+01:00:00.870 --> 01:00:00.880 align:start position:0%
+so a transistor has a thing called a
+
+
+01:00:00.880 --> 01:00:03.789 align:start position:0%
+so a transistor has a thing called a
+base<01:00:01.200><c> the</c><01:00:01.359><c> Old</c><01:00:01.640><c> ST</c><01:00:02.400><c> old</c><01:00:02.640><c> npn</c><01:00:03.280><c> silicon</c>
+
+01:00:03.789 --> 01:00:03.799 align:start position:0%
+base the Old ST old npn silicon
+
+
+01:00:03.799 --> 01:00:06.230 align:start position:0%
+base the Old ST old npn silicon
+transistor<01:00:04.799><c> a</c><01:00:04.960><c> small</c><01:00:05.280><c> amount</c><01:00:05.480><c> of</c><01:00:05.599><c> current</c><01:00:05.960><c> in</c>
+
+01:00:06.230 --> 01:00:06.240 align:start position:0%
+transistor a small amount of current in
+
+
+01:00:06.240 --> 01:00:08.870 align:start position:0%
+transistor a small amount of current in
+here<01:00:07.119><c> will</c><01:00:07.359><c> turn</c><01:00:07.680><c> on</c><01:00:07.920><c> and</c><01:00:08.160><c> allow</c><01:00:08.440><c> a</c><01:00:08.599><c> large</c>
+
+01:00:08.870 --> 01:00:08.880 align:start position:0%
+here will turn on and allow a large
+
+
+01:00:08.880 --> 01:00:10.430 align:start position:0%
+here will turn on and allow a large
+amount<01:00:09.039><c> of</c><01:00:09.160><c> current</c><01:00:09.440><c> to</c><01:00:09.680><c> flow</c><01:00:10.160><c> from</c><01:00:10.280><c> the</c>
+
+01:00:10.430 --> 01:00:10.440 align:start position:0%
+amount of current to flow from the
+
+
+01:00:10.440 --> 01:00:13.029 align:start position:0%
+amount of current to flow from the
+collector<01:00:10.799><c> to</c><01:00:10.960><c> the</c><01:00:11.079><c> emitter</c><01:00:12.039><c> so</c><01:00:12.240><c> in</c><01:00:12.359><c> general</c>
+
+01:00:13.029 --> 01:00:13.039 align:start position:0%
+collector to the emitter so in general
+
+
+01:00:13.039 --> 01:00:15.870 align:start position:0%
+collector to the emitter so in general
+you<01:00:13.200><c> youve</c><01:00:13.359><c> got</c><01:00:13.559><c> 0</c><01:00:13.799><c> to</c><01:00:13.960><c> 5</c><01:00:14.160><c> volts</c><01:00:14.559><c> here</c><01:00:15.200><c> put</c><01:00:15.359><c> in</c><01:00:15.799><c> a</c>
+
+01:00:15.870 --> 01:00:15.880 align:start position:0%
+you youve got 0 to 5 volts here put in a
+
+
+01:00:15.880 --> 01:00:18.589 align:start position:0%
+you youve got 0 to 5 volts here put in a
+few<01:00:16.079><c> milliamps</c><01:00:16.680><c> maybe</c><01:00:16.880><c> 10</c><01:00:17.200><c> milliamps</c><01:00:18.200><c> and</c>
+
+01:00:18.589 --> 01:00:18.599 align:start position:0%
+few milliamps maybe 10 milliamps and
+
+
+01:00:18.599 --> 01:00:20.270 align:start position:0%
+few milliamps maybe 10 milliamps and
+you've<01:00:18.839><c> got</c><01:00:19.079><c> some</c><01:00:19.280><c> other</c><01:00:19.559><c> higher</c><01:00:19.799><c> voltage</c>
+
+01:00:20.270 --> 01:00:20.280 align:start position:0%
+you've got some other higher voltage
+
+
+01:00:20.280 --> 01:00:22.270 align:start position:0%
+you've got some other higher voltage
+here<01:00:20.480><c> through</c><01:00:20.640><c> a</c><01:00:20.799><c> resistor</c><01:00:21.440><c> and</c><01:00:21.720><c> it'll</c><01:00:22.000><c> allow</c>
+
+01:00:22.270 --> 01:00:22.280 align:start position:0%
+here through a resistor and it'll allow
+
+
+01:00:22.280 --> 01:00:25.589 align:start position:0%
+here through a resistor and it'll allow
+you<01:00:22.400><c> to</c><01:00:22.640><c> have</c><01:00:23.039><c> uh</c><01:00:23.599><c> around</c><01:00:23.880><c> 11</c><01:00:24.280><c> volts</c><01:00:25.039><c> at</c><01:00:25.400><c> 200</c>
+
+01:00:25.589 --> 01:00:25.599 align:start position:0%
+you to have uh around 11 volts at 200
+
+
+01:00:25.599 --> 01:00:27.829 align:start position:0%
+you to have uh around 11 volts at 200
+mil<01:00:26.200><c> and</c><01:00:26.280><c> the</c><01:00:26.400><c> reason</c><01:00:26.839><c> it's</c><01:00:27.000><c> 11</c><01:00:27.280><c> Vols</c><01:00:27.559><c> instead</c>
+
+01:00:27.829 --> 01:00:27.839 align:start position:0%
+mil and the reason it's 11 Vols instead
+
+
+01:00:27.839 --> 01:00:30.390 align:start position:0%
+mil and the reason it's 11 Vols instead
+of<01:00:28.000><c> 12</c><01:00:28.760><c> is</c><01:00:28.960><c> because</c><01:00:29.200><c> you</c><01:00:29.359><c> lose</c><01:00:29.599><c> about</c><01:00:29.799><c> a</c><01:00:29.960><c> volt</c>
+
+01:00:30.390 --> 01:00:30.400 align:start position:0%
+of 12 is because you lose about a volt
+
+
+01:00:30.400 --> 01:00:32.750 align:start position:0%
+of 12 is because you lose about a volt
+over<01:00:30.599><c> the</c><01:00:30.720><c> transistor</c><01:00:31.720><c> what</c><01:00:31.839><c> it</c><01:00:32.000><c> does</c><01:00:32.200><c> is</c><01:00:32.359><c> it</c>
+
+01:00:32.750 --> 01:00:32.760 align:start position:0%
+over the transistor what it does is it
+
+
+01:00:32.760 --> 01:00:34.910 align:start position:0%
+over the transistor what it does is it
+gives<01:00:33.000><c> you</c><01:00:33.559><c> sometimes</c><01:00:33.960><c> up</c><01:00:34.079><c> to</c><01:00:34.240><c> like</c><01:00:34.400><c> a</c><01:00:34.559><c> 100</c>
+
+01:00:34.910 --> 01:00:34.920 align:start position:0%
+gives you sometimes up to like a 100
+
+
+01:00:34.920 --> 01:00:37.870 align:start position:0%
+gives you sometimes up to like a 100
+times<01:00:35.359><c> more</c><01:00:35.880><c> current</c><01:00:36.880><c> in</c><01:00:37.119><c> this</c><01:00:37.400><c> path</c><01:00:37.720><c> you're</c>
+
+01:00:37.870 --> 01:00:37.880 align:start position:0%
+times more current in this path you're
+
+
+01:00:37.880 --> 01:00:39.990 align:start position:0%
+times more current in this path you're
+you're<01:00:38.039><c> just</c><01:00:38.240><c> posing</c><01:00:38.599><c> a</c><01:00:38.760><c> switch</c><01:00:39.240><c> basically</c><01:00:39.760><c> so</c>
+
+01:00:39.990 --> 01:00:40.000 align:start position:0%
+you're just posing a switch basically so
+
+
+01:00:40.000 --> 01:00:42.349 align:start position:0%
+you're just posing a switch basically so
+this<01:00:40.119><c> is</c><01:00:40.400><c> this</c><01:00:40.520><c> is</c><01:00:40.640><c> your</c><01:00:40.839><c> control</c><01:00:41.640><c> small</c>
+
+01:00:42.349 --> 01:00:42.359 align:start position:0%
+this is this is your control small
+
+
+01:00:42.359 --> 01:00:44.710 align:start position:0%
+this is this is your control small
+current<01:00:42.640><c> controls</c><01:00:43.400><c> a</c><01:00:43.559><c> switch</c><01:00:44.079><c> which</c><01:00:44.359><c> allows</c><01:00:44.599><c> a</c>
+
+01:00:44.710 --> 01:00:44.720 align:start position:0%
+current controls a switch which allows a
+
+
+01:00:44.720 --> 01:00:45.630 align:start position:0%
+current controls a switch which allows a
+lot<01:00:44.839><c> of</c><01:00:44.960><c> current</c><01:00:45.160><c> to</c><01:00:45.240><c> flow</c><01:00:45.440><c> through</c><01:00:45.559><c> the</c>
+
+01:00:45.630 --> 01:00:45.640 align:start position:0%
+lot of current to flow through the
+
+
+01:00:45.640 --> 01:00:48.029 align:start position:0%
+lot of current to flow through the
+transistor<01:00:46.559><c> and</c><01:00:46.640><c> if</c><01:00:46.720><c> we</c><01:00:46.880><c> go</c><01:00:47.200><c> back</c><01:00:47.559><c> to</c><01:00:47.720><c> the</c><01:00:47.839><c> next</c>
+
+01:00:48.029 --> 01:00:48.039 align:start position:0%
+transistor and if we go back to the next
+
+
+01:00:48.039 --> 01:00:50.109 align:start position:0%
+transistor and if we go back to the next
+slide<01:00:48.680><c> so</c><01:00:49.119><c> the</c>
+
+01:00:50.109 --> 01:00:50.119 align:start position:0%
+slide so the
+
+
+01:00:50.119 --> 01:00:53.309 align:start position:0%
+slide so the
+um<01:00:51.119><c> this</c><01:00:51.640><c> has</c><01:00:51.880><c> a</c><01:00:52.079><c> transistor</c><01:00:52.720><c> and</c><01:00:52.839><c> the</c><01:00:52.960><c> output</c>
+
+01:00:53.309 --> 01:00:53.319 align:start position:0%
+um this has a transistor and the output
+
+
+01:00:53.319 --> 01:00:55.069 align:start position:0%
+um this has a transistor and the output
+of<01:00:53.400><c> the</c><01:00:53.559><c> transistor</c><01:00:54.079><c> feeds</c><01:00:54.440><c> into</c><01:00:54.760><c> another</c>
+
+01:00:55.069 --> 01:00:55.079 align:start position:0%
+of the transistor feeds into another
+
+
+01:00:55.079 --> 01:00:57.589 align:start position:0%
+of the transistor feeds into another
+transistor<01:00:56.039><c> so</c><01:00:56.280><c> you</c><01:00:56.440><c> get</c><01:00:56.720><c> more</c><01:00:56.920><c> than</c><01:00:57.079><c> a</c><01:00:57.240><c> 100</c>
+
+01:00:57.589 --> 01:00:57.599 align:start position:0%
+transistor so you get more than a 100
+
+
+01:00:57.599 --> 01:01:00.470 align:start position:0%
+transistor so you get more than a 100
+times<01:00:58.039><c> current</c><01:00:58.400><c> gain</c><01:00:59.000><c> uh</c><01:00:59.319><c> so</c><01:00:59.880><c> one</c><01:01:00.039><c> or</c><01:01:00.240><c> two</c>
+
+01:01:00.470 --> 01:01:00.480 align:start position:0%
+times current gain uh so one or two
+
+
+01:01:00.480 --> 01:01:03.670 align:start position:0%
+times current gain uh so one or two
+milliamps<01:01:01.200><c> here</c><01:01:01.920><c> will</c><01:01:02.640><c> let</c><01:01:02.799><c> you</c><01:01:02.920><c> have</c><01:01:03.160><c> 500</c>
+
+01:01:03.670 --> 01:01:03.680 align:start position:0%
+milliamps here will let you have 500
+
+
+01:01:03.680 --> 01:01:06.190 align:start position:0%
+milliamps here will let you have 500
+maybe<01:01:04.000><c> half</c><01:01:04.119><c> an</c><01:01:04.280><c> amp</c><01:01:04.599><c> 500</c><01:01:04.960><c> milliamps</c><01:01:05.920><c> on</c><01:01:06.039><c> the</c>
+
+01:01:06.190 --> 01:01:06.200 align:start position:0%
+maybe half an amp 500 milliamps on the
+
+
+01:01:06.200 --> 01:01:07.990 align:start position:0%
+maybe half an amp 500 milliamps on the
+out<01:01:06.760><c> so</c><01:01:06.920><c> that's</c><01:01:07.119><c> kind</c><01:01:07.240><c> of</c><01:01:07.559><c> the</c><01:01:07.640><c> neat</c><01:01:07.880><c> thing</c>
+
+01:01:07.990 --> 01:01:08.000 align:start position:0%
+out so that's kind of the neat thing
+
+
+01:01:08.000 --> 01:01:09.789 align:start position:0%
+out so that's kind of the neat thing
+about<01:01:08.200><c> that</c><01:01:08.799><c> anyway</c><01:01:09.240><c> that's</c><01:01:09.440><c> that's</c><01:01:09.559><c> all</c><01:01:09.680><c> the</c>
+
+01:01:09.789 --> 01:01:09.799 align:start position:0%
+about that anyway that's that's all the
+
+
+01:01:09.799 --> 01:01:11.710 align:start position:0%
+about that anyway that's that's all the
+transition<01:01:10.280><c> Theory</c><01:01:10.480><c> you</c><01:01:10.680><c> go</c><01:01:10.880><c> skip</c><01:01:11.160><c> the</c><01:01:11.280><c> next</c>
+
+01:01:11.710 --> 01:01:11.720 align:start position:0%
+transition Theory you go skip the next
+
+
+01:01:11.720 --> 01:01:14.270 align:start position:0%
+transition Theory you go skip the next
+time<01:01:12.720><c> so</c><01:01:12.880><c> we</c><01:01:13.000><c> you</c><01:01:13.400><c> understand</c><01:01:13.599><c> that</c><01:01:13.880><c> now</c><01:01:14.160><c> the</c>
+
+01:01:14.270 --> 01:01:14.280 align:start position:0%
+time so we you understand that now the
+
+
+01:01:14.280 --> 01:01:16.150 align:start position:0%
+time so we you understand that now the
+other<01:01:14.440><c> thing</c><01:01:14.559><c> to</c><01:01:14.920><c> understand</c><01:01:15.119><c> is</c><01:01:15.559><c> why</c><01:01:15.920><c> I</c><01:01:16.000><c> got</c>
+
+01:01:16.150 --> 01:01:16.160 align:start position:0%
+other thing to understand is why I got
+
+
+01:01:16.160 --> 01:01:18.910 align:start position:0%
+other thing to understand is why I got
+this<01:01:16.359><c> project</c><01:01:16.599><c> so</c><01:01:16.680><c> I</c><01:01:16.760><c> got</c><01:01:16.839><c> a</c><01:01:16.960><c> sky</c><01:01:17.520><c> project</c><01:01:18.200><c> the</c>
+
+01:01:18.910 --> 01:01:18.920 align:start position:0%
+this project so I got a sky project the
+
+
+01:01:18.920 --> 01:01:20.950 align:start position:0%
+this project so I got a sky project the
+project<01:01:19.240><c> number</c><01:01:19.920><c> and</c><01:01:20.200><c> this</c><01:01:20.319><c> all</c><01:01:20.480><c> came</c><01:01:20.720><c> about</c>
+
+01:01:20.950 --> 01:01:20.960 align:start position:0%
+project number and this all came about
+
+
+01:01:20.960 --> 01:01:22.670 align:start position:0%
+project number and this all came about
+after<01:01:21.160><c> the</c><01:01:21.319><c> Supreme</c><01:01:21.640><c> Court</c><01:01:21.920><c> decision</c><01:01:22.520><c> they</c>
+
+01:01:22.670 --> 01:01:22.680 align:start position:0%
+after the Supreme Court decision they
+
+
+01:01:22.680 --> 01:01:23.670 align:start position:0%
+after the Supreme Court decision they
+decided<01:01:23.000><c> you</c><01:01:23.039><c> know</c><01:01:23.119><c> it's</c><01:01:23.280><c> time</c><01:01:23.400><c> to</c><01:01:23.480><c> start</c>
+
+01:01:23.670 --> 01:01:23.680 align:start position:0%
+decided you know it's time to start
+
+
+01:01:23.680 --> 01:01:25.430 align:start position:0%
+decided you know it's time to start
+working<01:01:23.880><c> on</c><01:01:24.039><c> this</c><01:01:24.760><c> people</c><01:01:25.000><c> have</c><01:01:25.119><c> the</c><01:01:25.200><c> right</c><01:01:25.319><c> to</c>
+
+01:01:25.430 --> 01:01:25.440 align:start position:0%
+working on this people have the right to
+
+
+01:01:25.440 --> 01:01:26.750 align:start position:0%
+working on this people have the right to
+defend<01:01:25.720><c> themselves</c><01:01:26.079><c> everybody</c><01:01:26.319><c> agrees</c><01:01:26.559><c> with</c>
+
+01:01:26.750 --> 01:01:26.760 align:start position:0%
+defend themselves everybody agrees with
+
+
+01:01:26.760 --> 01:01:28.710 align:start position:0%
+defend themselves everybody agrees with
+that<01:01:27.079><c> well</c><01:01:27.280><c> corporations</c><01:01:27.760><c> are</c><01:01:27.960><c> people</c><01:01:28.520><c> that's</c>
+
+01:01:28.710 --> 01:01:28.720 align:start position:0%
+that well corporations are people that's
+
+
+01:01:28.720 --> 01:01:30.710 align:start position:0%
+that well corporations are people that's
+been<01:01:28.920><c> established</c><01:01:29.440><c> now</c><01:01:30.240><c> so</c><01:01:30.440><c> therefore</c>
+
+01:01:30.710 --> 01:01:30.720 align:start position:0%
+been established now so therefore
+
+
+01:01:30.720 --> 01:01:32.870 align:start position:0%
+been established now so therefore
+autonomous<01:01:31.200><c> systems</c><01:01:31.559><c> can</c><01:01:31.720><c> run</c><01:01:31.960><c> computers</c><01:01:32.680><c> and</c>
+
+01:01:32.870 --> 01:01:32.880 align:start position:0%
+autonomous systems can run computers and
+
+
+01:01:32.880 --> 01:01:34.150 align:start position:0%
+autonomous systems can run computers and
+therefore<01:01:33.160><c> autonomous</c><01:01:33.599><c> systems</c><01:01:33.920><c> would</c><01:01:34.079><c> have</c>
+
+01:01:34.150 --> 01:01:34.160 align:start position:0%
+therefore autonomous systems would have
+
+
+01:01:34.160 --> 01:01:35.829 align:start position:0%
+therefore autonomous systems would have
+the<01:01:34.240><c> right</c><01:01:34.400><c> to</c><01:01:34.520><c> defend</c><01:01:34.920><c> themselves</c><01:01:35.520><c> so</c><01:01:35.680><c> we</c>
+
+01:01:35.829 --> 01:01:35.839 align:start position:0%
+the right to defend themselves so we
+
+
+01:01:35.839 --> 01:01:37.910 align:start position:0%
+the right to defend themselves so we
+need<01:01:36.119><c> automated</c><01:01:36.799><c> we</c><01:01:36.920><c> need</c><01:01:37.119><c> automated</c><01:01:37.760><c> uh</c>
+
+01:01:37.910 --> 01:01:37.920 align:start position:0%
+need automated we need automated uh
+
+
+01:01:37.920 --> 01:01:40.109 align:start position:0%
+need automated we need automated uh
+systems<01:01:38.240><c> that</c><01:01:38.359><c> can</c><01:01:38.520><c> defend</c><01:01:38.920><c> themselves</c><01:01:39.280><c> right</c>
+
+01:01:40.109 --> 01:01:40.119 align:start position:0%
+systems that can defend themselves right
+
+
+01:01:40.119 --> 01:01:42.950 align:start position:0%
+systems that can defend themselves right
+um<01:01:40.920><c> and</c><01:01:41.160><c> and</c><01:01:41.480><c> this</c><01:01:41.559><c> is</c><01:01:41.640><c> a</c><01:01:41.760><c> long</c><01:01:41.960><c> syllogism</c><01:01:42.599><c> I</c>
+
+01:01:42.950 --> 01:01:42.960 align:start position:0%
+um and and this is a long syllogism I
+
+
+01:01:42.960 --> 01:01:44.870 align:start position:0%
+um and and this is a long syllogism I
+present<01:01:43.280><c> this</c><01:01:43.400><c> is</c><01:01:43.520><c> farcon</c><01:01:44.280><c> but</c><01:01:44.359><c> it</c><01:01:44.559><c> basically</c>
+
+01:01:44.870 --> 01:01:44.880 align:start position:0%
+present this is farcon but it basically
+
+
+01:01:44.880 --> 01:01:46.670 align:start position:0%
+present this is farcon but it basically
+ends<01:01:45.119><c> up</c><01:01:45.319><c> with</c><01:01:45.480><c> if</c><01:01:45.599><c> something</c><01:01:45.839><c> has</c><01:01:45.960><c> a</c><01:01:46.160><c> face</c>
+
+01:01:46.670 --> 01:01:46.680 align:start position:0%
+ends up with if something has a face
+
+
+01:01:46.680 --> 01:01:48.589 align:start position:0%
+ends up with if something has a face
+shoot<01:01:46.960><c> it</c><01:01:47.200><c> because</c><01:01:47.319><c> it's</c><01:01:47.440><c> a</c>
+
+01:01:48.589 --> 01:01:48.599 align:start position:0%
+shoot it because it's a
+
+
+01:01:48.599 --> 01:01:50.750 align:start position:0%
+shoot it because it's a
+thre
+
+01:01:50.750 --> 01:01:50.760 align:start position:0%
+thre
+
+
+01:01:50.760 --> 01:01:52.910 align:start position:0%
+thre
+next<01:01:51.760><c> so</c><01:01:52.000><c> you</c><01:01:52.160><c> need</c><01:01:52.319><c> some</c><01:01:52.480><c> additional</c>
+
+01:01:52.910 --> 01:01:52.920 align:start position:0%
+next so you need some additional
+
+
+01:01:52.920 --> 01:01:55.470 align:start position:0%
+next so you need some additional
+software<01:01:53.400><c> open</c><01:01:53.640><c> CV</c><01:01:54.200><c> is</c><01:01:54.400><c> the</c><01:01:54.720><c> open</c><01:01:55.119><c> computer</c>
+
+01:01:55.470 --> 01:01:55.480 align:start position:0%
+software open CV is the open computer
+
+
+01:01:55.480 --> 01:01:56.470 align:start position:0%
+software open CV is the open computer
+vision
+
+01:01:56.470 --> 01:01:56.480 align:start position:0%
+vision
+
+
+01:01:56.480 --> 01:01:58.470 align:start position:0%
+vision
+package<01:01:56.799><c> it's</c><01:01:56.960><c> on</c><01:01:57.079><c> a</c><01:01:57.200><c> lot</c><01:01:57.319><c> of</c><01:01:57.680><c> Linux</c><01:01:58.039><c> machines</c>
+
+01:01:58.470 --> 01:01:58.480 align:start position:0%
+package it's on a lot of Linux machines
+
+
+01:01:58.480 --> 01:02:00.829 align:start position:0%
+package it's on a lot of Linux machines
+actually<01:01:58.720><c> it's</c><01:01:58.839><c> on</c><01:01:59.079><c> Windows</c><01:01:59.400><c> to</c><01:02:00.400><c> things</c><01:02:00.720><c> and</c>
+
+01:02:00.829 --> 01:02:00.839 align:start position:0%
+actually it's on Windows to things and
+
+
+01:02:00.839 --> 01:02:03.390 align:start position:0%
+actually it's on Windows to things and
+it<01:02:01.119><c> uh</c><01:02:01.720><c> it's</c><01:02:02.160><c> encapsulated</c><01:02:02.960><c> some</c><01:02:03.160><c> really</c>
+
+01:02:03.390 --> 01:02:03.400 align:start position:0%
+it uh it's encapsulated some really
+
+
+01:02:03.400 --> 01:02:05.910 align:start position:0%
+it uh it's encapsulated some really
+interesting<01:02:03.920><c> image</c><01:02:04.240><c> processing</c><01:02:05.240><c> software</c>
+
+01:02:05.910 --> 01:02:05.920 align:start position:0%
+interesting image processing software
+
+
+01:02:05.920 --> 01:02:08.630 align:start position:0%
+interesting image processing software
+and<01:02:06.039><c> it</c><01:02:06.119><c> allows</c><01:02:06.400><c> you</c><01:02:06.559><c> to</c><01:02:06.960><c> uh</c><01:02:07.200><c> just</c><01:02:08.119><c> get</c><01:02:08.279><c> started</c>
+
+01:02:08.630 --> 01:02:08.640 align:start position:0%
+and it allows you to uh just get started
+
+
+01:02:08.640 --> 01:02:10.029 align:start position:0%
+and it allows you to uh just get started
+at<01:02:08.760><c> a</c><01:02:08.880><c> very</c><01:02:09.079><c> high</c><01:02:09.240><c> level</c><01:02:09.480><c> with</c><01:02:09.640><c> grabbing</c>
+
+01:02:10.029 --> 01:02:10.039 align:start position:0%
+at a very high level with grabbing
+
+
+01:02:10.039 --> 01:02:11.870 align:start position:0%
+at a very high level with grabbing
+images<01:02:10.640><c> running</c><01:02:11.039><c> through</c><01:02:11.279><c> things</c><01:02:11.480><c> and</c><01:02:11.599><c> one</c><01:02:11.720><c> of</c>
+
+01:02:11.870 --> 01:02:11.880 align:start position:0%
+images running through things and one of
+
+
+01:02:11.880 --> 01:02:13.990 align:start position:0%
+images running through things and one of
+the<01:02:12.480><c> one</c><01:02:12.599><c> of</c><01:02:12.720><c> the</c><01:02:12.839><c> example</c><01:02:13.279><c> programs</c><01:02:13.640><c> in</c><01:02:13.760><c> it</c><01:02:13.880><c> is</c>
+
+01:02:13.990 --> 01:02:14.000 align:start position:0%
+the one of the example programs in it is
+
+
+01:02:14.000 --> 01:02:16.309 align:start position:0%
+the one of the example programs in it is
+a<01:02:14.160><c> face</c><01:02:14.400><c> detection</c><01:02:14.880><c> program</c><01:02:15.880><c> the</c><01:02:16.000><c> other</c><01:02:16.200><c> thing</c>
+
+01:02:16.309 --> 01:02:16.319 align:start position:0%
+a face detection program the other thing
+
+
+01:02:16.319 --> 01:02:19.710 align:start position:0%
+a face detection program the other thing
+you<01:02:16.480><c> need</c><01:02:16.839><c> is</c><01:02:17.079><c> the</c><01:02:17.319><c> python</c><01:02:17.640><c> interface</c><01:02:18.400><c> G</c><01:02:19.400><c> oddly</c>
+
+01:02:19.710 --> 01:02:19.720 align:start position:0%
+you need is the python interface G oddly
+
+
+01:02:19.720 --> 01:02:21.789 align:start position:0%
+you need is the python interface G oddly
+enough<01:02:20.039><c> it</c><01:02:20.160><c> didn't</c><01:02:20.359><c> come</c><01:02:20.520><c> on</c><01:02:20.640><c> my</c><01:02:20.760><c> Raspberry</c>
+
+01:02:21.789 --> 01:02:21.799 align:start position:0%
+enough it didn't come on my Raspberry
+
+
+01:02:21.799 --> 01:02:24.029 align:start position:0%
+enough it didn't come on my Raspberry
+Pi<01:02:22.799><c> which</c><01:02:22.920><c> is</c><01:02:23.079><c> weird</c><01:02:23.400><c> because</c><01:02:23.520><c> the</c><01:02:23.599><c> Raspberry</c>
+
+01:02:24.029 --> 01:02:24.039 align:start position:0%
+Pi which is weird because the Raspberry
+
+
+01:02:24.039 --> 01:02:26.950 align:start position:0%
+Pi which is weird because the Raspberry
+Pi<01:02:24.359><c> was</c><01:02:24.559><c> for</c><01:02:24.920><c> Python</c><01:02:25.680><c> and</c><01:02:25.920><c> and</c><01:02:26.039><c> it</c><01:02:26.160><c> has</c><01:02:26.359><c> GPI</c><01:02:26.799><c> op</c>
+
+01:02:26.950 --> 01:02:26.960 align:start position:0%
+Pi was for Python and and it has GPI op
+
+
+01:02:26.960 --> 01:02:28.589 align:start position:0%
+Pi was for Python and and it has GPI op
+pins<01:02:27.200><c> and</c><01:02:27.359><c> I</c><01:02:27.520><c> totally</c><01:02:27.880><c> expected</c><01:02:28.200><c> to</c><01:02:28.319><c> be</c><01:02:28.440><c> able</c>
+
+01:02:28.589 --> 01:02:28.599 align:start position:0%
+pins and I totally expected to be able
+
+
+01:02:28.599 --> 01:02:30.430 align:start position:0%
+pins and I totally expected to be able
+to<01:02:29.160><c> to</c><01:02:29.319><c> do</c><01:02:29.520><c> that</c><01:02:29.640><c> out</c><01:02:29.760><c> of</c><01:02:29.880><c> the</c><01:02:30.000><c> box</c><01:02:30.160><c> but</c><01:02:30.240><c> you</c><01:02:30.319><c> can</c>
+
+01:02:30.430 --> 01:02:30.440 align:start position:0%
+to to do that out of the box but you can
+
+
+01:02:30.440 --> 01:02:32.269 align:start position:0%
+to to do that out of the box but you can
+write<01:02:30.559><c> a</c><01:02:30.599><c> c</c><01:02:30.920><c> program</c><01:02:31.279><c> on</c><01:02:31.400><c> the</c><01:02:31.520><c> Raspberry</c><01:02:31.920><c> Pi</c><01:02:32.079><c> to</c>
+
+01:02:32.269 --> 01:02:32.279 align:start position:0%
+write a c program on the Raspberry Pi to
+
+
+01:02:32.279 --> 01:02:35.190 align:start position:0%
+write a c program on the Raspberry Pi to
+go<01:02:32.400><c> to</c><01:02:32.520><c> your</c><01:02:32.640><c> P</c><01:02:33.279><c> but</c><01:02:33.400><c> anyway</c><01:02:33.640><c> our</c><01:02:33.920><c> p.</c><01:02:34.279><c> gpio</c><01:02:34.960><c> is</c>
+
+01:02:35.190 --> 01:02:35.200 align:start position:0%
+go to your P but anyway our p. gpio is
+
+
+01:02:35.200 --> 01:02:40.150 align:start position:0%
+go to your P but anyway our p. gpio is
+good<01:02:35.880><c> is</c><01:02:36.039><c> the</c><01:02:36.680><c> python</c><01:02:37.680><c> okay</c><01:02:38.359><c> so</c>
+
+01:02:40.150 --> 01:02:40.160 align:start position:0%
+good is the python okay so
+
+
+01:02:40.160 --> 01:02:45.109 align:start position:0%
+good is the python okay so
+um<01:02:41.440><c> next</c><01:02:42.440><c> all</c><01:02:42.559><c> right</c><01:02:42.799><c> so</c><01:02:43.119><c> had</c><01:02:43.880><c> problems</c><01:02:44.880><c> main</c>
+
+01:02:45.109 --> 01:02:45.119 align:start position:0%
+um next all right so had problems main
+
+
+01:02:45.119 --> 01:02:46.470 align:start position:0%
+um next all right so had problems main
+thing<01:02:45.240><c> is</c><01:02:45.359><c> I</c><01:02:45.480><c> kept</c><01:02:45.640><c> scrambling</c><01:02:46.119><c> the</c><01:02:46.240><c> file</c>
+
+01:02:46.470 --> 01:02:46.480 align:start position:0%
+thing is I kept scrambling the file
+
+
+01:02:46.480 --> 01:02:48.309 align:start position:0%
+thing is I kept scrambling the file
+system<01:02:46.960><c> I</c><01:02:47.119><c> my</c><01:02:47.240><c> program</c><01:02:47.520><c> would</c><01:02:47.680><c> get</c><01:02:47.799><c> to</c><01:02:47.960><c> running</c>
+
+01:02:48.309 --> 01:02:48.319 align:start position:0%
+system I my program would get to running
+
+
+01:02:48.319 --> 01:02:50.430 align:start position:0%
+system I my program would get to running
+and<01:02:48.400><c> it</c><01:02:48.520><c> was</c><01:02:48.720><c> it</c><01:02:48.839><c> was</c><01:02:49.160><c> accessing</c><01:02:49.640><c> files</c><01:02:50.240><c> and</c><01:02:50.319><c> it</c>
+
+01:02:50.430 --> 01:02:50.440 align:start position:0%
+and it was it was accessing files and it
+
+
+01:02:50.440 --> 01:02:52.630 align:start position:0%
+and it was it was accessing files and it
+was<01:02:50.599><c> logging</c><01:02:51.319><c> it</c><01:02:51.400><c> was</c><01:02:51.559><c> doing</c><01:02:51.920><c> things</c><01:02:52.319><c> with</c><01:02:52.480><c> the</c>
+
+01:02:52.630 --> 01:02:52.640 align:start position:0%
+was logging it was doing things with the
+
+
+01:02:52.640 --> 01:02:54.710 align:start position:0%
+was logging it was doing things with the
+video<01:02:53.119><c> but</c><01:02:53.319><c> but</c><01:02:53.400><c> it</c><01:02:53.480><c> was</c><01:02:53.640><c> trying</c><01:02:53.839><c> to</c><01:02:54.000><c> do</c><01:02:54.520><c> a</c><01:02:54.599><c> lot</c>
+
+01:02:54.710 --> 01:02:54.720 align:start position:0%
+video but but it was trying to do a lot
+
+
+01:02:54.720 --> 01:02:56.230 align:start position:0%
+video but but it was trying to do a lot
+of<01:02:54.880><c> heavy</c><01:02:55.079><c> duty</c><01:02:55.319><c> video</c><01:02:55.559><c> process</c><01:02:55.839><c> processing</c>
+
+01:02:56.230 --> 01:02:56.240 align:start position:0%
+of heavy duty video process processing
+
+
+01:02:56.240 --> 01:02:58.150 align:start position:0%
+of heavy duty video process processing
+so<01:02:56.359><c> it</c><01:02:56.440><c> would</c><01:02:56.599><c> get</c><01:02:56.760><c> hung</c><01:02:57.359><c> I'd</c><01:02:57.520><c> have</c><01:02:57.599><c> to</c><01:02:57.760><c> remove</c>
+
+01:02:58.150 --> 01:02:58.160 align:start position:0%
+so it would get hung I'd have to remove
+
+
+01:02:58.160 --> 01:02:59.990 align:start position:0%
+so it would get hung I'd have to remove
+power<01:02:58.520><c> from</c><01:02:58.720><c> the</c><01:02:59.200><c> Raspberry</c><01:02:59.640><c> Pi</c><01:02:59.799><c> and</c><01:02:59.880><c> it's</c>
+
+01:02:59.990 --> 01:03:00.000 align:start position:0%
+power from the Raspberry Pi and it's
+
+
+01:03:00.000 --> 01:03:01.630 align:start position:0%
+power from the Raspberry Pi and it's
+such<01:03:00.119><c> a</c><01:03:00.279><c> little</c><01:03:00.559><c> oneboard</c><01:03:01.039><c> computer</c><01:03:01.400><c> you'd</c>
+
+01:03:01.630 --> 01:03:01.640 align:start position:0%
+such a little oneboard computer you'd
+
+
+01:03:01.640 --> 01:03:03.589 align:start position:0%
+such a little oneboard computer you'd
+think<01:03:01.920><c> oh</c><01:03:02.240><c> hook</c><01:03:02.480><c> power</c><01:03:02.680><c> to</c><01:03:02.839><c> it</c><01:03:03.000><c> take</c><01:03:03.200><c> power</c><01:03:03.440><c> off</c>
+
+01:03:03.589 --> 01:03:03.599 align:start position:0%
+think oh hook power to it take power off
+
+
+01:03:03.599 --> 01:03:06.269 align:start position:0%
+think oh hook power to it take power off
+hook<01:03:03.839><c> power</c><01:03:04.039><c> to</c><01:03:04.200><c> it</c><01:03:04.960><c> but</c><01:03:05.240><c> but</c><01:03:05.440><c> then</c><01:03:05.880><c> I</c><01:03:06.000><c> find</c>
+
+01:03:06.269 --> 01:03:06.279 align:start position:0%
+hook power to it but but then I find
+
+
+01:03:06.279 --> 01:03:09.029 align:start position:0%
+hook power to it but but then I find
+that<01:03:06.440><c> the</c><01:03:06.960><c> the</c><01:03:07.200><c> uh</c><01:03:07.400><c> SD</c><01:03:07.760><c> file</c><01:03:08.079><c> system</c><01:03:08.359><c> would</c><01:03:08.520><c> be</c>
+
+01:03:09.029 --> 01:03:09.039 align:start position:0%
+that the the uh SD file system would be
+
+
+01:03:09.039 --> 01:03:11.349 align:start position:0%
+that the the uh SD file system would be
+like<01:03:09.240><c> all</c><01:03:09.359><c> screwed</c><01:03:09.680><c> up</c><01:03:10.000><c> and</c><01:03:10.119><c> it</c><01:03:10.200><c> wouldn't</c><01:03:10.400><c> boot</c>
+
+01:03:11.349 --> 01:03:11.359 align:start position:0%
+like all screwed up and it wouldn't boot
+
+
+01:03:11.359 --> 01:03:13.269 align:start position:0%
+like all screwed up and it wouldn't boot
+um<01:03:11.480><c> so</c><01:03:11.640><c> I</c><01:03:11.799><c> kept</c><01:03:12.039><c> you</c><01:03:12.119><c> know</c><01:03:12.240><c> doing</c><01:03:12.520><c> backups</c><01:03:13.160><c> and</c>
+
+01:03:13.269 --> 01:03:13.279 align:start position:0%
+um so I kept you know doing backups and
+
+
+01:03:13.279 --> 01:03:16.029 align:start position:0%
+um so I kept you know doing backups and
+copying<01:03:13.720><c> it</c><01:03:13.920><c> I</c><01:03:14.000><c> tried</c><01:03:14.240><c> bod</c><01:03:14.559><c> Linux</c><01:03:15.000><c> Arch</c><01:03:15.319><c> Linux</c>
+
+01:03:16.029 --> 01:03:16.039 align:start position:0%
+copying it I tried bod Linux Arch Linux
+
+
+01:03:16.039 --> 01:03:17.510 align:start position:0%
+copying it I tried bod Linux Arch Linux
+very<01:03:16.319><c> nice</c><01:03:16.720><c> by</c><01:03:16.799><c> the</c><01:03:16.920><c> way</c><01:03:17.039><c> they</c><01:03:17.160><c> ran</c><01:03:17.319><c> on</c><01:03:17.400><c> the</c>
+
+01:03:17.510 --> 01:03:17.520 align:start position:0%
+very nice by the way they ran on the
+
+
+01:03:17.520 --> 01:03:19.309 align:start position:0%
+very nice by the way they ran on the
+Raspberry<01:03:17.880><c> Pi</c><01:03:18.079><c> very</c><01:03:18.240><c> good</c><01:03:18.599><c> but</c><01:03:18.760><c> they</c><01:03:18.920><c> all</c><01:03:19.200><c> kind</c>
+
+01:03:19.309 --> 01:03:19.319 align:start position:0%
+Raspberry Pi very good but they all kind
+
+
+01:03:19.319 --> 01:03:20.990 align:start position:0%
+Raspberry Pi very good but they all kind
+of<01:03:19.440><c> ran</c><01:03:19.640><c> into</c><01:03:19.880><c> the</c><01:03:20.000><c> same</c><01:03:20.279><c> problem</c><01:03:20.599><c> that</c><01:03:20.680><c> was</c><01:03:20.839><c> no</c>
+
+01:03:20.990 --> 01:03:21.000 align:start position:0%
+of ran into the same problem that was no
+
+
+01:03:21.000 --> 01:03:23.029 align:start position:0%
+of ran into the same problem that was no
+way<01:03:21.119><c> to</c><01:03:21.279><c> solve</c><01:03:22.160><c> the</c><01:03:22.319><c> problem</c><01:03:22.559><c> I</c><01:03:22.640><c> was</c><01:03:22.799><c> having</c>
+
+01:03:23.029 --> 01:03:23.039 align:start position:0%
+way to solve the problem I was having
+
+
+01:03:23.039 --> 01:03:24.349 align:start position:0%
+way to solve the problem I was having
+which<01:03:23.160><c> was</c><01:03:23.319><c> really</c><01:03:23.559><c> kind</c><01:03:23.640><c> of</c><01:03:23.760><c> a</c><01:03:23.880><c> hardware</c>
+
+01:03:24.349 --> 01:03:24.359 align:start position:0%
+which was really kind of a hardware
+
+
+01:03:24.359 --> 01:03:27.269 align:start position:0%
+which was really kind of a hardware
+problem<01:03:25.319><c> so</c><01:03:26.119><c> the</c><01:03:26.359><c> the</c><01:03:26.559><c> way</c><01:03:26.720><c> I</c><01:03:26.839><c> solved</c><01:03:27.119><c> all</c>
+
+01:03:27.269 --> 01:03:27.279 align:start position:0%
+problem so the the way I solved all
+
+
+01:03:27.279 --> 01:03:28.670 align:start position:0%
+problem so the the way I solved all
+these<01:03:27.480><c> problems</c><01:03:27.760><c> basically</c><01:03:28.079><c> is</c><01:03:28.200><c> finding</c><01:03:28.520><c> the</c>
+
+01:03:28.670 --> 01:03:28.680 align:start position:0%
+these problems basically is finding the
+
+
+01:03:28.680 --> 01:03:30.390 align:start position:0%
+these problems basically is finding the
+commands<01:03:29.119><c> where</c><01:03:29.279><c> you</c><01:03:29.400><c> can</c><01:03:29.960><c> cause</c><01:03:30.200><c> an</c>
+
+01:03:30.390 --> 01:03:30.400 align:start position:0%
+commands where you can cause an
+
+
+01:03:30.400 --> 01:03:32.630 align:start position:0%
+commands where you can cause an
+emergency<01:03:30.839><c> sync</c><01:03:31.520><c> remount</c><01:03:32.000><c> the</c><01:03:32.119><c> file</c><01:03:32.400><c> system</c>
+
+01:03:32.630 --> 01:03:32.640 align:start position:0%
+emergency sync remount the file system
+
+
+01:03:32.640 --> 01:03:33.589 align:start position:0%
+emergency sync remount the file system
+as<01:03:32.799><c> read</c>
+
+01:03:33.589 --> 01:03:33.599 align:start position:0%
+as read
+
+
+01:03:33.599 --> 01:03:36.269 align:start position:0%
+as read
+only<01:03:34.599><c> uh</c><01:03:35.200><c> and</c><01:03:35.440><c> then</c><01:03:35.760><c> then</c><01:03:35.880><c> you've</c><01:03:36.039><c> got</c><01:03:36.160><c> a</c>
+
+01:03:36.269 --> 01:03:36.279 align:start position:0%
+only uh and then then you've got a
+
+
+01:03:36.279 --> 01:03:38.029 align:start position:0%
+only uh and then then you've got a
+system<01:03:36.599><c> that</c><01:03:36.720><c> you</c><01:03:36.799><c> could</c><01:03:37.039><c> have</c><01:03:37.160><c> a</c><01:03:37.279><c> standalone</c>
+
+01:03:38.029 --> 01:03:38.039 align:start position:0%
+system that you could have a standalone
+
+
+01:03:38.039 --> 01:03:39.870 align:start position:0%
+system that you could have a standalone
+like<01:03:38.160><c> I</c><01:03:38.279><c> say</c><01:03:38.440><c> targeting</c><01:03:38.880><c> system</c><01:03:39.319><c> we'll</c><01:03:39.520><c> see</c><01:03:39.680><c> in</c>
+
+01:03:39.870 --> 01:03:39.880 align:start position:0%
+like I say targeting system we'll see in
+
+
+01:03:39.880 --> 01:03:42.390 align:start position:0%
+like I say targeting system we'll see in
+minute<01:03:40.440><c> and</c><01:03:40.680><c> and</c><01:03:41.000><c> it's</c><01:03:41.160><c> so</c><01:03:41.760><c> impervious</c><01:03:42.200><c> to</c>
+
+01:03:42.390 --> 01:03:42.400 align:start position:0%
+minute and and it's so impervious to
+
+
+01:03:42.400 --> 01:03:45.390 align:start position:0%
+minute and and it's so impervious to
+removing<01:03:42.799><c> power</c><01:03:43.359><c> problems</c><01:03:44.359><c> um</c><01:03:44.960><c> the</c><01:03:45.119><c> other</c>
+
+01:03:45.390 --> 01:03:45.400 align:start position:0%
+removing power problems um the other
+
+
+01:03:45.400 --> 01:03:46.990 align:start position:0%
+removing power problems um the other
+problem<01:03:45.640><c> and</c><01:03:45.799><c> you'll</c><01:03:45.920><c> see</c><01:03:46.119><c> when</c><01:03:46.240><c> I</c><01:03:46.319><c> do</c><01:03:46.480><c> my</c><01:03:46.640><c> demo</c>
+
+01:03:46.990 --> 01:03:47.000 align:start position:0%
+problem and you'll see when I do my demo
+
+
+01:03:47.000 --> 01:03:48.630 align:start position:0%
+problem and you'll see when I do my demo
+is<01:03:47.119><c> the</c><01:03:47.240><c> throughput</c><01:03:47.720><c> problems</c><01:03:48.359><c> which</c><01:03:48.480><c> is</c>
+
+01:03:48.630 --> 01:03:48.640 align:start position:0%
+is the throughput problems which is
+
+
+01:03:48.640 --> 01:03:50.549 align:start position:0%
+is the throughput problems which is
+doing<01:03:48.920><c> image</c><01:03:49.240><c> processing</c><01:03:49.960><c> and</c><01:03:50.039><c> then</c><01:03:50.200><c> finding</c>
+
+01:03:50.549 --> 01:03:50.559 align:start position:0%
+doing image processing and then finding
+
+
+01:03:50.559 --> 01:03:52.069 align:start position:0%
+doing image processing and then finding
+enough<01:03:50.799><c> Cycles</c><01:03:51.160><c> to</c><01:03:51.359><c> update</c><01:03:51.640><c> the</c><01:03:51.760><c> tracking</c>
+
+01:03:52.069 --> 01:03:52.079 align:start position:0%
+enough Cycles to update the tracking
+
+
+01:03:52.079 --> 01:03:54.029 align:start position:0%
+enough Cycles to update the tracking
+system<01:03:52.359><c> which</c><01:03:52.480><c> is</c><01:03:52.599><c> the</c><01:03:52.720><c> stepper</c><01:03:53.039><c> Motors</c><01:03:53.799><c> and</c>
+
+01:03:54.029 --> 01:03:54.039 align:start position:0%
+system which is the stepper Motors and
+
+
+01:03:54.039 --> 01:03:55.950 align:start position:0%
+system which is the stepper Motors and
+it's<01:03:54.200><c> a</c><01:03:54.440><c> a</c><01:03:54.599><c> really</c><01:03:55.079><c> serious</c><01:03:55.359><c> problem</c><01:03:55.559><c> with</c>
+
+01:03:55.950 --> 01:03:55.960 align:start position:0%
+it's a a really serious problem with
+
+
+01:03:55.960 --> 01:03:59.829 align:start position:0%
+it's a a really serious problem with
+I'll<01:03:56.079><c> show</c><01:03:56.279><c> you</c><01:03:56.839><c> we</c><01:03:57.440><c> that</c><01:03:58.440><c> I</c><01:03:58.599><c> think</c><01:03:58.839><c> that's</c>
+
+01:03:59.829 --> 01:03:59.839 align:start position:0%
+I'll show you we that I think that's
+
+
+01:03:59.839 --> 01:04:02.230 align:start position:0%
+I'll show you we that I think that's
+probably<01:04:00.839><c> to</c><01:04:00.960><c> the</c><01:04:01.039><c> end</c><01:04:01.200><c> is</c><01:04:01.319><c> there</c>
+
+01:04:02.230 --> 01:04:02.240 align:start position:0%
+probably to the end is there
+
+
+01:04:02.240 --> 01:04:04.870 align:start position:0%
+probably to the end is there
+something<01:04:03.240><c> that</c><01:04:03.839><c> so</c><01:04:04.039><c> here's</c><01:04:04.279><c> the</c><01:04:04.599><c> here's</c><01:04:04.760><c> the</c>
+
+01:04:04.870 --> 01:04:04.880 align:start position:0%
+something that so here's the here's the
+
+
+01:04:04.880 --> 01:04:06.630 align:start position:0%
+something that so here's the here's the
+trick<01:04:05.079><c> with</c><01:04:05.160><c> the</c><01:04:05.279><c> read</c><01:04:05.480><c> only</c><01:04:05.720><c> file</c><01:04:06.000><c> system</c><01:04:06.520><c> U</c>
+
+01:04:06.630 --> 01:04:06.640 align:start position:0%
+trick with the read only file system U
+
+
+01:04:06.640 --> 01:04:09.230 align:start position:0%
+trick with the read only file system U
+so<01:04:06.839><c> people</c><01:04:07.279><c> suggested</c><01:04:08.279><c> if</c><01:04:08.400><c> you</c><01:04:08.520><c> want</c><01:04:08.680><c> your</c><01:04:08.799><c> res</c>
+
+01:04:09.230 --> 01:04:09.240 align:start position:0%
+so people suggested if you want your res
+
+
+01:04:09.240 --> 01:04:11.390 align:start position:0%
+so people suggested if you want your res
+probably<01:04:09.599><c> be</c><01:04:09.680><c> able</c><01:04:09.839><c> to</c><01:04:10.359><c> power</c><01:04:10.599><c> up</c><01:04:10.799><c> power</c><01:04:11.039><c> down</c>
+
+01:04:11.390 --> 01:04:11.400 align:start position:0%
+probably be able to power up power down
+
+
+01:04:11.400 --> 01:04:12.829 align:start position:0%
+probably be able to power up power down
+and<01:04:11.480><c> of</c><01:04:11.599><c> course</c><01:04:11.960><c> I</c><01:04:12.079><c> work</c><01:04:12.200><c> at</c><01:04:12.319><c> the</c><01:04:12.359><c> Museum</c><01:04:12.720><c> and</c>
+
+01:04:12.829 --> 01:04:12.839 align:start position:0%
+and of course I work at the Museum and
+
+
+01:04:12.839 --> 01:04:14.190 align:start position:0%
+and of course I work at the Museum and
+we<01:04:12.920><c> have</c><01:04:13.039><c> power</c><01:04:13.240><c> outages</c><01:04:13.640><c> we</c><01:04:13.760><c> have</c><01:04:13.839><c> exhibits</c>
+
+01:04:14.190 --> 01:04:14.200 align:start position:0%
+we have power outages we have exhibits
+
+
+01:04:14.200 --> 01:04:16.630 align:start position:0%
+we have power outages we have exhibits
+running<01:04:14.440><c> all</c><01:04:14.559><c> the</c><01:04:14.680><c> time</c><01:04:15.200><c> power</c><01:04:15.480><c> goes</c><01:04:15.680><c> out</c>
+
+01:04:16.630 --> 01:04:16.640 align:start position:0%
+running all the time power goes out
+
+
+01:04:16.640 --> 01:04:18.430 align:start position:0%
+running all the time power goes out
+power<01:04:16.920><c> comes</c><01:04:17.240><c> back</c><01:04:17.720><c> the</c><01:04:17.880><c> exhibits</c><01:04:18.279><c> really</c>
+
+01:04:18.430 --> 01:04:18.440 align:start position:0%
+power comes back the exhibits really
+
+
+01:04:18.440 --> 01:04:19.750 align:start position:0%
+power comes back the exhibits really
+need<01:04:18.599><c> to</c><01:04:18.760><c> come</c><01:04:18.880><c> out</c><01:04:19.119><c> and</c><01:04:19.240><c> some</c><01:04:19.359><c> of</c><01:04:19.480><c> them</c><01:04:19.559><c> are</c>
+
+01:04:19.750 --> 01:04:19.760 align:start position:0%
+need to come out and some of them are
+
+
+01:04:19.760 --> 01:04:21.710 align:start position:0%
+need to come out and some of them are
+pretty<01:04:20.039><c> complicated</c><01:04:20.880><c> so</c><01:04:21.079><c> you</c><01:04:21.240><c> really</c><01:04:21.400><c> need</c><01:04:21.559><c> a</c>
+
+01:04:21.710 --> 01:04:21.720 align:start position:0%
+pretty complicated so you really need a
+
+
+01:04:21.720 --> 01:04:23.990 align:start position:0%
+pretty complicated so you really need a
+system<01:04:22.039><c> that</c><01:04:22.160><c> can</c><01:04:22.640><c> come</c><01:04:22.920><c> right</c><01:04:23.119><c> back</c><01:04:23.400><c> after</c><01:04:23.839><c> a</c>
+
+01:04:23.990 --> 01:04:24.000 align:start position:0%
+system that can come right back after a
+
+
+01:04:24.000 --> 01:04:26.589 align:start position:0%
+system that can come right back after a
+completely<01:04:24.440><c> abrupt</c><01:04:24.839><c> power</c><01:04:25.279><c> outage</c><01:04:25.839><c> and</c>
+
+01:04:26.589 --> 01:04:26.599 align:start position:0%
+completely abrupt power outage and
+
+
+01:04:26.599 --> 01:04:29.750 align:start position:0%
+completely abrupt power outage and
+survive<01:04:27.720><c> but</c><01:04:28.720><c> if</c><01:04:28.839><c> I</c><01:04:28.960><c> make</c><01:04:29.160><c> my</c><01:04:29.279><c> file</c><01:04:29.480><c> system</c>
+
+01:04:29.750 --> 01:04:29.760 align:start position:0%
+survive but if I make my file system
+
+
+01:04:29.760 --> 01:04:32.630 align:start position:0%
+survive but if I make my file system
+read<01:04:29.960><c> only</c><01:04:30.480><c> and</c><01:04:30.599><c> then</c><01:04:30.720><c> I</c><01:04:30.839><c> try</c><01:04:31.000><c> to</c><01:04:31.400><c> launch</c><01:04:32.400><c> x</c>
+
+01:04:32.630 --> 01:04:32.640 align:start position:0%
+read only and then I try to launch x
+
+
+01:04:32.640 --> 01:04:34.829 align:start position:0%
+read only and then I try to launch x
+windows<01:04:33.119><c> or</c><01:04:33.319><c> my</c><01:04:33.440><c> X</c><01:04:33.799><c> app</c><01:04:34.400><c> it</c><01:04:34.480><c> won't</c><01:04:34.680><c> work</c>
+
+01:04:34.829 --> 01:04:34.839 align:start position:0%
+windows or my X app it won't work
+
+
+01:04:34.839 --> 01:04:36.870 align:start position:0%
+windows or my X app it won't work
+because<01:04:35.039><c> it's</c><01:04:35.160><c> trying</c><01:04:35.359><c> to</c><01:04:35.640><c> log</c><01:04:36.200><c> log</c><01:04:36.440><c> file</c><01:04:36.720><c> and</c>
+
+01:04:36.870 --> 01:04:36.880 align:start position:0%
+because it's trying to log log file and
+
+
+01:04:36.880 --> 01:04:38.309 align:start position:0%
+because it's trying to log log file and
+there's<01:04:37.039><c> no</c><01:04:37.200><c> easy</c><01:04:37.400><c> way</c><01:04:37.520><c> to</c><01:04:37.599><c> just</c><01:04:37.720><c> tell</c><01:04:37.920><c> X</c><01:04:38.160><c> don't</c>
+
+01:04:38.309 --> 01:04:38.319 align:start position:0%
+there's no easy way to just tell X don't
+
+
+01:04:38.319 --> 01:04:39.950 align:start position:0%
+there's no easy way to just tell X don't
+do<01:04:38.520><c> any</c><01:04:38.680><c> logging</c><01:04:39.039><c> at</c><01:04:39.160><c> all</c><01:04:39.319><c> it</c><01:04:39.400><c> always</c><01:04:39.640><c> tries</c><01:04:39.839><c> to</c>
+
+01:04:39.950 --> 01:04:39.960 align:start position:0%
+do any logging at all it always tries to
+
+
+01:04:39.960 --> 01:04:42.990 align:start position:0%
+do any logging at all it always tries to
+open<01:04:40.160><c> the</c><01:04:40.279><c> log</c><01:04:40.520><c> file</c><01:04:40.760><c> on</c><01:04:40.960><c> level</c><01:04:41.160><c> of</c><01:04:41.599><c> logging</c><01:04:42.599><c> so</c>
+
+01:04:42.990 --> 01:04:43.000 align:start position:0%
+open the log file on level of logging so
+
+
+01:04:43.000 --> 01:04:44.190 align:start position:0%
+open the log file on level of logging so
+this<01:04:43.119><c> is</c><01:04:43.359><c> odd</c><01:04:43.680><c> because</c><01:04:43.799><c> I</c><01:04:43.880><c> wouldn't</c><01:04:44.039><c> have</c>
+
+01:04:44.190 --> 01:04:44.200 align:start position:0%
+this is odd because I wouldn't have
+
+
+01:04:44.200 --> 01:04:46.029 align:start position:0%
+this is odd because I wouldn't have
+thought<01:04:44.359><c> this</c><01:04:44.480><c> could</c><01:04:44.680><c> work</c><01:04:44.880><c> and</c><01:04:45.079><c> as</c><01:04:45.279><c> Linux</c>
+
+01:04:46.029 --> 01:04:46.039 align:start position:0%
+thought this could work and as Linux
+
+
+01:04:46.039 --> 01:04:47.430 align:start position:0%
+thought this could work and as Linux
+specialist<01:04:46.440><c> in</c><01:04:46.559><c> here</c><01:04:46.640><c> can</c><01:04:46.839><c> explain</c><01:04:47.079><c> to</c><01:04:47.160><c> me</c><01:04:47.319><c> why</c>
+
+01:04:47.430 --> 01:04:47.440 align:start position:0%
+specialist in here can explain to me why
+
+
+01:04:47.440 --> 01:04:50.309 align:start position:0%
+specialist in here can explain to me why
+this<01:04:47.599><c> works</c><01:04:48.160><c> you</c><01:04:48.359><c> start</c><01:04:48.760><c> X</c><01:04:49.760><c> like</c><01:04:49.880><c> you</c><01:04:50.039><c> normally</c>
+
+01:04:50.309 --> 01:04:50.319 align:start position:0%
+this works you start X like you normally
+
+
+01:04:50.319 --> 01:04:51.549 align:start position:0%
+this works you start X like you normally
+come<01:04:50.480><c> up</c><01:04:50.720><c> that's</c><01:04:50.880><c> where</c><01:04:51.000><c> you</c><01:04:51.160><c> showing</c><01:04:51.480><c> the</c>
+
+01:04:51.549 --> 01:04:51.559 align:start position:0%
+come up that's where you showing the
+
+
+01:04:51.559 --> 01:04:52.870 align:start position:0%
+come up that's where you showing the
+window<01:04:51.799><c> manager</c><01:04:52.279><c> then</c><01:04:52.359><c> you</c><01:04:52.480><c> start</c><01:04:52.680><c> your</c>
+
+01:04:52.870 --> 01:04:52.880 align:start position:0%
+window manager then you start your
+
+
+01:04:52.880 --> 01:04:55.230 align:start position:0%
+window manager then you start your
+application<01:04:53.839><c> now</c><01:04:54.000><c> if</c><01:04:54.160><c> you</c><01:04:54.400><c> if</c><01:04:54.480><c> you</c><01:04:54.960><c> put</c>
+
+01:04:55.230 --> 01:04:55.240 align:start position:0%
+application now if you if you put
+
+
+01:04:55.240 --> 01:04:57.109 align:start position:0%
+application now if you if you put
+function<01:04:55.839><c> five</c><01:04:56.160><c> and</c><01:04:56.240><c> you</c><01:04:56.359><c> go</c><01:04:56.559><c> get</c><01:04:56.640><c> a</c><01:04:56.760><c> terminal</c>
+
+01:04:57.109 --> 01:04:57.119 align:start position:0%
+function five and you go get a terminal
+
+
+01:04:57.119 --> 01:04:59.190 align:start position:0%
+function five and you go get a terminal
+window<01:04:57.680><c> log</c><01:04:57.920><c> in</c><01:04:58.160><c> terminal</c><01:04:58.480><c> window</c><01:04:58.960><c> you</c><01:04:59.039><c> can</c>
+
+01:04:59.190 --> 01:04:59.200 align:start position:0%
+window log in terminal window you can
+
+
+01:04:59.200 --> 01:05:02.349 align:start position:0%
+window log in terminal window you can
+use<01:04:59.359><c> the</c><01:04:59.480><c> alt</c><01:04:59.799><c> control</c><01:05:00.400><c> CIS</c><01:05:00.799><c> request</c><01:05:01.799><c> you</c><01:05:02.240><c> and</c>
+
+01:05:02.349 --> 01:05:02.359 align:start position:0%
+use the alt control CIS request you and
+
+
+01:05:02.359 --> 01:05:04.190 align:start position:0%
+use the alt control CIS request you and
+you<01:05:02.559><c> remount</c><01:05:02.960><c> the</c><01:05:03.079><c> file</c><01:05:03.279><c> system</c><01:05:03.520><c> read</c><01:05:03.799><c> only</c><01:05:04.079><c> so</c>
+
+01:05:04.190 --> 01:05:04.200 align:start position:0%
+you remount the file system read only so
+
+
+01:05:04.200 --> 01:05:05.950 align:start position:0%
+you remount the file system read only so
+what<01:05:04.279><c> you've</c><01:05:04.440><c> done</c><01:05:04.599><c> is</c><01:05:05.039><c> it's</c><01:05:05.200><c> not</c><01:05:05.400><c> really</c>
+
+01:05:05.950 --> 01:05:05.960 align:start position:0%
+what you've done is it's not really
+
+
+01:05:05.960 --> 01:05:07.789 align:start position:0%
+what you've done is it's not really
+unmount<01:05:06.599><c> and</c><01:05:06.720><c> then</c><01:05:06.920><c> remount</c><01:05:07.440><c> because</c><01:05:07.640><c> the</c>
+
+01:05:07.789 --> 01:05:07.799 align:start position:0%
+unmount and then remount because the
+
+
+01:05:07.799 --> 01:05:09.109 align:start position:0%
+unmount and then remount because the
+descriptors<01:05:08.240><c> are</c><01:05:08.400><c> still</c><01:05:08.599><c> there</c><01:05:08.760><c> the</c><01:05:08.839><c> file</c>
+
+01:05:09.109 --> 01:05:09.119 align:start position:0%
+descriptors are still there the file
+
+
+01:05:09.119 --> 01:05:10.349 align:start position:0%
+descriptors are still there the file
+descriptors<01:05:09.559><c> are</c><01:05:09.720><c> actually</c><01:05:09.960><c> still</c><01:05:10.119><c> there</c><01:05:10.240><c> for</c>
+
+01:05:10.349 --> 01:05:10.359 align:start position:0%
+descriptors are actually still there for
+
+
+01:05:10.359 --> 01:05:11.870 align:start position:0%
+descriptors are actually still there for
+the<01:05:10.440><c> running</c><01:05:10.720><c> program</c><01:05:11.440><c> it's</c><01:05:11.599><c> kind</c><01:05:11.680><c> of</c>
+
+01:05:11.870 --> 01:05:11.880 align:start position:0%
+the running program it's kind of
+
+
+01:05:11.880 --> 01:05:13.910 align:start position:0%
+the running program it's kind of
+interesting<01:05:12.480><c> but</c><01:05:12.680><c> then</c><01:05:12.799><c> you</c><01:05:13.000><c> hit</c><01:05:13.160><c> F7</c><01:05:13.640><c> to</c>
+
+01:05:13.910 --> 01:05:13.920 align:start position:0%
+interesting but then you hit F7 to
+
+
+01:05:13.920 --> 01:05:15.710 align:start position:0%
+interesting but then you hit F7 to
+return<01:05:14.079><c> back</c><01:05:14.200><c> to</c><01:05:14.319><c> your</c><01:05:14.440><c> X</c><01:05:14.680><c> session</c><01:05:15.319><c> and</c><01:05:15.520><c> this</c>
+
+01:05:15.710 --> 01:05:15.720 align:start position:0%
+return back to your X session and this
+
+
+01:05:15.720 --> 01:05:17.910 align:start position:0%
+return back to your X session and this
+app<01:05:15.920><c> is</c><01:05:16.079><c> still</c><01:05:16.279><c> running</c><01:05:16.680><c> and</c><01:05:16.760><c> it</c><01:05:16.880><c> runs</c><01:05:17.240><c> fine</c><01:05:17.760><c> so</c>
+
+01:05:17.910 --> 01:05:17.920 align:start position:0%
+app is still running and it runs fine so
+
+
+01:05:17.920 --> 01:05:19.190 align:start position:0%
+app is still running and it runs fine so
+I<01:05:18.000><c> had</c><01:05:18.119><c> to</c><01:05:18.240><c> do</c><01:05:18.400><c> this</c><01:05:18.520><c> little</c><01:05:18.720><c> trick</c><01:05:19.000><c> to</c>
+
+01:05:19.190 --> 01:05:19.200 align:start position:0%
+I had to do this little trick to
+
+
+01:05:19.200 --> 01:05:22.710 align:start position:0%
+I had to do this little trick to
+actually<01:05:19.880><c> turn</c><01:05:20.079><c> it</c><01:05:20.279><c> into</c><01:05:20.480><c> a</c><01:05:20.960><c> safe</c><01:05:21.960><c> Standalone</c>
+
+01:05:22.710 --> 01:05:22.720 align:start position:0%
+actually turn it into a safe Standalone
+
+
+01:05:22.720 --> 01:05:24.549 align:start position:0%
+actually turn it into a safe Standalone
+program<01:05:23.400><c> by</c><01:05:23.559><c> making</c><01:05:23.799><c> the</c><01:05:23.960><c> file</c><01:05:24.160><c> system</c><01:05:24.359><c> read</c>
+
+01:05:24.549 --> 01:05:24.559 align:start position:0%
+program by making the file system read
+
+
+01:05:24.559 --> 01:05:26.950 align:start position:0%
+program by making the file system read
+only<01:05:24.839><c> but</c><01:05:24.960><c> I</c><01:05:25.039><c> couldn't</c><01:05:25.240><c> do</c><01:05:25.400><c> it</c><01:05:25.839><c> earlier</c><01:05:26.440><c> than</c>
+
+01:05:26.950 --> 01:05:26.960 align:start position:0%
+only but I couldn't do it earlier than
+
+
+01:05:26.960 --> 01:05:28.390 align:start position:0%
+only but I couldn't do it earlier than
+than<01:05:27.279><c> having</c><01:05:27.520><c> the</c><01:05:27.680><c> application</c><01:05:28.160><c> already</c>
+
+01:05:28.390 --> 01:05:28.400 align:start position:0%
+than having the application already
+
+
+01:05:28.400 --> 01:05:29.990 align:start position:0%
+than having the application already
+start<01:05:28.680><c> up</c><01:05:28.799><c> and</c><01:05:28.920><c> start</c><01:05:29.119><c> running</c><01:05:29.640><c> so</c><01:05:29.799><c> that</c><01:05:29.880><c> was</c>
+
+01:05:29.990 --> 01:05:30.000 align:start position:0%
+start up and start running so that was
+
+
+01:05:30.000 --> 01:05:32.870 align:start position:0%
+start up and start running so that was
+kind<01:05:30.119><c> of</c><01:05:30.200><c> an</c><01:05:30.319><c> interesting</c><01:05:31.079><c> all</c><01:05:31.680><c> right</c><01:05:32.680><c> that's</c>
+
+01:05:32.870 --> 01:05:32.880 align:start position:0%
+kind of an interesting all right that's
+
+
+01:05:32.880 --> 01:05:34.470 align:start position:0%
+kind of an interesting all right that's
+about<01:05:33.039><c> it</c><01:05:33.359><c> okay</c><01:05:33.520><c> so</c>
+
+01:05:34.470 --> 01:05:34.480 align:start position:0%
+about it okay so
+
+
+01:05:34.480 --> 01:05:36.630 align:start position:0%
+about it okay so
+now
+
+01:05:36.630 --> 01:05:36.640 align:start position:0%
+now
+
+
+01:05:36.640 --> 01:05:39.269 align:start position:0%
+now
+video<01:05:37.640><c> here</c><01:05:37.880><c> I</c><01:05:38.039><c> apologize</c><01:05:38.599><c> that</c><01:05:38.920><c> we</c><01:05:39.039><c> have</c><01:05:39.160><c> the</c>
+
+01:05:39.269 --> 01:05:39.279 align:start position:0%
+video here I apologize that we have the
+
+
+01:05:39.279 --> 01:05:41.510 align:start position:0%
+video here I apologize that we have the
+light<01:05:39.440><c> on</c><01:05:39.680><c> over</c><01:05:39.880><c> here</c><01:05:40.000><c> we</c><01:05:40.079><c> should</c><01:05:40.359><c> had</c><01:05:40.440><c> it</c>
+
+01:05:41.510 --> 01:05:41.520 align:start position:0%
+light on over here we should had it
+
+
+01:05:41.520 --> 01:05:45.150 align:start position:0%
+light on over here we should had it
+out<01:05:42.520><c> show</c><01:05:43.119><c> but</c><01:05:43.480><c> uh</c><01:05:44.039><c> it</c><01:05:44.240><c> actually</c><01:05:44.599><c> needs</c><01:05:44.880><c> it</c>
+
+01:05:45.150 --> 01:05:45.160 align:start position:0%
+out show but uh it actually needs it
+
+
+01:05:45.160 --> 01:05:46.470 align:start position:0%
+out show but uh it actually needs it
+because<01:05:45.599><c> although</c><01:05:45.880><c> it</c><01:05:45.920><c> would</c><01:05:46.079><c> be</c><01:05:46.200><c> better</c><01:05:46.400><c> to</c>
+
+01:05:46.470 --> 01:05:46.480 align:start position:0%
+because although it would be better to
+
+
+01:05:46.480 --> 01:05:47.630 align:start position:0%
+because although it would be better to
+see<01:05:46.720><c> the</c>
+
+01:05:47.630 --> 01:05:47.640 align:start position:0%
+see the
+
+
+01:05:47.640 --> 01:05:50.069 align:start position:0%
+see the
+screen<01:05:48.640><c> my</c><01:05:48.920><c> camera</c><01:05:49.240><c> wouldn't</c><01:05:49.480><c> be</c><01:05:49.559><c> able</c><01:05:49.799><c> to</c>
+
+01:05:50.069 --> 01:05:50.079 align:start position:0%
+screen my camera wouldn't be able to
+
+
+01:05:50.079 --> 01:06:22.069 align:start position:0%
+screen my camera wouldn't be able to
+Target
+
+01:06:22.069 --> 01:06:22.079 align:start position:0%
+
+
+
+01:06:22.079 --> 01:06:23.910 align:start position:0%
+
+oh<01:06:22.400><c> oh</c><01:06:22.680><c> oh</c><01:06:22.799><c> yeah</c><01:06:22.920><c> it's</c><01:06:23.119><c> why</c><01:06:23.359><c> sorry</c><01:06:23.640><c> screen</c>
+
+01:06:23.910 --> 01:06:23.920 align:start position:0%
+oh oh oh yeah it's why sorry screen
+
+
+01:06:23.920 --> 01:06:26.309 align:start position:0%
+oh oh oh yeah it's why sorry screen
+biking
+
+01:06:26.309 --> 01:06:26.319 align:start position:0%
+biking
+
+
+01:06:26.319 --> 01:06:31.950 align:start position:0%
+biking
+not<01:06:26.520><c> doing</c>
+
+01:06:31.950 --> 01:06:31.960 align:start position:0%
+
+
+
+01:06:31.960 --> 01:06:34.269 align:start position:0%
+
+anything<01:06:32.960><c> all</c>
+
+01:06:34.269 --> 01:06:34.279 align:start position:0%
+anything all
+
+
+01:06:34.279 --> 01:06:36.990 align:start position:0%
+anything all
+right<01:06:35.279><c> here's</c><01:06:35.559><c> the</c>
+
+01:06:36.990 --> 01:06:37.000 align:start position:0%
+right here's the
+
+
+01:06:37.000 --> 01:06:39.870 align:start position:0%
+right here's the
+program<01:06:38.000><c> they</c><01:06:38.200><c> recognize</c><01:06:38.760><c> the</c><01:06:38.880><c> curses</c>
+
+01:06:39.870 --> 01:06:39.880 align:start position:0%
+program they recognize the curses
+
+
+01:06:39.880 --> 01:06:44.750 align:start position:0%
+program they recognize the curses
+interface<01:06:41.119><c> now</c><01:06:42.119><c> uh</c><01:06:43.079><c> turn</c><01:06:43.359><c> on</c><01:06:43.520><c> your</c><01:06:43.760><c> targeting</c>
+
+01:06:44.750 --> 01:06:44.760 align:start position:0%
+interface now uh turn on your targeting
+
+
+01:06:44.760 --> 01:06:46.349 align:start position:0%
+interface now uh turn on your targeting
+system
+
+01:06:46.349 --> 01:06:46.359 align:start position:0%
+system
+
+
+01:06:46.359 --> 01:06:50.069 align:start position:0%
+system
+laser<01:06:47.359><c> and</c><01:06:47.480><c> I</c><01:06:47.640><c> might</c><01:06:47.880><c> go</c><01:06:48.039><c> over</c><01:06:48.200><c> to</c><01:06:48.400><c> the</c><01:06:48.599><c> left</c><01:06:48.799><c> a</c>
+
+01:06:50.069 --> 01:06:50.079 align:start position:0%
+laser and I might go over to the left a
+
+
+01:06:50.079 --> 01:06:53.430 align:start position:0%
+laser and I might go over to the left a
+little<01:06:51.240><c> up</c><01:06:52.240><c> I</c><01:06:52.319><c> don't</c><01:06:52.400><c> know</c><01:06:52.640><c> people</c><01:06:53.079><c> anywhere</c>
+
+01:06:53.430 --> 01:06:53.440 align:start position:0%
+little up I don't know people anywhere
+
+
+01:06:53.440 --> 01:06:57.069 align:start position:0%
+little up I don't know people anywhere
+can<01:06:53.680><c> see</c><01:06:54.079><c> this</c><01:06:55.079><c> but</c><01:06:55.240><c> this</c><01:06:55.319><c> is</c><01:06:55.640><c> the</c><01:06:55.720><c> stepper</c>
+
+01:06:57.069 --> 01:06:57.079 align:start position:0%
+can see this but this is the stepper
+
+
+01:06:57.079 --> 01:07:04.589 align:start position:0%
+can see this but this is the stepper
+motor<01:06:58.079><c> controlling</c><01:06:58.760><c> the</c><01:06:59.039><c> uh</c><01:06:59.920><c> the</c><01:07:00.400><c> laser</c><01:07:01.400><c> all</c>
+
+01:07:04.589 --> 01:07:04.599 align:start position:0%
+
+
+
+01:07:04.599 --> 01:07:11.390 align:start position:0%
+
+right<01:07:05.599><c> so</c><01:07:05.799><c> that's</c><01:07:06.000><c> the</c><01:07:06.160><c> targeting</c><01:07:06.640><c> part</c><01:07:06.799><c> of</c><01:07:07.200><c> it</c>
+
+01:07:11.390 --> 01:07:11.400 align:start position:0%
+
+
+
+01:07:11.400 --> 01:07:14.630 align:start position:0%
+
+and<01:07:12.400><c> still</c><01:07:12.640><c> running</c><01:07:13.200><c> oh</c><01:07:13.319><c> there</c><01:07:13.440><c> we</c><01:07:13.640><c> go</c><01:07:14.400><c> lost</c>
+
+01:07:14.630 --> 01:07:14.640 align:start position:0%
+and still running oh there we go lost
+
+
+01:07:14.640 --> 01:07:16.910 align:start position:0%
+and still running oh there we go lost
+the<01:07:14.880><c> computer</c>
+
+01:07:16.910 --> 01:07:16.920 align:start position:0%
+the computer
+
+
+01:07:16.920 --> 01:07:20.950 align:start position:0%
+the computer
+right<01:07:17.920><c> now</c><01:07:18.480><c> it's</c><01:07:19.200><c> it's</c><01:07:19.319><c> kind</c><01:07:19.440><c> of</c><01:07:19.920><c> funny</c><01:07:20.279><c> angle</c>
+
+01:07:20.950 --> 01:07:20.960 align:start position:0%
+right now it's it's kind of funny angle
+
+
+01:07:20.960 --> 01:07:23.710 align:start position:0%
+right now it's it's kind of funny angle
+because<01:07:21.960><c> I'm</c><01:07:22.480><c> not</c><01:07:22.839><c> looking</c><01:07:23.200><c> straight</c><01:07:23.480><c> at</c><01:07:23.640><c> the</c>
+
+01:07:23.710 --> 01:07:23.720 align:start position:0%
+because I'm not looking straight at the
+
+
+01:07:23.720 --> 01:07:26.069 align:start position:0%
+because I'm not looking straight at the
+screen<01:07:24.400><c> now</c><01:07:24.520><c> if</c><01:07:24.599><c> I</c><01:07:24.760><c> had</c><01:07:24.960><c> time</c><01:07:25.160><c> to</c><01:07:25.559><c> calibrate</c>
+
+01:07:26.069 --> 01:07:26.079 align:start position:0%
+screen now if I had time to calibrate
+
+
+01:07:26.079 --> 01:07:28.670 align:start position:0%
+screen now if I had time to calibrate
+this<01:07:26.279><c> with</c><01:07:26.400><c> the</c><01:07:26.520><c> image</c><01:07:26.839><c> that</c><01:07:27.160><c> would</c><01:07:28.160><c> better</c>
+
+01:07:28.670 --> 01:07:28.680 align:start position:0%
+this with the image that would better
+
+
+01:07:28.680 --> 01:07:34.349 align:start position:0%
+this with the image that would better
+and<01:07:28.839><c> now</c><01:07:29.000><c> we</c><01:07:29.160><c> really</c><01:07:29.319><c> need</c><01:07:29.440><c> to</c>
+
+01:07:34.349 --> 01:07:34.359 align:start position:0%
+
+
+
+01:07:34.359 --> 01:07:37.109 align:start position:0%
+
+start<01:07:35.359><c> see</c><01:07:35.720><c> people</c>
+
+01:07:37.109 --> 01:07:37.119 align:start position:0%
+start see people
+
+
+01:07:37.119 --> 01:07:40.390 align:start position:0%
+start see people
+and
+
+01:07:40.390 --> 01:07:40.400 align:start position:0%
+
+
+
+01:07:40.400 --> 01:07:42.589 align:start position:0%
+
+face<01:07:41.400><c> full</c><01:07:41.599><c> screen</c><01:07:41.880><c> I</c><01:07:41.960><c> don't</c><01:07:42.119><c> know</c><01:07:42.279><c> why</c><01:07:42.359><c> it's</c>
+
+01:07:42.589 --> 01:07:42.599 align:start position:0%
+face full screen I don't know why it's
+
+
+01:07:42.599 --> 01:07:47.470 align:start position:0%
+face full screen I don't know why it's
+not<01:07:42.880><c> oh</c><01:07:42.960><c> is</c><01:07:43.079><c> it</c>
+
+01:07:47.470 --> 01:07:47.480 align:start position:0%
+
+
+
+01:07:47.480 --> 01:07:51.510 align:start position:0%
+
+Lu<01:07:48.480><c> there</c><01:07:48.599><c> we</c>
+
+01:07:51.510 --> 01:07:51.520 align:start position:0%
+
+
+
+01:07:51.520 --> 01:07:54.190 align:start position:0%
+
+go<01:07:52.520><c> what's</c><01:07:52.680><c> going</c><01:07:52.839><c> on</c><01:07:53.279><c> is</c><01:07:53.359><c> it</c><01:07:53.799><c> is</c><01:07:53.880><c> there</c><01:07:54.039><c> some</c>
+
+01:07:54.190 --> 01:07:54.200 align:start position:0%
+go what's going on is it is there some
+
+
+01:07:54.200 --> 01:08:10.510 align:start position:0%
+go what's going on is it is there some
+reason<01:07:55.160><c> there</c><01:07:55.319><c> go</c>
+
+01:08:10.510 --> 01:08:10.520 align:start position:0%
+
+
+
+01:08:10.520 --> 01:08:13.630 align:start position:0%
+
+okay<01:08:11.520><c> having</c><01:08:12.240><c> problem</c><01:08:12.760><c> yeah</c><01:08:12.880><c> it's</c><01:08:13.039><c> having</c><01:08:13.279><c> s</c>
+
+01:08:13.630 --> 01:08:13.640 align:start position:0%
+okay having problem yeah it's having s
+
+
+01:08:13.640 --> 01:08:16.189 align:start position:0%
+okay having problem yeah it's having s
+problems<01:08:14.160><c> we</c><01:08:14.480><c> yeah</c><01:08:14.599><c> we</c><01:08:14.720><c> hav</c><01:08:14.880><c> tried</c><01:08:15.279><c> this</c>
+
+01:08:16.189 --> 01:08:16.199 align:start position:0%
+problems we yeah we hav tried this
+
+
+01:08:16.199 --> 01:08:19.349 align:start position:0%
+problems we yeah we hav tried this
+resolution<01:08:17.199><c> actually</c><01:08:17.480><c> trying</c>
+
+01:08:19.349 --> 01:08:19.359 align:start position:0%
+resolution actually trying
+
+
+01:08:19.359 --> 01:08:24.590 align:start position:0%
+resolution actually trying
+boy<01:08:20.759><c> better</c><01:08:21.759><c> yeah</c><01:08:22.520><c> got</c><01:08:23.199><c> me</c><01:08:24.199><c> so</c><01:08:24.359><c> how</c><01:08:24.440><c> many</c>
+
+01:08:24.590 --> 01:08:24.600 align:start position:0%
+boy better yeah got me so how many
+
+
+01:08:24.600 --> 01:08:26.189 align:start position:0%
+boy better yeah got me so how many
+frames<01:08:24.920><c> per</c><01:08:25.080><c> second</c>
+
+01:08:26.189 --> 01:08:26.199 align:start position:0%
+frames per second
+
+
+01:08:26.199 --> 01:08:31.749 align:start position:0%
+frames per second
+uh<01:08:26.440><c> it</c><01:08:26.560><c> is.</c><01:08:27.319><c> 3</c><01:08:27.600><c> frames</c><01:08:27.960><c> per</c>
+
+01:08:31.749 --> 01:08:31.759 align:start position:0%
+
+
+
+01:08:31.759 --> 01:08:36.390 align:start position:0%
+
+second<01:08:32.759><c> but</c><01:08:32.920><c> the</c><01:08:33.159><c> bad</c><01:08:33.759><c> news</c><01:08:34.759><c> is</c><01:08:35.560><c> it's</c><01:08:35.799><c> not</c><01:08:36.080><c> got</c>
+
+01:08:36.390 --> 01:08:36.400 align:start position:0%
+second but the bad news is it's not got
+
+
+01:08:36.400 --> 01:08:40.070 align:start position:0%
+second but the bad news is it's not got
+any<01:08:36.759><c> Cycles</c><01:08:37.560><c> to</c><01:08:37.839><c> update</c><01:08:38.799><c> the</c><01:08:39.239><c> the</c><01:08:39.600><c> the</c><01:08:39.719><c> motor</c>
+
+01:08:40.070 --> 01:08:40.080 align:start position:0%
+any Cycles to update the the the motor
+
+
+01:08:40.080 --> 01:08:41.630 align:start position:0%
+any Cycles to update the the the motor
+and<01:08:40.239><c> drive</c><01:08:40.520><c> motor</c><01:08:40.839><c> that's</c><01:08:41.040><c> the</c><01:08:41.120><c> reason</c><01:08:41.319><c> I</c><01:08:41.480><c> did</c>
+
+01:08:41.630 --> 01:08:41.640 align:start position:0%
+and drive motor that's the reason I did
+
+
+01:08:41.640 --> 01:08:43.269 align:start position:0%
+and drive motor that's the reason I did
+it<01:08:41.759><c> by</c><01:08:41.920><c> hand</c><01:08:42.159><c> with</c><01:08:42.279><c> a</c><01:08:42.400><c> keyboard</c><01:08:42.799><c> to</c><01:08:42.920><c> show</c><01:08:43.120><c> you</c>
+
+01:08:43.269 --> 01:08:43.279 align:start position:0%
+it by hand with a keyboard to show you
+
+
+01:08:43.279 --> 01:08:45.669 align:start position:0%
+it by hand with a keyboard to show you
+that<01:08:43.480><c> the</c><01:08:43.759><c> laser</c><01:08:44.080><c> pointer</c><01:08:44.520><c> actually</c><01:08:44.759><c> moved</c><01:08:45.480><c> is</c>
+
+01:08:45.669 --> 01:08:45.679 align:start position:0%
+that the laser pointer actually moved is
+
+
+01:08:45.679 --> 01:08:48.590 align:start position:0%
+that the laser pointer actually moved is
+because<01:08:46.199><c> when</c><01:08:46.400><c> it's</c><01:08:46.600><c> in</c><01:08:46.799><c> this</c><01:08:47.000><c> mode</c><01:08:47.880><c> doing</c><01:08:48.319><c> the</c>
+
+01:08:48.590 --> 01:08:48.600 align:start position:0%
+because when it's in this mode doing the
+
+
+01:08:48.600 --> 01:08:50.269 align:start position:0%
+because when it's in this mode doing the
+the<01:08:48.799><c> the</c><01:08:48.920><c> image</c><01:08:49.199><c> processing</c><01:08:49.759><c> it</c><01:08:49.880><c> doesn't</c><01:08:50.120><c> do</c>
+
+01:08:50.269 --> 01:08:50.279 align:start position:0%
+the the image processing it doesn't do
+
+
+01:08:50.279 --> 01:08:51.870 align:start position:0%
+the the image processing it doesn't do
+that<01:08:50.480><c> so</c><01:08:50.679><c> this</c><01:08:50.799><c> was</c><01:08:50.920><c> at</c><01:08:51.040><c> sparkon</c><01:08:51.640><c> this</c><01:08:51.719><c> was</c>
+
+01:08:51.870 --> 01:08:51.880 align:start position:0%
+that so this was at sparkon this was
+
+
+01:08:51.880 --> 01:08:53.269 align:start position:0%
+that so this was at sparkon this was
+like<01:08:52.040><c> the</c><01:08:52.239><c> last</c><01:08:52.520><c> day</c><01:08:52.719><c> we</c><01:08:52.839><c> were</c><01:08:53.040><c> setting</c>
+
+01:08:53.269 --> 01:08:53.279 align:start position:0%
+like the last day we were setting
+
+
+01:08:53.279 --> 01:08:55.070 align:start position:0%
+like the last day we were setting
+everything<01:08:53.600><c> out</c><01:08:54.159><c> I</c><01:08:54.279><c> finally</c><01:08:54.560><c> put</c><01:08:54.799><c> all</c><01:08:54.960><c> the</c>
+
+01:08:55.070 --> 01:08:55.080 align:start position:0%
+everything out I finally put all the
+
+
+01:08:55.080 --> 01:08:56.910 align:start position:0%
+everything out I finally put all the
+pieces<01:08:55.600><c> together</c><01:08:55.960><c> because</c><01:08:56.359><c> my</c><01:08:56.520><c> targeting</c>
+
+01:08:56.910 --> 01:08:56.920 align:start position:0%
+pieces together because my targeting
+
+
+01:08:56.920 --> 01:08:58.349 align:start position:0%
+pieces together because my targeting
+system<01:08:57.159><c> worked</c><01:08:57.440><c> great</c><01:08:57.600><c> the</c><01:08:57.679><c> laser</c><01:08:58.000><c> could</c><01:08:58.120><c> go</c>
+
+01:08:58.349 --> 01:08:58.359 align:start position:0%
+system worked great the laser could go
+
+
+01:08:58.359 --> 01:09:00.870 align:start position:0%
+system worked great the laser could go
+anywhere<01:08:59.159><c> and</c><01:08:59.400><c> and</c><01:08:59.520><c> then</c><01:08:59.759><c> my</c><01:09:00.239><c> uh</c><01:09:00.480><c> my</c><01:09:00.640><c> face</c>
+
+01:09:00.870 --> 01:09:00.880 align:start position:0%
+anywhere and and then my uh my face
+
+
+01:09:00.880 --> 01:09:02.749 align:start position:0%
+anywhere and and then my uh my face
+detection<01:09:01.279><c> is</c><01:09:01.440><c> working</c><01:09:01.799><c> great</c><01:09:02.279><c> I</c><01:09:02.359><c> said</c><01:09:02.600><c> great</c>
+
+01:09:02.749 --> 01:09:02.759 align:start position:0%
+detection is working great I said great
+
+
+01:09:02.759 --> 01:09:03.950 align:start position:0%
+detection is working great I said great
+I<01:09:02.880><c> just</c><01:09:03.000><c> have</c><01:09:03.080><c> to</c><01:09:03.159><c> feed</c><01:09:03.440><c> the</c><01:09:03.560><c> output</c><01:09:03.799><c> of</c><01:09:03.880><c> the</c>
+
+01:09:03.950 --> 01:09:03.960 align:start position:0%
+I just have to feed the output of the
+
+
+01:09:03.960 --> 01:09:05.269 align:start position:0%
+I just have to feed the output of the
+face<01:09:04.159><c> section</c><01:09:04.480><c> into</c><01:09:04.719><c> the</c><01:09:04.839><c> little</c><01:09:05.000><c> laser</c>
+
+01:09:05.269 --> 01:09:05.279 align:start position:0%
+face section into the little laser
+
+
+01:09:05.279 --> 01:09:08.070 align:start position:0%
+face section into the little laser
+pointer<01:09:05.719><c> thing</c><01:09:06.159><c> XY</c><01:09:06.719><c> position</c><01:09:07.040><c> and</c><01:09:07.199><c> let</c><01:09:07.319><c> it</c><01:09:07.520><c> go</c>
+
+01:09:08.070 --> 01:09:08.080 align:start position:0%
+pointer thing XY position and let it go
+
+
+01:09:08.080 --> 01:09:10.189 align:start position:0%
+pointer thing XY position and let it go
+and<01:09:08.239><c> I</c><01:09:08.400><c> got</c><01:09:08.719><c> this</c><01:09:09.040><c> which</c><01:09:09.159><c> is</c><01:09:09.560><c> the</c><01:09:09.759><c> laser</c><01:09:10.080><c> just</c>
+
+01:09:10.189 --> 01:09:10.199 align:start position:0%
+and I got this which is the laser just
+
+
+01:09:10.199 --> 01:09:13.269 align:start position:0%
+and I got this which is the laser just
+sitting<01:09:10.520><c> there</c><01:09:11.000><c> so</c><01:09:11.520><c> so</c><01:09:11.679><c> I</c><01:09:11.759><c> said</c><01:09:12.279><c> oh</c><01:09:12.520><c> man</c><01:09:13.080><c> it</c>
+
+01:09:13.269 --> 01:09:13.279 align:start position:0%
+sitting there so so I said oh man it
+
+
+01:09:13.279 --> 01:09:15.910 align:start position:0%
+sitting there so so I said oh man it
+can't<01:09:13.520><c> do</c><01:09:13.960><c> image</c><01:09:14.279><c> processing</c><01:09:15.080><c> and</c><01:09:15.560><c> move</c><01:09:15.759><c> the</c>
+
+01:09:15.910 --> 01:09:15.920 align:start position:0%
+can't do image processing and move the
+
+
+01:09:15.920 --> 01:09:19.390 align:start position:0%
+can't do image processing and move the
+motors<01:09:16.920><c> and</c><01:09:17.319><c> and</c><01:09:17.520><c> so</c><01:09:18.040><c> Justice</c><01:09:18.480><c> said</c><01:09:19.080><c> here's</c>
+
+01:09:19.390 --> 01:09:19.400 align:start position:0%
+motors and and so Justice said here's
+
+
+01:09:19.400 --> 01:09:20.990 align:start position:0%
+motors and and so Justice said here's
+another<01:09:19.679><c> pie</c>
+
+01:09:20.990 --> 01:09:21.000 align:start position:0%
+another pie
+
+
+01:09:21.000 --> 01:09:23.110 align:start position:0%
+another pie
+so<01:09:22.000><c> that's</c><01:09:22.359><c> that's</c><01:09:22.600><c> great</c><01:09:22.880><c> that's</c><01:09:23.040><c> the</c>
+
+01:09:23.110 --> 01:09:23.120 align:start position:0%
+so that's that's great that's the
+
+
+01:09:23.120 --> 01:09:25.829 align:start position:0%
+so that's that's great that's the
+strength<01:09:23.480><c> of</c><01:09:23.600><c> the</c><01:09:23.679><c> raspberry</c><01:09:24.159><c> pie</c><01:09:25.040><c> for</c><01:09:25.400><c> 35</c>
+
+01:09:25.829 --> 01:09:25.839 align:start position:0%
+strength of the raspberry pie for 35
+
+
+01:09:25.839 --> 01:09:27.590 align:start position:0%
+strength of the raspberry pie for 35
+bucks<01:09:26.239><c> you</c><01:09:26.359><c> got</c><01:09:26.520><c> two</c><01:09:26.719><c> of</c><01:09:26.839><c> them</c><01:09:27.040><c> and</c><01:09:27.120><c> so</c><01:09:27.279><c> I</c><01:09:27.400><c> had</c>
+
+01:09:27.590 --> 01:09:27.600 align:start position:0%
+bucks you got two of them and so I had
+
+
+01:09:27.600 --> 01:09:29.709 align:start position:0%
+bucks you got two of them and so I had
+one<01:09:27.920><c> that</c><01:09:28.040><c> was</c><01:09:28.199><c> doing</c><01:09:28.480><c> the</c><01:09:28.640><c> P</c><01:09:28.880><c> Imaging</c><01:09:29.400><c> and</c>
+
+01:09:29.709 --> 01:09:29.719 align:start position:0%
+one that was doing the P Imaging and
+
+
+01:09:29.719 --> 01:09:31.510 align:start position:0%
+one that was doing the P Imaging and
+displaying<01:09:30.120><c> it</c><01:09:30.400><c> now</c><01:09:30.560><c> displaying</c><01:09:31.040><c> is</c><01:09:31.199><c> kind</c><01:09:31.319><c> of</c>
+
+01:09:31.510 --> 01:09:31.520 align:start position:0%
+displaying it now displaying is kind of
+
+
+01:09:31.520 --> 01:09:34.430 align:start position:0%
+displaying it now displaying is kind of
+expensive<01:09:32.000><c> too</c><01:09:32.440><c> so</c><01:09:33.080><c> originally</c><01:09:33.960><c> this</c><01:09:34.120><c> wasn't</c>
+
+01:09:34.430 --> 01:09:34.440 align:start position:0%
+expensive too so originally this wasn't
+
+
+01:09:34.440 --> 01:09:36.470 align:start position:0%
+expensive too so originally this wasn't
+going<01:09:34.600><c> to</c><01:09:34.799><c> point</c><01:09:35.080><c> at</c><01:09:35.199><c> a</c><01:09:35.319><c> screen</c><01:09:36.199><c> you're</c><01:09:36.359><c> going</c>
+
+01:09:36.470 --> 01:09:36.480 align:start position:0%
+going to point at a screen you're going
+
+
+01:09:36.480 --> 01:09:38.550 align:start position:0%
+going to point at a screen you're going
+to<01:09:36.640><c> walk</c><01:09:36.839><c> into</c><01:09:37.040><c> a</c><01:09:37.239><c> room</c><01:09:37.799><c> and</c><01:09:37.920><c> all</c><01:09:38.040><c> of</c><01:09:38.159><c> a</c><01:09:38.279><c> sudden</c>
+
+01:09:38.550 --> 01:09:38.560 align:start position:0%
+to walk into a room and all of a sudden
+
+
+01:09:38.560 --> 01:09:40.229 align:start position:0%
+to walk into a room and all of a sudden
+the<01:09:38.679><c> laser</c><01:09:39.040><c> point</c><01:09:39.440><c> was</c><01:09:39.600><c> going</c><01:09:39.679><c> to</c><01:09:39.839><c> appear</c><01:09:40.080><c> on</c>
+
+01:09:40.229 --> 01:09:40.239 align:start position:0%
+the laser point was going to appear on
+
+
+01:09:40.239 --> 01:09:41.510 align:start position:0%
+the laser point was going to appear on
+your<01:09:40.400><c> chest</c><01:09:40.799><c> I</c><01:09:40.920><c> think</c><01:09:41.040><c> that's</c><01:09:41.199><c> the</c><01:09:41.279><c> most</c>
+
+01:09:41.510 --> 01:09:41.520 align:start position:0%
+your chest I think that's the most
+
+
+01:09:41.520 --> 01:09:42.789 align:start position:0%
+your chest I think that's the most
+effective<01:09:41.839><c> way</c><01:09:41.960><c> to</c><01:09:42.080><c> demonstrate</c><01:09:42.560><c> this</c>
+
+01:09:42.789 --> 01:09:42.799 align:start position:0%
+effective way to demonstrate this
+
+
+01:09:42.799 --> 01:09:45.430 align:start position:0%
+effective way to demonstrate this
+because<01:09:43.080><c> that's</c><01:09:44.000><c> it's</c><01:09:44.159><c> the</c><01:09:44.319><c> Red</c><01:09:44.560><c> Dot</c><01:09:45.080><c> on</c><01:09:45.239><c> your</c>
+
+01:09:45.430 --> 01:09:45.440 align:start position:0%
+because that's it's the Red Dot on your
+
+
+01:09:45.440 --> 01:09:49.669 align:start position:0%
+because that's it's the Red Dot on your
+chest<01:09:45.839><c> that</c><01:09:46.239><c> actually</c><01:09:46.480><c> gets</c><01:09:46.679><c> your</c><01:09:46.839><c> attention</c>
+
+01:09:49.669 --> 01:09:49.679 align:start position:0%
+
+
+
+01:09:49.679 --> 01:09:52.309 align:start position:0%
+
+right<01:09:50.679><c> all</c><01:09:50.759><c> you</c><01:09:50.920><c> need</c><01:09:51.080><c> is</c><01:09:51.279><c> cat</c><01:09:51.560><c> bodyguards</c>
+
+01:09:52.309 --> 01:09:52.319 align:start position:0%
+right all you need is cat bodyguards
+
+
+01:09:52.319 --> 01:09:54.870 align:start position:0%
+right all you need is cat bodyguards
+that's<01:09:52.560><c> right</c><01:09:53.520><c> so</c><01:09:54.239><c> so</c><01:09:54.400><c> the</c><01:09:54.520><c> original</c>
+
+01:09:54.870 --> 01:09:54.880 align:start position:0%
+that's right so so the original
+
+
+01:09:54.880 --> 01:09:57.070 align:start position:0%
+that's right so so the original
+intention<01:09:55.440><c> was</c><01:09:55.600><c> not</c><01:09:55.760><c> to</c><01:09:56.000><c> actually</c><01:09:56.320><c> have</c><01:09:56.440><c> to</c>
+
+01:09:57.070 --> 01:09:57.080 align:start position:0%
+intention was not to actually have to
+
+
+01:09:57.080 --> 01:09:59.630 align:start position:0%
+intention was not to actually have to
+drive<01:09:58.080><c> drive</c><01:09:58.480><c> live</c><01:09:58.760><c> video</c><01:09:59.080><c> coming</c><01:09:59.320><c> out</c><01:09:59.520><c> and</c>
+
+01:09:59.630 --> 01:09:59.640 align:start position:0%
+drive drive live video coming out and
+
+
+01:09:59.640 --> 01:10:02.550 align:start position:0%
+drive drive live video coming out and
+it's<01:09:59.880><c> really</c><01:10:00.360><c> see</c><01:10:00.840><c> so</c><01:10:01.080><c> anyway</c><01:10:01.679><c> the</c><01:10:02.360><c> I</c><01:10:02.440><c> was</c>
+
+01:10:02.550 --> 01:10:02.560 align:start position:0%
+it's really see so anyway the I was
+
+
+01:10:02.560 --> 01:10:04.470 align:start position:0%
+it's really see so anyway the I was
+using<01:10:02.760><c> the</c><01:10:02.920><c> projector</c><01:10:03.360><c> earlier</c><01:10:03.679><c> and</c><01:10:03.920><c> actually</c>
+
+01:10:04.470 --> 01:10:04.480 align:start position:0%
+using the projector earlier and actually
+
+
+01:10:04.480 --> 01:10:06.310 align:start position:0%
+using the projector earlier and actually
+was<01:10:04.760><c> Tred</c><01:10:05.040><c> to</c><01:10:05.280><c> but</c><01:10:05.360><c> anyway</c><01:10:05.600><c> you</c><01:10:05.679><c> can</c><01:10:05.800><c> see</c><01:10:06.000><c> it's</c>
+
+01:10:06.310 --> 01:10:06.320 align:start position:0%
+was Tred to but anyway you can see it's
+
+
+01:10:06.320 --> 01:10:08.189 align:start position:0%
+was Tred to but anyway you can see it's
+it's<01:10:06.480><c> pretty</c><01:10:06.679><c> much</c><01:10:06.880><c> getting</c><01:10:07.239><c> you</c><01:10:07.360><c> know</c><01:10:07.880><c> four</c>
+
+01:10:08.189 --> 01:10:08.199 align:start position:0%
+it's pretty much getting you know four
+
+
+01:10:08.199 --> 01:10:09.750 align:start position:0%
+it's pretty much getting you know four
+people<01:10:08.600><c> four</c><01:10:08.840><c> people</c><01:10:09.040><c> at</c><01:10:09.159><c> a</c><01:10:09.320><c> time</c><01:10:09.480><c> in</c><01:10:09.640><c> the</c>
+
+01:10:09.750 --> 01:10:09.760 align:start position:0%
+people four people at a time in the
+
+
+01:10:09.760 --> 01:10:12.390 align:start position:0%
+people four people at a time in the
+crowd<01:10:10.080><c> taking</c><01:10:10.320><c> them</c>
+
+01:10:12.390 --> 01:10:12.400 align:start position:0%
+crowd taking them
+
+
+01:10:12.400 --> 01:10:17.189 align:start position:0%
+crowd taking them
+out<01:10:13.400><c> you</c><01:10:13.640><c> know</c><01:10:14.640><c> I</c><01:10:14.800><c> F</c><01:10:15.400><c> I</c><01:10:15.520><c> F</c><01:10:15.800><c> the</c><01:10:15.880><c> re</c><01:10:16.199><c> of</c><01:10:16.280><c> the</c>
+
+01:10:17.189 --> 01:10:17.199 align:start position:0%
+out you know I F I F the re of the
+
+
+01:10:17.199 --> 01:10:20.390 align:start position:0%
+out you know I F I F the re of the
+sky<01:10:18.199><c> contract</c><01:10:18.760><c> but</c><01:10:19.080><c> obviously</c><01:10:19.520><c> can</c><01:10:19.760><c> improve</c>
+
+01:10:20.390 --> 01:10:20.400 align:start position:0%
+sky contract but obviously can improve
+
+
+01:10:20.400 --> 01:10:22.470 align:start position:0%
+sky contract but obviously can improve
+so<01:10:20.760><c> this</c><01:10:20.840><c> is</c><01:10:21.000><c> my</c><01:10:21.120><c> career</c><01:10:21.440><c> advice</c><01:10:21.719><c> to</c><01:10:21.960><c> anybody</c>
+
+01:10:22.470 --> 01:10:22.480 align:start position:0%
+so this is my career advice to anybody
+
+
+01:10:22.480 --> 01:10:24.070 align:start position:0%
+so this is my career advice to anybody
+and<01:10:22.600><c> even</c><01:10:22.760><c> if</c><01:10:22.880><c> it</c><01:10:23.000><c> doesn't</c><01:10:23.239><c> come</c><01:10:23.360><c> to</c><01:10:23.520><c> fruition</c>
+
+01:10:24.070 --> 01:10:24.080 align:start position:0%
+and even if it doesn't come to fruition
+
+
+01:10:24.080 --> 01:10:25.550 align:start position:0%
+and even if it doesn't come to fruition
+even<01:10:24.239><c> if</c><01:10:24.400><c> the</c><01:10:24.520><c> worst</c><01:10:24.800><c> doesn't</c><01:10:25.040><c> actually</c>
+
+01:10:25.550 --> 01:10:25.560 align:start position:0%
+even if the worst doesn't actually
+
+
+01:10:25.560 --> 01:10:27.270 align:start position:0%
+even if the worst doesn't actually
+happen<01:10:26.280><c> just</c><01:10:26.440><c> think</c><01:10:26.600><c> about</c><01:10:26.760><c> your</c><01:10:26.880><c> career</c><01:10:27.199><c> and</c>
+
+01:10:27.270 --> 01:10:27.280 align:start position:0%
+happen just think about your career and
+
+
+01:10:27.280 --> 01:10:29.990 align:start position:0%
+happen just think about your career and
+you<01:10:27.440><c> think</c><01:10:27.920><c> how</c><01:10:28.080><c> can</c><01:10:28.199><c> I</c><01:10:28.400><c> be</c><01:10:28.640><c> maximally</c><01:10:29.239><c> useful</c>
+
+01:10:29.990 --> 01:10:30.000 align:start position:0%
+you think how can I be maximally useful
+
+
+01:10:30.000 --> 01:10:32.350 align:start position:0%
+you think how can I be maximally useful
+to<01:10:30.159><c> our</c><01:10:30.320><c> digital</c>
+
+01:10:32.350 --> 01:10:32.360 align:start position:0%
+to our digital
+
+
+01:10:32.360 --> 01:10:34.189 align:start position:0%
+to our digital
+overlords<01:10:33.360><c> they're</c><01:10:33.480><c> going</c><01:10:33.560><c> to</c><01:10:33.719><c> keep</c><01:10:33.920><c> some</c><01:10:34.080><c> of</c>
+
+01:10:34.189 --> 01:10:34.199 align:start position:0%
+overlords they're going to keep some of
+
+
+01:10:34.199 --> 01:10:35.709 align:start position:0%
+overlords they're going to keep some of
+us<01:10:34.480><c> but</c><01:10:34.760><c> you</c><01:10:34.880><c> know</c><01:10:35.120><c> which</c><01:10:35.239><c> on</c><01:10:35.400><c> are</c><01:10:35.520><c> they</c><01:10:35.640><c> going</c>
+
+01:10:35.709 --> 01:10:35.719 align:start position:0%
+us but you know which on are they going
+
+
+01:10:35.719 --> 01:10:38.350 align:start position:0%
+us but you know which on are they going
+to<01:10:35.880><c> keep</c><01:10:36.159><c> so</c><01:10:36.560><c> so</c><01:10:36.840><c> think</c><01:10:37.159><c> career-wise</c><01:10:37.600><c> think</c>
+
+01:10:38.350 --> 01:10:38.360 align:start position:0%
+to keep so so think career-wise think
+
+
+01:10:38.360 --> 01:10:39.510 align:start position:0%
+to keep so so think career-wise think
+well<01:10:38.600><c> you</c><01:10:38.719><c> know</c><01:10:38.880><c> they're</c><01:10:39.040><c> gonna</c><01:10:39.440><c> they're</c>
+
+01:10:39.510 --> 01:10:39.520 align:start position:0%
+well you know they're gonna they're
+
+
+01:10:39.520 --> 01:10:49.960 align:start position:0%
+well you know they're gonna they're
+gonna<01:10:39.760><c> need</c><01:10:40.000><c> this</c><01:10:40.719><c> anyway</c>
+
+01:10:49.960 --> 01:10:49.970 align:start position:0%
+
+
+
+01:10:49.970 --> 01:11:19.310 align:start position:0%
+
+[Applause]
+
+01:11:19.310 --> 01:11:19.320 align:start position:0%
+
+
+
+01:11:19.320 --> 01:11:22.830 align:start position:0%
+
+there<01:11:19.400><c> it</c><01:11:19.520><c> is</c><01:11:20.199><c> y</c><01:11:21.199><c> you</c><01:11:21.360><c> want</c><01:11:21.600><c> this</c><01:11:22.280><c> yeah</c><01:11:22.520><c> I</c><01:11:22.600><c> think</c>
+
+01:11:22.830 --> 01:11:22.840 align:start position:0%
+there it is y you want this yeah I think
+
+
+01:11:22.840 --> 01:11:25.110 align:start position:0%
+there it is y you want this yeah I think
+this<01:11:22.960><c> would</c><01:11:23.159><c> be</c><01:11:23.679><c> actually</c><01:11:24.679><c> this</c><01:11:24.800><c> will</c><01:11:24.960><c> help</c>
+
+01:11:25.110 --> 01:11:25.120 align:start position:0%
+this would be actually this will help
+
+
+01:11:25.120 --> 01:11:27.990 align:start position:0%
+this would be actually this will help
+with<01:11:25.440><c> Q&A</c><01:11:26.080><c> yeah</c><01:11:26.199><c> I</c><01:11:26.280><c> was</c><01:11:26.400><c> gonna</c><01:11:26.679><c> say</c><01:11:27.320><c> uh</c><01:11:27.760><c> who's</c>
+
+01:11:27.990 --> 01:11:28.000 align:start position:0%
+with Q&A yeah I was gonna say uh who's
+
+
+01:11:28.000 --> 01:11:32.430 align:start position:0%
+with Q&A yeah I was gonna say uh who's
+got<01:11:28.239><c> the</c><01:11:28.440><c> W</c><01:11:29.000><c> the</c><01:11:29.239><c> microphone</c><01:11:30.239><c> yeah</c><01:11:31.320><c> maybe</c><01:11:32.320><c> we</c>
+
+01:11:32.430 --> 01:11:32.440 align:start position:0%
+got the W the microphone yeah maybe we
+
+
+01:11:32.440 --> 01:11:35.550 align:start position:0%
+got the W the microphone yeah maybe we
+can<01:11:32.719><c> just</c><01:11:33.040><c> of</c><01:11:33.320><c> pass</c><01:11:33.600><c> this</c><01:11:34.239><c> around</c><01:11:35.239><c> and</c><01:11:35.360><c> then</c>
+
+01:11:35.550 --> 01:11:35.560 align:start position:0%
+can just of pass this around and then
+
+
+01:11:35.560 --> 01:11:38.030 align:start position:0%
+can just of pass this around and then
+this<01:11:35.800><c> could</c><01:11:36.040><c> be</c><01:11:36.320><c> for</c>
+
+01:11:38.030 --> 01:11:38.040 align:start position:0%
+this could be for
+
+
+01:11:38.040 --> 01:11:40.270 align:start position:0%
+this could be for
+questions<01:11:39.040><c> well</c><01:11:39.199><c> that</c><01:11:39.320><c> he's</c><01:11:39.480><c> got</c><01:11:39.600><c> one</c><01:11:39.719><c> to</c><01:11:40.080><c> pass</c>
+
+01:11:40.270 --> 01:11:40.280 align:start position:0%
+questions well that he's got one to pass
+
+
+01:11:40.280 --> 01:11:42.189 align:start position:0%
+questions well that he's got one to pass
+around<01:11:40.800><c> oh</c><01:11:40.920><c> you've</c><01:11:41.080><c> got</c><01:11:41.159><c> one</c><01:11:41.320><c> to</c><01:11:41.480><c> pass</c><01:11:41.679><c> around</c>
+
+01:11:42.189 --> 01:11:42.199 align:start position:0%
+around oh you've got one to pass around
+
+
+01:11:42.199 --> 01:11:44.430 align:start position:0%
+around oh you've got one to pass around
+microphone<01:11:42.880><c> that</c><01:11:43.040><c> was</c><01:11:43.239><c> easier</c><01:11:43.760><c> I</c><01:11:43.840><c> think</c><01:11:44.320><c> oh</c>
+
+01:11:44.430 --> 01:11:44.440 align:start position:0%
+microphone that was easier I think oh
+
+
+01:11:44.440 --> 01:11:46.310 align:start position:0%
+microphone that was easier I think oh
+the<01:11:44.520><c> one</c><01:11:44.600><c> you're</c>
+
+01:11:46.310 --> 01:11:46.320 align:start position:0%
+the one you're
+
+
+01:11:46.320 --> 01:11:48.390 align:start position:0%
+the one you're
+holding<01:11:47.320><c> okay</c>
+
+01:11:48.390 --> 01:11:48.400 align:start position:0%
+holding okay
+
+
+01:11:48.400 --> 01:11:52.350 align:start position:0%
+holding okay
+so<01:11:49.400><c> um</c><01:11:50.120><c> we'd</c><01:11:50.480><c> uh</c><01:11:50.600><c> like</c><01:11:50.719><c> to</c><01:11:50.840><c> open</c><01:11:51.080><c> things</c><01:11:51.280><c> up</c><01:11:51.480><c> for</c>
+
+01:11:52.350 --> 01:11:52.360 align:start position:0%
+so um we'd uh like to open things up for
+
+
+01:11:52.360 --> 01:11:55.030 align:start position:0%
+so um we'd uh like to open things up for
+questions<01:11:52.719><c> and</c><01:11:53.040><c> answers</c><01:11:53.840><c> and</c><01:11:54.280><c> uh</c><01:11:54.560><c> we</c><01:11:54.800><c> just</c>
+
+01:11:55.030 --> 01:11:55.040 align:start position:0%
+questions and answers and uh we just
+
+
+01:11:55.040 --> 01:11:56.110 align:start position:0%
+questions and answers and uh we just
+kind<01:11:55.239><c> kind</c>
+
+01:11:56.110 --> 01:11:56.120 align:start position:0%
+kind kind
+
+
+01:11:56.120 --> 01:12:00.910 align:start position:0%
+kind kind
+of<01:11:57.120><c> feed</c><01:11:57.360><c> it</c><01:11:57.520><c> to</c><01:11:57.920><c> whoever</c><01:11:58.960><c> yes</c><01:11:59.960><c> so</c><01:12:00.280><c> I'm</c><01:12:00.480><c> curious</c>
+
+01:12:00.910 --> 01:12:00.920 align:start position:0%
+of feed it to whoever yes so I'm curious
+
+
+01:12:00.920 --> 01:12:04.629 align:start position:0%
+of feed it to whoever yes so I'm curious
+about<01:12:01.520><c> um</c><01:12:02.320><c> I've</c><01:12:02.480><c> heard</c><01:12:02.760><c> people</c><01:12:03.000><c> run</c><01:12:03.520><c> XBMC</c><01:12:04.480><c> the</c>
+
+01:12:04.629 --> 01:12:04.639 align:start position:0%
+about um I've heard people run XBMC the
+
+
+01:12:04.639 --> 01:12:07.350 align:start position:0%
+about um I've heard people run XBMC the
+Xbox<01:12:05.239><c> media</c><01:12:05.560><c> center</c><01:12:05.880><c> on</c><01:12:06.120><c> there</c><01:12:07.000><c> do</c><01:12:07.080><c> you</c><01:12:07.199><c> know</c>
+
+01:12:07.350 --> 01:12:07.360 align:start position:0%
+Xbox media center on there do you know
+
+
+01:12:07.360 --> 01:12:09.629 align:start position:0%
+Xbox media center on there do you know
+anything<01:12:07.679><c> about</c><01:12:08.040><c> that</c><01:12:08.280><c> and</c><01:12:08.960><c> how</c><01:12:09.120><c> well</c><01:12:09.320><c> does</c><01:12:09.440><c> it</c>
+
+01:12:09.629 --> 01:12:09.639 align:start position:0%
+anything about that and how well does it
+
+
+01:12:09.639 --> 01:12:13.870 align:start position:0%
+anything about that and how well does it
+work<01:12:10.199><c> yeah</c><01:12:10.679><c> yes</c><01:12:11.080><c> it</c><01:12:12.080><c> uh</c><01:12:12.719><c> it's</c><01:12:13.040><c> very</c><01:12:13.360><c> popular</c>
+
+01:12:13.870 --> 01:12:13.880 align:start position:0%
+work yeah yes it uh it's very popular
+
+
+01:12:13.880 --> 01:12:17.270 align:start position:0%
+work yeah yes it uh it's very popular
+runs<01:12:14.280><c> very</c><01:12:14.520><c> well</c><01:12:15.239><c> um</c><01:12:15.719><c> what</c><01:12:15.840><c> was</c><01:12:16.000><c> the</c><01:12:16.280><c> question</c>
+
+01:12:17.270 --> 01:12:17.280 align:start position:0%
+runs very well um what was the question
+
+
+01:12:17.280 --> 01:12:21.310 align:start position:0%
+runs very well um what was the question
+the<01:12:17.800><c> question</c><01:12:18.360><c> sorry</c><01:12:18.960><c> was</c><01:12:19.480><c> Allan</c><01:12:19.880><c> heard</c><01:12:20.440><c> that</c>
+
+01:12:21.310 --> 01:12:21.320 align:start position:0%
+the question sorry was Allan heard that
+
+
+01:12:21.320 --> 01:12:24.750 align:start position:0%
+the question sorry was Allan heard that
+the<01:12:21.920><c> um</c><01:12:22.920><c> home</c><01:12:23.239><c> entertainment</c><01:12:24.120><c> uh</c><01:12:24.280><c> system</c>
+
+01:12:24.750 --> 01:12:24.760 align:start position:0%
+the um home entertainment uh system
+
+
+01:12:24.760 --> 01:12:25.709 align:start position:0%
+the um home entertainment uh system
+called
+
+01:12:25.709 --> 01:12:25.719 align:start position:0%
+called
+
+
+01:12:25.719 --> 01:12:28.669 align:start position:0%
+called
+XBMC<01:12:26.719><c> uh</c><01:12:26.800><c> runs</c><01:12:27.040><c> on</c><01:12:27.199><c> Raspberry</c><01:12:27.639><c> Pi</c><01:12:28.239><c> uh</c><01:12:28.360><c> is</c><01:12:28.480><c> that</c>
+
+01:12:28.669 --> 01:12:28.679 align:start position:0%
+XBMC uh runs on Raspberry Pi uh is that
+
+
+01:12:28.679 --> 01:12:30.350 align:start position:0%
+XBMC uh runs on Raspberry Pi uh is that
+true<01:12:29.000><c> it's</c><01:12:29.280><c> absolutely</c><01:12:29.800><c> true</c><01:12:30.120><c> and</c><01:12:30.199><c> it's</c>
+
+01:12:30.350 --> 01:12:30.360 align:start position:0%
+true it's absolutely true and it's
+
+
+01:12:30.360 --> 01:12:32.910 align:start position:0%
+true it's absolutely true and it's
+running<01:12:30.639><c> in</c><01:12:30.800><c> the</c><01:12:30.920><c> back</c><01:12:31.040><c> of</c><01:12:31.120><c> the</c><01:12:31.480><c> room</c><01:12:32.480><c> uh</c><01:12:32.760><c> we've</c>
+
+01:12:32.910 --> 01:12:32.920 align:start position:0%
+running in the back of the room uh we've
+
+
+01:12:32.920 --> 01:12:35.709 align:start position:0%
+running in the back of the room uh we've
+got<01:12:33.040><c> some</c><01:12:33.199><c> demo</c><01:12:33.520><c> system</c><01:12:33.880><c> set</c><01:12:34.080><c> up</c><01:12:34.719><c> the</c><01:12:34.880><c> leftmost</c>
+
+01:12:35.709 --> 01:12:35.719 align:start position:0%
+got some demo system set up the leftmost
+
+
+01:12:35.719 --> 01:12:39.390 align:start position:0%
+got some demo system set up the leftmost
+system<01:12:36.719><c> um</c><01:12:37.520><c> is</c><01:12:37.719><c> running</c><01:12:38.159><c> that</c><01:12:38.520><c> now</c><01:12:39.120><c> and</c><01:12:39.239><c> the</c>
+
+01:12:39.390 --> 01:12:39.400 align:start position:0%
+system um is running that now and the
+
+
+01:12:39.400 --> 01:12:41.950 align:start position:0%
+system um is running that now and the
+gentleman<01:12:40.080><c> uh</c><01:12:40.320><c> right</c><01:12:40.679><c> behind</c><01:12:40.960><c> it</c><01:12:41.400><c> can</c><01:12:41.800><c> uh</c>
+
+01:12:41.950 --> 01:12:41.960 align:start position:0%
+gentleman uh right behind it can uh
+
+
+01:12:41.960 --> 01:12:46.669 align:start position:0%
+gentleman uh right behind it can uh
+answer<01:12:42.760><c> questions</c><01:12:43.760><c> uh</c><01:12:43.960><c> when</c><01:12:44.199><c> we</c><01:12:44.639><c> uh</c><01:12:45.199><c> break</c><01:12:45.679><c> up</c>
+
+01:12:46.669 --> 01:12:46.679 align:start position:0%
+answer questions uh when we uh break up
+
+
+01:12:46.679 --> 01:12:50.229 align:start position:0%
+answer questions uh when we uh break up
+um<01:12:47.080><c> and</c><01:12:47.480><c> are</c><01:12:47.679><c> you</c><01:12:47.920><c> coming</c>
+
+01:12:50.229 --> 01:12:50.239 align:start position:0%
+um and are you coming
+
+
+01:12:50.239 --> 01:12:55.270 align:start position:0%
+um and are you coming
+Saturday<01:12:51.440><c> okay</c><01:12:52.440><c> right</c><01:12:52.800><c> okay</c><01:12:53.120><c> fine</c><01:12:53.840><c> but</c><01:12:54.840><c> we</c><01:12:54.960><c> can</c>
+
+01:12:55.270 --> 01:12:55.280 align:start position:0%
+Saturday okay right okay fine but we can
+
+
+01:12:55.280 --> 01:12:57.350 align:start position:0%
+Saturday okay right okay fine but we can
+help<01:12:55.639><c> connect</c><01:12:55.920><c> you</c><01:12:56.040><c> to</c><01:12:56.199><c> the</c><01:12:56.320><c> information</c><01:12:57.159><c> on</c>
+
+01:12:57.350 --> 01:12:57.360 align:start position:0%
+help connect you to the information on
+
+
+01:12:57.360 --> 01:12:59.750 align:start position:0%
+help connect you to the information on
+Saturday
+
+01:12:59.750 --> 01:12:59.760 align:start position:0%
+Saturday
+
+
+01:12:59.760 --> 01:13:04.910 align:start position:0%
+Saturday
+also
+
+01:13:04.910 --> 01:13:04.920 align:start position:0%
+
+
+
+01:13:04.920 --> 01:13:10.950 align:start position:0%
+
+question<01:13:05.920><c> yeah</c><01:13:06.239><c> I</c><01:13:06.360><c> thought</c><01:13:06.520><c> we</c><01:13:06.679><c> had</c><01:13:06.800><c> another</c>
+
+01:13:10.950 --> 01:13:10.960 align:start position:0%
+
+
+
+01:13:10.960 --> 01:13:13.950 align:start position:0%
+
+one<01:13:11.960><c> yeah</c><01:13:12.199><c> yeah</c><01:13:12.679><c> well</c><01:13:13.400><c> I</c><01:13:13.520><c> thought</c><01:13:13.679><c> I</c><01:13:13.760><c> was</c><01:13:13.880><c> going</c>
+
+01:13:13.950 --> 01:13:13.960 align:start position:0%
+one yeah yeah well I thought I was going
+
+
+01:13:13.960 --> 01:13:15.430 align:start position:0%
+one yeah yeah well I thought I was going
+to<01:13:14.080><c> be</c><01:13:14.239><c> handing</c><01:13:14.480><c> it</c>
+
+01:13:15.430 --> 01:13:15.440 align:start position:0%
+to be handing it
+
+
+01:13:15.440 --> 01:13:17.990 align:start position:0%
+to be handing it
+today<01:13:16.440><c> I</c><01:13:16.520><c> had</c><01:13:16.639><c> a</c><01:13:16.840><c> question</c><01:13:17.159><c> about</c><01:13:17.440><c> the</c><01:13:17.639><c> face</c>
+
+01:13:17.990 --> 01:13:18.000 align:start position:0%
+today I had a question about the face
+
+
+01:13:18.000 --> 01:13:19.950 align:start position:0%
+today I had a question about the face
+tracking<01:13:18.639><c> um</c><01:13:18.760><c> did</c><01:13:18.920><c> you</c><01:13:19.159><c> have</c><01:13:19.320><c> enough</c><01:13:19.520><c> Cycles</c>
+
+01:13:19.950 --> 01:13:19.960 align:start position:0%
+tracking um did you have enough Cycles
+
+
+01:13:19.960 --> 01:13:22.629 align:start position:0%
+tracking um did you have enough Cycles
+left<01:13:20.239><c> over</c><01:13:20.520><c> to</c><01:13:20.760><c> do</c><01:13:20.960><c> the</c><01:13:21.159><c> hand</c><01:13:21.480><c> off</c><01:13:22.239><c> um</c><01:13:22.400><c> to</c>
+
+01:13:22.629 --> 01:13:22.639 align:start position:0%
+left over to do the hand off um to
+
+
+01:13:22.639 --> 01:13:27.550 align:start position:0%
+left over to do the hand off um to
+another<01:13:23.000><c> pie</c><01:13:23.360><c> for</c><01:13:23.480><c> the</c><01:13:23.600><c> motor</c><01:13:23.960><c> control</c><01:13:24.960><c> okay</c>
+
+01:13:27.550 --> 01:13:27.560 align:start position:0%
+
+
+
+01:13:27.560 --> 01:13:29.110 align:start position:0%
+
+basically<01:13:28.120><c> I</c><01:13:28.239><c> have</c><01:13:28.440><c> I</c><01:13:28.520><c> have</c><01:13:28.639><c> the</c><01:13:28.800><c> video</c>
+
+01:13:29.110 --> 01:13:29.120 align:start position:0%
+basically I have I have the video
+
+
+01:13:29.120 --> 01:13:31.229 align:start position:0%
+basically I have I have the video
+program<01:13:29.480><c> just</c><01:13:29.560><c> spitting</c><01:13:29.920><c> out</c><01:13:30.199><c> XY</c>
+
+01:13:31.229 --> 01:13:31.239 align:start position:0%
+program just spitting out XY
+
+
+01:13:31.239 --> 01:13:40.430 align:start position:0%
+program just spitting out XY
+coordinates<01:13:32.239><c> face</c>
+
+01:13:40.430 --> 01:13:40.440 align:start position:0%
+
+
+
+01:13:40.440 --> 01:13:42.750 align:start position:0%
+
+that<01:13:41.440><c> I</c><01:13:41.560><c> think</c><01:13:41.679><c> so</c><01:13:41.960><c> I</c><01:13:42.239><c> I</c><01:13:42.320><c> think</c><01:13:42.440><c> the</c><01:13:42.560><c> whole</c>
+
+01:13:42.750 --> 01:13:42.760 align:start position:0%
+that I think so I I think the whole
+
+
+01:13:42.760 --> 01:13:44.430 align:start position:0%
+that I think so I I think the whole
+thing<01:13:42.920><c> can</c><01:13:43.080><c> be</c><01:13:43.199><c> done</c><01:13:43.360><c> on</c><01:13:43.560><c> one</c><01:13:43.880><c> I</c><01:13:44.000><c> just</c><01:13:44.199><c> I</c><01:13:44.320><c> just</c>
+
+01:13:44.430 --> 01:13:44.440 align:start position:0%
+thing can be done on one I just I just
+
+
+01:13:44.440 --> 01:13:45.950 align:start position:0%
+thing can be done on one I just I just
+didn't<01:13:44.639><c> have</c><01:13:44.800><c> enough</c><01:13:45.040><c> time</c><01:13:45.280><c> to</c><01:13:45.560><c> actually</c><01:13:45.760><c> work</c>
+
+01:13:45.950 --> 01:13:45.960 align:start position:0%
+didn't have enough time to actually work
+
+
+01:13:45.960 --> 01:13:47.629 align:start position:0%
+didn't have enough time to actually work
+out<01:13:46.120><c> it</c><01:13:46.280><c> so</c><01:13:46.520><c> I'm</c><01:13:46.600><c> leaving</c><01:13:46.920><c> that</c><01:13:47.040><c> as</c><01:13:47.159><c> an</c>
+
+01:13:47.629 --> 01:13:47.639 align:start position:0%
+out it so I'm leaving that as an
+
+
+01:13:47.639 --> 01:13:49.430 align:start position:0%
+out it so I'm leaving that as an
+exercisebody<01:13:48.639><c> else</c><01:13:48.840><c> I'll</c><01:13:48.960><c> give</c><01:13:49.120><c> them</c><01:13:49.280><c> all</c>
+
+01:13:49.430 --> 01:13:49.440 align:start position:0%
+exercisebody else I'll give them all
+
+
+01:13:49.440 --> 01:13:50.669 align:start position:0%
+exercisebody else I'll give them all
+I'll<01:13:49.560><c> give</c><01:13:49.679><c> them</c><01:13:49.800><c> all</c><01:13:49.920><c> the</c><01:13:50.080><c> software</c><01:13:50.560><c> I'll</c>
+
+01:13:50.669 --> 01:13:50.679 align:start position:0%
+I'll give them all the software I'll
+
+
+01:13:50.679 --> 01:13:52.229 align:start position:0%
+I'll give them all the software I'll
+tell<01:13:50.840><c> them</c><01:13:51.040><c> what</c><01:13:51.199><c> I</c><01:13:51.480><c> what</c><01:13:51.560><c> I've</c><01:13:51.719><c> tried</c><01:13:52.080><c> that</c>
+
+01:13:52.229 --> 01:13:52.239 align:start position:0%
+tell them what I what I've tried that
+
+
+01:13:52.239 --> 01:13:54.110 align:start position:0%
+tell them what I what I've tried that
+hasn't<01:13:52.520><c> worked</c><01:13:53.080><c> but</c><01:13:53.320><c> I</c><01:13:53.400><c> think</c><01:13:53.639><c> it's</c><01:13:53.840><c> just</c><01:13:54.000><c> a</c>
+
+01:13:54.110 --> 01:13:54.120 align:start position:0%
+hasn't worked but I think it's just a
+
+
+01:13:54.120 --> 01:13:56.750 align:start position:0%
+hasn't worked but I think it's just a
+matter<01:13:54.320><c> of</c><01:13:54.520><c> configuring</c>
+
+01:13:56.750 --> 01:13:56.760 align:start position:0%
+matter of configuring
+
+
+01:13:56.760 --> 01:13:59.229 align:start position:0%
+matter of configuring
+getting<01:13:57.480><c> camera</c><01:13:57.800><c> settings</c><01:13:58.400><c> right</c><01:13:58.679><c> I</c><01:13:58.840><c> got</c><01:13:58.920><c> a</c>
+
+01:13:59.229 --> 01:13:59.239 align:start position:0%
+getting camera settings right I got a
+
+
+01:13:59.239 --> 01:14:02.590 align:start position:0%
+getting camera settings right I got a
+really<01:13:59.480><c> cheap</c><01:13:59.719><c> $10</c><01:14:00.600><c> creative</c><01:14:00.960><c> Labs</c>
+
+01:14:02.590 --> 01:14:02.600 align:start position:0%
+really cheap $10 creative Labs
+
+
+01:14:02.600 --> 01:14:06.990 align:start position:0%
+really cheap $10 creative Labs
+camera1<01:14:03.600><c> USB</c><01:14:04.040><c> camera</c><01:14:04.560><c> so</c><01:14:05.239><c> um</c><01:14:05.560><c> it</c><01:14:05.800><c> works</c><01:14:06.800><c> more</c>
+
+01:14:06.990 --> 01:14:07.000 align:start position:0%
+camera1 USB camera so um it works more
+
+
+01:14:07.000 --> 01:14:08.709 align:start position:0%
+camera1 USB camera so um it works more
+generic<01:14:07.480><c> camera</c><01:14:07.800><c> the</c><01:14:07.920><c> more</c><01:14:08.080><c> likely</c><01:14:08.360><c> you</c><01:14:08.600><c> just</c>
+
+01:14:08.709 --> 01:14:08.719 align:start position:0%
+generic camera the more likely you just
+
+
+01:14:08.719 --> 01:14:10.990 align:start position:0%
+generic camera the more likely you just
+plug<01:14:08.920><c> it</c><01:14:09.040><c> into</c><01:14:09.199><c> the</c><01:14:09.360><c> PO</c><01:14:09.800><c> work</c><01:14:10.480><c> I'm</c><01:14:10.760><c> talking</c>
+
+01:14:10.990 --> 01:14:11.000 align:start position:0%
+plug it into the PO work I'm talking
+
+
+01:14:11.000 --> 01:14:13.430 align:start position:0%
+plug it into the PO work I'm talking
+about<01:14:11.400><c> you</c><01:14:11.520><c> mentioned</c><01:14:12.199><c> um</c><01:14:12.520><c> you</c><01:14:12.719><c> have</c><01:14:12.840><c> to</c><01:14:13.040><c> plug</c>
+
+01:14:13.430 --> 01:14:13.440 align:start position:0%
+about you mentioned um you have to plug
+
+
+01:14:13.440 --> 01:14:16.110 align:start position:0%
+about you mentioned um you have to plug
+the<01:14:13.679><c> camera</c><01:14:14.199><c> into</c><01:14:14.560><c> the</c><01:14:14.800><c> raspberry</c><01:14:15.239><c> pipe</c><01:14:15.440><c> board</c>
+
+01:14:16.110 --> 01:14:16.120 align:start position:0%
+the camera into the raspberry pipe board
+
+
+01:14:16.120 --> 01:14:19.110 align:start position:0%
+the camera into the raspberry pipe board
+if<01:14:16.199><c> you</c><01:14:16.400><c> have</c><01:14:16.560><c> a</c><01:14:16.760><c> hub</c><01:14:17.080><c> for</c><01:14:17.400><c> USB</c><01:14:18.400><c> um</c><01:14:18.639><c> that's</c><01:14:18.800><c> too</c>
+
+01:14:19.110 --> 01:14:19.120 align:start position:0%
+if you have a hub for USB um that's too
+
+
+01:14:19.120 --> 01:14:21.629 align:start position:0%
+if you have a hub for USB um that's too
+far<01:14:19.400><c> away</c><01:14:20.320><c> so</c><01:14:20.480><c> there's</c><01:14:20.639><c> a</c><01:14:20.800><c> little</c><01:14:21.320><c> and</c><01:14:21.480><c> that's</c>
+
+01:14:21.629 --> 01:14:21.639 align:start position:0%
+far away so there's a little and that's
+
+
+01:14:21.639 --> 01:14:23.030 align:start position:0%
+far away so there's a little and that's
+I<01:14:21.719><c> think</c><01:14:21.880><c> one</c><01:14:22.040><c> reason</c><01:14:22.280><c> why</c><01:14:22.400><c> they</c><01:14:22.520><c> put</c><01:14:22.639><c> a</c><01:14:22.760><c> camera</c>
+
+01:14:23.030 --> 01:14:23.040 align:start position:0%
+I think one reason why they put a camera
+
+
+01:14:23.040 --> 01:14:25.709 align:start position:0%
+I think one reason why they put a camera
+interface<01:14:23.480><c> on</c><01:14:23.639><c> the</c><01:14:23.760><c> board</c><01:14:25.239><c> actually</c><01:14:25.440><c> have</c><01:14:25.560><c> a</c>
+
+01:14:25.709 --> 01:14:25.719 align:start position:0%
+interface on the board actually have a
+
+
+01:14:25.719 --> 01:14:27.910 align:start position:0%
+interface on the board actually have a
+closer<01:14:26.199><c> camera</c><01:14:26.480><c> interface</c><01:14:27.280><c> so</c><01:14:27.480><c> that's</c><01:14:27.679><c> coming</c>
+
+01:14:27.910 --> 01:14:27.920 align:start position:0%
+closer camera interface so that's coming
+
+
+01:14:27.920 --> 01:14:29.550 align:start position:0%
+closer camera interface so that's coming
+along<01:14:28.239><c> soon</c><01:14:28.560><c> so</c><01:14:28.719><c> that</c><01:14:28.880><c> might</c><01:14:29.000><c> be</c><01:14:29.159><c> the</c><01:14:29.280><c> best</c><01:14:29.440><c> way</c>
+
+01:14:29.550 --> 01:14:29.560 align:start position:0%
+along soon so that might be the best way
+
+
+01:14:29.560 --> 01:14:31.950 align:start position:0%
+along soon so that might be the best way
+to<01:14:29.679><c> do</c><01:14:29.800><c> it</c><01:14:30.159><c> but</c><01:14:30.360><c> again</c><01:14:30.560><c> if</c><01:14:30.639><c> you</c><01:14:30.800><c> have</c><01:14:30.920><c> a</c><01:14:31.159><c> USB</c><01:14:31.600><c> hub</c>
+
+01:14:31.950 --> 01:14:31.960 align:start position:0%
+to do it but again if you have a USB hub
+
+
+01:14:31.960 --> 01:14:34.030 align:start position:0%
+to do it but again if you have a USB hub
+you<01:14:32.120><c> try</c><01:14:32.320><c> plugging</c><01:14:32.639><c> a</c><01:14:32.760><c> camera</c><01:14:33.040><c> into</c><01:14:33.360><c> that</c><01:14:33.840><c> that</c>
+
+01:14:34.030 --> 01:14:34.040 align:start position:0%
+you try plugging a camera into that that
+
+
+01:14:34.040 --> 01:14:38.669 align:start position:0%
+you try plugging a camera into that that
+seemed<01:14:34.400><c> to</c><01:14:34.960><c> fail</c><01:14:35.400><c> because</c><01:14:35.560><c> I</c>
+
+01:14:38.669 --> 01:14:38.679 align:start position:0%
+
+
+
+01:14:38.679 --> 01:14:41.390 align:start position:0%
+
+couldn't<01:14:39.679><c> yeah</c><01:14:39.960><c> the</c><01:14:40.400><c> uh</c><01:14:40.600><c> the</c><01:14:40.719><c> foundation</c><01:14:41.199><c> in</c>
+
+01:14:41.390 --> 01:14:41.400 align:start position:0%
+couldn't yeah the uh the foundation in
+
+
+01:14:41.400 --> 01:14:43.350 align:start position:0%
+couldn't yeah the uh the foundation in
+conjunction<01:14:41.840><c> with</c><01:14:42.000><c> its</c><01:14:42.239><c> Partners</c><01:14:42.800><c> is</c><01:14:43.000><c> working</c>
+
+01:14:43.350 --> 01:14:43.360 align:start position:0%
+conjunction with its Partners is working
+
+
+01:14:43.360 --> 01:14:45.350 align:start position:0%
+conjunction with its Partners is working
+on<01:14:43.560><c> a</c><01:14:43.840><c> very</c><01:14:44.080><c> high</c><01:14:44.280><c> performance</c><01:14:44.880><c> camera</c><01:14:45.239><c> that</c>
+
+01:14:45.350 --> 01:14:45.360 align:start position:0%
+on a very high performance camera that
+
+
+01:14:45.360 --> 01:14:50.070 align:start position:0%
+on a very high performance camera that
+will<01:14:45.520><c> use</c><01:14:45.920><c> CSI</c><01:14:46.719><c> uh</c><01:14:47.120><c> interface</c><01:14:48.120><c> and</c><01:14:48.840><c> um</c><01:14:49.840><c> one</c><01:14:49.960><c> of</c>
+
+01:14:50.070 --> 01:14:50.080 align:start position:0%
+will use CSI uh interface and um one of
+
+
+01:14:50.080 --> 01:14:52.070 align:start position:0%
+will use CSI uh interface and um one of
+the<01:14:50.280><c> slides</c><01:14:50.880><c> back</c><01:14:51.080><c> here</c><01:14:51.360><c> I'll</c><01:14:51.600><c> I'll</c><01:14:51.719><c> see</c><01:14:51.880><c> if</c><01:14:52.000><c> I</c>
+
+01:14:52.070 --> 01:14:52.080 align:start position:0%
+the slides back here I'll I'll see if I
+
+
+01:14:52.080 --> 01:14:55.790 align:start position:0%
+the slides back here I'll I'll see if I
+can<01:14:52.280><c> find</c><01:14:52.480><c> it</c><01:14:53.159><c> when</c><01:14:53.800><c> when</c><01:14:53.960><c> we're</c><01:14:54.400><c> uh</c>
+
+01:14:55.790 --> 01:14:55.800 align:start position:0%
+can find it when when we're uh
+
+
+01:14:55.800 --> 01:14:58.470 align:start position:0%
+can find it when when we're uh
+when<01:14:56.159><c> uh</c><01:14:56.440><c> when</c><01:14:56.639><c> I</c><01:14:57.120><c> when</c><01:14:57.239><c> I</c><01:14:57.400><c> can</c><01:14:57.960><c> uh</c><01:14:58.199><c> when</c><01:14:58.320><c> we</c>
+
+01:14:58.470 --> 01:14:58.480 align:start position:0%
+when uh when I when I can uh when we
+
+
+01:14:58.480 --> 01:15:01.510 align:start position:0%
+when uh when I when I can uh when we
+block<01:14:58.719><c> on</c><01:14:58.920><c> that</c><01:14:59.920><c> uh</c><01:15:00.239><c> I</c><01:15:00.320><c> mean</c><01:15:01.000><c> do</c><01:15:01.199><c> something</c>
+
+01:15:01.510 --> 01:15:01.520 align:start position:0%
+block on that uh I mean do something
+
+
+01:15:01.520 --> 01:15:07.310 align:start position:0%
+block on that uh I mean do something
+else<01:15:02.800><c> um</c><01:15:03.800><c> the</c><01:15:04.120><c> prototype's</c><01:15:04.719><c> out</c><01:15:05.639><c> and</c><01:15:06.360><c> uh</c><01:15:07.159><c> it's</c>
+
+01:15:07.310 --> 01:15:07.320 align:start position:0%
+else um the prototype's out and uh it's
+
+
+01:15:07.320 --> 01:15:08.430 align:start position:0%
+else um the prototype's out and uh it's
+my<01:15:07.719><c> understanding</c><01:15:07.920><c> that</c><01:15:08.040><c> it's</c><01:15:08.199><c> going</c><01:15:08.280><c> to</c>
+
+01:15:08.430 --> 01:15:08.440 align:start position:0%
+my understanding that it's going to
+
+
+01:15:08.440 --> 01:15:10.189 align:start position:0%
+my understanding that it's going to
+become<01:15:08.920><c> available</c><01:15:09.280><c> for</c><01:15:09.480><c> sale</c><01:15:09.719><c> in</c><01:15:09.840><c> the</c><01:15:10.000><c> next</c>
+
+01:15:10.189 --> 01:15:10.199 align:start position:0%
+become available for sale in the next
+
+
+01:15:10.199 --> 01:15:12.830 align:start position:0%
+become available for sale in the next
+month<01:15:10.400><c> or</c><01:15:10.639><c> two</c><01:15:11.639><c> uh</c><01:15:11.760><c> it</c><01:15:11.840><c> will</c><01:15:12.080><c> probably</c><01:15:12.400><c> be</c>
+
+01:15:12.830 --> 01:15:12.840 align:start position:0%
+month or two uh it will probably be
+
+
+01:15:12.840 --> 01:15:15.189 align:start position:0%
+month or two uh it will probably be
+relatively<01:15:13.520><c> inexpensive</c><01:15:14.520><c> it</c><01:15:14.719><c> might</c><01:15:14.960><c> cost</c>
+
+01:15:15.189 --> 01:15:15.199 align:start position:0%
+relatively inexpensive it might cost
+
+
+01:15:15.199 --> 01:15:18.390 align:start position:0%
+relatively inexpensive it might cost
+more<01:15:15.400><c> than</c><01:15:15.480><c> a</c><01:15:15.600><c> res</c><01:15:16.159><c> pie</c><01:15:17.159><c> um</c><01:15:17.600><c> but</c><01:15:17.760><c> it's</c><01:15:18.199><c> uh</c>
+
+01:15:18.390 --> 01:15:18.400 align:start position:0%
+more than a res pie um but it's uh
+
+
+01:15:18.400 --> 01:15:22.310 align:start position:0%
+more than a res pie um but it's uh
+apparently<01:15:18.840><c> got</c><01:15:19.440><c> uh</c><01:15:19.639><c> very</c><01:15:19.880><c> interesting</c>
+
+01:15:22.310 --> 01:15:22.320 align:start position:0%
+apparently got uh very interesting
+
+
+01:15:22.320 --> 01:15:23.470 align:start position:0%
+apparently got uh very interesting
+[Music]
+
+01:15:23.470 --> 01:15:23.480 align:start position:0%
+[Music]
+
+
+01:15:23.480 --> 01:15:27.990 align:start position:0%
+[Music]
+specifications<01:15:24.480><c> yes</c><01:15:24.679><c> ma'am</c>
+
+01:15:27.990 --> 01:15:28.000 align:start position:0%
+
+
+
+01:15:28.000 --> 01:15:32.830 align:start position:0%
+
+the<01:15:28.239><c> work</c><01:15:28.960><c> this</c><01:15:29.159><c> weend</c><01:15:29.960><c> you</c><01:15:30.199><c> to</c><01:15:30.320><c> show</c><01:15:30.679><c> with</c>
+
+01:15:32.830 --> 01:15:32.840 align:start position:0%
+the work this weend you to show with
+
+
+01:15:32.840 --> 01:15:36.030 align:start position:0%
+the work this weend you to show with
+system<01:15:33.840><c> I</c><01:15:34.000><c> I</c><01:15:34.159><c> will</c><01:15:34.760><c> yeah</c><01:15:35.080><c> I</c><01:15:35.360><c> I</c><01:15:35.440><c> will</c><01:15:35.679><c> have</c><01:15:35.800><c> a</c>
+
+01:15:36.030 --> 01:15:36.040 align:start position:0%
+system I I will yeah I I will have a
+
+
+01:15:36.040 --> 01:15:38.790 align:start position:0%
+system I I will yeah I I will have a
+system<01:15:36.920><c> there</c><01:15:37.719><c> that</c><01:15:37.840><c> will</c><01:15:38.080><c> just</c><01:15:38.239><c> be</c><01:15:38.400><c> sitting</c>
+
+01:15:38.790 --> 01:15:38.800 align:start position:0%
+system there that will just be sitting
+
+
+01:15:38.800 --> 01:15:40.990 align:start position:0%
+system there that will just be sitting
+there<01:15:39.120><c> and</c><01:15:39.360><c> anybody</c><01:15:39.800><c> that</c><01:15:40.000><c> wants</c><01:15:40.239><c> to</c><01:15:40.440><c> do</c>
+
+01:15:40.990 --> 01:15:41.000 align:start position:0%
+there and anybody that wants to do
+
+
+01:15:41.000 --> 01:15:43.750 align:start position:0%
+there and anybody that wants to do
+anything<01:15:41.360><c> they</c><01:15:41.520><c> want</c><01:15:41.719><c> to</c><01:15:42.000><c> with</c><01:15:42.159><c> it</c><01:15:42.800><c> except</c>
+
+01:15:43.750 --> 01:15:43.760 align:start position:0%
+anything they want to with it except
+
+
+01:15:43.760 --> 01:15:47.110 align:start position:0%
+anything they want to with it except
+sudu<01:15:44.520><c> RMS</c><01:15:45.320><c> you</c>
+
+01:15:47.110 --> 01:15:47.120 align:start position:0%
+sudu RMS you
+
+
+01:15:47.120 --> 01:15:52.510 align:start position:0%
+sudu RMS you
+know<01:15:48.120><c> you</c><01:15:48.199><c> can</c><01:15:48.400><c> use</c><01:15:48.600><c> it</c><01:15:49.600><c> and</c><01:15:50.120><c> um</c><01:15:50.760><c> in</c><01:15:51.040><c> fact</c><01:15:51.920><c> uh</c><01:15:52.400><c> I</c>
+
+01:15:52.510 --> 01:15:52.520 align:start position:0%
+know you can use it and um in fact uh I
+
+
+01:15:52.520 --> 01:15:55.870 align:start position:0%
+know you can use it and um in fact uh I
+can<01:15:52.880><c> probably</c><01:15:53.520><c> have</c><01:15:54.320><c> U</c><01:15:54.440><c> two</c><01:15:54.679><c> syst</c><01:15:55.000><c> systems</c>
+
+01:15:55.870 --> 01:15:55.880 align:start position:0%
+can probably have U two syst systems
+
+
+01:15:55.880 --> 01:15:58.390 align:start position:0%
+can probably have U two syst systems
+available<01:15:56.719><c> that</c><01:15:56.880><c> way</c><01:15:57.400><c> that</c><01:15:57.880><c> couple</c><01:15:58.080><c> of</c><01:15:58.280><c> are</c>
+
+01:15:58.390 --> 01:15:58.400 align:start position:0%
+available that way that couple of are
+
+
+01:15:58.400 --> 01:16:01.910 align:start position:0%
+available that way that couple of are
+goinging<01:15:59.320><c> and</c><01:15:59.880><c> various</c><01:16:00.320><c> people</c><01:16:00.600><c> are</c><01:16:00.920><c> bringing</c>
+
+01:16:01.910 --> 01:16:01.920 align:start position:0%
+goinging and various people are bringing
+
+
+01:16:01.920 --> 01:16:05.990 align:start position:0%
+goinging and various people are bringing
+systems<01:16:02.679><c> that</c><01:16:03.480><c> may</c><01:16:03.880><c> have</c><01:16:04.560><c> some</c><01:16:05.120><c> constraints</c>
+
+01:16:05.990 --> 01:16:06.000 align:start position:0%
+systems that may have some constraints
+
+
+01:16:06.000 --> 01:16:08.470 align:start position:0%
+systems that may have some constraints
+on<01:16:06.320><c> on</c><01:16:06.480><c> open</c><01:16:06.800><c> usage</c><01:16:07.639><c> but</c><01:16:07.840><c> yeah</c><01:16:08.120><c> there</c><01:16:08.199><c> will</c><01:16:08.360><c> be</c>
+
+01:16:08.470 --> 01:16:08.480 align:start position:0%
+on on open usage but yeah there will be
+
+
+01:16:08.480 --> 01:16:17.950 align:start position:0%
+on on open usage but yeah there will be
+a<01:16:08.560><c> ton</c><01:16:08.719><c> of</c><01:16:08.880><c> machines</c><01:16:09.639><c> there</c><01:16:10.639><c> um</c>
+
+01:16:17.950 --> 01:16:17.960 align:start position:0%
+
+
+
+01:16:17.960 --> 01:16:21.229 align:start position:0%
+
+available<01:16:18.960><c> as</c><01:16:19.080><c> someone</c><01:16:19.360><c> who</c><01:16:19.480><c> has</c><01:16:19.760><c> access</c><01:16:20.239><c> to</c>
+
+01:16:21.229 --> 01:16:21.239 align:start position:0%
+available as someone who has access to
+
+
+01:16:21.239 --> 01:16:22.910 align:start position:0%
+available as someone who has access to
+uh<01:16:21.440><c> plethora</c><01:16:22.000><c> of</c>
+
+01:16:22.910 --> 01:16:22.920 align:start position:0%
+uh plethora of
+
+
+01:16:22.920 --> 01:16:26.310 align:start position:0%
+uh plethora of
+underpowered<01:16:23.920><c> or</c><01:16:24.400><c> physical</c><01:16:24.960><c> or</c><01:16:25.120><c> virtual</c>
+
+01:16:26.310 --> 01:16:26.320 align:start position:0%
+underpowered or physical or virtual
+
+
+01:16:26.320 --> 01:16:29.310 align:start position:0%
+underpowered or physical or virtual
+systems<01:16:27.320><c> why</c><01:16:27.880><c> do</c><01:16:28.040><c> I</c><01:16:28.199><c> want</c><01:16:28.320><c> a</c>
+
+01:16:29.310 --> 01:16:29.320 align:start position:0%
+systems why do I want a
+
+
+01:16:29.320 --> 01:16:32.430 align:start position:0%
+systems why do I want a
+pie<01:16:30.320><c> in</c><01:16:30.520><c> my</c><01:16:30.719><c> humble</c><01:16:31.120><c> opinion</c><01:16:31.760><c> you</c><01:16:31.920><c> don't</c><01:16:32.199><c> want</c>
+
+01:16:32.430 --> 01:16:32.440 align:start position:0%
+pie in my humble opinion you don't want
+
+
+01:16:32.440 --> 01:16:35.910 align:start position:0%
+pie in my humble opinion you don't want
+one<01:16:33.280><c> and</c><01:16:33.480><c> in</c><01:16:33.679><c> my</c><01:16:34.159><c> opinion</c><01:16:35.159><c> this</c><01:16:35.520><c> this</c><01:16:35.679><c> thing</c>
+
+01:16:35.910 --> 01:16:35.920 align:start position:0%
+one and in my opinion this this thing
+
+
+01:16:35.920 --> 01:16:39.990 align:start position:0%
+one and in my opinion this this thing
+was<01:16:36.159><c> not</c><01:16:36.639><c> made</c><01:16:37.000><c> for</c><01:16:37.280><c> us</c><01:16:37.719><c> it</c><01:16:38.000><c> wasn't</c><01:16:38.639><c> made</c><01:16:39.639><c> as</c><01:16:39.760><c> a</c>
+
+01:16:39.990 --> 01:16:40.000 align:start position:0%
+was not made for us it wasn't made as a
+
+
+01:16:40.000 --> 01:16:43.149 align:start position:0%
+was not made for us it wasn't made as a
+toy<01:16:40.880><c> for</c><01:16:41.120><c> people</c><01:16:41.560><c> that</c><01:16:41.719><c> can</c><01:16:41.880><c> drop</c><01:16:42.560><c> 500</c><01:16:42.960><c> bucks</c>
+
+01:16:43.149 --> 01:16:43.159 align:start position:0%
+toy for people that can drop 500 bucks
+
+
+01:16:43.159 --> 01:16:47.070 align:start position:0%
+toy for people that can drop 500 bucks
+or<01:16:43.320><c> 1,000</c><01:16:44.239><c> bucks</c><01:16:45.239><c> and</c><01:16:45.639><c> people</c><01:16:46.080><c> that</c><01:16:46.480><c> have</c><01:16:46.800><c> a</c>
+
+01:16:47.070 --> 01:16:47.080 align:start position:0%
+or 1,000 bucks and people that have a
+
+
+01:16:47.080 --> 01:16:49.110 align:start position:0%
+or 1,000 bucks and people that have a
+relatively<01:16:47.600><c> high</c><01:16:47.800><c> level</c>
+
+01:16:49.110 --> 01:16:49.120 align:start position:0%
+relatively high level
+
+
+01:16:49.120 --> 01:16:52.550 align:start position:0%
+relatively high level
+ofation<01:16:50.120><c> and</c><01:16:50.719><c> relatively</c><01:16:51.280><c> high</c><01:16:51.560><c> expectations</c>
+
+01:16:52.550 --> 01:16:52.560 align:start position:0%
+ofation and relatively high expectations
+
+
+01:16:52.560 --> 01:16:55.390 align:start position:0%
+ofation and relatively high expectations
+in<01:16:52.719><c> terms</c><01:16:52.960><c> of</c><01:16:53.159><c> performance</c>
+
+01:16:55.390 --> 01:16:55.400 align:start position:0%
+in terms of performance
+
+
+01:16:55.400 --> 01:16:57.790 align:start position:0%
+in terms of performance
+but
+
+01:16:57.790 --> 01:16:57.800 align:start position:0%
+but
+
+
+01:16:57.800 --> 01:17:02.350 align:start position:0%
+but
+it's<01:16:59.000><c> killer</c><01:17:00.000><c> as</c><01:17:00.120><c> an</c><01:17:00.360><c> educational</c><01:17:01.360><c> platform</c>
+
+01:17:02.350 --> 01:17:02.360 align:start position:0%
+it's killer as an educational platform
+
+
+01:17:02.360 --> 01:17:06.149 align:start position:0%
+it's killer as an educational platform
+and<01:17:02.679><c> that</c><01:17:02.960><c> it</c><01:17:03.120><c> was</c><01:17:03.480><c> designed</c><01:17:04.360><c> and</c><01:17:04.639><c> aimed</c>
+
+01:17:06.149 --> 01:17:06.159 align:start position:0%
+and that it was designed and aimed
+
+
+01:17:06.159 --> 01:17:11.149 align:start position:0%
+and that it was designed and aimed
+at<01:17:07.159><c> kids</c><01:17:07.880><c> and</c><01:17:08.600><c> through</c><01:17:09.120><c> uh</c><01:17:09.520><c> University</c><01:17:10.520><c> and</c>
+
+01:17:11.149 --> 01:17:11.159 align:start position:0%
+at kids and through uh University and
+
+
+01:17:11.159 --> 01:17:13.950 align:start position:0%
+at kids and through uh University and
+that's<01:17:11.360><c> really</c><01:17:11.600><c> the</c><01:17:11.760><c> target</c><01:17:12.679><c> but</c><01:17:13.400><c> they've</c><01:17:13.679><c> got</c>
+
+01:17:13.950 --> 01:17:13.960 align:start position:0%
+that's really the target but they've got
+
+
+01:17:13.960 --> 01:17:18.070 align:start position:0%
+that's really the target but they've got
+this<01:17:14.239><c> really</c><01:17:14.719><c> Sly</c><01:17:15.280><c> plan</c><01:17:15.760><c> going</c><01:17:16.719><c> where</c><01:17:17.719><c> folks</c>
+
+01:17:18.070 --> 01:17:18.080 align:start position:0%
+this really Sly plan going where folks
+
+
+01:17:18.080 --> 01:17:20.510 align:start position:0%
+this really Sly plan going where folks
+like<01:17:18.320><c> us</c><01:17:18.679><c> are</c><01:17:19.040><c> leaping</c><01:17:19.400><c> into</c><01:17:19.639><c> it</c><01:17:19.960><c> and</c><01:17:20.199><c> creating</c>
+
+01:17:20.510 --> 01:17:20.520 align:start position:0%
+like us are leaping into it and creating
+
+
+01:17:20.520 --> 01:17:22.830 align:start position:0%
+like us are leaping into it and creating
+all<01:17:20.679><c> this</c><01:17:20.840><c> infrastructure</c><01:17:21.719><c> and</c><01:17:22.159><c> blazing</c><01:17:22.719><c> the</c>
+
+01:17:22.830 --> 01:17:22.840 align:start position:0%
+all this infrastructure and blazing the
+
+
+01:17:22.840 --> 01:17:26.590 align:start position:0%
+all this infrastructure and blazing the
+trail<01:17:23.800><c> where</c><01:17:25.239><c> kind</c><01:17:25.360><c> of</c><01:17:25.480><c> the</c><01:17:25.639><c> next</c><01:17:26.000><c> phase</c><01:17:26.360><c> can</c>
+
+01:17:26.590 --> 01:17:26.600 align:start position:0%
+trail where kind of the next phase can
+
+
+01:17:26.600 --> 01:17:29.990 align:start position:0%
+trail where kind of the next phase can
+kick<01:17:26.800><c> in</c><01:17:27.000><c> and</c><01:17:27.199><c> really</c><01:17:27.440><c> get</c><01:17:27.840><c> serious</c><01:17:28.840><c> I</c><01:17:29.760><c> that</c>
+
+01:17:29.990 --> 01:17:30.000 align:start position:0%
+kick in and really get serious I that
+
+
+01:17:30.000 --> 01:17:33.030 align:start position:0%
+kick in and really get serious I that
+question<01:17:30.719><c> slightly</c><01:17:31.120><c> different</c><01:17:31.400><c> way</c><01:17:31.760><c> um</c><01:17:32.480><c> so</c><01:17:32.960><c> I</c>
+
+01:17:33.030 --> 01:17:33.040 align:start position:0%
+question slightly different way um so I
+
+
+01:17:33.040 --> 01:17:35.430 align:start position:0%
+question slightly different way um so I
+come<01:17:33.199><c> up</c><01:17:33.320><c> with</c><01:17:33.480><c> applications</c><01:17:34.239><c> like</c><01:17:34.639><c> um</c><01:17:35.159><c> listen</c>
+
+01:17:35.430 --> 01:17:35.440 align:start position:0%
+come up with applications like um listen
+
+
+01:17:35.440 --> 01:17:38.070 align:start position:0%
+come up with applications like um listen
+to<01:17:35.560><c> My</c><01:17:35.760><c> Cello</c><01:17:36.199><c> do</c><01:17:36.360><c> a</c><01:17:36.560><c> fast</c><01:17:36.760><c> for</c><01:17:36.960><c> you</c><01:17:37.120><c> transform</c>
+
+01:17:38.070 --> 01:17:38.080 align:start position:0%
+to My Cello do a fast for you transform
+
+
+01:17:38.080 --> 01:17:40.709 align:start position:0%
+to My Cello do a fast for you transform
+and<01:17:38.199><c> then</c><01:17:39.000><c> generate</c><01:17:39.400><c> nitty</c><01:17:39.920><c> notes</c><01:17:40.400><c> piano</c>
+
+01:17:40.709 --> 01:17:40.719 align:start position:0%
+and then generate nitty notes piano
+
+
+01:17:40.719 --> 01:17:42.870 align:start position:0%
+and then generate nitty notes piano
+notes<01:17:41.040><c> to</c><01:17:41.239><c> accompany</c><01:17:41.600><c> me</c><01:17:41.800><c> playing</c><01:17:42.040><c> the</c><01:17:42.159><c> cello</c>
+
+01:17:42.870 --> 01:17:42.880 align:start position:0%
+notes to accompany me playing the cello
+
+
+01:17:42.880 --> 01:17:44.709 align:start position:0%
+notes to accompany me playing the cello
+once<01:17:43.040><c> I</c><01:17:43.199><c> get</c><01:17:43.360><c> that</c><01:17:43.560><c> system</c><01:17:43.920><c> done</c><01:17:44.280><c> yes</c><01:17:44.400><c> it</c><01:17:44.520><c> runs</c>
+
+01:17:44.709 --> 01:17:44.719 align:start position:0%
+once I get that system done yes it runs
+
+
+01:17:44.719 --> 01:17:47.870 align:start position:0%
+once I get that system done yes it runs
+on<01:17:44.840><c> my</c><01:17:45.040><c> PC</c><01:17:46.000><c> but</c><01:17:46.280><c> for</c><01:17:46.480><c> 35</c><01:17:46.960><c> bucks</c><01:17:47.360><c> I</c><01:17:47.440><c> can</c><01:17:47.560><c> build</c><01:17:47.760><c> a</c>
+
+01:17:47.870 --> 01:17:47.880 align:start position:0%
+on my PC but for 35 bucks I can build a
+
+
+01:17:47.880 --> 01:17:49.590 align:start position:0%
+on my PC but for 35 bucks I can build a
+little<01:17:48.000><c> Stone</c><01:17:48.600><c> system</c><01:17:49.040><c> that</c><01:17:49.199><c> actually</c><01:17:49.400><c> fits</c>
+
+01:17:49.590 --> 01:17:49.600 align:start position:0%
+little Stone system that actually fits
+
+
+01:17:49.600 --> 01:17:51.830 align:start position:0%
+little Stone system that actually fits
+in<01:17:49.719><c> my</c><01:17:49.800><c> cello</c><01:17:50.199><c> case</c><01:17:50.760><c> now</c><01:17:50.880><c> I've</c><01:17:51.080><c> got</c><01:17:51.440><c> like</c><01:17:51.679><c> a</c>
+
+01:17:51.830 --> 01:17:51.840 align:start position:0%
+in my cello case now I've got like a
+
+
+01:17:51.840 --> 01:17:53.149 align:start position:0%
+in my cello case now I've got like a
+special<01:17:52.159><c> musical</c><01:17:52.480><c> instrument</c><01:17:52.760><c> sort</c><01:17:52.920><c> of</c><01:17:53.000><c> thing</c>
+
+01:17:53.149 --> 01:17:53.159 align:start position:0%
+special musical instrument sort of thing
+
+
+01:17:53.159 --> 01:17:55.430 align:start position:0%
+special musical instrument sort of thing
+so<01:17:53.480><c> I</c><01:17:53.600><c> built</c><01:17:53.840><c> systems</c><01:17:54.159><c> that</c><01:17:54.239><c> are</c><01:17:54.440><c> like</c><01:17:54.639><c> oh</c>
+
+01:17:55.430 --> 01:17:55.440 align:start position:0%
+so I built systems that are like oh
+
+
+01:17:55.440 --> 01:17:57.709 align:start position:0%
+so I built systems that are like oh
+that'll<01:17:55.679><c> be</c><01:17:55.800><c> a</c><01:17:55.960><c> nice</c><01:17:56.199><c> toy</c><01:17:57.120><c> and</c><01:17:57.199><c> it's</c><01:17:57.440><c> great</c>
+
+01:17:57.709 --> 01:17:57.719 align:start position:0%
+that'll be a nice toy and it's great
+
+
+01:17:57.719 --> 01:17:59.470 align:start position:0%
+that'll be a nice toy and it's great
+just<01:17:57.880><c> have</c><01:17:58.000><c> it</c><01:17:58.199><c> just</c><01:17:58.320><c> do</c><01:17:58.639><c> that</c><01:17:59.120><c> because</c>
+
+01:17:59.470 --> 01:17:59.480 align:start position:0%
+just have it just do that because
+
+
+01:17:59.480 --> 01:18:01.189 align:start position:0%
+just have it just do that because
+because<01:17:59.719><c> for</c><01:17:59.920><c> 35</c><01:18:00.360><c> bucks</c><01:18:00.719><c> that's</c><01:18:00.960><c> actually</c>
+
+01:18:01.189 --> 01:18:01.199 align:start position:0%
+because for 35 bucks that's actually
+
+
+01:18:01.199 --> 01:18:04.110 align:start position:0%
+because for 35 bucks that's actually
+worth<01:18:01.679><c> throwing</c><01:18:02.320><c> a</c><01:18:02.400><c> whole</c><01:18:02.600><c> computer</c><01:18:03.120><c> system</c>
+
+01:18:04.110 --> 01:18:04.120 align:start position:0%
+worth throwing a whole computer system
+
+
+01:18:04.120 --> 01:18:07.110 align:start position:0%
+worth throwing a whole computer system
+but<01:18:04.400><c> but</c><01:18:04.960><c> uh</c><01:18:05.600><c> I</c><01:18:05.719><c> do</c><01:18:05.920><c> have</c><01:18:06.040><c> to</c><01:18:06.320><c> interject</c><01:18:06.840><c> one</c>
+
+01:18:07.110 --> 01:18:07.120 align:start position:0%
+but but uh I do have to interject one
+
+
+01:18:07.120 --> 01:18:08.950 align:start position:0%
+but but uh I do have to interject one
+thing<01:18:07.320><c> I</c><01:18:07.400><c> was</c><01:18:07.560><c> going</c><01:18:07.679><c> to</c><01:18:07.880><c> put</c><01:18:08.040><c> a</c><01:18:08.120><c> slide</c><01:18:08.400><c> up</c><01:18:08.719><c> on</c>
+
+01:18:08.950 --> 01:18:08.960 align:start position:0%
+thing I was going to put a slide up on
+
+
+01:18:08.960 --> 01:18:10.990 align:start position:0%
+thing I was going to put a slide up on
+this<01:18:09.199><c> but</c><01:18:09.320><c> I</c><01:18:09.440><c> decided</c><01:18:09.880><c> hey</c><01:18:10.040><c> it's</c><01:18:10.239><c> off</c><01:18:10.600><c> it's</c><01:18:10.800><c> off</c>
+
+01:18:10.990 --> 01:18:11.000 align:start position:0%
+this but I decided hey it's off it's off
+
+
+01:18:11.000 --> 01:18:14.149 align:start position:0%
+this but I decided hey it's off it's off
+Target<01:18:11.719><c> but</c><01:18:11.880><c> you</c><01:18:12.000><c> can</c><01:18:12.239><c> buy</c><01:18:12.760><c> a</c><01:18:13.320><c> much</c><01:18:13.840><c> more</c>
+
+01:18:14.149 --> 01:18:14.159 align:start position:0%
+Target but you can buy a much more
+
+
+01:18:14.159 --> 01:18:16.390 align:start position:0%
+Target but you can buy a much more
+powerful<01:18:14.679><c> machine</c><01:18:15.679><c> for</c>
+
+01:18:16.390 --> 01:18:16.400 align:start position:0%
+powerful machine for
+
+
+01:18:16.400 --> 01:18:19.629 align:start position:0%
+powerful machine for
+$57<01:18:17.400><c> you</c><01:18:17.560><c> can</c><01:18:17.719><c> get</c><01:18:17.880><c> a</c><01:18:18.040><c> state-of-the-art</c><01:18:18.800><c> Arm</c>
+
+01:18:19.629 --> 01:18:19.639 align:start position:0%
+$57 you can get a state-of-the-art Arm
+
+
+01:18:19.639 --> 01:18:22.550 align:start position:0%
+$57 you can get a state-of-the-art Arm
+based<01:18:20.440><c> system</c><01:18:21.080><c> with</c><01:18:21.400><c> iio</c><01:18:21.920><c> coming</c><01:18:22.120><c> out</c><01:18:22.239><c> of</c><01:18:22.360><c> your</c>
+
+01:18:22.550 --> 01:18:22.560 align:start position:0%
+based system with iio coming out of your
+
+
+01:18:22.560 --> 01:18:27.390 align:start position:0%
+based system with iio coming out of your
+ears<01:18:23.520><c> made</c><01:18:23.800><c> by</c><01:18:23.920><c> a</c><01:18:24.040><c> Bulgarian</c><01:18:25.000><c> named</c><01:18:25.679><c> OLX</c><01:18:26.679><c> okay</c>
+
+01:18:27.390 --> 01:18:27.400 align:start position:0%
+ears made by a Bulgarian named OLX okay
+
+
+01:18:27.400 --> 01:18:30.229 align:start position:0%
+ears made by a Bulgarian named OLX okay
+but<01:18:28.040><c> it</c><01:18:28.239><c> doesn't</c><01:18:28.560><c> have</c><01:18:28.719><c> the</c><01:18:29.080><c> community</c><01:18:30.080><c> it</c>
+
+01:18:30.229 --> 01:18:30.239 align:start position:0%
+but it doesn't have the community it
+
+
+01:18:30.239 --> 01:18:34.390 align:start position:0%
+but it doesn't have the community it
+doesn't<01:18:31.199><c> have</c><01:18:31.639><c> the</c><01:18:32.600><c> the</c><01:18:33.199><c> the</c>
+
+01:18:34.390 --> 01:18:34.400 align:start position:0%
+doesn't have the the the
+
+
+01:18:34.400 --> 01:18:36.470 align:start position:0%
+doesn't have the the the
+um<01:18:35.400><c> the</c>
+
+01:18:36.470 --> 01:18:36.480 align:start position:0%
+um the
+
+
+01:18:36.480 --> 01:18:39.270 align:start position:0%
+um the
+momentum<01:18:37.480><c> and</c><01:18:37.920><c> uh</c><01:18:38.199><c> so</c><01:18:38.639><c> anyway</c><01:18:38.960><c> that's</c><01:18:39.120><c> what</c>
+
+01:18:39.270 --> 01:18:39.280 align:start position:0%
+momentum and uh so anyway that's what
+
+
+01:18:39.280 --> 01:18:43.550 align:start position:0%
+momentum and uh so anyway that's what
+makes<01:18:39.639><c> RPI</c><01:18:40.600><c> interesting</c><01:18:41.600><c> sorry</c><01:18:41.920><c> Alan</c><01:18:42.920><c> um</c><01:18:43.120><c> so</c><01:18:43.480><c> I</c>
+
+01:18:43.550 --> 01:18:43.560 align:start position:0%
+makes RPI interesting sorry Alan um so I
+
+
+01:18:43.560 --> 01:18:45.270 align:start position:0%
+makes RPI interesting sorry Alan um so I
+want<01:18:43.679><c> to</c><01:18:43.840><c> mention</c><01:18:44.120><c> if</c><01:18:44.280><c> you</c><01:18:44.400><c> guys</c><01:18:44.560><c> have</c><01:18:44.719><c> been</c><01:18:44.960><c> to</c>
+
+01:18:45.270 --> 01:18:45.280 align:start position:0%
+want to mention if you guys have been to
+
+
+01:18:45.280 --> 01:18:46.790 align:start position:0%
+want to mention if you guys have been to
+the<01:18:45.800><c> last</c>
+
+01:18:46.790 --> 01:18:46.800 align:start position:0%
+the last
+
+
+01:18:46.800 --> 01:18:49.189 align:start position:0%
+the last
+three<01:18:47.800><c> Christmas</c><01:18:48.280><c> parties</c><01:18:48.639><c> that</c><01:18:48.800><c> we've</c><01:18:49.040><c> had</c>
+
+01:18:49.189 --> 01:18:49.199 align:start position:0%
+three Christmas parties that we've had
+
+
+01:18:49.199 --> 01:18:51.270 align:start position:0%
+three Christmas parties that we've had
+over<01:18:49.360><c> this</c><01:18:49.520><c> Splat</c><01:18:49.880><c> space</c><01:18:50.600><c> uh</c><01:18:50.719><c> so</c><01:18:50.880><c> the</c><01:18:51.040><c> first</c>
+
+01:18:51.270 --> 01:18:51.280 align:start position:0%
+over this Splat space uh so the first
+
+
+01:18:51.280 --> 01:18:54.189 align:start position:0%
+over this Splat space uh so the first
+year<01:18:51.800><c> I</c><01:18:51.960><c> demonstrated</c><01:18:52.679><c> backup</c><01:18:53.159><c> PC</c><01:18:54.040><c> which</c>
+
+01:18:54.189 --> 01:18:54.199 align:start position:0%
+year I demonstrated backup PC which
+
+
+01:18:54.199 --> 01:18:56.990 align:start position:0%
+year I demonstrated backup PC which
+would<01:18:54.400><c> run</c><01:18:55.040><c> just</c><01:18:55.320><c> fine</c><01:18:55.960><c> on</c><01:18:56.080><c> a</c><01:18:56.239><c> Raspberry</c><01:18:56.719><c> Pi</c>
+
+01:18:56.990 --> 01:18:57.000 align:start position:0%
+would run just fine on a Raspberry Pi
+
+
+01:18:57.000 --> 01:18:58.550 align:start position:0%
+would run just fine on a Raspberry Pi
+this<01:18:57.120><c> would</c><01:18:57.239><c> be</c><01:18:57.360><c> a</c><01:18:57.480><c> perfect</c><01:18:57.840><c> application</c><01:18:58.360><c> for</c>
+
+01:18:58.550 --> 01:18:58.560 align:start position:0%
+this would be a perfect application for
+
+
+01:18:58.560 --> 01:19:00.110 align:start position:0%
+this would be a perfect application for
+something<01:18:58.880><c> like</c><01:18:59.120><c> this</c><01:18:59.360><c> because</c><01:18:59.520><c> it's</c><01:18:59.960><c> it's</c>
+
+01:19:00.110 --> 01:19:00.120 align:start position:0%
+something like this because it's it's
+
+
+01:19:00.120 --> 01:19:02.350 align:start position:0%
+something like this because it's it's
+low<01:19:00.480><c> power</c><01:19:00.760><c> it's</c><01:19:01.080><c> quiet</c><01:19:01.480><c> it</c><01:19:01.600><c> just</c><01:19:01.719><c> runs</c><01:19:02.040><c> 24</c>
+
+01:19:02.350 --> 01:19:02.360 align:start position:0%
+low power it's quiet it just runs 24
+
+
+01:19:02.360 --> 01:19:03.870 align:start position:0%
+low power it's quiet it just runs 24
+hours<01:19:02.560><c> a</c><01:19:02.679><c> day</c><01:19:02.840><c> and</c><01:19:02.960><c> backs</c><01:19:03.199><c> up</c><01:19:03.400><c> everything</c><01:19:03.679><c> else</c>
+
+01:19:03.870 --> 01:19:03.880 align:start position:0%
+hours a day and backs up everything else
+
+
+01:19:03.880 --> 01:19:06.830 align:start position:0%
+hours a day and backs up everything else
+in<01:19:04.040><c> your</c><01:19:04.360><c> house</c><01:19:05.360><c> uh</c><01:19:05.639><c> the</c><01:19:05.800><c> year</c><01:19:06.080><c> after</c><01:19:06.360><c> that</c><01:19:06.600><c> we</c>
+
+01:19:06.830 --> 01:19:06.840 align:start position:0%
+in your house uh the year after that we
+
+
+01:19:06.840 --> 01:19:09.629 align:start position:0%
+in your house uh the year after that we
+did<01:19:07.280><c> um</c><01:19:07.520><c> demonstrated</c><01:19:08.520><c> the</c><01:19:08.719><c> happy</c><01:19:09.040><c> Krabby</c>
+
+01:19:09.629 --> 01:19:09.639 align:start position:0%
+did um demonstrated the happy Krabby
+
+
+01:19:09.639 --> 01:19:11.790 align:start position:0%
+did um demonstrated the happy Krabby
+which<01:19:09.800><c> was</c><01:19:09.960><c> the</c><01:19:10.080><c> crab</c><01:19:10.400><c> cage</c><01:19:10.760><c> Monitor</c><01:19:11.480><c> and</c><01:19:11.639><c> in</c>
+
+01:19:11.790 --> 01:19:11.800 align:start position:0%
+which was the crab cage Monitor and in
+
+
+01:19:11.800 --> 01:19:13.950 align:start position:0%
+which was the crab cage Monitor and in
+that<01:19:12.000><c> case</c><01:19:12.239><c> it</c><01:19:12.560><c> recorded</c><01:19:13.239><c> information</c><01:19:13.800><c> from</c>
+
+01:19:13.950 --> 01:19:13.960 align:start position:0%
+that case it recorded information from
+
+
+01:19:13.960 --> 01:19:16.470 align:start position:0%
+that case it recorded information from
+the<01:19:14.120><c> crab</c><01:19:14.760><c> The</c><01:19:14.880><c> Hermit</c><01:19:15.199><c> Crabs</c><01:19:15.600><c> cage</c><01:19:16.239><c> and</c><01:19:16.320><c> it</c>
+
+01:19:16.470 --> 01:19:16.480 align:start position:0%
+the crab The Hermit Crabs cage and it
+
+
+01:19:16.480 --> 01:19:18.350 align:start position:0%
+the crab The Hermit Crabs cage and it
+put<01:19:16.600><c> it</c><01:19:16.679><c> on</c><01:19:16.800><c> an</c><01:19:16.920><c> SD</c><01:19:17.280><c> card</c><01:19:17.639><c> well</c><01:19:17.880><c> with</c><01:19:18.040><c> something</c>
+
+01:19:18.350 --> 01:19:18.360 align:start position:0%
+put it on an SD card well with something
+
+
+01:19:18.360 --> 01:19:20.189 align:start position:0%
+put it on an SD card well with something
+like<01:19:18.560><c> this</c><01:19:18.840><c> you</c><01:19:18.920><c> can</c><01:19:19.080><c> take</c><01:19:19.360><c> almost</c><01:19:19.719><c> the</c><01:19:19.880><c> same</c>
+
+01:19:20.189 --> 01:19:20.199 align:start position:0%
+like this you can take almost the same
+
+
+01:19:20.199 --> 01:19:23.390 align:start position:0%
+like this you can take almost the same
+thing<01:19:20.800><c> and</c><01:19:21.000><c> instead</c><01:19:21.880><c> publish</c><01:19:22.239><c> it</c><01:19:22.880><c> you</c><01:19:23.000><c> know</c>
+
+01:19:23.390 --> 01:19:23.400 align:start position:0%
+thing and instead publish it you know
+
+
+01:19:23.400 --> 01:19:25.070 align:start position:0%
+thing and instead publish it you know
+with<01:19:23.679><c> have</c><01:19:23.880><c> its</c><01:19:24.000><c> own</c><01:19:24.159><c> little</c><01:19:24.320><c> web</c><01:19:24.480><c> in</c><01:19:24.719><c> interace</c>
+
+01:19:25.070 --> 01:19:25.080 align:start position:0%
+with have its own little web in interace
+
+
+01:19:25.080 --> 01:19:27.070 align:start position:0%
+with have its own little web in interace
+on<01:19:25.199><c> it</c><01:19:25.440><c> so</c><01:19:25.600><c> you</c><01:19:25.679><c> can</c><01:19:25.880><c> find</c><01:19:26.080><c> out</c><01:19:26.480><c> right</c><01:19:26.679><c> now</c><01:19:26.960><c> is</c>
+
+01:19:27.070 --> 01:19:27.080 align:start position:0%
+on it so you can find out right now is
+
+
+01:19:27.080 --> 01:19:30.590 align:start position:0%
+on it so you can find out right now is
+my<01:19:27.239><c> crab</c><01:19:27.639><c> cold</c><01:19:27.840><c> or</c><01:19:28.080><c> hot</c><01:19:28.960><c> and</c><01:19:29.159><c> then</c><01:19:29.840><c> um</c><01:19:30.440><c> this</c>
+
+01:19:30.590 --> 01:19:30.600 align:start position:0%
+my crab cold or hot and then um this
+
+
+01:19:30.600 --> 01:19:32.870 align:start position:0%
+my crab cold or hot and then um this
+year<01:19:30.800><c> we</c><01:19:31.000><c> demonstrated</c><01:19:31.840><c> the</c><01:19:32.280><c> garage</c><01:19:32.679><c> door</c>
+
+01:19:32.870 --> 01:19:32.880 align:start position:0%
+year we demonstrated the garage door
+
+
+01:19:32.880 --> 01:19:35.189 align:start position:0%
+year we demonstrated the garage door
+opener<01:19:33.360><c> detector</c><01:19:33.800><c> that</c><01:19:33.920><c> would</c><01:19:34.080><c> send</c><01:19:34.360><c> you</c><01:19:35.040><c> a</c>
+
+01:19:35.189 --> 01:19:35.199 align:start position:0%
+opener detector that would send you a
+
+
+01:19:35.199 --> 01:19:36.830 align:start position:0%
+opener detector that would send you a
+message<01:19:35.520><c> when</c><01:19:35.679><c> your</c><01:19:35.840><c> garage</c><01:19:36.159><c> door</c><01:19:36.440><c> open</c><01:19:36.679><c> and</c>
+
+01:19:36.830 --> 01:19:36.840 align:start position:0%
+message when your garage door open and
+
+
+01:19:36.840 --> 01:19:38.950 align:start position:0%
+message when your garage door open and
+closed<01:19:37.639><c> once</c><01:19:37.880><c> again</c><01:19:38.120><c> this</c><01:19:38.239><c> is</c><01:19:38.360><c> an</c><01:19:38.520><c> excellent</c>
+
+01:19:38.950 --> 01:19:38.960 align:start position:0%
+closed once again this is an excellent
+
+
+01:19:38.960 --> 01:19:41.510 align:start position:0%
+closed once again this is an excellent
+platform<01:19:39.400><c> for</c><01:19:39.600><c> that</c><01:19:39.920><c> because</c><01:19:40.360><c> it's</c><01:19:40.560><c> got</c><01:19:41.360><c> the</c>
+
+01:19:41.510 --> 01:19:41.520 align:start position:0%
+platform for that because it's got the
+
+
+01:19:41.520 --> 01:19:43.950 align:start position:0%
+platform for that because it's got the
+ability<01:19:41.840><c> to</c><01:19:42.040><c> read</c><01:19:42.679><c> just</c><01:19:42.800><c> a</c><01:19:42.920><c> lowlevel</c><01:19:43.440><c> input</c><01:19:43.800><c> to</c>
+
+01:19:43.950 --> 01:19:43.960 align:start position:0%
+ability to read just a lowlevel input to
+
+
+01:19:43.960 --> 01:19:45.669 align:start position:0%
+ability to read just a lowlevel input to
+say<01:19:44.159><c> the</c><01:19:44.280><c> garage</c><01:19:44.560><c> door</c><01:19:44.719><c> is</c><01:19:44.880><c> open</c><01:19:45.280><c> and</c><01:19:45.400><c> it's</c><01:19:45.560><c> got</c>
+
+01:19:45.669 --> 01:19:45.679 align:start position:0%
+say the garage door is open and it's got
+
+
+01:19:45.679 --> 01:19:48.669 align:start position:0%
+say the garage door is open and it's got
+a<01:19:45.760><c> full</c><01:19:46.000><c> Network</c><01:19:46.400><c> stack</c><01:19:47.159><c> and</c><01:19:47.360><c> with</c><01:19:47.480><c> a</c><01:19:47.679><c> $10</c>
+
+01:19:48.669 --> 01:19:48.679 align:start position:0%
+a full Network stack and with a $10
+
+
+01:19:48.679 --> 01:19:50.790 align:start position:0%
+a full Network stack and with a $10
+Wi-Fi<01:19:49.040><c> adapter</c><01:19:49.440><c> you</c><01:19:49.560><c> plug</c><01:19:49.840><c> that</c><01:19:49.960><c> in</c><01:19:50.239><c> there</c><01:19:50.679><c> and</c>
+
+01:19:50.790 --> 01:19:50.800 align:start position:0%
+Wi-Fi adapter you plug that in there and
+
+
+01:19:50.800 --> 01:19:52.870 align:start position:0%
+Wi-Fi adapter you plug that in there and
+it<01:19:50.880><c> sends</c><01:19:51.159><c> the</c><01:19:51.320><c> message</c><01:19:51.679><c> directly</c><01:19:52.000><c> to</c><01:19:52.239><c> you</c><01:19:52.639><c> one</c>
+
+01:19:52.870 --> 01:19:52.880 align:start position:0%
+it sends the message directly to you one
+
+
+01:19:52.880 --> 01:19:54.910 align:start position:0%
+it sends the message directly to you one
+little<01:19:53.199><c> box</c><01:19:53.719><c> put</c><01:19:53.880><c> it</c><01:19:54.000><c> in</c><01:19:54.120><c> the</c><01:19:54.239><c> garage</c><01:19:54.719><c> you're</c>
+
+01:19:54.910 --> 01:19:54.920 align:start position:0%
+little box put it in the garage you're
+
+
+01:19:54.920 --> 01:19:57.189 align:start position:0%
+little box put it in the garage you're
+done<01:19:55.400><c> so</c><01:19:56.239><c> there</c><01:19:56.480><c> that</c><01:19:56.600><c> may</c><01:19:56.760><c> answer</c><01:19:57.000><c> your</c>
+
+01:19:57.189 --> 01:19:57.199 align:start position:0%
+done so there that may answer your
+
+
+01:19:57.199 --> 01:19:59.270 align:start position:0%
+done so there that may answer your
+question<01:19:57.600><c> about</c><01:19:58.159><c> why</c><01:19:58.320><c> you</c><01:19:58.480><c> might</c><01:19:58.679><c> want</c><01:19:59.159><c> a</c>
+
+01:19:59.270 --> 01:19:59.280 align:start position:0%
+question about why you might want a
+
+
+01:19:59.280 --> 01:20:02.870 align:start position:0%
+question about why you might want a
+little<01:19:59.600><c> box</c><01:19:59.880><c> like</c><01:20:00.080><c> this</c><01:20:00.280><c> with</c><01:20:00.360><c> a</c><01:20:00.480><c> lot</c><01:20:00.600><c> of</c>
+
+01:20:02.870 --> 01:20:02.880 align:start position:0%
+
+
+
+01:20:02.880 --> 01:20:06.790 align:start position:0%
+
+capability<01:20:03.880><c> I'd</c><01:20:04.080><c> say</c><01:20:04.239><c> to</c><01:20:04.960><c> um</c><01:20:05.920><c> just</c><01:20:06.080><c> for</c><01:20:06.280><c> me</c>
+
+01:20:06.790 --> 01:20:06.800 align:start position:0%
+capability I'd say to um just for me
+
+
+01:20:06.800 --> 01:20:09.790 align:start position:0%
+capability I'd say to um just for me
+personally<01:20:07.800><c> um</c><01:20:08.800><c> it's</c><01:20:08.960><c> like</c><01:20:09.120><c> a</c><01:20:09.360><c> personal</c>
+
+01:20:09.790 --> 01:20:09.800 align:start position:0%
+personally um it's like a personal
+
+
+01:20:09.800 --> 01:20:12.470 align:start position:0%
+personally um it's like a personal
+education<01:20:10.360><c> device</c><01:20:11.080><c> it's</c><01:20:11.280><c> not</c><01:20:11.639><c> just</c><01:20:11.880><c> for</c><01:20:12.159><c> kids</c>
+
+01:20:12.470 --> 01:20:12.480 align:start position:0%
+education device it's not just for kids
+
+
+01:20:12.480 --> 01:20:15.149 align:start position:0%
+education device it's not just for kids
+it's<01:20:12.639><c> not</c><01:20:12.880><c> just</c><01:20:13.000><c> for</c><01:20:13.280><c> classes</c><01:20:14.199><c> you</c><01:20:14.440><c> want</c><01:20:14.719><c> to</c>
+
+01:20:15.149 --> 01:20:15.159 align:start position:0%
+it's not just for classes you want to
+
+
+01:20:15.159 --> 01:20:16.590 align:start position:0%
+it's not just for classes you want to
+you<01:20:15.320><c> want</c><01:20:15.480><c> to</c><01:20:15.679><c> play</c><01:20:15.880><c> with</c><01:20:16.000><c> it</c><01:20:16.159><c> since</c><01:20:16.360><c> getting</c>
+
+01:20:16.590 --> 01:20:16.600 align:start position:0%
+you want to play with it since getting
+
+
+01:20:16.600 --> 01:20:18.950 align:start position:0%
+you want to play with it since getting
+the<01:20:16.800><c> pie</c><01:20:17.000><c> and</c><01:20:17.120><c> learn</c><01:20:17.440><c> more</c><01:20:17.639><c> about</c><01:20:17.960><c> computers</c>
+
+01:20:18.950 --> 01:20:18.960 align:start position:0%
+the pie and learn more about computers
+
+
+01:20:18.960 --> 01:20:21.870 align:start position:0%
+the pie and learn more about computers
+and<01:20:19.080><c> I</c><01:20:19.280><c> have</c><01:20:19.560><c> from</c><01:20:19.920><c> you</c><01:20:20.000><c> know</c><01:20:20.199><c> 10</c><01:20:20.480><c> years</c><01:20:20.719><c> using</c>
+
+01:20:21.870 --> 01:20:21.880 align:start position:0%
+and I have from you know 10 years using
+
+
+01:20:21.880 --> 01:20:28.870 align:start position:0%
+and I have from you know 10 years using
+Max<01:20:22.880><c> for</c><01:20:23.360><c> for</c><01:20:23.719><c> $4</c>
+
+01:20:28.870 --> 01:20:28.880 align:start position:0%
+
+
+
+01:20:28.880 --> 01:20:32.229 align:start position:0%
+
+because<01:20:29.040><c> you</c><01:20:29.239><c> have</c>
+
+01:20:32.229 --> 01:20:32.239 align:start position:0%
+
+
+
+01:20:32.239 --> 01:20:36.030 align:start position:0%
+
+to<01:20:33.239><c> so</c><01:20:33.600><c> the</c><01:20:33.719><c> cool</c><01:20:34.000><c> thing</c><01:20:34.320><c> about</c><01:20:34.920><c> the</c><01:20:35.159><c> pie</c><01:20:35.600><c> and</c>
+
+01:20:36.030 --> 01:20:36.040 align:start position:0%
+to so the cool thing about the pie and
+
+
+01:20:36.040 --> 01:20:38.149 align:start position:0%
+to so the cool thing about the pie and
+why<01:20:36.159><c> it's</c><01:20:36.360><c> great</c><01:20:36.520><c> for</c><01:20:36.679><c> education</c><01:20:37.520><c> is</c><01:20:37.760><c> that</c><01:20:37.960><c> for</c>
+
+01:20:38.149 --> 01:20:38.159 align:start position:0%
+why it's great for education is that for
+
+
+01:20:38.159 --> 01:20:41.709 align:start position:0%
+why it's great for education is that for
+$3<01:20:38.880><c> you</c><01:20:38.960><c> can</c><01:20:39.120><c> get</c><01:20:39.239><c> a</c><01:20:39.360><c> 4</c><01:20:39.679><c> gab</c><01:20:40.199><c> SD</c><01:20:40.560><c> card</c><01:20:41.280><c> have</c><01:20:41.440><c> an</c>
+
+01:20:41.709 --> 01:20:41.719 align:start position:0%
+$3 you can get a 4 gab SD card have an
+
+
+01:20:41.719 --> 01:20:43.790 align:start position:0%
+$3 you can get a 4 gab SD card have an
+entirely<01:20:42.120><c> different</c><01:20:42.360><c> hard</c><01:20:42.600><c> drive</c><01:20:43.159><c> so</c><01:20:43.400><c> for</c><01:20:43.600><c> my</c>
+
+01:20:43.790 --> 01:20:43.800 align:start position:0%
+entirely different hard drive so for my
+
+
+01:20:43.800 --> 01:20:45.669 align:start position:0%
+entirely different hard drive so for my
+students<01:20:44.360><c> I'm</c><01:20:44.480><c> gonna</c><01:20:45.040><c> replace</c><01:20:45.360><c> their</c><01:20:45.520><c> hard</c>
+
+01:20:45.669 --> 01:20:45.679 align:start position:0%
+students I'm gonna replace their hard
+
+
+01:20:45.679 --> 01:20:47.390 align:start position:0%
+students I'm gonna replace their hard
+drives<01:20:46.000><c> every</c><01:20:46.159><c> time</c>
+
+01:20:47.390 --> 01:20:47.400 align:start position:0%
+drives every time
+
+
+01:20:47.400 --> 01:20:50.390 align:start position:0%
+drives every time
+we<01:20:48.400><c> but</c><01:20:48.600><c> I've</c><01:20:48.760><c> been</c><01:20:48.920><c> able</c><01:20:49.159><c> to</c><01:20:49.679><c> experiment</c><01:20:50.199><c> with</c>
+
+01:20:50.390 --> 01:20:50.400 align:start position:0%
+we but I've been able to experiment with
+
+
+01:20:50.400 --> 01:20:51.910 align:start position:0%
+we but I've been able to experiment with
+different<01:20:50.560><c> flavers</c><01:20:51.000><c> of</c><01:20:51.159><c> Linux</c><01:20:51.679><c> different</c>
+
+01:20:51.910 --> 01:20:51.920 align:start position:0%
+different flavers of Linux different
+
+
+01:20:51.920 --> 01:20:54.470 align:start position:0%
+different flavers of Linux different
+window<01:20:52.520><c> managers</c><01:20:53.520><c> and</c><01:20:53.880><c> I</c><01:20:54.000><c> have</c><01:20:54.120><c> a</c><01:20:54.239><c> bunch</c><01:20:54.400><c> of</c>
+
+01:20:54.470 --> 01:20:54.480 align:start position:0%
+window managers and I have a bunch of
+
+
+01:20:54.480 --> 01:20:55.629 align:start position:0%
+window managers and I have a bunch of
+different<01:20:54.679><c> different</c><01:20:54.920><c> systems</c><01:20:55.360><c> that</c><01:20:55.440><c> I'm</c>
+
+01:20:55.629 --> 01:20:55.639 align:start position:0%
+different different systems that I'm
+
+
+01:20:55.639 --> 01:20:58.350 align:start position:0%
+different different systems that I'm
+running<01:20:55.960><c> that</c><01:20:56.040><c> I'm</c><01:20:56.159><c> learning</c><01:20:56.400><c> on</c><01:20:57.320><c> done</c>
+
+01:20:58.350 --> 01:20:58.360 align:start position:0%
+running that I'm learning on done
+
+
+01:20:58.360 --> 01:21:01.510 align:start position:0%
+running that I'm learning on done
+otherwise<01:20:59.360><c> you</c><01:20:59.639><c> know</c><01:21:00.639><c> I'm</c><01:21:00.760><c> not</c><01:21:00.920><c> going</c><01:21:01.000><c> to</c><01:21:01.159><c> have</c>
+
+01:21:01.510 --> 01:21:01.520 align:start position:0%
+otherwise you know I'm not going to have
+
+
+01:21:01.520 --> 01:21:04.430 align:start position:0%
+otherwise you know I'm not going to have
+four<01:21:01.679><c> or</c><01:21:01.880><c> five</c><01:21:02.080><c> different</c><01:21:02.400><c> laptops</c><01:21:03.320><c> experim</c>
+
+01:21:04.430 --> 01:21:04.440 align:start position:0%
+four or five different laptops experim
+
+
+01:21:04.440 --> 01:21:06.790 align:start position:0%
+four or five different laptops experim
+systems<01:21:05.440><c> one</c><01:21:05.639><c> quick</c><01:21:05.840><c> thing</c><01:21:05.960><c> to</c><01:21:06.159><c> add</c><01:21:06.560><c> uh</c><01:21:06.639><c> on</c>
+
+01:21:06.790 --> 01:21:06.800 align:start position:0%
+systems one quick thing to add uh on
+
+
+01:21:06.800 --> 01:21:08.750 align:start position:0%
+systems one quick thing to add uh on
+Saturday<01:21:07.639><c> uh</c><01:21:07.880><c> one</c><01:21:08.000><c> of</c><01:21:08.080><c> the</c><01:21:08.159><c> things</c><01:21:08.320><c> we'll</c><01:21:08.520><c> show</c>
+
+01:21:08.750 --> 01:21:08.760 align:start position:0%
+Saturday uh one of the things we'll show
+
+
+01:21:08.760 --> 01:21:11.310 align:start position:0%
+Saturday uh one of the things we'll show
+you<01:21:09.000><c> is</c><01:21:09.159><c> how</c><01:21:09.280><c> to</c><01:21:09.440><c> trivially</c><01:21:10.280><c> steer</c><01:21:11.040><c> your</c>
+
+01:21:11.310 --> 01:21:11.320 align:start position:0%
+you is how to trivially steer your
+
+
+01:21:11.320 --> 01:21:15.629 align:start position:0%
+you is how to trivially steer your
+system<01:21:11.840><c> to</c><01:21:12.239><c> other</c><01:21:12.760><c> devices</c><01:21:13.360><c> for</c><01:21:13.560><c> the</c><01:21:14.040><c> rout</c><01:21:14.639><c> fs</c>
+
+01:21:15.629 --> 01:21:15.639 align:start position:0%
+system to other devices for the rout fs
+
+
+01:21:15.639 --> 01:21:20.310 align:start position:0%
+system to other devices for the rout fs
+and<01:21:16.440><c> um</c><01:21:17.440><c> uh</c><01:21:18.239><c> use</c><01:21:18.760><c> uh</c><01:21:18.960><c> you</c><01:21:19.080><c> know</c><01:21:19.239><c> thumb</c><01:21:19.520><c> drives</c>
+
+01:21:20.310 --> 01:21:20.320 align:start position:0%
+and um uh use uh you know thumb drives
+
+
+01:21:20.320 --> 01:21:22.310 align:start position:0%
+and um uh use uh you know thumb drives
+and<01:21:21.320><c> add</c>
+
+01:21:22.310 --> 01:21:22.320 align:start position:0%
+and add
+
+
+01:21:22.320 --> 01:21:25.470 align:start position:0%
+and add
+flexibility<01:21:23.320><c> um</c><01:21:24.120><c> and</c><01:21:24.320><c> the</c><01:21:24.639><c> other</c><01:21:24.880><c> thing</c><01:21:25.199><c> is</c>
+
+01:21:25.470 --> 01:21:25.480 align:start position:0%
+flexibility um and the other thing is
+
+
+01:21:25.480 --> 01:21:27.510 align:start position:0%
+flexibility um and the other thing is
+we've<01:21:25.719><c> got</c><01:21:26.199><c> a</c><01:21:26.320><c> scheme</c><01:21:26.639><c> set</c><01:21:26.840><c> up</c><01:21:27.120><c> where</c><01:21:27.239><c> you</c><01:21:27.360><c> can</c>
+
+01:21:27.510 --> 01:21:27.520 align:start position:0%
+we've got a scheme set up where you can
+
+
+01:21:27.520 --> 01:21:31.189 align:start position:0%
+we've got a scheme set up where you can
+run<01:21:27.760><c> Raspberry</c><01:21:28.480><c> Pi</c><01:21:29.480><c> absolutely</c><01:21:30.199><c> Standalone</c>
+
+01:21:31.189 --> 01:21:31.199 align:start position:0%
+run Raspberry Pi absolutely Standalone
+
+
+01:21:31.199 --> 01:21:34.030 align:start position:0%
+run Raspberry Pi absolutely Standalone
+with<01:21:31.600><c> nothing</c><01:21:32.239><c> but</c><01:21:32.560><c> a</c><01:21:32.719><c> network</c><01:21:33.120><c> connection</c>
+
+01:21:34.030 --> 01:21:34.040 align:start position:0%
+with nothing but a network connection
+
+
+01:21:34.040 --> 01:21:39.070 align:start position:0%
+with nothing but a network connection
+and<01:21:34.800><c> power</c><01:21:36.080><c> plug</c><01:21:37.080><c> and</c><01:21:37.400><c> yet</c><01:21:37.960><c> have</c><01:21:38.360><c> the</c><01:21:38.600><c> full</c>
+
+01:21:39.070 --> 01:21:39.080 align:start position:0%
+and power plug and yet have the full
+
+
+01:21:39.080 --> 01:21:41.229 align:start position:0%
+and power plug and yet have the full
+goey<01:21:39.440><c> desktop</c><01:21:40.000><c> from</c><01:21:40.280><c> anywhere</c><01:21:40.719><c> else</c><01:21:41.000><c> on</c><01:21:41.120><c> the</c>
+
+01:21:41.229 --> 01:21:41.239 align:start position:0%
+goey desktop from anywhere else on the
+
+
+01:21:41.239 --> 01:21:43.669 align:start position:0%
+goey desktop from anywhere else on the
+lary<01:21:41.840><c> network</c><01:21:42.360><c> that's</c><01:21:42.600><c> visible</c><01:21:43.080><c> to</c><01:21:43.520><c> the</c>
+
+01:21:43.669 --> 01:21:43.679 align:start position:0%
+lary network that's visible to the
+
+
+01:21:43.679 --> 01:21:45.950 align:start position:0%
+lary network that's visible to the
+Raspberry<01:21:44.159><c> Pi</c><01:21:44.480><c> it's</c>
+
+01:21:45.950 --> 01:21:45.960 align:start position:0%
+Raspberry Pi it's
+
+
+01:21:45.960 --> 01:21:49.470 align:start position:0%
+Raspberry Pi it's
+uh<01:21:46.960><c> available</c><01:21:47.480><c> in</c><01:21:47.639><c> fact</c><01:21:47.880><c> I</c><01:21:48.000><c> think</c><01:21:48.320><c> you're</c><01:21:48.600><c> demo</c>
+
+01:21:49.470 --> 01:21:49.480 align:start position:0%
+uh available in fact I think you're demo
+
+
+01:21:49.480 --> 01:21:51.950 align:start position:0%
+uh available in fact I think you're demo
+we've<01:21:49.639><c> got</c><01:21:49.760><c> a</c><01:21:49.840><c> demo</c><01:21:50.120><c> of</c><01:21:50.239><c> that</c><01:21:50.440><c> going</c><01:21:50.760><c> right</c><01:21:50.960><c> now</c>
+
+01:21:51.950 --> 01:21:51.960 align:start position:0%
+we've got a demo of that going right now
+
+
+01:21:51.960 --> 01:21:53.990 align:start position:0%
+we've got a demo of that going right now
+uh<01:21:52.239><c> but</c><01:21:52.400><c> we</c><01:21:52.480><c> can</c><01:21:52.639><c> go</c><01:21:52.760><c> into</c><01:21:52.920><c> the</c><01:21:53.040><c> details</c><01:21:53.840><c> on</c>
+
+01:21:53.990 --> 01:21:54.000 align:start position:0%
+uh but we can go into the details on
+
+
+01:21:54.000 --> 01:21:58.510 align:start position:0%
+uh but we can go into the details on
+Saturday<01:21:54.600><c> do</c><01:21:54.920><c> it</c><01:21:55.960><c> it</c><01:21:56.960><c> it</c><01:21:57.400><c> head</c><01:21:57.840><c> P</c><01:21:58.199><c> it's</c><01:21:58.320><c> a</c>
+
+01:21:58.510 --> 01:21:58.520 align:start position:0%
+Saturday do it it it head P it's a
+
+
+01:21:58.520 --> 01:22:01.350 align:start position:0%
+Saturday do it it it head P it's a
+headless<01:21:58.960><c> pie</c><01:21:59.719><c> it</c><01:22:00.120><c> it</c><01:22:00.280><c> makes</c><01:22:00.560><c> the</c><01:22:00.800><c> pie</c>
+
+01:22:01.350 --> 01:22:01.360 align:start position:0%
+headless pie it it makes the pie
+
+
+01:22:01.360 --> 01:22:03.950 align:start position:0%
+headless pie it it makes the pie
+available<01:22:02.360><c> to</c><01:22:02.880><c> any</c><01:22:03.120><c> other</c><01:22:03.360><c> system</c><01:22:03.639><c> on</c><01:22:03.800><c> the</c>
+
+01:22:03.950 --> 01:22:03.960 align:start position:0%
+available to any other system on the
+
+
+01:22:03.960 --> 01:22:05.350 align:start position:0%
+available to any other system on the
+network<01:22:04.560><c> by</c><01:22:04.679><c> a</c>
+
+01:22:05.350 --> 01:22:05.360 align:start position:0%
+network by a
+
+
+01:22:05.360 --> 01:22:07.950 align:start position:0%
+network by a
+BNC<01:22:06.360><c> and</c><01:22:06.480><c> you</c><01:22:06.639><c> get</c><01:22:06.800><c> the</c><01:22:07.120><c> the</c><01:22:07.199><c> full</c><01:22:07.440><c> gooey</c>
+
+01:22:07.950 --> 01:22:07.960 align:start position:0%
+BNC and you get the the full gooey
+
+
+01:22:07.960 --> 01:22:11.310 align:start position:0%
+BNC and you get the the full gooey
+desktop<01:22:08.520><c> and</c><01:22:08.760><c> but</c><01:22:08.840><c> you</c><01:22:09.000><c> need</c><01:22:09.360><c> no</c>
+
+01:22:11.310 --> 01:22:11.320 align:start position:0%
+desktop and but you need no
+
+
+01:22:11.320 --> 01:22:13.430 align:start position:0%
+desktop and but you need no
+peripherals<01:22:12.320><c> yeah</c><01:22:12.440><c> you</c><01:22:12.520><c> can</c><01:22:12.719><c> also</c><01:22:13.000><c> install</c>
+
+01:22:13.430 --> 01:22:13.440 align:start position:0%
+peripherals yeah you can also install
+
+
+01:22:13.440 --> 01:22:17.950 align:start position:0%
+peripherals yeah you can also install
+xrdp<01:22:14.440><c> remote</c>
+
+01:22:17.950 --> 01:22:17.960 align:start position:0%
+
+
+
+01:22:17.960 --> 01:22:22.270 align:start position:0%
+
+desktop<01:22:18.960><c> question</c><01:22:19.840><c> sorry</c><01:22:20.239><c> yeah</c><01:22:20.960><c> uh</c><01:22:21.239><c> who</c><01:22:21.440><c> was</c>
+
+01:22:22.270 --> 01:22:22.280 align:start position:0%
+desktop question sorry yeah uh who was
+
+
+01:22:22.280 --> 01:22:24.750 align:start position:0%
+desktop question sorry yeah uh who was
+mic<01:22:22.880><c> oh</c><01:22:23.040><c> yeah</c><01:22:23.360><c> yeah</c><01:22:23.760><c> what</c><01:22:23.920><c> advice</c><01:22:24.199><c> do</c><01:22:24.280><c> you</c><01:22:24.400><c> guys</c>
+
+01:22:24.750 --> 01:22:24.760 align:start position:0%
+mic oh yeah yeah what advice do you guys
+
+
+01:22:24.760 --> 01:22:30.790 align:start position:0%
+mic oh yeah yeah what advice do you guys
+have<01:22:25.000><c> regarding</c><01:22:25.800><c> cases</c>
+
+01:22:30.790 --> 01:22:30.800 align:start position:0%
+
+
+
+01:22:30.800 --> 01:22:36.149 align:start position:0%
+
+init<01:22:31.800><c> um</c><01:22:32.400><c> actually</c><01:22:33.760><c> uh</c><01:22:34.760><c> uh</c><01:22:35.360><c> Jeff</c><01:22:35.719><c> back</c><01:22:35.880><c> in</c><01:22:36.000><c> the</c>
+
+01:22:36.149 --> 01:22:36.159 align:start position:0%
+init um actually uh uh Jeff back in the
+
+
+01:22:36.159 --> 01:22:38.510 align:start position:0%
+init um actually uh uh Jeff back in the
+back<01:22:36.440><c> there</c><01:22:37.040><c> uh</c><01:22:37.199><c> sorry</c><01:22:37.480><c> not</c><01:22:37.679><c> the</c><01:22:37.800><c> other</c><01:22:38.040><c> Jeff</c>
+
+01:22:38.510 --> 01:22:38.520 align:start position:0%
+back there uh sorry not the other Jeff
+
+
+01:22:38.520 --> 01:22:42.390 align:start position:0%
+back there uh sorry not the other Jeff
+uh<01:22:38.719><c> next</c><01:22:38.960><c> to</c><01:22:39.960><c> yeah</c><01:22:40.800><c> makes</c><01:22:41.280><c> Reser</c><01:22:41.800><c> P</c><01:22:42.040><c> cases</c><01:22:42.280><c> with</c>
+
+01:22:42.390 --> 01:22:42.400 align:start position:0%
+uh next to yeah makes Reser P cases with
+
+
+01:22:42.400 --> 01:22:46.149 align:start position:0%
+uh next to yeah makes Reser P cases with
+it<01:22:42.560><c> 3D</c><01:22:43.280><c> printer</c><01:22:44.280><c> uh</c><01:22:45.000><c> there</c><01:22:45.159><c> are</c><01:22:45.679><c> there's</c><01:22:45.840><c> a</c>
+
+01:22:46.149 --> 01:22:46.159 align:start position:0%
+it 3D printer uh there are there's a
+
+
+01:22:46.159 --> 01:22:49.790 align:start position:0%
+it 3D printer uh there are there's a
+vast<01:22:46.520><c> array</c><01:22:46.840><c> of</c><01:22:47.000><c> them</c><01:22:47.600><c> uh</c><01:22:47.719><c> we</c><01:22:47.840><c> showed</c><01:22:48.480><c> 6</c><01:22:48.800><c> or8</c>
+
+01:22:49.790 --> 01:22:49.800 align:start position:0%
+vast array of them uh we showed 6 or8
+
+
+01:22:49.800 --> 01:22:53.629 align:start position:0%
+vast array of them uh we showed 6 or8
+including<01:22:50.360><c> the</c><01:22:51.040><c> raspberry</c><01:22:51.480><c> blet</c><01:22:52.480><c> case</c><01:22:53.480><c> that</c>
+
+01:22:53.629 --> 01:22:53.639 align:start position:0%
+including the raspberry blet case that
+
+
+01:22:53.639 --> 01:22:56.189 align:start position:0%
+including the raspberry blet case that
+stainless<01:22:54.080><c> steel</c><01:22:54.600><c> case</c><01:22:55.440><c> that's</c><01:22:55.679><c> like</c><01:22:55.800><c> 80</c>
+
+01:22:56.189 --> 01:22:56.199 align:start position:0%
+stainless steel case that's like 80
+
+
+01:22:56.199 --> 01:22:59.270 align:start position:0%
+stainless steel case that's like 80
+bucks<01:22:56.520><c> you</c><01:22:56.760><c> the</c><01:22:57.159><c> machine</c><01:22:58.159><c> stainless</c><01:22:58.560><c> steel</c>
+
+01:22:59.270 --> 01:22:59.280 align:start position:0%
+bucks you the machine stainless steel
+
+
+01:22:59.280 --> 01:23:01.510 align:start position:0%
+bucks you the machine stainless steel
+case<01:23:00.280><c> I</c><01:23:00.400><c> mean</c><01:23:00.600><c> something</c><01:23:00.920><c> adequate</c><01:23:01.360><c> not</c>
+
+01:23:01.510 --> 01:23:01.520 align:start position:0%
+case I mean something adequate not
+
+
+01:23:01.520 --> 01:23:03.030 align:start position:0%
+case I mean something adequate not
+something
+
+01:23:03.030 --> 01:23:03.040 align:start position:0%
+something
+
+
+01:23:03.040 --> 01:23:06.870 align:start position:0%
+something
+off<01:23:04.040><c> right</c><01:23:04.800><c> I</c><01:23:05.000><c> I</c><01:23:05.120><c> use</c><01:23:05.480><c> antistatic</c><01:23:06.400><c> plastic</c>
+
+01:23:06.870 --> 01:23:06.880 align:start position:0%
+off right I I use antistatic plastic
+
+
+01:23:06.880 --> 01:23:10.510 align:start position:0%
+off right I I use antistatic plastic
+bags
+
+01:23:10.510 --> 01:23:10.520 align:start position:0%
+
+
+
+01:23:10.520 --> 01:23:12.950 align:start position:0%
+
+so<01:23:11.520><c> I</c><01:23:11.639><c> I</c><01:23:11.719><c> would</c><01:23:11.920><c> recommend</c><01:23:12.360><c> that</c><01:23:12.560><c> you</c><01:23:12.719><c> you</c><01:23:12.840><c> go</c>
+
+01:23:12.950 --> 01:23:12.960 align:start position:0%
+so I I would recommend that you you go
+
+
+01:23:12.960 --> 01:23:14.590 align:start position:0%
+so I I would recommend that you you go
+to<01:23:13.120><c> adafruit.com</c>
+
+01:23:14.590 --> 01:23:14.600 align:start position:0%
+to adafruit.com
+
+
+01:23:14.600 --> 01:23:16.590 align:start position:0%
+to adafruit.com
+and<01:23:15.600><c> just</c><01:23:15.760><c> look</c><01:23:15.880><c> at</c><01:23:16.000><c> their</c><01:23:16.199><c> collection</c>
+
+01:23:16.590 --> 01:23:16.600 align:start position:0%
+and just look at their collection
+
+
+01:23:16.600 --> 01:23:18.149 align:start position:0%
+and just look at their collection
+they've<01:23:16.760><c> got</c><01:23:16.880><c> a</c><01:23:17.000><c> collection</c><01:23:17.360><c> of</c><01:23:17.600><c> about</c><01:23:17.880><c> seven</c>
+
+01:23:18.149 --> 01:23:18.159 align:start position:0%
+they've got a collection of about seven
+
+
+01:23:18.159 --> 01:23:21.229 align:start position:0%
+they've got a collection of about seven
+or<01:23:18.320><c> eight</c><01:23:18.800><c> of</c><01:23:19.000><c> which</c><01:23:19.199><c> I</c><01:23:19.280><c> showed</c><01:23:19.679><c> three</c><01:23:19.920><c> or</c><01:23:20.239><c> four</c>
+
+01:23:21.229 --> 01:23:21.239 align:start position:0%
+or eight of which I showed three or four
+
+
+01:23:21.239 --> 01:23:23.750 align:start position:0%
+or eight of which I showed three or four
+uh<01:23:21.679><c> and</c><01:23:22.239><c> and</c><01:23:22.520><c> they've</c><01:23:22.719><c> got</c><01:23:23.040><c> you</c><01:23:23.120><c> know</c><01:23:23.360><c> whole</c>
+
+01:23:23.750 --> 01:23:23.760 align:start position:0%
+uh and and they've got you know whole
+
+
+01:23:23.760 --> 01:23:28.709 align:start position:0%
+uh and and they've got you know whole
+range<01:23:23.960><c> of</c><01:23:24.120><c> prices</c><01:23:24.840><c> and</c><01:23:25.040><c> so</c>
+
+01:23:28.709 --> 01:23:28.719 align:start position:0%
+
+
+
+01:23:28.719 --> 01:23:31.390 align:start position:0%
+
+on<01:23:29.719><c> oh</c><01:23:29.920><c> yeah</c><01:23:30.080><c> I</c><01:23:30.159><c> should</c><01:23:30.320><c> have</c><01:23:30.480><c> mentioned</c><01:23:31.320><c> you</c>
+
+01:23:31.390 --> 01:23:31.400 align:start position:0%
+on oh yeah I should have mentioned you
+
+
+01:23:31.400 --> 01:23:33.709 align:start position:0%
+on oh yeah I should have mentioned you
+can<01:23:31.560><c> get</c><01:23:31.679><c> a</c><01:23:31.880><c> PDF</c><01:23:32.280><c> file</c><01:23:32.639><c> and</c><01:23:32.800><c> print</c><01:23:33.000><c> it</c><01:23:33.120><c> on</c><01:23:33.360><c> card</c>
+
+01:23:33.709 --> 01:23:33.719 align:start position:0%
+can get a PDF file and print it on card
+
+
+01:23:33.719 --> 01:23:38.149 align:start position:0%
+can get a PDF file and print it on card
+stock<01:23:34.400><c> and</c><01:23:34.560><c> fold</c><01:23:34.920><c> it</c><01:23:35.199><c> into</c><01:23:36.199><c> rber</c>
+
+01:23:38.149 --> 01:23:38.159 align:start position:0%
+stock and fold it into rber
+
+
+01:23:38.159 --> 01:23:40.629 align:start position:0%
+stock and fold it into rber
+pip<01:23:39.159><c> the</c><01:23:39.280><c> other</c><01:23:39.520><c> thing</c><01:23:39.760><c> that's</c><01:23:40.040><c> nice</c><01:23:40.239><c> to</c><01:23:40.400><c> know</c>
+
+01:23:40.629 --> 01:23:40.639 align:start position:0%
+pip the other thing that's nice to know
+
+
+01:23:40.639 --> 01:23:42.270 align:start position:0%
+pip the other thing that's nice to know
+is<01:23:40.800><c> once</c><01:23:40.960><c> you</c><01:23:41.080><c> get</c><01:23:41.199><c> your</c><01:23:41.400><c> raspberry</c><01:23:41.920><c> pie</c><01:23:42.120><c> it</c>
+
+01:23:42.270 --> 01:23:42.280 align:start position:0%
+is once you get your raspberry pie it
+
+
+01:23:42.280 --> 01:23:44.189 align:start position:0%
+is once you get your raspberry pie it
+comes<01:23:42.520><c> with</c><01:23:42.760><c> horrific</c><01:23:43.280><c> case</c><01:23:43.600><c> that's</c><01:23:43.800><c> one</c><01:23:44.000><c> I</c>
+
+01:23:44.189 --> 01:23:44.199 align:start position:0%
+comes with horrific case that's one I
+
+
+01:23:44.199 --> 01:23:46.669 align:start position:0%
+comes with horrific case that's one I
+use<01:23:44.520><c> it's</c><01:23:44.760><c> the</c><01:23:44.960><c> cardboard</c><01:23:45.480><c> box</c><01:23:45.760><c> that</c><01:23:45.840><c> it</c><01:23:46.000><c> comes</c>
+
+01:23:46.669 --> 01:23:46.679 align:start position:0%
+use it's the cardboard box that it comes
+
+
+01:23:46.679 --> 01:23:47.709 align:start position:0%
+use it's the cardboard box that it comes
+oh
+
+01:23:47.709 --> 01:23:47.719 align:start position:0%
+oh
+
+
+01:23:47.719 --> 01:23:50.830 align:start position:0%
+oh
+yeah<01:23:48.719><c> about</c><01:23:49.040><c> that</c><01:23:50.040><c> you</c><01:23:50.199><c> just</c><01:23:50.360><c> need</c><01:23:50.600><c> use</c>
+
+01:23:50.830 --> 01:23:50.840 align:start position:0%
+yeah about that you just need use
+
+
+01:23:50.840 --> 01:23:55.669 align:start position:0%
+yeah about that you just need use
+scissors<01:23:51.280><c> to</c><01:23:51.440><c> get</c><01:23:51.520><c> to</c><01:23:51.639><c> the</c><01:23:51.760><c> gpio</c><01:23:52.360><c> and</c>
+
+01:23:55.669 --> 01:23:55.679 align:start position:0%
+
+
+
+01:23:55.679 --> 01:23:58.629 align:start position:0%
+
+um<01:23:56.159><c> I've</c><01:23:56.360><c> recently</c><01:23:57.120><c> uh</c><01:23:57.679><c> sparked</c><01:23:58.120><c> an</c><01:23:58.280><c> interest</c>
+
+01:23:58.629 --> 01:23:58.639 align:start position:0%
+um I've recently uh sparked an interest
+
+
+01:23:58.639 --> 01:24:02.189 align:start position:0%
+um I've recently uh sparked an interest
+in<01:23:59.000><c> um</c><01:23:59.199><c> High</c><01:23:59.760><c> availability</c><01:24:00.760><c> um</c><01:24:01.600><c> in</c><01:24:01.760><c> terms</c><01:24:02.040><c> of</c>
+
+01:24:02.189 --> 01:24:02.199 align:start position:0%
+in um High availability um in terms of
+
+
+01:24:02.199 --> 01:24:04.990 align:start position:0%
+in um High availability um in terms of
+that<01:24:02.719><c> uh</c><01:24:03.480><c> I</c><01:24:03.600><c> never</c><01:24:04.040><c> afford</c><01:24:04.440><c> like</c><01:24:04.639><c> giant</c>
+
+01:24:04.990 --> 01:24:05.000 align:start position:0%
+that uh I never afford like giant
+
+
+01:24:05.000 --> 01:24:07.709 align:start position:0%
+that uh I never afford like giant
+servers<01:24:05.639><c> so</c><01:24:06.040><c> um</c><01:24:06.600><c> would</c><01:24:06.760><c> it</c><01:24:06.880><c> be</c><01:24:07.080><c> efficient</c><01:24:07.480><c> if</c><01:24:07.600><c> I</c>
+
+01:24:07.709 --> 01:24:07.719 align:start position:0%
+servers so um would it be efficient if I
+
+
+01:24:07.719 --> 01:24:09.910 align:start position:0%
+servers so um would it be efficient if I
+bought<01:24:08.199><c> like</c><01:24:08.679><c> you</c><01:24:08.800><c> know</c><01:24:09.320><c> three</c><01:24:09.520><c> or</c><01:24:09.679><c> four</c>
+
+01:24:09.910 --> 01:24:09.920 align:start position:0%
+bought like you know three or four
+
+
+01:24:09.920 --> 01:24:12.550 align:start position:0%
+bought like you know three or four
+Raspberry<01:24:10.520><c> Pi</c><01:24:10.960><c> put</c><01:24:11.159><c> a</c><01:24:11.320><c> web</c><01:24:11.560><c> server</c><01:24:12.120><c> on</c><01:24:12.320><c> all</c><01:24:12.440><c> of</c>
+
+01:24:12.550 --> 01:24:12.560 align:start position:0%
+Raspberry Pi put a web server on all of
+
+
+01:24:12.560 --> 01:24:15.270 align:start position:0%
+Raspberry Pi put a web server on all of
+them<01:24:12.960><c> and</c><01:24:13.199><c> maybe</c><01:24:13.639><c> had</c><01:24:13.840><c> something</c><01:24:14.280><c> like</c><01:24:14.679><c> um</c>
+
+01:24:15.270 --> 01:24:15.280 align:start position:0%
+them and maybe had something like um
+
+
+01:24:15.280 --> 01:24:19.790 align:start position:0%
+them and maybe had something like um
+Pacemaker<01:24:16.239><c> and</c><01:24:16.679><c> drvd</c><01:24:17.360><c> on</c><01:24:17.560><c> there</c>
+
+01:24:19.790 --> 01:24:19.800 align:start position:0%
+Pacemaker and drvd on there
+
+
+01:24:19.800 --> 01:24:21.709 align:start position:0%
+Pacemaker and drvd on there
+possible
+
+01:24:21.709 --> 01:24:21.719 align:start position:0%
+possible
+
+
+01:24:21.719 --> 01:24:25.030 align:start position:0%
+possible
+I<01:24:22.719><c> a</c><01:24:22.880><c> raspberry</c><01:24:23.360><c> pie</c><01:24:23.679><c> is</c><01:24:23.880><c> about</c><01:24:24.159><c> like</c><01:24:24.400><c> a</c><01:24:24.600><c> 300</c>
+
+01:24:25.030 --> 01:24:25.040 align:start position:0%
+I a raspberry pie is about like a 300
+
+
+01:24:25.040 --> 01:24:26.830 align:start position:0%
+I a raspberry pie is about like a 300
+MHz<01:24:25.600><c> pin</c>
+
+01:24:26.830 --> 01:24:26.840 align:start position:0%
+MHz pin
+
+
+01:24:26.840 --> 01:24:30.110 align:start position:0%
+MHz pin
+2<01:24:27.840><c> that's</c><01:24:28.199><c> the</c><01:24:28.639><c> magnitude</c><01:24:29.080><c> of</c>
+
+01:24:30.110 --> 01:24:30.120 align:start position:0%
+2 that's the magnitude of
+
+
+01:24:30.120 --> 01:24:32.470 align:start position:0%
+2 that's the magnitude of
+performance<01:24:31.120><c> and</c><01:24:31.440><c> but</c><01:24:31.639><c> I</c><01:24:31.760><c> don't</c><01:24:31.960><c> really</c><01:24:32.159><c> know</c>
+
+01:24:32.470 --> 01:24:32.480 align:start position:0%
+performance and but I don't really know
+
+
+01:24:32.480 --> 01:24:33.709 align:start position:0%
+performance and but I don't really know
+how<01:24:32.560><c> to</c><01:24:32.719><c> answer</c><01:24:33.000><c> your</c><01:24:33.199><c> question</c><01:24:33.480><c> I</c><01:24:33.560><c> think</c><01:24:33.639><c> it</c>
+
+01:24:33.709 --> 01:24:33.719 align:start position:0%
+how to answer your question I think it
+
+
+01:24:33.719 --> 01:24:35.790 align:start position:0%
+how to answer your question I think it
+would<01:24:33.880><c> easily</c><01:24:34.199><c> run</c><01:24:34.520><c> I</c><01:24:34.560><c> mean</c><01:24:35.320><c> I've</c><01:24:35.440><c> run</c><01:24:35.639><c> web</c>
+
+01:24:35.790 --> 01:24:35.800 align:start position:0%
+would easily run I mean I've run web
+
+
+01:24:35.800 --> 01:24:37.709 align:start position:0%
+would easily run I mean I've run web
+servers<01:24:36.080><c> on</c><01:24:36.239><c> it</c><01:24:36.440><c> easily</c><01:24:36.679><c> runs</c><01:24:36.880><c> the</c><01:24:37.000><c> web</c><01:24:37.199><c> server</c>
+
+01:24:37.709 --> 01:24:37.719 align:start position:0%
+servers on it easily runs the web server
+
+
+01:24:37.719 --> 01:24:40.830 align:start position:0%
+servers on it easily runs the web server
+and<01:24:38.199><c> the</c><01:24:38.440><c> I</c><01:24:38.520><c> mean</c><01:24:38.760><c> drbd</c><01:24:39.679><c> and</c><01:24:39.880><c> P</c><01:24:40.080><c> Pier</c><01:24:40.600><c> it's</c><01:24:40.679><c> not</c>
+
+01:24:40.830 --> 01:24:40.840 align:start position:0%
+and the I mean drbd and P Pier it's not
+
+
+01:24:40.840 --> 01:24:42.669 align:start position:0%
+and the I mean drbd and P Pier it's not
+like<01:24:40.960><c> they're</c><01:24:41.600><c> constrained</c><01:24:42.159><c> performance-</c>
+
+01:24:42.669 --> 01:24:42.679 align:start position:0%
+like they're constrained performance-
+
+
+01:24:42.679 --> 01:24:44.590 align:start position:0%
+like they're constrained performance-
+wise<01:24:43.480><c> um</c><01:24:43.600><c> so</c><01:24:43.840><c> actually</c><01:24:44.040><c> a</c><01:24:44.119><c> lot</c><01:24:44.239><c> of</c><01:24:44.320><c> people</c><01:24:44.520><c> in</c>
+
+01:24:44.590 --> 01:24:44.600 align:start position:0%
+wise um so actually a lot of people in
+
+
+01:24:44.600 --> 01:24:46.229 align:start position:0%
+wise um so actually a lot of people in
+the<01:24:44.719><c> Raspberry</c><01:24:45.159><c> Pi</c><01:24:45.320><c> Community</c><01:24:45.760><c> have</c><01:24:45.920><c> been</c>
+
+01:24:46.229 --> 01:24:46.239 align:start position:0%
+the Raspberry Pi Community have been
+
+
+01:24:46.239 --> 01:24:49.550 align:start position:0%
+the Raspberry Pi Community have been
+experimenting<01:24:47.080><c> with</c><01:24:48.080><c> I</c><01:24:48.159><c> have</c><01:24:48.320><c> a</c><01:24:48.360><c> $100</c><01:24:49.320><c> I</c><01:24:49.400><c> could</c>
+
+01:24:49.550 --> 01:24:49.560 align:start position:0%
+experimenting with I have a $100 I could
+
+
+01:24:49.560 --> 01:24:51.430 align:start position:0%
+experimenting with I have a $100 I could
+get<01:24:49.679><c> one</c><01:24:49.840><c> Raspberry</c><01:24:50.320><c> Pi</c><01:24:50.480><c> and</c><01:24:50.760><c> a</c><01:24:50.840><c> lot</c><01:24:50.960><c> of</c><01:24:51.080><c> pizza</c>
+
+01:24:51.430 --> 01:24:51.440 align:start position:0%
+get one Raspberry Pi and a lot of pizza
+
+
+01:24:51.440 --> 01:24:54.950 align:start position:0%
+get one Raspberry Pi and a lot of pizza
+or<01:24:51.560><c> I</c><01:24:51.639><c> could</c><01:24:51.800><c> get</c><01:24:51.960><c> four</c><01:24:52.199><c> raspberry</c><01:24:52.760><c> pies</c><01:24:53.760><c> so</c>
+
+01:24:54.950 --> 01:24:54.960 align:start position:0%
+or I could get four raspberry pies so
+
+
+01:24:54.960 --> 01:24:56.629 align:start position:0%
+or I could get four raspberry pies so
+um<01:24:55.360><c> I</c><01:24:55.440><c> think</c><01:24:55.560><c> you'll</c><01:24:55.760><c> find</c><01:24:56.000><c> if</c><01:24:56.119><c> you</c><01:24:56.280><c> if</c><01:24:56.360><c> you</c><01:24:56.480><c> dig</c>
+
+01:24:56.629 --> 01:24:56.639 align:start position:0%
+um I think you'll find if you if you dig
+
+
+01:24:56.639 --> 01:24:58.109 align:start position:0%
+um I think you'll find if you if you dig
+around<01:24:56.880><c> the</c><01:24:56.960><c> community</c><01:24:57.320><c> looking</c><01:24:57.520><c> for</c><01:24:57.920><c> people</c>
+
+01:24:58.109 --> 01:24:58.119 align:start position:0%
+around the community looking for people
+
+
+01:24:58.119 --> 01:25:00.550 align:start position:0%
+around the community looking for people
+doing<01:24:58.360><c> stuff</c><01:24:58.560><c> with</c><01:24:58.679><c> clustering</c><01:24:59.360><c> and</c><01:25:00.080><c> uh</c><01:25:00.400><c> with</c>
+
+01:25:00.550 --> 01:25:00.560 align:start position:0%
+doing stuff with clustering and uh with
+
+
+01:25:00.560 --> 01:25:01.629 align:start position:0%
+doing stuff with clustering and uh with
+the<01:25:00.679><c> pie</c><01:25:00.920><c> you'll</c><01:25:01.040><c> find</c><01:25:01.199><c> there's</c><01:25:01.320><c> a</c><01:25:01.400><c> lot</c><01:25:01.480><c> of</c>
+
+01:25:01.629 --> 01:25:01.639 align:start position:0%
+the pie you'll find there's a lot of
+
+
+01:25:01.639 --> 01:25:02.910 align:start position:0%
+the pie you'll find there's a lot of
+stuff<01:25:01.840><c> there</c><01:25:02.040><c> people</c><01:25:02.280><c> have</c><01:25:02.480><c> done</c><01:25:02.679><c> you</c><01:25:02.760><c> know</c>
+
+01:25:02.910 --> 01:25:02.920 align:start position:0%
+stuff there people have done you know
+
+
+01:25:02.920 --> 01:25:05.709 align:start position:0%
+stuff there people have done you know
+MPI<01:25:03.480><c> bolf</c><01:25:04.000><c> cluster</c><01:25:04.440><c> type</c><01:25:04.719><c> stuff</c><01:25:05.480><c> yeah</c><01:25:05.600><c> I've</c>
+
+01:25:05.709 --> 01:25:05.719 align:start position:0%
+MPI bolf cluster type stuff yeah I've
+
+
+01:25:05.719 --> 01:25:09.229 align:start position:0%
+MPI bolf cluster type stuff yeah I've
+seen<01:25:05.880><c> a</c><01:25:06.080><c> 16</c><01:25:06.639><c> Pi</c><01:25:06.960><c> bolf</c><01:25:07.480><c> cluster</c><01:25:08.440><c> um</c><01:25:08.920><c> so</c><01:25:09.040><c> if</c><01:25:09.119><c> we</c>
+
+01:25:09.229 --> 01:25:09.239 align:start position:0%
+seen a 16 Pi bolf cluster um so if we
+
+
+01:25:09.239 --> 01:25:13.510 align:start position:0%
+seen a 16 Pi bolf cluster um so if we
+can<01:25:09.320><c> get</c><01:25:09.440><c> 16</c><01:25:09.840><c> pies</c><01:25:10.560><c> this</c><01:25:10.920><c> Saturday</c><01:25:11.920><c> oh</c><01:25:12.199><c> it's</c><01:25:12.360><c> on</c>
+
+01:25:13.510 --> 01:25:13.520 align:start position:0%
+can get 16 pies this Saturday oh it's on
+
+
+01:25:13.520 --> 01:25:15.709 align:start position:0%
+can get 16 pies this Saturday oh it's on
+yeah<01:25:14.520><c> I</c><01:25:14.600><c> think</c><01:25:14.719><c> it's</c><01:25:14.840><c> a</c><01:25:15.000><c> really</c><01:25:15.159><c> good</c><01:25:15.320><c> platform</c>
+
+01:25:15.709 --> 01:25:15.719 align:start position:0%
+yeah I think it's a really good platform
+
+
+01:25:15.719 --> 01:25:17.990 align:start position:0%
+yeah I think it's a really good platform
+for<01:25:15.920><c> playing</c><01:25:16.440><c> with</c><01:25:17.000><c> um</c><01:25:17.400><c> stuff</c><01:25:17.639><c> that</c><01:25:17.719><c> would</c><01:25:17.840><c> be</c>
+
+01:25:17.990 --> 01:25:18.000 align:start position:0%
+for playing with um stuff that would be
+
+
+01:25:18.000 --> 01:25:19.709 align:start position:0%
+for playing with um stuff that would be
+very<01:25:18.239><c> expensive</c><01:25:18.719><c> normally</c><01:25:19.080><c> for</c><01:25:19.199><c> you</c><01:25:19.320><c> to</c><01:25:19.440><c> do</c>
+
+01:25:19.709 --> 01:25:19.719 align:start position:0%
+very expensive normally for you to do
+
+
+01:25:19.719 --> 01:25:21.510 align:start position:0%
+very expensive normally for you to do
+you<01:25:19.800><c> know</c><01:25:20.040><c> let's</c><01:25:20.239><c> bring</c><01:25:20.480><c> up</c><01:25:20.760><c> 10</c><01:25:21.040><c> servers</c><01:25:21.360><c> and</c>
+
+01:25:21.510 --> 01:25:21.520 align:start position:0%
+you know let's bring up 10 servers and
+
+
+01:25:21.520 --> 01:25:23.270 align:start position:0%
+you know let's bring up 10 servers and
+try<01:25:21.840><c> out</c><01:25:22.199><c> you</c><01:25:22.280><c> know</c><01:25:22.400><c> making</c><01:25:22.600><c> a</c><01:25:22.719><c> cluster</c><01:25:23.040><c> out</c><01:25:23.119><c> of</c>
+
+01:25:23.270 --> 01:25:23.280 align:start position:0%
+try out you know making a cluster out of
+
+
+01:25:23.280 --> 01:25:25.149 align:start position:0%
+try out you know making a cluster out of
+it<01:25:23.920><c> you</c><01:25:24.000><c> can</c><01:25:24.159><c> get</c><01:25:24.360><c> 10</c><01:25:24.520><c> raspberry</c><01:25:24.840><c> pies</c>
+
+01:25:25.149 --> 01:25:25.159 align:start position:0%
+it you can get 10 raspberry pies
+
+
+01:25:25.159 --> 01:25:26.310 align:start position:0%
+it you can get 10 raspberry pies
+together<01:25:25.360><c> between</c><01:25:25.560><c> you</c><01:25:25.639><c> and</c><01:25:25.719><c> your</c><01:25:25.840><c> friends</c>
+
+01:25:26.310 --> 01:25:26.320 align:start position:0%
+together between you and your friends
+
+
+01:25:26.320 --> 01:25:28.189 align:start position:0%
+together between you and your friends
+pretty<01:25:26.520><c> easily</c><01:25:27.400><c> whenever</c><01:25:27.719><c> I</c><01:25:27.840><c> think</c><01:25:27.960><c> it</c><01:25:28.080><c> might</c>
+
+01:25:28.189 --> 01:25:28.199 align:start position:0%
+pretty easily whenever I think it might
+
+
+01:25:28.199 --> 01:25:30.350 align:start position:0%
+pretty easily whenever I think it might
+be<01:25:28.360><c> overfill</c><01:25:29.199><c> use</c><01:25:29.360><c> a</c><01:25:29.520><c> Raspberry</c><01:25:29.960><c> Pi</c><01:25:30.159><c> where</c><01:25:30.280><c> I</c>
+
+01:25:30.350 --> 01:25:30.360 align:start position:0%
+be overfill use a Raspberry Pi where I
+
+
+01:25:30.360 --> 01:25:32.550 align:start position:0%
+be overfill use a Raspberry Pi where I
+could<01:25:30.480><c> use</c><01:25:30.600><c> a</c><01:25:30.840><c> microcontroller</c><01:25:31.840><c> I</c><01:25:32.000><c> just</c><01:25:32.280><c> I</c><01:25:32.400><c> run</c>
+
+01:25:32.550 --> 01:25:32.560 align:start position:0%
+could use a microcontroller I just I run
+
+
+01:25:32.560 --> 01:25:34.550 align:start position:0%
+could use a microcontroller I just I run
+a<01:25:32.679><c> web</c><01:25:32.880><c> server</c><01:25:33.199><c> on</c><01:25:33.360><c> the</c><01:25:33.520><c> P</c><01:25:33.840><c> also</c><01:25:34.199><c> and</c><01:25:34.280><c> then</c><01:25:34.440><c> I've</c>
+
+01:25:34.550 --> 01:25:34.560 align:start position:0%
+a web server on the P also and then I've
+
+
+01:25:34.560 --> 01:25:35.629 align:start position:0%
+a web server on the P also and then I've
+got<01:25:34.639><c> a</c><01:25:34.760><c> web</c><01:25:34.960><c> interface</c><01:25:35.360><c> to</c><01:25:35.480><c> my</c>
+
+01:25:35.629 --> 01:25:35.639 align:start position:0%
+got a web interface to my
+
+
+01:25:35.639 --> 01:25:37.470 align:start position:0%
+got a web interface to my
+microcontroller<01:25:36.320><c> so</c><01:25:36.480><c> from</c><01:25:36.719><c> anywhere</c>
+
+01:25:37.470 --> 01:25:37.480 align:start position:0%
+microcontroller so from anywhere
+
+
+01:25:37.480 --> 01:25:38.990 align:start position:0%
+microcontroller so from anywhere
+anywhere<01:25:37.760><c> in</c><01:25:37.880><c> the</c><01:25:38.000><c> building</c><01:25:38.400><c> or</c><01:25:38.600><c> or</c><01:25:38.719><c> anywhere</c>
+
+01:25:38.990 --> 01:25:39.000 align:start position:0%
+anywhere in the building or or anywhere
+
+
+01:25:39.000 --> 01:25:40.790 align:start position:0%
+anywhere in the building or or anywhere
+out<01:25:39.239><c> I</c><01:25:39.320><c> can</c><01:25:39.480><c> actually</c><01:25:39.920><c> go</c><01:25:40.119><c> to</c><01:25:40.320><c> look</c><01:25:40.440><c> at</c><01:25:40.600><c> that</c>
+
+01:25:40.790 --> 01:25:40.800 align:start position:0%
+out I can actually go to look at that
+
+
+01:25:40.800 --> 01:25:42.709 align:start position:0%
+out I can actually go to look at that
+device<01:25:41.440><c> see</c><01:25:41.679><c> how</c><01:25:41.800><c> it's</c><01:25:42.000><c> doing</c><01:25:42.320><c> and</c><01:25:42.480><c> maybe</c>
+
+01:25:42.709 --> 01:25:42.719 align:start position:0%
+device see how it's doing and maybe
+
+
+01:25:42.719 --> 01:25:44.229 align:start position:0%
+device see how it's doing and maybe
+change<01:25:42.960><c> a</c><01:25:43.119><c> parameter</c><01:25:43.600><c> something</c><01:25:43.800><c> like</c><01:25:43.960><c> that</c>
+
+01:25:44.229 --> 01:25:44.239 align:start position:0%
+change a parameter something like that
+
+
+01:25:44.239 --> 01:25:46.669 align:start position:0%
+change a parameter something like that
+so<01:25:44.440><c> running</c><01:25:44.760><c> running</c><01:25:44.960><c> a</c><01:25:45.080><c> web</c><01:25:45.239><c> server</c><01:25:45.679><c> again</c>
+
+01:25:46.669 --> 01:25:46.679 align:start position:0%
+so running running a web server again
+
+
+01:25:46.679 --> 01:25:49.550 align:start position:0%
+so running running a web server again
+fairly<01:25:46.960><c> low</c><01:25:47.239><c> per</c><01:25:47.679><c> performance</c><01:25:48.360><c> Ser</c><01:25:48.960><c> gives</c><01:25:49.159><c> you</c>
+
+01:25:49.550 --> 01:25:49.560 align:start position:0%
+fairly low per performance Ser gives you
+
+
+01:25:49.560 --> 01:25:51.350 align:start position:0%
+fairly low per performance Ser gives you
+gives<01:25:49.679><c> you</c><01:25:49.880><c> this</c><01:25:50.400><c> remote</c><01:25:50.719><c> access</c><01:25:50.960><c> although</c><01:25:51.239><c> B</c>
+
+01:25:51.350 --> 01:25:51.360 align:start position:0%
+gives you this remote access although B
+
+
+01:25:51.360 --> 01:26:03.189 align:start position:0%
+gives you this remote access although B
+andc<01:25:51.800><c> also</c>
+
+01:26:03.189 --> 01:26:03.199 align:start position:0%
+
+
+
+01:26:03.199 --> 01:26:04.750 align:start position:0%
+
+couple<01:26:03.400><c> of</c><01:26:03.560><c> questions</c><01:26:03.920><c> from</c><01:26:04.040><c> a</c><01:26:04.199><c> media</c><01:26:04.480><c> center</c>
+
+01:26:04.750 --> 01:26:04.760 align:start position:0%
+couple of questions from a media center
+
+
+01:26:04.760 --> 01:26:08.310 align:start position:0%
+couple of questions from a media center
+point<01:26:04.960><c> of</c><01:26:05.080><c> view</c><01:26:05.719><c> um</c><01:26:05.920><c> does</c><01:26:06.119><c> HDMI</c><01:26:06.960><c> do</c><01:26:07.239><c> audio</c><01:26:08.080><c> over</c>
+
+01:26:08.310 --> 01:26:08.320 align:start position:0%
+point of view um does HDMI do audio over
+
+
+01:26:08.320 --> 01:26:10.709 align:start position:0%
+point of view um does HDMI do audio over
+the<01:26:08.440><c> HDMI</c><01:26:08.960><c> cable</c><01:26:09.719><c> yes</c><01:26:09.840><c> it</c><01:26:10.000><c> does</c><01:26:10.239><c> and</c><01:26:10.480><c> does</c><01:26:10.600><c> it</c>
+
+01:26:10.709 --> 01:26:10.719 align:start position:0%
+the HDMI cable yes it does and does it
+
+
+01:26:10.719 --> 01:26:14.870 align:start position:0%
+the HDMI cable yes it does and does it
+also<01:26:10.960><c> do</c><01:26:11.280><c> the</c><01:26:11.639><c> c</c><01:26:12.239><c> c</c><01:26:12.880><c> so</c><01:26:13.040><c> you</c><01:26:13.159><c> can</c><01:26:13.440><c> control</c><01:26:14.440><c> from</c>
+
+01:26:14.870 --> 01:26:14.880 align:start position:0%
+also do the c c so you can control from
+
+
+01:26:14.880 --> 01:26:20.709 align:start position:0%
+also do the c c so you can control from
+R<01:26:15.880><c> don't</c>
+
+01:26:20.709 --> 01:26:20.719 align:start position:0%
+
+
+
+01:26:20.719 --> 01:26:37.229 align:start position:0%
+
+it<01:26:21.719><c> does</c><01:26:21.840><c> it</c><01:26:22.000><c> have</c><01:26:22.159><c> INF</c><01:26:22.920><c> receiver</c>
+
+01:26:37.229 --> 01:26:37.239 align:start position:0%
+
+
+
+01:26:37.239 --> 01:26:39.590 align:start position:0%
+
+the<01:26:37.360><c> way</c><01:26:37.520><c> that</c><01:26:37.719><c> CC</c><01:26:38.400><c> works</c><01:26:38.800><c> is</c><01:26:38.960><c> on</c><01:26:39.159><c> the</c><01:26:39.280><c> user</c>
+
+01:26:39.590 --> 01:26:39.600 align:start position:0%
+the way that CC works is on the user
+
+
+01:26:39.600 --> 01:26:43.030 align:start position:0%
+the way that CC works is on the user
+remote<01:26:39.920><c> control</c><01:26:40.199><c> for</c><01:26:40.360><c> your</c><01:26:40.520><c> TV</c><01:26:41.520><c> so</c><01:26:41.639><c> you</c><01:26:42.520><c> TV</c>
+
+01:26:43.030 --> 01:26:43.040 align:start position:0%
+remote control for your TV so you TV
+
+
+01:26:43.040 --> 01:26:47.709 align:start position:0%
+remote control for your TV so you TV
+your<01:26:43.960><c> on</c><01:26:44.080><c> your</c><01:26:44.560><c> hand</c><01:26:45.560><c> the</c><01:26:45.719><c> TV</c><01:26:46.320><c> receives</c><01:26:46.719><c> the</c><01:26:46.880><c> UR</c>
+
+01:26:47.709 --> 01:26:47.719 align:start position:0%
+your on your hand the TV receives the UR
+
+
+01:26:47.719 --> 01:26:51.910 align:start position:0%
+your on your hand the TV receives the UR
+IR<01:26:48.000><c> commands</c><01:26:48.840><c> s</c><01:26:49.159><c> over</c><01:26:49.360><c> HDMI</c><01:26:50.119><c> back</c><01:26:50.679><c> to</c><01:26:51.679><c> uh</c><01:26:51.800><c> the</c>
+
+01:26:51.910 --> 01:26:51.920 align:start position:0%
+IR commands s over HDMI back to uh the
+
+
+01:26:51.920 --> 01:26:54.350 align:start position:0%
+IR commands s over HDMI back to uh the
+Raspberry<01:26:52.560><c> Pi</c><01:26:53.560><c> and</c><01:26:53.679><c> so</c><01:26:53.800><c> you</c><01:26:53.880><c> don't</c><01:26:54.040><c> need</c>
+
+01:26:54.350 --> 01:26:54.360 align:start position:0%
+Raspberry Pi and so you don't need
+
+
+01:26:54.360 --> 01:26:56.910 align:start position:0%
+Raspberry Pi and so you don't need
+special<01:26:55.119><c> Hardware</c><01:26:55.760><c> on</c><01:26:55.880><c> the</c>
+
+01:26:56.910 --> 01:26:56.920 align:start position:0%
+special Hardware on the
+
+
+01:26:56.920 --> 01:26:59.590 align:start position:0%
+special Hardware on the
+pie<01:26:57.920><c> it's</c><01:26:58.080><c> already</c><01:26:58.320><c> in</c><01:26:58.480><c> there</c><01:26:58.600><c> you</c>
+
+01:26:59.590 --> 01:26:59.600 align:start position:0%
+pie it's already in there you
+
+
+01:26:59.600 --> 01:27:06.790 align:start position:0%
+pie it's already in there you
+know<01:27:00.600><c> so</c><01:27:00.760><c> there's</c><01:27:01.000><c> no</c><01:27:01.199><c> problem</c><01:27:01.480><c> with</c>
+
+01:27:06.790 --> 01:27:06.800 align:start position:0%
+
+
+
+01:27:06.800 --> 01:27:18.870 align:start position:0%
+
+it<01:27:07.800><c> someone</c><01:27:08.040><c> else</c><01:27:08.320><c> down</c>
+
+01:27:18.870 --> 01:27:18.880 align:start position:0%
+
+
+
+01:27:18.880 --> 01:27:21.550 align:start position:0%
+
+there<01:27:19.880><c> oh</c><01:27:20.199><c> yeah</c>
+
+01:27:21.550 --> 01:27:21.560 align:start position:0%
+there oh yeah
+
+
+01:27:21.560 --> 01:27:25.669 align:start position:0%
+there oh yeah
+so<01:27:22.600><c> so</c><01:27:23.600><c> how</c><01:27:23.719><c> many</c><01:27:23.880><c> people</c><01:27:24.360><c> don't</c>
+
+01:27:25.669 --> 01:27:25.679 align:start position:0%
+so so how many people don't
+
+
+01:27:25.679 --> 01:27:30.229 align:start position:0%
+so so how many people don't
+like<01:27:26.679><c> the</c><01:27:27.000><c> universal</c><01:27:27.600><c> constant</c><01:27:28.560><c> Pi</c><01:27:29.560><c> here</c>
+
+01:27:30.229 --> 01:27:30.239 align:start position:0%
+like the universal constant Pi here
+
+
+01:27:30.239 --> 01:27:33.750 align:start position:0%
+like the universal constant Pi here
+anybody<01:27:31.159><c> anybody</c><01:27:31.520><c> prefer</c>
+
+01:27:33.750 --> 01:27:33.760 align:start position:0%
+anybody anybody prefer
+
+
+01:27:33.760 --> 01:27:37.629 align:start position:0%
+anybody anybody prefer
+to<01:27:34.760><c> to</c><01:27:35.199><c> to</c><01:27:35.440><c> rules</c><01:27:36.040><c> so</c><01:27:36.239><c> you</c><01:27:36.360><c> keep</c><01:27:36.520><c> seeing</c><01:27:36.800><c> two</c><01:27:37.119><c> Pi</c>
+
+01:27:37.629 --> 01:27:37.639 align:start position:0%
+to to to rules so you keep seeing two Pi
+
+
+01:27:37.639 --> 01:27:39.990 align:start position:0%
+to to to rules so you keep seeing two Pi
+everywhere<01:27:38.560><c> well</c><01:27:38.960><c> it</c><01:27:39.080><c> turns</c><01:27:39.320><c> out</c><01:27:39.560><c> we</c><01:27:39.719><c> we</c><01:27:39.840><c> got</c>
+
+01:27:39.990 --> 01:27:40.000 align:start position:0%
+everywhere well it turns out we we got
+
+
+01:27:40.000 --> 01:27:42.910 align:start position:0%
+everywhere well it turns out we we got
+it<01:27:40.159><c> wrong</c><01:27:40.400><c> to</c><01:27:40.600><c> begin</c><01:27:40.880><c> with</c><01:27:41.520><c> that</c><01:27:41.760><c> the</c><01:27:41.960><c> constant</c>
+
+01:27:42.910 --> 01:27:42.920 align:start position:0%
+it wrong to begin with that the constant
+
+
+01:27:42.920 --> 01:27:45.430 align:start position:0%
+it wrong to begin with that the constant
+is<01:27:43.199><c> two</c><01:27:43.560><c> times</c>
+
+01:27:45.430 --> 01:27:45.440 align:start position:0%
+is two times
+
+
+01:27:45.440 --> 01:27:49.590 align:start position:0%
+is two times
+3.1415926<01:27:46.440><c> Etc</c><01:27:47.400><c> it's</c><01:27:47.840><c> to</c><01:27:48.760><c> so</c><01:27:49.040><c> the</c><01:27:49.199><c> constant</c>
+
+01:27:49.590 --> 01:27:49.600 align:start position:0%
+3.1415926 Etc it's to so the constant
+
+
+01:27:49.600 --> 01:27:51.390 align:start position:0%
+3.1415926 Etc it's to so the constant
+tow<01:27:50.040><c> is</c><01:27:50.159><c> really</c><01:27:50.360><c> what</c><01:27:50.480><c> we</c><01:27:50.560><c> should</c><01:27:50.679><c> be</c><01:27:50.719><c> using</c><01:27:51.239><c> so</c>
+
+01:27:51.390 --> 01:27:51.400 align:start position:0%
+tow is really what we should be using so
+
+
+01:27:51.400 --> 01:27:52.990 align:start position:0%
+tow is really what we should be using so
+when<01:27:51.480><c> I</c><01:27:51.600><c> was</c><01:27:51.719><c> using</c><01:27:52.000><c> two</c><01:27:52.239><c> raspberry</c><01:27:52.639><c> pies</c><01:27:52.920><c> I</c>
+
+01:27:52.990 --> 01:27:53.000 align:start position:0%
+when I was using two raspberry pies I
+
+
+01:27:53.000 --> 01:27:57.149 align:start position:0%
+when I was using two raspberry pies I
+said<01:27:53.280><c> great</c><01:27:53.520><c> it's</c><01:27:53.639><c> a</c><01:27:53.800><c> raspberry</c>
+
+01:27:57.149 --> 01:27:57.159 align:start position:0%
+
+
+
+01:27:57.159 --> 01:28:00.790 align:start position:0%
+
+tow
+
+01:28:00.790 --> 01:28:00.800 align:start position:0%
+
+
+
+01:28:00.800 --> 01:28:04.270 align:start position:0%
+
+can't<01:28:01.800><c> okay</c><01:28:02.000><c> and</c><01:28:02.320><c> so</c><01:28:02.600><c> my</c><01:28:02.960><c> real</c><01:28:03.320><c> question</c><01:28:04.040><c> is</c>
+
+01:28:04.270 --> 01:28:04.280 align:start position:0%
+can't okay and so my real question is
+
+
+01:28:04.280 --> 01:28:15.390 align:start position:0%
+can't okay and so my real question is
+does<01:28:04.520><c> anyone</c><01:28:05.119><c> know</c><01:28:05.639><c> if</c><01:28:05.840><c> the</c><01:28:06.040><c> raspberry</c><01:28:06.600><c> piie</c>
+
+01:28:15.390 --> 01:28:15.400 align:start position:0%
+
+
+
+01:28:15.400 --> 01:28:18.189 align:start position:0%
+
+supp<01:28:16.400><c> I</c><01:28:16.480><c> never</c><01:28:16.639><c> pronounced</c>
+
+01:28:18.189 --> 01:28:18.199 align:start position:0%
+supp I never pronounced
+
+
+01:28:18.199 --> 01:28:24.510 align:start position:0%
+supp I never pronounced
+it<01:28:19.199><c> Bo</c><01:28:20.119><c> um</c><01:28:20.760><c> good</c><01:28:21.400><c> question</c><01:28:22.400><c> um</c>
+
+01:28:24.510 --> 01:28:24.520 align:start position:0%
+it Bo um good question um
+
+
+01:28:24.520 --> 01:28:31.109 align:start position:0%
+it Bo um good question um
+I<01:28:24.639><c> don't</c><01:28:24.840><c> know</c><01:28:25.639><c> I</c><01:28:25.800><c> doubt</c><01:28:26.040><c> it</c><01:28:26.760><c> I</c><01:28:26.920><c> think</c>
+
+01:28:31.109 --> 01:28:31.119 align:start position:0%
+
+
+
+01:28:31.119 --> 01:28:33.750 align:start position:0%
+
+is<01:28:32.119><c> there's</c><01:28:32.320><c> a</c><01:28:32.639><c> really</c><01:28:32.960><c> powerful</c><01:28:33.400><c> system</c>
+
+01:28:33.750 --> 01:28:33.760 align:start position:0%
+is there's a really powerful system
+
+
+01:28:33.760 --> 01:28:34.910 align:start position:0%
+is there's a really powerful system
+called<01:28:33.960><c> Berry</c>
+
+01:28:34.910 --> 01:28:34.920 align:start position:0%
+called Berry
+
+
+01:28:34.920 --> 01:28:38.590 align:start position:0%
+called Berry
+Boot<01:28:35.920><c> and</c><01:28:36.119><c> I</c><01:28:36.440><c> don't</c><01:28:36.679><c> know</c><01:28:36.880><c> whether</c><01:28:37.400><c> that</c><01:28:38.239><c> ties</c>
+
+01:28:38.590 --> 01:28:38.600 align:start position:0%
+Boot and I don't know whether that ties
+
+
+01:28:38.600 --> 01:28:47.709 align:start position:0%
+Boot and I don't know whether that ties
+in<01:28:39.400><c> to</c><01:28:39.560><c> a</c>
+
+01:28:47.709 --> 01:28:47.719 align:start position:0%
+
+
+
+01:28:47.719 --> 01:28:53.350 align:start position:0%
+
+px<01:28:48.719><c> run</c><01:28:48.880><c> a</c><01:28:49.000><c> simple</c><01:28:49.280><c> tfp</c><01:28:50.280><c> server</c><01:28:51.480><c> can</c><01:28:52.480><c> uh</c><01:28:52.600><c> OT</c><01:28:53.119><c> can</c>
+
+01:28:53.350 --> 01:28:53.360 align:start position:0%
+px run a simple tfp server can uh OT can
+
+
+01:28:53.360 --> 01:28:59.229 align:start position:0%
+px run a simple tfp server can uh OT can
+run<01:28:54.280><c> tftp</c><01:28:55.280><c> to</c><01:28:56.080><c> fetch</c><01:28:57.080><c> system</c><01:28:57.480><c> off</c><01:28:57.679><c> of</c><01:28:57.840><c> a</c><01:28:58.000><c> simple</c>
+
+01:28:59.229 --> 01:28:59.239 align:start position:0%
+run tftp to fetch system off of a simple
+
+
+01:28:59.239 --> 01:29:02.350 align:start position:0%
+run tftp to fetch system off of a simple
+server<01:29:00.239><c> but</c><01:29:00.880><c> that's</c><01:29:01.520><c> I</c><01:29:01.639><c> think</c><01:29:01.880><c> as</c><01:29:02.000><c> I</c>
+
+01:29:02.350 --> 01:29:02.360 align:start position:0%
+server but that's I think as I
+
+
+01:29:02.360 --> 01:29:04.830 align:start position:0%
+server but that's I think as I
+understand<01:29:02.480><c> it</c><01:29:02.840><c> different</c><01:29:03.840><c> alen</c><01:29:04.280><c> says</c><01:29:04.600><c> he</c>
+
+01:29:04.830 --> 01:29:04.840 align:start position:0%
+understand it different alen says he
+
+
+01:29:04.840 --> 01:29:08.910 align:start position:0%
+understand it different alen says he
+just<01:29:05.280><c> consulted</c><01:29:05.760><c> the</c><01:29:05.920><c> FAQ</c><01:29:06.560><c> which</c>
+
+01:29:08.910 --> 01:29:08.920 align:start position:0%
+
+
+
+01:29:08.920 --> 01:29:10.750 align:start position:0%
+
+says
+
+01:29:10.750 --> 01:29:10.760 align:start position:0%
+says
+
+
+01:29:10.760 --> 01:29:14.270 align:start position:0%
+says
+than<01:29:11.760><c> not</c><01:29:12.000><c> this</c>
+
+01:29:14.270 --> 01:29:14.280 align:start position:0%
+
+
+
+01:29:14.280 --> 01:29:31.669 align:start position:0%
+
+week<01:29:15.280><c> so</c><01:29:15.480><c> can</c><01:29:15.600><c> you</c><01:29:15.760><c> plug</c><01:29:15.960><c> in</c><01:29:16.040><c> a</c><01:29:16.119><c> Bluetooth</c>
+
+01:29:31.669 --> 01:29:31.679 align:start position:0%
+
+
+
+01:29:31.679 --> 01:29:34.510 align:start position:0%
+
+what<01:29:31.840><c> was</c><01:29:31.960><c> the</c><01:29:32.119><c> name</c><01:29:32.280><c> of</c><01:29:32.480><c> the</c><01:29:33.040><c> more</c><01:29:34.040><c> oh</c><01:29:34.400><c> yeah</c>
+
+01:29:34.510 --> 01:29:34.520 align:start position:0%
+what was the name of the more oh yeah
+
+
+01:29:34.520 --> 01:29:36.229 align:start position:0%
+what was the name of the more oh yeah
+someone<01:29:34.840><c> asked</c><01:29:35.159><c> someone</c><01:29:35.400><c> else</c><01:29:35.639><c> asked</c><01:29:35.960><c> that</c>
+
+01:29:36.229 --> 01:29:36.239 align:start position:0%
+someone asked someone else asked that
+
+
+01:29:36.239 --> 01:29:38.950 align:start position:0%
+someone asked someone else asked that
+and<01:29:36.480><c> I'm</c><01:29:36.800><c> I'm</c><01:29:37.119><c> I'm</c><01:29:37.320><c> trying</c><01:29:37.600><c> to</c>
+
+01:29:38.950 --> 01:29:38.960 align:start position:0%
+and I'm I'm I'm trying to
+
+
+01:29:38.960 --> 01:29:42.590 align:start position:0%
+and I'm I'm I'm trying to
+remember<01:29:39.960><c> yeah</c><01:29:40.400><c> olx.com</c><01:29:41.400><c> is</c><01:29:41.560><c> the</c><01:29:41.760><c> website</c><01:29:42.400><c> and</c>
+
+01:29:42.590 --> 01:29:42.600 align:start position:0%
+remember yeah olx.com is the website and
+
+
+01:29:42.600 --> 01:29:47.070 align:start position:0%
+remember yeah olx.com is the website and
+if<01:29:42.679><c> you</c><01:29:42.880><c> look</c><01:29:43.080><c> for</c><01:29:43.360><c> the</c><01:29:44.080><c> cortex</c><01:29:45.239><c> uh</c><01:29:46.239><c> arm</c><01:29:46.560><c> cortex</c>
+
+01:29:47.070 --> 01:29:47.080 align:start position:0%
+if you look for the cortex uh arm cortex
+
+
+01:29:47.080 --> 01:29:49.750 align:start position:0%
+if you look for the cortex uh arm cortex
+based<01:29:48.080><c> board</c><01:29:48.360><c> it's</c>
+
+01:29:49.750 --> 01:29:49.760 align:start position:0%
+based board it's
+
+
+01:29:49.760 --> 01:29:51.550 align:start position:0%
+based board it's
+$57<01:29:50.760><c> and</c>
+
+01:29:51.550 --> 01:29:51.560 align:start position:0%
+$57 and
+
+
+01:29:51.560 --> 01:29:54.830 align:start position:0%
+$57 and
+is<01:29:52.560><c> very</c><01:29:52.880><c> much</c><01:29:53.080><c> more</c><01:29:53.400><c> powerful</c><01:29:54.040><c> can</c><01:29:54.080><c> you</c><01:29:54.239><c> spell</c>
+
+01:29:54.830 --> 01:29:54.840 align:start position:0%
+is very much more powerful can you spell
+
+
+01:29:54.840 --> 01:30:01.109 align:start position:0%
+is very much more powerful can you spell
+that<01:29:55.880><c> uh</c><01:29:56.880><c> o</c><01:29:57.119><c> l</c><01:29:58.040><c> m</c>
+
+01:30:01.109 --> 01:30:01.119 align:start position:0%
+
+
+
+01:30:01.119 --> 01:30:06.430 align:start position:0%
+
+x<01:30:02.119><c> one</c><01:30:02.400><c> for</c><01:30:03.239><c> 70</c><01:30:03.880><c> just</c><01:30:04.080><c> over</c><01:30:04.400><c> 70</c><01:30:04.840><c> bucks</c><01:30:05.119><c> of</c><01:30:05.520><c> the</c><01:30:06.320><c> I</c>
+
+01:30:06.430 --> 01:30:06.440 align:start position:0%
+x one for 70 just over 70 bucks of the I
+
+
+01:30:06.440 --> 01:30:08.950 align:start position:0%
+x one for 70 just over 70 bucks of the I
+can't<01:30:06.719><c> find</c><01:30:07.159><c> the</c><01:30:07.600><c> information</c><01:30:08.239><c> here</c><01:30:08.480><c> but</c>
+
+01:30:08.950 --> 01:30:08.960 align:start position:0%
+can't find the information here but
+
+
+01:30:08.960 --> 01:30:11.870 align:start position:0%
+can't find the information here but
+Wi-Fi<01:30:09.400><c> is</c><01:30:09.600><c> part</c><01:30:09.719><c> of</c>
+
+01:30:11.870 --> 01:30:11.880 align:start position:0%
+Wi-Fi is part of
+
+
+01:30:11.880 --> 01:30:18.590 align:start position:0%
+Wi-Fi is part of
+the<01:30:12.880><c> part</c><01:30:13.600><c> so</c><01:30:14.199><c> ass</c><01:30:14.800><c> they</c>
+
+01:30:18.590 --> 01:30:18.600 align:start position:0%
+
+
+
+01:30:18.600 --> 01:30:21.990 align:start position:0%
+
+wi<01:30:19.600><c> um</c><01:30:20.239><c> I'm</c><01:30:20.440><c> looking</c><01:30:20.719><c> at</c><01:30:20.800><c> it</c><01:30:21.040><c> now</c><01:30:21.320><c> trying</c><01:30:21.480><c> to</c>
+
+01:30:21.990 --> 01:30:22.000 align:start position:0%
+wi um I'm looking at it now trying to
+
+
+01:30:22.000 --> 01:30:26.590 align:start position:0%
+wi um I'm looking at it now trying to
+find<01:30:23.000><c> right</c><01:30:23.840><c> um</c>
+
+01:30:26.590 --> 01:30:26.600 align:start position:0%
+
+
+
+01:30:26.600 --> 01:30:29.350 align:start position:0%
+
+we<01:30:26.800><c> can</c><01:30:27.360><c> uh</c><01:30:28.199><c> publish</c><01:30:28.600><c> that</c><01:30:28.800><c> information</c><01:30:29.199><c> on</c>
+
+01:30:29.350 --> 01:30:29.360 align:start position:0%
+we can uh publish that information on
+
+
+01:30:29.360 --> 01:30:33.310 align:start position:0%
+we can uh publish that information on
+the<01:30:29.520><c> tri</c><01:30:30.440><c> trog</c><01:30:31.440><c> list</c><01:30:32.119><c> and</c>
+
+01:30:33.310 --> 01:30:33.320 align:start position:0%
+the tri trog list and
+
+
+01:30:33.320 --> 01:30:36.669 align:start position:0%
+the tri trog list and
+um<01:30:34.320><c> we'll</c><01:30:34.800><c> certainly</c><01:30:35.320><c> have</c><01:30:35.639><c> investigated</c><01:30:36.199><c> on</c>
+
+01:30:36.669 --> 01:30:36.679 align:start position:0%
+um we'll certainly have investigated on
+
+
+01:30:36.679 --> 01:30:40.870 align:start position:0%
+um we'll certainly have investigated on
+Saturday<01:30:37.920><c> um</c><01:30:38.920><c> I</c><01:30:39.040><c> findx</c><01:30:39.880><c> to</c><01:30:40.040><c> be</c><01:30:40.159><c> an</c><01:30:40.280><c> excellent</c>
+
+01:30:40.870 --> 01:30:40.880 align:start position:0%
+Saturday um I findx to be an excellent
+
+
+01:30:40.880 --> 01:30:43.149 align:start position:0%
+Saturday um I findx to be an excellent
+Vendor<01:30:41.320><c> by</c><01:30:41.440><c> the</c><01:30:41.560><c> way</c><01:30:42.080><c> uh</c><01:30:42.239><c> they</c><01:30:42.360><c> make</c><01:30:42.639><c> some</c>
+
+01:30:43.149 --> 01:30:43.159 align:start position:0%
+Vendor by the way uh they make some
+
+
+01:30:43.159 --> 01:30:45.229 align:start position:0%
+Vendor by the way uh they make some
+really<01:30:43.520><c> really</c><01:30:43.800><c> nice</c><01:30:44.040><c> little</c><01:30:44.320><c> prototyping</c>
+
+01:30:45.229 --> 01:30:45.239 align:start position:0%
+really really nice little prototyping
+
+
+01:30:45.239 --> 01:30:48.510 align:start position:0%
+really really nice little prototyping
+cards<01:30:45.760><c> they</c><01:30:45.880><c> make</c><01:30:46.119><c> a</c><01:30:46.360><c> variety</c><01:30:47.159><c> of</c><01:30:47.960><c> cards</c><01:30:48.360><c> that</c>
+
+01:30:48.510 --> 01:30:48.520 align:start position:0%
+cards they make a variety of cards that
+
+
+01:30:48.520 --> 01:30:50.310 align:start position:0%
+cards they make a variety of cards that
+plug<01:30:48.800><c> into</c><01:30:49.080><c> your</c><01:30:49.239><c> Raspberry</c><01:30:49.760><c> Pi</c><01:30:50.159><c> and</c>
+
+01:30:50.310 --> 01:30:50.320 align:start position:0%
+plug into your Raspberry Pi and
+
+
+01:30:50.320 --> 01:30:53.109 align:start position:0%
+plug into your Raspberry Pi and
+interface<01:30:50.840><c> with</c><01:30:51.239><c> gpio</c><01:30:52.239><c> so</c><01:30:52.440><c> that</c><01:30:52.639><c> you</c><01:30:52.800><c> don't</c>
+
+01:30:53.109 --> 01:30:53.119 align:start position:0%
+interface with gpio so that you don't
+
+
+01:30:53.119 --> 01:30:55.709 align:start position:0%
+interface with gpio so that you don't
+have<01:30:53.239><c> to</c><01:30:53.520><c> touch</c><01:30:54.080><c> that</c><01:30:54.199><c> gpio</c><01:30:55.119><c> with</c><01:30:55.320><c> something</c>
+
+01:30:55.709 --> 01:30:55.719 align:start position:0%
+have to touch that gpio with something
+
+
+01:30:55.719 --> 01:30:57.750 align:start position:0%
+have to touch that gpio with something
+that<01:30:55.840><c> would</c><01:30:56.080><c> blow</c><01:30:56.360><c> it</c><01:30:56.480><c> up</c><01:30:57.119><c> I</c><01:30:57.239><c> said</c><01:30:57.400><c> it's</c>
+
+01:30:57.750 --> 01:30:57.760 align:start position:0%
+that would blow it up I said it's
+
+
+01:30:57.760 --> 01:31:01.189 align:start position:0%
+that would blow it up I said it's
+extremely<01:30:58.360><c> sensitive</c><01:30:59.040><c> it's</c><01:30:59.400><c> it's</c><01:31:00.199><c> fragile</c>
+
+01:31:01.189 --> 01:31:01.199 align:start position:0%
+extremely sensitive it's it's fragile
+
+
+01:31:01.199 --> 01:31:03.870 align:start position:0%
+extremely sensitive it's it's fragile
+but<01:31:01.679><c> uh</c><01:31:01.760><c> you</c><01:31:01.960><c> can</c><01:31:02.080><c> use</c><01:31:02.280><c> a</c><01:31:02.440><c> variety</c><01:31:02.840><c> of</c><01:31:03.000><c> boards</c>
+
+01:31:03.870 --> 01:31:03.880 align:start position:0%
+but uh you can use a variety of boards
+
+
+01:31:03.880 --> 01:31:06.149 align:start position:0%
+but uh you can use a variety of boards
+such<01:31:04.040><c> as</c><01:31:04.159><c> from</c><01:31:04.360><c> Ox</c><01:31:05.280><c> that</c><01:31:05.400><c> will</c><01:31:05.719><c> provide</c><01:31:05.960><c> a</c>
+
+01:31:06.149 --> 01:31:06.159 align:start position:0%
+such as from Ox that will provide a
+
+
+01:31:06.159 --> 01:31:08.229 align:start position:0%
+such as from Ox that will provide a
+layer<01:31:06.440><c> of</c><01:31:06.639><c> buffering</c><01:31:07.400><c> that</c><01:31:07.600><c> Gadget</c><01:31:07.920><c> I</c><01:31:08.000><c> showed</c>
+
+01:31:08.229 --> 01:31:08.239 align:start position:0%
+layer of buffering that Gadget I showed
+
+
+01:31:08.239 --> 01:31:10.390 align:start position:0%
+layer of buffering that Gadget I showed
+you<01:31:08.360><c> a</c><01:31:08.440><c> minute</c><01:31:08.679><c> ago</c><01:31:09.159><c> that</c><01:31:09.280><c> just</c><01:31:09.440><c> plugs</c><01:31:09.760><c> into</c><01:31:10.080><c> a</c>
+
+01:31:10.390 --> 01:31:10.400 align:start position:0%
+you a minute ago that just plugs into a
+
+
+01:31:10.400 --> 01:31:12.229 align:start position:0%
+you a minute ago that just plugs into a
+protyping<01:31:10.960><c> card</c><01:31:11.320><c> that</c><01:31:11.480><c> has</c><01:31:11.600><c> no</c><01:31:11.800><c> buffering</c>
+
+01:31:12.229 --> 01:31:12.239 align:start position:0%
+protyping card that has no buffering
+
+
+01:31:12.239 --> 01:31:15.470 align:start position:0%
+protyping card that has no buffering
+that's<01:31:12.560><c> that's</c><01:31:12.840><c> just</c><01:31:13.080><c> straight</c><01:31:13.400><c> in</c><01:31:14.000><c> so</c><01:31:14.600><c> it's</c>
+
+01:31:15.470 --> 01:31:15.480 align:start position:0%
+that's that's just straight in so it's
+
+
+01:31:15.480 --> 01:31:19.030 align:start position:0%
+that's that's just straight in so it's
+not<01:31:15.960><c> probably</c><01:31:16.360><c> not</c><01:31:17.119><c> a</c><01:31:17.239><c> beginner</c><01:31:17.760><c> type</c>
+
+01:31:19.030 --> 01:31:19.040 align:start position:0%
+not probably not a beginner type
+
+
+01:31:19.040 --> 01:31:21.430 align:start position:0%
+not probably not a beginner type
+thing<01:31:20.040><c> I</c><01:31:20.199><c> was</c><01:31:20.520><c> just</c><01:31:20.679><c> going</c><01:31:20.760><c> to</c><01:31:20.920><c> add</c><01:31:21.119><c> this</c><01:31:21.280><c> to</c>
+
+01:31:21.430 --> 01:31:21.440 align:start position:0%
+thing I was just going to add this to
+
+
+01:31:21.440 --> 01:31:24.189 align:start position:0%
+thing I was just going to add this to
+Pro<01:31:21.679><c> I'm</c><01:31:21.840><c> not</c><01:31:22.000><c> crazy</c><01:31:22.360><c> El</c><01:31:22.520><c> Linux</c><01:31:22.880><c> is</c><01:31:23.320><c> massive</c><01:31:23.639><c> WI</c>
+
+01:31:24.189 --> 01:31:24.199 align:start position:0%
+Pro I'm not crazy El Linux is massive WI
+
+
+01:31:24.199 --> 01:31:26.310 align:start position:0%
+Pro I'm not crazy El Linux is massive WI
+has<01:31:24.920><c> basic</c><01:31:25.320><c> instructions</c><01:31:25.760><c> for</c><01:31:25.920><c> setting</c><01:31:26.159><c> up</c>
+
+01:31:26.310 --> 01:31:26.320 align:start position:0%
+has basic instructions for setting up
+
+
+01:31:26.320 --> 01:31:29.510 align:start position:0%
+has basic instructions for setting up
+Pixie<01:31:26.600><c> on</c>
+
+01:31:29.510 --> 01:31:29.520 align:start position:0%
+
+
+
+01:31:29.520 --> 01:31:33.870 align:start position:0%
+
+the<01:31:30.520><c> okay</c><01:31:30.960><c> so</c><01:31:31.239><c> she</c><01:31:31.440><c> said</c><01:31:31.719><c> that</c><01:31:32.239><c> um</c><01:31:32.800><c> she</c><01:31:33.239><c> just</c><01:31:33.719><c> uh</c>
+
+01:31:33.870 --> 01:31:33.880 align:start position:0%
+the okay so she said that um she just uh
+
+
+01:31:33.880 --> 01:31:36.070 align:start position:0%
+the okay so she said that um she just uh
+got<01:31:34.159><c> curious</c><01:31:34.800><c> and</c><01:31:35.040><c> looked</c><01:31:35.320><c> up</c><01:31:35.560><c> on</c><01:31:35.719><c> the</c><01:31:35.880><c> El</c>
+
+01:31:36.070 --> 01:31:36.080 align:start position:0%
+got curious and looked up on the El
+
+
+01:31:36.080 --> 01:31:40.709 align:start position:0%
+got curious and looked up on the El
+linux.org<01:31:36.840><c> uh</c><01:31:37.560><c> Wiki</c><01:31:38.560><c> uh</c><01:31:38.920><c> subject</c><01:31:39.560><c> of</c><01:31:40.199><c> uh</c><01:31:40.360><c> using</c>
+
+01:31:40.709 --> 01:31:40.719 align:start position:0%
+linux.org uh Wiki uh subject of uh using
+
+
+01:31:40.719 --> 01:31:44.430 align:start position:0%
+linux.org uh Wiki uh subject of uh using
+pxe<01:31:41.560><c> with</c><01:31:41.800><c> res</c><01:31:42.400><c> pi</c><01:31:42.760><c> and</c><01:31:43.080><c> found</c><01:31:44.080><c> full</c>
+
+01:31:44.430 --> 01:31:44.440 align:start position:0%
+pxe with res pi and found full
+
+
+01:31:44.440 --> 01:31:47.669 align:start position:0%
+pxe with res pi and found full
+instructions<01:31:44.920><c> for</c><01:31:45.119><c> how</c><01:31:45.239><c> to</c><01:31:45.400><c> do</c>
+
+01:31:47.669 --> 01:31:47.679 align:start position:0%
+
+
+
+01:31:47.679 --> 01:31:52.390 align:start position:0%
+
+it<01:31:49.159><c> and</c><01:31:50.159><c> when</c><01:31:50.280><c> I</c><01:31:50.400><c> said</c><01:31:50.760><c> you</c><01:31:50.880><c> know</c><01:31:51.679><c> pxc</c><01:31:52.159><c> wasn't</c>
+
+01:31:52.390 --> 01:31:52.400 align:start position:0%
+it and when I said you know pxc wasn't
+
+
+01:31:52.400 --> 01:31:54.629 align:start position:0%
+it and when I said you know pxc wasn't
+supported<01:31:52.800><c> this</c><01:31:52.960><c> week</c><01:31:53.320><c> I</c><01:31:53.400><c> mean</c><01:31:53.560><c> that's</c><01:31:53.960><c> only</c>
+
+01:31:54.629 --> 01:31:54.639 align:start position:0%
+supported this week I mean that's only
+
+
+01:31:54.639 --> 01:31:57.590 align:start position:0%
+supported this week I mean that's only
+half<01:31:54.920><c> joke</c><01:31:55.560><c> because</c><01:31:56.560><c> there</c><01:31:56.760><c> is</c><01:31:57.320><c> there</c><01:31:57.440><c> are</c><01:31:57.520><c> a</c>
+
+01:31:57.590 --> 01:31:57.600 align:start position:0%
+half joke because there is there are a
+
+
+01:31:57.600 --> 01:31:59.270 align:start position:0%
+half joke because there is there are a
+million<01:31:57.880><c> of</c><01:31:58.000><c> these</c><01:31:58.159><c> things</c><01:31:58.400><c> out</c><01:31:58.639><c> there</c><01:31:59.119><c> and</c>
+
+01:31:59.270 --> 01:31:59.280 align:start position:0%
+million of these things out there and
+
+
+01:31:59.280 --> 01:32:01.109 align:start position:0%
+million of these things out there and
+there<01:31:59.440><c> are</c><01:31:59.880><c> literally</c><01:32:00.600><c> hundreds</c><01:32:00.920><c> of</c>
+
+01:32:01.109 --> 01:32:01.119 align:start position:0%
+there are literally hundreds of
+
+
+01:32:01.119 --> 01:32:04.030 align:start position:0%
+there are literally hundreds of
+thousands<01:32:01.440><c> of</c><01:32:01.679><c> people</c><01:32:02.679><c> uh</c><01:32:03.080><c> doing</c><01:32:03.560><c> things</c><01:32:03.840><c> with</c>
+
+01:32:04.030 --> 01:32:04.040 align:start position:0%
+thousands of people uh doing things with
+
+
+01:32:04.040 --> 01:32:05.990 align:start position:0%
+thousands of people uh doing things with
+them<01:32:04.320><c> and</c><01:32:04.880><c> and</c><01:32:04.960><c> a</c><01:32:05.119><c> good</c><01:32:05.280><c> fraction</c><01:32:05.639><c> of</c><01:32:05.760><c> those</c>
+
+01:32:05.990 --> 01:32:06.000 align:start position:0%
+them and and a good fraction of those
+
+
+01:32:06.000 --> 01:32:08.950 align:start position:0%
+them and and a good fraction of those
+people<01:32:06.360><c> are</c><01:32:06.920><c> highly</c><01:32:07.320><c> capable</c><01:32:08.000><c> and</c><01:32:08.520><c> they</c><01:32:08.760><c> they</c>
+
+01:32:08.950 --> 01:32:08.960 align:start position:0%
+people are highly capable and they they
+
+
+01:32:08.960 --> 01:32:18.790 align:start position:0%
+people are highly capable and they they
+know<01:32:09.199><c> how</c><01:32:09.320><c> to</c><01:32:09.480><c> make</c><01:32:09.679><c> these</c><01:32:10.239><c> things</c><01:32:11.239><c> um</c>
+
+01:32:18.790 --> 01:32:18.800 align:start position:0%
+
+
+
+01:32:18.800 --> 01:32:22.310 align:start position:0%
+
+Fly<01:32:19.800><c> ask</c><01:32:20.520><c> about</c><01:32:20.880><c> B</c><01:32:21.320><c> oh</c><01:32:21.400><c> we</c><01:32:21.520><c> had</c><01:32:21.639><c> a</c><01:32:21.960><c> question</c><01:32:22.199><c> in</c>
+
+01:32:22.310 --> 01:32:22.320 align:start position:0%
+Fly ask about B oh we had a question in
+
+
+01:32:22.320 --> 01:32:32.310 align:start position:0%
+Fly ask about B oh we had a question in
+the<01:32:22.480><c> back</c><01:32:22.639><c> as</c><01:32:22.760><c> well</c><01:32:23.600><c> sorry</c>
+
+01:32:32.310 --> 01:32:32.320 align:start position:0%
+
+
+
+01:32:32.320 --> 01:32:34.550 align:start position:0%
+
+uh<01:32:32.440><c> I</c><01:32:32.520><c> was</c><01:32:32.679><c> just</c><01:32:32.800><c> going</c><01:32:32.880><c> to</c><01:32:33.119><c> ask</c><01:32:33.400><c> about</c><01:32:33.840><c> the</c><01:32:34.159><c> uh</c>
+
+01:32:34.550 --> 01:32:34.560 align:start position:0%
+uh I was just going to ask about the uh
+
+
+01:32:34.560 --> 01:32:36.510 align:start position:0%
+uh I was just going to ask about the uh
+there's<01:32:34.800><c> still</c><01:32:35.080><c> a</c><01:32:35.280><c> waight</c><01:32:35.560><c> list</c><01:32:35.760><c> on</c><01:32:35.920><c> orders</c>
+
+01:32:36.510 --> 01:32:36.520 align:start position:0%
+there's still a waight list on orders
+
+
+01:32:36.520 --> 01:32:38.070 align:start position:0%
+there's still a waight list on orders
+and<01:32:36.840><c> how</c><01:32:36.960><c> long</c><01:32:37.119><c> it</c><01:32:37.239><c> takes</c><01:32:37.440><c> to</c><01:32:37.600><c> actually</c>
+
+01:32:38.070 --> 01:32:38.080 align:start position:0%
+and how long it takes to actually
+
+
+01:32:38.080 --> 01:32:41.830 align:start position:0%
+and how long it takes to actually
+receive<01:32:38.440><c> one</c><01:32:38.719><c> to</c><01:32:39.239><c> order</c><01:32:40.239><c> the</c><01:32:41.159><c> the</c><01:32:41.280><c> one</c><01:32:41.480><c> that</c><01:32:41.639><c> I</c>
+
+01:32:41.830 --> 01:32:41.840 align:start position:0%
+receive one to order the the one that I
+
+
+01:32:41.840 --> 01:32:44.030 align:start position:0%
+receive one to order the the one that I
+ordered<01:32:42.760><c> by</c><01:32:42.920><c> the</c>
+
+01:32:44.030 --> 01:32:44.040 align:start position:0%
+ordered by the
+
+
+01:32:44.040 --> 01:32:47.550 align:start position:0%
+ordered by the
+way<01:32:45.040><c> might</c><01:32:45.239><c> be</c><01:32:45.400><c> interested</c><01:32:45.880><c> in</c><01:32:46.600><c> this</c>
+
+01:32:47.550 --> 01:32:47.560 align:start position:0%
+way might be interested in this
+
+
+01:32:47.560 --> 01:32:50.149 align:start position:0%
+way might be interested in this
+is<01:32:48.560><c> this</c><01:32:48.760><c> just</c><01:32:48.880><c> a</c><01:32:49.000><c> sheet</c><01:32:49.199><c> of</c><01:32:49.320><c> plexiglass</c><01:32:50.000><c> with</c>
+
+01:32:50.149 --> 01:32:50.159 align:start position:0%
+is this just a sheet of plexiglass with
+
+
+01:32:50.159 --> 01:32:52.149 align:start position:0%
+is this just a sheet of plexiglass with
+four<01:32:50.320><c> holes</c><01:32:50.560><c> drilled</c><01:32:50.920><c> in</c><01:32:51.040><c> it</c><01:32:51.440><c> and</c><01:32:51.639><c> screws</c><01:32:52.080><c> you</c>
+
+01:32:52.149 --> 01:32:52.159 align:start position:0%
+four holes drilled in it and screws you
+
+
+01:32:52.159 --> 01:32:55.070 align:start position:0%
+four holes drilled in it and screws you
+can<01:32:52.280><c> get</c><01:32:52.360><c> from</c><01:32:52.520><c> Home</c><01:32:52.719><c> Depot</c>
+
+01:32:55.070 --> 01:32:55.080 align:start position:0%
+can get from Home Depot
+
+
+01:32:55.080 --> 01:32:57.229 align:start position:0%
+can get from Home Depot
+that<01:32:55.159><c> are</c><01:32:55.480><c> just</c><01:32:55.800><c> holding</c><01:32:56.320><c> the</c><01:32:56.480><c> thing</c>
+
+01:32:57.229 --> 01:32:57.239 align:start position:0%
+that are just holding the thing
+
+
+01:32:57.239 --> 01:32:58.669 align:start position:0%
+that are just holding the thing
+everything<01:32:57.520><c> is</c><01:32:57.719><c> just</c><01:32:57.880><c> clamped</c><01:32:58.280><c> underneath</c>
+
+01:32:58.669 --> 01:32:58.679 align:start position:0%
+everything is just clamped underneath
+
+
+01:32:58.679 --> 01:32:59.470 align:start position:0%
+everything is just clamped underneath
+this
+
+01:32:59.470 --> 01:32:59.480 align:start position:0%
+this
+
+
+01:32:59.480 --> 01:33:04.830 align:start position:0%
+this
+plastic<01:33:00.600><c> um</c><01:33:01.600><c> and</c><01:33:02.159><c> when</c><01:33:02.320><c> I</c><01:33:02.480><c> ordered</c><01:33:03.040><c> that</c><01:33:03.840><c> board</c>
+
+01:33:04.830 --> 01:33:04.840 align:start position:0%
+plastic um and when I ordered that board
+
+
+01:33:04.840 --> 01:33:06.470 align:start position:0%
+plastic um and when I ordered that board
+on<01:33:05.040><c> a</c><01:33:05.280><c> Sunday</c>
+
+01:33:06.470 --> 01:33:06.480 align:start position:0%
+on a Sunday
+
+
+01:33:06.480 --> 01:33:10.590 align:start position:0%
+on a Sunday
+night<01:33:07.480><c> no</c><01:33:07.719><c> sorry</c><01:33:08.119><c> 10</c><01:33:08.320><c> o'cl</c><01:33:08.679><c> on</c><01:33:08.800><c> a</c><01:33:09.080><c> Monday</c>
+
+01:33:10.590 --> 01:33:10.600 align:start position:0%
+night no sorry 10 o'cl on a Monday
+
+
+01:33:10.600 --> 01:33:14.189 align:start position:0%
+night no sorry 10 o'cl on a Monday
+morning<01:33:11.600><c> I</c><01:33:11.719><c> was</c><01:33:11.960><c> holding</c><01:33:12.400><c> the</c><01:33:12.560><c> board</c><01:33:12.920><c> at</c><01:33:13.080><c> 4:00</c>
+
+01:33:14.189 --> 01:33:14.199 align:start position:0%
+morning I was holding the board at 4:00
+
+
+01:33:14.199 --> 01:33:17.270 align:start position:0%
+morning I was holding the board at 4:00
+on<01:33:15.199><c> Wednesday</c>
+
+01:33:17.270 --> 01:33:17.280 align:start position:0%
+on Wednesday
+
+
+01:33:17.280 --> 01:33:20.910 align:start position:0%
+on Wednesday
+afternoon<01:33:18.280><c> if</c><01:33:19.360><c> newark.com</c><01:33:20.360><c> has</c><01:33:20.639><c> a</c>
+
+01:33:20.910 --> 01:33:20.920 align:start position:0%
+afternoon if newark.com has a
+
+
+01:33:20.920 --> 01:33:24.430 align:start position:0%
+afternoon if newark.com has a
+distributor<01:33:21.520><c> Warehouse</c><01:33:22.400><c> in</c><01:33:23.080><c> uh</c><01:33:23.400><c> gaff</c><01:33:24.159><c> South</c>
+
+01:33:24.430 --> 01:33:24.440 align:start position:0%
+distributor Warehouse in uh gaff South
+
+
+01:33:24.440 --> 01:33:27.790 align:start position:0%
+distributor Warehouse in uh gaff South
+Carolina<01:33:25.040><c> it's</c><01:33:25.199><c> a</c><01:33:25.320><c> short</c><01:33:25.639><c> drive</c><01:33:26.159><c> by</c><01:33:26.440><c> UPS</c><01:33:26.920><c> truck</c>
+
+01:33:27.790 --> 01:33:27.800 align:start position:0%
+Carolina it's a short drive by UPS truck
+
+
+01:33:27.800 --> 01:33:29.310 align:start position:0%
+Carolina it's a short drive by UPS truck
+you<01:33:27.960><c> can</c><01:33:28.600><c> you</c><01:33:28.679><c> can</c><01:33:28.800><c> use</c><01:33:29.040><c> ground</c>
+
+01:33:29.310 --> 01:33:29.320 align:start position:0%
+you can you can use ground
+
+
+01:33:29.320 --> 01:33:32.149 align:start position:0%
+you can you can use ground
+transportation<01:33:30.199><c> and</c><01:33:30.360><c> get</c><01:33:30.600><c> extremely</c><01:33:31.159><c> fast</c>
+
+01:33:32.149 --> 01:33:32.159 align:start position:0%
+transportation and get extremely fast
+
+
+01:33:32.159 --> 01:33:35.669 align:start position:0%
+transportation and get extremely fast
+delivery<01:33:33.159><c> and</c><01:33:33.679><c> uh</c><01:33:33.840><c> like</c><01:33:33.920><c> I</c><01:33:34.119><c> said</c><01:33:35.119><c> this</c><01:33:35.280><c> was</c>
+
+01:33:35.669 --> 01:33:35.679 align:start position:0%
+delivery and uh like I said this was
+
+
+01:33:35.679 --> 01:33:38.910 align:start position:0%
+delivery and uh like I said this was
+what<01:33:35.960><c> maybe</c><01:33:36.560><c> uh</c><01:33:36.719><c> five</c><01:33:37.000><c> six</c><01:33:37.239><c> weeks</c><01:33:37.480><c> ago</c><01:33:38.360><c> uh</c><01:33:38.560><c> lead</c>
+
+01:33:38.910 --> 01:33:38.920 align:start position:0%
+what maybe uh five six weeks ago uh lead
+
+
+01:33:38.920 --> 01:33:41.590 align:start position:0%
+what maybe uh five six weeks ago uh lead
+time<01:33:39.400><c> was</c><01:33:40.360><c> 50</c>
+
+01:33:41.590 --> 01:33:41.600 align:start position:0%
+time was 50
+
+
+01:33:41.600 --> 01:33:45.430 align:start position:0%
+time was 50
+hours<01:33:42.600><c> whatever</c><01:33:42.920><c> that</c><01:33:43.280><c> was</c>
+
+01:33:45.430 --> 01:33:45.440 align:start position:0%
+hours whatever that was
+
+
+01:33:45.440 --> 01:33:48.550 align:start position:0%
+hours whatever that was
+um<01:33:46.440><c> the</c><01:33:46.800><c> production</c><01:33:47.679><c> uh</c><01:33:47.960><c> is</c><01:33:48.119><c> going</c><01:33:48.280><c> on</c><01:33:48.400><c> in</c>
+
+01:33:48.550 --> 01:33:48.560 align:start position:0%
+um the production uh is going on in
+
+
+01:33:48.560 --> 01:33:50.590 align:start position:0%
+um the production uh is going on in
+Wales<01:33:49.199><c> and</c><01:33:49.600><c> uh</c><01:33:49.760><c> last</c><01:33:50.040><c> I</c><01:33:50.159><c> heard</c><01:33:50.360><c> they</c><01:33:50.440><c> were</c>
+
+01:33:50.590 --> 01:33:50.600 align:start position:0%
+Wales and uh last I heard they were
+
+
+01:33:50.600 --> 01:33:55.030 align:start position:0%
+Wales and uh last I heard they were
+making<01:33:51.199><c> 16,000</c><01:33:51.840><c> boards</c><01:33:52.239><c> per</c><01:33:52.440><c> week</c><01:33:53.880><c> and</c><01:33:54.360><c> um</c><01:33:54.800><c> but</c>
+
+01:33:55.030 --> 01:33:55.040 align:start position:0%
+making 16,000 boards per week and um but
+
+
+01:33:55.040 --> 01:34:02.189 align:start position:0%
+making 16,000 boards per week and um but
+they<01:33:55.159><c> are</c><01:33:56.159><c> apparently</c><01:33:56.719><c> moving</c><01:33:57.239><c> them</c>
+
+01:34:02.189 --> 01:34:02.199 align:start position:0%
+
+
+
+01:34:02.199 --> 01:34:04.950 align:start position:0%
+
+so<01:34:03.199><c> no</c><01:34:03.400><c> Newark</c>
+
+01:34:04.950 --> 01:34:04.960 align:start position:0%
+so no Newark
+
+
+01:34:04.960 --> 01:34:06.669 align:start position:0%
+so no Newark
+NW
+
+01:34:06.669 --> 01:34:06.679 align:start position:0%
+NW
+
+
+01:34:06.679 --> 01:34:11.070 align:start position:0%
+NW
+K.C<01:34:07.679><c> which</c><01:34:07.800><c> is</c><01:34:08.119><c> also</c><01:34:09.119><c> uh</c><01:34:09.320><c> element</c><01:34:09.800><c> 14</c><01:34:10.760><c> same</c>
+
+01:34:11.070 --> 01:34:11.080 align:start position:0%
+K.C which is also uh element 14 same
+
+
+01:34:11.080 --> 01:34:14.629 align:start position:0%
+K.C which is also uh element 14 same
+company<01:34:12.080><c> MCM</c><01:34:13.080><c> same</c><01:34:13.400><c> company</c><01:34:14.159><c> they're</c><01:34:14.360><c> all</c>
+
+01:34:14.629 --> 01:34:14.639 align:start position:0%
+company MCM same company they're all
+
+
+01:34:14.639 --> 01:34:18.390 align:start position:0%
+company MCM same company they're all
+part<01:34:14.880><c> of</c><01:34:15.040><c> a</c><01:34:15.199><c> British</c><01:34:15.840><c> company</c><01:34:16.159><c> called</c><01:34:16.719><c> FAL</c>
+
+01:34:18.390 --> 01:34:18.400 align:start position:0%
+part of a British company called FAL
+
+
+01:34:18.400 --> 01:34:21.990 align:start position:0%
+part of a British company called FAL
+uh<01:34:19.400><c> other</c><01:34:20.159><c> Distributors</c><01:34:21.040><c> sell</c><01:34:21.400><c> them</c><01:34:21.719><c> you</c><01:34:21.800><c> can</c>
+
+01:34:21.990 --> 01:34:22.000 align:start position:0%
+uh other Distributors sell them you can
+
+
+01:34:22.000 --> 01:34:25.830 align:start position:0%
+uh other Distributors sell them you can
+get<01:34:22.159><c> them</c><01:34:22.600><c> with</c><01:34:23.199><c> uh</c><01:34:24.000><c> uh</c><01:34:24.239><c> with</c><01:34:24.440><c> a</c><01:34:24.679><c> whole</c><01:34:25.400><c> kit</c><01:34:25.639><c> of</c>
+
+01:34:25.830 --> 01:34:25.840 align:start position:0%
+get them with uh uh with a whole kit of
+
+
+01:34:25.840 --> 01:34:28.430 align:start position:0%
+get them with uh uh with a whole kit of
+stuff<01:34:26.119><c> from</c><01:34:26.600><c> Adafruit</c><01:34:27.600><c> that</c><01:34:27.800><c> website</c><01:34:28.199><c> that</c><01:34:28.320><c> I</c>
+
+01:34:28.430 --> 01:34:28.440 align:start position:0%
+stuff from Adafruit that website that I
+
+
+01:34:28.440 --> 01:34:29.510 align:start position:0%
+stuff from Adafruit that website that I
+pointed<01:34:28.719><c> to</c>
+
+01:34:29.510 --> 01:34:29.520 align:start position:0%
+pointed to
+
+
+01:34:29.520 --> 01:34:32.790 align:start position:0%
+pointed to
+earlier<01:34:30.520><c> just</c><01:34:30.760><c> a</c><01:34:31.040><c> raft</c><01:34:31.600><c> of</c>
+
+01:34:32.790 --> 01:34:32.800 align:start position:0%
+earlier just a raft of
+
+
+01:34:32.800 --> 01:34:36.790 align:start position:0%
+earlier just a raft of
+vendors<01:34:33.800><c> but</c><01:34:34.000><c> I</c><01:34:34.280><c> I</c><01:34:34.960><c> I'm</c><01:34:35.760><c> fond</c><01:34:36.080><c> of</c><01:34:36.239><c> nework</c>
+
+01:34:36.790 --> 01:34:36.800 align:start position:0%
+vendors but I I I'm fond of nework
+
+
+01:34:36.800 --> 01:34:39.790 align:start position:0%
+vendors but I I I'm fond of nework
+because<01:34:37.159><c> the</c><01:34:37.639><c> distribution</c><01:34:38.639><c> is</c><01:34:38.920><c> like</c>
+
+01:34:39.790 --> 01:34:39.800 align:start position:0%
+because the distribution is like
+
+
+01:34:39.800 --> 01:34:44.270 align:start position:0%
+because the distribution is like
+lightning<01:34:40.480><c> fast</c><01:34:41.119><c> to</c><01:34:41.639><c> to</c><01:34:41.800><c> our</c><01:34:42.000><c> part</c><01:34:42.159><c> of</c>
+
+01:34:44.270 --> 01:34:44.280 align:start position:0%
+lightning fast to to our part of
+
+
+01:34:44.280 --> 01:34:47.470 align:start position:0%
+lightning fast to to our part of
+world<01:34:45.280><c> any</c><01:34:45.800><c> other</c><01:34:46.800><c> I</c><01:34:46.880><c> had</c><01:34:47.000><c> a</c><01:34:47.199><c> question</c>
+
+01:34:47.470 --> 01:34:47.480 align:start position:0%
+world any other I had a question
+
+
+01:34:47.480 --> 01:34:50.350 align:start position:0%
+world any other I had a question
+regarding<01:34:48.080><c> the</c><01:34:48.360><c> educational</c><01:34:49.360><c> initiatives</c>
+
+01:34:50.350 --> 01:34:50.360 align:start position:0%
+regarding the educational initiatives
+
+
+01:34:50.360 --> 01:34:54.229 align:start position:0%
+regarding the educational initiatives
+involving<01:34:50.719><c> the</c><01:34:51.080><c> P</c><01:34:52.119><c> um</c><01:34:53.119><c> I</c><01:34:53.480><c> understand</c><01:34:53.920><c> the</c><01:34:54.080><c> the</c>
+
+01:34:54.229 --> 01:34:54.239 align:start position:0%
+involving the P um I understand the the
+
+
+01:34:54.239 --> 01:34:56.870 align:start position:0%
+involving the P um I understand the the
+target<01:34:54.560><c> Market's</c><01:34:55.080><c> different</c><01:34:55.440><c> than</c><01:34:55.600><c> the</c><01:34:55.880><c> oldc</c>
+
+01:34:56.870 --> 01:34:56.880 align:start position:0%
+target Market's different than the oldc
+
+
+01:34:56.880 --> 01:34:59.669 align:start position:0%
+target Market's different than the oldc
+but<01:34:57.080><c> were</c><01:34:57.239><c> there</c><01:34:57.440><c> any</c><01:34:57.679><c> lessons</c><01:34:58.119><c> from</c><01:34:58.320><c> the</c><01:34:58.679><c> oldc</c>
+
+01:34:59.669 --> 01:34:59.679 align:start position:0%
+but were there any lessons from the oldc
+
+
+01:34:59.679 --> 01:35:01.830 align:start position:0%
+but were there any lessons from the oldc
+to<01:34:59.880><c> being</c><01:35:00.040><c> on</c><01:35:00.239><c> the</c><01:35:00.360><c> world</c><01:35:00.560><c> for</c><01:35:00.679><c> a</c><01:35:00.800><c> couple</c><01:35:01.119><c> years</c>
+
+01:35:01.830 --> 01:35:01.840 align:start position:0%
+to being on the world for a couple years
+
+
+01:35:01.840 --> 01:35:05.470 align:start position:0%
+to being on the world for a couple years
+everything<01:35:02.239><c> they</c><01:35:02.440><c> did</c><01:35:03.159><c> don't</c><01:35:03.360><c> do</c>
+
+01:35:05.470 --> 01:35:05.480 align:start position:0%
+everything they did don't do
+
+
+01:35:05.480 --> 01:35:09.830 align:start position:0%
+everything they did don't do
+that<01:35:06.480><c> why</c><01:35:07.159><c> why</c><01:35:07.679><c> it</c><01:35:07.800><c> was</c><01:35:08.000><c> the</c><01:35:08.159><c> O</c><01:35:08.560><c> the</c><01:35:08.679><c> O</c><01:35:09.040><c> PC</c><01:35:09.440><c> was</c>
+
+01:35:09.830 --> 01:35:09.840 align:start position:0%
+that why why it was the O the O PC was
+
+
+01:35:09.840 --> 01:35:12.070 align:start position:0%
+that why why it was the O the O PC was
+developed<01:35:10.320><c> without</c><01:35:10.600><c> consulting</c><01:35:11.119><c> the</c><01:35:11.280><c> target</c>
+
+01:35:12.070 --> 01:35:12.080 align:start position:0%
+developed without consulting the target
+
+
+01:35:12.080 --> 01:35:15.270 align:start position:0%
+developed without consulting the target
+users<01:35:13.360><c> right</c><01:35:14.360><c> it</c>
+
+01:35:15.270 --> 01:35:15.280 align:start position:0%
+users right it
+
+
+01:35:15.280 --> 01:35:18.430 align:start position:0%
+users right it
+it<01:35:16.280><c> they</c><01:35:16.840><c> people</c><01:35:17.159><c> just</c><01:35:17.360><c> went</c><01:35:17.560><c> off</c><01:35:17.880><c> and</c><01:35:18.119><c> did</c>
+
+01:35:18.430 --> 01:35:18.440 align:start position:0%
+it they people just went off and did
+
+
+01:35:18.440 --> 01:35:21.629 align:start position:0%
+it they people just went off and did
+something<01:35:19.199><c> that</c><01:35:19.440><c> was</c><01:35:19.920><c> cool</c><01:35:20.920><c> and</c><01:35:21.080><c> then</c><01:35:21.280><c> when</c>
+
+01:35:21.629 --> 01:35:21.639 align:start position:0%
+something that was cool and then when
+
+
+01:35:21.639 --> 01:35:24.229 align:start position:0%
+something that was cool and then when
+the<01:35:21.760><c> kids</c><01:35:22.040><c> got</c><01:35:22.239><c> in</c><01:35:22.400><c> their</c><01:35:22.600><c> hands</c><01:35:23.760><c> wasn't</c><01:35:24.080><c> quite</c>
+
+01:35:24.229 --> 01:35:24.239 align:start position:0%
+the kids got in their hands wasn't quite
+
+
+01:35:24.239 --> 01:35:27.990 align:start position:0%
+the kids got in their hands wasn't quite
+so
+
+01:35:27.990 --> 01:35:28.000 align:start position:0%
+
+
+
+01:35:28.000 --> 01:35:30.629 align:start position:0%
+
+cool<01:35:29.000><c> so</c><01:35:29.600><c> so</c><01:35:29.840><c> so</c><01:35:30.000><c> these</c><01:35:30.159><c> people</c><01:35:30.320><c> who'</c><01:35:30.480><c> done</c>
+
+01:35:30.629 --> 01:35:30.639 align:start position:0%
+cool so so so these people who' done
+
+
+01:35:30.639 --> 01:35:32.629 align:start position:0%
+cool so so so these people who' done
+presentations<01:35:31.280><c> that</c><01:35:31.360><c> say</c><01:35:31.639><c> look</c><01:35:32.080><c> we've</c>
+
+01:35:32.629 --> 01:35:32.639 align:start position:0%
+presentations that say look we've
+
+
+01:35:32.639 --> 01:35:35.430 align:start position:0%
+presentations that say look we've
+distributed<01:35:33.199><c> all</c><01:35:33.360><c> these</c><01:35:33.480><c> opcs</c><01:35:34.199><c> to</c><01:35:34.480><c> like</c><01:35:34.800><c> well</c>
+
+01:35:35.430 --> 01:35:35.440 align:start position:0%
+distributed all these opcs to like well
+
+
+01:35:35.440 --> 01:35:42.149 align:start position:0%
+distributed all these opcs to like well
+say<01:35:36.119><c> um</c><01:35:36.880><c> rural</c><01:35:37.199><c> areas</c><01:35:37.679><c> Australia</c><01:35:38.239><c> because</c><01:35:38.480><c> I</c>
+
+01:35:42.149 --> 01:35:42.159 align:start position:0%
+
+
+
+01:35:42.159 --> 01:35:44.870 align:start position:0%
+
+watched<01:35:43.159><c> so</c><01:35:43.360><c> they</c><01:35:43.520><c> had</c><01:35:43.760><c> similar</c><01:35:44.600><c> you</c><01:35:44.719><c> think</c>
+
+01:35:44.870 --> 01:35:44.880 align:start position:0%
+watched so they had similar you think
+
+
+01:35:44.880 --> 01:35:46.470 align:start position:0%
+watched so they had similar you think
+they<01:35:45.159><c> have</c>
+
+01:35:46.470 --> 01:35:46.480 align:start position:0%
+they have
+
+
+01:35:46.480 --> 01:35:49.310 align:start position:0%
+they have
+more<01:35:47.480><c> I</c><01:35:47.560><c> have</c><01:35:47.679><c> to</c><01:35:47.880><c> say</c><01:35:48.480><c> my</c><01:35:48.639><c> experience</c><01:35:49.080><c> with</c>
+
+01:35:49.310 --> 01:35:49.320 align:start position:0%
+more I have to say my experience with
+
+
+01:35:49.320 --> 01:35:52.750 align:start position:0%
+more I have to say my experience with
+thec<01:35:50.320><c> was</c><01:35:50.800><c> was</c><01:35:51.600><c> donating</c><01:35:52.040><c> one</c><01:35:52.199><c> and</c><01:35:52.360><c> buying</c><01:35:52.639><c> one</c>
+
+01:35:52.750 --> 01:35:52.760 align:start position:0%
+thec was was donating one and buying one
+
+
+01:35:52.760 --> 01:35:54.390 align:start position:0%
+thec was was donating one and buying one
+for<01:35:52.960><c> my</c><01:35:53.199><c> kid</c>
+
+01:35:54.390 --> 01:35:54.400 align:start position:0%
+for my kid
+
+
+01:35:54.400 --> 01:35:58.149 align:start position:0%
+for my kid
+and<01:35:54.920><c> talking</c><01:35:55.239><c> to</c><01:35:55.400><c> other</c><01:35:55.639><c> people</c><01:35:56.639><c> that</c><01:35:56.880><c> were</c>
+
+01:35:58.149 --> 01:35:58.159 align:start position:0%
+and talking to other people that were
+
+
+01:35:58.159 --> 01:36:00.390 align:start position:0%
+and talking to other people that were
+frustrated
+
+01:36:00.390 --> 01:36:00.400 align:start position:0%
+frustrated
+
+
+01:36:00.400 --> 01:36:02.229 align:start position:0%
+frustrated
+and
+
+01:36:02.229 --> 01:36:02.239 align:start position:0%
+and
+
+
+01:36:02.239 --> 01:36:05.750 align:start position:0%
+and
+um<01:36:03.239><c> The</c><01:36:03.560><c> process</c><01:36:04.159><c> by</c><01:36:04.360><c> which</c><01:36:04.639><c> the</c><01:36:04.840><c> res</c><01:36:05.360><c> Pi</c><01:36:05.560><c> was</c>
+
+01:36:05.750 --> 01:36:05.760 align:start position:0%
+um The process by which the res Pi was
+
+
+01:36:05.760 --> 01:36:07.709 align:start position:0%
+um The process by which the res Pi was
+developed<01:36:06.320><c> and</c><01:36:06.520><c> and</c><01:36:06.719><c> really</c><01:36:07.280><c> I</c><01:36:07.320><c> mean</c><01:36:07.480><c> if</c><01:36:07.560><c> you</c>
+
+01:36:07.709 --> 01:36:07.719 align:start position:0%
+developed and and really I mean if you
+
+
+01:36:07.719 --> 01:36:10.310 align:start position:0%
+developed and and really I mean if you
+look<01:36:07.880><c> at</c><01:36:08.000><c> it</c><01:36:08.239><c> the</c><01:36:08.320><c> res</c><01:36:08.800><c> Pi</c><01:36:09.119><c> is</c><01:36:09.400><c> a</c><01:36:09.880><c> completely</c>
+
+01:36:10.310 --> 01:36:10.320 align:start position:0%
+look at it the res Pi is a completely
+
+
+01:36:10.320 --> 01:36:13.270 align:start position:0%
+look at it the res Pi is a completely
+different<01:36:10.560><c> animal</c><01:36:11.040><c> right</c><01:36:11.760><c> it's</c><01:36:12.159><c> it's</c><01:36:12.320><c> just</c>
+
+01:36:13.270 --> 01:36:13.280 align:start position:0%
+different animal right it's it's just
+
+
+01:36:13.280 --> 01:36:15.470 align:start position:0%
+different animal right it's it's just
+guts<01:36:14.280><c> whereas</c><01:36:14.600><c> the</c>
+
+01:36:15.470 --> 01:36:15.480 align:start position:0%
+guts whereas the
+
+
+01:36:15.480 --> 01:36:19.629 align:start position:0%
+guts whereas the
+OPC<01:36:16.480><c> was</c><01:36:16.719><c> designed</c><01:36:17.639><c> for</c><01:36:18.639><c> uh</c><01:36:18.760><c> challenging</c>
+
+01:36:19.629 --> 01:36:19.639 align:start position:0%
+OPC was designed for uh challenging
+
+
+01:36:19.639 --> 01:36:22.629 align:start position:0%
+OPC was designed for uh challenging
+environments<01:36:20.639><c> uh</c><01:36:20.760><c> alternative</c><01:36:21.400><c> power</c><01:36:22.360><c> uh</c><01:36:22.480><c> all</c>
+
+01:36:22.629 --> 01:36:22.639 align:start position:0%
+environments uh alternative power uh all
+
+
+01:36:22.639 --> 01:36:24.270 align:start position:0%
+environments uh alternative power uh all
+these<01:36:22.800><c> other</c><01:36:23.040><c> things</c><01:36:23.360><c> it</c>
+
+01:36:24.270 --> 01:36:24.280 align:start position:0%
+these other things it
+
+
+01:36:24.280 --> 01:36:29.550 align:start position:0%
+these other things it
+it's<01:36:24.400><c> a</c><01:36:24.520><c> full</c><01:36:25.360><c> solution</c><01:36:26.360><c> and</c><01:36:26.960><c> uh</c><01:36:27.480><c> I</c><01:36:27.560><c> don't</c><01:36:27.719><c> want</c>
+
+01:36:29.550 --> 01:36:29.560 align:start position:0%
+it's a full solution and uh I don't want
+
+
+01:36:29.560 --> 01:36:34.030 align:start position:0%
+it's a full solution and uh I don't want
+to<01:36:30.560><c> not</c><01:36:30.760><c> that</c><01:36:30.880><c> much</c><01:36:31.639><c> I</c><01:36:31.800><c> need</c><01:36:32.360><c> more</c>
+
+01:36:34.030 --> 01:36:34.040 align:start position:0%
+to not that much I need more
+
+
+01:36:34.040 --> 01:36:36.990 align:start position:0%
+to not that much I need more
+software<01:36:35.040><c> like</c><01:36:35.199><c> sugar</c><01:36:36.119><c> those</c><01:36:36.280><c> type</c><01:36:36.440><c> of</c><01:36:36.600><c> things</c>
+
+01:36:36.990 --> 01:36:37.000 align:start position:0%
+software like sugar those type of things
+
+
+01:36:37.000 --> 01:36:38.830 align:start position:0%
+software like sugar those type of things
+yeah<01:36:37.119><c> well</c><01:36:37.400><c> it's</c><01:36:37.600><c> sugar</c><01:36:38.000><c> that</c><01:36:38.239><c> really</c><01:36:38.480><c> annoyed</c>
+
+01:36:38.830 --> 01:36:38.840 align:start position:0%
+yeah well it's sugar that really annoyed
+
+
+01:36:38.840 --> 01:36:42.109 align:start position:0%
+yeah well it's sugar that really annoyed
+the<01:36:39.000><c> H</c><01:36:39.960><c> I</c><01:36:40.960><c> speak</c><01:36:41.199><c> to</c><01:36:41.360><c> that</c><01:36:41.480><c> not</c><01:36:41.639><c> about</c><01:36:41.800><c> the</c><01:36:41.880><c> O</c>
+
+01:36:42.109 --> 01:36:42.119 align:start position:0%
+the H I speak to that not about the O
+
+
+01:36:42.119 --> 01:36:44.109 align:start position:0%
+the H I speak to that not about the O
+booy<01:36:42.639><c> because</c><01:36:43.119><c> I</c><01:36:43.280><c> know</c><01:36:43.440><c> nothing</c><01:36:43.639><c> about</c><01:36:43.800><c> it</c><01:36:43.960><c> but</c>
+
+01:36:44.109 --> 01:36:44.119 align:start position:0%
+booy because I know nothing about it but
+
+
+01:36:44.119 --> 01:36:46.030 align:start position:0%
+booy because I know nothing about it but
+about<01:36:44.639><c> the</c><01:36:44.800><c> Raspberry</c><01:36:45.239><c> Pi</c><01:36:45.400><c> and</c><01:36:45.520><c> why</c><01:36:45.639><c> it</c><01:36:45.760><c> works</c>
+
+01:36:46.030 --> 01:36:46.040 align:start position:0%
+about the Raspberry Pi and why it works
+
+
+01:36:46.040 --> 01:36:48.629 align:start position:0%
+about the Raspberry Pi and why it works
+well<01:36:46.199><c> for</c><01:36:46.360><c> educational</c><01:36:47.280><c> initiatives</c><01:36:48.280><c> is</c>
+
+01:36:48.629 --> 01:36:48.639 align:start position:0%
+well for educational initiatives is
+
+
+01:36:48.639 --> 01:36:52.590 align:start position:0%
+well for educational initiatives is
+because<01:36:49.000><c> it</c><01:36:49.199><c> is</c><01:36:49.360><c> so</c><01:36:50.080><c> flexible</c><01:36:51.119><c> than</c><01:36:52.119><c> um</c>
+
+01:36:52.590 --> 01:36:52.600 align:start position:0%
+because it is so flexible than um
+
+
+01:36:52.600 --> 01:36:56.470 align:start position:0%
+because it is so flexible than um
+because<01:36:52.840><c> it</c><01:36:53.000><c> is</c><01:36:53.199><c> just</c><01:36:53.880><c> it's</c><01:36:54.480><c> and</c><01:36:54.880><c> you</c><01:36:55.360><c> know</c><01:36:56.360><c> you</c>
+
+01:36:56.470 --> 01:36:56.480 align:start position:0%
+because it is just it's and you know you
+
+
+01:36:56.480 --> 01:36:58.430 align:start position:0%
+because it is just it's and you know you
+can<01:36:56.800><c> easily</c><01:36:57.199><c> switch</c><01:36:57.560><c> out</c><01:36:58.000><c> the</c><01:36:58.119><c> operating</c>
+
+01:36:58.430 --> 01:36:58.440 align:start position:0%
+can easily switch out the operating
+
+
+01:36:58.440 --> 01:37:00.350 align:start position:0%
+can easily switch out the operating
+system<01:36:58.760><c> using</c><01:36:59.000><c> on</c><01:36:59.159><c> it</c><01:36:59.440><c> just</c><01:36:59.800><c> different</c><01:37:00.040><c> SD</c>
+
+01:37:00.350 --> 01:37:00.360 align:start position:0%
+system using on it just different SD
+
+
+01:37:00.360 --> 01:37:02.270 align:start position:0%
+system using on it just different SD
+card<01:37:00.600><c> put</c><01:37:00.719><c> it</c><01:37:00.840><c> on</c><01:37:01.040><c> there</c><01:37:01.639><c> uh</c><01:37:01.719><c> it</c><01:37:01.800><c> makes</c><01:37:02.000><c> a</c><01:37:02.159><c> much</c>
+
+01:37:02.270 --> 01:37:02.280 align:start position:0%
+card put it on there uh it makes a much
+
+
+01:37:02.280 --> 01:37:04.870 align:start position:0%
+card put it on there uh it makes a much
+more<01:37:02.440><c> flexible</c><01:37:02.840><c> thing</c><01:37:03.040><c> for</c><01:37:03.639><c> uh</c><01:37:04.520><c> the</c><01:37:04.679><c> best</c>
+
+01:37:04.870 --> 01:37:04.880 align:start position:0%
+more flexible thing for uh the best
+
+
+01:37:04.880 --> 01:37:06.629 align:start position:0%
+more flexible thing for uh the best
+educational<01:37:05.360><c> initiatives</c><01:37:05.920><c> to</c><01:37:06.199><c> naturally</c>
+
+01:37:06.629 --> 01:37:06.639 align:start position:0%
+educational initiatives to naturally
+
+
+01:37:06.639 --> 01:37:08.990 align:start position:0%
+educational initiatives to naturally
+flourish<01:37:07.520><c> for</c><01:37:07.679><c> example</c><01:37:08.080><c> rasbian</c><01:37:08.760><c> which</c><01:37:08.880><c> is</c>
+
+01:37:08.990 --> 01:37:09.000 align:start position:0%
+flourish for example rasbian which is
+
+
+01:37:09.000 --> 01:37:13.470 align:start position:0%
+flourish for example rasbian which is
+the<01:37:09.119><c> Debian</c><01:37:09.840><c> drro</c><01:37:10.840><c> um</c><01:37:11.280><c> made</c><01:37:11.560><c> for</c><01:37:11.800><c> it</c><01:37:12.600><c> you</c><01:37:13.040><c> comes</c>
+
+01:37:13.470 --> 01:37:13.480 align:start position:0%
+the Debian drro um made for it you comes
+
+
+01:37:13.480 --> 01:37:17.870 align:start position:0%
+the Debian drro um made for it you comes
+with<01:37:14.400><c> a</c><01:37:15.000><c> scratch</c><01:37:15.800><c> comes</c><01:37:16.199><c> with</c><01:37:17.199><c> a</c><01:37:17.560><c> set</c><01:37:17.679><c> of</c>
+
+01:37:17.870 --> 01:37:17.880 align:start position:0%
+with a scratch comes with a set of
+
+
+01:37:17.880 --> 01:37:20.030 align:start position:0%
+with a scratch comes with a set of
+python<01:37:18.320><c> games</c><01:37:18.679><c> that</c><01:37:18.760><c> are</c><01:37:18.920><c> prade</c><01:37:19.800><c> you</c><01:37:19.920><c> can</c>
+
+01:37:20.030 --> 01:37:20.040 align:start position:0%
+python games that are prade you can
+
+
+01:37:20.040 --> 01:37:22.149 align:start position:0%
+python games that are prade you can
+learn<01:37:20.199><c> to</c><01:37:20.400><c> program</c><01:37:20.760><c> that</c><01:37:20.920><c> way</c><01:37:21.440><c> but</c><01:37:21.600><c> dat</c><01:37:21.880><c> fruit</c>
+
+01:37:22.149 --> 01:37:22.159 align:start position:0%
+learn to program that way but dat fruit
+
+
+01:37:22.159 --> 01:37:24.109 align:start position:0%
+learn to program that way but dat fruit
+has<01:37:22.360><c> taken</c><01:37:22.840><c> that</c><01:37:23.239><c> particular</c><01:37:23.520><c> ular</c>
+
+01:37:24.109 --> 01:37:24.119 align:start position:0%
+has taken that particular ular
+
+
+01:37:24.119 --> 01:37:25.950 align:start position:0%
+has taken that particular ular
+distribution<01:37:24.760><c> and</c><01:37:25.000><c> made</c><01:37:25.600><c> their</c><01:37:25.760><c> own</c>
+
+01:37:25.950 --> 01:37:25.960 align:start position:0%
+distribution and made their own
+
+
+01:37:25.960 --> 01:37:27.430 align:start position:0%
+distribution and made their own
+distribution<01:37:26.480><c> which</c><01:37:26.639><c> has</c><01:37:26.800><c> more</c><01:37:27.000><c> Educational</c>
+
+01:37:27.430 --> 01:37:27.440 align:start position:0%
+distribution which has more Educational
+
+
+01:37:27.440 --> 01:37:29.229 align:start position:0%
+distribution which has more Educational
+Tools<01:37:27.719><c> on</c><01:37:27.880><c> top</c><01:37:28.040><c> of</c><01:37:28.159><c> that</c><01:37:28.520><c> specifically</c><01:37:29.040><c> people</c>
+
+01:37:29.229 --> 01:37:29.239 align:start position:0%
+Tools on top of that specifically people
+
+
+01:37:29.239 --> 01:37:31.189 align:start position:0%
+Tools on top of that specifically people
+wanting<01:37:29.440><c> to</c><01:37:29.560><c> learn</c><01:37:29.760><c> about</c><01:37:29.960><c> electronics</c><01:37:30.960><c> and</c>
+
+01:37:31.189 --> 01:37:31.199 align:start position:0%
+wanting to learn about electronics and
+
+
+01:37:31.199 --> 01:37:34.350 align:start position:0%
+wanting to learn about electronics and
+such<01:37:32.199><c> um</c><01:37:32.480><c> so</c><01:37:32.679><c> I</c><01:37:32.800><c> think</c><01:37:33.639><c> the</c><01:37:33.760><c> cool</c><01:37:34.040><c> thing</c><01:37:34.199><c> about</c>
+
+01:37:34.350 --> 01:37:34.360 align:start position:0%
+such um so I think the cool thing about
+
+
+01:37:34.360 --> 01:37:36.070 align:start position:0%
+such um so I think the cool thing about
+the<01:37:34.480><c> raspberry</c><01:37:34.840><c> Piper</c><01:37:35.080><c> educational</c><01:37:35.600><c> stuff</c><01:37:35.880><c> is</c>
+
+01:37:36.070 --> 01:37:36.080 align:start position:0%
+the raspberry Piper educational stuff is
+
+
+01:37:36.080 --> 01:37:39.070 align:start position:0%
+the raspberry Piper educational stuff is
+that<01:37:36.760><c> uh</c><01:37:37.440><c> you</c><01:37:37.560><c> can</c><01:37:37.760><c> get</c><01:37:38.000><c> actual</c><01:37:38.400><c> Educators</c><01:37:38.920><c> to</c>
+
+01:37:39.070 --> 01:37:39.080 align:start position:0%
+that uh you can get actual Educators to
+
+
+01:37:39.080 --> 01:37:41.189 align:start position:0%
+that uh you can get actual Educators to
+get<01:37:39.280><c> them</c><01:37:39.639><c> to</c><01:37:39.840><c> learn</c><01:37:40.159><c> about</c><01:37:40.360><c> it</c><01:37:40.679><c> and</c><01:37:40.840><c> then</c><01:37:40.960><c> to</c>
+
+01:37:41.189 --> 01:37:41.199 align:start position:0%
+get them to learn about it and then to
+
+
+01:37:41.199 --> 01:37:43.109 align:start position:0%
+get them to learn about it and then to
+build<01:37:41.520><c> their</c><01:37:41.679><c> own</c><01:37:41.960><c> systems</c><01:37:42.320><c> on</c><01:37:42.599><c> top</c><01:37:42.760><c> of</c><01:37:42.920><c> it</c>
+
+01:37:43.109 --> 01:37:43.119 align:start position:0%
+build their own systems on top of it
+
+
+01:37:43.119 --> 01:37:45.390 align:start position:0%
+build their own systems on top of it
+which<01:37:43.320><c> can</c><01:37:43.520><c> then</c><01:37:43.719><c> spread</c><01:37:44.080><c> out</c><01:37:45.080><c> while</c><01:37:45.320><c> of</c>
+
+01:37:45.390 --> 01:37:45.400 align:start position:0%
+which can then spread out while of
+
+
+01:37:45.400 --> 01:37:46.629 align:start position:0%
+which can then spread out while of
+course<01:37:45.560><c> you</c><01:37:45.639><c> can</c><01:37:45.800><c> install</c><01:37:46.119><c> whatever</c><01:37:46.360><c> you</c><01:37:46.440><c> want</c>
+
+01:37:46.629 --> 01:37:46.639 align:start position:0%
+course you can install whatever you want
+
+
+01:37:46.639 --> 01:37:48.350 align:start position:0%
+course you can install whatever you want
+although<01:37:46.920><c> OPC</c><01:37:47.480><c> assum</c><01:37:47.760><c> it's</c><01:37:47.960><c> computer</c><01:37:48.280><c> that</c>
+
+01:37:48.350 --> 01:37:48.360 align:start position:0%
+although OPC assum it's computer that
+
+
+01:37:48.360 --> 01:37:51.470 align:start position:0%
+although OPC assum it's computer that
+you<01:37:48.440><c> can</c><01:37:48.560><c> install</c><01:37:48.880><c> stuff</c><01:37:49.080><c> on</c><01:37:50.000><c> I</c><01:37:50.280><c> think</c><01:37:51.080><c> um</c><01:37:51.400><c> you</c>
+
+01:37:51.470 --> 01:37:51.480 align:start position:0%
+you can install stuff on I think um you
+
+
+01:37:51.480 --> 01:37:53.510 align:start position:0%
+you can install stuff on I think um you
+know<01:37:51.599><c> it</c><01:37:51.719><c> sort</c><01:37:51.880><c> of</c><01:37:52.159><c> had</c><01:37:52.360><c> the</c><01:37:52.599><c> basic</c><01:37:53.000><c> like</c><01:37:53.199><c> page</c>
+
+01:37:53.510 --> 01:37:53.520 align:start position:0%
+know it sort of had the basic like page
+
+
+01:37:53.520 --> 01:37:55.109 align:start position:0%
+know it sort of had the basic like page
+here's<01:37:53.719><c> your</c><01:37:53.920><c> operating</c><01:37:54.239><c> system</c><01:37:54.760><c> here</c><01:37:54.880><c> it</c><01:37:54.960><c> is</c>
+
+01:37:55.109 --> 01:37:55.119 align:start position:0%
+here's your operating system here it is
+
+
+01:37:55.119 --> 01:37:56.830 align:start position:0%
+here's your operating system here it is
+one<01:37:55.400><c> package</c><01:37:55.880><c> this</c><01:37:55.960><c> is</c><01:37:56.119><c> something</c><01:37:56.480><c> that</c><01:37:56.719><c> I</c>
+
+01:37:56.830 --> 01:37:56.840 align:start position:0%
+one package this is something that I
+
+
+01:37:56.840 --> 01:37:59.510 align:start position:0%
+one package this is something that I
+think<01:37:56.960><c> is</c><01:37:57.119><c> going</c><01:37:57.280><c> to</c><01:37:57.520><c> evolve</c><01:37:58.239><c> much</c>
+
+01:37:59.510 --> 01:37:59.520 align:start position:0%
+think is going to evolve much
+
+
+01:37:59.520 --> 01:38:02.870 align:start position:0%
+think is going to evolve much
+more<01:38:00.520><c> so</c><01:38:01.080><c> we</c><01:38:01.280><c> all</c><01:38:01.560><c> need</c><01:38:01.760><c> to</c><01:38:01.960><c> be</c><01:38:02.199><c> out</c><01:38:02.360><c> of</c><01:38:02.639><c> this</c>
+
+01:38:02.870 --> 01:38:02.880 align:start position:0%
+more so we all need to be out of this
+
+
+01:38:02.880 --> 01:38:05.229 align:start position:0%
+more so we all need to be out of this
+room<01:38:03.159><c> in</c><01:38:03.360><c> about</c><01:38:03.800><c> five</c><01:38:04.080><c> minutes</c><01:38:04.679><c> so</c><01:38:04.840><c> that</c><01:38:05.000><c> our</c>
+
+01:38:05.229 --> 01:38:05.239 align:start position:0%
+room in about five minutes so that our
+
+
+01:38:05.239 --> 01:38:08.790 align:start position:0%
+room in about five minutes so that our
+gracious<01:38:05.679><c> host</c><01:38:05.960><c> can</c><01:38:06.159><c> go</c><01:38:06.360><c> home</c><01:38:07.239><c> um</c><01:38:07.960><c> but</c><01:38:08.440><c> uh</c><01:38:08.679><c> I</c>
+
+01:38:08.790 --> 01:38:08.800 align:start position:0%
+gracious host can go home um but uh I
+
+
+01:38:08.800 --> 01:38:10.430 align:start position:0%
+gracious host can go home um but uh I
+believe<01:38:09.119><c> Pete's</c><01:38:09.480><c> going</c><01:38:09.560><c> to</c><01:38:09.800><c> bring</c><01:38:10.040><c> up</c><01:38:10.239><c> the</c>
+
+01:38:10.430 --> 01:38:10.440 align:start position:0%
+believe Pete's going to bring up the
+
+
+01:38:10.440 --> 01:38:12.629 align:start position:0%
+believe Pete's going to bring up the
+details<01:38:10.960><c> about</c><01:38:11.320><c> our</c><01:38:11.639><c> Saturday</c><01:38:12.080><c> meeting</c>
+
+01:38:12.629 --> 01:38:12.639 align:start position:0%
+details about our Saturday meeting
+
+
+01:38:12.639 --> 01:38:15.470 align:start position:0%
+details about our Saturday meeting
+before<01:38:13.040><c> y'all</c><01:38:13.360><c> leave</c><01:38:13.800><c> now</c><01:38:14.040><c> don't</c><01:38:14.239><c> leave</c><01:38:14.560><c> yet</c>
+
+01:38:15.470 --> 01:38:15.480 align:start position:0%
+before y'all leave now don't leave yet
+
+
+01:38:15.480 --> 01:38:20.470 align:start position:0%
+before y'all leave now don't leave yet
+because<01:38:16.119><c> Ellen</c><01:38:16.679><c> wants</c><01:38:16.960><c> to</c><01:38:17.199><c> give</c><01:38:17.400><c> away</c><01:38:17.719><c> some</c>
+
+01:38:20.470 --> 01:38:20.480 align:start position:0%
+
+
+
+01:38:20.480 --> 01:38:23.189 align:start position:0%
+
+books<01:38:21.480><c> have</c><01:38:21.639><c> some</c><01:38:21.920><c> questions</c><01:38:22.440><c> all</c><01:38:22.599><c> right</c><01:38:23.000><c> uh</c>
+
+01:38:23.189 --> 01:38:23.199 align:start position:0%
+books have some questions all right uh
+
+
+01:38:23.199 --> 01:38:24.790 align:start position:0%
+books have some questions all right uh
+first<01:38:23.639><c> all</c><01:38:23.719><c> thanks</c><01:38:23.920><c> everybody</c><01:38:24.199><c> for</c><01:38:24.360><c> coming</c><01:38:24.679><c> it</c>
+
+01:38:24.790 --> 01:38:24.800 align:start position:0%
+first all thanks everybody for coming it
+
+
+01:38:24.800 --> 01:38:26.430 align:start position:0%
+first all thanks everybody for coming it
+was<01:38:25.280><c> it</c><01:38:25.360><c> was</c><01:38:25.520><c> really</c><01:38:25.760><c> really</c><01:38:25.920><c> awesome</c><01:38:26.159><c> to</c><01:38:26.280><c> see</c>
+
+01:38:26.430 --> 01:38:26.440 align:start position:0%
+was it was really really awesome to see
+
+
+01:38:26.440 --> 01:38:27.550 align:start position:0%
+was it was really really awesome to see
+such<01:38:26.560><c> a</c><01:38:26.679><c> crowd</c><01:38:26.960><c> thank</c><01:38:27.080><c> you</c><01:38:27.199><c> so</c><01:38:27.280><c> much</c><01:38:27.400><c> for</c>
+
+01:38:27.550 --> 01:38:27.560 align:start position:0%
+such a crowd thank you so much for
+
+
+01:38:27.560 --> 01:38:28.669 align:start position:0%
+such a crowd thank you so much for
+coming<01:38:27.920><c> great</c>
+
+01:38:28.669 --> 01:38:28.679 align:start position:0%
+coming great
+
+
+01:38:28.679 --> 01:38:32.229 align:start position:0%
+coming great
+time
+
+01:38:32.229 --> 01:38:32.239 align:start position:0%
+
+
+
+01:38:32.239 --> 01:38:35.430 align:start position:0%
+
+okay<01:38:33.239><c> so</c><01:38:33.520><c> we</c><01:38:33.719><c> have</c><01:38:34.080><c> we</c><01:38:34.239><c> have</c><01:38:34.480><c> two</c><01:38:34.840><c> books</c>
+
+01:38:35.430 --> 01:38:35.440 align:start position:0%
+okay so we have we have two books
+
+
+01:38:35.440 --> 01:38:37.910 align:start position:0%
+okay so we have we have two books
+Raspberry<01:38:35.920><c> Pi</c><01:38:36.119><c> books</c><01:38:36.320><c> from</c><01:38:36.480><c> the</c><01:38:36.760><c> pragmatic</c><01:38:37.760><c> uh</c>
+
+01:38:37.910 --> 01:38:37.920 align:start position:0%
+Raspberry Pi books from the pragmatic uh
+
+
+01:38:37.920 --> 01:38:40.070 align:start position:0%
+Raspberry Pi books from the pragmatic uh
+programmers<01:38:38.520><c> publishing</c><01:38:39.119><c> and</c><01:38:39.560><c> I</c><01:38:39.880><c> understand</c>
+
+01:38:40.070 --> 01:38:40.080 align:start position:0%
+programmers publishing and I understand
+
+
+01:38:40.080 --> 01:38:41.950 align:start position:0%
+programmers publishing and I understand
+someone<01:38:40.639><c> in</c><01:38:40.880><c> in</c><01:38:41.000><c> attendance</c><01:38:41.400><c> works</c><01:38:41.719><c> there</c><01:38:41.840><c> and</c>
+
+01:38:41.950 --> 01:38:41.960 align:start position:0%
+someone in in attendance works there and
+
+
+01:38:41.960 --> 01:38:44.510 align:start position:0%
+someone in in attendance works there and
+donated<01:38:42.480><c> them</c><01:38:43.480><c> thank</c><01:38:43.639><c> you</c><01:38:43.800><c> very</c><01:38:44.000><c> much</c><01:38:44.280><c> it's</c>
+
+01:38:44.510 --> 01:38:44.520 align:start position:0%
+donated them thank you very much it's
+
+
+01:38:44.520 --> 01:38:47.629 align:start position:0%
+donated them thank you very much it's
+awesome<01:38:45.000><c> to</c><01:38:45.159><c> have</c><01:38:45.280><c> something</c><01:38:45.760><c> about</c><01:38:46.599><c> um</c><01:38:47.280><c> so</c>
+
+01:38:47.629 --> 01:38:47.639 align:start position:0%
+awesome to have something about um so
+
+
+01:38:47.639 --> 01:38:49.870 align:start position:0%
+awesome to have something about um so
+the<01:38:47.719><c> way</c><01:38:47.840><c> we're</c><01:38:47.960><c> going</c><01:38:48.040><c> to</c><01:38:48.159><c> do</c><01:38:48.320><c> this</c><01:38:48.599><c> is</c><01:38:49.239><c> uh</c><01:38:49.719><c> I'm</c>
+
+01:38:49.870 --> 01:38:49.880 align:start position:0%
+the way we're going to do this is uh I'm
+
+
+01:38:49.880 --> 01:38:51.910 align:start position:0%
+the way we're going to do this is uh I'm
+going<01:38:50.000><c> to</c><01:38:50.159><c> ask</c><01:38:50.320><c> a</c><01:38:50.560><c> question</c><01:38:51.199><c> and</c><01:38:51.440><c> if</c><01:38:51.719><c> the</c>
+
+01:38:51.910 --> 01:38:51.920 align:start position:0%
+going to ask a question and if the
+
+
+01:38:51.920 --> 01:38:53.310 align:start position:0%
+going to ask a question and if the
+answer<01:38:52.159><c> to</c><01:38:52.280><c> that</c><01:38:52.440><c> question</c><01:38:52.719><c> is</c><01:38:52.840><c> applicable</c><01:38:53.239><c> to</c>
+
+01:38:53.310 --> 01:38:53.320 align:start position:0%
+answer to that question is applicable to
+
+
+01:38:53.320 --> 01:38:54.550 align:start position:0%
+answer to that question is applicable to
+you<01:38:53.520><c> raise</c><01:38:53.679><c> your</c><01:38:53.800><c> hand</c><01:38:53.960><c> and</c><01:38:54.040><c> you</c><01:38:54.159><c> may</c><01:38:54.320><c> get</c><01:38:54.400><c> a</c>
+
+01:38:54.550 --> 01:38:54.560 align:start position:0%
+you raise your hand and you may get a
+
+
+01:38:54.560 --> 01:38:57.709 align:start position:0%
+you raise your hand and you may get a
+book<01:38:55.159><c> first</c><01:38:55.480><c> question</c><01:38:55.880><c> is</c><01:38:56.880><c> um</c><01:38:57.400><c> is</c><01:38:57.520><c> there</c>
+
+01:38:57.709 --> 01:38:57.719 align:start position:0%
+book first question is um is there
+
+
+01:38:57.719 --> 01:38:59.669 align:start position:0%
+book first question is um is there
+anybody<01:38:58.159><c> here</c><01:38:58.520><c> who</c><01:38:58.679><c> is</c><01:38:58.920><c> dragged</c><01:38:59.280><c> out</c><01:38:59.520><c> here</c>
+
+01:38:59.669 --> 01:38:59.679 align:start position:0%
+anybody here who is dragged out here
+
+
+01:38:59.679 --> 01:39:01.589 align:start position:0%
+anybody here who is dragged out here
+tonight<01:39:00.080><c> by</c><01:39:00.199><c> a</c><01:39:00.360><c> friend</c><01:39:00.639><c> or</c><01:39:00.840><c> family</c><01:39:01.159><c> member</c>
+
+01:39:01.589 --> 01:39:01.599 align:start position:0%
+tonight by a friend or family member
+
+
+01:39:01.599 --> 01:39:04.229 align:start position:0%
+tonight by a friend or family member
+maybe<01:39:01.920><c> somebody</c><01:39:02.320><c> they</c><01:39:02.679><c> just</c><01:39:02.840><c> met</c><01:39:03.000><c> today</c><01:39:03.280><c> and</c>
+
+01:39:04.229 --> 01:39:04.239 align:start position:0%
+maybe somebody they just met today and
+
+
+01:39:04.239 --> 01:39:07.109 align:start position:0%
+maybe somebody they just met today and
+like<01:39:05.239><c> somebody</c><01:39:06.159><c> you</c><01:39:06.360><c> met</c><01:39:06.599><c> you</c><01:39:06.679><c> were</c><01:39:06.800><c> dragged</c>
+
+01:39:07.109 --> 01:39:07.119 align:start position:0%
+like somebody you met you were dragged
+
+
+01:39:07.119 --> 01:39:08.629 align:start position:0%
+like somebody you met you were dragged
+here
+
+01:39:08.629 --> 01:39:08.639 align:start position:0%
+here
+
+
+01:39:08.639 --> 01:39:13.470 align:start position:0%
+here
+today<01:39:09.639><c> who</c><01:39:09.760><c> is</c>
+
+01:39:13.470 --> 01:39:13.480 align:start position:0%
+
+
+
+01:39:13.480 --> 01:39:18.030 align:start position:0%
+
+responsible<01:39:14.480><c> an</c><01:39:14.639><c> evil</c>
+
+01:39:18.030 --> 01:39:18.040 align:start position:0%
+
+
+
+01:39:18.040 --> 01:39:26.430 align:start position:0%
+
+man<01:39:19.040><c> would</c><01:39:19.119><c> you</c><01:39:19.280><c> like</c><01:39:19.400><c> a</c><01:39:19.560><c> book</c>
+
+01:39:26.430 --> 01:39:26.440 align:start position:0%
+
+
+
+01:39:26.440 --> 01:39:28.990 align:start position:0%
+
+there<01:39:26.560><c> you</c>
+
+01:39:28.990 --> 01:39:29.000 align:start position:0%
+
+
+
+01:39:29.000 --> 01:39:33.189 align:start position:0%
+
+go<01:39:30.000><c> all</c><01:39:30.119><c> right</c><01:39:30.920><c> the</c><01:39:31.400><c> second</c><01:39:31.719><c> book</c><01:39:32.199><c> we'll</c><01:39:32.480><c> go</c><01:39:32.679><c> to</c>
+
+01:39:33.189 --> 01:39:33.199 align:start position:0%
+go all right the second book we'll go to
+
+
+01:39:33.199 --> 01:39:35.310 align:start position:0%
+go all right the second book we'll go to
+whoever<01:39:33.800><c> never</c><01:39:34.080><c> heard</c><01:39:34.320><c> of</c><01:39:34.400><c> the</c><01:39:34.560><c> raspberry</c><01:39:35.040><c> pie</c>
+
+01:39:35.310 --> 01:39:35.320 align:start position:0%
+whoever never heard of the raspberry pie
+
+
+01:39:35.320 --> 01:39:44.430 align:start position:0%
+whoever never heard of the raspberry pie
+before<01:39:35.639><c> tonight</c><01:39:36.080><c> does</c><01:39:36.280><c> anybody</c><01:39:36.679><c> like</c><01:39:37.520><c> we</c><01:39:37.719><c> have</c>
+
+01:39:44.430 --> 01:39:44.440 align:start position:0%
+
+
+
+01:39:44.440 --> 01:39:46.390 align:start position:0%
+
+one<01:39:45.440><c> and</c><01:39:45.560><c> that's</c><01:39:45.719><c> all</c><01:39:45.800><c> I</c><01:39:45.920><c> have</c><01:39:46.040><c> thanks</c><01:39:46.239><c> again</c>
+
+01:39:46.390 --> 01:39:46.400 align:start position:0%
+one and that's all I have thanks again
+
+
+01:39:46.400 --> 01:39:50.350 align:start position:0%
+one and that's all I have thanks again
+for<01:39:46.520><c> coming</c><01:39:47.360><c> thank</c><01:39:47.520><c> you</c><01:39:48.360><c> so</c><01:39:48.760><c> we</c><01:39:49.000><c> meet</c><01:39:49.480><c> at</c><01:39:50.040><c> the</c>
+
+01:39:50.350 --> 01:39:50.360 align:start position:0%
+for coming thank you so we meet at the
+
+
+01:39:50.360 --> 01:39:54.800 align:start position:0%
+for coming thank you so we meet at the
+bar<01:39:50.760><c> at</c><01:39:51.040><c> B</c><01:39:51.400><c> Wings</c><01:39:51.800><c> Over</c>
+
diff --git a/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.ffprobe.json b/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.ffprobe.json
new file mode 100644
index 0000000..c89dc78
--- /dev/null
+++ b/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.ffprobe.json
@@ -0,0 +1,130 @@
+{
+ "streams": [
+ {
+ "index": 0,
+ "codec_name": "h264",
+ "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
+ "profile": "Main",
+ "codec_type": "video",
+ "codec_tag_string": "[0][0][0][0]",
+ "codec_tag": "0x0000",
+ "width": 854,
+ "height": 480,
+ "coded_width": 854,
+ "coded_height": 480,
+ "closed_captions": 0,
+ "film_grain": 0,
+ "has_b_frames": 1,
+ "sample_aspect_ratio": "1:1",
+ "display_aspect_ratio": "427:240",
+ "pix_fmt": "yuv420p",
+ "level": 31,
+ "color_range": "tv",
+ "color_space": "bt709",
+ "color_transfer": "bt709",
+ "color_primaries": "bt709",
+ "chroma_location": "left",
+ "field_order": "progressive",
+ "refs": 1,
+ "is_avc": "true",
+ "nal_length_size": "4",
+ "r_frame_rate": "30/1",
+ "avg_frame_rate": "30/1",
+ "time_base": "1/1000",
+ "start_pts": 0,
+ "start_time": "0.000000",
+ "bits_per_raw_sample": "8",
+ "extradata_size": 44,
+ "disposition": {
+ "default": 1,
+ "dub": 0,
+ "original": 0,
+ "comment": 0,
+ "lyrics": 0,
+ "karaoke": 0,
+ "forced": 0,
+ "hearing_impaired": 0,
+ "visual_impaired": 0,
+ "clean_effects": 0,
+ "attached_pic": 0,
+ "timed_thumbnails": 0,
+ "non_diegetic": 0,
+ "captions": 0,
+ "descriptions": 0,
+ "metadata": 0,
+ "dependent": 0,
+ "still_image": 0,
+ "multilayer": 0
+ },
+ "tags": {
+ "HANDLER_NAME": "ISO Media file produced by Google Inc.",
+ "VENDOR_ID": "[0][0][0][0]",
+ "DURATION": "01:39:52.866000000"
+ }
+ },
+ {
+ "index": 1,
+ "codec_name": "opus",
+ "codec_long_name": "Opus (Opus Interactive Audio Codec)",
+ "codec_type": "audio",
+ "codec_tag_string": "[0][0][0][0]",
+ "codec_tag": "0x0000",
+ "sample_fmt": "fltp",
+ "sample_rate": "48000",
+ "channels": 2,
+ "channel_layout": "stereo",
+ "bits_per_sample": 0,
+ "initial_padding": 312,
+ "r_frame_rate": "0/0",
+ "avg_frame_rate": "0/0",
+ "time_base": "1/1000",
+ "start_pts": 0,
+ "start_time": "0.000000",
+ "extradata_size": 19,
+ "disposition": {
+ "default": 1,
+ "dub": 0,
+ "original": 0,
+ "comment": 0,
+ "lyrics": 0,
+ "karaoke": 0,
+ "forced": 0,
+ "hearing_impaired": 0,
+ "visual_impaired": 0,
+ "clean_effects": 0,
+ "attached_pic": 0,
+ "timed_thumbnails": 0,
+ "non_diegetic": 0,
+ "captions": 0,
+ "descriptions": 0,
+ "metadata": 0,
+ "dependent": 0,
+ "still_image": 0,
+ "multilayer": 0
+ },
+ "tags": {
+ "language": "eng",
+ "DURATION": "01:39:52.928000000"
+ }
+ }
+ ],
+ "format": {
+ "filename": "archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.mkv",
+ "nb_streams": 2,
+ "nb_programs": 0,
+ "nb_stream_groups": 0,
+ "format_name": "matroska,webm",
+ "format_long_name": "Matroska / WebM",
+ "start_time": "0.000000",
+ "duration": "5992.928000",
+ "size": "363946032",
+ "bit_rate": "485834",
+ "probe_score": 100,
+ "tags": {
+ "COMPATIBLE_BRANDS": "iso6avc1mp41",
+ "MAJOR_BRAND": "dash",
+ "MINOR_VERSION": "0",
+ "ENCODER": "Lavf61.7.103"
+ }
+ }
+}
diff --git a/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.info.json b/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.info.json
new file mode 100644
index 0000000..f792104
--- /dev/null
+++ b/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.info.json
@@ -0,0 +1 @@
+{"id": "fDjpAHbB-Mg", "title": "TriLUG meeting 10 Jan 2013 -- RPi", "formats": [{"format_id": "sb3", "format_note": "storyboard", "ext": "mhtml", "protocol": "mhtml", "acodec": "none", "vcodec": "none", "url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L0/default.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLAXr7j0sF8zd9K4bMmxPgaHFNuA6A", "width": 48, "height": 27, "fps": 0.01668613382279326, "rows": 10, "columns": 10, "fragments": [{"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L0/default.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLAXr7j0sF8zd9K4bMmxPgaHFNuA6A", "duration": 5993.0}], "audio_ext": "none", "video_ext": "none", "vbr": 0, "abr": 0, "resolution": "48x27", "aspect_ratio": 1.78, "http_headers": {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-us,en;q=0.5", "Sec-Fetch-Mode": "navigate"}, "format": "sb3 - 48x27 (storyboard)"}, {"format_id": "sb2", "format_note": "storyboard", "ext": "mhtml", "protocol": "mhtml", "acodec": "none", "vcodec": "none", "url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L1/M$M.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLD7RR-d6rgOsJeUliGrQ21J_AzTow", "width": 80, "height": 45, "fps": 0.10028366427498749, "rows": 10, "columns": 10, "fragments": [{"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L1/M0.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLD7RR-d6rgOsJeUliGrQ21J_AzTow", "duration": 997.171381031614}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L1/M1.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLD7RR-d6rgOsJeUliGrQ21J_AzTow", "duration": 997.171381031614}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L1/M2.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLD7RR-d6rgOsJeUliGrQ21J_AzTow", "duration": 997.171381031614}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L1/M3.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLD7RR-d6rgOsJeUliGrQ21J_AzTow", "duration": 997.171381031614}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L1/M4.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLD7RR-d6rgOsJeUliGrQ21J_AzTow", "duration": 997.171381031614}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L1/M5.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLD7RR-d6rgOsJeUliGrQ21J_AzTow", "duration": 997.171381031614}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L1/M6.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLD7RR-d6rgOsJeUliGrQ21J_AzTow", "duration": 9.971713810316032}], "audio_ext": "none", "video_ext": "none", "vbr": 0, "abr": 0, "resolution": "80x45", "aspect_ratio": 1.78, "http_headers": {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-us,en;q=0.5", "Sec-Fetch-Mode": "navigate"}, "format": "sb2 - 80x45 (storyboard)"}, {"format_id": "sb1", "format_note": "storyboard", "ext": "mhtml", "protocol": "mhtml", "acodec": "none", "vcodec": "none", "url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M$M.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "width": 160, "height": 90, "fps": 0.10028366427498749, "rows": 5, "columns": 5, "fragments": [{"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M0.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M1.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M2.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M3.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M4.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M5.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M6.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M7.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M8.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M9.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M10.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M11.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M12.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M13.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M14.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M15.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M16.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M17.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M18.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M19.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M20.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M21.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M22.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M23.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 249.2928452579035}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L2/M24.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLBe5ezMwVit3NT_4RVe94AUNK6NCQ", "duration": 9.971713810316032}], "audio_ext": "none", "video_ext": "none", "vbr": 0, "abr": 0, "resolution": "160x90", "aspect_ratio": 1.78, "http_headers": {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-us,en;q=0.5", "Sec-Fetch-Mode": "navigate"}, "format": "sb1 - 160x90 (storyboard)"}, {"format_id": "sb0", "format_note": "storyboard", "ext": "mhtml", "protocol": "mhtml", "acodec": "none", "vcodec": "none", "url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M$M.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "width": 320, "height": 180, "fps": 0.10028366427498749, "rows": 3, "columns": 3, "fragments": [{"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M0.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M1.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M2.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M3.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M4.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M5.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M6.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M7.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M8.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M9.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M10.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M11.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M12.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M13.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M14.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M15.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M16.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M17.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M18.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M19.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M20.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M21.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M22.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M23.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M24.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M25.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M26.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M27.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M28.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M29.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M30.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M31.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M32.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M33.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M34.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M35.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M36.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M37.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M38.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M39.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M40.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M41.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M42.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M43.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M44.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M45.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M46.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M47.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M48.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M49.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M50.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M51.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M52.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M53.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M54.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M55.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M56.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M57.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M58.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M59.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M60.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M61.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M62.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M63.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M64.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M65.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 89.74542429284527}, {"url": "https://i.ytimg.com/sb/fDjpAHbB-Mg/storyboard3_L3/M66.jpg?sqp=-oaymwGhAUg48quKqQOYAYgBAZUBAAAEQpgBMqABPKgBBLIBQBANDBAVHyYtDg4PEhcrLCkPDhAVHyoyKQ8RFBgmPTgtERQeKjFLRzYVHCkuOUdNPyUuNz1HUlFFM0BCQ0xERkO6AUARERUjRENDQxETFi9DQ0NDFRYpQ0NDQ0MjL0NDQ0NDQ0RDQ0NDQ0JCQ0NDQ0NCQkJDQ0NDQkJCQkNDQ0JCQkJCovOX_wMGCMXCxrsG&sigh=rs$AOn4CLCr4nNx50NiICV9Bz_EggCN_4CLHg", "duration": 69.80199667221223}], "audio_ext": "none", "video_ext": "none", "vbr": 0, "abr": 0, "resolution": "320x180", "aspect_ratio": 1.78, "http_headers": {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-us,en;q=0.5", "Sec-Fetch-Mode": "navigate"}, "format": "sb0 - 320x180 (storyboard)"}, {"asr": 22050, "filesize": 36544819, "format_id": "139", "format_note": "low", "source_preference": -1, "audio_channels": 2, "quality": 2.0, "has_drm": false, "tbr": 48.783, "filesize_approx": 36544705, "language": "en", "language_preference": -1, "ext": "m4a", "vcodec": "none", "acodec": "mp4a.40.5", "container": "m4a_dash", "url": "https://rr6---sn-bvvbaxivnuxqjvm-a5ms.googlevideo.com/videoplayback?expire=1786330337&ei=gOh4at-uO4iLsfIPq5KKuQw&ip=2600%3A8802%3Ab00%3A2c4%3A56bf%3A64ff%3Afe7a%3A851d&id=o-AImKjYZziBmRM2Pki-otZAWPORgyFpDDb4lJM25oYEZk&itag=139&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&cps=271&met=1786308737%2C&mh=35&mm=31%2C29&mn=sn-bvvbaxivnuxqjvm-a5ms%2Csn-a5meknsy&ms=au%2Crdu&mv=m&mvi=6&pl=34&rms=au%2Cau&initcwndbps=4548750&bui=AZFlqhNNxRmSaMqbKasI6hBV4WdAMeOVUvE-6LPvDDp5HaJjmqKX7xxeE0ph1VZSzEAHGvVZUOOkTrFt&spc=KBGBcnkJcFVzyArEupUQTdSOBwFWsj8b4zcX0Yp0QEP6&vprv=1&svpuc=1&mime=audio%2Fmp4&rqh=1&gir=yes&clen=36544819&dur=5993.023&lmt=1735492862196398&mt=1786308543&fvip=5&keepalive=yes&fexp=51565115&c=ANDROID_VR&txp=1208224&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AE0s2JYwRgIhAIsIQ5h0RbC1WqU0kpGPOnqusR_2xI0RO41uXSbRv7NyAiEAqjnV7MxQ5DPrC0-rhbkPGqTO7E18kSWOIcfMmbX2mh0%3D&lsparams=cps%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=APaTxxMwRgIhAJDYRxNLh8__kQHtVbMPv3IYlrZS9OoYr30J9xqHiCyvAiEA27IywhdrwrNdOhF3VzBlcBCzYucaG1Y9iEiN-uzgB0w%3D", "available_at": 1786308737, "downloader_options": {"http_chunk_size": 10485760}, "protocol": "https", "audio_ext": "m4a", "video_ext": "none", "vbr": 0, "abr": 48.783, "resolution": "audio only", "http_headers": {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-us,en;q=0.5", "Sec-Fetch-Mode": "navigate"}, "format": "139 - audio only (low)"}, {"asr": 48000, "filesize": 37784761, "format_id": "249", "format_note": "low", "source_preference": -1, "audio_channels": 2, "quality": 2.0, "has_drm": false, "tbr": 50.439, "filesize_approx": 37784239, "language": "en", "language_preference": -1, "ext": "webm", "vcodec": "none", "acodec": "opus", "container": "webm_dash", "url": "https://rr6---sn-bvvbaxivnuxqjvm-a5ms.googlevideo.com/videoplayback?expire=1786330337&ei=gOh4at-uO4iLsfIPq5KKuQw&ip=2600%3A8802%3Ab00%3A2c4%3A56bf%3A64ff%3Afe7a%3A851d&id=o-AImKjYZziBmRM2Pki-otZAWPORgyFpDDb4lJM25oYEZk&itag=249&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&cps=271&met=1786308737%2C&mh=35&mm=31%2C29&mn=sn-bvvbaxivnuxqjvm-a5ms%2Csn-a5meknsy&ms=au%2Crdu&mv=m&mvi=6&pl=34&rms=au%2Cau&initcwndbps=4548750&bui=AZFlqhNNxRmSaMqbKasI6hBV4WdAMeOVUvE-6LPvDDp5HaJjmqKX7xxeE0ph1VZSzEAHGvVZUOOkTrFt&spc=KBGBcnkJcFVzyArEupUQTdSOBwFWsj8b4zcX0Yp0QEP6&vprv=1&svpuc=1&mime=audio%2Fwebm&rqh=1&gir=yes&clen=37784761&dur=5992.861&lmt=1468556451826933&mt=1786308543&fvip=5&keepalive=yes&fexp=51565115&c=ANDROID_VR&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AE0s2JYwRQIgcKrNG1oXw31trwO3m0KkR05EfwNMD-7fQJmh3YbiIGACIQCbeOX8rY3KfHZO8-YPrmuEPJbOP32WxpE5RqUdGjYkkA%3D%3D&lsparams=cps%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=APaTxxMwRgIhAJDYRxNLh8__kQHtVbMPv3IYlrZS9OoYr30J9xqHiCyvAiEA27IywhdrwrNdOhF3VzBlcBCzYucaG1Y9iEiN-uzgB0w%3D", "available_at": 1786308737, "downloader_options": {"http_chunk_size": 10485760}, "protocol": "https", "audio_ext": "webm", "video_ext": "none", "vbr": 0, "abr": 50.439, "resolution": "audio only", "http_headers": {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-us,en;q=0.5", "Sec-Fetch-Mode": "navigate"}, "format": "249 - audio only (low)"}, {"asr": 44100, "filesize": 96990118, "format_id": "140", "format_note": "medium", "source_preference": -1, "audio_channels": 2, "quality": 3.0, "has_drm": false, "tbr": 129.472, "filesize_approx": 96989951, "language": "en", "language_preference": -1, "ext": "m4a", "vcodec": "none", "acodec": "mp4a.40.2", "container": "m4a_dash", "url": "https://rr6---sn-bvvbaxivnuxqjvm-a5ms.googlevideo.com/videoplayback?expire=1786330337&ei=gOh4at-uO4iLsfIPq5KKuQw&ip=2600%3A8802%3Ab00%3A2c4%3A56bf%3A64ff%3Afe7a%3A851d&id=o-AImKjYZziBmRM2Pki-otZAWPORgyFpDDb4lJM25oYEZk&itag=140&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&cps=271&met=1786308737%2C&mh=35&mm=31%2C29&mn=sn-bvvbaxivnuxqjvm-a5ms%2Csn-a5meknsy&ms=au%2Crdu&mv=m&mvi=6&pl=34&rms=au%2Cau&initcwndbps=4548750&bui=AZFlqhNNxRmSaMqbKasI6hBV4WdAMeOVUvE-6LPvDDp5HaJjmqKX7xxeE0ph1VZSzEAHGvVZUOOkTrFt&spc=KBGBcnkJcFVzyArEupUQTdSOBwFWsj8b4zcX0Yp0QEP6&vprv=1&svpuc=1&mime=audio%2Fmp4&rqh=1&gir=yes&clen=96990118&dur=5992.953&lmt=1735492862116426&mt=1786308543&fvip=5&keepalive=yes&fexp=51565115&c=ANDROID_VR&txp=1208224&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AE0s2JYwRgIhAIGiT347I0mdQOhEMxox-6kn0UnfIXlObsDMptuOBcdYAiEAl_A2o3DAvgBgVhzg5YNl_qDPSmoJ75pap9WpXBJjIy0%3D&lsparams=cps%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=APaTxxMwRgIhAJDYRxNLh8__kQHtVbMPv3IYlrZS9OoYr30J9xqHiCyvAiEA27IywhdrwrNdOhF3VzBlcBCzYucaG1Y9iEiN-uzgB0w%3D", "available_at": 1786308737, "downloader_options": {"http_chunk_size": 10485760}, "protocol": "https", "audio_ext": "m4a", "video_ext": "none", "vbr": 0, "abr": 129.472, "resolution": "audio only", "http_headers": {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-us,en;q=0.5", "Sec-Fetch-Mode": "navigate"}, "format": "140 - audio only (medium)"}, {"asr": 48000, "filesize": 72892322, "format_id": "251", "format_note": "medium", "source_preference": -1, "audio_channels": 2, "quality": 3.0, "has_drm": false, "tbr": 97.304, "filesize_approx": 72891898, "language": "en", "language_preference": -1, "ext": "webm", "vcodec": "none", "acodec": "opus", "container": "webm_dash", "url": "https://rr6---sn-bvvbaxivnuxqjvm-a5ms.googlevideo.com/videoplayback?expire=1786330337&ei=gOh4at-uO4iLsfIPq5KKuQw&ip=2600%3A8802%3Ab00%3A2c4%3A56bf%3A64ff%3Afe7a%3A851d&id=o-AImKjYZziBmRM2Pki-otZAWPORgyFpDDb4lJM25oYEZk&itag=251&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&cps=271&met=1786308737%2C&mh=35&mm=31%2C29&mn=sn-bvvbaxivnuxqjvm-a5ms%2Csn-a5meknsy&ms=au%2Crdu&mv=m&mvi=6&pl=34&rms=au%2Cau&initcwndbps=4548750&bui=AZFlqhNNxRmSaMqbKasI6hBV4WdAMeOVUvE-6LPvDDp5HaJjmqKX7xxeE0ph1VZSzEAHGvVZUOOkTrFt&spc=KBGBcnkJcFVzyArEupUQTdSOBwFWsj8b4zcX0Yp0QEP6&vprv=1&svpuc=1&mime=audio%2Fwebm&rqh=1&gir=yes&clen=72892322&dur=5992.921&lmt=1735492715914404&mt=1786308543&fvip=5&keepalive=yes&fexp=51565115&c=ANDROID_VR&txp=1208224&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AE0s2JYwRgIhAOk7AZfDlJGbraH7nucrp4x0ZiNUavHesEdILiYeSmcOAiEAlSm578x7KQU9zlIEHhNUC2EpKJjXX_qCj3JYcuV1L4M%3D&lsparams=cps%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=APaTxxMwRgIhAJDYRxNLh8__kQHtVbMPv3IYlrZS9OoYr30J9xqHiCyvAiEA27IywhdrwrNdOhF3VzBlcBCzYucaG1Y9iEiN-uzgB0w%3D", "available_at": 1786308737, "downloader_options": {"http_chunk_size": 10485760}, "protocol": "https", "audio_ext": "webm", "video_ext": "none", "vbr": 0, "abr": 97.304, "resolution": "audio only", "http_headers": {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-us,en;q=0.5", "Sec-Fetch-Mode": "navigate"}, "format": "251 - audio only (medium)"}, {"filesize": 84845881, "format_id": "160", "format_note": "144p", "source_preference": -1, "fps": 30, "height": 144, "quality": 0.0, "has_drm": false, "tbr": 113.262, "filesize_approx": 84845498, "width": 256, "language_preference": -1, "ext": "mp4", "vcodec": "avc1.4d400c", "acodec": "none", "dynamic_range": "SDR", "container": "mp4_dash", "url": "https://rr6---sn-bvvbaxivnuxqjvm-a5ms.googlevideo.com/videoplayback?expire=1786330337&ei=gOh4at-uO4iLsfIPq5KKuQw&ip=2600%3A8802%3Ab00%3A2c4%3A56bf%3A64ff%3Afe7a%3A851d&id=o-AImKjYZziBmRM2Pki-otZAWPORgyFpDDb4lJM25oYEZk&itag=160&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&cps=271&met=1786308737%2C&mh=35&mm=31%2C29&mn=sn-bvvbaxivnuxqjvm-a5ms%2Csn-a5meknsy&ms=au%2Crdu&mv=m&mvi=6&pl=34&rms=au%2Cau&initcwndbps=4548750&bui=AZFlqhNNxRmSaMqbKasI6hBV4WdAMeOVUvE-6LPvDDp5HaJjmqKX7xxeE0ph1VZSzEAHGvVZUOOkTrFt&spc=KBGBcnkJcFVzyArEupUQTdSOBwFWsj8b4zcX0Yp0QEP6&vprv=1&svpuc=1&mime=video%2Fmp4&rqh=1&gir=yes&clen=84845881&dur=5992.866&lmt=1735498844942034&mt=1786308543&fvip=5&keepalive=yes&fexp=51565115&c=ANDROID_VR&txp=1208224&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AE0s2JYwRgIhALm11dZqWjpxSJlezcciwHsRikz5UJ1nT5bicFx-NM2QAiEA6gRDDCdH43prh1zt9JB9m3ji3TUFMZBp29e8upHc9ys%3D&lsparams=cps%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=APaTxxMwRgIhAJDYRxNLh8__kQHtVbMPv3IYlrZS9OoYr30J9xqHiCyvAiEA27IywhdrwrNdOhF3VzBlcBCzYucaG1Y9iEiN-uzgB0w%3D", "available_at": 1786308737, "downloader_options": {"http_chunk_size": 10485760}, "protocol": "https", "video_ext": "mp4", "audio_ext": "none", "abr": 0, "vbr": 113.262, "resolution": "256x144", "aspect_ratio": 1.78, "http_headers": {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-us,en;q=0.5", "Sec-Fetch-Mode": "navigate"}, "format": "160 - 256x144 (144p)"}, {"filesize": 144082070, "format_id": "134", "format_note": "360p", "source_preference": -1, "fps": 30, "height": 360, "quality": 6.0, "has_drm": false, "tbr": 192.338, "filesize_approx": 144081982, "width": 640, "language_preference": -1, "ext": "mp4", "vcodec": "avc1.4d401e", "acodec": "none", "dynamic_range": "SDR", "container": "mp4_dash", "url": "https://rr6---sn-bvvbaxivnuxqjvm-a5ms.googlevideo.com/videoplayback?expire=1786330337&ei=gOh4at-uO4iLsfIPq5KKuQw&ip=2600%3A8802%3Ab00%3A2c4%3A56bf%3A64ff%3Afe7a%3A851d&id=o-AImKjYZziBmRM2Pki-otZAWPORgyFpDDb4lJM25oYEZk&itag=134&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&cps=271&met=1786308737%2C&mh=35&mm=31%2C29&mn=sn-bvvbaxivnuxqjvm-a5ms%2Csn-a5meknsy&ms=au%2Crdu&mv=m&mvi=6&pl=34&rms=au%2Cau&initcwndbps=4548750&bui=AZFlqhNNxRmSaMqbKasI6hBV4WdAMeOVUvE-6LPvDDp5HaJjmqKX7xxeE0ph1VZSzEAHGvVZUOOkTrFt&spc=KBGBcnkJcFVzyArEupUQTdSOBwFWsj8b4zcX0Yp0QEP6&vprv=1&svpuc=1&mime=video%2Fmp4&rqh=1&gir=yes&clen=144082070&dur=5992.866&lmt=1735498948799543&mt=1786308543&fvip=5&keepalive=yes&fexp=51565115&c=ANDROID_VR&txp=1208224&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AE0s2JYwRQIhAKpa2TyoHBX77Y4XdXQ_WXEyGUMAEZR9ArHjRedIEtmzAiBfRk4ewIcnNQvGW-5uO08lo4Q_SNSf1XdEKs9Y1V8MFQ%3D%3D&lsparams=cps%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=APaTxxMwRgIhAJDYRxNLh8__kQHtVbMPv3IYlrZS9OoYr30J9xqHiCyvAiEA27IywhdrwrNdOhF3VzBlcBCzYucaG1Y9iEiN-uzgB0w%3D", "available_at": 1786308737, "downloader_options": {"http_chunk_size": 10485760}, "protocol": "https", "video_ext": "mp4", "audio_ext": "none", "abr": 0, "vbr": 192.338, "resolution": "640x360", "aspect_ratio": 1.78, "http_headers": {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-us,en;q=0.5", "Sec-Fetch-Mode": "navigate"}, "format": "134 - 640x360 (360p)"}, {"asr": 44100, "format_id": "18", "format_note": "360p", "source_preference": -1, "fps": 30, "audio_channels": 2, "height": 360, "quality": 6.0, "has_drm": false, "tbr": 321.173, "filesize_approx": 240596876, "width": 640, "language": "en", "language_preference": -1, "ext": "mp4", "vcodec": "avc1.42001E", "acodec": "mp4a.40.2", "dynamic_range": "SDR", "url": "https://rr6---sn-bvvbaxivnuxqjvm-a5ms.googlevideo.com/videoplayback?expire=1786330337&ei=gOh4at-uO4iLsfIPq5KKuQw&ip=2600%3A8802%3Ab00%3A2c4%3A56bf%3A64ff%3Afe7a%3A851d&id=o-AImKjYZziBmRM2Pki-otZAWPORgyFpDDb4lJM25oYEZk&itag=18&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&cps=271&met=1786308737%2C&mh=35&mm=31%2C29&mn=sn-bvvbaxivnuxqjvm-a5ms%2Csn-a5meknsy&ms=au%2Crdu&mv=m&mvi=6&pl=34&rms=au%2Cau&initcwndbps=4548750&bui=AZFlqhM1HubQ9JiAKmFNlQgqfGxspl3K9elvATuo4Q2ZXFgqargmHBAaKq4Fwq4950M9OjM6RTc458t4&spc=KBGBclMASlBBwAj8kpRSdfyTRQQ2rqUbszt1wQNtQmvxnZkpH-XP&vprv=1&svpuc=1&mime=video%2Fmp4&rqh=1&cnr=14&ratebypass=yes&dur=5992.954&lmt=1746290628844129&mt=1786308543&fvip=5&fexp=51565115&c=ANDROID_VR&txp=1208224&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Crqh%2Ccnr%2Cratebypass%2Cdur%2Clmt&sig=AE0s2JYwRQIgU3GJCxGZtrkPZsNhmJJUEaaxUo9hKVti4O6QSft4wf8CIQD4d-MILhO4YGKP4GUK1ONd1J-ztpGOhgcciBumrlu6mQ%3D%3D&lsparams=cps%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=APaTxxMwRgIhAJDYRxNLh8__kQHtVbMPv3IYlrZS9OoYr30J9xqHiCyvAiEA27IywhdrwrNdOhF3VzBlcBCzYucaG1Y9iEiN-uzgB0w%3D", "available_at": 1786308737, "downloader_options": {"http_chunk_size": 10485760}, "protocol": "https", "video_ext": "mp4", "audio_ext": "none", "resolution": "640x360", "aspect_ratio": 1.78, "http_headers": {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-us,en;q=0.5", "Sec-Fetch-Mode": "navigate"}, "format": "18 - 640x360 (360p)"}, {"filesize": 292070708, "format_id": "135", "format_note": "480p", "source_preference": -1, "fps": 30, "height": 480, "quality": 7.0, "has_drm": false, "tbr": 389.891, "filesize_approx": 292070564, "width": 854, "language_preference": -1, "ext": "mp4", "vcodec": "avc1.4d401f", "acodec": "none", "dynamic_range": "SDR", "container": "mp4_dash", "url": "https://rr6---sn-bvvbaxivnuxqjvm-a5ms.googlevideo.com/videoplayback?expire=1786330337&ei=gOh4at-uO4iLsfIPq5KKuQw&ip=2600%3A8802%3Ab00%3A2c4%3A56bf%3A64ff%3Afe7a%3A851d&id=o-AImKjYZziBmRM2Pki-otZAWPORgyFpDDb4lJM25oYEZk&itag=135&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&cps=271&met=1786308737%2C&mh=35&mm=31%2C29&mn=sn-bvvbaxivnuxqjvm-a5ms%2Csn-a5meknsy&ms=au%2Crdu&mv=m&mvi=6&pl=34&rms=au%2Cau&initcwndbps=4548750&bui=AZFlqhNNxRmSaMqbKasI6hBV4WdAMeOVUvE-6LPvDDp5HaJjmqKX7xxeE0ph1VZSzEAHGvVZUOOkTrFt&spc=KBGBcnkJcFVzyArEupUQTdSOBwFWsj8b4zcX0Yp0QEP6&vprv=1&svpuc=1&mime=video%2Fmp4&rqh=1&gir=yes&clen=292070708&dur=5992.866&lmt=1735498997819782&mt=1786308543&fvip=5&keepalive=yes&fexp=51565115&c=ANDROID_VR&txp=1208224&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AE0s2JYwRQIhAMaWPG-6T4n0OuAcnAmOKzYqokmr7aK9KKiPnItDM9sZAiAoQQ87Kzn0qK_p54FMS9D-xjny76c5FxI8j_F2LwK4zA%3D%3D&lsparams=cps%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=APaTxxMwRgIhAJDYRxNLh8__kQHtVbMPv3IYlrZS9OoYr30J9xqHiCyvAiEA27IywhdrwrNdOhF3VzBlcBCzYucaG1Y9iEiN-uzgB0w%3D", "available_at": 1786308737, "downloader_options": {"http_chunk_size": 10485760}, "protocol": "https", "video_ext": "mp4", "audio_ext": "none", "abr": 0, "vbr": 389.891, "resolution": "854x480", "aspect_ratio": 1.78, "http_headers": {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-us,en;q=0.5", "Sec-Fetch-Mode": "navigate"}, "format": "135 - 854x480 (480p)"}], "thumbnails": [{"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/3.jpg", "preference": -37, "id": "0"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/3.webp", "preference": -36, "id": "1"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/2.jpg", "preference": -35, "id": "2"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/2.webp", "preference": -34, "id": "3"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/1.jpg", "preference": -33, "id": "4"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/1.webp", "preference": -32, "id": "5"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/mq3.jpg", "preference": -31, "id": "6"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/mq3.webp", "preference": -30, "id": "7"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/mq2.jpg", "preference": -29, "id": "8"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/mq2.webp", "preference": -28, "id": "9"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/mq1.jpg", "preference": -27, "id": "10"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/mq1.webp", "preference": -26, "id": "11"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/hq3.jpg", "preference": -25, "id": "12"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/hq3.webp", "preference": -24, "id": "13"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/hq2.jpg", "preference": -23, "id": "14"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/hq2.webp", "preference": -22, "id": "15"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/hq1.jpg", "preference": -21, "id": "16"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/hq1.webp", "preference": -20, "id": "17"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/sd3.jpg", "preference": -19, "id": "18"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/sd3.webp", "preference": -18, "id": "19"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/sd2.jpg", "preference": -17, "id": "20"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/sd2.webp", "preference": -16, "id": "21"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/sd1.jpg", "preference": -15, "id": "22"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/sd1.webp", "preference": -14, "id": "23"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/default.jpg", "preference": -13, "id": "24"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/default.jpg?sqp=-oaymwEkCHgQWvKriqkDGvABAfgB1AaAAuADigIMCAAQARhVIGMoZTAP&rs=AOn4CLCFoBqjItatwMPglbNyv0x8NShOag", "height": 90, "width": 120, "preference": -13, "id": "25", "resolution": "120x90"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/default.webp", "preference": -12, "id": "26"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/mqdefault.jpg", "preference": -11, "id": "27"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/mqdefault.jpg?sqp=-oaymwEmCMACELQB8quKqQMa8AEB-AHUBoAC4AOKAgwIABABGFUgYyhlMA8=&rs=AOn4CLCaKt9mwGTe6Csl5jQJ22oD3XbXdw", "height": 180, "width": 320, "preference": -11, "id": "28", "resolution": "320x180"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/mqdefault.webp", "preference": -10, "id": "29"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/0.jpg", "preference": -9, "id": "30"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/0.webp", "preference": -8, "id": "31"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/hqdefault.jpg", "preference": -7, "id": "32"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/hqdefault.jpg?sqp=-oaymwE8CKgBEF5IWvKriqkDLwgBFQAAAAAYASUAAMhCPQCAokN4AfABAfgB1AaAAuADigIMCAAQARhVIGMoZTAP&rs=AOn4CLD5tRrS9V5waVnHfn27O0mSbOsspQ", "height": 94, "width": 168, "preference": -7, "id": "33", "resolution": "168x94"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/hqdefault.jpg?sqp=-oaymwE8CMQBEG5IWvKriqkDLwgBFQAAAAAYASUAAMhCPQCAokN4AfABAfgB1AaAAuADigIMCAAQARhVIGMoZTAP&rs=AOn4CLCpaCpl7ixeNOudIVMIlCkFPX5cBQ", "height": 110, "width": 196, "preference": -7, "id": "34", "resolution": "196x110"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/hqdefault.jpg?sqp=-oaymwE9CPYBEIoBSFryq4qpAy8IARUAAAAAGAElAADIQj0AgKJDeAHwAQH4AdQGgALgA4oCDAgAEAEYVSBjKGUwDw==&rs=AOn4CLCY87SZzebQlppA9T_0DK9k38W4Tg", "height": 138, "width": 246, "preference": -7, "id": "35", "resolution": "246x138"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/hqdefault.jpg?sqp=-oaymwE9CNACELwBSFryq4qpAy8IARUAAAAAGAElAADIQj0AgKJDeAHwAQH4AdQGgALgA4oCDAgAEAEYVSBjKGUwDw==&rs=AOn4CLDQxW4fpd8MGbxmliWzb0Yrd6xuoA", "height": 188, "width": 336, "preference": -7, "id": "36", "resolution": "336x188"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/hqdefault.jpg?sqp=-oaymwEmCOADEOgC8quKqQMa8AEB-AHUBoAC4AOKAgwIABABGFUgYyhlMA8=&rs=AOn4CLAPqnQ76m6dUBTdG0K-epfAGURDKg", "height": 360, "width": 480, "preference": -7, "id": "37", "resolution": "480x360"}, {"url": "https://i.ytimg.com/vi_webp/fDjpAHbB-Mg/hqdefault.webp", "preference": -6, "id": "38"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/sddefault.jpg", "preference": -5, "id": "39"}, {"url": "https://i.ytimg.com/vi/fDjpAHbB-Mg/sddefault.jpg?sqp=-oaymwEmCIAFEOAD8quKqQMa8AEB-AHUBoAC4AOKAgwIABABGFUgYyhlMA8=&rs=AOn4CLBFE8_E-ugqNpMfZWClut9_j97P1w", "height": 480, "width": 640, "preference": -5, "id": "40", "resolution": "640x480"}], "thumbnail": "https://i.ytimg.com/vi/fDjpAHbB-Mg/sddefault.jpg?sqp=-oaymwEmCIAFEOAD8quKqQMa8AEB-AHUBoAC4AOKAgwIABABGFUgYyhlMA8=&rs=AOn4CLBFE8_E-ugqNpMfZWClut9_j97P1w", "description": "", "channel_id": "UCc2hZPrL28bx6j-Xhyt3aHw", "channel_url": "https://www.youtube.com/channel/UCc2hZPrL28bx6j-Xhyt3aHw", "duration": 5993, "age_limit": 0, "webpage_url": "https://www.youtube.com/watch?v=fDjpAHbB-Mg", "categories": ["Education"], "tags": ["#hangoutsonair", "Hangouts On Air", "#hoa"], "playable_in_embed": true, "live_status": "was_live", "media_type": "livestream", "release_timestamp": 1357863391, "_format_sort_fields": ["quality", "res", "fps", "hdr:12", "source", "vcodec", "channels", "acodec", "lang", "proto"], "automatic_captions": {"ab": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ab", "name": "Abkhazian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ab", "name": "Abkhazian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ab", "name": "Abkhazian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ab", "name": "Abkhazian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ab", "name": "Abkhazian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ab", "name": "Abkhazian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ab", "name": "Abkhazian", "impersonate": true}], "aa": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=aa", "name": "Afar", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=aa", "name": "Afar", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=aa", "name": "Afar", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=aa", "name": "Afar", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=aa", "name": "Afar", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=aa", "name": "Afar", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=aa", "name": "Afar", "impersonate": true}], "af": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=af", "name": "Afrikaans", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=af", "name": "Afrikaans", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=af", "name": "Afrikaans", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=af", "name": "Afrikaans", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=af", "name": "Afrikaans", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=af", "name": "Afrikaans", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=af", "name": "Afrikaans", "impersonate": true}], "ak": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ak", "name": "Akan", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ak", "name": "Akan", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ak", "name": "Akan", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ak", "name": "Akan", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ak", "name": "Akan", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ak", "name": "Akan", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ak", "name": "Akan", "impersonate": true}], "sq": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=sq", "name": "Albanian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=sq", "name": "Albanian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=sq", "name": "Albanian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=sq", "name": "Albanian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=sq", "name": "Albanian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=sq", "name": "Albanian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=sq", "name": "Albanian", "impersonate": true}], "am": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=am", "name": "Amharic", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=am", "name": "Amharic", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=am", "name": "Amharic", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=am", "name": "Amharic", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=am", "name": "Amharic", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=am", "name": "Amharic", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=am", "name": "Amharic", "impersonate": true}], "ar": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ar", "name": "Arabic", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ar", "name": "Arabic", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ar", "name": "Arabic", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ar", "name": "Arabic", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ar", "name": "Arabic", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ar", "name": "Arabic", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ar", "name": "Arabic", "impersonate": true}], "hy": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=hy", "name": "Armenian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=hy", "name": "Armenian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=hy", "name": "Armenian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=hy", "name": "Armenian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=hy", "name": "Armenian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=hy", "name": "Armenian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=hy", "name": "Armenian", "impersonate": true}], "as": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=as", "name": "Assamese", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=as", "name": "Assamese", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=as", "name": "Assamese", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=as", "name": "Assamese", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=as", "name": "Assamese", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=as", "name": "Assamese", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=as", "name": "Assamese", "impersonate": true}], "ay": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ay", "name": "Aymara", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ay", "name": "Aymara", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ay", "name": "Aymara", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ay", "name": "Aymara", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ay", "name": "Aymara", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ay", "name": "Aymara", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ay", "name": "Aymara", "impersonate": true}], "az": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=az", "name": "Azerbaijani", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=az", "name": "Azerbaijani", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=az", "name": "Azerbaijani", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=az", "name": "Azerbaijani", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=az", "name": "Azerbaijani", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=az", "name": "Azerbaijani", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=az", "name": "Azerbaijani", "impersonate": true}], "bn": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=bn", "name": "Bangla", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=bn", "name": "Bangla", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=bn", "name": "Bangla", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=bn", "name": "Bangla", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=bn", "name": "Bangla", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=bn", "name": "Bangla", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=bn", "name": "Bangla", "impersonate": true}], "ba": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ba", "name": "Bashkir", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ba", "name": "Bashkir", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ba", "name": "Bashkir", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ba", "name": "Bashkir", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ba", "name": "Bashkir", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ba", "name": "Bashkir", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ba", "name": "Bashkir", "impersonate": true}], "eu": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=eu", "name": "Basque", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=eu", "name": "Basque", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=eu", "name": "Basque", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=eu", "name": "Basque", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=eu", "name": "Basque", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=eu", "name": "Basque", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=eu", "name": "Basque", "impersonate": true}], "be": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=be", "name": "Belarusian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=be", "name": "Belarusian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=be", "name": "Belarusian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=be", "name": "Belarusian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=be", "name": "Belarusian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=be", "name": "Belarusian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=be", "name": "Belarusian", "impersonate": true}], "bho": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=bho", "name": "Bhojpuri", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=bho", "name": "Bhojpuri", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=bho", "name": "Bhojpuri", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=bho", "name": "Bhojpuri", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=bho", "name": "Bhojpuri", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=bho", "name": "Bhojpuri", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=bho", "name": "Bhojpuri", "impersonate": true}], "bs": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=bs", "name": "Bosnian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=bs", "name": "Bosnian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=bs", "name": "Bosnian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=bs", "name": "Bosnian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=bs", "name": "Bosnian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=bs", "name": "Bosnian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=bs", "name": "Bosnian", "impersonate": true}], "br": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=br", "name": "Breton", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=br", "name": "Breton", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=br", "name": "Breton", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=br", "name": "Breton", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=br", "name": "Breton", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=br", "name": "Breton", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=br", "name": "Breton", "impersonate": true}], "bg": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=bg", "name": "Bulgarian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=bg", "name": "Bulgarian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=bg", "name": "Bulgarian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=bg", "name": "Bulgarian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=bg", "name": "Bulgarian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=bg", "name": "Bulgarian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=bg", "name": "Bulgarian", "impersonate": true}], "my": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=my", "name": "Burmese", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=my", "name": "Burmese", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=my", "name": "Burmese", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=my", "name": "Burmese", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=my", "name": "Burmese", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=my", "name": "Burmese", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=my", "name": "Burmese", "impersonate": true}], "ca": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ca", "name": "Catalan", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ca", "name": "Catalan", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ca", "name": "Catalan", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ca", "name": "Catalan", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ca", "name": "Catalan", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ca", "name": "Catalan", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ca", "name": "Catalan", "impersonate": true}], "ceb": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ceb", "name": "Cebuano", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ceb", "name": "Cebuano", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ceb", "name": "Cebuano", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ceb", "name": "Cebuano", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ceb", "name": "Cebuano", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ceb", "name": "Cebuano", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ceb", "name": "Cebuano", "impersonate": true}], "zh-Hans": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=zh-Hans", "name": "Chinese (Simplified)", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=zh-Hans", "name": "Chinese (Simplified)", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=zh-Hans", "name": "Chinese (Simplified)", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=zh-Hans", "name": "Chinese (Simplified)", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=zh-Hans", "name": "Chinese (Simplified)", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=zh-Hans", "name": "Chinese (Simplified)", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=zh-Hans", "name": "Chinese (Simplified)", "impersonate": true}], "zh-Hant": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=zh-Hant", "name": "Chinese (Traditional)", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=zh-Hant", "name": "Chinese (Traditional)", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=zh-Hant", "name": "Chinese (Traditional)", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=zh-Hant", "name": "Chinese (Traditional)", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=zh-Hant", "name": "Chinese (Traditional)", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=zh-Hant", "name": "Chinese (Traditional)", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=zh-Hant", "name": "Chinese (Traditional)", "impersonate": true}], "co": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=co", "name": "Corsican", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=co", "name": "Corsican", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=co", "name": "Corsican", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=co", "name": "Corsican", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=co", "name": "Corsican", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=co", "name": "Corsican", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=co", "name": "Corsican", "impersonate": true}], "hr": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=hr", "name": "Croatian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=hr", "name": "Croatian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=hr", "name": "Croatian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=hr", "name": "Croatian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=hr", "name": "Croatian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=hr", "name": "Croatian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=hr", "name": "Croatian", "impersonate": true}], "cs": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=cs", "name": "Czech", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=cs", "name": "Czech", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=cs", "name": "Czech", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=cs", "name": "Czech", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=cs", "name": "Czech", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=cs", "name": "Czech", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=cs", "name": "Czech", "impersonate": true}], "da": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=da", "name": "Danish", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=da", "name": "Danish", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=da", "name": "Danish", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=da", "name": "Danish", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=da", "name": "Danish", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=da", "name": "Danish", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=da", "name": "Danish", "impersonate": true}], "dv": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=dv", "name": "Divehi", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=dv", "name": "Divehi", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=dv", "name": "Divehi", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=dv", "name": "Divehi", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=dv", "name": "Divehi", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=dv", "name": "Divehi", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=dv", "name": "Divehi", "impersonate": true}], "nl": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=nl", "name": "Dutch", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=nl", "name": "Dutch", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=nl", "name": "Dutch", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=nl", "name": "Dutch", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=nl", "name": "Dutch", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=nl", "name": "Dutch", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=nl", "name": "Dutch", "impersonate": true}], "dz": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=dz", "name": "Dzongkha", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=dz", "name": "Dzongkha", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=dz", "name": "Dzongkha", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=dz", "name": "Dzongkha", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=dz", "name": "Dzongkha", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=dz", "name": "Dzongkha", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=dz", "name": "Dzongkha", "impersonate": true}], "en-orig": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3", "name": "English (Original)", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1", "name": "English (Original)", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2", "name": "English (Original)", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3", "name": "English (Original)", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml", "name": "English (Original)", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt", "name": "English (Original)", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt", "name": "English (Original)", "impersonate": true}], "en": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3", "name": "English", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1", "name": "English", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2", "name": "English", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3", "name": "English", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml", "name": "English", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt", "name": "English", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt", "name": "English", "impersonate": true}], "eo": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=eo", "name": "Esperanto", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=eo", "name": "Esperanto", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=eo", "name": "Esperanto", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=eo", "name": "Esperanto", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=eo", "name": "Esperanto", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=eo", "name": "Esperanto", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=eo", "name": "Esperanto", "impersonate": true}], "et": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=et", "name": "Estonian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=et", "name": "Estonian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=et", "name": "Estonian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=et", "name": "Estonian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=et", "name": "Estonian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=et", "name": "Estonian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=et", "name": "Estonian", "impersonate": true}], "ee": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ee", "name": "Ewe", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ee", "name": "Ewe", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ee", "name": "Ewe", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ee", "name": "Ewe", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ee", "name": "Ewe", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ee", "name": "Ewe", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ee", "name": "Ewe", "impersonate": true}], "fo": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=fo", "name": "Faroese", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=fo", "name": "Faroese", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=fo", "name": "Faroese", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=fo", "name": "Faroese", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=fo", "name": "Faroese", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=fo", "name": "Faroese", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=fo", "name": "Faroese", "impersonate": true}], "fj": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=fj", "name": "Fijian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=fj", "name": "Fijian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=fj", "name": "Fijian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=fj", "name": "Fijian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=fj", "name": "Fijian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=fj", "name": "Fijian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=fj", "name": "Fijian", "impersonate": true}], "fil": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=fil", "name": "Filipino", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=fil", "name": "Filipino", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=fil", "name": "Filipino", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=fil", "name": "Filipino", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=fil", "name": "Filipino", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=fil", "name": "Filipino", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=fil", "name": "Filipino", "impersonate": true}], "fi": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=fi", "name": "Finnish", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=fi", "name": "Finnish", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=fi", "name": "Finnish", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=fi", "name": "Finnish", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=fi", "name": "Finnish", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=fi", "name": "Finnish", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=fi", "name": "Finnish", "impersonate": true}], "fr": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=fr", "name": "French", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=fr", "name": "French", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=fr", "name": "French", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=fr", "name": "French", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=fr", "name": "French", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=fr", "name": "French", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=fr", "name": "French", "impersonate": true}], "gaa": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=gaa", "name": "Ga", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=gaa", "name": "Ga", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=gaa", "name": "Ga", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=gaa", "name": "Ga", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=gaa", "name": "Ga", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=gaa", "name": "Ga", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=gaa", "name": "Ga", "impersonate": true}], "gl": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=gl", "name": "Galician", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=gl", "name": "Galician", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=gl", "name": "Galician", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=gl", "name": "Galician", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=gl", "name": "Galician", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=gl", "name": "Galician", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=gl", "name": "Galician", "impersonate": true}], "lg": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=lg", "name": "Ganda", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=lg", "name": "Ganda", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=lg", "name": "Ganda", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=lg", "name": "Ganda", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=lg", "name": "Ganda", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=lg", "name": "Ganda", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=lg", "name": "Ganda", "impersonate": true}], "ka": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ka", "name": "Georgian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ka", "name": "Georgian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ka", "name": "Georgian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ka", "name": "Georgian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ka", "name": "Georgian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ka", "name": "Georgian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ka", "name": "Georgian", "impersonate": true}], "de": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=de", "name": "German", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=de", "name": "German", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=de", "name": "German", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=de", "name": "German", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=de", "name": "German", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=de", "name": "German", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=de", "name": "German", "impersonate": true}], "el": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=el", "name": "Greek", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=el", "name": "Greek", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=el", "name": "Greek", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=el", "name": "Greek", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=el", "name": "Greek", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=el", "name": "Greek", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=el", "name": "Greek", "impersonate": true}], "gn": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=gn", "name": "Guarani", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=gn", "name": "Guarani", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=gn", "name": "Guarani", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=gn", "name": "Guarani", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=gn", "name": "Guarani", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=gn", "name": "Guarani", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=gn", "name": "Guarani", "impersonate": true}], "gu": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=gu", "name": "Gujarati", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=gu", "name": "Gujarati", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=gu", "name": "Gujarati", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=gu", "name": "Gujarati", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=gu", "name": "Gujarati", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=gu", "name": "Gujarati", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=gu", "name": "Gujarati", "impersonate": true}], "ht": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ht", "name": "Haitian Creole", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ht", "name": "Haitian Creole", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ht", "name": "Haitian Creole", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ht", "name": "Haitian Creole", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ht", "name": "Haitian Creole", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ht", "name": "Haitian Creole", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ht", "name": "Haitian Creole", "impersonate": true}], "ha": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ha", "name": "Hausa", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ha", "name": "Hausa", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ha", "name": "Hausa", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ha", "name": "Hausa", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ha", "name": "Hausa", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ha", "name": "Hausa", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ha", "name": "Hausa", "impersonate": true}], "haw": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=haw", "name": "Hawaiian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=haw", "name": "Hawaiian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=haw", "name": "Hawaiian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=haw", "name": "Hawaiian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=haw", "name": "Hawaiian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=haw", "name": "Hawaiian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=haw", "name": "Hawaiian", "impersonate": true}], "iw": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=iw", "name": "Hebrew", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=iw", "name": "Hebrew", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=iw", "name": "Hebrew", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=iw", "name": "Hebrew", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=iw", "name": "Hebrew", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=iw", "name": "Hebrew", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=iw", "name": "Hebrew", "impersonate": true}], "hi": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=hi", "name": "Hindi", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=hi", "name": "Hindi", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=hi", "name": "Hindi", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=hi", "name": "Hindi", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=hi", "name": "Hindi", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=hi", "name": "Hindi", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=hi", "name": "Hindi", "impersonate": true}], "hmn": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=hmn", "name": "Hmong", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=hmn", "name": "Hmong", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=hmn", "name": "Hmong", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=hmn", "name": "Hmong", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=hmn", "name": "Hmong", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=hmn", "name": "Hmong", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=hmn", "name": "Hmong", "impersonate": true}], "hu": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=hu", "name": "Hungarian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=hu", "name": "Hungarian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=hu", "name": "Hungarian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=hu", "name": "Hungarian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=hu", "name": "Hungarian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=hu", "name": "Hungarian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=hu", "name": "Hungarian", "impersonate": true}], "is": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=is", "name": "Icelandic", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=is", "name": "Icelandic", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=is", "name": "Icelandic", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=is", "name": "Icelandic", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=is", "name": "Icelandic", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=is", "name": "Icelandic", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=is", "name": "Icelandic", "impersonate": true}], "ig": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ig", "name": "Igbo", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ig", "name": "Igbo", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ig", "name": "Igbo", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ig", "name": "Igbo", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ig", "name": "Igbo", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ig", "name": "Igbo", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ig", "name": "Igbo", "impersonate": true}], "id": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=id", "name": "Indonesian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=id", "name": "Indonesian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=id", "name": "Indonesian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=id", "name": "Indonesian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=id", "name": "Indonesian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=id", "name": "Indonesian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=id", "name": "Indonesian", "impersonate": true}], "iu": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=iu", "name": "Inuktitut", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=iu", "name": "Inuktitut", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=iu", "name": "Inuktitut", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=iu", "name": "Inuktitut", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=iu", "name": "Inuktitut", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=iu", "name": "Inuktitut", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=iu", "name": "Inuktitut", "impersonate": true}], "ga": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ga", "name": "Irish", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ga", "name": "Irish", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ga", "name": "Irish", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ga", "name": "Irish", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ga", "name": "Irish", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ga", "name": "Irish", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ga", "name": "Irish", "impersonate": true}], "it": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=it", "name": "Italian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=it", "name": "Italian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=it", "name": "Italian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=it", "name": "Italian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=it", "name": "Italian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=it", "name": "Italian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=it", "name": "Italian", "impersonate": true}], "ja": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ja", "name": "Japanese", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ja", "name": "Japanese", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ja", "name": "Japanese", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ja", "name": "Japanese", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ja", "name": "Japanese", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ja", "name": "Japanese", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ja", "name": "Japanese", "impersonate": true}], "jv": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=jv", "name": "Javanese", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=jv", "name": "Javanese", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=jv", "name": "Javanese", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=jv", "name": "Javanese", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=jv", "name": "Javanese", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=jv", "name": "Javanese", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=jv", "name": "Javanese", "impersonate": true}], "kl": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=kl", "name": "Kalaallisut", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=kl", "name": "Kalaallisut", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=kl", "name": "Kalaallisut", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=kl", "name": "Kalaallisut", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=kl", "name": "Kalaallisut", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=kl", "name": "Kalaallisut", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=kl", "name": "Kalaallisut", "impersonate": true}], "kn": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=kn", "name": "Kannada", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=kn", "name": "Kannada", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=kn", "name": "Kannada", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=kn", "name": "Kannada", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=kn", "name": "Kannada", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=kn", "name": "Kannada", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=kn", "name": "Kannada", "impersonate": true}], "kk": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=kk", "name": "Kazakh", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=kk", "name": "Kazakh", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=kk", "name": "Kazakh", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=kk", "name": "Kazakh", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=kk", "name": "Kazakh", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=kk", "name": "Kazakh", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=kk", "name": "Kazakh", "impersonate": true}], "kha": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=kha", "name": "Khasi", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=kha", "name": "Khasi", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=kha", "name": "Khasi", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=kha", "name": "Khasi", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=kha", "name": "Khasi", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=kha", "name": "Khasi", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=kha", "name": "Khasi", "impersonate": true}], "km": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=km", "name": "Khmer", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=km", "name": "Khmer", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=km", "name": "Khmer", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=km", "name": "Khmer", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=km", "name": "Khmer", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=km", "name": "Khmer", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=km", "name": "Khmer", "impersonate": true}], "rw": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=rw", "name": "Kinyarwanda", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=rw", "name": "Kinyarwanda", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=rw", "name": "Kinyarwanda", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=rw", "name": "Kinyarwanda", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=rw", "name": "Kinyarwanda", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=rw", "name": "Kinyarwanda", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=rw", "name": "Kinyarwanda", "impersonate": true}], "ko": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ko", "name": "Korean", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ko", "name": "Korean", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ko", "name": "Korean", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ko", "name": "Korean", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ko", "name": "Korean", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ko", "name": "Korean", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ko", "name": "Korean", "impersonate": true}], "kri": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=kri", "name": "Krio", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=kri", "name": "Krio", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=kri", "name": "Krio", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=kri", "name": "Krio", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=kri", "name": "Krio", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=kri", "name": "Krio", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=kri", "name": "Krio", "impersonate": true}], "ku": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ku", "name": "Kurdish", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ku", "name": "Kurdish", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ku", "name": "Kurdish", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ku", "name": "Kurdish", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ku", "name": "Kurdish", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ku", "name": "Kurdish", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ku", "name": "Kurdish", "impersonate": true}], "ky": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ky", "name": "Kyrgyz", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ky", "name": "Kyrgyz", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ky", "name": "Kyrgyz", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ky", "name": "Kyrgyz", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ky", "name": "Kyrgyz", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ky", "name": "Kyrgyz", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ky", "name": "Kyrgyz", "impersonate": true}], "lo": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=lo", "name": "Lao", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=lo", "name": "Lao", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=lo", "name": "Lao", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=lo", "name": "Lao", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=lo", "name": "Lao", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=lo", "name": "Lao", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=lo", "name": "Lao", "impersonate": true}], "la": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=la", "name": "Latin", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=la", "name": "Latin", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=la", "name": "Latin", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=la", "name": "Latin", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=la", "name": "Latin", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=la", "name": "Latin", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=la", "name": "Latin", "impersonate": true}], "lv": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=lv", "name": "Latvian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=lv", "name": "Latvian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=lv", "name": "Latvian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=lv", "name": "Latvian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=lv", "name": "Latvian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=lv", "name": "Latvian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=lv", "name": "Latvian", "impersonate": true}], "ln": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ln", "name": "Lingala", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ln", "name": "Lingala", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ln", "name": "Lingala", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ln", "name": "Lingala", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ln", "name": "Lingala", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ln", "name": "Lingala", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ln", "name": "Lingala", "impersonate": true}], "lt": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=lt", "name": "Lithuanian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=lt", "name": "Lithuanian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=lt", "name": "Lithuanian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=lt", "name": "Lithuanian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=lt", "name": "Lithuanian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=lt", "name": "Lithuanian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=lt", "name": "Lithuanian", "impersonate": true}], "lua": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=lua", "name": "Luba-Lulua", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=lua", "name": "Luba-Lulua", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=lua", "name": "Luba-Lulua", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=lua", "name": "Luba-Lulua", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=lua", "name": "Luba-Lulua", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=lua", "name": "Luba-Lulua", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=lua", "name": "Luba-Lulua", "impersonate": true}], "luo": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=luo", "name": "Luo", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=luo", "name": "Luo", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=luo", "name": "Luo", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=luo", "name": "Luo", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=luo", "name": "Luo", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=luo", "name": "Luo", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=luo", "name": "Luo", "impersonate": true}], "lb": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=lb", "name": "Luxembourgish", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=lb", "name": "Luxembourgish", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=lb", "name": "Luxembourgish", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=lb", "name": "Luxembourgish", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=lb", "name": "Luxembourgish", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=lb", "name": "Luxembourgish", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=lb", "name": "Luxembourgish", "impersonate": true}], "mk": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=mk", "name": "Macedonian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=mk", "name": "Macedonian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=mk", "name": "Macedonian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=mk", "name": "Macedonian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=mk", "name": "Macedonian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=mk", "name": "Macedonian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=mk", "name": "Macedonian", "impersonate": true}], "mg": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=mg", "name": "Malagasy", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=mg", "name": "Malagasy", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=mg", "name": "Malagasy", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=mg", "name": "Malagasy", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=mg", "name": "Malagasy", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=mg", "name": "Malagasy", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=mg", "name": "Malagasy", "impersonate": true}], "ms": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ms", "name": "Malay", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ms", "name": "Malay", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ms", "name": "Malay", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ms", "name": "Malay", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ms", "name": "Malay", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ms", "name": "Malay", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ms", "name": "Malay", "impersonate": true}], "ml": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ml", "name": "Malayalam", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ml", "name": "Malayalam", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ml", "name": "Malayalam", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ml", "name": "Malayalam", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ml", "name": "Malayalam", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ml", "name": "Malayalam", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ml", "name": "Malayalam", "impersonate": true}], "mt": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=mt", "name": "Maltese", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=mt", "name": "Maltese", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=mt", "name": "Maltese", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=mt", "name": "Maltese", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=mt", "name": "Maltese", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=mt", "name": "Maltese", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=mt", "name": "Maltese", "impersonate": true}], "gv": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=gv", "name": "Manx", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=gv", "name": "Manx", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=gv", "name": "Manx", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=gv", "name": "Manx", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=gv", "name": "Manx", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=gv", "name": "Manx", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=gv", "name": "Manx", "impersonate": true}], "mi": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=mi", "name": "Māori", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=mi", "name": "Māori", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=mi", "name": "Māori", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=mi", "name": "Māori", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=mi", "name": "Māori", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=mi", "name": "Māori", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=mi", "name": "Māori", "impersonate": true}], "mr": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=mr", "name": "Marathi", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=mr", "name": "Marathi", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=mr", "name": "Marathi", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=mr", "name": "Marathi", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=mr", "name": "Marathi", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=mr", "name": "Marathi", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=mr", "name": "Marathi", "impersonate": true}], "mn": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=mn", "name": "Mongolian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=mn", "name": "Mongolian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=mn", "name": "Mongolian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=mn", "name": "Mongolian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=mn", "name": "Mongolian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=mn", "name": "Mongolian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=mn", "name": "Mongolian", "impersonate": true}], "mfe": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=mfe", "name": "Morisyen", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=mfe", "name": "Morisyen", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=mfe", "name": "Morisyen", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=mfe", "name": "Morisyen", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=mfe", "name": "Morisyen", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=mfe", "name": "Morisyen", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=mfe", "name": "Morisyen", "impersonate": true}], "ne": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ne", "name": "Nepali", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ne", "name": "Nepali", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ne", "name": "Nepali", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ne", "name": "Nepali", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ne", "name": "Nepali", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ne", "name": "Nepali", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ne", "name": "Nepali", "impersonate": true}], "new": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=new", "name": "Newari", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=new", "name": "Newari", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=new", "name": "Newari", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=new", "name": "Newari", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=new", "name": "Newari", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=new", "name": "Newari", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=new", "name": "Newari", "impersonate": true}], "nso": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=nso", "name": "Northern Sotho", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=nso", "name": "Northern Sotho", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=nso", "name": "Northern Sotho", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=nso", "name": "Northern Sotho", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=nso", "name": "Northern Sotho", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=nso", "name": "Northern Sotho", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=nso", "name": "Northern Sotho", "impersonate": true}], "no": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=no", "name": "Norwegian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=no", "name": "Norwegian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=no", "name": "Norwegian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=no", "name": "Norwegian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=no", "name": "Norwegian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=no", "name": "Norwegian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=no", "name": "Norwegian", "impersonate": true}], "ny": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ny", "name": "Nyanja", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ny", "name": "Nyanja", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ny", "name": "Nyanja", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ny", "name": "Nyanja", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ny", "name": "Nyanja", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ny", "name": "Nyanja", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ny", "name": "Nyanja", "impersonate": true}], "oc": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=oc", "name": "Occitan", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=oc", "name": "Occitan", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=oc", "name": "Occitan", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=oc", "name": "Occitan", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=oc", "name": "Occitan", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=oc", "name": "Occitan", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=oc", "name": "Occitan", "impersonate": true}], "or": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=or", "name": "Odia", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=or", "name": "Odia", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=or", "name": "Odia", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=or", "name": "Odia", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=or", "name": "Odia", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=or", "name": "Odia", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=or", "name": "Odia", "impersonate": true}], "om": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=om", "name": "Oromo", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=om", "name": "Oromo", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=om", "name": "Oromo", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=om", "name": "Oromo", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=om", "name": "Oromo", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=om", "name": "Oromo", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=om", "name": "Oromo", "impersonate": true}], "os": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=os", "name": "Ossetic", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=os", "name": "Ossetic", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=os", "name": "Ossetic", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=os", "name": "Ossetic", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=os", "name": "Ossetic", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=os", "name": "Ossetic", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=os", "name": "Ossetic", "impersonate": true}], "pam": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=pam", "name": "Pampanga", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=pam", "name": "Pampanga", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=pam", "name": "Pampanga", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=pam", "name": "Pampanga", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=pam", "name": "Pampanga", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=pam", "name": "Pampanga", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=pam", "name": "Pampanga", "impersonate": true}], "ps": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ps", "name": "Pashto", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ps", "name": "Pashto", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ps", "name": "Pashto", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ps", "name": "Pashto", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ps", "name": "Pashto", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ps", "name": "Pashto", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ps", "name": "Pashto", "impersonate": true}], "fa": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=fa", "name": "Persian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=fa", "name": "Persian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=fa", "name": "Persian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=fa", "name": "Persian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=fa", "name": "Persian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=fa", "name": "Persian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=fa", "name": "Persian", "impersonate": true}], "pl": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=pl", "name": "Polish", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=pl", "name": "Polish", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=pl", "name": "Polish", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=pl", "name": "Polish", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=pl", "name": "Polish", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=pl", "name": "Polish", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=pl", "name": "Polish", "impersonate": true}], "pt": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=pt", "name": "Portuguese", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=pt", "name": "Portuguese", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=pt", "name": "Portuguese", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=pt", "name": "Portuguese", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=pt", "name": "Portuguese", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=pt", "name": "Portuguese", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=pt", "name": "Portuguese", "impersonate": true}], "pt-PT": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=pt-PT", "name": "Portuguese (Portugal)", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=pt-PT", "name": "Portuguese (Portugal)", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=pt-PT", "name": "Portuguese (Portugal)", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=pt-PT", "name": "Portuguese (Portugal)", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=pt-PT", "name": "Portuguese (Portugal)", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=pt-PT", "name": "Portuguese (Portugal)", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=pt-PT", "name": "Portuguese (Portugal)", "impersonate": true}], "pa": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=pa", "name": "Punjabi", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=pa", "name": "Punjabi", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=pa", "name": "Punjabi", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=pa", "name": "Punjabi", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=pa", "name": "Punjabi", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=pa", "name": "Punjabi", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=pa", "name": "Punjabi", "impersonate": true}], "qu": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=qu", "name": "Quechua", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=qu", "name": "Quechua", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=qu", "name": "Quechua", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=qu", "name": "Quechua", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=qu", "name": "Quechua", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=qu", "name": "Quechua", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=qu", "name": "Quechua", "impersonate": true}], "ro": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ro", "name": "Romanian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ro", "name": "Romanian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ro", "name": "Romanian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ro", "name": "Romanian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ro", "name": "Romanian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ro", "name": "Romanian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ro", "name": "Romanian", "impersonate": true}], "rn": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=rn", "name": "Rundi", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=rn", "name": "Rundi", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=rn", "name": "Rundi", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=rn", "name": "Rundi", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=rn", "name": "Rundi", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=rn", "name": "Rundi", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=rn", "name": "Rundi", "impersonate": true}], "ru": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ru", "name": "Russian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ru", "name": "Russian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ru", "name": "Russian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ru", "name": "Russian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ru", "name": "Russian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ru", "name": "Russian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ru", "name": "Russian", "impersonate": true}], "sm": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=sm", "name": "Samoan", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=sm", "name": "Samoan", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=sm", "name": "Samoan", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=sm", "name": "Samoan", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=sm", "name": "Samoan", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=sm", "name": "Samoan", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=sm", "name": "Samoan", "impersonate": true}], "sg": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=sg", "name": "Sango", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=sg", "name": "Sango", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=sg", "name": "Sango", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=sg", "name": "Sango", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=sg", "name": "Sango", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=sg", "name": "Sango", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=sg", "name": "Sango", "impersonate": true}], "sa": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=sa", "name": "Sanskrit", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=sa", "name": "Sanskrit", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=sa", "name": "Sanskrit", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=sa", "name": "Sanskrit", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=sa", "name": "Sanskrit", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=sa", "name": "Sanskrit", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=sa", "name": "Sanskrit", "impersonate": true}], "gd": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=gd", "name": "Scottish Gaelic", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=gd", "name": "Scottish Gaelic", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=gd", "name": "Scottish Gaelic", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=gd", "name": "Scottish Gaelic", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=gd", "name": "Scottish Gaelic", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=gd", "name": "Scottish Gaelic", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=gd", "name": "Scottish Gaelic", "impersonate": true}], "sr": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=sr", "name": "Serbian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=sr", "name": "Serbian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=sr", "name": "Serbian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=sr", "name": "Serbian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=sr", "name": "Serbian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=sr", "name": "Serbian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=sr", "name": "Serbian", "impersonate": true}], "crs": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=crs", "name": "Seselwa Creole French", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=crs", "name": "Seselwa Creole French", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=crs", "name": "Seselwa Creole French", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=crs", "name": "Seselwa Creole French", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=crs", "name": "Seselwa Creole French", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=crs", "name": "Seselwa Creole French", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=crs", "name": "Seselwa Creole French", "impersonate": true}], "sn": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=sn", "name": "Shona", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=sn", "name": "Shona", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=sn", "name": "Shona", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=sn", "name": "Shona", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=sn", "name": "Shona", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=sn", "name": "Shona", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=sn", "name": "Shona", "impersonate": true}], "sd": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=sd", "name": "Sindhi", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=sd", "name": "Sindhi", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=sd", "name": "Sindhi", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=sd", "name": "Sindhi", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=sd", "name": "Sindhi", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=sd", "name": "Sindhi", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=sd", "name": "Sindhi", "impersonate": true}], "si": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=si", "name": "Sinhala", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=si", "name": "Sinhala", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=si", "name": "Sinhala", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=si", "name": "Sinhala", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=si", "name": "Sinhala", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=si", "name": "Sinhala", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=si", "name": "Sinhala", "impersonate": true}], "sk": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=sk", "name": "Slovak", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=sk", "name": "Slovak", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=sk", "name": "Slovak", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=sk", "name": "Slovak", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=sk", "name": "Slovak", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=sk", "name": "Slovak", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=sk", "name": "Slovak", "impersonate": true}], "sl": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=sl", "name": "Slovenian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=sl", "name": "Slovenian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=sl", "name": "Slovenian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=sl", "name": "Slovenian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=sl", "name": "Slovenian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=sl", "name": "Slovenian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=sl", "name": "Slovenian", "impersonate": true}], "so": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=so", "name": "Somali", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=so", "name": "Somali", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=so", "name": "Somali", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=so", "name": "Somali", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=so", "name": "Somali", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=so", "name": "Somali", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=so", "name": "Somali", "impersonate": true}], "st": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=st", "name": "Southern Sotho", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=st", "name": "Southern Sotho", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=st", "name": "Southern Sotho", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=st", "name": "Southern Sotho", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=st", "name": "Southern Sotho", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=st", "name": "Southern Sotho", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=st", "name": "Southern Sotho", "impersonate": true}], "es": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=es", "name": "Spanish", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=es", "name": "Spanish", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=es", "name": "Spanish", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=es", "name": "Spanish", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=es", "name": "Spanish", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=es", "name": "Spanish", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=es", "name": "Spanish", "impersonate": true}], "su": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=su", "name": "Sundanese", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=su", "name": "Sundanese", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=su", "name": "Sundanese", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=su", "name": "Sundanese", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=su", "name": "Sundanese", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=su", "name": "Sundanese", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=su", "name": "Sundanese", "impersonate": true}], "sw": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=sw", "name": "Swahili", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=sw", "name": "Swahili", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=sw", "name": "Swahili", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=sw", "name": "Swahili", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=sw", "name": "Swahili", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=sw", "name": "Swahili", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=sw", "name": "Swahili", "impersonate": true}], "ss": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ss", "name": "Swati", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ss", "name": "Swati", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ss", "name": "Swati", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ss", "name": "Swati", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ss", "name": "Swati", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ss", "name": "Swati", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ss", "name": "Swati", "impersonate": true}], "sv": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=sv", "name": "Swedish", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=sv", "name": "Swedish", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=sv", "name": "Swedish", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=sv", "name": "Swedish", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=sv", "name": "Swedish", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=sv", "name": "Swedish", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=sv", "name": "Swedish", "impersonate": true}], "tg": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=tg", "name": "Tajik", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=tg", "name": "Tajik", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=tg", "name": "Tajik", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=tg", "name": "Tajik", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=tg", "name": "Tajik", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=tg", "name": "Tajik", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=tg", "name": "Tajik", "impersonate": true}], "ta": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ta", "name": "Tamil", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ta", "name": "Tamil", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ta", "name": "Tamil", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ta", "name": "Tamil", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ta", "name": "Tamil", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ta", "name": "Tamil", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ta", "name": "Tamil", "impersonate": true}], "tt": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=tt", "name": "Tatar", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=tt", "name": "Tatar", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=tt", "name": "Tatar", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=tt", "name": "Tatar", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=tt", "name": "Tatar", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=tt", "name": "Tatar", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=tt", "name": "Tatar", "impersonate": true}], "te": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=te", "name": "Telugu", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=te", "name": "Telugu", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=te", "name": "Telugu", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=te", "name": "Telugu", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=te", "name": "Telugu", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=te", "name": "Telugu", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=te", "name": "Telugu", "impersonate": true}], "th": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=th", "name": "Thai", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=th", "name": "Thai", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=th", "name": "Thai", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=th", "name": "Thai", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=th", "name": "Thai", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=th", "name": "Thai", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=th", "name": "Thai", "impersonate": true}], "bo": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=bo", "name": "Tibetan", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=bo", "name": "Tibetan", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=bo", "name": "Tibetan", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=bo", "name": "Tibetan", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=bo", "name": "Tibetan", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=bo", "name": "Tibetan", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=bo", "name": "Tibetan", "impersonate": true}], "ti": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ti", "name": "Tigrinya", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ti", "name": "Tigrinya", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ti", "name": "Tigrinya", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ti", "name": "Tigrinya", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ti", "name": "Tigrinya", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ti", "name": "Tigrinya", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ti", "name": "Tigrinya", "impersonate": true}], "to": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=to", "name": "Tongan", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=to", "name": "Tongan", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=to", "name": "Tongan", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=to", "name": "Tongan", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=to", "name": "Tongan", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=to", "name": "Tongan", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=to", "name": "Tongan", "impersonate": true}], "ts": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ts", "name": "Tsonga", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ts", "name": "Tsonga", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ts", "name": "Tsonga", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ts", "name": "Tsonga", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ts", "name": "Tsonga", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ts", "name": "Tsonga", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ts", "name": "Tsonga", "impersonate": true}], "tn": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=tn", "name": "Tswana", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=tn", "name": "Tswana", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=tn", "name": "Tswana", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=tn", "name": "Tswana", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=tn", "name": "Tswana", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=tn", "name": "Tswana", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=tn", "name": "Tswana", "impersonate": true}], "tum": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=tum", "name": "Tumbuka", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=tum", "name": "Tumbuka", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=tum", "name": "Tumbuka", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=tum", "name": "Tumbuka", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=tum", "name": "Tumbuka", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=tum", "name": "Tumbuka", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=tum", "name": "Tumbuka", "impersonate": true}], "tr": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=tr", "name": "Turkish", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=tr", "name": "Turkish", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=tr", "name": "Turkish", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=tr", "name": "Turkish", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=tr", "name": "Turkish", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=tr", "name": "Turkish", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=tr", "name": "Turkish", "impersonate": true}], "tk": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=tk", "name": "Turkmen", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=tk", "name": "Turkmen", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=tk", "name": "Turkmen", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=tk", "name": "Turkmen", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=tk", "name": "Turkmen", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=tk", "name": "Turkmen", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=tk", "name": "Turkmen", "impersonate": true}], "uk": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=uk", "name": "Ukrainian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=uk", "name": "Ukrainian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=uk", "name": "Ukrainian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=uk", "name": "Ukrainian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=uk", "name": "Ukrainian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=uk", "name": "Ukrainian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=uk", "name": "Ukrainian", "impersonate": true}], "ur": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ur", "name": "Urdu", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ur", "name": "Urdu", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ur", "name": "Urdu", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ur", "name": "Urdu", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ur", "name": "Urdu", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ur", "name": "Urdu", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ur", "name": "Urdu", "impersonate": true}], "ug": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ug", "name": "Uyghur", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ug", "name": "Uyghur", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ug", "name": "Uyghur", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ug", "name": "Uyghur", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ug", "name": "Uyghur", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ug", "name": "Uyghur", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ug", "name": "Uyghur", "impersonate": true}], "uz": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=uz", "name": "Uzbek", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=uz", "name": "Uzbek", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=uz", "name": "Uzbek", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=uz", "name": "Uzbek", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=uz", "name": "Uzbek", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=uz", "name": "Uzbek", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=uz", "name": "Uzbek", "impersonate": true}], "ve": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=ve", "name": "Venda", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=ve", "name": "Venda", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=ve", "name": "Venda", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=ve", "name": "Venda", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=ve", "name": "Venda", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=ve", "name": "Venda", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ve", "name": "Venda", "impersonate": true}], "vi": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=vi", "name": "Vietnamese", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=vi", "name": "Vietnamese", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=vi", "name": "Vietnamese", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=vi", "name": "Vietnamese", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=vi", "name": "Vietnamese", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=vi", "name": "Vietnamese", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=vi", "name": "Vietnamese", "impersonate": true}], "war": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=war", "name": "Waray", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=war", "name": "Waray", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=war", "name": "Waray", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=war", "name": "Waray", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=war", "name": "Waray", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=war", "name": "Waray", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=war", "name": "Waray", "impersonate": true}], "cy": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=cy", "name": "Welsh", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=cy", "name": "Welsh", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=cy", "name": "Welsh", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=cy", "name": "Welsh", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=cy", "name": "Welsh", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=cy", "name": "Welsh", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=cy", "name": "Welsh", "impersonate": true}], "fy": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=fy", "name": "Western Frisian", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=fy", "name": "Western Frisian", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=fy", "name": "Western Frisian", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=fy", "name": "Western Frisian", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=fy", "name": "Western Frisian", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=fy", "name": "Western Frisian", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=fy", "name": "Western Frisian", "impersonate": true}], "wo": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=wo", "name": "Wolof", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=wo", "name": "Wolof", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=wo", "name": "Wolof", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=wo", "name": "Wolof", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=wo", "name": "Wolof", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=wo", "name": "Wolof", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=wo", "name": "Wolof", "impersonate": true}], "xh": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=xh", "name": "Xhosa", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=xh", "name": "Xhosa", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=xh", "name": "Xhosa", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=xh", "name": "Xhosa", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=xh", "name": "Xhosa", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=xh", "name": "Xhosa", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=xh", "name": "Xhosa", "impersonate": true}], "yi": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=yi", "name": "Yiddish", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=yi", "name": "Yiddish", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=yi", "name": "Yiddish", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=yi", "name": "Yiddish", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=yi", "name": "Yiddish", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=yi", "name": "Yiddish", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=yi", "name": "Yiddish", "impersonate": true}], "yo": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=yo", "name": "Yoruba", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=yo", "name": "Yoruba", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=yo", "name": "Yoruba", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=yo", "name": "Yoruba", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=yo", "name": "Yoruba", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=yo", "name": "Yoruba", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=yo", "name": "Yoruba", "impersonate": true}], "zu": [{"ext": "json3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=json3&tlang=zu", "name": "Zulu", "impersonate": true}, {"ext": "srv1", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv1&tlang=zu", "name": "Zulu", "impersonate": true}, {"ext": "srv2", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv2&tlang=zu", "name": "Zulu", "impersonate": true}, {"ext": "srv3", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srv3&tlang=zu", "name": "Zulu", "impersonate": true}, {"ext": "ttml", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=ttml&tlang=zu", "name": "Zulu", "impersonate": true}, {"ext": "srt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=srt&tlang=zu", "name": "Zulu", "impersonate": true}, {"ext": "vtt", "url": "https://www.youtube.com/api/timedtext?v=fDjpAHbB-Mg&ei=gOh4at-uO4iLsfIPq5KKuQw&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1786333937&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=DC52BFE33CD021E69CBB91314A1D81DC1242E3A7.A6F1C88AB0D7A70A7D34635C803383B8CF402595&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=zu", "name": "Zulu", "impersonate": true}]}, "subtitles": {}, "like_count": 6, "channel": "Cristóbal Palmer", "channel_follower_count": 6, "uploader": "Cristóbal Palmer", "uploader_id": "@cristobalpalmer116", "uploader_url": "https://www.youtube.com/@cristobalpalmer116", "upload_date": "20130111", "timestamp": 1357869866, "availability": "public", "webpage_url_basename": "watch", "webpage_url_domain": "youtube.com", "extractor": "youtube", "extractor_key": "Youtube", "display_id": "fDjpAHbB-Mg", "fulltitle": "TriLUG meeting 10 Jan 2013 -- RPi", "duration_string": "1:39:53", "release_date": "20130111", "release_year": 2013, "is_live": false, "was_live": true, "epoch": 1786308737, "format": "135 - 854x480 (480p)+251 - audio only (medium)", "format_id": "135+251", "ext": "mkv", "protocol": "https+https", "language": "en", "format_note": "480p+medium", "filesize_approx": 364963030, "tbr": 487.19500000000005, "width": 854, "height": 480, "resolution": "854x480", "fps": 30, "dynamic_range": "SDR", "vcodec": "avc1.4d401f", "vbr": 389.891, "aspect_ratio": 1.78, "acodec": "opus", "abr": 97.304, "asr": 48000, "audio_channels": 2, "_type": "video", "_version": {"version": "2026.07.04", "repository": "yt-dlp/yt-dlp"}}
\ No newline at end of file
diff --git a/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.mkv b/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.mkv
new file mode 100644
index 0000000..44f16fc
--- /dev/null
+++ b/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.mkv
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb4fab43fb5d8ef0fa84f3f977bf63f6eca8642eaa850f0327e432de104bf71e
+size 363946032
diff --git a/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.webp b/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.webp
new file mode 100644
index 0000000..df6446c
Binary files /dev/null and b/archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.webp differ
diff --git a/archive/techworks/items/2013-trilug-raspberry-pi/redirect.headers b/archive/techworks/items/2013-trilug-raspberry-pi/redirect.headers
new file mode 100644
index 0000000..66366cc
--- /dev/null
+++ b/archive/techworks/items/2013-trilug-raspberry-pi/redirect.headers
@@ -0,0 +1,19 @@
+HTTP/1.1 301 Moved Permanently
+Date: Sun, 09 Aug 2026 20:51:54 GMT
+Server: Apache
+Strict-Transport-Security: max-age=31536000
+Location: https://trilug.org/2013-01-10/Raspberry_Pi/
+Content-Length: 312
+Content-Type: text/html; charset=iso-8859-1
+
+HTTP/1.1 200 OK
+Date: Sun, 09 Aug 2026 20:51:54 GMT
+Server: Apache
+Strict-Transport-Security: max-age=31536000
+Last-Modified: Thu, 09 Jul 2026 01:12:13 GMT
+ETag: "92d4d-ca-65623507144d3"
+Accept-Ranges: bytes
+Content-Length: 202
+X-Ponies: flying pink ones, of course
+Content-Type: text/html
+
diff --git a/archive/techworks/items/2013-trilug-raspberry-pi/redirect.html b/archive/techworks/items/2013-trilug-raspberry-pi/redirect.html
new file mode 100644
index 0000000..7b8625c
--- /dev/null
+++ b/archive/techworks/items/2013-trilug-raspberry-pi/redirect.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<meta http-equiv="refresh" content="0;url=/2012/11/27/jan-10-meeting-raspberry-pi" />
+</head>
+</html>
diff --git a/archive/techworks/items/2013-trilug-raspberry-pi/slides.headers b/archive/techworks/items/2013-trilug-raspberry-pi/slides.headers
new file mode 100644
index 0000000..df08189
--- /dev/null
+++ b/archive/techworks/items/2013-trilug-raspberry-pi/slides.headers
@@ -0,0 +1,11 @@
+HTTP/1.1 200 OK
+Date: Sun, 09 Aug 2026 20:51:54 GMT
+Server: Apache
+Strict-Transport-Security: max-age=31536000
+Last-Modified: Mon, 14 Jan 2013 02:37:20 GMT
+ETag: "3d8b0b-1610e4-4d33686329800"
+Accept-Ranges: bytes
+Content-Length: 1446116
+X-Ponies: flying pink ones, of course
+Content-Type: application/pdf
+
diff --git a/archive/techworks/items/2019-software-engineering-shiny/BBSW_2019_program.pdf b/archive/techworks/items/2019-software-engineering-shiny/BBSW_2019_program.pdf
new file mode 100644
index 0000000..b3f0dbe
Binary files /dev/null and b/archive/techworks/items/2019-software-engineering-shiny/BBSW_2019_program.pdf differ
diff --git a/archive/techworks/items/2019-software-engineering-shiny/program.headers b/archive/techworks/items/2019-software-engineering-shiny/program.headers
new file mode 100644
index 0000000..b764153
--- /dev/null
+++ b/archive/techworks/items/2019-software-engineering-shiny/program.headers
@@ -0,0 +1,20 @@
+HTTP/2 200
+cache-control: public, max-age=94608000
+content-type: application/pdf
+pragma: cache
+server: Squarespace
+timing-allow-origin: *
+x-content-type-options: nosniff
+x-contextid: GBJdvwwt/UxmOvLAS
+via: 1.1 varnish, 1.1 varnish
+accept-ranges: bytes
+age: 171468
+date: Sun, 09 Aug 2026 20:57:26 GMT
+x-served-by: cache-dfw-kdfw8210045-DFW, cache-lax-kwhp1940120-LAX
+x-cache: HIT, MISS
+x-cache-hits: 1, 0
+x-timer: S1786309047.664839,VS0,VE41
+vary: Accept-Encoding
+tracepoint: Fastly
+content-length: 821135
+
diff --git a/archive/techworks/items/clojure-brave-true-foreword/source.headers b/archive/techworks/items/clojure-brave-true-foreword/source.headers
new file mode 100644
index 0000000..1cc241e
--- /dev/null
+++ b/archive/techworks/items/clojure-brave-true-foreword/source.headers
@@ -0,0 +1,25 @@
+HTTP/2 200
+date: Sun, 09 Aug 2026 20:57:25 GMT
+content-type: text/html; charset=utf-8
+server: cloudflare
+last-modified: Sun, 26 Mar 2023 16:11:35 GMT
+access-control-allow-origin: *
+expires: Sun, 09 Aug 2026 21:07:25 GMT
+cache-control: max-age=600
+report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Y9MMVMCcvwLkTdswO0Uy7zgZjkBIsTjwXpkYcAUYzQ1fxN7aqf6AbE%2BipzKAbWDWoV4h86CY67hRbki5yBWq7pZKWzTWZn2Zokcd9VAQD04h0gVpILuqDj80LXIDcdG91oLUnG%2BYn6BgeMWmMJ5TQbNg1g%3D%3D"}]}
+x-proxy-cache: MISS
+x-github-request-id: 53D2:6E354:16E2D76:17923F7:6A78E9B5
+x-github-edge-region: sea
+nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
+age: 0
+via: 1.1 varnish
+x-served-by: cache-bur-kbur8200032-BUR
+x-cache: MISS
+x-cache-hits: 0
+x-timer: S1786309046.744012,VS0,VE97
+vary: Accept-Encoding
+x-fastly-request-id: 2630ca99a58c8c0a0feaab5de97cb7f761e4de8d
+cf-cache-status: DYNAMIC
+cf-ray: a289ac4fccda5d5c-LAX
+alt-svc: h3=":443"; ma=86400
+
diff --git a/archive/techworks/items/clojure-brave-true-foreword/source.html b/archive/techworks/items/clojure-brave-true-foreword/source.html
new file mode 100644
index 0000000..7cf2862
--- /dev/null
+++ b/archive/techworks/items/clojure-brave-true-foreword/source.html
@@ -0,0 +1,180 @@
+<!DOCTYPE HTML>
+<html lang="en">
+ <head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <meta charset="utf-8">
+ <meta path="/foreword/">
+
+ <title>Foreword | Clojure for the Brave and True</title>
+
+ <link rel="stylesheet" href="/assets/stylesheets/main.css">
+ <link rel="stylesheet" href="/assets/stylesheets/pygments.css">
+ <link href="//fonts.googleapis.com/css?family=Roboto+Condensed:400,700italic,700,400italic,300italic,300%7CSource+Sans+Pro:400,200,200italic,300,300italic,400italic,600italic,600,700,700italic,900italic,900%7CSource+Code+Pro:400,700%7CGentium+Book+Basic:400,400italic,700,700italic%7CCourgette" rel="stylesheet" type="text/css">
+
+ <!-- you don't need to keep this, but it's cool for stats! -->
+ <meta name="generator" content="nanoc 3.7.4">
+</head>
+
+ <body class="cftbat-book">
+ <div class="nav">
+ <div class="container">
+ <div>
+ <ul>
+ <li><a href="/">Brave Clojure</a></li>
+ <li><a href="https://jobs.braveclojure.com">Jobs</a></li>
+ <li><a href="http://open-source.braveclojure.com">Open Source Projects</a></li>
+ <li><a href="/quests/deploy">Deployment Book</a></li>
+ <li><a href="/quests/reducers/intro">Reducers Book</a></li>
+ <li><a href="/training">On-Site Training</a></li>
+ </ul>
+ </div>
+ </div>
+</div>
+
+ <div class="header">
+ <div class="logoy">
+ <div class="container">
+ <div class="title">
+ <a href="/clojure-for-the-brave-and-true">
+ <strong>Clojure </strong><span>for the</span><strong> Brave </strong><span>and </span><strong>True</strong>
+ </a>
+ </div>
+ <div class="subtitle">
+ learn the ultimate language and become a better programmer
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="callout">
+ <div class="container">
+ <p>
+ Be a pal and buy print and ebooks from
+ <a href="http://nostarch.com" target="_blank">No Starch</a>
+ or <a href="http://amzn.to/1H7MqmT" target="_blank">Amazon</a>
+ </p>
+ <form action="//flyingmachinestudios.us1.list-manage.com/subscribe/post?u=60763b0c4890c24bd055f32e6&amp;id=0b40ffd1e1" class="validate" id="mc-embedded-subscribe-form" method="post" name="mc-embedded-subscribe-form" novalidate="" target="_blank">
+ <p>
+ Follow
+ <a href="https://twitter.com/nonrecursive">@nonrecursive</a>
+ to hear about new content
+ or subscribe:
+ <input class="email" id="mce-EMAIL" name="EMAIL" placeholder="email address" required="" type="email" value="">
+ <input class="button" id="mc-embedded-subscribe" name="subscribe" type="submit" value="get updates!">
+ </p>
+ </form>
+ </div>
+ </div>
+ <div id="top-nav"></div>
+ <div class="container wrap">
+ <div class="main">
+ <div class="chapter-nav">
+
+
+
+
+
+<div class="next"><a href="../acknowledgements/">Acknowledgments →</a></div>
+
+
+</div>
+
+
+
+
+ <div id="clojure_foreword.html">
+
+ <div class="chapter-number"></div>
+ <h1>Foreword</h1>
+ <p class="BodyFirst">As you read this hilarious book, you will at some point experience a very serious moment. It is the moment you admit to yourself that programming is more enjoyable after knowing some Clojure. It is also the moment that your <span>investment in this book, in money and time, comes back to you—with </span>interest.</p>
+ <p class="Body"><span>Humor has a certain relationship to seriousness. It is appropriate to joke about serious things, but only after the right amount of time has </span>passed. For example, it took years for me to be able to crack a smile when I remember my favorite uncle’s last words: “Hold my beer.”</p>
+ <p class="Body">This book works in the opposite way. It points out really funny things for the right amount of time <em>before</em>, and perhaps even <em>during</em>, the serious event—that moment you realize you enjoy programming more because of Clojure. It does this without obscuring the deep, technical aspects of Clojure programming that you will learn.</p>
+ <p class="Body">This approach is refreshing because most of the programming books <span>I’ve read are drier than a camel’s fart. We are fortunate that Daniel is a brilliant programmer and writer and that his wife Jess is an equally bril</span>liant illustrator. We are especially fortunate that they both went insane and decided to write a book at exactly the same time.</p>
+ <p class="Body">Clojure is the topic of this book, but in a way it—or perhaps its creator, Rich Hickey—is also one of the authors, since Clojure is the most elegant programming language ever designed. Like the concept of brunch, Clojure is so elegant that it’s difficult to tell anyone anything about it without somehow improving them.</p>
+ <p class="Body">Elegance is a quality regularly ascribed to many dialects in the family of programming languages known collectively as Lisp, of which Clojure is one. All Lisps descend from a set of simple and beautiful discoveries made by the mathematician John McCarthy in 1958.</p>
+ <p class="Body"><span>Since 1958, there have been many Lisps and Lisp books. There are many more Lisps and books to come. As artifacts of the past and future, </span>each are right for the unique combination of constraints and desires faced and fancied by their authors, in their respective times.</p>
+ <p class="Body">I find Clojure, and this particular book about it, especially right for the present. I hope you will too.</p>
+ <p class="BodyFirst para-style-override-1">Alan Dipert</p>
+
+ </div>
+
+
+
+ <div class="chapter-nav">
+
+
+
+
+
+<div class="next"><a href="../acknowledgements/">Acknowledgments →</a></div>
+
+
+</div>
+
+ </div>
+ <div class="secondary">
+ <div class="wrapper">
+ <div class="junk clearfix">
+ <a href="http://amzn.to/1H7MqmT" target="_blank">
+ <img src="/assets/images/home/book-cover.jpg">
+ The print book longs for you to own it
+ </a>
+ </div>
+ <div class="junk clearfix">
+ <a href="/quests/deploy">
+ <img src="/quests/deploy/images/deploy-cover-1.png">
+ OMG what!? Another book!?<br>Learn to deploy your app!
+ </a>
+ </div>
+ <div class="junk clearfix">
+ <a href="/quests/reducers/intro">
+ <img src="/quests/reducers/images/parallel-cover-1.png">
+ Great mama of the bahamas! Learn about reducers!
+ </a>
+ </div>
+ <div class="ads">
+ <a class="twitter-follow-button" href="https://twitter.com/nonrecursive">Follow @nonrecursive</a>
+ <form action="//flyingmachinestudios.us1.list-manage.com/subscribe/post?u=60763b0c4890c24bd055f32e6&amp;amp;id=0b40ffd1e1" class="validate" id="mc-embedded-subscribe-form" method="post" name="mc-embedded-subscribe-form" novalidate="" target="_blank">
+ <input class="email" id="mce-EMAIL" name="EMAIL" placeholder="email address" required="" type="email" value="">
+ <input class="button" id="mc-embedded-subscribe" name="subscribe" type="submit" value="get email updates">
+ </form>
+ <ol>
+ <li><a target="_blank" href="https://jobs.braveclojure.com">Find Clojure jobs</a></li>
+ <li><a target="_blank" href="http://open-source.braveclojure.com">Contribute to beginner-friendly open source projects</a></li>
+ </ol>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="footer">
+ <div class="container">
+ <div class="buy">
+ buy print and ebooks from
+ <a href="http://amzn.to/1H7MqmT" target="_blank">Amazon</a> or
+ <a href="https://www.nostarch.com/clojure" target="_blank">No Starch</a> :)
+ </div>
+ <div>
+ <a href="https://groups.google.com/forum/#!forum/braveclojure">Ask questions and report errata at the Google Group</a>
+ </div>
+ <div>
+ © 2017 Daniel Higginbotham
+ </div>
+ </div>
+ </div>
+ <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
+ <script src="/assets/scripts/jquery.sticky.js"></script>
+ <script src="/assets/scripts/sticky.js"></script>
+ <script>
+ !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs')
+ </script>
+ <script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-43463851-1', 'auto');
+ ga('send', 'pageview');
+
+ </script>
+ </body>
+</html>
diff --git a/archive/techworks/items/pluralsight-clojure-fundamentals/source.headers b/archive/techworks/items/pluralsight-clojure-fundamentals/source.headers
new file mode 100644
index 0000000..9d6141e
--- /dev/null
+++ b/archive/techworks/items/pluralsight-clojure-fundamentals/source.headers
@@ -0,0 +1,20 @@
+HTTP/2 200
+date: Sun, 09 Aug 2026 20:57:28 GMT
+content-type: text/html;charset=utf-8
+strict-transport-security: max-age=31536000; includeSubDomains; preload
+content-security-policy: frame-ancestors 'self' pluralsight.com pluralsight.highspot.com;
+x-xss-protection: 1
+cache-control: max-age=86400, stale-while-revalidate=3600, stale-if-error=259200, public
+last-modified: Sun, 09 Aug 2026 20:57:28 GMT
+expires: Sun, 09 Aug 2026 21:57:27 GMT
+x-vhost: pluralsight
+age: 0
+x-content-type-options: nosniff
+x-served-by: cache-lax-kwhp1940052-LAX
+x-cache: MISS
+x-timer: S1786309048.521564,VS0,VS0,VE952
+vary: Accept-Encoding
+cf-cache-status: DYNAMIC
+server: cloudflare
+cf-ray: a289ac5af89a3478-LAX
+
diff --git a/archive/techworks/items/pluralsight-clojure-fundamentals/source.html b/archive/techworks/items/pluralsight-clojure-fundamentals/source.html
new file mode 100644
index 0000000..f2910d0
--- /dev/null
+++ b/archive/techworks/items/pluralsight-clojure-fundamentals/source.html
@@ -0,0 +1,8627 @@
+
+ <!DOCTYPE HTML>
+ <html lang="en" style="font-size: 10px;">
+ <head>
+<meta charset="UTF-8"/>
+<title>Clojure Fundamentals - Part 1</title>
+
+
+<meta name="template" content="course-detail-templates"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+
+
+
+<meta data-customer-type="no-type"/>
+<meta data-customer-type-ignore="false"/>
+
+ <meta name="content-page-ref" content="GySW2M32-dQWDo-qCDfU4LeAYnLoHTxh-7U0myllbOyuKV582izn4hF134U_XIL7V9kZlqN8Lipi8D5a7OrPG-YYAhrk7PiTw8ZHe7j59Wi5fkMsAQs3yRw5uh1Ba125"/>
+<script defer="defer" type="text/javascript" src="/.rum/@adobe/helix-rum-js@%5E2/dist/micro.js"></script>
+<link rel="canonical" href="https://www.pluralsight.com/courses/clojure-fundamentals-part-one"/>
+
+
+
+
+ <script data-cfasync="false" data-prompt='auto' data-privacy-policy="https://www.pluralsight.com/privacy" src="https://transcend-cdn.com/cm/b8abd831-c4a2-4a4f-8fe7-475bb37be895/airgap.js"></script>
+ <script data-cfasync="false">
+ document.cookie.indexOf("ps_si=")>-1&&(window.selectedInterest=document.cookie.split("ps_si=")[1].split(";")[0]),document.cookie.indexOf("ps_sct=")>-1&&(window.selectedConsumerType=document.cookie.split("ps_sct=")[1].split(";")[0]);var customerType,customerTypeTag=document.head.querySelector("meta[data-customer-type]").getAttribute("data-customer-type"),customerTypeIgnore=document.head.querySelector("meta[data-customer-type-ignore]").getAttribute("data-customer-type-ignore");customerTypeTag&&"true"!==customerTypeIgnore&&"string"==typeof customerTypeTag&&("pluralsight-customer-type:individual"===customerTypeTag?customerType="individual":"pluralsight-customer-type:business"===customerTypeTag&&(customerType="business"),customerType&&"pluralsight-customer-type:escape"!==customerTypeTag&&setSelectedConsumerType(customerType));function setSelectedInterest(e){var t=new Date;t.setTime(t.getTime()+6048e5),document.cookie="ps_si="+e+"; expires="+t.toUTCString()+"; path=/",window.selectedInterest=e}function setSelectedConsumerType(e){var t=new Date;t.setTime(t.getTime()+6048e5),document.cookie="ps_sct="+e+"; expires="+t.toUTCString()+"; path=/",window.selectedConsumerType=e}function setSelectedBusinessType(e){var t=new Date;t.setTime(t.getTime()+6048e5),document.cookie="ps_sbt="+e+"; expires="+t.toUTCString()+"; path=/",window.selectedBusinessType=e}if(document.URL.indexOf("b2c-price=true")>-1?setSelectedConsumerType("individual"):document.URL.indexOf("b2b-price=true")>-1&&setSelectedConsumerType("business"),document.cookie.indexOf("ps_sbt=")>-1&&(window.selectedBusinessType=document.cookie.split("ps_sbt=")[1].split(";")[0]),-1==document.cookie.indexOf("drift_ab")){var driftAbDate=new Date;driftAbDate.setTime(driftAbDate.getTime()+6048e5);var driftAb=0==Math.floor(2*Math.random())?"A":"B";document.cookie="drift_ab="+driftAb+"; expires="+driftAbDate.toUTCString()+"; path=/"}var inflDate=new Date;inflDate.setTime(inflDate.getTime()+18e5);var visNumDate=new Date;if(visNumDate.setTime(visNumDate.getTime()+31536e6),document.cookie.indexOf("ps_infl")>-1){var infl=document.cookie.split("ps_infl=")[1].split(";")[0];document.cookie="ps_infl="+infl+"; expires="+inflDate.toUTCString()+"; path=/"}else{var visNum=1;document.cookie.indexOf("ps_visNum")>-1&&(visNum=parseInt(document.cookie.split("ps_visNum=")[1].split(";")[0])+1),document.cookie="ps_visNum="+visNum+"; expires="+visNumDate.toUTCString()+"; path=/",getParameterByName("aid")||getParameterByName("vid")||""!=document.referrer&&-1==document.referrer.indexOf("pluralsight.com")?document.cookie="ps_infl=1; expires="+inflDate.toUTCString()+"; path=/":document.cookie="ps_infl=0; expires="+inflDate.toUTCString()+"; path=/"}!function(e,a,n,t){var i=e.head;if(i){if(a)return;var o=e.createElement("style");o.id="alloy-prehiding",o.innerText=n,i.appendChild(o),setTimeout(function(){o.parentNode&&o.parentNode.removeChild(o)},t)}}(document,document.location.href.indexOf("mboxEdit")!==-1,"body { opacity: 0 !important }",3000);
+ </script>
+ <script src="https://assets.adobedtm.com/08e39cddbedb/96a8f910572c/launch-02adf5c4ef47.min.js" async></script>
+
+
+<script type="text/javascript" src="https://platform-api.sharethis.com/js/sharethis.js#property=6847e251bfa7c9001322718a&product=inline-share-buttons&source=platform" async="async"></script>
+
+ <meta property="og:title" content="Clojure Fundamentals - Part 1"/>
+ <meta property="og:description"/>
+ <meta property="og:image" content="https://pluralsight.imgix.net/course-images/clojure-fundamentals-part-one-v1.jpg"/>
+
+ <meta name="twitter:title" content="Clojure Fundamentals - Part 1"/>
+ <meta name="twitter:description"/>
+ <meta name="twitter:image" content="https://pluralsight.imgix.net/course-images/clojure-fundamentals-part-one-v1.jpg"/>
+ <meta name="twitter:card" content="summary_large_image"/>
+ <meta name="twitter:site" content="@pluralsight"/>
+
+<meta name="cludo:content-path" content="/content/pluralsight/en/courses/clo/clojure-fundamentals-part-one"/>
+<meta name="appRedirectPath" content="/library/courses/clojure-fundamentals-part-one/table-of-contents"/>
+
+ <meta name="thumbnail" content="/content/dam/rebrand2025/hp_images/Pluralsight_socialShare.webp"/>
+ <meta name="authorIds" content="f2b9321f-09c0-48b1-b34a-76963c7a7459"/>
+ <meta name="authors" content="Alan Dipert"/>
+ <meta name="roles" content="Software Development"/>
+ <meta name="highlight-combined-role" content="Software Development"/>
+ <meta name="certifications"/>
+ <meta name="skill-levels" content="Intermediate"/>
+ <meta name="publish-date" content="Wed Jan 20, 2021 18:30:01 UTC"/>
+ <meta name="rating" content="4.5"/>
+ <meta name="rating-count" content="201"/>
+ <meta name="prodId" content="clojure-fundamentals-part-one"/>
+ <meta name="courseName" content="clojure-fundamentals-part-one"/>
+ <meta name="duration" content="3h 8m"/>
+ <meta name="retired" content="true"/>
+ <meta name="imageJson" content="https://pluralsight.imgix.net/course-images/clojure-fundamentals-part-one-v1.jpg"/>
+ <meta name="display-date-formatted" content="2016-08-22T00:00:00.000Z"/>
+ <meta name="updated-date" content="2021-01-20T00:00:00.000Z"/>
+ <meta name="cludo:date" content="2021-01-20T18:30:01Z"/>
+
+ <meta name="cludo:category" content="course"/>
+ <meta name="course-category" content="Software Development"/>
+ <meta name="course-catalog" content="Core Tech"/>
+
+ <meta name="ratings" content="3.0 and up|4.0 and up|4.5 and up|"/>
+
+
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
+<script data-cfasync="false">
+
+ //set vars for environment
+ var appHost = (window.location.host == "www-stage.pluralsight.com" || window.location.host == "www-dev.pluralsight.com" || window.location.host == "www-qa.pluralsight.com") ? "https://app-stage.pluralsight.com" : "https://app.pluralsight.com";
+ var pagePath = window.location.pathname;
+ function getParameterByName(name, url) {
+ if (!url) {
+ url = window.location.href;
+ }
+ name = name.replace(/[\[\]]/g, "\\$&");
+ var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
+ results = regex.exec(url);
+ if (!results) return '';
+ if (!results[2]) return '';
+ return decodeURIComponent(results[2].replace(/\+/g, " "));
+ }
+ //set up redirect path, check for one set on page
+ var redirectPath = "";
+ var appRedirectTag = document.head.querySelector("[name~='appRedirectPath'][content]");
+ if (appRedirectTag){ redirectPath = appRedirectTag.content.toString(); }
+
+
+ if (!window.is404){
+ //channel pages go to the app channel page, add on a CID if one is specified.
+ if (pagePath.indexOf("/product/channels") == 0 ) {
+ redirectPath = "/channels";
+ if (document.URL.indexOf("cid=") > -1){
+ redirectPath = "/channels/details/" + getParameterByName("cid");
+ }
+ }
+
+ // prepare redirect path for logged in badge viewing
+ if (pagePath.indexOf("/achievements") > -1) {
+ if ('URLSearchParams' in window) {
+ var urlParams = new URLSearchParams(window.location.search);
+ var badgeID = urlParams.get('badge');
+ redirectPath = "/achievements/badges/" + badgeID;
+ }
+ }
+
+ //is user hitting an environment they're logged into? (status only exists when logged in. 1 for consumer, 2 for business)
+ if ( (document.cookie.indexOf("www-status-production=") > -1 && document.cookie.indexOf("midCheckout") == -1 && (window.location.host == "www.pluralsight.com" || window.location.host == "beta.www.pluralsight.com")) ||
+ (document.cookie.indexOf("www-status-staging=") > -1 && document.cookie.indexOf("midCheckout") == -1 && (window.location.host == "www-stage.pluralsight.com" || window.location.host == "beta.www-stage.pluralsight.com" || window.location.host == "www-dev.pluralsight.com" || window.location.host == "www-qa.pluralsight.com"))) {
+
+ //grab aid/vid to pass along
+ var aidParam = getParameterByName("aid");
+ var vidParam = getParameterByName("vid");
+ var paramsString = "";
+ if (aidParam !== "") {
+ paramsString += (paramsString.indexOf("?") > -1 ? "&" : "?") + "aid=" + aidParam;
+ }
+ if (vidParam !== "") {
+ paramsString += (paramsString.indexOf("?") > -1 ? "&" : "?") + "vid=" + vidParam;
+ }
+
+ //if we found a redirect path, send them there.
+ if (redirectPath !== "" && document.URL.indexOf("show=home") === -1){
+ window.location = appHost + redirectPath + paramsString;
+
+ //if not, still give them a dashboard link.
+ } else {
+ jQuery(document).ready(function(){
+ var authenticatedLink = appHost + "/id/dashboard";
+ var $headerButtonAnchor = jQuery(".header_sign_up_link");
+ $headerButtonAnchor.text("My Dashboard");
+ $headerButtonAnchor.attr("href", authenticatedLink);
+ $headerButtonAnchor.attr("title","My Dashboard");
+ jQuery(".header_sign_in_link").attr("style", "display: none !important");
+ });
+ }
+
+ //if logged out, kick them out if they're trying to hit a logged-in-only page
+ } else if (pagePath.indexOf("/customer/") == 0 && (window.location.host == "www-stage.pluralsight.com" || window.location.host == "beta.www-stage.pluralsight.com" || window.location.host == "www.pluralsight.com" || window.location.host == "beta.www.pluralsight.com") && document.cookie.indexOf("midCheckout") == -1){
+ window.location = appHost + "/id?redirectTo=" + encodeURIComponent(document.URL);
+
+ //if logged out otherwise, at least set their after-login path
+ } else if (redirectPath != ""){
+ jQuery(document).ready(function(){
+ jQuery(".sign_in_link").attr("href",appHost + "/id?redirectTo=" + encodeURIComponent(redirectPath));
+ });
+ //User is not logged in and we don't know where to redirect them after sign-on. Still set proper environment.
+ } else{
+ jQuery(document).ready(function(){
+ jQuery(".sign_in_link").attr("href",appHost + "/id?");
+ });
+ }
+ }
+</script>
+
+<script>
+ const pageUrlPath = window.location.href;
+ const typeValue = pageUrlPath.split('.com').length > 1 ? pageUrlPath.split('.com')[1].split('/')[1] : 'Homepage';
+ let pageTypeVal = '';
+
+ if (typeValue !== null && typeValue !== undefined) {
+ pageTypeVal = typeValue;
+ } else {
+ pageTypeVal = 'Homepage';
+ }
+
+ const getUserType = () => {
+ if (document.cookie.indexOf("testSlice=1") > -1) {
+ return "Assessment User";
+ } else if (document.cookie.indexOf("ajs_user_id") > -1 && document.cookie.indexOf("ajs_user_id=null") === -1 && document.cookie.indexOf("midCheckout=1") == -1) {
+ return "customer"; //logged in currently
+ } else {
+ return "prospect";
+ }
+ }
+ window.appEventData = window.appEventData || [];
+ appEventData.push({
+ "event": "Page Load Started",
+ "page": {
+ "name": "Clojure Fundamentals - Part 1",
+ "type": pageTypeVal
+ }
+ });
+
+ window.appEventData = window.appEventData || [];
+ appEventData.push({
+ "event": "User Detected",
+ "user": {
+ "custKey": "",
+ "hashedEmail": "",
+ "loginStatus": "",
+ "segment": "",
+ "type": getUserType(),
+ "userHandle": ""
+ }
+ });
+
+ // Click tracking for all buttons and <a> tags
+ document.addEventListener("DOMContentLoaded", function () {
+ document.body.addEventListener("click", function (event) {
+ const target = event.target;
+ const isHeaderNav = target.closest(".g3p-main-nav-right") || target.closest('#mobileMainModal') || target.closest(".g3p-main-nav-left");
+ const isFooterNav = target.closest(".footer-wrapper");
+ const clickedElement = target.closest("a");
+ if (!clickedElement) return;
+ let isDownload = false;
+ let linkId = clickedElement.innerText.trim() || clickedElement.getAttribute("aria-label") || "";
+ let linkDestination = clickedElement.tagName === "A" ? clickedElement.href : null;
+ const downloadExtensions = /\.(avi|css|csv|doc|docx|eps|exe|jpg?|js|m4v|mov|mp3|pdf|png|ppt|pptx|rar|svg|tab|txt|vsd|vxd|wav|wma|wmv|xls|xlsx|xml|zip)$/i;
+ if (downloadExtensions.test(target.href)) {
+ isDownload = true;
+ }
+
+ if (isDownload) {
+ const fileHrefLength = linkDestination.split('/').length;
+ appEventData.push({
+ "event": "Download Link Clicked",
+ "linkInfo": {
+ "fileName": linkDestination.split('/')[fileHrefLength-1],
+ "fileType": linkDestination.split('.').pop().split(/[#?]/)[0],
+ "linkContainer": "",
+ "linkId": linkId,
+ "linkRegion": "",
+ "linkDestination": linkDestination
+ }
+ });
+ } else if(!isHeaderNav && !isFooterNav) {
+ appEventData.push({
+ "event": "CTA Link Clicked",
+ "linkInfo": {
+ "linkContainer": "",
+ "linkId": linkId,
+ "linkPage": pageTypeVal,
+ "linkRegion": "",
+ "linkDestination": linkDestination,
+ "type": "cta"
+ },
+ });
+ }
+ });
+ });
+</script>
+
+<script>
+ window.appEventData = window.appEventData || [];
+ appEventData.push({
+ "event": "Content Viewed",
+ "contentInfo": {
+ "type": "course",
+ "title": "Clojure Fundamentals - Part 1",
+ "author": "Alan Dipert",
+ "library": "Core Tech",
+ "category": "Software Development",
+ "difficulty": "Intermediate",
+ "duration": "3h 8m"
+ }
+ });
+</script>
+
+
+
+
+
+
+
+
+<script type="text/javascript">
+ if ( !window.CQ_Analytics ) {
+ window.CQ_Analytics = {};
+ }
+ if ( !CQ_Analytics.TestTarget ) {
+ CQ_Analytics.TestTarget = {};
+ }
+ CQ_Analytics.TestTarget.clientCode = 'pluralsight';
+ CQ_Analytics.TestTarget.currentPagePath = '\/content\/pluralsight\/en\/courses\/clo\/clojure\u002Dfundamentals\u002Dpart\u002Done';
+ </script>
+ <script src="/etc.clientlibs/cq/testandtarget/clientlibs/testandtarget/parameters.lc-775c9eb7ff4c48025fbe3d707bcf5f55-lc.min.js"></script>
+<script src="/etc.clientlibs/clientlibs/granite/jquery.lc-7842899024219bcbdb5e72c946870b79-lc.min.js"></script>
+<script src="/etc.clientlibs/cq/personalization/clientlib/personalization/integrations/commons.lc-5370019fd157d93202ac2d6f771f04b8-lc.min.js"></script>
+<script src="/etc.clientlibs/cq/testandtarget/clientlibs/testandtarget/atjs-integration.lc-401aa9ea1dd109fe7762186a74ae6c2b-lc.min.js"></script>
+
+
+
+ <script src="/etc.clientlibs/ps/clientlibs/clientlib-dependency.lc-14b7c71ad613d24859eb9acffe320ba4-lc.min.js"></script>
+
+
+
+ <link rel="stylesheet" href="/etc.clientlibs/ps/clientlibs/clientlib-dependency.lc-6fdf18c5e5c0f032b9cdb85ac403fd32-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/pluralsight/components/core/separator/clientlibs.lc-57d03e6f20dca4a475355523c5df76c9-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/organisms/page--blog-contributor/component-embeds/blog-contributor-right/clientlibs.lc-41d062bd7a695cdcc1ba9ba2d2fb252e-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/clientlibs/clientlib-grid.lc-9452a29b4ab6486eaaca56e0f7571e1c-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/organisms/page--course-detail/clientlibs.lc-10d535f07d2e22ccf97fe1937a44b8bd-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/organisms/page--course-detail/course-hero/clientlibs.lc-fda6559858e0aa7dfa342fab099e69f7-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/organisms/page--course-detail/course-customer-stories/clientlibs.lc-a2ffd797446f3843668cc20578a0624e-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/organisms/page--cloud-course-detail/course-hero/clientlibs.lc-56bb3721fe452b1fc452772df8a4f340-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/organisms/page--course-detail/course-table-of-contents/clientlibs.lc-74914f2c9fefc6c9dab4ba9d565fa170-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/organisms/accordion/clientlibs/site.lc-5d7fcc4f234b9ee0c841a43658b8080d-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/molecules/simple-accordion/clientlibs.lc-505be5c07f8cee04c74706d098a3266a-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/organisms/simple-text-accordion/clientlibs/site.lc-f5a605e5c3f4710c0db4bccad7879635-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/organisms/testimonials/clientlibs.lc-3ae6cb20dc2de5942e590abdb0644f9d-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/custom/testimonial/clientlibs.lc-2b1cf0a7ab7ff20da0221f5706ca4ec6-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/molecules/customer-quote/clientlibs.lc-bbc8473ac62f4fc041c056ac4d2f7d75-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/organisms/navigations/pluralsight-skills-header-v2/clientlibs.lc-6845fbc7b46cbef5472a42d558266ce3-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/organisms/navigations/pluralsight-primary-footer/clientlibs.lc-35e2f808c008bc3f7d7b724233d5ead1-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/core/wcm/components/tabs/v1/tabs/clientlibs/site.lc-d54c23ba76bd8648119795790ae83779-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/core/wcm/components/carousel/v1/carousel/clientlibs/site.lc-59c0d61dcf5eacb237a83816c6996ebd-lc.min.css" type="text/css">
+<link rel="stylesheet" href="/etc.clientlibs/ps/clientlibs/clientlib-base.lc-351dfe0e60da7fbe314bccaba6addd6e-lc.min.css" type="text/css">
+
+
+
+
+
+
+
+
+
+
+<!-- be_ixf, sdk, gho-->
+<meta name="be:sdk" content="java_sdk_1.6.13" />
+<meta name="be:timer" content="36ms" />
+<meta name="be:norm_url" content="https://www.pluralsight.com/courses/clojure-fundamentals-part-one" />
+<meta name="be:capsule_url" content="https://ixfd1-api.bc0a.com/api/ixf/1.0.0/get_capsule/f00000000322974/01143206334" />
+<meta name="be:api_dt" content="pny_2026; pnm_01; pnd_13; pnh_10; pnmh_35; pn_epoch:1768329357266" />
+<meta name="be:mod_dt" content="pny_1969; pnm_12; pnd_31; pnh_16; pnmh_00; pn_epoch:0" />
+<meta name="be:orig_url" content="https://www.pluralsight.com/courses/clojure-fundamentals-part-one" />
+<meta name="be:messages" content="6" />
+<script>
+(function() {
+ var beschemascript = document.createElement('script');
+ beschemascript.type = "text/javascript";
+ beschemascript.async = true;
+ beschemascript.setAttribute("id", "be-schema-script");
+ beschemascript.setAttribute("data-customerid", "f00000000322974");
+ beschemascript.setAttribute("data-testmode", "false");
+ beschemascript.setAttribute("data-overwrite", "true");
+ beschemascript.setAttribute("src", "https://schema-cf.bc0a.com/corejs/be-schema-v4.js");
+ var head = document.head || document.getElementsByTagName("head")[0];
+ head.appendChild(beschemascript);
+})();
+</script>
+
+
+ </head>
+ <body class="page--course-detail page--base page basicpage" id="bba329a9-2211-42c4-8f4f-383289c63294" data-cmp-link-accessibility-enabled data-cmp-link-accessibility-text="opens in a new tab" data-cmp-data-layer-name="adobeDataLayer">
+
+
+
+
+
+
+
+
+
+<div class="root container responsivegrid">
+
+
+ <div id="container-afb90bad61" class="cmp-container">
+
+
+
+<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
+
+ <div class="promo aem-GridColumn aem-GridColumn--default--12">
+
+</div>
+<div class="experiencefragment aem-GridColumn aem-GridColumn--default--12">
+<div id="experiencefragment-5ff8550aa3" class="cmp-experiencefragment cmp-experiencefragment--unified-header">
+
+
+ <div id="container-14090053d8" class="cmp-container">
+
+
+
+<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
+
+ <div class="banner aem-GridColumn aem-GridColumn--default--12"><div id="banner-f4ff0d67c2" data-banner-wrapper data-banner-delay="3" data-banner-size="0">
+
+</div>
+
+
+
+
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/custom/banner/clientlibs/banner.lc-b5290f726a0c4fb37cf95679ea32350b-lc.min.css" type="text/css">
+<script src="/etc.clientlibs/ps/components/custom/banner/clientlibs/banner.lc-5c177901aeff561d828925b2840cd902-lc.min.js"></script>
+
+
+
+
+
+
+
+</div>
+<div class="free-form-component aem-GridColumn aem-GridColumn--default--12">
+
+
+ <style>
+ body {
+ &.nav-height--margin::before {
+ @media screen and (min-width: 1248px) {
+ content: "";
+ display: block;
+ height: 13.1rem;
+ }
+
+ @media screen and (max-width: 1248px) {
+ content: "";
+ display: block;
+ height: 6.6rem;
+ }
+ }
+ &.nav-height--margin--less::before {
+ @media screen and (max-width: 1248px) {
+ content: "";
+ display: block;
+ height: 6.5rem;
+ }
+ }
+}
+
+.free-form-component.has-g3p-nav {
+ top: 0;
+ position: fixed;
+ z-index: 1000;
+ width: 100% !important;
+}
+
+.free-form-component .mobile-tab-position--fixed {
+ top: 0;
+ width: 100% !important;
+
+ @media screen and (max-width: 1248px) and (min-width: 640px) {
+ position: fixed;
+ }
+}
+
+.free-form-component.has-g3p-nav__top__promo__scroll {
+ position: fixed;
+ top: 0;
+ z-index: 1000;
+ width: 100% !important;
+ transition: top 0.3s ease, position 0.3s ease;
+}
+.g3p-main-nav-header {
+ display: flex;
+ padding: 10px 50px;
+ justify-content: space-between;
+ align-items: center;
+ align-self: stretch;
+ background: var(--Surface-Strong, #fff);
+
+ @media screen and (max-width: 1248px) {
+ display: none !important;
+ }
+
+ .g3p-search-signin-wrapper {
+ display: flex;
+ align-items: center;
+
+ .g3p-search-wrapper {
+ display: flex;
+ width: 598px;
+ height: 40px;
+ padding: 0px 20px;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: center;
+
+ .g3p-search-button {
+ display: flex;
+ padding: 10px 20px;
+ align-items: center;
+ gap: 10px;
+ align-self: stretch;
+ border-radius: 999px;
+ background: #383461;
+
+ .g3p-search-button-text {
+ color: var(--Tertiary-Dark-text-medium, #a5aacf);
+ text-align: center;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 20px;
+ width: 100%;
+ }
+ }
+
+ .g3p-search-button:focus-within {
+ background: white;
+ }
+ }
+
+ .g3p-signin-wrapper {
+ display: flex;
+ align-items: center;
+ gap: 4px;
+ cursor: pointer;
+
+ .g3p-signin-button {
+ display: flex;
+ align-items: center;
+ position: relative;
+ cursor: pointer;
+
+ .g3p-signin-text {
+ color: var(--Links-Neutral, #45424d);
+ font-size: var(--size-text-sm, 14px);
+ font-style: normal;
+ font-weight: 400;
+ line-height: var(--line-height-text-sm, 22px); /* 157.143% */
+ letter-spacing: var(--letter-spacing-text, 0);
+ a.menu-dropdown-skills {
+ text-decoration: none;
+ color: var(--Links-Neutral, #45424d);
+ &:hover {
+ color: #130f25;
+ }
+ }
+ }
+
+ }
+
+ .g3p-signin-button:hover,
+ .g3p-signin-button:active {
+ .g3p-signin-text {
+ color: #130f25;
+ }
+ .g3p-signin-caret {
+ svg path {
+ fill: #130f25;
+ }
+ }
+ }
+ }
+
+ .g3p-signin-wrapper:focus-visible {
+ outline: none;
+ border-radius: 4px;
+ border: 2px solid var(--Links-Pink, #e7005e);
+ }
+ }
+}
+
+#psMainLogo {
+ line-height: 0;
+ display: flex;
+ width: 143px;
+ height: 35px;
+ padding: 0 2.513px 0 0.144px;
+ justify-content: center;
+ align-items: center;
+ gap: 8px;
+}
+
+a#psMainLogo:focus-visible {
+ outline: none;
+ border-radius: 4px;
+ border: 2px solid var(--Links-Pink, #e7005e);
+}
+
+.nav-search {
+ #header_searchForm,
+ #mobile_header_searchForm {
+ display: flex;
+ align-items: center;
+ position: relative;
+ }
+
+ .nav-search-result {
+ @media screen and (max-width: 1024px) {
+ padding: 0 16px;
+ background: #fff;
+ border-radius: 0 0 20px 20px;
+ }
+ .header_dropdown--lists {
+ padding-left: 0px;
+ margin: 0;
+ list-style-type: none;
+
+ li {
+ margin: 0;
+ padding: 0;
+ font-size: 16px;
+ font-weight: 500;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ a {
+ display: flex;
+ padding: var(--padding-8, 8px) var(--padding-12, 12px);
+ align-items: center;
+ gap: 8px;
+ flex: 1 0 0;
+ text-decoration: none;
+ color: var(--Tertiary-Light-text, #45424d);
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 500;
+ line-height: 18px;
+ transition: none;
+ }
+ }
+ }
+
+ .header_dropdown--lists > li:last-of-type > a.header_dropdown--resultInfoTitle {
+ padding: var(--padding-8, 8px) var(--padding-12, 12px) var(--padding-16, 16px) var(--padding-12, 12px);
+ }
+ }
+}
+
+.g3p-main-nav-header {
+ .g3p-search-signin-wrapper {
+ .nav-search {
+ #header_tabs--search {
+ .header_tabs_content--container.g3p_header_tabs_content--container {
+ .header_nav--menu.header_nav_search {
+ .header_search {
+ input[type="text"] {
+ color: var(--Text-Weak, #555) !important;
+ font-size: 14px !important;
+ width: 100% !important;
+ background: #fff !important;
+ border: none !important;
+ outline: none !important;
+ margin-left: 10px !important;
+ font-style: normal !important;
+ font-weight: 400 !important;
+ line-height: 20px !important;
+ -webkit-appearance: unset;
+ box-shadow: none;
+ display: unset;
+ height: unset;
+ margin: 0px;
+ padding: 0;
+ transition: unset;
+ }
+
+ input[type="text"]::placeholder {
+ color: var(--Text-Weak, #555) !important;
+ }
+
+ input[type="text"]:focus {
+ background-color: white !important;
+ color: #4e6583 !important;
+ outline: none !important;
+ }
+ }
+ }
+ &:hover {
+ background-color: #f7f5f4;
+ .header_nav--menu.header_nav_search {
+ .header_search {
+ input[type="text"] {
+ background-color: #f7f5f4 !important;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+.g3p-nav-mobile--container.g3p-nav-mobile_view {
+ #mobileMainModal {
+ .nav-search {
+ #mobile_header_tabs--search {
+ .header_tabs_content--container.g3p_header_tabs_content--container {
+ .header_nav--menu.header_nav_search {
+ .header_search {
+ input[type="text"] {
+ width: 100% !important;
+ background: #fff !important;
+ border: none !important;
+ outline: none !important;
+ margin-left: 10px !important;
+ color: var(--Tertiary-Dark-text-medium, #555) !important;
+ font-size: 14px !important;
+ font-style: normal !important;
+ font-weight: 400 !important;
+ line-height: 20px !important;
+ -webkit-appearance: unset;
+ box-shadow: none;
+ display: unset;
+ height: unset;
+ margin: 0px;
+ padding: 0;
+ transition: unset;
+ }
+
+ input[type="text"]::placeholder {
+ color: #555 !important;
+ }
+
+ input[type="text"]:focus {
+ background-color: white !important;
+ color: #4e6583 !important;
+ outline: none !important;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+.header_nav--menu.header_nav_search {
+ position: relative;
+}
+
+#header-search-results-all {
+ border-bottom-left-radius: 20px;
+ border-bottom-right-radius: 20px;
+ border: 1px solid #130f25;
+ box-shadow: rgba(0, 0, 0, 0.08) 0px 12px 16px 0px;
+ padding: 0 var(--margin-16, 16px);
+ align-items: flex-start;
+ align-self: stretch;
+ display: block;
+ background: var(--Button-Surface-Outlined, #fff);
+ border-top: 0px;
+ position: absolute;
+ z-index: 9999;
+ top: 100%;
+ right: 0%;
+ width: 598px;
+ display: none;
+}
+
+#mobile_header-search-results-all {
+ position: absolute;
+ z-index: 9999;
+ top: 100%;
+ right: 0%;
+ width: 100%;
+ display: none;
+ border-radius: 0 0 20px 20px;
+ outline: none;
+ box-shadow: -1px 0 0 0 #130f25, 1px 0 0 0 #130f25, 0 1px 0 0 #130f25;
+ border-top: 0;
+}
+
+#header_dropdown--resultList {
+ border-top: 1px solid var(--Tertiary-Light-border, #130f25);
+ width: 100%;
+}
+
+.header_dropdown--resultInfo {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.header_dropdown--resultInfo {
+ position: relative;
+}
+
+.header_dropdown--resultInfoTitle:hover {
+ color: var(--CTAs-Text-Link-On-Light, #130f25) !important;
+ background: var(--Tertiary-Light-surface-weak, #f7f5f4);
+ border-radius: 8px;
+ padding-right: 30px;
+ /* Add space for the arrow */
+ background-image: url("/content/dam/ps-nav-assets/g3p-nav-updates/Arrow2.png");
+ background-repeat: no-repeat;
+ background-position: right 2% center;
+ /* Position the arrow to the right */
+}
+.header_dropdown--resultInfoTitle:focus-within {
+ outline: none;
+ border-radius: 4px;
+ outline: 2px solid var(--Links-Pink, #e7005e);
+}
+
+.nav-search.section {
+ @media screen and (min-width: 1248px) {
+ position: relative;
+ margin-right: 20px;
+ }
+
+ #header_tabs--search,
+ #mobile_header_tabs--search {
+ display: flex;
+ width: 598px;
+ flex-direction: column;
+ align-items: center;
+
+ .header_tabs_content--container.g3p_header_tabs_content--container {
+ display: flex;
+ padding: 10px 16px;
+ align-items: center;
+ gap: 10px;
+ align-self: stretch;
+ width: 598px;
+ border-radius: 20px;
+ border: 1px solid var(--Button-Stroke-Strong, #130f25);
+
+ .header_nav--menu.header_nav_search {
+ width: 100%;
+ }
+ }
+
+ .header_tabs_content--container.g3p_header_tabs_content--container:focus-within {
+ background-color: white;
+ color: white;
+ }
+ }
+}
+
+.g3p-nav-desktop_view {
+ @media screen and (max-width: 1248px) {
+ display: none !important;
+ }
+}
+
+.g3p-main-nav--container {
+ display: flex;
+ padding: 0px 50px;
+ justify-content: space-between;
+ align-items: center;
+ align-self: stretch;
+ height: 71px;
+ background: var(--Surface-Strong, #fff);
+}
+
+.g3p-main-nav-left ul {
+ display: flex;
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+ gap: 30px;
+}
+
+button.g3p-main-nav__btn.active {
+ .g3p-main-nav__header {
+ color: #130f25;
+ }
+}
+
+button.g3p-main-nav__btn {
+ background: transparent !important;
+ display: flex !important;
+ justify-content: center !important;
+ align-items: center !important;
+ border: none !important;
+ padding: 0 !important;
+ height: 71px !important;
+ position: relative !important;
+ box-shadow: none !important;
+ color: var(--Tertiary-Dark-text-medium, #a5aacf) !important;
+}
+
+button.g3p-main-nav__btn:focus-visible {
+ padding-right: 3px !important;
+ height: 40px !important;
+ margin-top: 15px;
+ outline: none;
+ border-radius: 4px;
+ outline: 2px solid var(--Links-Pink, #e7005e);
+}
+
+button.g3p-main-nav__btn:hover {
+ color: #130f25 !important;
+ box-shadow: none !important;
+}
+
+button.g3p-main-nav__btn:hover .g3p-main-nav__chevron {
+ border-color: #130f25 !important;
+}
+
+button.g3p-main-nav__btn.active::after {
+ content: "" !important;
+ position: absolute !important;
+ display: block !important;
+ width: 100% !important;
+ height: 5px !important;
+ background: #ff1675 !important;
+ bottom: 0 !important;
+}
+button.g3p-main-nav__btn.active .g3p-main-nav__chevron {
+ transform: rotate(-135deg) !important;
+ margin-top: 3px !important;
+ border-color: #130f25 !important;
+}
+
+.g3p-main-nav-right ul {
+ display: flex;
+ list-style-type: none;
+ padding: 0;
+ justify-content: center;
+ margin: 0;
+ gap: 20px;
+ align-items: center;
+}
+
+.g3p-main-mav__list {
+ display: flex;
+ gap: 30px;
+}
+
+.g3p-main-nav__header {
+ font-family: "PS TT Commons Regular", Helvetica, Roboto, Arial, sans-serif;
+ color: var(--Links-Neutral-hover, #45424d);
+ font-size: var(--size-text-md, 16px);
+ font-style: normal;
+ font-weight: 400;
+ line-height: var(--line-height-text-md, 24px); /* 150% */
+ letter-spacing: var(--letter-spacing-text, 0);
+ cursor: pointer;
+ margin-right: 2px;
+ transition: background-color 0.3s ease, border-color 0.3s ease;
+}
+.g3p-main-nav__header:hover {
+ color: #130f25;
+}
+
+.g3p-main-nav__chevron {
+ display: inline-block;
+ width: 7px;
+ height: 7px;
+ margin-left: 8px;
+ border-right: 2px solid #45424d;
+ border-bottom: 2px solid #45424d;
+ transform: rotate(45deg);
+ transition: transform 0.3s ease;
+ margin-top: -4px;
+ cursor: pointer;
+}
+
+.g3p-main-bar--wrapper {
+ height: 90px;
+ max-width: 100%;
+ padding-left: 50px;
+ padding-right: 50px;
+ margin: auto;
+}
+
+.g3p-nav-modal {
+ display: none;
+ position: absolute;
+ background: white;
+ border-radius: 0px 0px 16px 16px;
+ background: var(--Tertiary-Light-surface, #fff);
+ z-index: 9999;
+ padding: 32px;
+ gap: 24px;
+ align-items: flex-start;
+}
+
+.g3p-nav-modal ul {
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+}
+.g3p-nav-modal.show {
+ display: block;
+}
+
+.g3p-nav-modal--main_container {
+ display: flex;
+ gap: 24px;
+
+ .g3p-nav-modal--main_wrapper {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ }
+ .g3p-nav-modal--main_wrapper a:focus-visible {
+ outline: none;
+ border-radius: 4px;
+ border: 2px solid var(--Links-Pink, #e7005e);
+ }
+}
+
+.g3p-modal-subheader--text {
+ color: var(--Primary-Dark-Blue, #130f25);
+ font-size: 14px;
+ font-weight: 600;
+ line-height: 24px;
+}
+
+.g3p-modal-subheader--separator {
+ width: 248px;
+ height: 1px;
+ background: #130f25;
+ margin-bottom: 16px;
+}
+
+#learnNavModal .g3p-modal-subheader--separator {width: 355px;}
+
+.g3p-modal-subheader--container {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: 10px;
+ margin-bottom: 8px;
+}
+
+.g3p-modal-subheader--list {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+
+ li {
+ width: 100%;
+ }
+
+ li a {
+ display: flex;
+ padding: var(--padding-8, 8px) var(--padding-12, 12px);
+ border-radius: 8px;
+ background: var(--Button-Surface-Outlined, #fff);
+ }
+}
+
+.g3p-modal-subheader--item {
+ color: var(--Links-Neutral, #45424d);
+ font-size: 14px;
+ font-weight: 500;
+ line-height: 18px;
+ align-self: stretch;
+}
+
+.g3p-modal-subheader--details {
+font-size: 12px;
+color: #555;
+padding-right: 15px;
+line-height: 18px;
+}
+
+span.g3p-modal-subheader--item span.cloud-guru {
+ font-size: 12px;
+ color: #555;
+ font-weight: 500;
+ line-height: 20px;
+}
+
+.g3p-modal-subheader--image {
+ padding: 3px;
+ gap: 10px;
+ display: flex;
+ width: 28px;
+ height: 28px;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ border-radius: 3px;
+
+ svg {
+ width: 18px;
+ height: 18px;
+ aspect-ratio: 1 / 1;
+ }
+
+ svg path {
+ fill: #ff1675;
+ }
+}
+
+/* Style for the modal background */
+.g3p-modal-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: #130f25;
+ opacity: 0.5;
+ backdrop-filter: blur(2px);
+ z-index: 99;
+ display: none;
+}
+
+/* Show overlay when modal is active */
+.g3p-modal-overlay.active {
+ display: block;
+}
+
+.g3p-modal-subheader--arrow {
+ background-repeat: no-repeat;
+ background-size: contain;
+ display: block;
+ position: absolute;
+ right: 20px;
+ top: 50%;
+ transition: 0.3s all;
+ opacity: 0;
+ transform: translateY(-50%);
+}
+
+.g3p-nav-modal a {
+ display: flex !important;
+ width: 248px;
+ flex-direction: column;
+ align-items: flex-start;
+ position: relative !important;
+ align-self: stretch !important;
+ text-decoration: none !important;
+}
+
+#learnNavModal.g3p-nav-modal a {
+ width: 355px;
+}
+
+.g3p-nav-modal a:hover {
+ border-radius: 8px;
+ background: var(--Button-Surface-Outlined-hover, #f7f5f4);
+ .g3p-modal-subheader--item {
+ color: #130f25 !important;
+ }
+}
+
+.g3p-nav-modal a:hover .g3p-modal-subheader--arrow {
+ opacity: 1 !important;
+ right: 10px !important;
+}
+
+.g3p-margin_20 {
+ margin: 20px 0;
+}
+
+.g3p-sidp-btn--container {
+ display: flex;
+ padding: 8px;
+ align-items: center;
+ gap: 12px;
+ align-self: stretch;
+}
+
+.g3p-sidp-btn--logo {
+ width: 28px;
+ height: 28px;
+}
+
+.g3p-sidp-btn--text {
+ // font-family: "PS Commons";
+ font-size: 14px;
+ margin-left: 10px;
+ max-width: 135px;
+ font-weight: 500;
+ line-height: 18px;
+}
+
+.course--padding {
+ padding: 4px 12px !important;
+}
+
+.g3p-nav-course--sub_container {
+ display: flex;
+ flex-direction: column;
+ gap: 24px;
+}
+
+.g3p-nav-course--sub_container a:focus-visible {
+ outline: none;
+ border-radius: 4px;
+ border: 2px solid var(--Links-Pink, #e7005e);
+}
+
+.g3p-nav-modal--left_updated {
+ left: 50% !important;
+ transform: translateX(-50%);
+
+ @media screen and (min-width: 2036px) {
+ left: 35% !important;
+ }
+}
+
+.g3p-separator--extra_width {
+ width: 356px;
+}
+.g3p-nav--anchor_btn {
+ gap: 7px !important;
+ flex-direction: row !important;
+ color: var(--Links-Pink, #e7005e) !important;
+ font-size: 14px !important;
+
+ font-weight: 600 !important;
+ line-height: 20px !important;
+ padding: 12px 0 0 0 !important;
+ margin-top: 16px !important;
+ max-width: max-content !important;
+
+ @media screen and (min-width: 1440px) {
+ padding: 0 !important;
+ margin-top: 24px !important;
+ }
+}
+
+a.g3p-nav--anchor_btn:hover {
+ cursor: pointer !important;
+ background: transparent !important;
+ color: #b7094a !important;
+
+ .g3p-nav-resource--right_cta-image svg path {
+ fill: #b7094a !important;
+ }
+
+ .g3p-nav-resource--right_cta-image svg {
+ transform: translateX(3px);
+ transition: transform 0.3s ease;
+ }
+}
+
+a.g3p-nav--anchor_btn:focus-visible {
+ outline: none;
+ border-radius: 4px;
+ border: 2px solid var(--Links-Pink, #e7005e);
+}
+
+.g3p-nav-resource--container {
+ display: flex;
+}
+
+.g3p-nav-resource--left {
+ padding: 32px 0 32px 32px;
+}
+
+.g3p-nav-resource--right {
+ border-bottom-right-radius: 16px;
+ display: flex;
+ padding: var(--padding-32, 32px) var(--margin-32, 32px);
+ align-items: flex-start;
+ gap: 56px;
+ align-self: stretch;
+ background: #fff;
+ flex-direction: column;
+ flex-shrink: 0;
+
+ .g3p-nav-resource--right-contents {
+ display: flex;
+ width: 321px;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: var(--margin-8, 8px);
+ }
+}
+
+.g3p-nav-modal.show.g3p-no-padding {
+ padding: 0;
+ transform: translateX(-50%);
+ left: 51% !important;
+ display: grid;
+ grid-template-columns: unset;
+ grid-template-rows: 1fr;
+ grid-template-areas: unset;
+
+ @media screen and (min-width: 2236px) {
+ left: 33% !important;
+ }
+}
+
+.g3p-nav-resource--right_header {
+ color: var(--Primary-Dark-Blue, #130f25);
+ font-size: var(--size-text-sm, 14px);
+ font-style: normal;
+ font-weight: 600;
+ line-height: var(--line-height-text-md, 28px); /* 171.429% */
+ letter-spacing: var(--letter-spacing-text, 0);
+}
+
+.g3p-nav-resource--right_separator {
+ height: 1px;
+ background: var(--Button-Stroke-Strong, #130f25);
+ width: 100%;
+ margin-bottom: 16px;
+}
+
+a.g3p-nav-resource--right_img {
+ width: 100%;
+ padding: 0 !important;
+}
+
+a.g3p-nav-resource--right_img:focus-visible {
+ outline: none;
+ border-radius: 8px;
+ border: 2px solid var(--Links-Pink, #e7005e);
+}
+
+.g3p-nav-resource--right_image {
+ max-width: 100%;
+ border-radius: 8px;
+}
+
+.g3p-nav-resource--right_title {
+ color: var(--Primary-Dark-Blue, #130f25);
+ font-size: var(--size-text-sm, 14px);
+ font-style: normal;
+ font-weight: 600;
+ line-height: var(--line-height-text-md, 24px);
+ margin-top: 10px;
+}
+
+.g3p-nav-resource--right p {
+ margin-top: unset;
+ color: #3E5674;
+ font-size: var(--size-text-sm, 14px);
+ font-style: normal;
+ font-weight: 400;
+ line-height: var(--line-height-text-sm, 22px);
+ letter-spacing: var(--letter-spacing-text, 0);
+ margin-bottom: 10px;
+}
+
+a.g3p-nav-resource--right_cta {
+ color: var(--CTAs-Text-Link-On-Light, #d60056) !important;
+ flex-direction: row !important;
+ font-size: 14px;
+ font-weight: 600;
+ line-height: 20px;
+ gap: 7px !important;
+}
+
+a.g3p-nav-resource--right_cta:hover {
+ cursor: pointer;
+ background: transparent;
+ color: #b7094a !important;
+
+ .g3p-nav-resource--right_cta-image svg path {
+ fill: #b7094a !important;
+ }
+ .g3p-nav-resource--right_cta-image svg {
+ transform: translateX(3px);
+ transition: transform 0.3s ease;
+ }
+}
+
+a.g3p-nav-resource--right_cta:focus-visible {
+ outline: none;
+ border-radius: 4px;
+ border: 2px solid var(--Links-Pink, #e7005e);
+}
+
+.g3p-nav-resource--right_cta:hover::after {
+ transform: rotate(-45deg) translate(3px, 3px);
+}
+
+.g3p-nav-get-started,
+.g3p-nav-contact-sales {
+ padding: 10px 34px !important;
+ border-radius: 999px !important;
+ text-decoration: none !important;
+ cursor: pointer !important;
+ font-size: 14px;
+}
+
+.g3p-nav-contact-sales {
+ display: flex;
+ max-width: 366px;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ padding: 4px 24px !important;
+ background: #fff;
+ font-weight: 600 !important;
+ border: 1px solid var(--Button-Stroke-Strong, #130f25);
+ line-height: var(--line-height-text-md, 24px);
+ letter-spacing: var(--letter-spacing-text, 0);
+ color: var(--Button-Text-Outlined, #130f25) !important;
+ text-align: center;
+ position: relative;
+ z-index: 2;
+ transition: all 275ms ease-in-out;
+
+ &::after {
+ content: "";
+ height: 100%;
+ left: 0;
+ top: 0;
+ width: 0px;
+ position: absolute;
+ transition: all 0.3s ease;
+ -webkit-transition: all 0.7s ease;
+ z-index: -1;
+ }
+}
+
+.g3p-nav-contact-sales:focus-visible {
+ outline: none;
+ border-radius: 30px;
+ border: 2px solid var(--Links-Pink, #e7005e);
+}
+
+.g3p-nav-contact-sales:hover::after {
+ width: 100%;
+ border-radius: 999px;
+ background: #F7F5F4;
+}
+.g3p-nav-get-started {
+ border: none !important;
+ display: flex !important;
+ padding: var(--padding-4, 4px) var(--padding-16, 16px) var(--padding-4, 4px) var(--padding-24, 24px) !important;
+ justify-content: center !important;
+ align-items: center !important;
+ border-radius: 999px !important;
+ background: var(--CTAs-Button-Pink, #e7005e) !important;
+ text-decoration: none !important;
+ cursor: pointer !important;
+ position: relative !important;
+ z-index: 2;
+ transition: all 275ms ease-in-out !important;
+ gap: 4px;
+ max-width: 366px;
+
+ &::after {
+ content: "";
+ height: 100%;
+ left: 0;
+ top: 0;
+ width: 0px;
+ position: absolute;
+ transition: all 0.3s ease;
+ -webkit-transition: all 0.7s ease;
+ z-index: -1;
+ }
+}
+
+.g3p-nav-get-started:focus-visible {
+ outline: none;
+ outline-offset: 2px;
+ outline: #e7005e solid 2px;
+}
+
+.g3p-nav-get-started:hover::after {
+ width: 100%;
+ border-radius: 999px;
+ background: #b7094a;
+}
+
+.g3p-nav-get-started svg {
+ display: flex;
+ width: 20px;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 8.333px;
+ transition: transform 0.3s ease;
+}
+
+.g3p-nav-get-started.active svg {
+ transform: rotate(180deg);
+}
+
+.g3p-nav-get-started--text {
+ // font-family: "PS TT Commons Regular", Helvetica, Roboto, Arial, sans-serif;
+ color: var(--Button-Text-Solid, #fff);
+ text-align: center;
+ font-size: var(--size-text-sm, 14px);
+ font-style: normal;
+ font-weight: 600;
+ line-height: var(--line-height-text-md, 24px); /* 171.429% */
+ letter-spacing: var(--letter-spacing-text, 0);
+ gap: 8px;
+}
+
+.g3p-nav-get-started--text.g3p-arrow-icon.rotated {
+ svg {
+ transform: rotate(180deg);
+ }
+}
+
+.get-started__content {
+ position: absolute;
+ transform: translate(28%, 72%);
+ background-color: #fff;
+ border-radius: 16px;
+ box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
+ z-index: 1000;
+ border-top-left-radius: 0px;
+ border-top-right-radius: 0px;
+}
+
+.get-started__content::before {
+ content: "";
+ position: absolute;
+ top: -10px;
+ right: 26%;
+ transform: translateX(-50%);
+ border-width: 0 10px 10px;
+ border-style: solid;
+ border-color: transparent transparent white transparent;
+}
+.get-started__content ul {
+ gap: 12px !important;
+ display: flex !important;
+ align-items: flex-start !important;
+ flex-direction: column !important;
+ padding: 24px !important;
+ width: max-content !important;
+}
+
+.get-started__item {
+ color: var(--Primary-Dark-Blue, #130f25);
+ font-size: 16px;
+ display: flex;
+ gap: 8px;
+ align-items: center;
+ font-weight: 700;
+ line-height: 22px;
+}
+
+.get-started__text {
+ color: var(--Primary-Dark-Blue, #130f25);
+ font-size: 14px;
+ font-weight: 600;
+ line-height: 24px;
+ letter-spacing: 0;
+}
+
+.get-started__text:hover {
+ color: #d60056;
+}
+
+.get-started__icon {
+ display: flex;
+ gap: 8px;
+ justify-content: flex-start;
+ align-items: center;
+ text-decoration: none !important;
+}
+
+.get-started__icon:focus-visible {
+ outline: none;
+ border-radius: 4px;
+ border: 2px solid var(--Links-Pink, #e7005e);
+}
+
+.get-started__icon img {
+ border-radius: 3px;
+ background: var(--Primary-Pink, #ff1675);
+ width: 28px;
+ height: 28px;
+ object-fit: scale-down;
+}
+
+.get-started__mobile-button {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+/* Mobile View CSS */
+.g3p-nav-mobile_view {
+ @media screen and (min-width: 1249px) {
+ display: none !important;
+ }
+}
+
+.g3p-nav-mobile-header {
+ display: flex;
+ height: 66px;
+ padding: 12px 24px;
+ justify-content: space-between;
+ align-items: center;
+ align-self: stretch;
+ background: #fff;
+ position: sticky;
+ top: 0;
+ z-index: 1000;
+}
+
+.g3p-nav-mobile-header.removed {
+ z-index: unset;
+}
+
+a.g3p-nav-mobile-logo {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+
+.g3p-nav-mobile-logo img {
+ width: 182px;
+}
+
+#menuIcon {
+ cursor: pointer;
+ transition: transform 0.3s ease;
+}
+
+#menuIcon:hover {
+ transform: scale(1.1);
+}
+
+.g3p-nav-mobile__main-modal {
+ width: 100%;
+}
+
+.mobile-nav--search-box-container {
+ display: flex;
+ padding: 10px 20px 20px 20px;
+ flex-direction: column;
+ align-items: center;
+ gap: 10px;
+ align-self: stretch;
+ background: var(--neutral-surface-300, #2a2753);
+}
+
+.mobile-nav--search-box {
+ display: flex;
+ padding: 10px 20px;
+ align-items: center;
+ gap: 10px;
+ align-self: stretch;
+ border-radius: 999px;
+ background: #383461;
+}
+
+.mobile-nav--search-input {
+ color: var(--Tertiary-Dark-text-medium, #a5aacf);
+ // font-family: "PS Commons";
+ font-size: 16px;
+ font-weight: 400;
+ line-height: 20px;
+ background: transparent;
+ width: 100%;
+ border: none;
+}
+
+.mobile-nav--search-input:focus {
+ color: #4e6583;
+ outline: none;
+}
+
+a.mobile-nav--signin {
+ display: flex;
+ align-items: center;
+ text-decoration: none;
+}
+
+a.mobile-nav--signin:focus,
+a.mobile-nav--contact:focus {
+ text-decoration: none;
+ cursor: pointer;
+}
+.mobile-nav--signin img {
+ margin-right: 8px;
+}
+
+.mobile-nav--signin-and-contact {
+ display: flex;
+ height: 48px;
+ padding: 0px 24px;
+ align-items: center;
+ gap: 24px;
+ background: var(--neutral-surface-300, #fff);
+ justify-content: end;
+ position: sticky !important;
+ top: 136px;
+ z-index: 8;
+}
+
+.mobile-nav--signin-chevron {
+ margin-top: 6px !important;
+}
+
+.mobile-nav--signin-chevron.rotated {
+ transform: rotate(-180deg) !important;
+ margin-top: -6px !important;
+}
+
+.mobile-nav--signin-text {
+ color: var(--Links-Neutral, #45424d);
+ font-size: var(--size-text-sm, 14px);
+ font-style: normal;
+ font-weight: 400;
+ line-height: var(--line-height-text-sm, 22px); /* 157.143% */
+ letter-spacing: var(--letter-spacing-text, 0);
+}
+.mobile-nav--signin-text.rotated {
+ color: #130f25 !important;
+}
+
+.g3p-mobile-contact-sales--block {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+}
+
+.g3p-mobile-contact-sales--block .g3p-nav-contact-sales-mobile {
+ display: flex;
+ max-width: 366px;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ align-self: stretch;
+ color: #130f25 !important;
+ background: transparent;
+ border: 2px solid #130f25;
+ font-size: 16px;
+ border-radius: 999px !important;
+ text-decoration: none !important;
+ cursor: pointer !important;
+ width: 100%;
+ text-align: center;
+ font-weight: 600;
+ padding: 12px 32px !important;
+}
+
+.mobile-nav--signin-and-contact ul {
+ list-style-type: none;
+ display: flex;
+ gap: 24px;
+}
+
+a.mobile-nav--contact {
+ display: flex;
+ text-decoration: none;
+ color: var(--Tertiary-Dark-text-medium, #a5aacf) !important;
+}
+
+a.g3p-sign-in--modal_item {
+ text-decoration: none;
+ display: flex;
+ padding: 12px 0;
+ align-items: center;
+ justify-content: space-between;
+ border-bottom: 1px solid #130f25;
+}
+
+a.g3p-sign-in--modal_item:last-child {
+ border-bottom: none;
+}
+
+.g3p-sign-in--modal_item img {
+ width: 18px;
+ height: 18px;
+}
+
+.g3p-sign-in--modal {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ background-color: white;
+ z-index: 1000;
+ padding: 0 24px;
+}
+
+.g3p-signin--subheader {
+ color: var(--Primary-Dark-Blue, #130f25);
+ font-size: 16px;
+ font-weight: 500;
+ line-height: 28px;
+}
+
+.g3p-right-chevron {
+ display: inline-block;
+ width: 7px;
+ height: 7px;
+ border-right: 2px solid #130f25;
+ border-bottom: 2px solid #130f25;
+ transform: rotate(-45deg);
+ transition: transform 0.3s ease;
+}
+
+.g3p-dis-flex {
+ display: flex;
+ gap: 10px;
+ align-items: center;
+}
+
+.g3p-signin-modal-overlay {
+ height: 100vh;
+ position: absolute;
+ top: 48px;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: rgba(19, 15, 37, 0.8);
+ z-index: 999;
+}
+
+.g3p-mobile-navs {
+ display: flex;
+ padding: 16px 0 130px 0;
+ flex-direction: column;
+ align-items: flex-start;
+ @media screen and (min-width: 640px) and (max-width: 1249px) {
+ position: absolute;
+ width: 414px;
+ overflow-y: scroll;
+ background: white;
+ height: calc(100vh - 190px);
+ }
+}
+
+.g3p-mobile-navs-header {
+ display: flex;
+ padding: 12px 0;
+ margin: 0 24px;
+ align-items: center;
+ gap: 8px;
+ justify-content: space-between;
+ align-self: stretch;
+ border-bottom: 1px solid #130f25;
+}
+
+.g3p-mobile-navs-header--chevron {
+ display: inline-block;
+ width: 7px;
+ height: 7px;
+ border-right: 2px solid #130f25;
+ border-bottom: 2px solid #130f25;
+ transform: rotate(45deg);
+}
+
+.g3p-mobile-navs-header--chevron.rotated {
+ transform: rotate(-135deg);
+ transition: transform 0.3s ease;
+ border-color: #130f25;
+}
+
+.g3p-mobile-navs-header--text {
+ color: var(--Primary-Dark-Blue, #130f25);
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 24px;
+ letter-spacing: 0;
+}
+
+.g3p-mobile--full_width {
+ width: 100%;
+
+ @media screen and (min-width: 640px) and (max-width: 1249px) {
+ background: #fff;
+ }
+}
+
+.g3p-header--focused_bg {
+ background: var(--Tertiary-Light-surface-weak, #130f25);
+
+ .g3p-mobile-navs-header--text {
+ color: #fff;
+ }
+
+ .g3p-mobile-navs-header--chevron {
+ border-right: 2px solid #fff;
+ border-bottom: 2px solid #fff;
+ }
+}
+
+.g3p-header--focused_border {
+ border: none;
+}
+
+.g3p-mobile-navs-subheaders {
+ background: #fff;
+ display: flex;
+ padding-top: 10px;
+ flex-direction: column;
+ align-items: center;
+ gap: 16px;
+ align-self: stretch;
+}
+
+.g3p-mobile-subnav_header {
+ display: flex;
+ padding: 0 var(--padding-24, 24px);
+ flex-direction: column;
+ align-items: flex-start;
+ align-self: stretch;
+}
+
+.g3p-mobile--separator {
+ height: 1px;
+ background: #130f25;
+ width: 100%;
+}
+
+.g3p-mobile-display-flex-col {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+}
+
+.g3p-mobile-subnav_header a {
+ padding: var(--margin-8, 8px) var(--margin-16, 12px);
+ flex-direction: column;
+ align-items: flex-start;
+ gap: var(--margin-8, 8px);
+ align-self: stretch;
+ text-decoration: none !important;
+ color: #130f25 !important;
+ display: flex !important;
+}
+
+.g3p-mobile-subnav_header .g3p-mobile-subnav_header-title {
+ display: flex;
+ padding: var(--margin-8, 8px) 0 var(--margin-16, 16px) 0;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: var(--margin-8, 8px);
+ align-self: stretch;
+}
+
+body.add--no__scroll {
+ overflow: hidden !important;
+}
+.g3p-mobile-sidp-btn--text {
+ font-size: 14px;
+ font-weight: 500;
+ line-height: 18px;
+}
+
+.g3p-no--margin {
+ margin: 0;
+}
+
+.g3p-mobile-anchor {
+ align-self: baseline;
+}
+
+.g3p-mobile-anchor_btn {
+ text-decoration: none;
+ display: flex;
+ padding: 0 var(--padding-24, 24px);
+ align-items: center;
+ gap: var(--margin-4, 4px);
+ align-self: stretch;
+}
+
+.g3p-mobile-anchor_btn span {
+ color: var(--Links-Pink, #e7005e);
+ font-size: var(--size-text-sm, 14px);
+ font-style: normal;
+ font-weight: 600;
+ line-height: var(--line-height-text-md, 24px);
+ letter-spacing: var(--letter-spacing-text, 0);
+ display: flex;
+ align-items: center;
+ text-decoration: none;
+}
+
+.g3p-mobile-featured_resource {
+ display: flex;
+ padding: 0px 24px;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 8px;
+ margin-bottom: 20px;
+}
+
+.g3p-mobile-featured_resource--text {
+ color: var(--Primary-Dark-Blue, #130f25);
+ font-size: 16px;
+ font-weight: 700;
+ line-height: 22px;
+}
+
+.g3p-mobile-fr-separateor {
+ height: 1px;
+ background: #c2d1e2;
+ width: 100%;
+ margin-bottom: 14px;
+}
+
+.g3p-mobile-featured_resource img {
+ border-radius: 8px;
+ width:100%;
+ max-width: 100%;
+ margin: 10px 0;
+}
+
+.g3p-mobile-fr-title {
+ color: var(--Primary-Dark-Blue, #130f25);
+ font-family: "PS Commons Bold";
+ font-size: 14px;
+ font-weight: 700;
+ line-height: 16px;
+}
+
+.g3p-mobile-featured_resource p {
+ color: var(--Tertiary-Light-text-medium, #3e5674);
+ font-size: 12px;
+ font-weight: 500;
+ line-height: 20px;
+}
+
+.g3p-mobile--nomargin {
+ padding-left: 0;
+}
+
+.g3p-mobile-get-started {
+ display: flex;
+ position: fixed;
+ background: white;
+ bottom: 0;
+ padding: 16px 24px;
+ flex-direction: column;
+ justify-content: flex-end;
+ align-items: flex-start;
+ gap: 12px;
+ width: 100%;
+ z-index: 99;
+
+ @media screen and (min-width: 640px) and (max-width: 1249px) {
+ max-width: 414px;
+ }
+
+ @media screen and (max-width: 639px) {
+ align-items: center;
+ }
+}
+
+.g3p-mobile-get-started--block {
+ display: flex;
+ max-width: 366px;
+ padding: 12px 24px 12px 32px;
+ justify-content: center;
+ align-items: center;
+ border-radius: 999px;
+ width: 100%;
+ background: var(--Button-Surface-Solid, #130f25);
+}
+
+.g3p-arrow-icon {
+ display: flex;
+ align-items: center;
+}
+
+.g3p-mobile-get-started-modal {
+ position: fixed;
+ width: 100%;
+ bottom: 60px;
+ z-index: 9;
+}
+
+.g3p-mobile-get-started-modal--block {
+ border-radius: 20px;
+ max-width: 366px;
+ display: flex;
+ padding: var(--padding-24, 24px) var(--padding-24, 24px) var(--padding-12, 12px) var(--padding-24, 24px);
+ flex-direction: column;
+ align-items: flex-start;
+ flex: 1 0 0;
+ gap: 12px;
+ background: #fff;
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.g3p-mobile-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: #130f25;
+ opacity: 0.5;
+ z-index: 999;
+ display: none;
+}
+
+.g3p-mobile-overlay.show {
+ display: block;
+}
+
+.g3p-mobile-get-started-modal.show .g3p-mobile-get-started-modal--content {
+ bottom: 143px;
+
+ @media screen and (max-width: 639px) {
+ left: 7%;
+ max-width: 366px;
+ border-radius: 16px 16px 0 0;
+ }
+}
+
+.g3p-mobile-get-started-modal--content {
+ position: fixed;
+ bottom: -100%;
+ left: 0;
+ width: 100%;
+ // background: #fff;
+ z-index: 1001;
+ transition: bottom 0.3s ease-in-out;
+
+ @media screen and (min-width: 640px) and (max-width: 1249px) {
+ border-radius: 16px 16px 0 0;
+ right: 0;
+ max-width: 414px;
+ left: calc(100vw - 391px);
+ }
+}
+
+.g3p-nav-mobile--container.g3p-nav-mobile_view {
+ .g3p-nav-mobile__main-modal {
+ @media screen and (min-width: 640px) and (max-width: 1249px) {
+ max-width: 414px;
+ position: relative;
+ z-index: 1000;
+ background: #fff;
+ left: calc(100% - 414px);
+ top: 6.6rem;
+ }
+ .nav-search.section {
+ padding: var(--padding-8, 8px) var(--padding-24, 24px);
+ background: var(--neutral-surface-300, #fff);
+ display: flex;
+ width: 100%;
+ height: 70px;
+ flex-direction: column;
+ align-items: center;
+ gap: 10px;
+ position: sticky;
+ top: 66px;
+ z-index: 9;
+
+ #header_tabs--search,
+ #mobile_header_tabs--search {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ align-self: stretch;
+ border-radius: 20px;
+ width: unset;
+
+ .header_tabs_content--container.g3p_header_tabs_content--container {
+ width: unset;
+ position: relative;
+ }
+
+ #header_search--form {
+ padding: 0px;
+ gap: 0px;
+ }
+ }
+ }
+ }
+}
+
+.g3p-nav-desktop_view,
+.g3p-nav-mobile_view {
+ button {
+ font-family: inherit;
+ font-weight: unset;
+ font-size: unset;
+ line-height: unset;
+ padding: unset;
+ white-space: unset;
+ border-radius: unset;
+ color: unset;
+ background: unset;
+ position: unset;
+ text-align: unset;
+ text-decoration: unset;
+ display: unset;
+ transition: unset;
+ margin: unset;
+ letter-spacing: unset;
+ text-transform: unset;
+ }
+
+ ul,
+ li {
+ margin: unset;
+ padding: unset;
+ }
+
+ a {
+ color: unset;
+ word-break: unset;
+ }
+}
+
+.menu-dropdown-panel--overlay {
+ position: fixed;
+ display: block;
+ top: 131px;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ opacity: 0.5;
+ background: var(--Brand-Inky-Blue, #130f25);
+ backdrop-filter: blur(2px);
+ z-index: 99;
+}
+
+.g3p-nav-icon-container {
+ display: flex;
+ width: 28px;
+ height: 28px;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ border-radius: 3px;
+ padding: 3px;
+}
+
+.g3p-nav-user-icon {
+ margin-right: 8px;
+ display: flex;
+}
+
+.g3p-main-container--overlay {
+ @media screen and (min-width: 640px) and (max-width: 1249px) {
+ height: 100vh;
+ width: 100vw;
+ z-index: 9;
+ position: fixed;
+ background: rgba(19, 15, 37, 0.7);
+ display: flex;
+ top: 0;
+ }
+}
+
+.g3p-menu-btn{border:0;background:transparent;padding:0;display:inline-flex;align-items:center;cursor:pointer}
+.is-hidden { display: none !important; }
+
+ </style>
+
+
+
+ <div class="g3p-main-nav-header">
+ <a id="psMainLogo" href="/" aria-label="Pluralsight" data-aa-title="PN-Pluralsight" tabindex="0">
+ <svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 36 36" fill="none">
+ <path
+ d="M33.485 19.6594C34.4014 10.9108 28.0522 3.07577 19.3036 2.15935C10.5551 1.24293 2.72004 7.59213 1.80362 16.3407C0.887196 25.0893 7.23641 32.9243 15.985 33.8407C24.7335 34.7572 32.5686 28.4079 33.485 19.6594Z"
+ fill="#FF1675" />
+ <path
+ d="M9.97119 25.0059L13.4773 22.9812V26.9279L28.9412 18.0013L13.4773 9.07471V13.0214L9.97119 10.9968V25.0059ZM15.0803 15.7982L18.8978 18.0013L15.0803 20.2045V15.7982ZM15.0803 22.0582L15.1258 22.0316L22.1038 18.0013L15.0803 13.9445V11.8515L25.7314 18.0013L15.0803 24.1512V22.0582ZM11.5742 13.7735L13.4735 14.8713V21.1313L11.5742 22.2291V13.7735Z"
+ fill="white" />
+ </svg>
+ <svg xmlns="http://www.w3.org/2000/svg" width="98" height="20" viewBox="0 0 98 20" fill="none">
+ <path
+ d="M0.144409 15.2236V0.835976H5.50025C8.24734 0.835976 10.4213 3.00993 10.4213 5.63845C10.4213 8.26696 8.24734 10.4212 5.50025 10.4212H2.8915V15.2236H0.144409ZM2.8915 7.8124H5.50025C6.64652 7.8124 7.67421 6.78471 7.67421 5.63845C7.67421 4.49218 6.64652 3.46449 5.50025 3.46449H2.8915V7.8124Z"
+ fill="#130F25" />
+ <path d="M12.3562 15.2236V0.835976H14.965V15.2236H12.3562Z" fill="#130F25" />
+ <path
+ d="M21.6996 15.3422C19.1897 15.3422 17.4901 13.6228 17.4901 10.8955V4.72934H20.0988V10.5397C20.0988 11.9232 21.0277 12.8323 22.2728 12.8323C23.5376 12.8323 24.4467 11.9232 24.4467 10.5397V4.72934H27.0752V15.2236H25.1187L24.6641 14.1959C24.6641 14.1959 23.419 15.3422 21.6996 15.3422Z"
+ fill="#130F25" />
+ <path
+ d="M29.5912 15.2236V4.72934H31.528L31.9825 5.85584C31.9825 5.85584 32.8917 4.61076 34.4925 4.61076C34.947 4.61076 35.283 4.72934 35.283 4.72934V7.45666C35.283 7.45666 34.947 7.35785 34.3739 7.35785C33.1288 7.35785 32.1999 8.26696 32.1999 9.63062V15.2236H29.5912Z"
+ fill="#130F25" />
+ <path
+ d="M40.0657 15.3422C37.7929 15.3422 36.5281 14.0774 36.5281 12.3777C36.5281 10.3223 38.0103 8.84009 42.8128 8.84009C42.8128 7.69382 42.1211 7.00211 41.0934 7.00211C39.7297 7.00211 39.5123 8.14838 39.5123 8.14838H36.8838C37.1012 6.21158 38.702 4.61076 41.3306 4.61076C43.7219 4.61076 45.4413 6.33016 45.4413 8.72151V15.2236H43.5045L43.05 14.1959C43.05 14.1959 41.9037 15.3422 40.0657 15.3422ZM40.54 13.2868C41.9037 13.2868 42.8128 12.3777 42.8128 11.1129V10.6583C39.7297 10.6583 39.1566 11.2314 39.1566 12.1406C39.1566 12.7137 39.7297 13.2868 40.54 13.2868Z"
+ fill="#130F25" />
+ <path d="M47.849 15.2236V0.835976H50.4578V15.2236H47.849Z" fill="#130F25" />
+ <path
+ d="M56.7379 15.3422C53.9908 15.3422 52.6271 13.9588 52.4097 11.9232H54.9196C55.0185 12.5951 55.5916 13.1682 56.5205 13.1682C57.4296 13.1682 58.0027 12.5951 58.0027 12.022C58.0027 10.5397 52.6271 11.4488 52.6271 7.8124C52.6271 6.093 54.1093 4.61076 56.4019 4.61076C58.9118 4.61076 60.2755 5.97442 60.5126 7.8124H58.0027C57.8841 7.35785 57.311 6.78471 56.5205 6.78471C55.7102 6.78471 55.2556 7.23927 55.2556 7.8124C55.2556 9.29465 60.6115 8.38554 60.6115 12.1406C60.6115 13.86 59.1292 15.3422 56.7379 15.3422Z"
+ fill="#130F25" />
+ <path
+ d="M62.575 15.2236V4.72934H65.1837V15.2236H62.575ZM63.9386 3.46449C63.1283 3.46449 62.4564 2.79254 62.4564 1.98224C62.4564 1.19171 63.1283 0.5 63.9386 0.5C64.7292 0.5 65.4209 1.19171 65.4209 1.98224C65.4209 2.79254 64.7292 3.46449 63.9386 3.46449Z"
+ fill="#130F25" />
+ <path
+ d="M72.2741 19.0972C68.3807 19.0972 67.5902 15.6782 67.5902 15.6782H70.2187C70.2187 15.6782 70.6733 16.7059 72.2741 16.7059C73.7563 16.7059 74.6654 15.7968 74.6654 14.5319V13.7414C74.6654 13.7414 73.6378 14.8876 71.9184 14.8876C69.2898 14.8876 67.1357 12.7137 67.1357 9.7492C67.1357 6.78471 69.2898 4.61076 71.9184 4.61076C73.7563 4.61076 74.8828 5.75702 74.8828 5.75702L75.3374 4.72934H77.294V14.5319C77.294 17.279 75.456 19.0972 72.2741 19.0972ZM72.2741 12.3777C73.6378 12.3777 74.784 11.2314 74.784 9.7492C74.784 8.26696 73.6378 7.12069 72.2741 7.12069C70.8907 7.12069 69.7444 8.26696 69.7444 9.7492C69.7444 11.2314 70.8907 12.3777 72.2741 12.3777Z"
+ fill="#130F25" />
+ <path
+ d="M79.8099 15.2236V0.835976H82.4187V5.75702C82.4187 5.75702 83.3475 4.61076 85.3831 4.61076C87.6757 4.61076 89.3951 6.33016 89.3951 9.05749V15.2236H86.7666V9.39346C86.7666 8.0298 85.8575 7.12069 84.5926 7.12069C83.3475 7.12069 82.4187 8.0298 82.4187 9.39346V15.2236H79.8099Z"
+ fill="#130F25" />
+ <path
+ d="M96.1234 15.3422C94.068 15.3422 92.5858 13.86 92.5858 11.5674V7.12069H90.9849V4.94673H91.6767C92.4672 4.94673 92.9217 4.49218 92.9217 3.70165V2.2194H95.2143V4.72934H97.4871V7.12069H95.2143V11.4488C95.2143 12.3777 95.7874 12.9508 96.6965 12.9508C97.1511 12.9508 97.3685 12.8323 97.3685 12.8323V15.105C97.3685 15.105 96.8151 15.3422 96.1234 15.3422Z"
+ fill="#130F25" />
+ </svg>
+ </a>
+ <div class="g3p-search-signin-wrapper">
+ <div class="nav-search section">
+ <div id="header_tabs--search" class="nav-search-container nav-dropdown-container header_tabs_content--container">
+ <div class="header_tabs_content--container g3p_header_tabs_content--container">
+ <div class="header_nav--menu header_nav_search">
+ <div class="header_search search-button__component">
+ <form id="header_searchForm" class="header_search--form" data-gtm-form-interact-id="0">
+ <svg xmlns="http://www.w3.org/2000/svg" width="15" height="16" viewBox="0 0 15 16" fill="none">
+ <path fill-rule="evenodd" clip-rule="evenodd"
+ d="M14.6389 14.7298C14.7866 14.582 14.7866 14.3426 14.639 14.1949L10.8271 10.3823C11.6508 9.32639 12.1024 8.03667 12.1024 6.67594C12.1024 5.05955 11.4723 3.5414 10.3294 2.39775C9.18648 1.2541 7.66758 0.624756 6.05119 0.624756C4.43479 0.624756 2.91516 1.2541 1.77299 2.39775C0.629347 3.5414 0 5.05955 0 6.67594C0 8.29234 0.629347 9.81197 1.77299 10.9541C2.91516 12.0978 4.43479 12.7271 6.05119 12.7271C7.41191 12.7271 8.70163 12.2764 9.75756 11.4526L13.5694 15.2645C13.7171 15.4121 13.9565 15.4121 14.1043 15.2645L14.6389 14.7298ZM9.25979 9.88538C8.40284 10.7423 7.26298 11.2143 6.05119 11.2143C4.83866 11.2143 3.69954 10.7423 2.84259 9.88538C1.98481 9.02833 1.5128 7.88847 1.5128 6.67594C1.5128 5.46416 1.98481 4.32429 2.84259 3.46734C3.69954 2.60956 4.83866 2.13755 6.05119 2.13755C7.26298 2.13755 8.40284 2.60956 9.25979 3.46734C10.1176 4.32429 10.5896 5.46416 10.5896 6.67594C10.5896 7.88847 10.1176 9.02833 9.25979 9.88538Z"
+ fill="#130F25" />
+ </svg>
+ <input type="text" name="q" class="header_search--input" placeholder="What do you want to learn?"
+ autocomplete="off" data-gtm-form-interact-id="0">
+ </form>
+ <a href="/browse" class="hidden header_search--url"></a>
+ </div>
+ </div>
+ <div id="header-search-results-all" class="header_tabs_content--container nav-search-item">
+ <div id="search-menu__results-dropdown" class="nav-search-result">
+ <div id="header_dropdown--resultList"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <script id="header-search-categories-templates-partial" type="text/x-handlebars-template">
+ {{#compare this.name '===' 'courses'}}
+ <ul class="header_dropdown--lists">
+ <li class="first li-list">{{{this.name}}}</li>
+ {{#each this.results}}
+ <li><a href="{{formatCourseURL this.courseName 'course'}}">{{{this.title}}}</a></li>
+ {{/each}}
+ <li class="last li-list"><a class="view-all-link" data-tab-param="{{mapResultSetNameToTabName this.name}}" data-categories="{{this.name}}">See more results</a></li>
+ </ul>
+ {{/compare}}
+ </script>
+ </div>
+ <div class="g3p-signin-wrapper g3p-main-nav-right" tabindex="0">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
+ <path fill-rule="evenodd" clip-rule="evenodd"
+ d="M10 19.9999C15.5229 19.9999 20 15.5228 20 10C20 4.47716 15.5229 0 10 0C4.47716 0 0 4.47716 0 10C0 15.5228 4.47716 19.9999 10 19.9999ZM13.5713 7.14286C13.5713 9.1153 11.9723 10.7143 9.9999 10.7143C8.02746 10.7143 6.42847 9.1153 6.42847 7.14286C6.42847 5.17042 8.02746 3.57143 9.9999 3.57143C11.9723 3.57143 13.5713 5.17042 13.5713 7.14286ZM9.9999 12.8571C12.269 12.8571 14.3134 13.819 15.7477 15.3572C14.3134 16.8954 12.269 17.8571 9.99997 17.8571C7.73091 17.8571 5.68651 16.8954 4.25223 15.3571C5.68651 13.819 7.73089 12.8571 9.9999 12.8571Z"
+ fill="#45424D" />
+ </svg>
+ <div class="g3p-signin-button">
+ <span class="g3p-signin-text" data-aa-title="UN-Sign In">
+ <a href="https://app.pluralsight.com/id" data-aa-title="UN-Skills Sign In" class="menu-dropdown-skills" onclick="updateAnalytics('Sign in', 'Sign in to Pluralsight', 'https://app.pluralsight.com/id')">
+ Sign in
+ </a>
+ </span>
+ <div class="menu-dropdown-panel--overlay hidden"></div>
+ </div>
+ </div>
+ </div>
+</div>
+<div class="g3p-main-nav--container g3p-nav-desktop_view">
+ <div class="g3p-main-nav-left">
+ <ul>
+ <li>
+ <button class="g3p-main-nav__btn" data-aa-title="ps-nav-why-ps" aria-expanded="false"
+ id="whypsNavHeader">
+ <span class="g3p-main-nav__header">Why Pluralsight</span>
+ <span class="g3p-main-nav__chevron"></span>
+ </button>
+ </li>
+ <li>
+ <button class="g3p-main-nav__btn" data-aa-title="ps-nav-solutions" aria-expanded="false"
+ id="solutionsNavHeader">
+ <span class="g3p-main-nav__header">Solutions</span>
+ <span class="g3p-main-nav__chevron"></span>
+ </button>
+ </li>
+ <li>
+ <button class="g3p-main-nav__btn" data-aa-title="ps-nav-learn" aria-expanded="false"
+ id="learnNavHeader">
+ <span class="g3p-main-nav__header">Learn</span>
+ <span class="g3p-main-nav__chevron"></span>
+ </button>
+ </li>
+ <li>
+ <button class="g3p-main-nav__btn" data-aa-title="ps-nav-resources" aria-expanded="false"
+ id="resourcesNavHeader">
+ <span class="g3p-main-nav__header">Resources</span>
+ <span class="g3p-main-nav__chevron"></span>
+ </button>
+ </li>
+ <li>
+ <button class="g3p-main-nav__btn" data-aa-title="ps-nav-individuals" aria-expanded="false"
+ id="individualsNavHeader">
+ <span class="g3p-main-nav__header">For individuals</span>
+ <span class="g3p-main-nav__chevron"></span>
+ </button>
+ </li>
+ </ul>
+ </div>
+ <div class="g3p-main-nav-right">
+ <ul>
+ <li>
+ <a class="g3p-nav-contact-sales ps-button" href="/contact-sales" data-aa-title="blog-nav-contact-sales" data-ps-analytics="blog-nav|Contact sales|contact-sales" onclick="updateAnalytics('Main Nav Header', 'Contact sales', 'https://www.pluralsight.com/contact-sales')">
+ Contact sales
+ </a>
+ </li>
+ <li>
+ <button class="g3p-nav-get-started" id="toggleGetStarted">
+ <span class="g3p-nav-get-started--text" data-aa-title="ps-nav-get-started"
+ data-ps-analytics="ps-nav|View plans">View plans</span>
+ <svg xmlns="http://www.w3.org/2000/svg" width="10" height="6" viewBox="0 0 10 6" fill="none">
+ <path
+ d="M4.58333 5.70841C4.47372 5.70841 4.37095 5.69119 4.27504 5.65673C4.17912 5.62227 4.09006 5.56369 4.00785 5.481L0.226084 1.67693C0.0753612 1.52531 0 1.33235 0 1.09805C0 0.863737 0.0753612 0.670777 0.226084 0.519165C0.376806 0.367554 0.568635 0.291748 0.801569 0.291748C1.0345 0.291748 1.22633 0.367554 1.37706 0.519165L4.58333 3.74436L7.78961 0.519165C7.94033 0.367554 8.13216 0.291748 8.3651 0.291748C8.59803 0.291748 8.78986 0.367554 8.94058 0.519165C9.0913 0.670777 9.16667 0.863737 9.16667 1.09805C9.16667 1.33235 9.0913 1.52531 8.94058 1.67693L5.15882 5.481C5.07661 5.56369 4.98754 5.62227 4.89163 5.65673C4.79571 5.69119 4.69295 5.70841 4.58333 5.70841Z"
+ fill="white" />
+ </svg>
+ </button>
+ </li>
+ <div id="getStartedModal" class="get-started__content hidden">
+ <ul>
+
+ <li class="get-started__item">
+ <a class="get-started__icon" href="/businesses/pricing" data-aa-title="nav-for-business" previewlistener="true" onclick="updateAnalytics('View plans', 'For businesses', 'https://www.pluralsight.com/businesses/pricing')">
+ <span class="g3p-nav-icon-container">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="18" viewBox="0 0 20 18" fill="none">
+ <path
+ d="M2 18C1.45 18 0.979167 17.8145 0.5875 17.4434C0.195833 17.0724 0 16.6263 0 16.1053V5.68421C0 5.16316 0.195833 4.71711 0.5875 4.34605C0.979167 3.975 1.45 3.78947 2 3.78947H6V1.89474C6 1.37368 6.19583 0.927632 6.5875 0.556579C6.97917 0.185526 7.45 0 8 0H12C12.55 0 13.0208 0.185526 13.4125 0.556579C13.8042 0.927632 14 1.37368 14 1.89474V3.78947H18C18.55 3.78947 19.0208 3.975 19.4125 4.34605C19.8042 4.71711 20 5.16316 20 5.68421V16.1053C20 16.6263 19.8042 17.0724 19.4125 17.4434C19.0208 17.8145 18.55 18 18 18H2ZM8 3.78947H12V1.89474H8V3.78947Z"
+ fill="#FF1675" />
+ </svg>
+ </span>
+ <span class="get-started__text">For businesses</span>
+ </a>
+ </li>
+ <li class="get-started__item">
+ <a class="get-started__icon" href="/industries/public-sector/pricing" data-aa-title="nav-pubsec" previewlistener="true" onclick="updateAnalytics('View plans', 'For public sector', 'https://www.pluralsight.com/industries/public-sector')">
+ <span class="g3p-nav-icon-container">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
+ <path
+ d="M2.90301 14.6941V10.2434C2.90301 9.9117 3.01687 9.63169 3.2446 9.40339C3.47248 9.17508 3.74855 9.06093 4.0728 9.06093C4.39706 9.06093 4.6709 9.17508 4.89433 9.40339C5.1176 9.63169 5.22924 9.9117 5.22924 10.2434V14.708C5.22924 15.0396 5.1176 15.3195 4.89433 15.5478C4.6709 15.7763 4.39706 15.8905 4.0728 15.8905C3.74855 15.8905 3.47248 15.774 3.2446 15.541C3.01687 15.3081 2.90301 15.0259 2.90301 14.6941ZM8.84357 14.708V10.2434C8.84357 9.9117 8.9552 9.63169 9.17848 9.40339C9.40191 9.17508 9.67575 9.06093 10 9.06093C10.3243 9.06093 10.5981 9.17508 10.8215 9.40339C11.0448 9.63169 11.1564 9.9117 11.1564 10.2434V14.708C11.1564 15.0396 11.0448 15.3195 10.8215 15.5478C10.5981 15.7763 10.3243 15.8905 10 15.8905C9.67575 15.8905 9.40191 15.7763 9.17848 15.5478C8.9552 15.3195 8.84357 15.0396 8.84357 14.708ZM1.26425 20C0.913124 20 0.614634 19.8743 0.36878 19.6229C0.122927 19.3715 0 19.0663 0 18.7073C0 18.348 0.122927 18.0428 0.36878 17.7914C0.614634 17.5401 0.913124 17.4145 1.26425 17.4145H18.7357C19.0869 17.4145 19.3854 17.5401 19.6312 17.7914C19.8771 18.0428 20 18.348 20 18.7073C20 19.0663 19.8771 19.3715 19.6312 19.6229C19.3854 19.8743 19.0869 20 18.7357 20H1.26425ZM14.7708 14.6941V10.2434C14.7708 9.9117 14.8847 9.63169 15.1126 9.40339C15.3403 9.17508 15.6163 9.06093 15.9406 9.06093C16.265 9.06093 16.5388 9.17508 16.7621 9.40339C16.9854 9.63169 17.097 9.9117 17.097 10.2434V14.708C17.097 15.0396 16.9854 15.3195 16.7621 15.5478C16.5388 15.7763 16.265 15.8905 15.9406 15.8905C15.6163 15.8905 15.3403 15.774 15.1126 15.541C14.8847 15.3081 14.7708 15.0259 14.7708 14.6941ZM18.6818 7.52329H1.18243C0.854046 7.52329 0.574877 7.40573 0.344926 7.17059C0.114975 6.93546 0 6.65 0 6.31421V5.5571C0 5.32294 0.0594756 5.11098 0.178427 4.92122C0.297378 4.73145 0.455369 4.58209 0.652402 4.47315L8.87171 0.277819C9.22284 0.0926065 9.59894 0 10 0C10.4011 0 10.7772 0.0926065 11.1283 0.277819L19.2729 4.43485C19.5018 4.5438 19.6801 4.70942 19.808 4.9317C19.936 5.15415 20 5.3962 20 5.65784V6.16152C20 6.5391 19.8726 6.86042 19.6179 7.12547C19.3629 7.39069 19.0509 7.52329 18.6818 7.52329Z"
+ fill="#FF1675" />
+ </svg>
+ </span>
+ <span class="get-started__text">For public sector</span>
+ </a>
+ </li>
+ <li class="get-started__item">
+ <a class="get-started__icon" href="/individuals/pricing" data-aa-title="nav-for-individuals" previewlistener="true" onclick="updateAnalytics('View plans', 'For individuals', 'https://www.pluralsight.com/individuals/pricing')">
+ <span class="g3p-nav-icon-container">
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none">
+ <path
+ d="M9 9C7.7625 9 6.70312 8.55937 5.82187 7.67812C4.94062 6.79688 4.5 5.7375 4.5 4.5C4.5 3.2625 4.94062 2.20312 5.82187 1.32187C6.70312 0.440625 7.7625 0 9 0C10.2375 0 11.2969 0.440625 12.1781 1.32187C13.0594 2.20312 13.5 3.2625 13.5 4.5C13.5 5.7375 13.0594 6.79688 12.1781 7.67812C11.2969 8.55937 10.2375 9 9 9ZM0 15.75V14.85C0 14.2125 0.164062 13.6266 0.492188 13.0922C0.820312 12.5578 1.25625 12.15 1.8 11.8687C2.9625 11.2875 4.14375 10.8516 5.34375 10.5609C6.54375 10.2703 7.7625 10.125 9 10.125C10.2375 10.125 11.4562 10.2703 12.6562 10.5609C13.8562 10.8516 15.0375 11.2875 16.2 11.8687C16.7437 12.15 17.1797 12.5578 17.5078 13.0922C17.8359 13.6266 18 14.2125 18 14.85V15.75C18 16.3687 17.7797 16.8984 17.3391 17.3391C16.8984 17.7797 16.3687 18 15.75 18H2.25C1.63125 18 1.10156 17.7797 0.660937 17.3391C0.220312 16.8984 0 16.3687 0 15.75Z"
+ fill="#FF1675" />
+ </svg>
+ </span>
+ <span class="get-started__text">For individuals</span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ </ul>
+ </div>
+ <!-- Modals -->
+ <div class="g3p-modal-overlay" id="modal-overlay"></div>
+ <!-- start why ps modal -->
+ <div id="whypsNavModal" class="g3p-nav-modal">
+ <div class="g3p-nav-modal--main_container">
+ <div class="g3p-nav-course--sub_container">
+ <div class="g3p-nav-modal--main_wrapper">
+ <a href="/product/courses-overview" data-aa-title="expert-led-content" data-ps-analytics="main-nav-whyps|Why PS|https://www.pluralsight.com/product/courses-overview" onclick="updateAnalytics('whyps', 'Why PS', 'https://www.pluralsight.com/product/courses-overview')">
+ <div class="g3p-modal-subheader--container">
+ <span class="g3p-modal-subheader--image">
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M13.504 12.5279L16.7214 10.367C17.023 10.166 17.1739 9.88964 17.1739 9.53787C17.1739 9.18611 17.023 8.90972 16.7214 8.70871L13.504 6.54785C13.1688 6.31334 12.8253 6.29659 12.4734 6.4976C12.1215 6.69861 11.9455 7.00012 11.9455 7.40214V11.6736C11.9455 12.0756 12.1215 12.3771 12.4734 12.5781C12.8253 12.7792 13.1688 12.7624 13.504 12.5279ZM5.61123 21.9754C5.05823 22.0591 4.5597 21.9293 4.11563 21.5859C3.67155 21.2425 3.416 20.7944 3.34897 20.2417L2.01676 9.26149C1.94973 8.70871 2.08379 8.21456 2.41894 7.77904C2.75408 7.34352 3.19816 7.09225 3.75115 7.02525L4.90742 6.87449V15.0656C4.90742 16.1712 5.30121 17.1176 6.08881 17.9049C6.87641 18.6922 7.82321 19.0858 8.9292 19.0858H18.2799C18.1793 19.4879 17.9782 19.8354 17.6766 20.1286C17.3749 20.4217 17.0063 20.5934 16.5706 20.6437L5.61123 21.9754ZM8.9292 17.0757C8.3762 17.0757 7.90281 16.8789 7.50901 16.4853C7.11521 16.0916 6.91831 15.6184 6.91831 15.0656V4.0101C6.91831 3.45732 7.11521 2.98411 7.50901 2.59047C7.90281 2.19682 8.3762 2 8.9292 2H19.9891C20.5421 2 21.0155 2.19682 21.4093 2.59047C21.8031 2.98411 22 3.45732 22 4.0101V15.0656C22 15.6184 21.8031 16.0916 21.4093 16.4853C21.0155 16.8789 20.5421 17.0757 19.9891 17.0757H8.9292Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Expert-led content</span>
+ </div>
+ </a>
+ <div class="g3p-modal-subheader--separator"></div>
+ <ul class="g3p-modal-subheader--list">
+ <li>
+ <a href="/product/courses-overview" data-aa-title="main-nav-whyps-courses" data-ps-analytics="main-nav-whyps|Courses|https://www.pluralsight.com/product/courses-overview" onclick="updateAnalytics('whyps|Expert-lead content', 'Courses', 'https://www.pluralsight.com/product/courses-overview')">
+ <span class="g3p-modal-subheader--item">Courses</span>
+ <span class="g3p-modal-subheader--details">Learn from the best with 6,500+ expert-led courses</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/product/paths" data-aa-title="main-nav-whyps-learning-paths" data-ps-analytics="main-nav-whyps|Learning paths|https://www.pluralsight.com/product/paths" onclick="updateAnalytics('Why PS|Expert-lead content', 'Learning paths', 'https://www.pluralsight.com/product/paths')">
+ <span class="g3p-modal-subheader--item">Learning paths</span>
+ <span class="g3p-modal-subheader--details">Go from foundation to expert with curated learning journeys</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ <div class="g3p-nav-modal--main_wrapper">
+ <a href="/product/skills-assessment" data-aa-title="skill-validation" data-ps-analytics="main-nav-skill-validation|For skill-validation|https://www.pluralsight.com/product/skills-assessment" onclick="updateAnalytics('skill-validation', 'For skill-validation', 'https://www.pluralsight.com/product/skills-assessment')">
+ <div class="g3p-modal-subheader--container">
+ <span class="g3p-modal-subheader--image">
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M22 12V22H12C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12ZM12 17C14.7614 17 17 14.7614 17 12C17 9.23858 14.7614 7 12 7C9.23858 7 7 9.23858 7 12C7 14.7614 9.23858 17 12 17Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Skill validation</span>
+ </div>
+ </a>
+ <div class="g3p-modal-subheader--separator"></div>
+ <ul class="g3p-modal-subheader--list">
+ <li>
+ <a href="/product/skills-assessment" data-aa-title="main-nav-whyps-skill-assessment" data-ps-analytics="main-nav-whyps-skills-assessment|Skills assessment|https://www.pluralsight.com/product/skills-assessment" onclick="updateAnalytics('skills-assessment|Expert-lead content', 'Skills assessment', 'https://www.pluralsight.com/product/skills-assessment')">
+ <span class="g3p-modal-subheader--item">Skill IQ</span>
+ <span class="g3p-modal-subheader--details">Benchmark skills with over 500 skill assessments</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/product/cert-prep" data-aa-title="main-nav-whyps-cert-prep" data-ps-analytics="main-nav-whyps-cert-prep|Certification prep|https://www.pluralsight.com/product/cert-prep" onclick="updateAnalytics('Why PS|Certification prep', 'Certification prep', 'https://www.pluralsight.com/product/cert-prep')">
+ <span class="g3p-modal-subheader--item">Certification prep</span>
+ <span class="g3p-modal-subheader--details">Get test-ready with practice exams and certification paths</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <div class="g3p-nav-modal--main_wrapper">
+ <a href="/product/hands-on-learning" data-aa-title="immersive-experiences" data-ps-analytics="main-nav-immersive-experiences|Immersive experiences|https://www.pluralsight.com/product/hands-on-learning" onclick="updateAnalytics('immersive-experiences', 'Immersive experiences', 'https://www.pluralsight.com/product/hands-on-learning')">
+ <div class="g3p-modal-subheader--container">
+ <span class="g3p-modal-subheader--image">
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M5.0221 21C4.17478 21 3.57252 20.6208 3.21532 19.8625C2.85812 19.1042 2.94534 18.4 3.47699 17.75L9.00947 11V5H8.01263C7.73019 5 7.49344 4.90417 7.30238 4.7125C7.11132 4.52083 7.01579 4.28333 7.01579 4C7.01579 3.71667 7.11132 3.47917 7.30238 3.2875C7.49344 3.09583 7.73019 3 8.01263 3H15.9874C16.2698 3 16.5066 3.09583 16.6976 3.2875C16.8887 3.47917 16.9842 3.71667 16.9842 4C16.9842 4.28333 16.8887 4.52083 16.6976 4.7125C16.5066 4.90417 16.2698 5 15.9874 5H14.9905V11L20.523 17.75C21.0547 18.4 21.1419 19.1042 20.7847 19.8625C20.4275 20.6208 19.8252 21 18.9779 21H5.0221Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Immersive experiences</span>
+ </div>
+ </a>
+ <div class="g3p-modal-subheader--separator"></div>
+ <ul class="g3p-modal-subheader--list">
+ <li>
+ <a href="/product/labs" data-aa-title="main-nav-whyps-hands-on-labs" data-ps-analytics="main-nav-whyps|Hands-on labs|https://www.pluralsight.com/product/labs" onclick="updateAnalytics('whyps|Immersive experiences', 'Hands-on labs', 'https://www.pluralsight.com/product/labs')">
+ <span class="g3p-modal-subheader--item">Hands-on labs</span>
+ <span class="g3p-modal-subheader--details">Test skills with 3,500+ real-world scenarios</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/product/sandboxes" data-aa-title="main-nav-whyps-sandboxes" data-ps-analytics="main-nav-whyps|Sandboxes|https://www.pluralsight.com/product/sandboxes" onclick="updateAnalytics('whyps|Immersive experiences', 'Sandboxes', 'https://www.pluralsight.com/product/sandboxes')">
+ <span class="g3p-modal-subheader--item">Sandboxes</span>
+ <span class="g3p-modal-subheader--details">Practice skills freely and explore tools in a secure virtual environment</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/product/iris" data-aa-title="main-nav-whyps-iris" data-ps-analytics="main-nav-whyps|Iris AI|https://www.pluralsight.com/product/iris" onclick="updateAnalytics('Why PS|Immersive experiences', 'Iris AI', 'https://www.pluralsight.com/product/iris')">
+ <span class="g3p-modal-subheader--item">Iris AI</span>
+ <span class="g3p-modal-subheader--details">Your AI assistant throughout the learning journey</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ <div class="g3p-nav-course--sub_container">
+ <div class="g3p-nav-modal--main_wrapper">
+ <a href="/product/advanced-analytics" data-aa-title="expert-led-content" data-ps-analytics="main-nav-whyps|For whyps|https://www.pluralsight.com/product/advanced-analytics" onclick="updateAnalytics('whyps', 'For whyps', 'https://www.pluralsight.com/product/advanced-analytics')">
+ <div class="g3p-modal-subheader--container">
+ <span class="g3p-modal-subheader--image">
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M13.0001 10.9996V2.09961C15.3834 2.34961 17.3959 3.29961 19.0376 4.94961C20.6793 6.59961 21.6334 8.61628 21.9001 10.9996H13.0001ZM11.0251 21.8746C8.49177 21.6246 6.37093 20.5579 4.6626 18.6746C2.95426 16.7913 2.1001 14.5663 2.1001 11.9996C2.1001 9.41628 2.95426 7.18294 4.6626 5.29961C6.37093 3.41628 8.49177 2.34961 11.0251 2.09961V21.8746ZM13.0001 21.8746V12.9746H21.9001C21.6668 15.3579 20.7209 17.3788 19.0626 19.0371C17.4043 20.6954 15.3834 21.6413 13.0001 21.8746Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Leader tools</span>
+ </div>
+ </a>
+ <div class="g3p-modal-subheader--separator"></div>
+ <ul class="g3p-modal-subheader--list">
+ <li>
+ <a href="/product/advanced-analytics" data-aa-title="main-nav-whyps-advanced-analytics" data-ps-analytics="main-nav-whyps|Advanced analytics|https://www.pluralsight.com/product/advanced-analytics" onclick="updateAnalytics('whyps|Leader tools', 'Advanced analytics', 'https://www.pluralsight.com/product/advanced-analytics')">
+ <span class="g3p-modal-subheader--item">Advanced analytics</span>
+ <span class="g3p-modal-subheader--details">Measure progress and celebrate wins with actionable insights</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="https://developer.pluralsight.com/integrations-hub/documentation/building-integrations" data-aa-title="main-nav-whyps-integrations" data-ps-analytics="main-nav-whyps|Integrations|https://developer.pluralsight.com/integrations-hub/documentation/building-integrations" onclick="updateAnalytics('Why PS|Leader tools', 'Integrations', 'https://developer.pluralsight.com/integrations-hub/documentation/building-integrations')">
+ <span class="g3p-modal-subheader--item">Integrations</span>
+ <span class="g3p-modal-subheader--details">Connect Pluralsight to your org's everyday tools</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ <div class="g3p-nav-modal--main_wrapper">
+ <a href="/product/professional-services" data-aa-title="skill-validation" data-ps-analytics="main-nav-whyps-professional-services|professional-services|https://www.pluralsight.com/product/professional-services" onclick="updateAnalytics('Why PS|Professional services', 'Professional services', 'https://www.pluralsight.com/product/professional-services')">
+ <div class="g3p-modal-subheader--container">
+ <span class="g3p-modal-subheader--image">
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M12.1002 20.9998C11.8169 20.9998 11.5794 20.904 11.3877 20.7123C11.196 20.5206 11.1002 20.2831 11.1002 19.9998C11.1002 19.8831 11.1252 19.7623 11.1752 19.6373C11.2252 19.5123 11.3002 19.3998 11.4002 19.2998L15.6752 15.0248C15.7752 14.9248 15.8252 14.804 15.8252 14.6623C15.8252 14.5206 15.7752 14.3998 15.6752 14.2998C15.5752 14.1998 15.4544 14.154 15.3127 14.1623C15.171 14.1706 15.0502 14.2248 14.9502 14.3248L10.7002 18.5748C10.6002 18.6748 10.4919 18.7498 10.3752 18.7998C10.2585 18.8498 10.1335 18.8748 10.0002 18.8748C9.71686 18.8748 9.47936 18.779 9.2877 18.5873C9.09603 18.3956 9.0002 18.1581 9.0002 17.8748C9.0002 17.7081 9.0252 17.5706 9.0752 17.4623C9.1252 17.354 9.19186 17.2581 9.2752 17.1748L13.5502 12.8998C13.6502 12.7998 13.7002 12.6831 13.7002 12.5498C13.7002 12.4165 13.6502 12.2998 13.5502 12.1998C13.4502 12.0998 13.3335 12.0498 13.2002 12.0498C13.0669 12.0498 12.9502 12.0998 12.8502 12.1998L8.5752 16.4498C8.4752 16.5498 8.36686 16.6248 8.2502 16.6748C8.13353 16.7248 8.0002 16.7498 7.8502 16.7498C7.58353 16.7498 7.3502 16.6498 7.1502 16.4498C6.9502 16.2498 6.8502 16.0165 6.8502 15.7498C6.8502 15.6165 6.8752 15.4915 6.9252 15.3748C6.9752 15.2581 7.0502 15.1498 7.1502 15.0498L11.4002 10.7998C11.5002 10.6998 11.5502 10.579 11.5502 10.4373C11.5502 10.2956 11.5002 10.1748 11.4002 10.0748C11.3002 9.9748 11.1835 9.9248 11.0502 9.9248C10.9169 9.9248 10.8002 9.9748 10.7002 10.0748L6.4502 14.3498C6.36686 14.4331 6.26686 14.4998 6.1502 14.5498C6.03353 14.5998 5.89186 14.6248 5.7252 14.6248C5.44186 14.6248 5.20436 14.529 5.0127 14.3373C4.82103 14.1456 4.7252 13.9081 4.7252 13.6248C4.7252 13.4915 4.7502 13.3665 4.8002 13.2498C4.8502 13.1331 4.9252 13.0248 5.0252 12.9248L9.9252 8.0248C10.1085 7.84147 10.3377 7.75814 10.6127 7.7748C10.8877 7.79147 11.1169 7.89147 11.3002 8.0748L14.3502 11.1248C14.5335 11.3081 14.7502 11.454 15.0002 11.5623C15.2502 11.6706 15.5002 11.7248 15.7502 11.7248C16.2835 11.7248 16.7502 11.5373 17.1502 11.1623C17.5502 10.7873 17.7502 10.3081 17.7502 9.7248C17.7502 9.49147 17.7085 9.2498 17.6252 8.9998C17.5419 8.7498 17.3919 8.51647 17.1752 8.2998L13.7502 4.8748C13.5669 4.69147 13.446 4.49147 13.3877 4.2748C13.3294 4.05814 13.3585 3.8498 13.4752 3.6498C13.6252 3.3998 13.8169 3.21647 14.0502 3.0998C14.2835 2.98314 14.5419 2.9248 14.8252 2.9248C15.1752 2.9248 15.5335 3.00814 15.9002 3.1748C16.2669 3.34147 16.6002 3.5748 16.9002 3.8748L21.1252 8.1248C21.4252 8.4248 21.646 8.75814 21.7877 9.1248C21.9294 9.49147 22.0002 9.91647 22.0002 10.3998C22.0002 10.7331 21.9252 11.0706 21.7752 11.4123C21.6252 11.754 21.4085 12.0665 21.1252 12.3498L12.8002 20.6998C12.6669 20.8331 12.5502 20.9165 12.4502 20.9498C12.3502 20.9831 12.2335 20.9998 12.1002 20.9998ZM2.9002 12.1248C2.58353 11.8915 2.34603 11.6123 2.1877 11.2873C2.02936 10.9623 1.9502 10.6165 1.9502 10.2498C1.9502 9.86647 2.02936 9.49147 2.1877 9.1248C2.34603 8.75814 2.5752 8.4248 2.8752 8.1248L7.1002 3.8748C7.38353 3.59147 7.69603 3.3748 8.0377 3.2248C8.37936 3.0748 8.74186 2.9998 9.1252 2.9998C9.54186 2.9998 9.94603 3.0748 10.3377 3.2248C10.7294 3.3748 11.0669 3.59147 11.3502 3.8748L16.4752 8.9998C16.5585 9.08314 16.6294 9.1873 16.6877 9.3123C16.746 9.4373 16.7752 9.56647 16.7752 9.6998C16.7752 9.98314 16.6794 10.2206 16.4877 10.4123C16.296 10.604 16.0585 10.6998 15.7752 10.6998C15.6419 10.6998 15.5127 10.6706 15.3877 10.6123C15.2627 10.554 15.1585 10.4831 15.0752 10.3998L12.0002 7.3498C11.6169 6.96647 11.146 6.7748 10.5877 6.7748C10.0294 6.7748 9.55853 6.96647 9.1752 7.3498L4.4752 12.0498C4.25853 12.2665 4.00436 12.379 3.7127 12.3873C3.42103 12.3956 3.1502 12.3081 2.9002 12.1248Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Professional services</span>
+ </div>
+ </a>
+ <div class="g3p-modal-subheader--separator"></div>
+ <ul class="g3p-modal-subheader--list">
+ <li>
+ <a href="/product/professional-services" data-aa-title="main-nav-whyps-professional-services" data-ps-analytics="main-nav-whyps-professional-services|Professional services|https://www.pluralsight.com/product/professional-services" onclick="updateAnalytics('Why PS|Professional services', 'Professional services', 'https://www.pluralsight.com/product/professional-services')">
+ <span class="g3p-modal-subheader--item">ProServ for Pluralsight</span>
+ <span class="g3p-modal-subheader--details">Set your org up for success with expert service consultants</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- end why ps modal -->
+ <!-- start solutions modal -->
+ <div id="solutionsNavModal" class="g3p-nav-modal">
+ <div class="g3p-nav-modal--main_container">
+ <div class="g3p-nav-modal--main_wrapper">
+ <a href="/businesses" data-aa-title="main-nav-solutions" data-ps-analytics="main-nav-solutions|Solutions|https://www.pluralsight.com/businesses" onclick="updateAnalytics('Solutions', 'Solutions', 'https://www.pluralsight.com/businesses')">
+ <div class="g3p-modal-subheader--container">
+ <span class="g3p-modal-subheader--image">
+ <svg xmlns="http://www.w3.org/2000/svg" width="22" height="21" viewBox="0 0 22 21" fill="none">
+ <path
+ d="M9.46139 17.923C9.03831 17.923 8.67613 17.7724 8.37485 17.4711C8.07357 17.1698 7.92293 16.8077 7.92293 16.3846V15.423C7.19216 14.923 6.62485 14.282 6.221 13.5C5.81716 12.7179 5.61523 11.8846 5.61523 11C5.61523 9.49997 6.13767 8.22754 7.18254 7.18266C8.22741 6.13779 9.49985 5.61536 10.9998 5.61536C12.4998 5.61536 13.7723 6.13779 14.8172 7.18266C15.862 8.22754 16.3845 9.49997 16.3845 11C16.3845 11.8846 16.1825 12.7147 15.7787 13.4904C15.3749 14.266 14.8075 14.9102 14.0768 15.423V16.3846C14.0768 16.8077 13.9261 17.1698 13.6249 17.4711C13.3236 17.7724 12.9614 17.923 12.5383 17.923H9.46139ZM9.46139 21C9.24344 21 9.06075 20.9263 8.91331 20.7788C8.76588 20.6314 8.69216 20.4487 8.69216 20.2307C8.69216 20.0128 8.76588 19.8301 8.91331 19.6827C9.06075 19.5352 9.24344 19.4615 9.46139 19.4615H12.5383C12.7563 19.4615 12.939 19.5352 13.0864 19.6827C13.2338 19.8301 13.3075 20.0128 13.3075 20.2307C13.3075 20.4487 13.2338 20.6314 13.0864 20.7788C12.939 20.9263 12.7563 21 12.5383 21H9.46139Z"
+ fill="#FF1675" />
+ <path d="M11 2.53845L11 0.999991" stroke="#FF1675" stroke-width="1.53846" stroke-linecap="round" />
+ <path d="M19.4614 11H20.9999" stroke="#FF1675" stroke-width="1.53846" stroke-linecap="round" />
+ <path d="M1 11H2.53846" stroke="#FF1675" stroke-width="1.53846" stroke-linecap="round" />
+ <path d="M4.87939 5.05707L3.79154 3.96921" stroke="#FF1675" stroke-width="1.53846"
+ stroke-linecap="round" />
+ <path d="M17.0938 5.05707L18.1816 3.96921" stroke="#FF1675" stroke-width="1.53846"
+ stroke-linecap="round" />
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Solutions we provide</span>
+ </div>
+ </a>
+ <div class="g3p-modal-subheader--separator"></div>
+ <ul class="g3p-modal-subheader--list">
+ <li>
+ <a href="/solutions/ai-academy" data-aa-title="main-nav-solutions-ai-academy" data-ps-analytics="main-nav-solutions|AI Academy|https://www.pluralsight.com/solutions/ai-academy" onclick="updateAnalytics('Solutions|Solutions', 'AI Academy', 'https://www.pluralsight.com/solutions/ai-academy')">
+ <span class="g3p-modal-subheader--item">AI Academy</span>
+ <span class="g3p-modal-subheader--details">Pragmatic AI skills for business professionals</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/solutions/ai-ready" data-aa-title="main-nav-solutions-ai-ready" data-ps-analytics="main-nav-solutions|AI Ready|https://www.pluralsight.com/solutions/ai-ready" onclick="updateAnalytics('Solutions|Solutions', 'AI Ready', 'https://www.pluralsight.com/solutions/ai-ready')">
+ <span class="g3p-modal-subheader--item">AI Ready</span>
+ <span class="g3p-modal-subheader--details">Production-ready AI skills for software and DevOps teams</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/solutions/cloud-ready" data-aa-title="main-nav-solutions-cloudready" data-ps-analytics="main-nav-solutions|Cloud Ready|https://www.pluralsight.com/solutions/cloud-ready" onclick="updateAnalytics('Solutions|Solutions', 'Cloud Ready', 'https://www.pluralsight.com/solutions/cloud-ready')">
+ <span class="g3p-modal-subheader--item">Cloud Ready</span>
+ <span class="g3p-modal-subheader--details">Structured cloud learning, from fundamentals to specialization</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/solutions/secureready" data-aa-title="main-nav-solutions-SecureReady" data-ps-analytics="main-nav-solutions|SecureReady|https://www.pluralsight.com/solutions/secureready" onclick="updateAnalytics('Solutions|Solutions', 'SecureReady', 'https://www.pluralsight.com/solutions/secureready')">
+ <span class="g3p-modal-subheader--item">Secure Ready</span>
+ <span class="g3p-modal-subheader--details">Role-aligned security skill development and validation</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/product/professional-services/instructor-led-training" data-aa-title="main-nav-solutions-instructor-led-training" data-ps-analytics="main-nav-solutions|Instructor-led training|https://www.pluralsight.com/product/professional-services/instructor-led-training" onclick="updateAnalytics('Solutions|Solutions', 'Instructor-led training', 'https://www.pluralsight.com/product/professional-services/instructor-led-training')">
+ <span class="g3p-modal-subheader--item">Instructor-led training</span>
+ <span class="g3p-modal-subheader--details">Live workshops and programs for crucial initiatives</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ <div class="g3p-nav-modal--main_wrapper">
+ <a href="/businesses" data-aa-title="main-nav-business-by-industry" data-ps-analytics="main-nav-solutions-industry|By Industry|https://www.pluralsight.com/businesses" onclick="updateAnalytics('Solutions', 'By industry', 'https://www.pluralsight.com/businesses')">
+ <div class="g3p-modal-subheader--container" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg width="20" height="18" viewBox="0 0 20 18" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M2 18C1.45 18 0.979167 17.8145 0.5875 17.4434C0.195833 17.0724 0 16.6263 0 16.1053V5.68421C0 5.16316 0.195833 4.71711 0.5875 4.34605C0.979167 3.975 1.45 3.78947 2 3.78947H6V1.89474C6 1.37368 6.19583 0.927632 6.5875 0.556579C6.97917 0.185526 7.45 0 8 0H12C12.55 0 13.0208 0.185526 13.4125 0.556579C13.8042 0.927632 14 1.37368 14 1.89474V3.78947H18C18.55 3.78947 19.0208 3.975 19.4125 4.34605C19.8042 4.71711 20 5.16316 20 5.68421V16.1053C20 16.6263 19.8042 17.0724 19.4125 17.4434C19.0208 17.8145 18.55 18 18 18H2ZM8 3.78947H12V1.89474H8V3.78947Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Who we serve</span>
+ </div>
+ </a>
+ <div class="g3p-modal-subheader--separator"></div>
+ <ul class="g3p-modal-subheader--list">
+ <li>
+ <a href="/businesses" data-aa-title="main-nav-solutions-Enterprise" data-ps-analytics="main-nav-solutions|Enterprise|https://www.pluralsight.com/businesses" onclick="updateAnalytics('Solutions|Solutions', 'Enterprise', 'https://www.pluralsight.com/businesses')">
+ <span class="g3p-modal-subheader--item">Enterprise</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/businesses/small-business" data-aa-title="main-nav-solutions-small-business" data-ps-analytics="main-nav-solutions|Small business|https://www.pluralsight.com/businesses/small-business" onclick="updateAnalytics('Solutions|By industry', 'Small business', 'https://www.pluralsight.com/businesses/small-business')">
+ <span class="g3p-modal-subheader--item">Small business</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/industries/public-sector" data-aa-title="main-nav-industry-Public-Sector" data-ps-analytics="main-nav-industry|Public sector|https://www.pluralsight.com/industries/public-sector" onclick="updateAnalytics('Solutions|By industry', 'Public sector', 'https://www.pluralsight.com/industries/public-sector')">
+ <span class="g3p-modal-subheader--item">Public sector</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="https://www.pluralsightone.org/initiatives-overview/licensing-for-nonprofits" data-aa-title="main-nav-industry-nonprofits" data-ps-analytics="main-nav-industry|Nonprofits|https://www.pluralsightone.org/initiatives-overview/licensing-for-nonprofits" onclick="updateAnalytics('Solutions|By industry', 'Nonprofits', 'https://www.pluralsightone.org/initiatives-overview/licensing-for-nonprofits')">
+ <span class="g3p-modal-subheader--item">Nonprofits</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ <!-- end solutions modal -->
+ <!-- start learn modal -->
+ <div id="learnNavModal" class="g3p-nav-modal">
+ <div class="g3p-nav-modal--main_container">
+ <div class="g3p-nav-modal--main_wrapper">
+ <a href="/browse" data-aa-title="learn" data-ps-analytics="main-nav-learn|Learn|https://www.pluralsight.com/browse" onclick="updateAnalytics('Learn', 'Learn', 'https://www.pluralsight.com/browse')">
+ <div class="g3p-modal-subheader--container">
+ <span class="g3p-modal-subheader--image">
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <g clip-path="url(#clip0_10970_8172)">
+ <path d="M2 19V17H12V19H2ZM2 14V12H7V14H2ZM2 9V7H7V9H2ZM20.6 19L16.75 15.15C16.35 15.4333 15.9125 15.6458 15.4375 15.7875C14.9625 15.9292 14.4833 16 14 16C12.6167 16 11.4375 15.5125 10.4625 14.5375C9.4875 13.5625 9 12.3833 9 11C9 9.61667 9.4875 8.4375 10.4625 7.4625C11.4375 6.4875 12.6167 6 14 6C15.3833 6 16.5625 6.4875 17.5375 7.4625C18.5125 8.4375 19 9.61667 19 11C19 11.4833 18.9292 11.9625 18.7875 12.4375C18.6458 12.9125 18.4333 13.35 18.15 13.75L22 17.6L20.6 19ZM14 14C14.8333 14 15.5417 13.7083 16.125 13.125C16.7083 12.5417 17 11.8333 17 11C17 10.1667 16.7083 9.45833 16.125 8.875C15.5417 8.29167 14.8333 8 14 8C13.1667 8 12.4583 8.29167 11.875 8.875C11.2917 9.45833 11 10.1667 11 11C11 11.8333 11.2917 12.5417 11.875 13.125C12.4583 13.7083 13.1667 14 14 14Z" fill="#FF1675"/>
+ </g>
+ <defs>
+ <clipPath id="clip0_10970_8172">
+ <rect width="24" height="24" fill="white"/>
+ </clipPath>
+ </defs>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Learn</span>
+ </div>
+ </a>
+ <div class="g3p-modal-subheader--separator"></div>
+ <ul class="g3p-modal-subheader--list">
+ <li>
+ <a href="https://www.pluralsight.com/browse?=&sort=newest&course-category=Artificial%20Intelligence&page=1" data-aa-title="main-nav-learn-artificial-intelligence" data-ps-analytics="main-nav-learn|Artificial intelligence|https://www.pluralsight.com/browse?=&sort=newest&course-category=Artificial%20Intelligence&page=1" onclick="updateAnalytics('Learn|Learn', 'Artificial intelligence', 'https://www.pluralsight.com/browse?=&sort=newest&course-category=Artificial%20Intelligence&page=1')">
+ <span class="g3p-modal-subheader--item">Artificial intelligence</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="https://www.pluralsight.com/browse?=&sort=newest&course-category=Cloud&page=1" data-aa-title="main-nav-learn-cloud" data-ps-analytics="main-nav-learn|Cloud|https://www.pluralsight.com/browse?=&sort=newest&course-category=Cloud&page=1" onclick="updateAnalytics('Learn|Learn', 'Cloud', 'https://www.pluralsight.com/browse?=&sort=newest&course-category=Cloud&page=1')">
+ <span class="g3p-modal-subheader--item">Cloud</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Data" data-aa-title="main-nav-learn-Data" data-ps-analytics="main-nav-learn|Data|https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Data" onclick="updateAnalytics('Learn|Learn', 'Data', 'https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Data')">
+ <span class="g3p-modal-subheader--item">Data</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=IT%20Ops" data-aa-title="main-nav-learn-IT-Ops" data-ps-analytics="main-nav-learn|IT Ops|https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=IT%20Ops" onclick="updateAnalytics('Learn|Learn', 'IT Ops', 'https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=IT%20Ops')">
+ <span class="g3p-modal-subheader--item">IT Ops</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Security" data-aa-title="main-nav-learn-Security" data-ps-analytics="main-nav-learn|Security|https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Security" onclick="updateAnalytics('Learn|Learn', 'Security', 'https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Security')">
+ <span class="g3p-modal-subheader--item">Security</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="https://www.pluralsight.com/browse?=&sort=newest&course-category=Software%20Development&page=1" data-aa-title="main-nav-learn-Software-development" data-ps-analytics="main-nav-learn|Software development|https://www.pluralsight.com/browse?=&sort=newest&course-category=Software%20Development&page=1" onclick="updateAnalytics('Learn|Learn', 'Software development', 'https://www.pluralsight.com/browse?=&sort=newest&course-category=Software%20Development&page=1')">
+ <span class="g3p-modal-subheader--item">Software development</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Business" data-aa-title="main-nav-learn-business-professional-development" data-ps-analytics="main-nav-learn|business-professional-development|https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Business" onclick="updateAnalytics('Learn|Learn', 'business-professional-development', 'https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Business')">
+ <span class="g3p-modal-subheader--item">Business & professional development</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <a class="g3p-nav--anchor_btn" href="/browse" data-aa-title="main-nav-courses-all-courses" onclick="updateAnalytics('Courses', 'All courses', 'https://www.pluralsight.com/browse')">
+ <span>Browse all topics</span>
+ <span class="g3p-nav-resource--right_cta-image">
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="10" viewBox="0 0 14 10" fill="none">
+ <path
+ d="M10.4097 5.82398H1.16282C0.927842 5.82398 0.730879 5.74502 0.571926 5.58711C0.412973 5.42919 0.333496 5.23352 0.333496 5.00008C0.333496 4.76664 0.412973 4.57097 0.571926 4.41306C0.730879 4.25514 0.927842 4.17619 1.16282 4.17619H10.4097L8.04618 1.82808C7.88031 1.6633 7.80084 1.47106 7.80775 1.25135C7.81466 1.03165 7.89413 0.839407 8.04618 0.674627C8.21204 0.509848 8.409 0.424026 8.63707 0.41716C8.86513 0.410294 9.06209 0.489251 9.22796 0.65403L13.0221 4.42335C13.105 4.50574 13.1638 4.595 13.1983 4.69112C13.2329 4.78724 13.2502 4.89023 13.2502 5.00008C13.2502 5.10993 13.2329 5.21292 13.1983 5.30904C13.1638 5.40516 13.105 5.49442 13.0221 5.57681L9.22796 9.34613C9.06209 9.51091 8.86513 9.58987 8.63707 9.583C8.409 9.57614 8.21204 9.49031 8.04618 9.32553C7.89413 9.16076 7.81466 8.96851 7.80775 8.74881C7.80084 8.5291 7.88031 8.33686 8.04618 8.17208L10.4097 5.82398Z"
+ fill="#E7005E" />
+ </svg>
+ </span>
+ </a>
+ </div>
+ <!-- end learn modal -->
+ <!-- start resources modal -->
+ <div id="resourcesNavModal" class="g3p-nav-modal g3p-no-padding">
+ <div class="g3p-nav-resource--container">
+ <div class="g3p-nav-resource--left">
+ <div class="g3p-nav-modal--main_container">
+ <div class="g3p-nav-modal--main_wrapper">
+ <a href="/resources" data-aa-title="main-nav-resources-learn" data-ps-analytics="main-nav-resources-learn|Learn|https://www.pluralsight.com/resources" onclick="updateAnalytics('Resources', 'Learn', 'https://www.pluralsight.com/resources')">
+ <div class="g3p-modal-subheader--container" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
+ <path
+ d="M13 17.05C13.7333 16.7 14.4708 16.4375 15.2125 16.2625C15.9542 16.0875 16.7167 16 17.5 16C18.1 16 18.6875 16.05 19.2625 16.15C19.8375 16.25 20.4167 16.4 21 16.6V6.7C20.45 6.46667 19.8792 6.29167 19.2875 6.175C18.6958 6.05833 18.1 6 17.5 6C16.7167 6 15.9417 6.1 15.175 6.3C14.4083 6.5 13.6833 6.8 13 7.2V17.05ZM12 19.475C11.7667 19.475 11.5458 19.4458 11.3375 19.3875C11.1292 19.3292 10.9333 19.25 10.75 19.15C10.1 18.7667 9.41667 18.4792 8.7 18.2875C7.98333 18.0958 7.25 18 6.5 18C5.8 18 5.1125 18.0917 4.4375 18.275C3.7625 18.4583 3.11667 18.7167 2.5 19.05C2.15 19.2333 1.8125 19.225 1.4875 19.025C1.1625 18.825 1 18.5333 1 18.15V6.1C1 5.91667 1.04583 5.74167 1.1375 5.575C1.22917 5.40833 1.36667 5.28333 1.55 5.2C2.33333 4.81667 3.1375 4.52083 3.9625 4.3125C4.7875 4.10417 5.63333 4 6.5 4C7.46667 4 8.4125 4.125 9.3375 4.375C10.2625 4.625 11.15 5 12 5.5C12.85 5 13.7375 4.625 14.6625 4.375C15.5875 4.125 16.5333 4 17.5 4C18.3667 4 19.2125 4.10417 20.0375 4.3125C20.8625 4.52083 21.6667 4.81667 22.45 5.2C22.6333 5.28333 22.7708 5.40833 22.8625 5.575C22.9542 5.74167 23 5.91667 23 6.1V18.15C23 18.5333 22.8375 18.825 22.5125 19.025C22.1875 19.225 21.85 19.2333 21.5 19.05C20.8833 18.7167 20.2375 18.4583 19.5625 18.275C18.8875 18.0917 18.2 18 17.5 18C16.75 18 16.0167 18.0958 15.3 18.2875C14.5833 18.4792 13.9 18.7667 13.25 19.15C13.0667 19.25 12.8708 19.3292 12.6625 19.3875C12.4542 19.4458 12.2333 19.475 12 19.475ZM14 8.775C14 8.625 14.0542 8.47083 14.1625 8.3125C14.2708 8.15417 14.3917 8.05 14.525 8C15.0083 7.83333 15.4917 7.70833 15.975 7.625C16.4583 7.54167 16.9667 7.5 17.5 7.5C17.8333 7.5 18.1625 7.52083 18.4875 7.5625C18.8125 7.60417 19.1333 7.65833 19.45 7.725C19.6 7.75833 19.7292 7.84167 19.8375 7.975C19.9458 8.10833 20 8.25833 20 8.425C20 8.70833 19.9083 8.91667 19.725 9.05C19.5417 9.18333 19.3083 9.21667 19.025 9.15C18.7917 9.1 18.5458 9.0625 18.2875 9.0375C18.0292 9.0125 17.7667 9 17.5 9C17.0667 9 16.6417 9.04167 16.225 9.125C15.8083 9.20833 15.4083 9.31667 15.025 9.45C14.725 9.56667 14.4792 9.55833 14.2875 9.425C14.0958 9.29167 14 9.075 14 8.775ZM14 14.275C14 14.125 14.0542 13.9708 14.1625 13.8125C14.2708 13.6542 14.3917 13.55 14.525 13.5C15.0083 13.3333 15.4917 13.2083 15.975 13.125C16.4583 13.0417 16.9667 13 17.5 13C17.8333 13 18.1625 13.0208 18.4875 13.0625C18.8125 13.1042 19.1333 13.1583 19.45 13.225C19.6 13.2583 19.7292 13.3417 19.8375 13.475C19.9458 13.6083 20 13.7583 20 13.925C20 14.2083 19.9083 14.4167 19.725 14.55C19.5417 14.6833 19.3083 14.7167 19.025 14.65C18.7917 14.6 18.5458 14.5625 18.2875 14.5375C18.0292 14.5125 17.7667 14.5 17.5 14.5C17.0667 14.5 16.6417 14.5375 16.225 14.6125C15.8083 14.6875 15.4083 14.7917 15.025 14.925C14.725 15.0417 14.4792 15.0375 14.2875 14.9125C14.0958 14.7875 14 14.575 14 14.275ZM14 11.525C14 11.375 14.0542 11.2208 14.1625 11.0625C14.2708 10.9042 14.3917 10.8 14.525 10.75C15.0083 10.5833 15.4917 10.4583 15.975 10.375C16.4583 10.2917 16.9667 10.25 17.5 10.25C17.8333 10.25 18.1625 10.2708 18.4875 10.3125C18.8125 10.3542 19.1333 10.4083 19.45 10.475C19.6 10.5083 19.7292 10.5917 19.8375 10.725C19.9458 10.8583 20 11.0083 20 11.175C20 11.4583 19.9083 11.6667 19.725 11.8C19.5417 11.9333 19.3083 11.9667 19.025 11.9C18.7917 11.85 18.5458 11.8125 18.2875 11.7875C18.0292 11.7625 17.7667 11.75 17.5 11.75C17.0667 11.75 16.6417 11.7917 16.225 11.875C15.8083 11.9583 15.4083 12.0667 15.025 12.2C14.725 12.3167 14.4792 12.3083 14.2875 12.175C14.0958 12.0417 14 11.825 14 11.525Z"
+ fill="#FF1675" />
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Learn</span>
+ </div>
+ </a>
+ <div class="g3p-modal-subheader--separator"></div>
+ <ul class="g3p-modal-subheader--list">
+ <li>
+ <a href="/resources?content-type=Case+studies" data-aa-title="main-nav-resources-case-studies" data-ps-analytics="main-nav-resources|Case studies|https://www.pluralsight.com/resources?q=&content-type=Case+studies" onclick="updateAnalytics('Resources|Learn', 'Case studies', 'https://www.pluralsight.com/resources?q=&content-type=Case+studies')">
+ <span class="g3p-modal-subheader--item">Case studies</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/resources/podcasts/the-pluralsight-podcast" data-aa-title="main-nav-resources-podcasts" data-ps-analytics="main-nav-resources|podcasts|https://www.pluralsight.com/resources/podcasts/the-pluralsight-podcast" onclick="updateAnalytics('Resources|Learn', 'podcasts', 'https://www.pluralsight.com/resources/podcasts/the-pluralsight-podcast')">
+ <span class="g3p-modal-subheader--item">Podcasts</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/resources?content-type=Reports" data-aa-title="main-nav-resources-reports" data-ps-analytics="main-nav-resources|Reports|https://www.pluralsight.com/resources?q=&content-type=Reports" onclick="updateAnalytics('Resources|Learn', 'Reports', 'https://www.pluralsight.com/resources?q=&content-type=Reports')">
+ <span class="g3p-modal-subheader--item">Reports</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/resources/blog/browse?unified-tags=guides" data-aa-title="main-nav-resources-tech-guide" data-ps-analytics="main-nav-resources|Tech guides|https://www.pluralsight.com/resources/blog/browse?unified-tags=guides" onclick="updateAnalytics('Resources|Learn', 'Tech guides', 'https://www.pluralsight.com/resources/blog/browse?unified-tags=guides')">
+ <span class="g3p-modal-subheader--item">Tech guides</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/resources/videos" data-aa-title="main-nav-resources-video-series" data-ps-analytics="main-nav-resources|Video series|https://www.pluralsight.com/resources/videos" onclick="updateAnalytics('Resources|Learn', 'Video series', 'https://www.pluralsight.com/resources/videos')">
+ <span class="g3p-modal-subheader--item">Video series</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ <div class="g3p-nav-modal--main_wrapper">
+ <a href="/events" data-aa-title="main-nav-resources-connect" data-ps-analytics="main-nav-resources-connect|Connect|https://www.pluralsight.com/events" onclick="updateAnalytics('Resources', 'Connect', 'https://www.pluralsight.com/events')">
+ <div class="g3p-modal-subheader--container" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M5 22C4.45 22 3.97917 21.8042 3.5875 21.4125C3.19583 21.0208 3 20.55 3 20V6C3 5.45 3.19583 4.97917 3.5875 4.5875C3.97917 4.19583 4.45 4 5 4H6V3C6 2.71667 6.09583 2.47917 6.2875 2.2875C6.47917 2.09583 6.71667 2 7 2C7.28333 2 7.52083 2.09583 7.7125 2.2875C7.90417 2.47917 8 2.71667 8 3V4H16V3C16 2.71667 16.0958 2.47917 16.2875 2.2875C16.4792 2.09583 16.7167 2 17 2C17.2833 2 17.5208 2.09583 17.7125 2.2875C17.9042 2.47917 18 2.71667 18 3V4H19C19.55 4 20.0208 4.19583 20.4125 4.5875C20.8042 4.97917 21 5.45 21 6V20C21 20.55 20.8042 21.0208 20.4125 21.4125C20.0208 21.8042 19.55 22 19 22H5ZM5 20H19V10H5V20Z" fill="#FF1675"/>
+ <rect x="4" y="9" width="16" height="11" fill="#FF1675"/>
+ <path d="M14.4252 11.7785L10.9502 15.2535L9.5752 13.8785C9.3752 13.6785 9.13353 13.5785 8.85019 13.5785C8.56686 13.5785 8.3252 13.6785 8.1252 13.8785C7.9252 14.0785 7.8252 14.3202 7.8252 14.6035C7.8252 14.8868 7.9252 15.1285 8.1252 15.3285L10.2502 17.4535C10.4502 17.6535 10.6835 17.7535 10.9502 17.7535C11.2169 17.7535 11.4502 17.6535 11.6502 17.4535L15.8752 13.2285C16.0752 13.0285 16.1752 12.7868 16.1752 12.5035C16.1752 12.2202 16.0752 11.9785 15.8752 11.7785C15.6752 11.5785 15.4335 11.4785 15.1502 11.4785C14.8669 11.4785 14.6252 11.5785 14.4252 11.7785Z" fill="white"/>
+ <path d="M6 8H18" stroke="white" stroke-width="1.5" stroke-linecap="round"/>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Connect</span>
+ </div>
+ </a>
+ <div class="g3p-modal-subheader--separator"></div>
+ <ul class="g3p-modal-subheader--list">
+ <li>
+ <a href="/events" data-aa-title="main-nav-resources-Events" data-ps-analytics="main-nav-resources|Events|https://www.pluralsight.com/events" onclick="updateAnalytics('Resources|Connect', 'Events', 'https://www.pluralsight.com/events')">
+ <span class="g3p-modal-subheader--item">
+ <span class="g3p-modal-subheader--item">Events</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/resources/webinars" data-aa-title="main-nav-resources-Webinars" data-ps-analytics="main-nav-resources|Webinars|https://www.pluralsight.com/resources/webinars" onclick="updateAnalytics('Resources|Connect', 'Webinars', 'https://www.pluralsight.com/resources/webinars')">
+ <span class="g3p-modal-subheader--item">Webinars</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ <div class="g3p-nav-modal--main_wrapper">
+ <a href="/resources/blog" data-aa-title="main-nav-resources-blog" data-ps-analytics="main-nav-resources-blog|Blog|https://www.pluralsight.com/resources/blog" onclick="updateAnalytics('Resources', 'Blog',
+ 'https://www.pluralsight.com/resources/blog')">
+ <div class="g3p-modal-subheader--container" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg xmlns="http://www.w3.org/2000/svg" width="19" height="18" viewBox="0 0 19 18" fill="none">
+ <path
+ d="M1.6665 18.0002C1.38317 18.0002 1.14567 17.9044 0.954004 17.7127C0.762337 17.5211 0.666504 17.2836 0.666504 17.0002V14.5752C0.666504 14.3086 0.716504 14.0544 0.816504 13.8127C0.916504 13.5711 1.05817 13.3586 1.2415 13.1752L13.8665 0.575244C14.0665 0.391911 14.2873 0.250244 14.529 0.150244C14.7707 0.0502441 15.0248 0.000244141 15.2915 0.000244141C15.5582 0.000244141 15.8165 0.0502441 16.0665 0.150244C16.3165 0.250244 16.5332 0.400244 16.7165 0.600244L18.0915 2.00024C18.2915 2.18358 18.4373 2.40024 18.529 2.65024C18.6207 2.90024 18.6665 3.15024 18.6665 3.40024C18.6665 3.66691 18.6207 3.92108 18.529 4.16274C18.4373 4.40441 18.2915 4.62524 18.0915 4.82524L5.4915 17.4252C5.30817 17.6086 5.09567 17.7502 4.854 17.8502C4.61234 17.9502 4.35817 18.0002 4.0915 18.0002H1.6665ZM15.2665 4.80024L16.6665 3.40024L15.2665 2.00024L13.8665 3.40024L15.2665 4.80024Z"
+ fill="#FF1675" />
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Blog</span>
+ </div>
+ </a>
+ <div class="g3p-modal-subheader--separator"></div>
+ <ul class="g3p-modal-subheader--list">
+ <li>
+ <a href="/resources/blog" data-aa-title="main-nav-resources-blog-home" data-ps-analytics="main-nav-resources|Blog home|https://www.pluralsight.com/resources/blog" onclick="updateAnalytics('Resources|Blog', 'Blog home', 'https://www.pluralsight.com/resources/blog')">
+ <span class="g3p-modal-subheader--item">
+ <span class="g3p-modal-subheader--item">Blog home</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/resources/blog/software-development" data-aa-title="main-nav-resources-software-dev" data-ps-analytics="main-nav-resources|Software dev|https://www.pluralsight.com/resources/blog/software-development" onclick="updateAnalytics('Resources|Blog', 'Software dev', 'https://www.pluralsight.com/resources/blog/software-development')">
+ <span class="g3p-modal-subheader--item">Software dev</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/resources/blog/cloud" data-aa-title="main-nav-resources-cloud" data-ps-analytics="main-nav-resources|Cloud|https://www.pluralsight.com/resources/blog/cloud" onclick="updateAnalytics('Resources|Blog', 'Cloud', 'https://www.pluralsight.com/resources/blog/cloud')">
+ <span class="g3p-modal-subheader--item">Cloud</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/resources/blog/tech-operations" data-aa-title="main-nav-resources-it-ops" data-ps-analytics="main-nav-resources|IT Ops|https://www.pluralsight.com/resources/blog/tech-operations" onclick="updateAnalytics('Resources|Blog', 'IT Ops', 'https://www.pluralsight.com/resources/blog/tech-operations')">
+ <span class="g3p-modal-subheader--item">IT Ops</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/resources/blog/ai-and-data" data-aa-title="main-nav-resources-data" data-ps-analytics="main-nav-resources|Data|https://www.pluralsight.com/resources/blog/ai-and-data" onclick="updateAnalytics('Resources|Blog', 'Data', 'https://www.pluralsight.com/resources/blog/ai-and-data')">
+ <span class="g3p-modal-subheader--item">Data</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/resources/blog/cybersecurity" data-aa-title="main-nav-resources-security" data-ps-analytics="main-nav-resources|Security|https://www.pluralsight.com/resources/blog/cybersecurity" onclick="updateAnalytics('Resources|Blog', 'Security', 'https://www.pluralsight.com/resources/blog/cybersecurity')">
+ <span class="g3p-modal-subheader--item">Security</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <a class="g3p-nav--anchor_btn" href="/resources" data-aa-title="main-nav-resource-hub" data-ps-analytics="main-nav|Resource hub|https://www.pluralsight.com/resources" onclick="updateAnalytics('Resources', 'Resource hub', 'https://www.pluralsight.com/resources')">
+ <span>Resource hub</span>
+ <span class="g3p-nav-resource--right_cta-image">
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="10" viewBox="0 0 14 10" fill="none">
+ <path
+ d="M10.4097 5.82398H1.16282C0.927842 5.82398 0.730879 5.74502 0.571926 5.58711C0.412973 5.42919 0.333496 5.23352 0.333496 5.00008C0.333496 4.76664 0.412973 4.57097 0.571926 4.41306C0.730879 4.25514 0.927842 4.17619 1.16282 4.17619H10.4097L8.04618 1.82808C7.88031 1.6633 7.80084 1.47106 7.80775 1.25135C7.81466 1.03165 7.89413 0.839407 8.04618 0.674627C8.21204 0.509848 8.409 0.424026 8.63707 0.41716C8.86513 0.410294 9.06209 0.489251 9.22796 0.65403L13.0221 4.42335C13.105 4.50574 13.1638 4.595 13.1983 4.69112C13.2329 4.78724 13.2502 4.89023 13.2502 5.00008C13.2502 5.10993 13.2329 5.21292 13.1983 5.30904C13.1638 5.40516 13.105 5.49442 13.0221 5.57681L9.22796 9.34613C9.06209 9.51091 8.86513 9.58987 8.63707 9.583C8.409 9.57614 8.21204 9.49031 8.04618 9.32553C7.89413 9.16076 7.81466 8.96851 7.80775 8.74881C7.80084 8.5291 7.88031 8.33686 8.04618 8.17208L10.4097 5.82398Z"
+ fill="#E7005E" />
+ </svg>
+ </span>
+ </a>
+ </div>
+ <div class="g3p-nav-resource--right">
+ <div class="g3p-nav-resource--right-contents">
+ <div class="g3p-nav-resource--right_header">Featured resource</div>
+ <div class="g3p-nav-resource--right_separator"></div>
+ <a class="g3p-nav-resource--right_img" href="/resource-center/reports/tech-forecast-2026-gated" data-aa-title="main-nav-featured-resource-image" data-ps-analytics="main-nav|Featured Resource Image|https://www.pluralsight.com/resource-center/reports/tech-forecast-2026-gated" onclick="updateAnalytics('Resources', '2026 Tech Forecast', 'https://www.pluralsight.com/resource-center/reports/tech-forecast-2026-gated')">
+ <img class="g3p-nav-resource--right_image" src="/content/dam/rebrand2025/resource-center/2026-tech-forecast/featured-2026-tech-forecast.png" alt="2026 Tech Forecast">
+ </a>
+ <div class="g3p-nav-resource--right_title">2026 Tech Forecast</div>
+ <p>1,500+ tech insiders, business leaders, and Pluralsight Authors share their predictions on what’s shifting fastest and how to stay ahead.</p>
+ <a href="/resource-center/reports/tech-forecast-2026-gated" data-aa-title="main-nav-reources-check-it-out" data-ps-analytics="main-nav|Check it out|https://www.pluralsight.com/resource-center/reports/tech-forecast-2026-gated" class="g3p-nav-resource--right_cta" onclick="updateAnalytics('Resources', '2026 Tech Forecast', 'https://www.pluralsight.com/resource-center/reports/tech-forecast-2026-gated')">
+ <span>Download the forecast</span>
+ <span class="g3p-nav-resource--right_cta-image">
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="10" viewBox="0 0 14 10" fill="none">
+ <path
+ d="M10.4097 5.82398H1.16282C0.927842 5.82398 0.730879 5.74502 0.571926 5.58711C0.412973 5.42919 0.333496 5.23352 0.333496 5.00008C0.333496 4.76664 0.412973 4.57097 0.571926 4.41306C0.730879 4.25514 0.927842 4.17619 1.16282 4.17619H10.4097L8.04618 1.82808C7.88031 1.6633 7.80084 1.47106 7.80775 1.25135C7.81466 1.03165 7.89413 0.839407 8.04618 0.674627C8.21204 0.509848 8.409 0.424026 8.63707 0.41716C8.86513 0.410294 9.06209 0.489251 9.22796 0.65403L13.0221 4.42335C13.105 4.50574 13.1638 4.595 13.1983 4.69112C13.2329 4.78724 13.2502 4.89023 13.2502 5.00008C13.2502 5.10993 13.2329 5.21292 13.1983 5.30904C13.1638 5.40516 13.105 5.49442 13.0221 5.57681L9.22796 9.34613C9.06209 9.51091 8.86513 9.58987 8.63707 9.583C8.409 9.57614 8.21204 9.49031 8.04618 9.32553C7.89413 9.16076 7.81466 8.96851 7.80775 8.74881C7.80084 8.5291 7.88031 8.33686 8.04618 8.17208L10.4097 5.82398Z"
+ fill="#E7005E" />
+ </svg>
+ </span>
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- end resources modal -->
+ <!-- start individuals modal -->
+ <div id="individualsNavModal" class="g3p-nav-modal">
+ <div class="g3p-nav-modal--main_container">
+ <div class="g3p-nav-modal--main_wrapper">
+ <a href="/individuals" data-aa-title="main-nav-individuals" onclick="updateAnalytics('Individuals', 'Individuals', 'https://www.pluralsight.com/individuals')">
+ <div class="g3p-modal-subheader--container">
+ <span class="g3p-modal-subheader--image">
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none">
+ <path
+ d="M9 9C7.7625 9 6.70312 8.55937 5.82187 7.67812C4.94062 6.79688 4.5 5.7375 4.5 4.5C4.5 3.2625 4.94062 2.20312 5.82187 1.32187C6.70312 0.440625 7.7625 0 9 0C10.2375 0 11.2969 0.440625 12.1781 1.32187C13.0594 2.20312 13.5 3.2625 13.5 4.5C13.5 5.7375 13.0594 6.79688 12.1781 7.67812C11.2969 8.55937 10.2375 9 9 9ZM0 15.75V14.85C0 14.2125 0.164062 13.6266 0.492188 13.0922C0.820312 12.5578 1.25625 12.15 1.8 11.8687C2.9625 11.2875 4.14375 10.8516 5.34375 10.5609C6.54375 10.2703 7.7625 10.125 9 10.125C10.2375 10.125 11.4562 10.2703 12.6562 10.5609C13.8562 10.8516 15.0375 11.2875 16.2 11.8687C16.7437 12.15 17.1797 12.5578 17.5078 13.0922C17.8359 13.6266 18 14.2125 18 14.85V15.75C18 16.3687 17.7797 16.8984 17.3391 17.3391C16.8984 17.7797 16.3687 18 15.75 18H2.25C1.63125 18 1.10156 17.7797 0.660937 17.3391C0.220312 16.8984 0 16.3687 0 15.75Z"
+ fill="#FF1675" />
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Individuals</span>
+ </div>
+ </a>
+ <div class="g3p-modal-subheader--separator"></div>
+ <ul class="g3p-modal-subheader--list">
+ <li>
+ <a href="/individuals/pricing/free-trial" data-aa-title="main-nav-individuals-free-trial" data-ps-analytics="main-nav-individuals|Try for free|https://www.pluralsight.com/individuals/pricing/free-trial" onclick="updateAnalytics('Individuals|Individuals', 'Try for free', 'https://www.pluralsight.com/individuals/pricing/free-trial')">
+ <span class="g3p-modal-subheader--item">Try for free</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/gift-of-pluralsight" data-aa-title="main-nav-individuals-gop" data-ps-analytics="main-nav-individuals|Gift Pluralsight|https://www.pluralsight.com/gift-of-pluralsight" onclick="updateAnalytics('Individuals|Individuals', 'Gift Pluralsight', 'https://www.pluralsight.com/gift-of-pluralsight')">
+ <span class="g3p-modal-subheader--item">Gift Pluralsight</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ <div class="g3p-nav-modal--main_wrapper">
+ <a href="/individuals/pricing" data-aa-title="main-nav-individuals-plans" onclick="updateAnalytics('Individuals', 'Plans', 'https://www.pluralsight.com/individuals/pricing')">
+ <div class="g3p-modal-subheader--container" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
+ <path
+ d="M5.00825 18.0011V6.98216C5.00825 6.43246 5.20814 5.96605 5.60792 5.58293C6.0077 5.19981 6.48243 5.00825 7.03213 5.00825H18.0011C18.5508 5.00825 19.0214 5.20397 19.4128 5.59542C19.8043 5.98687 20 6.45745 20 7.00715V14.1782C20 14.4447 19.95 14.6987 19.8501 14.9403C19.7501 15.1818 19.6085 15.3942 19.4253 15.5774L15.5774 19.4253C15.3942 19.6085 15.1818 19.7501 14.9403 19.8501C14.6987 19.95 14.4447 20 14.1782 20H7.00715C6.45745 20 5.98687 19.8043 5.59542 19.4128C5.20397 19.0214 5.00825 18.5508 5.00825 18.0011ZM0.0359802 4.25866C-0.0639648 3.70896 0.0443089 3.2134 0.360802 2.77198C0.677294 2.33055 1.11039 2.05987 1.66009 1.95992L12.5041 0.0359802C13.0538 -0.0639648 13.5494 0.0443089 13.9908 0.360802C14.4322 0.677294 14.7029 1.11039 14.8029 1.66009L15.0527 3.00935H7.00715C5.90775 3.00935 4.9666 3.4008 4.1837 4.1837C3.4008 4.9666 3.00935 5.90775 3.00935 7.00715V16.5519C2.74282 16.402 2.51378 16.2021 2.32222 15.9522C2.13066 15.7024 2.00989 15.4192 1.95992 15.1027L0.0359802 4.25866ZM18.0011 14.0033H15.0027C14.7196 14.0033 14.4822 14.0991 14.2906 14.2906C14.0991 14.4822 14.0033 14.7196 14.0033 15.0027V18.0011L18.0011 14.0033Z"
+ fill="#FF1675" />
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Plans</span>
+ </div>
+ </a>
+ <div class="g3p-modal-subheader--separator"></div>
+ <ul class="g3p-modal-subheader--list">
+ <li>
+ <a href="/individuals/pricing/core-tech" data-aa-title="main-nav-plans-core-tech" data-ps-analytics="main-nav-plans|Core Tech|https://www.pluralsight.com/individuals/pricing/core-tech" onclick="updateAnalytics('Individuals|Plans', 'Core Tech', 'https://www.pluralsight.com/individuals/pricing/core-tech')">
+ <span class="g3p-modal-subheader--item">Core Tech</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/individuals/pricing/ai" data-aa-title="main-nav-plans-ai" data-ps-analytics="main-nav-plans|AI+|https://www.pluralsight.com/individuals/pricing/ai" onclick="updateAnalytics('Individuals|Plans', 'AI+', 'https://www.pluralsight.com/individuals/pricing/ai')">
+ <span class="g3p-modal-subheader--item">AI+</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/individuals/pricing/cloud" data-aa-title="main-nav-plans-cloud" data-ps-analytics="main-nav-plans|Cloud+|https://www.pluralsight.com/individuals/pricing/cloud" onclick="updateAnalytics('Individuals|Plans', 'Cloud+', 'https://www.pluralsight.com/individuals/pricing/cloud')">
+ <span class="g3p-modal-subheader--item">Cloud+<br /><span class="cloud-guru">A Cloud Guru courses and
+ labs</span></span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/individuals/pricing/security" data-aa-title="main-nav-plans-security" data-ps-analytics="main-nav-plans|Security+|https://www.pluralsight.com/individuals/pricing/security" onclick="updateAnalytics('Individuals|Plans', 'Security+', 'https://www.pluralsight.com/individuals/pricing/security')">
+ <span class="g3p-modal-subheader--item">Security+</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/individuals/pricing/data" data-aa-title="main-nav-plans-data" data-ps-analytics="main-nav-plans|Data+|https://www.pluralsight.com/individuals/pricing/data" onclick="updateAnalytics('Individuals|Plans', 'Data+', 'https://www.pluralsight.com/individuals/pricing/data')">
+ <span class="g3p-modal-subheader--item">Data+</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ <li>
+ <a href="/individuals/pricing/complete" data-aa-title="main-nav-plans-complete" data-ps-analytics="main-nav-plans|Complete|https://www.pluralsight.com/individuals/pricing/complete" onclick="updateAnalytics('Individuals|Plans', 'Complete', 'https://www.pluralsight.com/individuals/pricing/complete')">
+ <span class="g3p-modal-subheader--item">Complete</span>
+ <span class="g3p-modal-subheader--arrow">
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12" fill="none">
+ <path d="M12.0915 6.98867H0.995185C0.713216 6.98867 0.476859 6.89393 0.286116 6.70443C0.0953719 6.51494 0 6.28012 0 6C0 5.71988 0.0953719 5.48506 0.286116 5.29557C0.476859 5.10607 0.713216 5.01132 0.995185 5.01132H12.0915L9.25522 2.1936C9.05618 1.99587 8.96081 1.76517 8.9691 1.50153C8.97739 1.23788 9.07277 1.00719 9.25522 0.809455C9.45425 0.61172 9.69061 0.508733 9.96428 0.500494C10.238 0.492255 10.4743 0.587003 10.6734 0.784738L15.2263 5.30793C15.3258 5.4068 15.3963 5.5139 15.4378 5.62925C15.4793 5.74459 15.5 5.86818 15.5 6C15.5 6.13182 15.4793 6.25541 15.4378 6.37075C15.3963 6.4861 15.3258 6.5932 15.2263 6.69207L10.6734 11.2153C10.4743 11.413 10.238 11.5077 9.96428 11.4995C9.69061 11.4913 9.45425 11.3883 9.25522 11.1905C9.07277 10.9928 8.97739 10.7621 8.9691 10.4985C8.96081 10.2348 9.05618 10.0041 9.25522 9.8064L12.0915 6.98867Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ <!-- end individuals modal -->
+</div>
+<div class="g3p-nav-mobile--container g3p-nav-mobile_view">
+ <div class="g3p-nav-mobile-header">
+ <a href="/" class="g3p-nav-mobile-logo">
+ <svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 36 36" fill="none">
+ <path
+ d="M33.4852 19.6594C34.4017 10.9108 28.0525 3.07577 19.3039 2.15935C10.5553 1.24293 2.72029 7.59213 1.80386 16.3407C0.88744 25.0893 7.23665 32.9243 15.9852 33.8407C24.7338 34.7572 32.5688 28.4079 33.4852 19.6594Z"
+ fill="#FF1675" />
+ <path
+ d="M9.97168 25.0059L13.4778 22.9812V26.9279L28.9417 18.0013L13.4778 9.07471V13.0214L9.97168 10.9968V25.0059ZM15.0807 15.7982L18.8983 18.0013L15.0807 20.2045V15.7982ZM15.0807 22.0582L15.1263 22.0316L22.1043 18.0013L15.0807 13.9445V11.8515L25.7319 18.0013L15.0807 24.1512V22.0582ZM11.5747 13.7735L13.474 14.8713V21.1313L11.5747 22.2291V13.7735Z"
+ fill="white" />
+ </svg>
+ <svg xmlns="http://www.w3.org/2000/svg" width="98" height="20" viewBox="0 0 98 20" fill="none">
+ <path
+ d="M0.144531 15.2236V0.835976H5.50037C8.24746 0.835976 10.4214 3.00993 10.4214 5.63845C10.4214 8.26696 8.24746 10.4212 5.50037 10.4212H2.89162V15.2236H0.144531ZM2.89162 7.8124H5.50037C6.64664 7.8124 7.67433 6.78471 7.67433 5.63845C7.67433 4.49218 6.64664 3.46449 5.50037 3.46449H2.89162V7.8124Z"
+ fill="#130F25" />
+ <path d="M12.3564 15.2236V0.835976H14.9651V15.2236H12.3564Z" fill="#130F25" />
+ <path
+ d="M21.6998 15.3422C19.1898 15.3422 17.4902 13.6228 17.4902 10.8955V4.72934H20.0989V10.5397C20.0989 11.9232 21.0278 12.8323 22.2729 12.8323C23.5377 12.8323 24.4468 11.9232 24.4468 10.5397V4.72934H27.0754V15.2236H25.1188L24.6642 14.1959C24.6642 14.1959 23.4192 15.3422 21.6998 15.3422Z"
+ fill="#130F25" />
+ <path
+ d="M29.5913 15.2236V4.72934H31.5281L31.9827 5.85584C31.9827 5.85584 32.8918 4.61076 34.4926 4.61076C34.9472 4.61076 35.2831 4.72934 35.2831 4.72934V7.45666C35.2831 7.45666 34.9472 7.35785 34.374 7.35785C33.1289 7.35785 32.2001 8.26696 32.2001 9.63062V15.2236H29.5913Z"
+ fill="#130F25" />
+ <path
+ d="M40.0658 15.3422C37.7931 15.3422 36.5282 14.0774 36.5282 12.3777C36.5282 10.3223 38.0104 8.84009 42.8129 8.84009C42.8129 7.69382 42.1212 7.00211 41.0935 7.00211C39.7299 7.00211 39.5125 8.14838 39.5125 8.14838H36.8839C37.1013 6.21158 38.7022 4.61076 41.3307 4.61076C43.722 4.61076 45.4414 6.33016 45.4414 8.72151V15.2236H43.5046L43.0501 14.1959C43.0501 14.1959 41.9038 15.3422 40.0658 15.3422ZM40.5401 13.2868C41.9038 13.2868 42.8129 12.3777 42.8129 11.1129V10.6583C39.7299 10.6583 39.1567 11.2314 39.1567 12.1406C39.1567 12.7137 39.7299 13.2868 40.5401 13.2868Z"
+ fill="#130F25" />
+ <path d="M47.8492 15.2236V0.835976H50.4579V15.2236H47.8492Z" fill="#130F25" />
+ <path
+ d="M56.738 15.3422C53.9909 15.3422 52.6272 13.9588 52.4098 11.9232H54.9198C55.0186 12.5951 55.5917 13.1682 56.5206 13.1682C57.4297 13.1682 58.0028 12.5951 58.0028 12.022C58.0028 10.5397 52.6272 11.4488 52.6272 7.8124C52.6272 6.093 54.1095 4.61076 56.402 4.61076C58.9119 4.61076 60.2756 5.97442 60.5128 7.8124H58.0028C57.8843 7.35785 57.3111 6.78471 56.5206 6.78471C55.7103 6.78471 55.2557 7.23927 55.2557 7.8124C55.2557 9.29465 60.6116 8.38554 60.6116 12.1406C60.6116 13.86 59.1293 15.3422 56.738 15.3422Z"
+ fill="#130F25" />
+ <path
+ d="M62.5751 15.2236V4.72934H65.1838V15.2236H62.5751ZM63.9388 3.46449C63.1285 3.46449 62.4565 2.79254 62.4565 1.98224C62.4565 1.19171 63.1285 0.5 63.9388 0.5C64.7293 0.5 65.421 1.19171 65.421 1.98224C65.421 2.79254 64.7293 3.46449 63.9388 3.46449Z"
+ fill="#130F25" />
+ <path
+ d="M72.2742 19.0972C68.3809 19.0972 67.5903 15.6782 67.5903 15.6782H70.2188C70.2188 15.6782 70.6734 16.7059 72.2742 16.7059C73.7565 16.7059 74.6656 15.7968 74.6656 14.5319V13.7414C74.6656 13.7414 73.6379 14.8876 71.9185 14.8876C69.29 14.8876 67.1358 12.7137 67.1358 9.7492C67.1358 6.78471 69.29 4.61076 71.9185 4.61076C73.7565 4.61076 74.883 5.75702 74.883 5.75702L75.3375 4.72934H77.2941V14.5319C77.2941 17.279 75.4561 19.0972 72.2742 19.0972ZM72.2742 12.3777C73.6379 12.3777 74.7841 11.2314 74.7841 9.7492C74.7841 8.26696 73.6379 7.12069 72.2742 7.12069C70.8908 7.12069 69.7445 8.26696 69.7445 9.7492C69.7445 11.2314 70.8908 12.3777 72.2742 12.3777Z"
+ fill="#130F25" />
+ <path
+ d="M79.81 15.2236V0.835976H82.4188V5.75702C82.4188 5.75702 83.3477 4.61076 85.3833 4.61076C87.6758 4.61076 89.3952 6.33016 89.3952 9.05749V15.2236H86.7667V9.39346C86.7667 8.0298 85.8576 7.12069 84.5927 7.12069C83.3476 7.12069 82.4188 8.0298 82.4188 9.39346V15.2236H79.81Z"
+ fill="#130F25" />
+ <path
+ d="M96.1235 15.3422C94.0681 15.3422 92.5859 13.86 92.5859 11.5674V7.12069H90.9851V4.94673H91.6768C92.4673 4.94673 92.9219 4.49218 92.9219 3.70165V2.2194H95.2144V4.72934H97.4872V7.12069H95.2144V11.4488C95.2144 12.3777 95.7875 12.9508 96.6966 12.9508C97.1512 12.9508 97.3686 12.8323 97.3686 12.8323V15.105C97.3686 15.105 96.8152 15.3422 96.1235 15.3422Z"
+ fill="#130F25" />
+ </svg>
+ </a>
+ <span class="g3p-nav-mobile-hamburger">
+ <!-- <img id="menuIcon" src="/content/dam/ps-nav-assets/g3p-nav-updates/hamburger.png" alt="Hamburger Icon"> -->
+ <button id="menuIcon" type="button" aria-label="Open menu" aria-expanded="false" class="g3p-menu-btn">
+ <!-- Hamburger -->
+ <svg class="icon icon-ham" xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 18 12" fill="none">
+ <path d="M1 12C0.716667 12 0.479167 11.9042 0.2875 11.7125C0.0958333 11.5208 0 11.2833 0 11C0 10.7167 0.0958333 10.4792 0.2875 10.2875C0.479167 10.0958 0.716667 10 1 10H17C17.2833 10 17.5208 10.0958 17.7125 10.2875C17.9042 10.4792 18 10.7167 18 11C18 11.2833 17.9042 11.5208 17.7125 11.7125C17.5208 11.9042 17.2833 12 17 12H1ZM1 7C0.716667 7 0.479167 6.90417 0.2875 6.7125C0.0958333 6.52083 0 6.28333 0 6C0 5.71667 0.0958333 5.47917 0.2875 5.2875C0.479167 5.09583 0.716667 5 1 5H17C17.2833 5 17.5208 5.09583 17.7125 5.2875C17.9042 5.47917 18 5.71667 18 6C18 6.28333 17.9042 6.52083 17.7125 6.7125C17.5208 6.90417 17.2833 7 17 7H1ZM1 2C0.716667 2 0.479167 1.90417 0.2875 1.7125C0.0958333 1.52083 0 1.28333 0 1C0 0.716667 0.0958333 0.479167 0.2875 0.2875C0.479167 0.0958333 0.716667 0 1 0H17C17.2833 0 17.5208 0.0958333 17.7125 0.2875C17.9042 0.479167 18 0.716667 18 1C18 1.28333 17.9042 1.52083 17.7125 1.7125C17.5208 1.90417 17.2833 2 17 2H1Z" fill="#130F25"/>
+ </svg>
+ <!-- Close -->
+ <svg class="icon icon-close is-hidden" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="none" hidden>
+ <path d="M7 8.49049L1.78327 13.7072C1.58809 13.9024 1.33967 14 1.03802 14C0.736375 14 0.487959 13.9024 0.292776 13.7072C0.0975919 13.512 0 13.2636 0 12.962C0 12.6603 0.0975919 12.4119 0.292776 12.2167L5.50951 7L0.292776 1.78327C0.0975919 1.58809 0 1.33967 0 1.03802C0 0.736375 0.0975919 0.487959 0.292776 0.292776C0.487959 0.0975919 0.736375 0 1.03802 0C1.33967 0 1.58809 0.0975919 1.78327 0.292776L7 5.50951L12.2167 0.292776C12.4119 0.0975919 12.6603 0 12.962 0C13.2636 0 13.512 0.0975919 13.7072 0.292776C13.9024 0.487959 14 0.736375 14 1.03802C14 1.33967 13.9024 1.58809 13.7072 1.78327L8.49049 7L13.7072 12.2167C13.9024 12.4119 14 12.6603 14 12.962C14 13.2636 13.9024 13.512 13.7072 13.7072C13.512 13.9024 13.2636 14 12.962 14C12.6603 14 12.4119 13.9024 12.2167 13.7072L7 8.49049Z" fill="#130F25"/>
+ </svg>
+ </button>
+ </span>
+ </div>
+ <div class="g3p-main-container--overlay hidden">
+ <div id="mobileMainModal" class="g3p-nav-mobile__main-modal hidden">
+ <div class="nav-search section">
+ <div id="mobile_header_tabs--search"
+ class="nav-search-container nav-dropdown-container header_tabs_content--container">
+ <div class="header_tabs_content--container g3p_header_tabs_content--container">
+ <div class="header_nav--menu header_nav_search">
+ <div class="header_search search-button__component">
+ <form id="mobile_header_searchForm" class="header_search--form" data-gtm-form-interact-id="0">
+ <svg xmlns="http://www.w3.org/2000/svg" width="15" height="16" viewBox="0 0 15 16" fill="none">
+ <path fill-rule="evenodd" clip-rule="evenodd"
+ d="M14.6389 14.7298C14.7866 14.582 14.7866 14.3426 14.639 14.1949L10.8271 10.3823C11.6508 9.32639 12.1024 8.03667 12.1024 6.67594C12.1024 5.05955 11.4723 3.5414 10.3294 2.39775C9.18648 1.2541 7.66758 0.624756 6.05119 0.624756C4.43479 0.624756 2.91516 1.2541 1.77299 2.39775C0.629347 3.5414 0 5.05955 0 6.67594C0 8.29234 0.629347 9.81197 1.77299 10.9541C2.91516 12.0978 4.43479 12.7271 6.05119 12.7271C7.41191 12.7271 8.70163 12.2764 9.75756 11.4526L13.5694 15.2645C13.7171 15.4121 13.9565 15.4121 14.1043 15.2645L14.6389 14.7298ZM9.25979 9.88538C8.40284 10.7423 7.26298 11.2143 6.05119 11.2143C4.83866 11.2143 3.69954 10.7423 2.84259 9.88538C1.98481 9.02833 1.5128 7.88847 1.5128 6.67594C1.5128 5.46416 1.98481 4.32429 2.84259 3.46734C3.69954 2.60956 4.83866 2.13755 6.05119 2.13755C7.26298 2.13755 8.40284 2.60956 9.25979 3.46734C10.1176 4.32429 10.5896 5.46416 10.5896 6.67594C10.5896 7.88847 10.1176 9.02833 9.25979 9.88538Z"
+ fill="#130F25" />
+ </svg>
+ <input type="text" name="q" class="mobile_header_search--input"
+ placeholder="What do you want to learn?" autocomplete="off" data-gtm-form-interact-id="0">
+ </form>
+ <a href="/search" class="hidden header_search--url"></a>
+ </div>
+ </div>
+ <div id="mobile_header-search-results-all" class="header_tabs_content--container nav-search-item">
+ <div id="search-menu__results-dropdown" class="nav-search-result">
+ <div id="header_dropdown--resultList"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <script id="header-search-categories-templates-partial" type="text/x-handlebars-template">
+ {{#compare this.name '===' 'courses'}}
+ <ul class="header_dropdown--lists">
+ <li class="first li-list">{{{this.name}}}</li>
+ {{#each this.results}}
+ <li><a href="{{formatCourseURL this.courseName 'course'}}">{{{this.title}}}</a></li>
+ {{/each}}
+ <li class="last li-list"><a class="view-all-link" data-tab-param="{{mapResultSetNameToTabName this.name}}" data-categories="{{this.name}}">See more results</a></li>
+ </ul>
+ {{/compare}}
+ </script>
+ </div>
+ <div class="mobile-nav--signin-and-contact" style="position: relative;">
+ <ul>
+ <li>
+ <!-- <a href="#" class="mobile-nav--signin"> -->
+ <a href="https://app.pluralsight.com/id" data-aa-title="UN-Skills Sign In" class="g3p-sign-in--modal_item" onclick="updateAnalytics('Sign in', 'Sign in to Pluralsight', 'https://app.pluralsight.com/id')">
+ <span class="g3p-nav-user-icon">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
+ <path fill-rule="evenodd" clip-rule="evenodd"
+ d="M10 19.9999C15.5229 19.9999 20 15.5228 20 10C20 4.47716 15.5229 0 10 0C4.47716 0 0 4.47716 0 10C0 15.5228 4.47716 19.9999 10 19.9999ZM13.5713 7.14286C13.5713 9.1153 11.9723 10.7143 9.9999 10.7143C8.02746 10.7143 6.42847 9.1153 6.42847 7.14286C6.42847 5.17042 8.02746 3.57143 9.9999 3.57143C11.9723 3.57143 13.5713 5.17042 13.5713 7.14286ZM9.9999 12.8571C12.269 12.8571 14.3134 13.819 15.7477 15.3572C14.3134 16.8954 12.269 17.8571 9.99997 17.8571C7.73091 17.8571 5.68651 16.8954 4.25223 15.3571C5.68651 13.819 7.73089 12.8571 9.9999 12.8571Z"
+ fill="#45424D" />
+ </svg>
+ </span>
+ <span class="mobile-nav--signin-text">Sign in</span>
+ </a>
+ </li>
+ </ul>
+ </div>
+ <div class="g3p-mobile-main-nav">
+ <div class="g3p-mobile-navs">
+ <!-- start why PS modal -->
+ <div id="coursesMobileMain" class="g3p-mobile--full_width">
+ <div id="coursesMobileNav" class="g3p-mobile-navs-header" data-aa-title="ps-nav-courses"
+ aria-expanded="false">
+ <span class="g3p-mobile-navs-header--text">Why Pluralsight</span>
+ <span id="coursesMobileChevron" class="g3p-mobile-navs-header--chevron"></span>
+ </div>
+ <div id="coursesNavMobileOptions" class="g3p-mobile-navs-subheaders hidden">
+ <div class="g3p-mobile-subnav_header">
+ <a href="/product/courses-overview" data-aa-title="main-nav-whyps-expert-led-content" class="g3p-mobile-subnav_header-title" data-ps-analytics="main-nav-whyps-expert-led-content|Expert-led content|https://www.pluralsight.com/product/courses-overview" onclick="updateAnalytics('Why PS', 'Expert-led content', 'https://www.pluralsight.com/product/courses-overview')">
+ <div class="g3p-dis-flex" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M13.504 12.5279L16.7214 10.367C17.023 10.166 17.1739 9.88964 17.1739 9.53787C17.1739 9.18611 17.023 8.90972 16.7214 8.70871L13.504 6.54785C13.1688 6.31334 12.8253 6.29659 12.4734 6.4976C12.1215 6.69861 11.9455 7.00012 11.9455 7.40214V11.6736C11.9455 12.0756 12.1215 12.3771 12.4734 12.5781C12.8253 12.7792 13.1688 12.7624 13.504 12.5279ZM5.61123 21.9754C5.05823 22.0591 4.5597 21.9293 4.11563 21.5859C3.67155 21.2425 3.416 20.7944 3.34897 20.2417L2.01676 9.26149C1.94973 8.70871 2.08379 8.21456 2.41894 7.77904C2.75408 7.34352 3.19816 7.09225 3.75115 7.02525L4.90742 6.87449V15.0656C4.90742 16.1712 5.30121 17.1176 6.08881 17.9049C6.87641 18.6922 7.82321 19.0858 8.9292 19.0858H18.2799C18.1793 19.4879 17.9782 19.8354 17.6766 20.1286C17.3749 20.4217 17.0063 20.5934 16.5706 20.6437L5.61123 21.9754ZM8.9292 17.0757C8.3762 17.0757 7.90281 16.8789 7.50901 16.4853C7.11521 16.0916 6.91831 15.6184 6.91831 15.0656V4.0101C6.91831 3.45732 7.11521 2.98411 7.50901 2.59047C7.90281 2.19682 8.3762 2 8.9292 2H19.9891C20.5421 2 21.0155 2.19682 21.4093 2.59047C21.8031 2.98411 22 3.45732 22 4.0101V15.0656C22 15.6184 21.8031 16.0916 21.4093 16.4853C21.0155 16.8789 20.5421 17.0757 19.9891 17.0757H8.9292Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Expert-led content</span>
+ </div>
+ <div class="g3p-mobile--separator"></div>
+ </a>
+ <div class="g3p-mobile-display-flex-col">
+ <a href="/product/courses-overview" data-aa-title="main-nav-Expert-led-content-Courses" data-ps-analytics="main-nav-whyps|Exper-led content|https://www.pluralsight.com/product/courses-overview" onclick="updateAnalytics('Why PS|Exper-led content', 'Courses', 'https://www.pluralsight.com/product/courses-overview')">
+ <span class="g3p-modal-subheader--item">Courses</span>
+ </a>
+ <a href="/product/paths" data-aa-title="main-nav-WhyPS-game-development" data-ps-analytics="main-nav-Why PS|Learning paths|https://www.pluralsight.com/product/paths" onclick="updateAnalytics('Why PS content|Software development', 'Learning paths', 'https://www.pluralsight.com/product/paths')">
+ <span class="g3p-modal-subheader--item">Learning paths</span>
+ </a>
+ </div>
+ </div>
+ <div class="g3p-mobile-subnav_header">
+ <a href="/product/skills-assessment" data-aa-title="main-nav-courses-skill-validation" class="g3p-mobile-subnav_header-title" data-ps-analytics="main-nav-whyps-skill-validation|Skill validation|https://www.pluralsight.com/product/skills-assessment" onclick="updateAnalytics('WhyPS', 'Skill validation', 'https://www.pluralsight.com/product/skills-assessment')">
+ <div class="g3p-dis-flex" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M22 12V22H12C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12ZM12 17C14.7614 17 17 14.7614 17 12C17 9.23858 14.7614 7 12 7C9.23858 7 7 9.23858 7 12C7 14.7614 9.23858 17 12 17Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Skill validation</span>
+ </div>
+ <div class="g3p-mobile--separator"></div>
+ </a>
+ <div class="g3p-mobile-display-flex-col">
+ <a href="/product/skills-assessment" data-aa-title="main-nav-whyps-skill-validation" data-ps-analytics="main-nav-whyps|Skill IQ|https://www.pluralsight.com/product/skills-assessment" onclick="updateAnalytics('whyps|skill-validation', 'Skill IQ', 'https://www.pluralsight.com/product/skills-assessment')">
+ <span class="g3p-modal-subheader--item">Skill IQ</span>
+ </a>
+ <a href="/product/cert-prep" data-aa-title="main-nav-whyps-skill-validation" data-ps-analytics="main-nav-whyps|Certification prep|https://www.pluralsight.com/product/cert-prep" onclick="updateAnalytics('whyps|Skill validation', 'Certification prep', 'https://www.pluralsight.com/product/cert-prep')">
+ <span class="g3p-modal-subheader--item">Certification prep</span>
+ </a>
+ </div>
+ </div>
+ <div class="g3p-mobile-subnav_header">
+ <a href="/product/hands-on-learning" data-aa-title="main-nav-whyps-immersive-experiences" class="g3p-mobile-subnav_header-title" data-ps-analytics="main-nav-whyps-immersive-experiences|Immersive experiences|https://www.pluralsight.com/product/hands-on-learning" onclick="updateAnalytics('whyps', 'Immersive experiences', 'https://www.pluralsight.com/product/hands-on-learning')">
+ <div class="g3p-dis-flex" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M5.0221 21C4.17478 21 3.57252 20.6208 3.21532 19.8625C2.85812 19.1042 2.94534 18.4 3.47699 17.75L9.00947 11V5H8.01263C7.73019 5 7.49344 4.90417 7.30238 4.7125C7.11132 4.52083 7.01579 4.28333 7.01579 4C7.01579 3.71667 7.11132 3.47917 7.30238 3.2875C7.49344 3.09583 7.73019 3 8.01263 3H15.9874C16.2698 3 16.5066 3.09583 16.6976 3.2875C16.8887 3.47917 16.9842 3.71667 16.9842 4C16.9842 4.28333 16.8887 4.52083 16.6976 4.7125C16.5066 4.90417 16.2698 5 15.9874 5H14.9905V11L20.523 17.75C21.0547 18.4 21.1419 19.1042 20.7847 19.8625C20.4275 20.6208 19.8252 21 18.9779 21H5.0221Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Immersive experiences</span>
+ </div>
+ <div class="g3p-mobile--separator"></div>
+ </a>
+ <div class="g3p-mobile-display-flex-col">
+ <a href="/product/labs" data-aa-title="main-nav-whyps-hands-on-labs" data-ps-analytics="main-nav-whyps|Hands-on labs|https://www.pluralsight.com/product/labs" onclick="updateAnalytics('WhyPS|Immersive experiences', 'Hands-on labs', 'https://www.pluralsight.com/product/labs')">
+ <span class="g3p-modal-subheader--item">Hands-on labs</span>
+ </a>
+ <a href="/product/sandboxes" data-aa-title="main-nav-whyps-sandboxes" data-ps-analytics="main-nav-whyps|Hands-on labs|https://www.pluralsight.com/product/sandboxes" onclick="updateAnalytics('WhyPS|Immersive experiences', 'Sandboxes', 'https://www.pluralsight.com/product/sandboxes')">
+ <span class="g3p-modal-subheader--item">Sandboxes</span>
+ </a>
+ <a href="/product/iris" data-aa-title="main-nav-whyps-cloud-platforms" data-ps-analytics="main-nav-whyps|Iris AI|https://www.pluralsight.com/product/iris" onclick="updateAnalytics('WhyPS|Immersive experiences', 'Iris AI', 'https://www.pluralsight.com/product/iris')">
+ <span class="g3p-modal-subheader--item">Iris AI</span>
+ </a>
+ </div>
+ </div>
+ <div class="g3p-mobile-subnav_header">
+ <a href="/product/advanced-analytics" data-aa-title="main-nav-whyps-leader-tools" class="g3p-mobile-subnav_header-title" data-ps-analytics="main-nav-whyps|Leader tools|https://www.pluralsight.com/product/advanced-analytics" onclick="updateAnalytics('Courses', 'Leader tools', 'https://www.pluralsight.com/product/advanced-analytics')">
+ <div class="g3p-dis-flex" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M13.0001 10.9996V2.09961C15.3834 2.34961 17.3959 3.29961 19.0376 4.94961C20.6793 6.59961 21.6334 8.61628 21.9001 10.9996H13.0001ZM11.0251 21.8746C8.49177 21.6246 6.37093 20.5579 4.6626 18.6746C2.95426 16.7913 2.1001 14.5663 2.1001 11.9996C2.1001 9.41628 2.95426 7.18294 4.6626 5.29961C6.37093 3.41628 8.49177 2.34961 11.0251 2.09961V21.8746ZM13.0001 21.8746V12.9746H21.9001C21.6668 15.3579 20.7209 17.3788 19.0626 19.0371C17.4043 20.6954 15.3834 21.6413 13.0001 21.8746Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Leader tools</span>
+ </div>
+ <div class="g3p-mobile--separator"></div>
+ </a>
+ <div class="g3p-mobile-display-flex-col">
+ <a href="/product/advanced-analytics" data-aa-title="main-nav-whyps-advanced-analytics" data-ps-analytics="main-nav-whyps|Advanced analytics|https://www.pluralsight.com/product/advanced-analytics" onclick="updateAnalytics('WhyPS|Leader tools', 'Advanced analytics', 'https://www.pluralsight.com/product/advanced-analytics')">
+ <span class="g3p-modal-subheader--item">Advanced analytics</span>
+ </a>
+ <a href="https://developer.pluralsight.com/integrations-hub/documentation/building-integrations" data-aa-title="main-nav-whyps-integrations" data-ps-analytics="main-nav-course|Integrations|https://developer.pluralsight.com/integrations-hub/documentation/building-integrations" onclick="updateAnalytics('WhyPS|Leader tools', 'Integrations', 'https://developer.pluralsight.com/integrations-hub/documentation/building-integrations')">
+ <span class="g3p-modal-subheader--item">Integrations</span>
+ </a>
+ </div>
+ </div>
+ <div class="g3p-mobile-subnav_header">
+ <a href="/product/professional-services" data-aa-title="main-nav-whyps-data" class="g3p-mobile-subnav_header-title" data-ps-analytics="main-nav-whyps-data|Professional services|https://www.pluralsight.com/product/professional-services" onclick="updateAnalytics('WhyPS', 'Professional services','https://www.pluralsight.com/product/professional-services')">
+ <div class="g3p-dis-flex" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M12.1002 20.9998C11.8169 20.9998 11.5794 20.904 11.3877 20.7123C11.196 20.5206 11.1002 20.2831 11.1002 19.9998C11.1002 19.8831 11.1252 19.7623 11.1752 19.6373C11.2252 19.5123 11.3002 19.3998 11.4002 19.2998L15.6752 15.0248C15.7752 14.9248 15.8252 14.804 15.8252 14.6623C15.8252 14.5206 15.7752 14.3998 15.6752 14.2998C15.5752 14.1998 15.4544 14.154 15.3127 14.1623C15.171 14.1706 15.0502 14.2248 14.9502 14.3248L10.7002 18.5748C10.6002 18.6748 10.4919 18.7498 10.3752 18.7998C10.2585 18.8498 10.1335 18.8748 10.0002 18.8748C9.71686 18.8748 9.47936 18.779 9.2877 18.5873C9.09603 18.3956 9.0002 18.1581 9.0002 17.8748C9.0002 17.7081 9.0252 17.5706 9.0752 17.4623C9.1252 17.354 9.19186 17.2581 9.2752 17.1748L13.5502 12.8998C13.6502 12.7998 13.7002 12.6831 13.7002 12.5498C13.7002 12.4165 13.6502 12.2998 13.5502 12.1998C13.4502 12.0998 13.3335 12.0498 13.2002 12.0498C13.0669 12.0498 12.9502 12.0998 12.8502 12.1998L8.5752 16.4498C8.4752 16.5498 8.36686 16.6248 8.2502 16.6748C8.13353 16.7248 8.0002 16.7498 7.8502 16.7498C7.58353 16.7498 7.3502 16.6498 7.1502 16.4498C6.9502 16.2498 6.8502 16.0165 6.8502 15.7498C6.8502 15.6165 6.8752 15.4915 6.9252 15.3748C6.9752 15.2581 7.0502 15.1498 7.1502 15.0498L11.4002 10.7998C11.5002 10.6998 11.5502 10.579 11.5502 10.4373C11.5502 10.2956 11.5002 10.1748 11.4002 10.0748C11.3002 9.9748 11.1835 9.9248 11.0502 9.9248C10.9169 9.9248 10.8002 9.9748 10.7002 10.0748L6.4502 14.3498C6.36686 14.4331 6.26686 14.4998 6.1502 14.5498C6.03353 14.5998 5.89186 14.6248 5.7252 14.6248C5.44186 14.6248 5.20436 14.529 5.0127 14.3373C4.82103 14.1456 4.7252 13.9081 4.7252 13.6248C4.7252 13.4915 4.7502 13.3665 4.8002 13.2498C4.8502 13.1331 4.9252 13.0248 5.0252 12.9248L9.9252 8.0248C10.1085 7.84147 10.3377 7.75814 10.6127 7.7748C10.8877 7.79147 11.1169 7.89147 11.3002 8.0748L14.3502 11.1248C14.5335 11.3081 14.7502 11.454 15.0002 11.5623C15.2502 11.6706 15.5002 11.7248 15.7502 11.7248C16.2835 11.7248 16.7502 11.5373 17.1502 11.1623C17.5502 10.7873 17.7502 10.3081 17.7502 9.7248C17.7502 9.49147 17.7085 9.2498 17.6252 8.9998C17.5419 8.7498 17.3919 8.51647 17.1752 8.2998L13.7502 4.8748C13.5669 4.69147 13.446 4.49147 13.3877 4.2748C13.3294 4.05814 13.3585 3.8498 13.4752 3.6498C13.6252 3.3998 13.8169 3.21647 14.0502 3.0998C14.2835 2.98314 14.5419 2.9248 14.8252 2.9248C15.1752 2.9248 15.5335 3.00814 15.9002 3.1748C16.2669 3.34147 16.6002 3.5748 16.9002 3.8748L21.1252 8.1248C21.4252 8.4248 21.646 8.75814 21.7877 9.1248C21.9294 9.49147 22.0002 9.91647 22.0002 10.3998C22.0002 10.7331 21.9252 11.0706 21.7752 11.4123C21.6252 11.754 21.4085 12.0665 21.1252 12.3498L12.8002 20.6998C12.6669 20.8331 12.5502 20.9165 12.4502 20.9498C12.3502 20.9831 12.2335 20.9998 12.1002 20.9998ZM2.9002 12.1248C2.58353 11.8915 2.34603 11.6123 2.1877 11.2873C2.02936 10.9623 1.9502 10.6165 1.9502 10.2498C1.9502 9.86647 2.02936 9.49147 2.1877 9.1248C2.34603 8.75814 2.5752 8.4248 2.8752 8.1248L7.1002 3.8748C7.38353 3.59147 7.69603 3.3748 8.0377 3.2248C8.37936 3.0748 8.74186 2.9998 9.1252 2.9998C9.54186 2.9998 9.94603 3.0748 10.3377 3.2248C10.7294 3.3748 11.0669 3.59147 11.3502 3.8748L16.4752 8.9998C16.5585 9.08314 16.6294 9.1873 16.6877 9.3123C16.746 9.4373 16.7752 9.56647 16.7752 9.6998C16.7752 9.98314 16.6794 10.2206 16.4877 10.4123C16.296 10.604 16.0585 10.6998 15.7752 10.6998C15.6419 10.6998 15.5127 10.6706 15.3877 10.6123C15.2627 10.554 15.1585 10.4831 15.0752 10.3998L12.0002 7.3498C11.6169 6.96647 11.146 6.7748 10.5877 6.7748C10.0294 6.7748 9.55853 6.96647 9.1752 7.3498L4.4752 12.0498C4.25853 12.2665 4.00436 12.379 3.7127 12.3873C3.42103 12.3956 3.1502 12.3081 2.9002 12.1248Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Professional services</span>
+ </div>
+ <div class="g3p-mobile--separator"></div>
+ </a>
+ <div class="g3p-mobile-display-flex-col">
+ <a href="/product/professional-services" data-aa-title="main-nav-whyps-proserv" data-ps-analytics="main-nav-whyps|ProServ for Pluralsight|https://www.pluralsight.com/product/professional-services" onclick="updateAnalytics('whyps|ProServ', 'ProServ for Pluralsight', 'https://www.pluralsight.com/product/professional-services')">
+ <span class="g3p-modal-subheader--item">ProServ for Pluralsight</span>
+ </a>
+ </div>
+ </div>
+ </div>
+</div>
+ <!-- end why PS modal -->
+ <!-- start solutions modal -->
+ <div id="businessesMobileMain" class="g3p-mobile--full_width">
+ <div id="businessesMobileNav" class="g3p-mobile-navs-header" data-aa-title="ps-nav-solutions"
+ aria-expanded="false">
+ <span class="g3p-mobile-navs-header--text">Solutions</span>
+ <span id="businessesMobileChevron" class="g3p-mobile-navs-header--chevron"></span>
+ </div>
+ <div id="businessesNavMobileOptions" class="g3p-mobile-navs-subheaders hidden">
+ <div class="g3p-mobile-subnav_header">
+ <a href="/businesses" data-aa-title="solutions" class="g3p-mobile-subnav_header-title" data-ps-analytics="mobile-nav-solutions|For Solutions|https://www.pluralsight.com/businesses" onclick="updateAnalytics('Solutions', 'Solutions', 'https://www.pluralsight.com/businesses')">
+ <div class="g3p-dis-flex">
+ <span class="g3p-modal-subheader--image">
+ <svg xmlns="http://www.w3.org/2000/svg" width="22" height="21" viewBox="0 0 22 21" fill="none">
+ <path
+ d="M9.46139 17.923C9.03831 17.923 8.67613 17.7724 8.37485 17.4711C8.07357 17.1698 7.92293 16.8077 7.92293 16.3846V15.423C7.19216 14.923 6.62485 14.282 6.221 13.5C5.81716 12.7179 5.61523 11.8846 5.61523 11C5.61523 9.49997 6.13767 8.22754 7.18254 7.18266C8.22741 6.13779 9.49985 5.61536 10.9998 5.61536C12.4998 5.61536 13.7723 6.13779 14.8172 7.18266C15.862 8.22754 16.3845 9.49997 16.3845 11C16.3845 11.8846 16.1825 12.7147 15.7787 13.4904C15.3749 14.266 14.8075 14.9102 14.0768 15.423V16.3846C14.0768 16.8077 13.9261 17.1698 13.6249 17.4711C13.3236 17.7724 12.9614 17.923 12.5383 17.923H9.46139ZM9.46139 21C9.24344 21 9.06075 20.9263 8.91331 20.7788C8.76588 20.6314 8.69216 20.4487 8.69216 20.2307C8.69216 20.0128 8.76588 19.8301 8.91331 19.6827C9.06075 19.5352 9.24344 19.4615 9.46139 19.4615H12.5383C12.7563 19.4615 12.939 19.5352 13.0864 19.6827C13.2338 19.8301 13.3075 20.0128 13.3075 20.2307C13.3075 20.4487 13.2338 20.6314 13.0864 20.7788C12.939 20.9263 12.7563 21 12.5383 21H9.46139Z"
+ fill="#FF1675" />
+ <path d="M11 2.53845L11 0.999991" stroke="#FF1675" stroke-width="1.53846" stroke-linecap="round" />
+ <path d="M19.4614 11H20.9999" stroke="#FF1675" stroke-width="1.53846" stroke-linecap="round" />
+ <path d="M1 11H2.53846" stroke="#FF1675" stroke-width="1.53846" stroke-linecap="round" />
+ <path d="M4.87939 5.05707L3.79154 3.96921" stroke="#FF1675" stroke-width="1.53846"
+ stroke-linecap="round" />
+ <path d="M17.0938 5.05707L18.1816 3.96921" stroke="#FF1675" stroke-width="1.53846"
+ stroke-linecap="round" />
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Solutions we provide</span>
+ </div>
+ <div class="g3p-mobile--separator"></div>
+ </a>
+ <div class="g3p-mobile-display-flex-col">
+ <a href="/solutions/ai-academy" data-aa-title="main-nav-solutions-ai-academy" data-ps-analytics="main-nav-solutions|AI Academy|https://www.pluralsight.com/solutions/ai-academy" onclick="updateAnalytics('Solutions|Solutions', 'AI Academy', 'https://www.pluralsight.com/solutions/ai-academy')">
+ <span class="g3p-modal-subheader--item">AI Academy</span>
+ </a>
+ <a href="/solutions/ai-ready" data-aa-title="main-nav-solutions-ai-ready" data-ps-analytics="main-nav-solutions|AI Ready|https://www.pluralsight.com/solutions/ai-ready" onclick="updateAnalytics('Solutions|Solutions', 'AI Ready', 'https://www.pluralsight.com/solutions/ai-ready')">
+ <span class="g3p-modal-subheader--item">AI Ready</span>
+ </a>
+ <a href="/solutions/cloud-ready" data-aa-title="main-nav-solutions-Cloud-Ready" data-ps-analytics="main-nav-solutions|Cloud Ready|https://www.pluralsight.com/solutions/cloud-ready" onclick="updateAnalytics('Solutions|Solutions', 'Cloud Ready', 'https://www.pluralsight.com/solutions/cloud-ready')">
+ <span class="g3p-modal-subheader--item">Cloud Ready</span>
+ </a>
+ <a href="/solutions/secureready" data-aa-title="main-nav-solutions-secureready" data-ps-analytics="main-nav-solutions|SecureReady|https://www.pluralsight.com/solutions/secureready" onclick="updateAnalytics('Solutions|Solutions', 'SecureReady', 'https://www.pluralsight.com/solutions/secureready')">
+ <span class="g3p-modal-subheader--item">Secure Ready</span>
+ </a>
+ <a href="/product/professional-services/instructor-led-training" data-aa-title="main-nav-solutions-instructor-led-training" data-ps-analytics="main-nav-solutions|Instructor-led training|https://www.pluralsight.com/product/professional-services/instructor-led-training" onclick="updateAnalytics('Solutions|Solutions', 'Instructor-led training', 'https://www.pluralsight.com/product/professional-services/instructor-led-training')">
+ <span class="g3p-modal-subheader--item">Instructor-led training</span>
+ </a>
+ </div>
+ </div>
+ <div class="g3p-mobile-subnav_header">
+ <a href="/businesses" data-aa-title="mobile-nav-business-by-industry" class="g3p-mobile-subnav_header-title" data-ps-analytics="mobile-nav-business-industry|By Industry|https://www.pluralsight.com/businesses" onclick="updateAnalytics('Business', 'By industry', 'https://www.pluralsight.com/businesses')">
+ <div class="g3p-dis-flex" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg width="20" height="18" viewBox="0 0 20 18" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M2 18C1.45 18 0.979167 17.8145 0.5875 17.4434C0.195833 17.0724 0 16.6263 0 16.1053V5.68421C0 5.16316 0.195833 4.71711 0.5875 4.34605C0.979167 3.975 1.45 3.78947 2 3.78947H6V1.89474C6 1.37368 6.19583 0.927632 6.5875 0.556579C6.97917 0.185526 7.45 0 8 0H12C12.55 0 13.0208 0.185526 13.4125 0.556579C13.8042 0.927632 14 1.37368 14 1.89474V3.78947H18C18.55 3.78947 19.0208 3.975 19.4125 4.34605C19.8042 4.71711 20 5.16316 20 5.68421V16.1053C20 16.6263 19.8042 17.0724 19.4125 17.4434C19.0208 17.8145 18.55 18 18 18H2ZM8 3.78947H12V1.89474H8V3.78947Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Who we serve</span>
+ </div>
+ <div class="g3p-mobile--separator"></div>
+ </a>
+ <div class="g3p-mobile-display-flex-col">
+ <a href="/businesses" data-aa-title="main-nav-solutions-Enterprise" data-ps-analytics="main-nav-solutions|Enterprise|https://www.pluralsight.com/businesses" onclick="updateAnalytics('Solutions|Solutions', 'Enterprise', 'https://www.pluralsight.com/businesses')">
+ <span class="g3p-modal-subheader--item">Enterprise</span>
+ </a>
+ <a href="/businesses/small-business" data-aa-title="main-nav-solutions-small-business" data-ps-analytics="main-nav-solutions|Small business|https://www.pluralsight.com/businesses/small-business" onclick="updateAnalytics('Solutions|Solutions', 'Small business', 'https://www.pluralsight.com/businesses/small-business')">
+ <span class="g3p-modal-subheader--item">Small business</span>
+ </a>
+ <a href="/industries/public-sector" data-aa-title="main-nav-industry-Public-Sector" data-ps-analytics="main-nav-industry|Public sector|https://www.pluralsight.com/industries/public-sector" onclick="updateAnalytics('Business|By industry', 'Public sector', 'https://www.pluralsight.com/industries/public-sector')">
+ <span class="g3p-modal-subheader--item">Public sector</span>
+ </a>
+ <a href="https://www.pluralsightone.org/initiatives-overview/licensing-for-nonprofits" data-aa-title="main-nav-industry-nonprofits" data-ps-analytics="main-nav-industry|Nonprofits|https://www.pluralsightone.org/initiatives-overview/licensing-for-nonprofits" onclick="updateAnalytics('Solutions|By industry', 'Nonprofits', 'https://www.pluralsightone.org/initiatives-overview/licensing-for-nonprofits')">
+ <span class="g3p-modal-subheader--item">Nonprofits</span>
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- end solutions modal -->
+ <!-- start learn modal -->
+ <div id="publicSectorMobileMain" class="g3p-mobile--full_width">
+ <div id="publicSectorMobileNav" class="g3p-mobile-navs-header" data-aa-title="ps-nav-publicSector"
+ aria-expanded="false">
+ <span class="g3p-mobile-navs-header--text">Learn</span>
+ <span id="publicSectorMobileChevron" class="g3p-mobile-navs-header--chevron"></span>
+ </div>
+ <div id="publicSectorNavMobileOptions" class="g3p-mobile-navs-subheaders hidden">
+ <div class="g3p-mobile-subnav_header">
+ <a href="/browse" data-aa-title="main-nav-learn" class="g3p-mobile-subnav_header-title" data-ps-analytics="main-nav-learn|Learn|https://www.pluralsight.com/browse" onclick="updateAnalytics('Learn', 'Learn', 'https://www.pluralsight.com/browse')">
+ <div class="g3p-dis-flex" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <g clip-path="url(#clip0_10970_8172)">
+ <path d="M2 19V17H12V19H2ZM2 14V12H7V14H2ZM2 9V7H7V9H2ZM20.6 19L16.75 15.15C16.35 15.4333 15.9125 15.6458 15.4375 15.7875C14.9625 15.9292 14.4833 16 14 16C12.6167 16 11.4375 15.5125 10.4625 14.5375C9.4875 13.5625 9 12.3833 9 11C9 9.61667 9.4875 8.4375 10.4625 7.4625C11.4375 6.4875 12.6167 6 14 6C15.3833 6 16.5625 6.4875 17.5375 7.4625C18.5125 8.4375 19 9.61667 19 11C19 11.4833 18.9292 11.9625 18.7875 12.4375C18.6458 12.9125 18.4333 13.35 18.15 13.75L22 17.6L20.6 19ZM14 14C14.8333 14 15.5417 13.7083 16.125 13.125C16.7083 12.5417 17 11.8333 17 11C17 10.1667 16.7083 9.45833 16.125 8.875C15.5417 8.29167 14.8333 8 14 8C13.1667 8 12.4583 8.29167 11.875 8.875C11.2917 9.45833 11 10.1667 11 11C11 11.8333 11.2917 12.5417 11.875 13.125C12.4583 13.7083 13.1667 14 14 14Z" fill="#FF1675"/>
+ </g>
+ <defs>
+ <clipPath id="clip0_10970_8172">
+ <rect width="24" height="24" fill="white"/>
+ </clipPath>
+ </defs>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Learn</span>
+ </div>
+ <div class="g3p-mobile--separator"></div>
+ </a>
+ <div class="g3p-mobile-display-flex-col">
+ <a href="https://www.pluralsight.com/browse?=&sort=newest&course-category=Artificial%20Intelligence&page=1" data-aa-title="main-nav-learn-artificial-intelligence" data-ps-analytics="main-nav-learn|Artificial intelligence|https://www.pluralsight.com/browse?=&sort=newest&course-category=Artificial%20Intelligence&page=1" onclick="updateAnalytics('Learn|Learn', 'Artificial intelligence', 'https://www.pluralsight.com/browse?=&sort=newest&course-category=Artificial%20Intelligence&page=1')">
+ <span class="g3p-modal-subheader--item">Artificial intelligence</span>
+ </a>
+ <a href="https://www.pluralsight.com/browse?=&sort=newest&course-category=Cloud&page=1" data-aa-title="main-nav-learn-artificial-intelligence" data-ps-analytics="main-nav-learn|Cloud|https://www.pluralsight.com/browse?=&sort=newest&course-category=Cloud&page=1" onclick="updateAnalytics('Learn|Learn', 'Cloud', 'https://www.pluralsight.com/browse?=&sort=newest&course-category=Cloud&page=1')">
+ <span class="g3p-modal-subheader--item">Cloud</span>
+ </a>
+ <a href="https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Data" data-aa-title="main-nav-learn-artificial-intelligence" data-ps-analytics="main-nav-learn|Data|https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Data" onclick="updateAnalytics('Learn|Learn', 'Data', 'https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Data')">
+ <span class="g3p-modal-subheader--item">Data</span>
+ </a>
+ <a href="https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=IT%20Ops" data-aa-title="main-nav-learn-artificial-intelligence" data-ps-analytics="main-nav-learn|IT Ops|https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=IT%20Ops" onclick="updateAnalytics('Learn|Learn', 'IT Ops', 'https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=IT%20Ops')">
+ <span class="g3p-modal-subheader--item">IT Ops</span>
+ </a>
+ <a href="https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Security" data-aa-title="main-nav-learn-artificial-intelligence" data-ps-analytics="main-nav-learn|Security|https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Security" onclick="updateAnalytics('Learn|Learn', 'Security', 'https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Security')">
+ <span class="g3p-modal-subheader--item">Security</span>
+ </a>
+ <a href="https://www.pluralsight.com/browse?=&sort=newest&course-category=Software%20Development&page=1" data-aa-title="main-nav-learn-artificial-intelligence" data-ps-analytics="main-nav-learn|Software development|https://www.pluralsight.com/browse?=&sort=newest&course-category=Software%20Development&page=1" onclick="updateAnalytics('Learn|Learn', 'Software development', 'https://www.pluralsight.com/browse?=&sort=newest&course-category=Software%20Development&page=1')">
+ <span class="g3p-modal-subheader--item">Software development</span>
+ </a>
+ <a href="https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Business" data-aa-title="main-nav-learn-artificial-intelligence" data-ps-analytics="main-nav-learn|Business and professional development|https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Business" onclick="updateAnalytics('Learn|Learn', 'Business and professional development', 'https://www.pluralsight.com/browse?=&sort=newest&page=1&course-category=Business')">
+ <span class="g3p-modal-subheader--item">Business & professional development</span>
+ </a>
+ </div>
+ </div>
+ <div class="g3p-mobile-anchor">
+ <a class="g3p-mobile-anchor_btn" href="/browse" data-aa-title="main-nav-browse" data-ps-analytics="main-nav|Browse|https://www.pluralsight.com/browse" onclick="updateAnalytics('Learn', 'Learn', 'https://www.pluralsight.com/browse')">
+ <span>Browse all topics</span>
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="10" viewBox="0 0 14 10" fill="none">
+ <path
+ d="M10.4093 5.82392H1.16233C0.927354 5.82392 0.730391 5.74496 0.571437 5.58705C0.412484 5.42913 0.333008 5.23346 0.333008 5.00002C0.333008 4.76658 0.412484 4.57091 0.571437 4.41299C0.730391 4.25508 0.927354 4.17612 1.16233 4.17612H10.4093L8.04569 1.82802C7.87982 1.66324 7.80035 1.471 7.80726 1.25129C7.81417 1.03159 7.89365 0.839346 8.04569 0.674566C8.21155 0.509787 8.40852 0.423965 8.63658 0.417099C8.86464 0.410233 9.06161 0.48919 9.22747 0.653969L13.0216 4.42329C13.1045 4.50568 13.1633 4.59494 13.1978 4.69106C13.2324 4.78718 13.2497 4.89017 13.2497 5.00002C13.2497 5.10987 13.2324 5.21286 13.1978 5.30898C13.1633 5.4051 13.1045 5.49436 13.0216 5.57675L9.22747 9.34607C9.06161 9.51085 8.86464 9.58981 8.63658 9.58294C8.40852 9.57608 8.21155 9.49025 8.04569 9.32547C7.89365 9.16069 7.81417 8.96845 7.80726 8.74875C7.80035 8.52904 7.87982 8.3368 8.04569 8.17202L10.4093 5.82392Z"
+ fill="#E7005E" />
+ </svg>
+ </a>
+ </div>
+ </div>
+ </div>
+ <!-- end learn modal -->
+ <!-- start resources modal -->
+ <div id="resourcesMobileMain" class="g3p-mobile--full_width">
+ <div id="resourcesMobileNav" class="g3p-mobile-navs-header" data-aa-title="ps-nav-resources"
+ aria-expanded="false">
+ <span class="g3p-mobile-navs-header--text">Resources</span>
+ <span id="resourcesMobileChevron" class="g3p-mobile-navs-header--chevron"></span>
+ </div>
+ <div id="resourcesNavMobileOptions" class="g3p-mobile-navs-subheaders hidden">
+ <div class="g3p-mobile-subnav_header">
+ <a href="/resources" data-aa-title="main-nav-resources-learn" class="g3p-mobile-subnav_header-title" data-ps-analytics="main-nav-resources-learn|Learn|https://www.pluralsight.com/resources" onclick="updateAnalytics('Resources', 'Learn', 'https://www.pluralsight.com/resources')">
+ <div class="g3p-dis-flex" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
+ <path
+ d="M13 17.05C13.7333 16.7 14.4708 16.4375 15.2125 16.2625C15.9542 16.0875 16.7167 16 17.5 16C18.1 16 18.6875 16.05 19.2625 16.15C19.8375 16.25 20.4167 16.4 21 16.6V6.7C20.45 6.46667 19.8792 6.29167 19.2875 6.175C18.6958 6.05833 18.1 6 17.5 6C16.7167 6 15.9417 6.1 15.175 6.3C14.4083 6.5 13.6833 6.8 13 7.2V17.05ZM12 19.475C11.7667 19.475 11.5458 19.4458 11.3375 19.3875C11.1292 19.3292 10.9333 19.25 10.75 19.15C10.1 18.7667 9.41667 18.4792 8.7 18.2875C7.98333 18.0958 7.25 18 6.5 18C5.8 18 5.1125 18.0917 4.4375 18.275C3.7625 18.4583 3.11667 18.7167 2.5 19.05C2.15 19.2333 1.8125 19.225 1.4875 19.025C1.1625 18.825 1 18.5333 1 18.15V6.1C1 5.91667 1.04583 5.74167 1.1375 5.575C1.22917 5.40833 1.36667 5.28333 1.55 5.2C2.33333 4.81667 3.1375 4.52083 3.9625 4.3125C4.7875 4.10417 5.63333 4 6.5 4C7.46667 4 8.4125 4.125 9.3375 4.375C10.2625 4.625 11.15 5 12 5.5C12.85 5 13.7375 4.625 14.6625 4.375C15.5875 4.125 16.5333 4 17.5 4C18.3667 4 19.2125 4.10417 20.0375 4.3125C20.8625 4.52083 21.6667 4.81667 22.45 5.2C22.6333 5.28333 22.7708 5.40833 22.8625 5.575C22.9542 5.74167 23 5.91667 23 6.1V18.15C23 18.5333 22.8375 18.825 22.5125 19.025C22.1875 19.225 21.85 19.2333 21.5 19.05C20.8833 18.7167 20.2375 18.4583 19.5625 18.275C18.8875 18.0917 18.2 18 17.5 18C16.75 18 16.0167 18.0958 15.3 18.2875C14.5833 18.4792 13.9 18.7667 13.25 19.15C13.0667 19.25 12.8708 19.3292 12.6625 19.3875C12.4542 19.4458 12.2333 19.475 12 19.475ZM14 8.775C14 8.625 14.0542 8.47083 14.1625 8.3125C14.2708 8.15417 14.3917 8.05 14.525 8C15.0083 7.83333 15.4917 7.70833 15.975 7.625C16.4583 7.54167 16.9667 7.5 17.5 7.5C17.8333 7.5 18.1625 7.52083 18.4875 7.5625C18.8125 7.60417 19.1333 7.65833 19.45 7.725C19.6 7.75833 19.7292 7.84167 19.8375 7.975C19.9458 8.10833 20 8.25833 20 8.425C20 8.70833 19.9083 8.91667 19.725 9.05C19.5417 9.18333 19.3083 9.21667 19.025 9.15C18.7917 9.1 18.5458 9.0625 18.2875 9.0375C18.0292 9.0125 17.7667 9 17.5 9C17.0667 9 16.6417 9.04167 16.225 9.125C15.8083 9.20833 15.4083 9.31667 15.025 9.45C14.725 9.56667 14.4792 9.55833 14.2875 9.425C14.0958 9.29167 14 9.075 14 8.775ZM14 14.275C14 14.125 14.0542 13.9708 14.1625 13.8125C14.2708 13.6542 14.3917 13.55 14.525 13.5C15.0083 13.3333 15.4917 13.2083 15.975 13.125C16.4583 13.0417 16.9667 13 17.5 13C17.8333 13 18.1625 13.0208 18.4875 13.0625C18.8125 13.1042 19.1333 13.1583 19.45 13.225C19.6 13.2583 19.7292 13.3417 19.8375 13.475C19.9458 13.6083 20 13.7583 20 13.925C20 14.2083 19.9083 14.4167 19.725 14.55C19.5417 14.6833 19.3083 14.7167 19.025 14.65C18.7917 14.6 18.5458 14.5625 18.2875 14.5375C18.0292 14.5125 17.7667 14.5 17.5 14.5C17.0667 14.5 16.6417 14.5375 16.225 14.6125C15.8083 14.6875 15.4083 14.7917 15.025 14.925C14.725 15.0417 14.4792 15.0375 14.2875 14.9125C14.0958 14.7875 14 14.575 14 14.275ZM14 11.525C14 11.375 14.0542 11.2208 14.1625 11.0625C14.2708 10.9042 14.3917 10.8 14.525 10.75C15.0083 10.5833 15.4917 10.4583 15.975 10.375C16.4583 10.2917 16.9667 10.25 17.5 10.25C17.8333 10.25 18.1625 10.2708 18.4875 10.3125C18.8125 10.3542 19.1333 10.4083 19.45 10.475C19.6 10.5083 19.7292 10.5917 19.8375 10.725C19.9458 10.8583 20 11.0083 20 11.175C20 11.4583 19.9083 11.6667 19.725 11.8C19.5417 11.9333 19.3083 11.9667 19.025 11.9C18.7917 11.85 18.5458 11.8125 18.2875 11.7875C18.0292 11.7625 17.7667 11.75 17.5 11.75C17.0667 11.75 16.6417 11.7917 16.225 11.875C15.8083 11.9583 15.4083 12.0667 15.025 12.2C14.725 12.3167 14.4792 12.3083 14.2875 12.175C14.0958 12.0417 14 11.825 14 11.525Z"
+ fill="#FF1675" />
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Learn</span>
+ </div>
+ <div class="g3p-mobile--separator"></div>
+ </a>
+ <div class="g3p-mobile-display-flex-col">
+ <a href="/resources?content-type=Case+studies" data-aa-title="main-nav-resources-case-studies" data-ps-analytics="main-nav-resources|Case studies|https://www.pluralsight.com/resources?q=&content-type=Case+studies" onclick="updateAnalytics('Resources|Learn', 'Case studies', 'https://www.pluralsight.com/resources?q=&content-type=Case+studies')">
+ <span class="g3p-modal-subheader--item">Case studies</span>
+ </a>
+ <a href="/resources/podcasts/the-pluralsight-podcast" data-aa-title="main-nav-resources-podcasts" data-ps-analytics="main-nav-resources|podcasts|https://www.pluralsight.com/resources/podcasts/the-pluralsight-podcast" onclick="updateAnalytics('Resources|Learn', 'podcasts', 'https://www.pluralsight.com/resources/podcasts/the-pluralsight-podcast')">
+ <span class="g3p-modal-subheader--item">Podcasts</span>
+ </a>
+ <a href="/resources?content-type=Reports" data-aa-title="main-nav-resources-reports" data-ps-analytics="main-nav-resources|Reports|https://www.pluralsight.com/resources?q=&content-type=Reports" onclick="updateAnalytics('Resources|Learn', 'Reports', 'https://www.pluralsight.com/resources?q=&content-type=Reports')">
+ <span class="g3p-modal-subheader--item">Reports</span>
+ </a>
+ <a href="/resources/blog/browse?unified-tags=guides" data-aa-title="main-nav-resources-tech-guide" data-ps-analytics="main-nav-resources|Tech guides|https://www.pluralsight.com/resources/blog/browse?unified-tags=guides" onclick="updateAnalytics('Resources|Learn', 'Tech guides', 'https://www.pluralsight.com/resources/blog/browse?unified-tags=guides')">
+ <span class="g3p-modal-subheader--item">Tech guides</span>
+ </a>
+ <a href="/resources/videos" data-aa-title="main-nav-resources-video-series" data-ps-analytics="main-nav-resources|Video series|https://www.pluralsight.com/resources/videos" onclick="updateAnalytics('Resources|Learn', 'Video series', 'https://www.pluralsight.com/resources/videos')">
+ <span class="g3p-modal-subheader--item">Video series</span>
+ </a>
+ </div>
+ </div>
+ <div class="g3p-mobile-subnav_header">
+ <a href="/events" data-aa-title="main-nav-resources-connect" class="g3p-mobile-subnav_header-title" data-ps-analytics="main-nav-resources-connect|Connect|https://www.pluralsight.com/events" onclick="updateAnalytics('Resources', 'Connect', 'https://www.pluralsight.com/events')">
+ <div class="g3p-dis-flex" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="none">
+ <g clip-path="url(#clip0_6709_7486)">
+ <path fill-rule="evenodd" clip-rule="evenodd"
+ d="M3.5 0.5C4.05228 0.5 4.5 0.947715 4.5 1.5V2.5H9.5V1.5C9.5 0.947715 9.94771 0.5 10.5 0.5C11.0523 0.5 11.5 0.947715 11.5 1.5V2.5H12C12.8284 2.5 13.5 3.17157 13.5 4V5.375H0.5V4C0.5 3.17157 1.17157 2.5 2 2.5H2.5V1.5C2.5 0.947715 2.94772 0.5 3.5 0.5ZM0.5 12V6.625H13.5V12C13.5 12.8284 12.8284 13.5 12 13.5H2C1.17157 13.5 0.5 12.8284 0.5 12Z"
+ fill="white" />
+ </g>
+ <defs>
+ <clipPath id="clip0_6709_7486">
+ <rect width="14" height="14" fill="white" />
+ </clipPath>
+ </defs>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Connect</span>
+ </div>
+ <div class="g3p-mobile--separator"></div>
+ </a>
+ <div class="g3p-mobile-display-flex-col">
+ <a href="/events" data-aa-title="main-nav-resources-Events" data-ps-analytics="main-nav-resources|Events|https://www.pluralsight.com/events" onclick="updateAnalytics('Resources|Connect', 'Events', 'https://www.pluralsight.com/events')">
+ <span class="g3p-modal-subheader--item">Events</span>
+ </a>
+ <a href="/resources/webinars" data-aa-title="main-nav-resources-Webinars" data-ps-analytics="main-nav-resources|Webinars|https://www.pluralsight.com/resources/webinars" onclick="updateAnalytics('Resources|Connect', 'Webinars', 'https://www.pluralsight.com/resources/webinars')">
+ <span class="g3p-modal-subheader--item">Webinars</span>
+ </a>
+ </div>
+ </div>
+ <div class="g3p-mobile-subnav_header">
+ <a href="/resources/blog" data-aa-title="main-nav-resources-blog" class="g3p-mobile-subnav_header-title" data-ps-analytics="main-nav-resources-blog|Blog|https://www.pluralsight.com/resources/blog" onclick="updateAnalytics('Resources', 'Blog',
+ 'https://www.pluralsight.com/resources/blog')">
+ <div class="g3p-dis-flex" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg xmlns="http://www.w3.org/2000/svg" width="19" height="18" viewBox="0 0 19 18" fill="none">
+ <path
+ d="M1.6665 18.0002C1.38317 18.0002 1.14567 17.9044 0.954004 17.7127C0.762337 17.5211 0.666504 17.2836 0.666504 17.0002V14.5752C0.666504 14.3086 0.716504 14.0544 0.816504 13.8127C0.916504 13.5711 1.05817 13.3586 1.2415 13.1752L13.8665 0.575244C14.0665 0.391911 14.2873 0.250244 14.529 0.150244C14.7707 0.0502441 15.0248 0.000244141 15.2915 0.000244141C15.5582 0.000244141 15.8165 0.0502441 16.0665 0.150244C16.3165 0.250244 16.5332 0.400244 16.7165 0.600244L18.0915 2.00024C18.2915 2.18358 18.4373 2.40024 18.529 2.65024C18.6207 2.90024 18.6665 3.15024 18.6665 3.40024C18.6665 3.66691 18.6207 3.92108 18.529 4.16274C18.4373 4.40441 18.2915 4.62524 18.0915 4.82524L5.4915 17.4252C5.30817 17.6086 5.09567 17.7502 4.854 17.8502C4.61234 17.9502 4.35817 18.0002 4.0915 18.0002H1.6665ZM15.2665 4.80024L16.6665 3.40024L15.2665 2.00024L13.8665 3.40024L15.2665 4.80024Z"
+ fill="#FF1675" />
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Blog</span>
+ </div>
+ <div class="g3p-mobile--separator"></div>
+ </a>
+ <div class="g3p-mobile-display-flex-col">
+ <a href="/resources/blog" data-aa-title="main-nav-resources-blog-home" data-ps-analytics="main-nav-resources|Blog home|https://www.pluralsight.com/resources/blog" onclick="updateAnalytics('Resources|Blog', 'Blog home', 'https://www.pluralsight.com/resources/blog')">
+ <span class="g3p-modal-subheader--item">Blog home</span>
+ </a>
+ <a href="/resources/blog/software-development" data-aa-title="main-nav-resources-software-dev" data-ps-analytics="main-nav-resources|Software dev|https://www.pluralsight.com/resources/blog/software-development" onclick="updateAnalytics('Resources|Blog', 'Software dev', 'https://www.pluralsight.com/resources/blog/software-development')">
+ <span class="g3p-modal-subheader--item">Software dev</span>
+ </a>
+ <a href="/resources/blog/cloud" data-aa-title="main-nav-resources-cloud" data-ps-analytics="main-nav-resources|Cloud|https://www.pluralsight.com/resources/blog/cloud" onclick="updateAnalytics('Resources|Blog', 'Cloud', 'https://www.pluralsight.com/resources/blog/cloud')">
+ <span class="g3p-modal-subheader--item">Cloud</span>
+ </a>
+ <a href="/resources/blog/tech-operations" data-aa-title="main-nav-resources-it-ops" data-ps-analytics="main-nav-resources|IT Ops|https://www.pluralsight.com/resources/blog/tech-operations" onclick="updateAnalytics('Resources|Blog', 'IT Ops', 'https://www.pluralsight.com/resources/blog/tech-operations')">
+ <span class="g3p-modal-subheader--item">IT Ops</span>
+ </a>
+ <a href="/resources/blog/ai-and-data" data-aa-title="main-nav-resources-data" data-ps-analytics="main-nav-resources|Data|https://www.pluralsight.com/resources/blog/ai-and-data" onclick="updateAnalytics('Resources|Blog', 'Data', 'https://www.pluralsight.com/resources/blog/ai-and-data')">
+ <span class="g3p-modal-subheader--item">Data</span>
+ </a>
+ <a href="/resources/blog/cybersecurity" data-aa-title="main-nav-resources-security" data-ps-analytics="main-nav-resources|Security|https://www.pluralsight.com/resources/blog/cybersecurity" onclick="updateAnalytics('Resources|Blog', 'Security', 'https://www.pluralsight.com/resources/blog/cybersecurity')">
+ <span class="g3p-modal-subheader--item">Security</span>
+ </a>
+ </div>
+ </div>
+ <div class="g3p-mobile-anchor">
+ <a class="g3p-mobile-anchor_btn" href="/resources" data-aa-title="main-nav-resource-hub" data-ps-analytics="main-nav|Resource hub|https://www.pluralsight.com/resources" onclick="updateAnalytics('Resources', 'Resource hub', 'https://www.pluralsight.com/resources')">
+ <span>Resource hub</span>
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="10" viewBox="0 0 14 10" fill="none">
+ <path
+ d="M10.4093 5.82392H1.16233C0.927354 5.82392 0.730391 5.74496 0.571437 5.58705C0.412484 5.42913 0.333008 5.23346 0.333008 5.00002C0.333008 4.76658 0.412484 4.57091 0.571437 4.41299C0.730391 4.25508 0.927354 4.17612 1.16233 4.17612H10.4093L8.04569 1.82802C7.87982 1.66324 7.80035 1.471 7.80726 1.25129C7.81417 1.03159 7.89365 0.839346 8.04569 0.674566C8.21155 0.509787 8.40852 0.423965 8.63658 0.417099C8.86464 0.410233 9.06161 0.48919 9.22747 0.653969L13.0216 4.42329C13.1045 4.50568 13.1633 4.59494 13.1978 4.69106C13.2324 4.78718 13.2497 4.89017 13.2497 5.00002C13.2497 5.10987 13.2324 5.21286 13.1978 5.30898C13.1633 5.4051 13.1045 5.49436 13.0216 5.57675L9.22747 9.34607C9.06161 9.51085 8.86464 9.58981 8.63658 9.58294C8.40852 9.57608 8.21155 9.49025 8.04569 9.32547C7.89365 9.16069 7.81417 8.96845 7.80726 8.74875C7.80035 8.52904 7.87982 8.3368 8.04569 8.17202L10.4093 5.82392Z"
+ fill="#E7005E" />
+ </svg>
+ </a>
+ </div>
+ <div class="g3p-mobile-featured_resource">
+ <div class="g3p-mobile-featured_resource--text">Featured resource</div>
+ <div class="g3p-mobile-fr-separateor"></div>
+ <a class="g3p-nav-resource--right_img" href="/resource-center/reports/tech-forecast-2026-gated" data-aa-title="main-nav-featured-resource-image" data-ps-analytics="main-nav|Featured Resource Image|https://www.pluralsight.com/resource-center/reports/tech-forecast-2026-gated" onclick="updateAnalytics('Resources', 'Featured Resource Image', 'https://www.pluralsight.com/resource-center/reports/tech-forecast-2026-gated')">
+ <img class="" src="/content/dam/rebrand2025/resource-center/2026-tech-forecast/featured-2026-tech-forecast.png" alt="2026 Tech Forecast">
+ </a>
+ <div class="g3p-mobile-fr-title">2026 Tech Forecast</div>
+ <p>1,500+ tech insiders, business leaders, and Pluralsight Authors share their predictions on what’s shifting fastest and how to stay ahead.</p>
+ <div class="g3p-mobile-anchor">
+ <a class="g3p-mobile-anchor_btn g3p-mobile--nomargin" href="/resource-center/reports/tech-forecast-2026-gated" data-aa-title="main-nav-reources-check-it-out" data-ps-analytics="main-nav|Check it out|https://www.pluralsight.com/resource-center/reports/tech-forecast-2026-gated" style="color: #D60056 !important;" onclick="updateAnalytics('Resources', 'Featured Resource Image', 'https://www.pluralsight.com/resource-center/reports/tech-forecast-2026-gated')">
+ <span>Download the forecast</span>
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="10" viewBox="0 0 14 10" fill="none">
+ <path
+ d="M10.4093 5.8239H1.16233C0.927354 5.8239 0.730391 5.74494 0.571437 5.58703C0.412484 5.42912 0.333008 5.23344 0.333008 5C0.333008 4.76657 0.412484 4.57089 0.571437 4.41298C0.730391 4.25507 0.927354 4.17611 1.16233 4.17611H10.4093L8.04569 1.82801C7.87982 1.66323 7.80035 1.47098 7.80726 1.25128C7.81417 1.03157 7.89365 0.83933 8.04569 0.674551C8.21155 0.509772 8.40852 0.42395 8.63658 0.417084C8.86464 0.410218 9.06161 0.489175 9.22747 0.653954L13.0216 4.42328C13.1045 4.50567 13.1633 4.59492 13.1978 4.69104C13.2324 4.78717 13.2497 4.89015 13.2497 5C13.2497 5.10986 13.2324 5.21284 13.1978 5.30897C13.1633 5.40509 13.1045 5.49434 13.0216 5.57673L9.22747 9.34606C9.06161 9.51083 8.86464 9.58979 8.63658 9.58293C8.40852 9.57606 8.21155 9.49024 8.04569 9.32546C7.89365 9.16068 7.81417 8.96844 7.80726 8.74873C7.80035 8.52903 7.87982 8.33678 8.04569 8.172L10.4093 5.8239Z"
+ fill="#E7005E" />
+ </svg>
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- end resources modal -->
+ <!-- start individuals modal -->
+ <div id="individualMobileMain" class="g3p-mobile--full_width">
+ <div id="individualMobileNav" class="g3p-mobile-navs-header" data-aa-title="ps-nav-individuals"
+ aria-expanded="false">
+ <span class="g3p-mobile-navs-header--text">For Individuals</span>
+ <span id="individualMobileChevron" class="g3p-mobile-navs-header--chevron"></span>
+ </div>
+ <div id="individualNavMobileOptions" class="g3p-mobile-navs-subheaders hidden">
+ <div class="g3p-mobile-subnav_header">
+ <a href="/individuals" data-aa-title="mobile-nav-individuals" class="g3p-mobile-subnav_header-title" data-ps-analytics="mobile-nav-individuals|Individuals|https://www.pluralsight.com/individuals" onclick="updateAnalytics('Individuals', 'Individuals', 'https://www.pluralsight.com/individuals')">
+ <div class="g3p-dis-flex">
+ <span class="g3p-modal-subheader--image">
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="none">
+ <path fill-rule="evenodd" clip-rule="evenodd"
+ d="M7 7.5C5.067 7.5 3.5 5.933 3.5 4V2C3.5 1.86739 3.55268 1.74021 3.64645 1.64645C3.90113 1.40111 4.21176 1.2101 4.52639 1.05279C5.08754 0.772214 5.91362 0.5 7 0.5C8.08638 0.5 8.91246 0.772214 9.47361 1.05279C9.79024 1.2111 10.0946 1.40363 10.3536 1.64645C10.4473 1.74021 10.5 1.86739 10.5 2V4C10.5 5.933 8.933 7.5 7 7.5ZM0.536568 12.8076C1.59107 10.2789 4.08715 8.5 6.99989 8.5C9.91262 8.5 12.4087 10.2789 13.4632 12.8076C13.5276 12.9619 13.5105 13.1382 13.4178 13.2773C13.3251 13.4165 13.1689 13.5 13.0017 13.5H0.998049C0.830846 13.5 0.674709 13.4165 0.581982 13.2773C0.489255 13.1382 0.472213 12.9619 0.536568 12.8076Z"
+ fill="white" />
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Individuals</span>
+ </div>
+ <div class="g3p-mobile--separator"></div>
+ </a>
+ <div class="g3p-mobile-display-flex-col">
+ <a href="/individuals/pricing/free-trial" data-aa-title="main-nav-individuals-free-trial" data-ps-analytics="main-nav-individuals|free|https://www.pluralsight.com/individuals/pricing/free-trial" onclick="updateAnalytics('Individuals|Individuals', 'Try for free', 'https://www.pluralsight.com/individuals/pricing/free-trial')">
+ <span class="g3p-modal-subheader--item">Try for free</span>
+ </a>
+ <a href="/gift-of-pluralsight" data-aa-title="main-nav-individuals-gop" data-ps-analytics="main-nav-individuals|Gift Pluralsight|https://www.pluralsight.com/gift-of-pluralsight" onclick="updateAnalytics('Individuals|Individuals', 'Gift Pluralsight', 'https://www.pluralsight.com/gift-of-pluralsight')">
+ <span class="g3p-modal-subheader--item">Gift Pluralsight</span>
+ </a>
+ </div>
+ </div>
+ <div class="g3p-mobile-subnav_header">
+ <a href="/individuals/pricing" data-aa-title="mobile-nav-individuals-plans" class="g3p-mobile-subnav_header-title" data-ps-analytics="mobile-nav-individuals-plans|Plans|https://www.pluralsight.com/individuals/pricing" onclick="updateAnalytics('Individuals', 'Plans',
+ 'https://www.pluralsight.com/individuals/pricing')">
+ <div class="g3p-dis-flex" role="heading">
+ <span class="g3p-modal-subheader--image">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
+ <path
+ d="M5.00825 18.0011V6.98216C5.00825 6.43246 5.20814 5.96605 5.60792 5.58293C6.0077 5.19981 6.48243 5.00825 7.03213 5.00825H18.0011C18.5508 5.00825 19.0214 5.20397 19.4128 5.59542C19.8043 5.98687 20 6.45745 20 7.00715V14.1782C20 14.4447 19.95 14.6987 19.8501 14.9403C19.7501 15.1818 19.6085 15.3942 19.4253 15.5774L15.5774 19.4253C15.3942 19.6085 15.1818 19.7501 14.9403 19.8501C14.6987 19.95 14.4447 20 14.1782 20H7.00715C6.45745 20 5.98687 19.8043 5.59542 19.4128C5.20397 19.0214 5.00825 18.5508 5.00825 18.0011ZM0.0359802 4.25866C-0.0639648 3.70896 0.0443089 3.2134 0.360802 2.77198C0.677294 2.33055 1.11039 2.05987 1.66009 1.95992L12.5041 0.0359802C13.0538 -0.0639648 13.5494 0.0443089 13.9908 0.360802C14.4322 0.677294 14.7029 1.11039 14.8029 1.66009L15.0527 3.00935H7.00715C5.90775 3.00935 4.9666 3.4008 4.1837 4.1837C3.4008 4.9666 3.00935 5.90775 3.00935 7.00715V16.5519C2.74282 16.402 2.51378 16.2021 2.32222 15.9522C2.13066 15.7024 2.00989 15.4192 1.95992 15.1027L0.0359802 4.25866ZM18.0011 14.0033H15.0027C14.7196 14.0033 14.4822 14.0991 14.2906 14.2906C14.0991 14.4822 14.0033 14.7196 14.0033 15.0027V18.0011L18.0011 14.0033Z"
+ fill="#FF1675"></path>
+ </svg>
+ </span>
+ <span class="g3p-modal-subheader--text">Plans</span>
+ </div>
+ <div class="g3p-mobile--separator"></div>
+ </a>
+ <div class="g3p-mobile-display-flex-col">
+ <a href="/individuals/pricing/core-tech" data-aa-title="main-nav-plans-core-tech" data-ps-analytics="main-nav-plans|Core Tech|https://www.pluralsight.com/individuals/pricing/core-tech" onclick="updateAnalytics('Individuals|Plans', 'Core Tech', 'https://www.pluralsight.com/individuals/pricing/core-tech')">
+ <span class="g3p-modal-subheader--item">Core Tech</span>
+ </a>
+ <a href="/individuals/pricing/ai" data-aa-title="main-nav-plans-ai" data-ps-analytics="main-nav-plans|AI+|https://www.pluralsight.com/individuals/pricing/ai" onclick="updateAnalytics('Individuals|Plans', 'AI+', 'https://www.pluralsight.com/individuals/pricing/ai')">
+ <span class="g3p-modal-subheader--item">AI+</span>
+ </a>
+ <a href="/individuals/pricing/cloud" data-aa-title="main-nav-plans-cloud" data-ps-analytics="main-nav-plans|Cloud+|https://www.pluralsight.com/individuals/pricing/cloud" onclick="updateAnalytics('Individuals|Plans', 'Cloud+', 'https://www.pluralsight.com/individuals/pricing/cloud')">
+ <span class="g3p-modal-subheader--item">Cloud+<br /><span class="g3p-modal-subheader--details">A Cloud Guru courses
+ and labs</span></span>
+ </a>
+ <a href="/individuals/pricing/security" data-aa-title="main-nav-plans-security" data-ps-analytics="main-nav-plans|Security+|https://www.pluralsight.com/individuals/pricing/security" onclick="updateAnalytics('Individuals|Plans', 'Security+', 'https://www.pluralsight.com/individuals/pricing/security')">
+ <span class="g3p-modal-subheader--item">Security+</span>
+ </a>
+ <a href="/individuals/pricing/data" data-aa-title="main-nav-plans-data" data-ps-analytics="main-nav-plans|Data+|https://www.pluralsight.com/individuals/pricing/data" onclick="updateAnalytics('Individuals|Plans', 'Data+', 'https://www.pluralsight.com/individuals/pricing/data')">
+ <span class="g3p-modal-subheader--item">Data+</span>
+ </a>
+ <a href="/individuals/pricing/complete" data-aa-title="main-nav-plans-complete" data-ps-analytics="main-nav-plans|Complete|https://www.pluralsight.com/individuals/pricing/complete" onclick="updateAnalytics('Individuals|Plans', 'Complete', 'https://www.pluralsight.com/individuals/pricing/complete')">
+ <span class="g3p-modal-subheader--item">Complete</span>
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- end individuals modal -->
+ </div>
+ <!-- Fixed Get Started Button -->
+ <div class="g3p-mobile-get-started">
+ <div class="g3p-mobile-get-started--block" id="getStartedMobile">
+ <span class="g3p-nav-get-started--text g3p-arrow-icon" id="getStartedMobileSchevron"
+ data-aa-title="ps-nav-get-started" data-ps-analytics="ps-nav|View plans">
+ <span>View plans</span>
+ <svg xmlns="http://www.w3.org/2000/svg" width="10" height="6" viewBox="0 0 10 6" fill="none">
+ <path
+ d="M4.58333 5.70841C4.47372 5.70841 4.37095 5.69119 4.27504 5.65673C4.17912 5.62227 4.09006 5.56369 4.00785 5.481L0.226084 1.67693C0.0753612 1.52531 0 1.33235 0 1.09805C0 0.863737 0.0753612 0.670777 0.226084 0.519165C0.376806 0.367554 0.568635 0.291748 0.801569 0.291748C1.0345 0.291748 1.22633 0.367554 1.37706 0.519165L4.58333 3.74436L7.78961 0.519165C7.94033 0.367554 8.13216 0.291748 8.3651 0.291748C8.59803 0.291748 8.78986 0.367554 8.94058 0.519165C9.0913 0.670777 9.16667 0.863737 9.16667 1.09805C9.16667 1.33235 9.0913 1.52531 8.94058 1.67693L5.15882 5.481C5.07661 5.56369 4.98754 5.62227 4.89163 5.65673C4.79571 5.69119 4.69295 5.70841 4.58333 5.70841Z"
+ fill="white" />
+ </svg>
+ </span>
+ </div>
+ <div class="g3p-mobile-contact-sales--block">
+ <a class="g3p-nav-contact-sales-mobile contact-sales ps-button" href="/contact-sales" data-aa-title="nav-contact-sales" data-ps-analytics="blog-nav|Contact sales|contact-sales" onclick="updateAnalytics('Main Nav Header', 'Contact sales', 'https://www.pluralsight.com/contact-sales')">Contact
+ sales</a>
+ </div>
+ </div>
+ <!-- Modal and Overlay -->
+ <div class="g3p-mobile-get-started-modal" id="mobileGetStartedModal">
+ <div class="g3p-mobile-overlay" id="mobileOverlay"></div>
+ <div class="g3p-mobile-get-started-modal--content">
+ <div class="g3p-mobile-get-started-modal--block">
+ <div class="g3p-mobile-get-started-modal--item-block">
+ <a class="get-started__icon" href="/businesses/pricing" data-aa-title="nav-for-business" previewlistener="true" onclick="updateAnalytics('View plans', 'For businesses', 'https://www.pluralsight.com/businesses/pricing')">
+ <span class="g3p-nav-icon-container">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="18" viewBox="0 0 20 18" fill="none">
+ <path d="M2 18C1.45 18 0.979167 17.8145 0.5875 17.4434C0.195833 17.0724 0 16.6263 0 16.1053V5.68421C0 5.16316 0.195833 4.71711 0.5875 4.34605C0.979167 3.975 1.45 3.78947 2 3.78947H6V1.89474C6 1.37368 6.19583 0.927632 6.5875 0.556579C6.97917 0.185526 7.45 0 8 0H12C12.55 0 13.0208 0.185526 13.4125 0.556579C13.8042 0.927632 14 1.37368 14 1.89474V3.78947H18C18.55 3.78947 19.0208 3.975 19.4125 4.34605C19.8042 4.71711 20 5.16316 20 5.68421V16.1053C20 16.6263 19.8042 17.0724 19.4125 17.4434C19.0208 17.8145 18.55 18 18 18H2ZM8 3.78947H12V1.89474H8V3.78947Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ <span class="get-started__text">For businesses</span>
+ </a>
+ </div>
+ <div class="g3p-mobile-get-started-modal--item-block">
+ <a class="get-started__icon" href="/industries/public-sector/pricing" data-aa-title="nav-pubsec" previewlistener="true" onclick="updateAnalytics('View plans', 'For public sector', 'https://www.pluralsight.com/industries/public-sector')">
+ <span class="g3p-nav-icon-container">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
+ <path d="M2.90301 14.6941V10.2434C2.90301 9.9117 3.01687 9.63169 3.2446 9.40339C3.47248 9.17508 3.74855 9.06093 4.0728 9.06093C4.39706 9.06093 4.6709 9.17508 4.89433 9.40339C5.1176 9.63169 5.22924 9.9117 5.22924 10.2434V14.708C5.22924 15.0396 5.1176 15.3195 4.89433 15.5478C4.6709 15.7763 4.39706 15.8905 4.0728 15.8905C3.74855 15.8905 3.47248 15.774 3.2446 15.541C3.01687 15.3081 2.90301 15.0259 2.90301 14.6941ZM8.84357 14.708V10.2434C8.84357 9.9117 8.9552 9.63169 9.17848 9.40339C9.40191 9.17508 9.67575 9.06093 10 9.06093C10.3243 9.06093 10.5981 9.17508 10.8215 9.40339C11.0448 9.63169 11.1564 9.9117 11.1564 10.2434V14.708C11.1564 15.0396 11.0448 15.3195 10.8215 15.5478C10.5981 15.7763 10.3243 15.8905 10 15.8905C9.67575 15.8905 9.40191 15.7763 9.17848 15.5478C8.9552 15.3195 8.84357 15.0396 8.84357 14.708ZM1.26425 20C0.913124 20 0.614634 19.8743 0.36878 19.6229C0.122927 19.3715 0 19.0663 0 18.7073C0 18.348 0.122927 18.0428 0.36878 17.7914C0.614634 17.5401 0.913124 17.4145 1.26425 17.4145H18.7357C19.0869 17.4145 19.3854 17.5401 19.6312 17.7914C19.8771 18.0428 20 18.348 20 18.7073C20 19.0663 19.8771 19.3715 19.6312 19.6229C19.3854 19.8743 19.0869 20 18.7357 20H1.26425ZM14.7708 14.6941V10.2434C14.7708 9.9117 14.8847 9.63169 15.1126 9.40339C15.3403 9.17508 15.6163 9.06093 15.9406 9.06093C16.265 9.06093 16.5388 9.17508 16.7621 9.40339C16.9854 9.63169 17.097 9.9117 17.097 10.2434V14.708C17.097 15.0396 16.9854 15.3195 16.7621 15.5478C16.5388 15.7763 16.265 15.8905 15.9406 15.8905C15.6163 15.8905 15.3403 15.774 15.1126 15.541C14.8847 15.3081 14.7708 15.0259 14.7708 14.6941ZM18.6818 7.52329H1.18243C0.854046 7.52329 0.574877 7.40573 0.344926 7.17059C0.114975 6.93546 0 6.65 0 6.31421V5.5571C0 5.32294 0.0594756 5.11098 0.178427 4.92122C0.297378 4.73145 0.455369 4.58209 0.652402 4.47315L8.87171 0.277819C9.22284 0.0926065 9.59894 0 10 0C10.4011 0 10.7772 0.0926065 11.1283 0.277819L19.2729 4.43485C19.5018 4.5438 19.6801 4.70942 19.808 4.9317C19.936 5.15415 20 5.3962 20 5.65784V6.16152C20 6.5391 19.8726 6.86042 19.6179 7.12547C19.3629 7.39069 19.0509 7.52329 18.6818 7.52329Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ <span class="get-started__text">For public sector</span>
+ </a>
+ </div>
+ <div class="g3p-mobile-get-started-modal--item-block">
+ <a class="get-started__icon" href="/individuals/pricing" data-aa-title="nav-for-individuals" previewlistener="true" onclick="updateAnalytics('View plans', 'For individuals', 'https://www.pluralsight.com/individuals/pricing')">
+ <span class="g3p-nav-icon-container">
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none">
+ <path d="M9 9C7.7625 9 6.70312 8.55937 5.82187 7.67812C4.94062 6.79688 4.5 5.7375 4.5 4.5C4.5 3.2625 4.94062 2.20312 5.82187 1.32187C6.70312 0.440625 7.7625 0 9 0C10.2375 0 11.2969 0.440625 12.1781 1.32187C13.0594 2.20312 13.5 3.2625 13.5 4.5C13.5 5.7375 13.0594 6.79688 12.1781 7.67812C11.2969 8.55937 10.2375 9 9 9ZM0 15.75V14.85C0 14.2125 0.164062 13.6266 0.492188 13.0922C0.820312 12.5578 1.25625 12.15 1.8 11.8687C2.9625 11.2875 4.14375 10.8516 5.34375 10.5609C6.54375 10.2703 7.7625 10.125 9 10.125C10.2375 10.125 11.4562 10.2703 12.6562 10.5609C13.8562 10.8516 15.0375 11.2875 16.2 11.8687C16.7437 12.15 17.1797 12.5578 17.5078 13.0922C17.8359 13.6266 18 14.2125 18 14.85V15.75C18 16.3687 17.7797 16.8984 17.3391 17.3391C16.8984 17.7797 16.3687 18 15.75 18H2.25C1.63125 18 1.10156 17.7797 0.660937 17.3391C0.220312 16.8984 0 16.3687 0 15.75Z" fill="#FF1675"/>
+ </svg>
+ </span>
+ <span class="get-started__text">For individuals</span>
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+
+ <script type="text/javascript">
+ const $globalNav = jQuery('.g3p-main-nav-header, .g3p-nav-mobile_view');
+const signinWrapper = document.querySelector(".g3p-signin-wrapper");
+const searchResultsDiv = document.getElementById('header-search-results-all');
+const mobileSearchResultsDiv = document.getElementById('mobile_header-search-results-all');
+const navButtons = document.querySelectorAll(".g3p-main-nav__btn");
+const modalOverlay = document.getElementById('modal-overlay');
+const toggleButton = document.getElementById("toggleGetStarted");
+const getStartedModal = document.getElementById("getStartedModal");
+const menuIcon = document.getElementById("menuIcon");
+const mainModal = document.getElementById("mobileMainModal");
+const getStartedButton = document.getElementById("getStartedMobile");
+const bottomNavButtons = document.querySelector(".g3p-mobile-get-started");
+const modal = document.getElementById("mobileGetStartedModal");
+const overlay = document.getElementById("mobileOverlay");
+const getStartedMobileBtn = document.getElementById("getStartedMobileSchevron");
+const signInOverlay = document.querySelector(".menu-dropdown-panel--overlay");
+const contactSalesModal = document.querySelector(`.main-header-dialog-modal`);
+const closeModalButton = document.querySelectorAll('.dialog-close-button');
+const mainOverlay = document.querySelector('.g3p-main-container--overlay');
+let $searchForm = jQuery("#header_searchForm, #mobile_header_searchForm");
+let $headerNav = $searchForm.parents(".g3p-main-nav-header, .g3p-nav-mobile_view");
+let $searchWrapper = $headerNav.find(".header_nav_search");
+let $searchPopout = $headerNav.closest(".menu-dropdown-panel");
+let $searchInput1 = $searchForm.find(".header_search--input");
+let $mobileSearchInput = $searchForm.find(".mobile_header_search--input");
+let searchTerm = "";
+let $resultsTarget1 = $searchForm.parents('.search-button__component').parent('.header_nav_search').siblings('.header_tabs_content--container').find('#header_dropdown--resultList');
+let minChars = 3;
+let searchOpen = false;
+let timer = null;
+const searchText = document.querySelector(".header_search--input");
+const mobileSearchText = document.querySelector(".mobile_header_search--input");
+const metaPath = document.querySelector('meta[name="cludo:content-path"]')?.getAttribute("content");
+
+let linkPageVal = '';
+if (metaPath.split('/en/').length > 1) {
+ linkPageVal = metaPath.split('/en/')[1].includes('/') ? metaPath.split('/en/')[1].split('/')[0] : metaPath.split('/en/')[1];
+} else {
+ linkPageVal = 'Homepage';
+}
+function getTotalNavHeight() {
+ const promoBanner = document.querySelector('.promo-banner');
+ const mainHeader = document.querySelector('.g3p-main-nav-header');
+ const navContainer = document.querySelector('.g3p-main-nav--container.g3p-nav-desktop_view');
+
+ let totalHeight = 0;
+
+ // The elements that are *always* fixed/visible, even after the banner scrolls out
+ const persistentElements = [mainHeader, navContainer];
+
+ // Before scrolling, or if the promo banner is still in view
+ if (promoBanner && window.scrollY < promoBanner.offsetHeight) {
+ totalHeight += promoBanner.offsetHeight;
+ }
+
+ // Add the height of the persistent navigation elements
+ persistentElements.forEach(el => {
+ if (el) {
+ totalHeight += el.offsetHeight;
+ }
+ });
+
+ return totalHeight;
+}
+
+let promoBelowHeaderOnSignIn = null; // null = not calculated yet
+
+function isPromoBelowHeaderOnLoad({ promoBanner, mainHeader }) {
+ if (!promoBanner || !mainHeader) return false;
+
+ const promoRect = promoBanner.getBoundingClientRect();
+ const headerRect = mainHeader.getBoundingClientRect();
+
+ const promoTopDoc = promoRect.top + window.scrollY;
+ const headerBottomDoc = headerRect.bottom + window.scrollY;
+
+ // "Below" = promo's top is at or below header's bottom
+ return promoTopDoc >= headerBottomDoc;
+}
+
+function getTotalNavHeightforSignIn() {
+ const promoBanner = document.querySelector('.promo-banner');
+ const mainHeader = document.querySelector('.g3p-main-nav-header');
+ let totalHeight = 0;
+
+ // Decide once per page load whether promo is *below* the header
+ if (promoBelowHeaderOnSignIn === null && promoBanner && mainHeader) {
+ promoBelowHeaderOnSignIn = isPromoBelowHeaderOnLoad({
+ promoBanner,
+ mainHeader,
+ });
+ }
+
+ // Only include promo height if it is NOT below the header
+ // i.e., promo is above the nav area (your screenshot case).
+ if (!promoBelowHeaderOnSignIn && promoBanner && window.scrollY < promoBanner.offsetHeight) {
+ totalHeight += promoBanner.offsetHeight;
+ }
+
+ // Add header + nav container (both are part of the sticky nav stack)
+ if (mainHeader) {
+ totalHeight += mainHeader.offsetHeight;
+ }
+
+ return totalHeight;
+}
+
+window.addEventListener('scroll', () => {
+ const newHeight = getTotalNavHeight();
+ document.documentElement.style.setProperty('--nav-height', `${newHeight}px`);
+});
+
+// Function to update the padding or CSS variable
+function updateNavHeightForSignIn() {
+ const newHeight = getTotalNavHeightforSignIn();
+ document.documentElement.style.setProperty('--nav-sign-in-height', `${newHeight}px`);
+}
+
+// Attach the listener
+window.addEventListener('scroll', updateNavHeightForSignIn);
+updateNavHeightForSignIn();
+const initialHeight = getTotalNavHeight();
+document.documentElement.style.setProperty('--nav-height', `${initialHeight}px`);
+
+// Function to toggle the dropdown panel
+function toggleDropdown(event) {
+ event.stopPropagation();
+
+ // Toggle dropdown visibility
+ if (getStartedModal.classList.contains("hidden") === false) {
+ signInOverlay.classList.add("hidden");
+ }
+
+ getStartedModal.classList.add("hidden");
+ toggleButton.classList.remove("active");
+ signInOverlay.classList.toggle("hidden");
+ closeAllModals();
+ const bannerHeight = document.querySelector('.promo-banner__container.is-visible')
+ ?.getBoundingClientRect().height || 0;
+ signInOverlay.style.top = getTotalNavHeightforSignIn() + bannerHeight + 'px';
+ navButtons.forEach((button) => button.classList.remove("active"));
+
+ // Hide search results
+ searchResultsDiv.style.display = 'none';
+ mobileSearchResultsDiv.style.display = 'none';
+
+ // Add border radius styles
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container')
+ .css({ 'border-bottom-left-radius': '20px', 'border-bottom-right-radius': '20px' });
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container')
+ .css({ 'border-bottom': '1px solid #130f25' });
+
+
+ const isFirefox = navigator.userAgent.toLowerCase().includes("firefox");
+ if (focusableElements.length > 0 && !isFirefox) {
+ focusableElements[0].focus(); // Focus the first focusable element in the modal
+ }
+
+}
+
+// Event listener for click
+signinWrapper.addEventListener("click", function (event) {
+ if (event.target.classList.contains("g3p-signin-text") || event.target.tagName === 'svg' || event.target.tagName === 'path') toggleDropdown(event);
+});
+
+// Event listener for keydown
+signinWrapper.addEventListener("keydown", function (event) {
+ // Check if the Enter key is pressed
+ if (event.key === "Enter") {
+ toggleDropdown(event);
+ }
+});
+
+signInOverlay.addEventListener("click", function (event) {
+ signInOverlay.classList.add("hidden");
+});
+
+document.addEventListener('click', function (event) {
+ if (overlay.classList.contains('show') && event.target.id !== 'getStartedMobile' && event.target.textContent !== 'View plans') {
+ modal.classList.remove("show");
+ overlay.classList.remove("show");
+ getStartedMobileBtn.classList.remove("rotated");
+ }
+
+ // Check if the div is visible
+ if (searchResultsDiv.style.display === 'block' || mobileSearchResultsDiv.style.display === 'block') {
+ // Check if the click is outside the div
+ if (!$searchInput1.hasClass(event.target.classList.value) && window.innerWidth > 1248) {
+ searchResultsDiv.style.display = 'none';
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom-left-radius', '20px');
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom-right-radius', '20px');
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom', '1px solid #130f25');
+ searchText.value = "";
+ }
+ else if (!$mobileSearchInput.hasClass(event.target.classList.value) && window.innerWidth <= 1248) {
+
+ overlay.classList.remove("show");
+ mobileSearchResultsDiv.style.display = 'none';
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom-left-radius', '20px');
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom-right-radius', '20px');
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom', '1px solid #130f25');
+ mobileSearchText.value = "";
+ }
+ }
+ if (event.target.classList.contains('header_search--input') || event.target.classList.contains('g3p-main-nav-header')) {
+ signInOverlay.classList.add("hidden");
+ }
+
+ if (window.innerWidth < 640 && event.target.classList.contains('g3p-mobile-get-started')) {
+ overlay.classList.toggle("show");
+ }
+
+});
+
+const searchResultsContainer = document.querySelector('#header-search-results-all');
+const mobileSearchResultsContainer = document.querySelector('#mobile_header-search-results-all');
+
+if (searchResultsContainer || mobileSearchResultsContainer) {
+ const observer = new MutationObserver(() => {
+ const resultList = searchResultsContainer.querySelector('ul.header_dropdown--lists');
+ const mobileResultList = mobileSearchResultsContainer.querySelector('ul.header_dropdown--lists');
+ if (resultList || mobileResultList) {
+ searchResultsContainer.style.display = 'block !important';
+ mobileSearchResultsContainer.style.display = 'block !important';
+ } else {
+ searchResultsContainer.style.display = 'none';
+ mobileSearchResultsContainer.style.display = 'none';
+ }
+ });
+
+ if (searchResultsContainer) {
+ observer.observe(searchResultsContainer, { childList: true, subtree: true });
+ }
+ if (mobileSearchResultsContainer) {
+ observer.observe(mobileSearchResultsContainer, { childList: true, subtree: true });
+ }
+}
+
+
+$globalNav.each(function () {
+
+ /************
+ SEARCH
+ ***********/
+
+ function searchTermKeyUpHandler(e) {
+ if (e.which === '27') {//escape
+ e.preventDefault();
+ hideSearchResultPopup();
+ } else if (e.which === '40') {// down
+ e.preventDefault();
+ selectTerm();
+ } else if (e.which === '38') {//up
+ e.preventDefault();
+ selectTerm(true);
+ } else if (e.which === '13') {//enter - use highlighted option if available, otherwise use search text
+
+ } else {
+ if (timer) {
+ clearTimeout(timer); // clear the timer as keys are still entered
+ }
+
+ if ($searchInput1 || $mobileSearchInput) {
+ searchTerm = $searchInput1.val().trim();
+ if (window.innerWidth <= 1024) {
+ searchTerm = $mobileSearchInput.val().trim();
+ }
+ }
+
+ //DOES SEARCH CONTAIN COLON SYMBOL
+ if (searchTerm.includes(':')) {
+ searchTerm = searchTerm.replaceAll(':', ' ').replaceAll(/\s\s+/g, ' ').trim(); // RegEx: replace all spacing, tabs, new lines etc to one space.
+ }
+
+ timer = setTimeout(function () {
+ if (searchTerm !== undefined) {
+ let term = jQuery.trim(searchTerm);
+ if (term.length >= minChars) {
+ search();
+ } else if (term.length < minChars) {
+ clearResults();
+ }
+ }
+ }, 350);
+ }
+
+ //watch for users clicking on suggested search term - still need to pass referring page to Cludo.
+ jQuery(document).off('click.psUnifiedNav');
+ jQuery(document).on('click.psUnifiedNav', '.header_dropdown--resultInfo a', function () {
+ let refurl = window.location.hostname + "" + window.location.pathname;
+ //Cookies.set("header_search_origin", refurl, { expires: 1, path: '/' }); //save current page URL to send in with search analytics on the search page.
+ //Cookies.set("header_search_origin_title", pageTitle, { expires: 1, path: '/' }); //save current page URL to send in with search analytics on the search page.
+ }
+ );
+
+ function selectTerm(prev) {
+ let $selectedTerm = jQuery('.nav-search-result .header_dropdown--resultInfo.selected');
+ if ($selectedTerm.length) {
+ let $selectedTermSibling = (prev ? $selectedTerm.prev() : $selectedTerm.next());
+
+ if ($selectedTermSibling.length) {
+ $selectedTerm.removeClass('selected');
+ $selectedTermSibling.addClass('selected');
+ }
+ } else {
+ if (prev) {
+ $resultsTarget1.find('.header_dropdown--resultInfo').last().addClass('selected');
+ } else {
+ $resultsTarget1.find('.header_dropdown--resultInfo').first().addClass('selected');
+ }
+ }
+ }
+ }
+
+ function searchTermKeyDownHandler(e) { //stop jitters from happening
+ if (e.which === '40') {// down
+ e.preventDefault();
+ } else if (e.which === '38') {//up
+ e.preventDefault();
+ }
+ }
+
+ function handleSearch() {
+ let $selectedTermAnchor = $resultsTarget1.find('.header_dropdown--resultInfo.selected a');
+ if ($selectedTermAnchor.length) {
+ $selectedTermAnchor[0].click();
+ } else {
+ let refurl = window.location.hostname + "" + window.location.pathname;
+ //Cookies.set("header_search_origin", refurl, { expires: 1, path: '/' }); //save current page URL to send in with search analytics on the search page.
+ let refpt = document.title;
+ //Cookies.set("header_search_origin", refpt, { expires: 1, path: '/' }); //save current page URL to send in with search analytics on the search page.
+
+ searchTerm = $searchInput1.val().trim();
+ if (window.innerWidth <= 1024) {
+ searchTerm = $mobileSearchInput.val().trim();
+ }
+ if (!window.quickLinkHandled) {
+ let encodedSearchTerm = encodeURIComponent(searchTerm);
+ if (searchTerm === "") {
+ encodedSearchTerm = "*";
+ }
+ window.location.href = $headerNav.find(".header_search--url").attr('href') + "?q=" + encodedSearchTerm;
+ }
+ }
+ }
+
+ function clearResults() {
+ $resultsTarget1.html("");
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom-left-radius', '20px');
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom-right-radius', '20px');
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom', '1px solid #130f25');
+ }
+
+ function showSearchResultPopup() {
+ if (!searchOpen) {
+ $searchInput1.focus();
+ $mobileSearchInput.focus();
+ searchOpen = true;
+ window.scrollTo(0, 0);
+ }
+ }
+
+ function hideSearchResultPopup() {
+ if (searchOpen) {
+ clearResults();
+ // $searchInput1.val("");
+ // $mobileSearchInput.val("");
+ searchOpen = false;
+ }
+ }
+
+ function search() {
+ let spaceRegEx = new RegExp('\ ', 'g');
+ //Auto Complete
+ jQuery.ajax({
+ url: 'https://api-us1.cludo.com/api/v3/' + CludoSearch.customerId + '/' + CludoSearch.engineId + '/Autocomplete?text=' + searchTerm.replace(spaceRegEx, "-"),
+ method: "GET",
+ async: true,
+ crossDomain: true,
+ headers: {
+ "Content-Type": "application/json; charset=utf-8",
+ "authorization": "SiteKey " + CludoSearch.getAuthorizationKey()
+ },
+ success: function (data) {
+ // data[0] is the first word result
+ if (data.length > 0) {
+ renderSuggestionResults($resultsTarget1, data);
+ jQuery('#header-search-results-all').css('display', 'block');
+ jQuery('#mobile_header-search-results-all').css('display', 'block');
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom-left-radius', 'unset');
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom-right-radius', 'unset');
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom', 'none');
+ } else {
+ clearResults();
+ jQuery('#header-search-results-all').css('display', 'none');
+ jQuery('#mobile_header-search-results-all').css('display', 'none');
+ }
+ },
+ error: function (xhr, status, error) {
+ }
+ });
+
+ function renderSuggestionResults($resultsTarget1, data) {
+ let html = '<ul class="header_dropdown--lists">';
+ let searchUrl = $headerNav.find(".header_search--url").attr('href');
+ let dashRegEx = new RegExp('\-', 'g');
+ for (let i = 0; i < data.length && i < 5; i++) {
+ html += '<li class="header_dropdown--resultInfo">';
+ html += '<a class="header_dropdown--resultInfoTitle" tabindex="0" ' +
+ 'href="' + searchUrl + '?q=' + data[i].replace(dashRegEx, "%20") + '">' +
+ data[i] + '</a>';
+ html += '</li>';
+ }
+ html += '</ul>';
+ $resultsTarget1.html(html);
+ }
+ }
+
+ /************
+ SEARCH EVENTS
+ ************/
+ $searchInput1.off('keyup.psUnifiedNav');
+ $searchInput1.on('keyup.psUnifiedNav', function (e) {
+ searchTermKeyUpHandler(e);
+ });
+
+ $mobileSearchInput.off('keyup.psUnifiedNav');
+ $mobileSearchInput.on('keyup.psUnifiedNav', function (e) {
+ searchTermKeyUpHandler(e);
+ });
+
+ $searchInput1.off('keydown.psUnifiedNav');
+ $searchInput1.on('keyup.psUnifiedNav', function (e) {
+ searchTermKeyDownHandler(e);
+ });
+
+ $mobileSearchInput.off('keydown.psUnifiedNav');
+ $mobileSearchInput.on('keyup.psUnifiedNav', function (e) {
+ searchTermKeyDownHandler(e);
+ });
+ $searchForm.submit(function (event) {
+ event.stopPropagation();
+ event.preventDefault();
+ handleSearch();
+ });
+ $searchWrapper.off('click.psUnifiedNav');
+
+ if (document.URL.indexOf("www.pluralsight.com") > -1 || document.URL.indexOf("beta.www.pluralsight.com") > -1 || document.URL.indexOf("www-stage.pluralsight.com") > -1 || document.URL.indexOf("beta.www-stage.pluralsight.com") > -1) {
+ jQuery(".ps-nav--search a.header_search--url").attr("href", "/browse"); //This sometimes changes this to an absolute link to http (which gets redirected and breaks the query) and cause is unknown.
+ }
+
+ let pageTitle = document.title; //grab early since chat bot likes to change this.
+
+ //header search popup
+ jQuery(".search-button__component .header_search--form").off('focus.psUnifiedNav input.psUnifiedNav');
+ jQuery(".search-button__component .header_search--form").on('focus.psUnifiedNav input.psUnifiedNav', function (e) {
+ e.preventDefault();
+ let inputValue = jQuery(".header_search--input").val().trim();
+ if (inputValue.length >= 3) {
+ // show popout
+ jQuery(".ps-nav-search #header_tabs--search").css("height", "auto");
+ jQuery(".ps-nav-search #mobile_header_tabs--search").css("height", "auto");
+ showSearchResultPopup();
+ } else if (inputValue.length === 0) {
+ jQuery(".ps-nav-search #header_tabs--search").css("height", "");
+ jQuery(".ps-nav-search #mobile_header_tabs--search").css("height", "");
+ hideSearchResultPopup();
+ }
+ });
+
+
+});
+
+const modals = document.querySelectorAll(".g3p-nav-modal");
+let lastFocusedElement = null;
+
+// Close all modals
+const closeAllModals = () => {
+ $('body').css("overflow", "auto");
+ modals.forEach((modal) => {
+ modal.classList.remove("show");
+ modal.setAttribute("aria-hidden", "true"); // Hide from screen readers
+ if (document.getElementById(`${modal.id.split('NavModal')[0]}NavHeader`)) document.getElementById(`${modal.id.split('NavModal')[0]}NavHeader`).setAttribute('aria-expanded', false);
+ });
+ modalOverlay.classList.remove("active");
+ if (lastFocusedElement) {
+ lastFocusedElement.focus(); // Return focus to the triggering element
+ }
+};
+
+// Open the modal and manage focus
+const openModal = (button, modal) => {
+ const buttonRect = button.getBoundingClientRect();
+ const modalTop = window.scrollY === 0 ? buttonRect.bottom + window.scrollY : 131;
+ const modalLeft = buttonRect.left + window.scrollX; // Align with button
+ signInOverlay.classList.add("hidden");
+ modal.style.top = `${modalTop}px`;
+ modal.style.left = `${modalLeft}px`;
+ modal.classList.add("show");
+ modal.setAttribute("aria-hidden", "false"); // Make visible to screen readers
+ modalOverlay.style.top = `${modalTop}px`;
+ modalOverlay.classList.add("active");
+ getStartedModal.classList.add('hidden');
+ toggleButton.classList.remove("active");
+ searchResultsDiv.style.display = 'none';
+ mobileSearchResultsDiv.style.display = 'none';
+ button.setAttribute('aria-expanded', true);
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom-left-radius', '20px');
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom-right-radius', '20px');
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom', '1px solid #130f25');
+ $('body').css("overflow", "hidden");
+
+ // Focus on the modal
+ const focusableElements = modal.querySelectorAll(
+ "button, [href], input, select, textarea, [tabindex]:not([tabindex='-1'])"
+ );
+ if (focusableElements.length > 0) {
+ focusableElements[0].focus(); // Focus the first focusable element in the modal
+ }
+ trapFocus(modal, button); // Pass the triggering button
+};
+
+const trapFocus = (modal, triggerButton) => {
+ const focusableSelectors = [
+ "button",
+ "[href]",
+ "input",
+ "select",
+ "textarea",
+ "[tabindex]:not([tabindex='-1'])",
+ ];
+ const focusableElements = modal.querySelectorAll(focusableSelectors.join(","));
+ const firstElement = focusableElements[0];
+ const lastElement = focusableElements[focusableElements.length - 1];
+ const navButtons = Array.from(document.querySelectorAll(".g3p-main-nav__btn"));
+ const currentButtonIndex = navButtons.indexOf(triggerButton);
+
+ modal.addEventListener("keydown", (event) => {
+ if (event.key === "Tab") {
+ if (event.shiftKey && document.activeElement === firstElement) {
+ // Shift+Tab on the first element
+ event.preventDefault();
+ if (currentButtonIndex > 0) {
+ navButtons[currentButtonIndex].focus();
+ closeAllModals(); // Close the modal when focus moves out
+ navButtons.forEach((btn) => btn.classList.remove("active"));
+ } else if (currentButtonIndex === 0) {
+ closeAllModals();
+ navButtons[currentButtonIndex].focus();
+ navButtons.forEach((btn) => btn.classList.remove("active"));
+ } else {
+ lastElement.focus(); // Stay on the modal's last element
+ }
+ } else if (!event.shiftKey && document.activeElement === lastElement) {
+ // Tab on the last element
+ event.preventDefault();
+
+ if (currentButtonIndex < navButtons.length - 1) {
+ navButtons[currentButtonIndex].focus();
+ closeAllModals(); // Close the modal when focus moves out
+ navButtons.forEach((btn) => btn.classList.remove("active"));
+ } else if (currentButtonIndex === 4) {
+ closeAllModals();
+ navButtons[currentButtonIndex].focus();
+ navButtons.forEach((btn) => btn.classList.remove("active"));
+ }
+ }
+ } else if (event.key === "Escape") {
+ closeAllModals(); // Close the modal on Escape
+ navButtons.forEach((btn) => btn.classList.remove("active"));
+ }
+ });
+};
+
+// Event listener for navigation buttons
+navButtons.forEach((button) => {
+ button.addEventListener("click", (event) => {
+ event.preventDefault();
+ event.stopPropagation();
+ const isActive = button.classList.contains("active");
+ const modalId = button.id.replace("Header", "Modal");
+ const modal = document.getElementById(modalId);
+ navButtons.forEach((btn) => btn.classList.remove("active"));
+ if (!isActive) {
+ button.classList.add("active");
+ }
+
+ if (modal.classList.contains("show")) {
+ closeAllModals(); // Close if already open
+ } else {
+ closeAllModals();
+ openModal(button, modal);
+ }
+ });
+
+ // Listen for clicks outside any modal to close them
+ document.addEventListener('click', function (event) {
+ const modals = document.querySelectorAll('.g3p-nav-modal');
+ const currentTarget = event.target;
+ let clickedInsideModal = false;
+ event.stopPropagation();
+ // Check if the click is inside any modal
+ modals.forEach(modal => {
+ if (currentTarget.contains(modal)) {
+ clickedInsideModal = true; // Clicked inside a modal
+ }
+ });
+
+ // Close all modals if the click is outside all modals
+ if (!clickedInsideModal) {
+ closeAllModals(); // Close all modals if click is outside
+ navButtons.forEach((btn) => btn.classList.remove("active"));
+ }
+ });
+
+
+ // Add keyboard accessibility to buttons
+ button.addEventListener("keydown", (event) => {
+ if (event.key === "Enter" || event.key === " ") {
+ event.preventDefault();
+ button.click();
+ }
+ });
+});
+
+// Close modals when clicking outside
+modalOverlay.addEventListener("click", () => {
+ closeAllModals();
+});
+
+// Prevent modal clicks from propagating to the document
+modals.forEach((modal) => {
+ modal.addEventListener("click", (event) => {
+ event.stopPropagation();
+ });
+});
+
+// Close modals on Escape key press globally
+document.addEventListener("keydown", (event) => {
+ if (event.key === "Escape") {
+ closeAllModals();
+ }
+});
+
+toggleButton.addEventListener("click", function (event) {
+ // includeNavInHeight = !includeNavInHeight;
+ this.classList.toggle("active");
+ getStartedModal.classList.toggle("hidden");
+ signInOverlay.classList.toggle("hidden");
+ const bannerHeight = document.querySelector('.promo-banner__container.is-visible')
+ ?.getBoundingClientRect().height || 0;
+ signInOverlay.style.top = getTotalNavHeight() + bannerHeight + 'px';
+ closeAllModals();
+ navButtons.forEach((button) => button.classList.remove("active"));
+ if (!getStartedModal.classList.contains("hidden")) {
+ $("body").css("overflow", "hidden");
+ } else {
+ $("body").css("overflow", "auto");
+ }
+ event.stopPropagation();
+ searchResultsDiv.style.display = 'none';
+ mobileSearchResultsDiv.style.display = 'none';
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom-left-radius', '20px');
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom-right-radius', '20px');
+ jQuery('.header_tabs_content--container.g3p_header_tabs_content--container').css('border-bottom', '1px solid #130f25');
+ const focusableElements = getStartedModal.querySelectorAll(
+ "[href]"
+ );
+ if (focusableElements.length > 0) {
+ focusableElements[0].focus(); // Focus the first focusable element in the modal
+ }
+});
+
+// Close modal on focus out using Tab key
+getStartedModal.addEventListener("keydown", function (event) {
+ if (event.key === "Tab") {
+ const focusableElements = getStartedModal.querySelectorAll(
+ "a, button, input, textarea, select"
+ );
+ const firstElement = focusableElements[0];
+ const lastElement = focusableElements[focusableElements.length - 1];
+
+ if (!event.shiftKey && document.activeElement === lastElement) {
+ event.preventDefault();
+ toggleButton.focus(); // Move focus to button and close modal
+ closeGetStartedModal();
+ } else if (event.shiftKey && document.activeElement === firstElement) {
+ event.preventDefault();
+ toggleButton.focus();
+ closeGetStartedModal();
+ }
+ } else if (event.key === 'Escape') {
+ event.preventDefault();
+ toggleButton.focus(); // Move focus to button and close modal
+ closeGetStartedModal();
+ }
+});
+
+// Function to close all modals
+function closeGetStartedModal() {
+ getStartedModal.classList.add("hidden");
+ toggleButton.classList.remove("active");
+ signInOverlay.classList.add("hidden");
+ $("body").css("overflow", "auto");
+
+}
+
+document.addEventListener("click", (e) => {
+ if (!getStartedModal.classList.contains("hidden") && !((getStartedModal.id == e.target.parentElement.id) || e.target.parentElement.classList.contains('get-started__icon'))) {
+ getStartedModal.classList.add("hidden");
+ toggleButton.classList.toggle("active");
+ $("body").css("overflow", "auto");
+ }
+});
+
+//Mobile view code
+const ham = menuIcon.querySelector('.icon-ham');
+const closeIco = menuIcon.querySelector('.icon-close');
+
+menuIcon.addEventListener('click', function () {
+ const isOpen = menuIcon.getAttribute('aria-expanded') === 'true';
+ const willOpen = !isOpen;
+
+ // a11y state
+ menuIcon.setAttribute('aria-expanded', String(willOpen));
+ menuIcon.setAttribute('aria-label', willOpen ? 'Close menu' : 'Open menu');
+
+ // swap icons (use ONE method: CSS class)
+ ham.classList.toggle('is-hidden', willOpen); // opening → hide hamburger
+ closeIco.classList.toggle('is-hidden', !willOpen);
+
+ if (willOpen) {
+ // OPEN
+ menuIcon.setAttribute("aria-expanded", "true");
+ menuIcon.setAttribute("aria-label", "Close menu");
+ if (ham) ham.hidden = true;
+ if (closeIco) closeIco.hidden = false;
+
+ mainModal?.classList.remove("hidden");
+
+ if (window.innerWidth < 768) {
+ const contentEl = document.getElementById("content") || document.querySelector("main.container.responsivegrid");
+ contentEl?.classList.add("hidden");
+ document.querySelector(".ps-footer")?.classList.add("hidden");
+ const mobileContainer = document.querySelector(".g3p-nav-mobile--container.g3p-nav-mobile_view");
+ if (mobileContainer) mobileContainer.style.minHeight = "100vh";
+ }
+ if (window.innerWidth < 1249) {
+ mainOverlay?.classList.remove("hidden");
+ }
+ if (window.innerWidth > 767 && window.innerWidth < 1249) {
+ document.body.classList.add("add--no__scroll");
+ }
+
+ } else {
+ // CLOSE
+ menuIcon.setAttribute("aria-expanded", "false");
+ menuIcon.setAttribute("aria-label", "Open menu");
+ if (closeIco) closeIco.hidden = true;
+ if (ham) ham.hidden = false;
+
+ mainModal?.classList.add("hidden");
+
+ const contentEl = document.getElementById("content") || document.querySelector("main.container.responsivegrid");
+ contentEl?.classList.remove("hidden");
+ document.querySelector(".ps-footer")?.classList.remove("hidden");
+ const mobileContainer = document.querySelector(".g3p-nav-mobile--container.g3p-nav-mobile_view");
+ if (mobileContainer) mobileContainer.style.minHeight = "0";
+ mainOverlay?.classList.add("hidden");
+
+ if (window.innerWidth > 767 && window.innerWidth < 1249) {
+ document.body.classList.remove("add--no__scroll");
+ }
+ }
+});
+
+document.addEventListener("DOMContentLoaded", function () {
+ const targetEls = document.querySelectorAll(".free-form-component");
+ const menuIcon = document.querySelector("#menuIcon");
+ const promoEl = document.querySelector(".promo-container");
+ let scrollHandlerAttached = false;
+
+ function updateNavClasses(el) {
+ const mainNavHeader = el.querySelector(".g3p-main-nav-header");
+ if (!mainNavHeader || window.innerWidth >= 1248) return;
+
+ if (promoEl) {
+ const position = promoEl.compareDocumentPosition(el);
+ if (position & Node.DOCUMENT_POSITION_FOLLOWING) {
+ el.classList.toggle("has-g3p-nav__top__promo__scroll", window.scrollY > 88);
+ el.classList.remove("has-g3p-nav");
+ } else {
+ el.classList.add("has-g3p-nav");
+ el.classList.remove("has-g3p-nav__top__promo__scroll");
+ }
+ } else {
+ el.classList.add("has-g3p-nav");
+ document.body.classList.add("nav-height--margin");
+ }
+ }
+
+ function applyScrollClasses() {
+ targetEls.forEach(updateNavClasses);
+ }
+
+ function clearAllNavClasses() {
+ targetEls.forEach(el => {
+ el.classList.remove("has-g3p-nav", "has-g3p-nav__top__promo__scroll");
+ });
+ }
+
+ function toggleMobileHeaderClass(addClass) {
+ targetEls.forEach(el => {
+ const mobileHeader = el.querySelector(".g3p-nav-mobile-header");
+ if (mobileHeader && window.innerWidth < 1248) {
+ mobileHeader.classList.toggle("mobile-tab-position--fixed", addClass);
+ }
+ });
+ }
+
+ function addScrollHandler() {
+ if (!scrollHandlerAttached) {
+ window.addEventListener("scroll", applyScrollClasses);
+ scrollHandlerAttached = true;
+ }
+ }
+
+ function removeScrollHandler() {
+ if (scrollHandlerAttached) {
+ window.removeEventListener("scroll", applyScrollClasses);
+ scrollHandlerAttached = false;
+ }
+ }
+
+ // Initial setup
+ applyScrollClasses();
+ addScrollHandler();
+
+ // Toggle behavior based on menu state via aria-expanded (no src sniffing)
+ menuIcon?.addEventListener("click", function () {
+ const isOpen = menuIcon.getAttribute("aria-expanded") === "true";
+
+ if (isOpen) {
+ // menu just opened
+ toggleMobileHeaderClass(true);
+ removeScrollHandler();
+ clearAllNavClasses();
+ document.body.classList.remove("nav-height--margin");
+ } else {
+ // menu just closed
+ toggleMobileHeaderClass(false);
+ applyScrollClasses();
+ addScrollHandler();
+ }
+ });
+});
+
+// Group related elements in an array of objects
+const mobileNavItems = [
+ {
+ nav: "individualMobileNav",
+ options: "individualNavMobileOptions",
+ chevron: "individualMobileChevron",
+ darkBg: "individualMobileMain",
+ },
+ {
+ nav: "businessesMobileNav",
+ options: "businessesNavMobileOptions",
+ chevron: "businessesMobileChevron",
+ darkBg: "businessesMobileMain",
+ },
+ {
+ nav: "publicSectorMobileNav",
+ options: "publicSectorNavMobileOptions",
+ chevron: "publicSectorMobileChevron",
+ darkBg: "publicSectorMobileMain",
+ },
+ {
+ nav: "coursesMobileNav",
+ options: "coursesNavMobileOptions",
+ chevron: "coursesMobileChevron",
+ darkBg: "coursesMobileMain",
+ },
+ {
+ nav: "resourcesMobileNav",
+ options: "resourcesNavMobileOptions",
+ chevron: "resourcesMobileChevron",
+ darkBg: "resourcesMobileMain",
+ },
+];
+
+// Generic toggle handler
+const toggleNavItem = ({ nav, options, chevron, darkBg }) => {
+ const navElement = document.getElementById(nav);
+ const optionsElement = document.getElementById(options);
+ const chevronElement = document.getElementById(chevron);
+ const darkBgElement = document.getElementById(darkBg);
+
+ navElement.addEventListener("click", (event) => {
+ event.preventDefault(); // Prevent default link behavior
+ chevronElement.classList.toggle("rotated");
+ darkBgElement.classList.toggle("g3p-header--focused_bg");
+ navElement.classList.toggle("g3p-header--focused_border");
+ optionsElement.classList.toggle("hidden");
+ });
+};
+
+// Loop through the items and attach event listeners
+mobileNavItems.forEach(toggleNavItem);
+
+
+
+// Open modal
+getStartedButton.addEventListener("click", () => {
+ const navMobileHeader = document.querySelector(".g3p-nav-mobile-header");
+ event.preventDefault();
+ modal.classList.toggle("show");
+ overlay.classList.toggle("show");
+ getStartedMobileBtn.classList.toggle("rotated");
+ if (window.innerWidth <= 1248) {
+ bottomNavButtons.style.zIndex = "99";
+ }
+ if (window.innerWidth < 640) {
+ navMobileHeader.classList.toggle("removed");
+ }
+});
+
+const inputField = document.querySelector(".mobile_header_search--input");
+// const desktopInputField =
+let iconContainer = inputField.closest(".header_search--form").querySelector("svg");
+
+// Define paths for the icons
+const backArrowPath = "/content/dam/ps-nav-assets/g3p-nav-updates/backArrow.png";
+
+// Store the original SVG for toggling back if needed
+const originalSVG = iconContainer.outerHTML;
+
+// Function to clear results and reset the UI
+function mobileClearResults() {
+ inputField.value = ""; // Clear the input field
+
+ // Replace the back arrow (image) with the original SVG (search icon)
+ const imgElement = inputField.closest(".header_search--form").querySelector("img");
+ if (imgElement) {
+ imgElement.outerHTML = originalSVG;
+ iconContainer = inputField.closest(".header_search--form").querySelector("svg"); // Reassign the SVG container
+ }
+
+ // Additional logic (e.g., hiding search results)
+ const searchResults = document.querySelector("#mobile_header-search-results-all");
+ if (searchResults) {
+ searchResults.style.display = "none"; // Hide search results if present
+ }
+}
+
+inputField.addEventListener("input", function () {
+ if (inputField.value.trim().length > 0) {
+ // Replace the SVG (search icon) with the back arrow (image)
+ iconContainer.outerHTML = `<img src="${backArrowPath}" alt="Back Arrow" id="backArrow" style="cursor: pointer;">`;
+
+ // Reassign iconContainer to point to the newly created <img> element
+ const backArrow = inputField.closest(".header_search--form").querySelector("img");
+
+ // Add click event listener to the back arrow
+ backArrow.addEventListener("click", mobileClearResults);
+ mobileSearchText.addEventListener('focus', mobileClearResults);
+ } else {
+ // Restore the SVG (search icon)
+ const imgElement = inputField.closest(".header_search--form").querySelector("img");
+ if (imgElement) {
+ imgElement.outerHTML = originalSVG;
+ iconContainer = inputField.closest(".header_search--form").querySelector("svg"); // Reassign the SVG container
+ }
+ }
+});
+
+searchText.addEventListener('focus', function () {
+ this.placeholder = ''; // Clear the placeholder
+});
+mobileSearchText.addEventListener('focus', function () {
+ this.placeholder = ''; // Clear the placeholder
+});
+
+searchText.addEventListener('blur', function () {
+ this.placeholder = 'What do you want to learn?'; // Clear the placeholder
+});
+mobileSearchText.addEventListener('blur', function () {
+ this.placeholder = 'What do you want to learn?'; // Clear the placeholder
+});
+function openContactSalesModal(modal) {
+ modal.showModal();
+};
+closeModalButton.forEach((button) => button.addEventListener(`click`, () => {
+ closeModal(button);
+}))
+function closeModal(closeModalButton) {
+ let closestModal = closeModalButton.closest('dialog');
+ closestModal.close();
+}
+function updateAnalytics(linkContainer, linkText, linkUrl) {
+ window.appEventData = window.appEventData || [];
+ appEventData.push({
+ "event": "Navigation Link Clicked",
+ "linkInfo": {
+ "linkContainer": linkContainer,
+ "linkPage": linkPageVal,
+ "linkDestination": linkUrl,
+ "linkId": linkText,
+ "linkRegion": "top nav - Main nav"
+ }
+ });
+}
+
+document.querySelectorAll(".free-form-component").forEach((el) => {
+ const isPromoExist = document.querySelector('.promo-container');
+ const childNodes = el.children;
+
+
+ if (childNodes.length > 0 && window.innerWidth > 1248) {
+
+ Object.values(childNodes).forEach(value => {
+ if (value.className === 'g3p-main-nav-header') {
+ if (isPromoExist && el) {
+ const position = isPromoExist.compareDocumentPosition(el);
+ if (position & Node.DOCUMENT_POSITION_FOLLOWING) {
+ window.addEventListener("scroll", function () {
+ if (window.scrollY > 50) {
+ document.body.classList.add('nav-height--margin');
+ el.classList.add('has-g3p-nav__top__promo__scroll');
+ } else {
+ document.body.classList.remove('nav-height--margin');
+ el.classList.remove('has-g3p-nav__top__promo__scroll');
+ el.classList.remove('has-g3p-nav');
+ }
+ });
+ }
+ } else {
+ document.body.classList.add('nav-height--margin');
+ el.classList.add('has-g3p-nav');
+ }
+ }
+ });
+ }
+});
+
+window.addEventListener("pageshow", () => {
+ const inputField = document.querySelector(".mobile_header_search--input");
+ const iconContainerWrapper = inputField.closest(".header_search--form");
+ document.addEventListener("click", function (e) {
+ const backArrow = iconContainerWrapper.querySelector("img#backArrow");
+ if (backArrow) {
+ backArrow.outerHTML = originalSVG;
+ iconContainer = iconContainerWrapper.querySelector("svg");
+ }
+ });
+
+ // Handle Enter key (desktop + mobile)
+ inputField.addEventListener("keydown", function (e) {
+ if (e.key === "Enter") {
+ const backArrow = iconContainerWrapper.querySelector("img#backArrow");
+ if (backArrow) {
+ backArrow.outerHTML = originalSVG;
+ iconContainer = iconContainerWrapper.querySelector("svg");
+ }
+ }
+ });
+ // If input is empty and back arrow is present, reset to original SVG
+ if (inputField.value.trim() === "") {
+ const backArrow = iconContainerWrapper.querySelector("img#backArrow");
+ if (backArrow) {
+ backArrow.outerHTML = originalSVG;
+
+ // Reassign iconContainer back to the SVG
+ iconContainer = iconContainerWrapper.querySelector("svg");
+ }
+ }
+});
+ </script>
+
+</div>
+
+
+</div>
+
+ </div>
+
+
+</div>
+
+
+</div>
+<main class="container responsivegrid aem-GridColumn aem-GridColumn--default--12">
+
+
+ <div id="container-50d8b1f807" class="cmp-container">
+
+
+
+<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
+
+
+ <div class="course-hero">
+ <div class="course-hero main">
+ <div class="course-detail-hero-container flex-row">
+ <div class="course-hero-container course-column flex-2">
+ <div id="course-hero">
+ <div class="course-info">
+ <ul class="flex-row g3p_course-info">
+ <li class="course-type-list type-course">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
+ <path d="M11.504 10.5279L14.7214 8.36704C15.023 8.16603 15.1739 7.88964 15.1739 7.53787C15.1739 7.18611 15.023 6.90972 14.7214 6.70871L11.504 4.54785C11.1688 4.31334 10.8253 4.29659 10.4734 4.4976C10.1215 4.69861 9.94554 5.00012 9.94554 5.40214V9.67361C9.94554 10.0756 10.1215 10.3771 10.4734 10.5781C10.8253 10.7792 11.1688 10.7624 11.504 10.5279ZM3.61123 19.9754C3.05823 20.0591 2.5597 19.9293 2.11563 19.5859C1.67155 19.2425 1.416 18.7944 1.34897 18.2417L0.0167574 7.26149C-0.0502723 6.70871 0.0837872 6.21456 0.418936 5.77904C0.754085 5.34352 1.19816 5.09225 1.75115 5.02525L2.90742 4.87449V13.0656C2.90742 14.1712 3.30121 15.1176 4.08881 15.9049C4.87641 16.6922 5.82321 17.0858 6.9292 17.0858H16.2799C16.1793 17.4879 15.9782 17.8354 15.6766 18.1286C15.3749 18.4217 15.0063 18.5934 14.5706 18.6437L3.61123 19.9754ZM6.9292 15.0757C6.3762 15.0757 5.90281 14.8789 5.50901 14.4853C5.11521 14.0916 4.91831 13.6184 4.91831 13.0656V2.0101C4.91831 1.45732 5.11521 0.984111 5.50901 0.590467C5.90281 0.196822 6.3762 0 6.9292 0H17.9891C18.5421 0 19.0155 0.196822 19.4093 0.590467C19.8031 0.984111 20 1.45732 20 2.0101V13.0656C20 13.6184 19.8031 14.0916 19.4093 14.4853C19.0155 14.8789 18.5421 15.0757 17.9891 15.0757H6.9292Z" fill="#FF1675"/>
+</svg>
+ <span>Course</span>
+ </li>
+ </ul>
+ <h1>Clojure Fundamentals - Part 1</h1>
+ <p>Learn functional programming with Clojure.</p>
+ <div class="course-mini-info">
+ <div class="course-mini-row">
+ <div class="course-mini-row-data">
+
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_4461_6396)">
+<path d="M6.48564 20.4805C5.97881 20.4805 5.54798 20.3031 5.19314 19.9482C4.83814 19.5932 4.66064 19.1623 4.66064 18.6555V16.7577C4.66064 16.2507 4.83814 15.8198 5.19314 15.465C5.54798 15.1101 5.97881 14.9327 6.48564 14.9327C6.99264 14.9327 7.42356 15.1101 7.7784 15.465C8.1334 15.8198 8.31089 16.2507 8.31089 16.7577V18.6555C8.31089 19.1623 8.1334 19.5932 7.7784 19.9482C7.42356 20.3031 6.99264 20.4805 6.48564 20.4805ZM12.5706 20.4805C12.0636 20.4805 11.6327 20.3031 11.2779 19.9482C10.9231 19.5932 10.7456 19.1623 10.7456 18.6555V11.7577C10.7456 11.2507 10.9231 10.8198 11.2779 10.465C11.6327 10.1101 12.0636 9.93272 12.5706 9.93272C13.0775 9.93272 13.5084 10.1101 13.8634 10.465C14.2182 10.8198 14.3956 11.2507 14.3956 11.7577V18.6555C14.3956 19.1623 14.2182 19.5932 13.8634 19.9482C13.5084 20.3031 13.0775 20.4805 12.5706 20.4805ZM18.6554 20.4805C18.1484 20.4805 17.7175 20.3031 17.3626 19.9482C17.0078 19.5932 16.8304 19.1623 16.8304 18.6555V5.34447C16.8304 4.83764 17.0078 4.40672 17.3626 4.05172C17.7175 3.69689 18.1484 3.51947 18.6554 3.51947C19.1622 3.51947 19.5931 3.69689 19.9481 4.05172C20.303 4.40672 20.4804 4.83764 20.4804 5.34447V18.6555C20.4804 19.1623 20.303 19.5932 19.9481 19.9482C19.5931 20.3031 19.1622 20.4805 18.6554 20.4805Z" fill="#A5A5A5"/>
+<path d="M6.48564 20.4805C5.97881 20.4805 5.54798 20.3031 5.19314 19.9482C4.83814 19.5932 4.66064 19.1623 4.66064 18.6555V16.7577C4.66064 16.2507 4.83814 15.8198 5.19314 15.465C5.54798 15.1102 5.97881 14.9327 6.48564 14.9327C6.99264 14.9327 7.42356 15.1102 7.7784 15.465C8.1334 15.8198 8.31089 16.2507 8.31089 16.7577V18.6555C8.31089 19.1623 8.1334 19.5932 7.7784 19.9482C7.42356 20.3031 6.99264 20.4805 6.48564 20.4805ZM12.5706 20.4805C12.0636 20.4805 11.6327 20.3031 11.2779 19.9482C10.9231 19.5932 10.7456 19.1623 10.7456 18.6555V11.7577C10.7456 11.2507 10.9231 10.8198 11.2779 10.465C11.6327 10.1102 12.0636 9.93274 12.5706 9.93274C13.0775 9.93274 13.5084 10.1102 13.8634 10.465C14.2182 10.8198 14.3956 11.2507 14.3956 11.7577V18.6555C14.3956 19.1623 14.2182 19.5932 13.8634 19.9482C13.5084 20.3031 13.0775 20.4805 12.5706 20.4805Z" fill="#FF1675"/>
+</g>
+<defs>
+<clipPath id="clip0_4461_6396">
+<rect width="24" height="24" fill="white"/>
+</clipPath>
+</defs>
+</svg>
+
+ <span>Intermediate</span>
+ </div>
+ <div class="course-mini-row-data">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
+ <path d="M11 9.6V6C11 5.71667 10.9042 5.47917 10.7125 5.2875C10.5208 5.09583 10.2833 5 10 5C9.71667 5 9.47917 5.09583 9.2875 5.2875C9.09583 5.47917 9 5.71667 9 6V9.975C9 10.1083 9.025 10.2375 9.075 10.3625C9.125 10.4875 9.2 10.6 9.3 10.7L12.6 14C12.7833 14.1833 13.0167 14.275 13.3 14.275C13.5833 14.275 13.8167 14.1833 14 14C14.1833 13.8167 14.275 13.5833 14.275 13.3C14.275 13.0167 14.1833 12.7833 14 12.6L11 9.6ZM10 20C8.61667 20 7.31667 19.7375 6.1 19.2125C4.88333 18.6875 3.825 17.975 2.925 17.075C2.025 16.175 1.3125 15.1167 0.7875 13.9C0.2625 12.6833 0 11.3833 0 10C0 8.61667 0.2625 7.31667 0.7875 6.1C1.3125 4.88333 2.025 3.825 2.925 2.925C3.825 2.025 4.88333 1.3125 6.1 0.7875C7.31667 0.2625 8.61667 0 10 0C11.3833 0 12.6833 0.2625 13.9 0.7875C15.1167 1.3125 16.175 2.025 17.075 2.925C17.975 3.825 18.6875 4.88333 19.2125 6.1C19.7375 7.31667 20 8.61667 20 10C20 11.3833 19.7375 12.6833 19.2125 13.9C18.6875 15.1167 17.975 16.175 17.075 17.075C16.175 17.975 15.1167 18.6875 13.9 19.2125C12.6833 19.7375 11.3833 20 10 20Z" fill="#FF1675"/>
+</svg>
+ <div class="course-mini-icon"><span>3h 8m</span>
+ </div>
+ </div>
+ <div class="course-mini-row-rating">
+ <span><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-half-o"></i></span>
+ <span>(201)</span>
+ </div>
+ </div>
+ </div>
+ <div class="course-authors-list">
+
+ <p>Created by
+
+
+ <a href="#f2b9321f-09c0-48b1-b34a-76963c7a7459">Alan Dipert</a>
+
+ </p>
+
+ <div class="course-mini-row-data">
+ <p>Last Updated Jan 20, 2021</p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <aside class="course-column flex-1" id="sticky-card">
+
+ <div class="course-try-gate">
+ <div class="right-sidebar-card">
+ <div class="image-placeholder">
+ <img src="https://pluralsight.imgix.net/course-images/clojure-fundamentals-part-one-v1.jpg" alt="Course Thumbnail"/>
+ </div>
+ <div class="tabs-container">
+ <button class="tab-button active" data-tab="businesses"><span>Businesses</span></button>
+ <button class="tab-button" data-tab="individuals"><span>Individuals</span></button>
+ </div>
+ <div class="tab-content-wrapper">
+ <div id="businesses-tab" class="tab-content active">
+ <h5>Get started today</h5>
+ <p>Access this course and other top-rated tech content with one of our business plans.</p>
+ <div class="tab-content-cta-container">
+ <div class="cmp-ps-button -button -ps-inky -large ps-button"><a class="cmp-button ps-button style-primary" data-fancybox="" href="/trial">
+ <span class="cmp-button__text ps-button__text">Start a free team trial</span>
+ </a>
+ </div>
+ <div class="cmp-ps-button -button -ps-stroked-inky -large -stroked-navy ps-button">
+ <a class="cmp-button ps-button style-primary" data-fancybox="" href="/businesses/pricing">
+ <span class="cmp-button__text ps-button__text">Buy now</span>
+ </a>
+ </div>
+ </div>
+ </div>
+ <div id="individuals-tab" class="tab-content">
+ <h5>Try this course for free</h5>
+ <p>Access this course and other top-rated tech content with one of our individual plans.</p>
+ <div class="tab-content-cta-container">
+ <div class="cmp-ps-button -button -ps-inky -large ps-button"><a class="cmp-button ps-button style-primary" data-fancybox="" href="/individuals/pricing">
+ <span class="cmp-button__text ps-button__text">Start a free trial</span>
+ </a>
+ </div>
+ <div class="cmp-ps-button -button -ps-stroked-inky -large -stroked-navy ps-button">
+ <a class="cmp-button ps-button style-primary" data-fancybox="" href="/individuals/pricing">
+ <span class="cmp-button__text ps-button__text">Buy now</span>
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="course-libraries">
+ <p>This course is included in the libraries shown below:</p>
+ <ul class="tag-container">
+
+ <li class="course-type-list type-library">
+ <span>Core Tech</span>
+ </li>
+
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ </aside>
+ </div>
+ </div>
+ <div class="course-hero-mobile">
+
+ <div class="course-detail-card">
+ <div class="mobile-course-hero">
+ <div class="mobile-course-hero-content">
+ <div class="image-placeholder">
+ <img src="https://pluralsight.imgix.net/course-images/clojure-fundamentals-part-one-v1.jpg" alt="Course Thumbnail"/>
+ </div>
+ <ul class="flex-row g3p_course-info">
+ <li class="course-type-list type-course">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
+ <path d="M11.504 10.5279L14.7214 8.36704C15.023 8.16603 15.1739 7.88964 15.1739 7.53787C15.1739 7.18611 15.023 6.90972 14.7214 6.70871L11.504 4.54785C11.1688 4.31334 10.8253 4.29659 10.4734 4.4976C10.1215 4.69861 9.94554 5.00012 9.94554 5.40214V9.67361C9.94554 10.0756 10.1215 10.3771 10.4734 10.5781C10.8253 10.7792 11.1688 10.7624 11.504 10.5279ZM3.61123 19.9754C3.05823 20.0591 2.5597 19.9293 2.11563 19.5859C1.67155 19.2425 1.416 18.7944 1.34897 18.2417L0.0167574 7.26149C-0.0502723 6.70871 0.0837872 6.21456 0.418936 5.77904C0.754085 5.34352 1.19816 5.09225 1.75115 5.02525L2.90742 4.87449V13.0656C2.90742 14.1712 3.30121 15.1176 4.08881 15.9049C4.87641 16.6922 5.82321 17.0858 6.9292 17.0858H16.2799C16.1793 17.4879 15.9782 17.8354 15.6766 18.1286C15.3749 18.4217 15.0063 18.5934 14.5706 18.6437L3.61123 19.9754ZM6.9292 15.0757C6.3762 15.0757 5.90281 14.8789 5.50901 14.4853C5.11521 14.0916 4.91831 13.6184 4.91831 13.0656V2.0101C4.91831 1.45732 5.11521 0.984111 5.50901 0.590467C5.90281 0.196822 6.3762 0 6.9292 0H17.9891C18.5421 0 19.0155 0.196822 19.4093 0.590467C19.8031 0.984111 20 1.45732 20 2.0101V13.0656C20 13.6184 19.8031 14.0916 19.4093 14.4853C19.0155 14.8789 18.5421 15.0757 17.9891 15.0757H6.9292Z" fill="#FF1675"/>
+</svg>
+ <span>Course</span>
+ </li>
+ </ul>
+ <h1>Clojure Fundamentals - Part 1</h1>
+ <p>Learn functional programming with Clojure.</p>
+ <div class="course-mini-info">
+ <div class="course-mini-row">
+ <div class="course-mini-row-data">
+
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_4461_6396)">
+<path d="M6.48564 20.4805C5.97881 20.4805 5.54798 20.3031 5.19314 19.9482C4.83814 19.5932 4.66064 19.1623 4.66064 18.6555V16.7577C4.66064 16.2507 4.83814 15.8198 5.19314 15.465C5.54798 15.1101 5.97881 14.9327 6.48564 14.9327C6.99264 14.9327 7.42356 15.1101 7.7784 15.465C8.1334 15.8198 8.31089 16.2507 8.31089 16.7577V18.6555C8.31089 19.1623 8.1334 19.5932 7.7784 19.9482C7.42356 20.3031 6.99264 20.4805 6.48564 20.4805ZM12.5706 20.4805C12.0636 20.4805 11.6327 20.3031 11.2779 19.9482C10.9231 19.5932 10.7456 19.1623 10.7456 18.6555V11.7577C10.7456 11.2507 10.9231 10.8198 11.2779 10.465C11.6327 10.1101 12.0636 9.93272 12.5706 9.93272C13.0775 9.93272 13.5084 10.1101 13.8634 10.465C14.2182 10.8198 14.3956 11.2507 14.3956 11.7577V18.6555C14.3956 19.1623 14.2182 19.5932 13.8634 19.9482C13.5084 20.3031 13.0775 20.4805 12.5706 20.4805ZM18.6554 20.4805C18.1484 20.4805 17.7175 20.3031 17.3626 19.9482C17.0078 19.5932 16.8304 19.1623 16.8304 18.6555V5.34447C16.8304 4.83764 17.0078 4.40672 17.3626 4.05172C17.7175 3.69689 18.1484 3.51947 18.6554 3.51947C19.1622 3.51947 19.5931 3.69689 19.9481 4.05172C20.303 4.40672 20.4804 4.83764 20.4804 5.34447V18.6555C20.4804 19.1623 20.303 19.5932 19.9481 19.9482C19.5931 20.3031 19.1622 20.4805 18.6554 20.4805Z" fill="#A5A5A5"/>
+<path d="M6.48564 20.4805C5.97881 20.4805 5.54798 20.3031 5.19314 19.9482C4.83814 19.5932 4.66064 19.1623 4.66064 18.6555V16.7577C4.66064 16.2507 4.83814 15.8198 5.19314 15.465C5.54798 15.1102 5.97881 14.9327 6.48564 14.9327C6.99264 14.9327 7.42356 15.1102 7.7784 15.465C8.1334 15.8198 8.31089 16.2507 8.31089 16.7577V18.6555C8.31089 19.1623 8.1334 19.5932 7.7784 19.9482C7.42356 20.3031 6.99264 20.4805 6.48564 20.4805ZM12.5706 20.4805C12.0636 20.4805 11.6327 20.3031 11.2779 19.9482C10.9231 19.5932 10.7456 19.1623 10.7456 18.6555V11.7577C10.7456 11.2507 10.9231 10.8198 11.2779 10.465C11.6327 10.1102 12.0636 9.93274 12.5706 9.93274C13.0775 9.93274 13.5084 10.1102 13.8634 10.465C14.2182 10.8198 14.3956 11.2507 14.3956 11.7577V18.6555C14.3956 19.1623 14.2182 19.5932 13.8634 19.9482C13.5084 20.3031 13.0775 20.4805 12.5706 20.4805Z" fill="#FF1675"/>
+</g>
+<defs>
+<clipPath id="clip0_4461_6396">
+<rect width="24" height="24" fill="white"/>
+</clipPath>
+</defs>
+</svg>
+
+ <span>Intermediate</span>
+ </div>
+ <div class="course-mini-row-data">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
+ <path d="M11 9.6V6C11 5.71667 10.9042 5.47917 10.7125 5.2875C10.5208 5.09583 10.2833 5 10 5C9.71667 5 9.47917 5.09583 9.2875 5.2875C9.09583 5.47917 9 5.71667 9 6V9.975C9 10.1083 9.025 10.2375 9.075 10.3625C9.125 10.4875 9.2 10.6 9.3 10.7L12.6 14C12.7833 14.1833 13.0167 14.275 13.3 14.275C13.5833 14.275 13.8167 14.1833 14 14C14.1833 13.8167 14.275 13.5833 14.275 13.3C14.275 13.0167 14.1833 12.7833 14 12.6L11 9.6ZM10 20C8.61667 20 7.31667 19.7375 6.1 19.2125C4.88333 18.6875 3.825 17.975 2.925 17.075C2.025 16.175 1.3125 15.1167 0.7875 13.9C0.2625 12.6833 0 11.3833 0 10C0 8.61667 0.2625 7.31667 0.7875 6.1C1.3125 4.88333 2.025 3.825 2.925 2.925C3.825 2.025 4.88333 1.3125 6.1 0.7875C7.31667 0.2625 8.61667 0 10 0C11.3833 0 12.6833 0.2625 13.9 0.7875C15.1167 1.3125 16.175 2.025 17.075 2.925C17.975 3.825 18.6875 4.88333 19.2125 6.1C19.7375 7.31667 20 8.61667 20 10C20 11.3833 19.7375 12.6833 19.2125 13.9C18.6875 15.1167 17.975 16.175 17.075 17.075C16.175 17.975 15.1167 18.6875 13.9 19.2125C12.6833 19.7375 11.3833 20 10 20Z" fill="#FF1675"/>
+</svg>
+ <div class="course-mini-icon"><span>3h 8m</span>
+ </div>
+ </div>
+ <div class="course-mini-row-rating">
+ <span><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-half-o"></i></span>
+ <span>(201)</span>
+ </div>
+ </div>
+ <div class="course-mini-row-author">
+
+ <p>Created by
+
+
+ <a href="#f2b9321f-09c0-48b1-b34a-76963c7a7459">Alan Dipert</a>
+
+ </p>
+
+ <p>Last Updated Jan 20, 2021</p>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="mobile-card-tabs">
+ <div class="mobile-card-tabs-content">
+ <div class="tabs-container" id="mobileTabs">
+ <button class="tab-button-m active" data-tab="businesses-M"><span>Businesses</span></button>
+ <button class="tab-button-m" data-tab="individuals-M"><span>Individuals</span></button>
+ </div>
+ <div class="tab-content-wrapper">
+ <div id="businesses-M-tab" class="tab-content-m active">
+ <h5>Get started today</h5>
+ <p>Access this course and other top-rated tech content with one of our business plans.</p>
+ <div class="tab-content-cta-container">
+ <div class="cmp-ps-button -button -ps-inky -large ps-button"><a class="cmp-button ps-button style-primary" data-fancybox="" href="/trial">
+ <span class="cmp-button__text ps-button__text">Start a free team trial</span>
+ </a>
+ </div>
+ <div class="cmp-ps-button -button -ps-stroked-inky -large -stroked-navy ps-button">
+ <a class="cmp-button ps-button style-primary" data-fancybox="" href="/businesses/pricing">
+ <span class="cmp-button__text ps-button__text">Buy now</span>
+ </a>
+ </div>
+ </div>
+ </div>
+ <div id="individuals-M-tab" class="tab-content-m">
+ <h5>Try this course for free</h5>
+ <p>Access this course and other top-rated tech content with one of our individual plans.</p>
+ <div class="tab-content-cta-container">
+ <div class="cmp-ps-button -button -ps-inky -large ps-button"><a class="cmp-button ps-button style-primary" data-fancybox="" href="/individuals/pricing">
+ <span class="cmp-button__text ps-button__text">Start a free trial</span>
+ </a>
+ </div>
+ <div class="cmp-ps-button -button -ps-stroked-inky -large -stroked-navy ps-button">
+ <a class="cmp-button ps-button style-primary" data-fancybox="" href="/individuals/pricing">
+ <span class="cmp-button__text ps-button__text">Buy now</span>
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="course-libraries">
+ <p>This course is included in the libraries shown below:</p>
+ <ul class="tag-container">
+
+ <li class="course-type-list type-library">
+ <span>Core Tech</span>
+ </li>
+
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="sticky-footer">
+ <div class="sticky-footer-container">
+ <div class="content">
+ <h6>Clojure Fundamentals - Part 1</h6>
+ <div id="btnBus" class="cmp-ps-button -button -ps-inky -large ps-button"><a class="cmp-button ps-button style-primary" data-fancybox="" href="/trial">
+ <span class="cmp-button__text ps-button__text">Start a free team trial</span>
+ </a>
+ </div>
+ <div id="btnInd" class="cmp-ps-button -button -ps-inky -large ps-button"><a class="cmp-button ps-button style-primary" data-fancybox="" href="/individuals/pricing">
+ <span class="cmp-button__text ps-button__text">Start a free trial</span>
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ <div class="course-detail">
+ <div class="course-detail-content">
+ <h5>What you'll learn</h5>
+ <p><p>Clojure is a functional programming language for the Java Virtual Machine. This course explores Clojure starting with the basics, with only a Java or C# programming background assumed.</p>
+</p>
+ </div>
+ </div>
+ <div id="sticky-course-title" class="hidden-element">
+ <div class="sticky-content">
+ <div class="content-width">
+ <h5>Clojure Fundamentals - Part 1</h5>
+ <div class="course-mini-info">
+ <div class="course-mini-row">
+ <div class="course-mini-row-data">
+
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_4461_6396)">
+<path d="M6.48564 20.4805C5.97881 20.4805 5.54798 20.3031 5.19314 19.9482C4.83814 19.5932 4.66064 19.1623 4.66064 18.6555V16.7577C4.66064 16.2507 4.83814 15.8198 5.19314 15.465C5.54798 15.1101 5.97881 14.9327 6.48564 14.9327C6.99264 14.9327 7.42356 15.1101 7.7784 15.465C8.1334 15.8198 8.31089 16.2507 8.31089 16.7577V18.6555C8.31089 19.1623 8.1334 19.5932 7.7784 19.9482C7.42356 20.3031 6.99264 20.4805 6.48564 20.4805ZM12.5706 20.4805C12.0636 20.4805 11.6327 20.3031 11.2779 19.9482C10.9231 19.5932 10.7456 19.1623 10.7456 18.6555V11.7577C10.7456 11.2507 10.9231 10.8198 11.2779 10.465C11.6327 10.1101 12.0636 9.93272 12.5706 9.93272C13.0775 9.93272 13.5084 10.1101 13.8634 10.465C14.2182 10.8198 14.3956 11.2507 14.3956 11.7577V18.6555C14.3956 19.1623 14.2182 19.5932 13.8634 19.9482C13.5084 20.3031 13.0775 20.4805 12.5706 20.4805ZM18.6554 20.4805C18.1484 20.4805 17.7175 20.3031 17.3626 19.9482C17.0078 19.5932 16.8304 19.1623 16.8304 18.6555V5.34447C16.8304 4.83764 17.0078 4.40672 17.3626 4.05172C17.7175 3.69689 18.1484 3.51947 18.6554 3.51947C19.1622 3.51947 19.5931 3.69689 19.9481 4.05172C20.303 4.40672 20.4804 4.83764 20.4804 5.34447V18.6555C20.4804 19.1623 20.303 19.5932 19.9481 19.9482C19.5931 20.3031 19.1622 20.4805 18.6554 20.4805Z" fill="#A5A5A5"/>
+<path d="M6.48564 20.4805C5.97881 20.4805 5.54798 20.3031 5.19314 19.9482C4.83814 19.5932 4.66064 19.1623 4.66064 18.6555V16.7577C4.66064 16.2507 4.83814 15.8198 5.19314 15.465C5.54798 15.1102 5.97881 14.9327 6.48564 14.9327C6.99264 14.9327 7.42356 15.1102 7.7784 15.465C8.1334 15.8198 8.31089 16.2507 8.31089 16.7577V18.6555C8.31089 19.1623 8.1334 19.5932 7.7784 19.9482C7.42356 20.3031 6.99264 20.4805 6.48564 20.4805ZM12.5706 20.4805C12.0636 20.4805 11.6327 20.3031 11.2779 19.9482C10.9231 19.5932 10.7456 19.1623 10.7456 18.6555V11.7577C10.7456 11.2507 10.9231 10.8198 11.2779 10.465C11.6327 10.1102 12.0636 9.93274 12.5706 9.93274C13.0775 9.93274 13.5084 10.1102 13.8634 10.465C14.2182 10.8198 14.3956 11.2507 14.3956 11.7577V18.6555C14.3956 19.1623 14.2182 19.5932 13.8634 19.9482C13.5084 20.3031 13.0775 20.4805 12.5706 20.4805Z" fill="#FF1675"/>
+</g>
+<defs>
+<clipPath id="clip0_4461_6396">
+<rect width="24" height="24" fill="white"/>
+</clipPath>
+</defs>
+</svg>
+
+ <span>Intermediate</span>
+ </div>
+ <div class="course-mini-row-data">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
+ <path d="M11 9.6V6C11 5.71667 10.9042 5.47917 10.7125 5.2875C10.5208 5.09583 10.2833 5 10 5C9.71667 5 9.47917 5.09583 9.2875 5.2875C9.09583 5.47917 9 5.71667 9 6V9.975C9 10.1083 9.025 10.2375 9.075 10.3625C9.125 10.4875 9.2 10.6 9.3 10.7L12.6 14C12.7833 14.1833 13.0167 14.275 13.3 14.275C13.5833 14.275 13.8167 14.1833 14 14C14.1833 13.8167 14.275 13.5833 14.275 13.3C14.275 13.0167 14.1833 12.7833 14 12.6L11 9.6ZM10 20C8.61667 20 7.31667 19.7375 6.1 19.2125C4.88333 18.6875 3.825 17.975 2.925 17.075C2.025 16.175 1.3125 15.1167 0.7875 13.9C0.2625 12.6833 0 11.3833 0 10C0 8.61667 0.2625 7.31667 0.7875 6.1C1.3125 4.88333 2.025 3.825 2.925 2.925C3.825 2.025 4.88333 1.3125 6.1 0.7875C7.31667 0.2625 8.61667 0 10 0C11.3833 0 12.6833 0.2625 13.9 0.7875C15.1167 1.3125 16.175 2.025 17.075 2.925C17.975 3.825 18.6875 4.88333 19.2125 6.1C19.7375 7.31667 20 8.61667 20 10C20 11.3833 19.7375 12.6833 19.2125 13.9C18.6875 15.1167 17.975 16.175 17.075 17.075C16.175 17.975 15.1167 18.6875 13.9 19.2125C12.6833 19.7375 11.3833 20 10 20Z" fill="#FF1675"/>
+</svg>
+ <div class="course-mini-icon"><span>3h 8m</span>
+ </div>
+ </div>
+ <div class="course-mini-row-rating">
+ <span><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-half-o"></i></span>
+ <span>(201)</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+<div class="course-toc">
+ <div class="course-toc-container flex-row">
+ <div class="flex-2 simple-accordion simple-text-accordion-simple-accordion course-toc-accordion">
+ <div class="simple-accordion-component">
+ <div class="toc-eyebrow">
+ <span>Table of contents</span>
+ </div>
+ <div class="simple-accordion-list">
+ <div class="simple-accordion-item">
+ <h3 class="toc-item accordion-title">
+ <button type="button" class="cmp-button ps-button" aria-expanded="true" aria-controls="accordionPanel0" id="accordion0" data-ps-analytics="button_as_button|sfsdds|button_function">
+ <div class="accordion_btn_container">
+ <span class="accordion_btn_text">Overview and the REPL</span>
+ <span><i class="accordion-caret"></i></span>
+ </div>
+ <div class="toc-small-text">22m</div>
+ </button>
+ </h3>
+ <div id="accordionPanel0" role="region" aria-labelledby="accordion0" class="toc-content accordion-panel">
+ <ul>
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Introduction|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Introduction</span>
+ <span class="clip-duration"> | 1m 6s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Clojure Objectives|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Clojure Objectives</span>
+ <span class="clip-duration"> | 1m 6s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Why Another Lisp?|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Why Another Lisp?</span>
+ <span class="clip-duration"> | 1m 29s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Why ClojureScript?|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Why ClojureScript?</span>
+ <span class="clip-duration"> | 41s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Clojure and ClojureScript|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Clojure and ClojureScript</span>
+ <span class="clip-duration"> | 34s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: Evaluation and the REPL|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: Evaluation and the REPL</span>
+ <span class="clip-duration"> | 2m 24s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Traditional Evaluation|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Traditional Evaluation</span>
+ <span class="clip-duration"> | 42s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Clojure Evaluation|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Clojure Evaluation</span>
+ <span class="clip-duration"> | 55s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Operation Forms|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Operation Forms</span>
+ <span class="clip-duration"> | 53s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Structure vs. Semantics|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Structure vs. Semantics</span>
+ <span class="clip-duration"> | 48s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Literals|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Literals</span>
+ <span class="clip-duration"> | 1m 21s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Data Structures|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Data Structures</span>
+ <span class="clip-duration"> | 1m 36s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Metadata|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Metadata</span>
+ <span class="clip-duration"> | 54s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Reader Macros|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Reader Macros</span>
+ <span class="clip-duration"> | 1m 41s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: REPL Utilities|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: REPL Utilities</span>
+ <span class="clip-duration"> | 3m 43s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Leiningen Directory Structure|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Leiningen Directory Structure</span>
+ <span class="clip-duration"> | 1m 2s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Maven Directory Structure|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Maven Directory Structure</span>
+ <span class="clip-duration"> | 32s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Summary|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Summary</span>
+ <span class="clip-duration"> | 1m 12s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="simple-accordion-item">
+ <h3 class="toc-item accordion-title">
+ <button type="button" class="cmp-button ps-button" aria-expanded="true" aria-controls="accordionPanel0" id="accordion0" data-ps-analytics="button_as_button|sfsdds|button_function">
+ <div class="accordion_btn_container">
+ <span class="accordion_btn_text">Functions</span>
+ <span><i class="accordion-caret"></i></span>
+ </div>
+ <div class="toc-small-text">38m</div>
+ </button>
+ </h3>
+ <div id="accordionPanel0" role="region" aria-labelledby="accordion0" class="toc-content accordion-panel">
+ <ul>
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Introduction|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Introduction</span>
+ <span class="clip-duration"> | 1m 26s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Functions|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Functions</span>
+ <span class="clip-duration"> | 1m 40s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Invoking Functions|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Invoking Functions</span>
+ <span class="clip-duration"> | 55s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Naming Functions|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Naming Functions</span>
+ <span class="clip-duration"> | 2m 19s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: Defining and Naming Functions|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: Defining and Naming Functions</span>
+ <span class="clip-duration"> | 5m 15s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|let|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">let</span>
+ <span class="clip-duration"> | 1m 46s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: let|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: let</span>
+ <span class="clip-duration"> | 1m 26s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Multiple Arity|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Multiple Arity</span>
+ <span class="clip-duration"> | 1m 46s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: Multiple Arity|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: Multiple Arity</span>
+ <span class="clip-duration"> | 2m 3s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Variadic Functions|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Variadic Functions</span>
+ <span class="clip-duration"> | 2m 9s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|apply|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">apply</span>
+ <span class="clip-duration"> | 2m 23s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: Variadic Functions and apply|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: Variadic Functions and apply</span>
+ <span class="clip-duration"> | 3m 49s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Closures|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Closures</span>
+ <span class="clip-duration"> | 1m 37s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Invoking Java Code|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Invoking Java Code</span>
+ <span class="clip-duration"> | 2m 11s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Chaining Access|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Chaining Access</span>
+ <span class="clip-duration"> | 1m 24s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Java Methods vs. Functions|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Java Methods vs. Functions</span>
+ <span class="clip-duration"> | 1m 20s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Terse fn Reader Macro|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Terse fn Reader Macro</span>
+ <span class="clip-duration"> | 1m 10s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Summary|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Summary</span>
+ <span class="clip-duration"> | 4m 16s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="simple-accordion-item">
+ <h3 class="toc-item accordion-title">
+ <button type="button" class="cmp-button ps-button" aria-expanded="true" aria-controls="accordionPanel0" id="accordion0" data-ps-analytics="button_as_button|sfsdds|button_function">
+ <div class="accordion_btn_container">
+ <span class="accordion_btn_text">Namespaces</span>
+ <span><i class="accordion-caret"></i></span>
+ </div>
+ <div class="toc-small-text">34m</div>
+ </button>
+ </h3>
+ <div id="accordionPanel0" role="region" aria-labelledby="accordion0" class="toc-content accordion-panel">
+ <ul>
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Introduction|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Introduction</span>
+ <span class="clip-duration"> | 41s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Why Namespaces?|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Why Namespaces?</span>
+ <span class="clip-duration"> | 1m 37s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|What's in a Namespace?|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">What's in a Namespace?</span>
+ <span class="clip-duration"> | 31s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Namespace-Qualified Vars|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Namespace-Qualified Vars</span>
+ <span class="clip-duration"> | 53s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Namespace-Qualified Keywords|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Namespace-Qualified Keywords</span>
+ <span class="clip-duration"> | 1m 24s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Namespaces in the REPL|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Namespaces in the REPL</span>
+ <span class="clip-duration"> | 52s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Namespace Operations|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Namespace Operations</span>
+ <span class="clip-duration"> | 1m 2s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|require|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">require</span>
+ <span class="clip-duration"> | 2m 19s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: require|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: require</span>
+ <span class="clip-duration"> | 2m 40s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|use|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">use</span>
+ <span class="clip-duration"> | 2m 27s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: use|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: use</span>
+ <span class="clip-duration"> | 6m 40s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Reloading Namespaces|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Reloading Namespaces</span>
+ <span class="clip-duration"> | 50s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|import|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">import</span>
+ <span class="clip-duration"> | 46s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Namespaces and Files|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Namespaces and Files</span>
+ <span class="clip-duration"> | 45s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|ns Declaration|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">ns Declaration</span>
+ <span class="clip-duration"> | 47s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|ns :require|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">ns :require</span>
+ <span class="clip-duration"> | 55s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|ns :use|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">ns :use</span>
+ <span class="clip-duration"> | 34s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|ns :import|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">ns :import</span>
+ <span class="clip-duration"> | 28s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|ns Complete Example|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">ns Complete Example</span>
+ <span class="clip-duration"> | 19s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: ns macro|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: ns macro</span>
+ <span class="clip-duration"> | 5m 12s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Private Vars|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Private Vars</span>
+ <span class="clip-duration"> | 44s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|the-ns|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">the-ns</span>
+ <span class="clip-duration"> | 30s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Namespace Introspection|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Namespace Introspection</span>
+ <span class="clip-duration"> | 31s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Summary|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Summary</span>
+ <span class="clip-duration"> | 1m 32s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="simple-accordion-item">
+ <h3 class="toc-item accordion-title">
+ <button type="button" class="cmp-button ps-button" aria-expanded="true" aria-controls="accordionPanel0" id="accordion0" data-ps-analytics="button_as_button|sfsdds|button_function">
+ <div class="accordion_btn_container">
+ <span class="accordion_btn_text">Collections</span>
+ <span><i class="accordion-caret"></i></span>
+ </div>
+ <div class="toc-small-text">27m</div>
+ </button>
+ </h3>
+ <div id="accordionPanel0" role="region" aria-labelledby="accordion0" class="toc-content accordion-panel">
+ <ul>
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Introduction|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Introduction</span>
+ <span class="clip-duration"> | 1m 5s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Working With Data|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Working With Data</span>
+ <span class="clip-duration"> | 40s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Immutability|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Immutability</span>
+ <span class="clip-duration"> | 37s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Persistent Data Structures|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Persistent Data Structures</span>
+ <span class="clip-duration"> | 1m 56s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Clojure Collections|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Clojure Collections</span>
+ <span class="clip-duration"> | 34s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Lists|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Lists</span>
+ <span class="clip-duration"> | 1m 50s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Vectors|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Vectors</span>
+ <span class="clip-duration"> | 1m 36s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: Lists and Vectors|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: Lists and Vectors</span>
+ <span class="clip-duration"> | 5m 9s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Maps|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Maps</span>
+ <span class="clip-duration"> | 2m 56s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Nested Map Access|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Nested Map Access</span>
+ <span class="clip-duration"> | 2m 18s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: Maps|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: Maps</span>
+ <span class="clip-duration"> | 5m 59s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Sets|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Sets</span>
+ <span class="clip-duration"> | 1m 36s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Summary|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Summary</span>
+ <span class="clip-duration"> | 1m 7s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="simple-accordion-item">
+ <h3 class="toc-item accordion-title">
+ <button type="button" class="cmp-button ps-button" aria-expanded="true" aria-controls="accordionPanel0" id="accordion0" data-ps-analytics="button_as_button|sfsdds|button_function">
+ <div class="accordion_btn_container">
+ <span class="accordion_btn_text">Destructuring</span>
+ <span><i class="accordion-caret"></i></span>
+ </div>
+ <div class="toc-small-text">18m</div>
+ </button>
+ </h3>
+ <div id="accordionPanel0" role="region" aria-labelledby="accordion0" class="toc-content accordion-panel">
+ <ul>
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Introduction|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Introduction</span>
+ <span class="clip-duration"> | 38s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Destructuring|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Destructuring</span>
+ <span class="clip-duration"> | 45s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Sequential Destructuring|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Sequential Destructuring</span>
+ <span class="clip-duration"> | 1m 10s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Sequential Destructuring with &|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Sequential Destructuring with &</span>
+ <span class="clip-duration"> | 54s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Ignoring Destructured Values with _|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Ignoring Destructured Values with _</span>
+ <span class="clip-duration"> | 42s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: Sequential Destructuring|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: Sequential Destructuring</span>
+ <span class="clip-duration"> | 4m 47s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Associative Destructuring|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Associative Destructuring</span>
+ <span class="clip-duration"> | 1m 4s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Associative Destructuring with :keys|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Associative Destructuring with :keys</span>
+ <span class="clip-duration"> | 1m</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Using :or for Default Values|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Using :or for Default Values</span>
+ <span class="clip-duration"> | 47s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Named Arguments|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Named Arguments</span>
+ <span class="clip-duration"> | 45s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: Associative Destructuring|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: Associative Destructuring</span>
+ <span class="clip-duration"> | 5m 9s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Summary|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Summary</span>
+ <span class="clip-duration"> | 1m 11s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="simple-accordion-item">
+ <h3 class="toc-item accordion-title">
+ <button type="button" class="cmp-button ps-button" aria-expanded="true" aria-controls="accordionPanel0" id="accordion0" data-ps-analytics="button_as_button|sfsdds|button_function">
+ <div class="accordion_btn_container">
+ <span class="accordion_btn_text">Sequences</span>
+ <span><i class="accordion-caret"></i></span>
+ </div>
+ <div class="toc-small-text">17m</div>
+ </button>
+ </h3>
+ <div id="accordionPanel0" role="region" aria-labelledby="accordion0" class="toc-content accordion-panel">
+ <ul>
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Introduction|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Introduction</span>
+ <span class="clip-duration"> | 31s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Sequences|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Sequences</span>
+ <span class="clip-duration"> | 23s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Sequence API|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Sequence API</span>
+ <span class="clip-duration"> | 55s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: Sequence API|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: Sequence API</span>
+ <span class="clip-duration"> | 1m 54s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Sequences Over Structures|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Sequences Over Structures</span>
+ <span class="clip-duration"> | 1m 21s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Sequences Over Functions|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Sequences Over Functions</span>
+ <span class="clip-duration"> | 1m 9s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Sequences in the REPL|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Sequences in the REPL</span>
+ <span class="clip-duration"> | 35s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Sequence Library|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Sequence Library</span>
+ <span class="clip-duration"> | 53s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Creating a Sequence|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Creating a Sequence</span>
+ <span class="clip-duration"> | 1m 5s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Seq In, Seq Out|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Seq In, Seq Out</span>
+ <span class="clip-duration"> | 1m 25s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Using a Seq|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Using a Seq</span>
+ <span class="clip-duration"> | 1m 41s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: Working with Sequences|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: Working with Sequences</span>
+ <span class="clip-duration"> | 3m 51s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Adopting the Sequence Mindset|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Adopting the Sequence Mindset</span>
+ <span class="clip-duration"> | 49s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Summary|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Summary</span>
+ <span class="clip-duration"> | 1m 5s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="simple-accordion-item">
+ <h3 class="toc-item accordion-title">
+ <button type="button" class="cmp-button ps-button" aria-expanded="true" aria-controls="accordionPanel0" id="accordion0" data-ps-analytics="button_as_button|sfsdds|button_function">
+ <div class="accordion_btn_container">
+ <span class="accordion_btn_text">Flow Control</span>
+ <span><i class="accordion-caret"></i></span>
+ </div>
+ <div class="toc-small-text">28m</div>
+ </button>
+ </h3>
+ <div id="accordionPanel0" role="region" aria-labelledby="accordion0" class="toc-content accordion-panel">
+ <ul>
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Introduction|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Introduction</span>
+ <span class="clip-duration"> | 24s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Statements vs. Expressions|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Statements vs. Expressions</span>
+ <span class="clip-duration"> | 1m 16s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Flow Control Expressions|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Flow Control Expressions</span>
+ <span class="clip-duration"> | 33s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Truthiness|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Truthiness</span>
+ <span class="clip-duration"> | 1m 53s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|if|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">if</span>
+ <span class="clip-duration"> | 42s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|if/do|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">if/do</span>
+ <span class="clip-duration"> | 37s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|if-let|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">if-let</span>
+ <span class="clip-duration"> | 54s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: if-let|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: if-let</span>
+ <span class="clip-duration"> | 3m 54s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|cond|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">cond</span>
+ <span class="clip-duration"> | 1m 30s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|condp|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">condp</span>
+ <span class="clip-duration"> | 54s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|case|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">case</span>
+ <span class="clip-duration"> | 46s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: cond/condp/case|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: cond/condp/case</span>
+ <span class="clip-duration"> | 3m 32s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Recursion and Iteration|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Recursion and Iteration</span>
+ <span class="clip-duration"> | 33s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|doseq|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">doseq</span>
+ <span class="clip-duration"> | 1m 17s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|dotimes|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">dotimes</span>
+ <span class="clip-duration"> | 37s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|while|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">while</span>
+ <span class="clip-duration"> | 20s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|for|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">for</span>
+ <span class="clip-duration"> | 28s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|loop|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">loop</span>
+ <span class="clip-duration"> | 59s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|defn/recur|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">defn/recur</span>
+ <span class="clip-duration"> | 28s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|recur for Recursion|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">recur for Recursion</span>
+ <span class="clip-duration"> | 43s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Demo: recur|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Demo: recur</span>
+ <span class="clip-duration"> | 2m 8s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Exception Handling|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Exception Handling</span>
+ <span class="clip-duration"> | 55s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Throwing Exceptions|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Throwing Exceptions</span>
+ <span class="clip-duration"> | 30s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|with-open|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">with-open</span>
+ <span class="clip-duration"> | 36s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+
+ <li class="clip-lock-wrapper">
+
+ <div class="clip-lock-wrapper-button">
+ <button id="invite-modal" class="clip-modal invite-modal" data-aa-title="Course clip cta-invite modal" data-ps-analytics="Link|Summary|invite-modal" aria-haspopup="true" aria-expanded="false" aria-describedby="clip-lock-tooltip">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-main/resources/images/icons/lock.svg" alt="Lock"/>
+ <div class="clip-details">
+ <span class="clip-title">Summary</span>
+ <span class="clip-duration"> | 1m 39s</span>
+ </div>
+ </button>
+ <div id="clip-lock-tooltip" class="clip-lock-tooltip" role="tooltip">
+ <span class="course_tooltip_wrapper--desc">
+ To view this content, start a free trial or activate one of our plans.
+ </span>
+ </div>
+ </div>
+
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="flex-1 authors-list" id="f2b9321f-09c0-48b1-b34a-76963c7a7459">
+ <div class="toc-author-eyebrow">
+ <span>About the author</span>
+ </div>
+ <span class="toc-course-author ">
+ <div class="toc-author-image"><img src="https://pluralsight.imgix.net/author/lg/alan-dipert-v1.jpg" alt="Alan Dipert - Pluralsight course - Clojure Fundamentals - Part 1" width="48"/></div>
+ <div class="toc-author-details">
+ <span class="toc-author-name">Alan Dipert</span>
+ <div class="toc-author-stats">
+
+ <span class="toc-author-stat">
+ <img src="/etc.clientlibs/ps/clientlibs/clientlib-site/resources/images/icons/Course.svg"/>
+ <span class="toc-author-stat-value">1 courses</span>
+ </span>
+
+
+ <span class="toc-author-stat"><img src="/etc.clientlibs/ps/clientlibs/clientlib-site/resources/images/icons/Rating.svg"/>
+ <span class="toc-author-stat-value">4.5 author rating</span></span>
+
+
+ <span class="toc-author-stat"><img src="/etc.clientlibs/ps/clientlibs/clientlib-site/resources/images/icons/Course-rating.svg"/>
+ <span class="toc-author-stat-value">201 ratings</span></span>
+
+ </div>
+ </div>
+
+ </span>
+ <p>Alan is a developer at Relevance, where he specializes in web applications. He is a frequent contributor to the Clojure language, and has also contributed to several popular Clojure libraries. At Relevance, he's built Clojure software for a range of clients, in domains ranging from online gaming to network security.</p>
+ <div class="cmp-ps-button -ps-link-light-bg -ps-arrow-light -primary -button -large ps-button">
+ <a class="cmp-button ps-button style-primary" href="/authors/alan-dipert" data-aa-title="More courses by author link" data-ps-analytics="Link|More Courses by Alan Dipert|/content/pluralsight/en/authors/ala/alan-dipert.html">
+ <span class="cmp-button__text ps-button__text">More Courses by
+ Alan</span>
+ </a>
+ </div>
+ </div>
+
+ </div>
+</div>
+<div class="course-customer-stories-experiencefragment experiencefragment aem-GridColumn aem-GridColumn--default--12">
+
+
+
+
+
+</div>
+<main class="container responsivegrid aem-GridColumn aem-GridColumn--default--12">
+
+
+ <div id="container-4f593e7080" class="cmp-container">
+
+
+
+<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
+
+
+
+</div>
+
+ </div>
+
+
+</main>
+
+
+</div>
+
+ </div>
+
+
+</main>
+<div class="container responsivegrid aem-GridColumn aem-GridColumn--default--12">
+
+
+ <div id="container-54c0c4e5cd" class="cmp-container">
+
+
+
+<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
+
+ <div class="column-layout-component-wrapper aem-GridColumn aem-GridColumn--default--12"><div class="column-layout -gutter-2x-tiny -row-spacing-2x-tiny -column-count-1 -top-padding-2x-tiny -bottom-padding-2x-tiny ">
+ <div class="column-layout-column">
+
+
+
+
+
+ <div id="container-50181550c7" class="cmp-container">
+
+ <div class="experiencefragment">
+
+
+
+
+
+ <div id="container-500c953428" class="cmp-container">
+
+
+
+<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
+
+ <div class="free-form-component aem-GridColumn aem-GridColumn--default--12">
+
+
+ <style>
+ .ps-forrester-wave {
+ padding: 50px 40px 60px 72px;
+ max-width: 800px;
+}
+.forrester-wave-container {
+ background: #130F25;
+ border-radius: 16px;
+ display: flex;
+ flex-direction: column;
+ padding: 40px;
+ align-items: flex-start;
+ font-family: "PS TT Commons Regular", Helvetica, Roboto, Arial, sans-serif;
+}
+.ps-forrester-wave h3 {
+ font-size: 32px !important;
+ font-weight: 400;
+ line-height: 40px;
+ color: #ffffff;
+ margin: 0;
+}
+.ps-forrester-wave h3 span.lime {
+color: #130F25;
+ background: #CFFF6E;
+ padding: 0 8px;
+ border-radius: 4px;
+}
+.ps-forrester-wave p {
+ color: #BFBFBF;
+ font-size: 20px;
+ line-height: 30px;
+ font-weight: 500;
+}
+.ps-forrester-wave .image {
+ margin: 0 auto;
+ background-color: #ffffff;
+ border-radius: 13px;
+ margin-top: 40px;
+ padding: 13px;
+}
+ .ps-forrester-wave .image img {
+ max-width: 400px;
+ border-radius: 24px;
+}
+
+@media (max-width: 1024px) {
+ .ps-forrester-wave .image img { max-width: 100%}
+}
+
+@media screen and (min-width: 1024px) and (max-width: 1248px) {
+ .ps-forrester-wave {
+ max-width: 59%;
+ padding: 40px;
+ }
+}
+
+@media screen and (max-width: 1023px) and (min-width: 640px) {
+ .ps-forrester-wave {
+ max-width: 592px;
+ margin: 0 auto;
+ padding: 40px 0;
+ }
+}
+
+
+@media screen and (max-width: 639px) {
+ .ps-forrester-wave {
+ padding: 40px 0;
+ width: 100%;
+ }
+}
+ </style>
+
+
+
+ <div class="ps-forrester-wave">
+<div class="forrester-wave-container">
+<h3>2025 Forrester Wave™ names Pluralsight as a <span class="lime">Leader</span> among tech skills dev platforms </h3>
+<p>See how our offering and strategy stack up.</p>
+<div class="cmp-ps-button -button -ps-stroked-inky -large -stroked-navy ps-button">
+<a class="cmp-button ps-button style-primary" data-fancybox="" data-aa-title="learn-more" href="/resources/blog/news/2025-forrester-wave-leader">
+ <span class="cmp-button__text ps-button__text">Learn more</span>
+ </a>
+</div>
+<div class="image section">
+<img src="/content/dam/ps/images/resource-center/courses/forrester-wave-dots.webp" alt="forrester wave report" style=" " class="image--center ">
+</div>
+</div>
+</div>
+
+
+
+
+
+</div>
+
+
+</div>
+
+ </div>
+
+
+
+</div>
+
+
+ </div>
+
+
+ </div>
+
+</div>
+
+
+</div>
+
+
+</div>
+
+ </div>
+
+
+</div>
+<div class="experiencefragment aem-GridColumn aem-GridColumn--default--12">
+<div id="experiencefragment-606328ffbe" class="cmp-experiencefragment cmp-experiencefragment--unified-footer">
+
+
+ <div id="container-0ba18f866a" class="cmp-container">
+
+
+
+<div class="aem-Grid aem-Grid--12 aem-Grid--default--12 ">
+
+ <div class="brightedge aem-GridColumn aem-GridColumn--default--12"><div class="be-ix-link-block" data-current-page="https://www.pluralsight.com/courses/clojure-fundamentals-part-one">
+
+<div class="be-ix-link-block"><div class="be-related-link-container"><div class="be-label">Related Pages</div><ul class="be-list"><li class="be-list-item"><a class="be-related-link" href="https://www.pluralsight.com/businesses/small-business">Top-Tier Training for Small Businesses</a></li><li class="be-list-item"><a class="be-related-link" href="https://www.pluralsight.com/businesses/enterprise">Technology skills for enterprise</a></li><li class="be-list-item"><a class="be-related-link" href="https://www.pluralsight.com/solutions">Solutions for Tech Workforce Transformation</a></li></ul> </div></div>
+<!--
+ be_sdkms_pub:link-block; link-block_1.0.0.0; bodystr;
+ be_sdkms_date_modified:pn_tstr:Tue Jan 13 18:35:57 UTC 2026; pn_epoch:1768329357266;
+ be_sdkms_timer: 0;
+-->
+
+
+</div>
+
+<hr/>
+
+
+
+<link rel="stylesheet" href="/etc.clientlibs/ps/components/organisms/brightedge/clientlibs.lc-68fe3a9fc9fa7f82e8b82dd402d9baf2-lc.min.css" type="text/css">
+
+
+
+
+
+
+</div>
+<div class="free-form-component aem-GridColumn aem-GridColumn--default--12">
+
+
+ <style>
+ .ps-footer {
+ display: flex;
+ padding: var(--padding-60, 60px) var(--margin-1440, 100px);
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ gap: var(--margin-32, 32px);
+ background: var(--Brand-Inky-Blue, #130f25);
+
+ @media screen and (max-width: 1023px) {
+ padding: 60px 24px 48px 24px;
+ width: 100%;
+ // min-width: 414px;
+ max-width: 1023px;
+ }
+
+ @media screen and (min-width: 1024px) and (max-width: 1260px) {
+ padding: 60px 60px;
+ width: 100%;
+ min-width: 1024px;
+ max-width: 1260px;
+ }
+
+ footer#ftr {
+ @media screen and (max-width: 639px) {
+ max-width: 592px !important;
+ margin: 0 auto !important;
+ }
+
+ @media screen and (max-width: 1023px) {
+ max-width: unset;
+ margin: 0;
+ }
+ }
+
+ footer#ftr.footer-wrapper {
+ .footer-columns-wrapper {
+ margin: 0;
+ padding: 0;
+ display: flex;
+ width: 1240px;
+ max-width: 1240px;
+ padding-bottom: 40px;
+ align-items: flex-start;
+ gap: var(--margin-40, 40px);
+
+ @media screen and (max-width: 1023px) {
+ flex-wrap: wrap;
+ place-content: space-between;
+ column-gap: 24px;
+ max-width: 592px;
+ width: 100%;
+ padding-bottom: 0;
+ }
+
+ @media screen and (min-width: 1024px) and (max-width: 1260px) {
+ flex-wrap: wrap;
+ place-content: space-between;
+ width: unset;
+ max-width: unset;
+ }
+
+ .footer-column {
+ display: flex;
+ min-width: 120px;
+ max-width: 180px;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: var(--margin-12, 12px);
+ flex: 1 0 0;
+ align-self: stretch;
+
+ @media screen and (max-width: 1023px) {
+ min-width: 45% !important;
+ width: 100%;
+ flex: 1 !important;
+ }
+
+ @media screen and (min-width: 1024px) and (max-width: 1200px) {
+ min-width: 20% !important;
+ flex: 1 !important;
+ }
+
+ .footer-heading {
+ margin: 0;
+ color: var(--Text-Strong, #fff);
+ font-size: var(--size-h6, 20px);
+ font-style: normal;
+ font-weight: 500;
+ line-height: var(--line-height-h6, 26px);
+ /* 130% */
+ letter-spacing: var(--letter-spacing-h6, 0);
+ }
+
+ .footer-links {
+ font-family: "PS TT Commons Regular";
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: var(--margin-8, 8px);
+ align-self: stretch;
+
+ .footer-link {
+ display: flex;
+ align-items: center;
+ gap: var(--margin-4, 4px);
+
+ .footer-link-name {
+ color: var(--Links-Neutral, #bfbfbf);
+ font-family: "PS TT Commons Regular", Helvetica, Roboto, Arial, sans-serif;
+ font-size: var(--size-text-sm, 14px);
+ font-style: normal;
+ font-weight: 600;
+ line-height: var(--line-height-text-md, 24px);
+ /* 171.429% */
+ letter-spacing: var(--letter-spacing-text, 0);
+ }
+
+ .footer-link-name:focus-visible {
+ outline: none;
+ border-radius: 4px;
+ border: 2px solid var(--Links-Pink, #e7005e);
+ }
+
+ a {
+ text-decoration: none;
+
+ &:hover {
+ color: #fff;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .footer-last-column {
+ display: flex;
+ min-width: 280px;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: var(--margin-16, 16px);
+ flex: 1 0 0;
+ align-self: stretch;
+
+ @media screen and (min-width: 1024px) and (max-width: 1200px) {
+ min-width: 20% !important;
+ flex: 1 !important;
+ width: 100%;
+ }
+
+ .footer-copy {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: var(--margin-12, 12px);
+ align-self: stretch;
+
+ .footer-heading {
+ color: var(--Text-Strong, #fff);
+ font-family: "PS Commons";
+ font-size: var(--size-h6, 20px);
+ font-style: normal;
+ font-weight: 500;
+ line-height: var(--line-height-h6, 26px);
+ letter-spacing: var(--letter-spacing-h6, 0);
+ align-self: stretch;
+ }
+
+ .footer-subheading {
+ color: var(--Text-Weak, #bfbfbf);
+ font-family: "PS Commons";
+ font-size: var(--size-text-md, 16px);
+ font-style: normal;
+ font-weight: 400;
+ line-height: var(--line-height-text-md, 24px);
+ /* 150% */
+ letter-spacing: var(--letter-spacing-text, 0);
+ align-self: stretch;
+ }
+ }
+
+ .button-wrapper {
+ cursor: pointer;
+ transition: unset;
+ margin: 0;
+ text-transform: unset;
+ display: flex;
+ width: 130px;
+ max-width: 366px;
+ padding: var(--padding-4, 4px) var(--padding-24, 24px);
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ border-radius: 999px;
+ background: var(--Button-Surface-Solid, #fff);
+ color: var(--Button-Text-Solid, #130f25);
+ text-align: center;
+ font-family: "PS Commons";
+ font-size: var(--size-text-sm, 14px);
+ font-style: normal;
+ font-weight: 600;
+ line-height: var(--line-height-text-md, 24px);
+ letter-spacing: var(--letter-spacing-text, 0);
+ border: none;
+ z-index: 2;
+ position: relative;
+ transition: all 275ms ease-in-out;
+
+ &::after {
+ content: "";
+ height: 100%;
+ left: 0;
+ top: 0;
+ width: 0px;
+ position: absolute;
+ transition: all 0.3s ease;
+ -webkit-transition: all 0.7s ease;
+ z-index: -1;
+ }
+ }
+
+ .button-wrapper:hover::after {
+ width: 100%;
+ border-radius: 999px;
+ background: #dbd9da;
+ }
+
+ .button-wrapper:focus-visible {
+ border-radius: 30px;
+ border: 2px solid var(--Links-Pink, #e7005e);
+ outline: none;
+ }
+
+ .social-links {
+ display: flex;
+ padding-top: var(--padding-12, 12px);
+ justify-content: center;
+ align-items: center;
+ gap: var(--margin-32, 32px);
+ padding-inline-start: 0;
+
+ li {
+ transition: outline 0.2s ease;
+ }
+
+ li:focus-within {
+ border-radius: 4px;
+ border: 2px solid var(--Links-Pink, #e7005e);
+ }
+
+ li a:focus {
+ outline: none;
+ }
+ }
+ }
+
+ hr {
+ width: 100%;
+ height: 1px;
+ background: var(--Text-Weak, #bfbfbf);
+ margin-top: 32px;
+ margin-bottom: 32px;
+ }
+
+ .footer-utility {
+ display: flex;
+ width: 100%;
+ align-items: center;
+ gap: 16px;
+
+ @media screen and (max-width: 1023px) {
+ flex-direction: column;
+ }
+
+ .footer-logo-cp {
+ display: flex;
+ align-items: center;
+ gap: var(--margin-16, 16px);
+ flex: 1 0 0;
+
+ @media screen and (max-width: 1023px) {
+ flex-direction: column;
+ }
+
+ .logo-link {
+ width: 44px;
+ height: 44px;
+ aspect-ratio: 1/1;
+ }
+
+ .logo-link:focus {
+ outline: none;
+ border-radius: 4px;
+ border: 2px solid var(--Links-Pink, #ff1675);
+ }
+
+ .copyright {
+ color: var(--Text-Weak, #bfbfbf);
+ font-family: "PS Commons";
+ font-size: var(--size-text-xs, 12px);
+ font-style: normal;
+ font-weight: 400;
+ line-height: var(--line-height-text-xs, 18px);
+ /* 150% */
+ letter-spacing: var(--letter-spacing-text, 0);
+ }
+ }
+
+ .utility-links {
+ display: flex;
+ justify-content: flex-end;
+ align-items: center;
+ gap: var(--margin-24, 24px);
+ flex: 1 0 0;
+ list-style-type: none;
+ margin-top: 0;
+
+ @media screen and (max-width: 1023px) {
+ padding-inline-start: 0;
+ margin: 0;
+ }
+
+ .utility-link a {
+ color: var(--Text-Weak, #bfbfbf);
+ font-family: "PS Commons";
+ font-size: var(--size-text-xs, 12px);
+ font-style: normal;
+ font-weight: 400;
+ line-height: var(--line-height-text-xs, 18px);
+ /* 150% */
+ letter-spacing: var(--letter-spacing-text, 0);
+ text-decoration: none;
+ }
+
+ li {
+ transition: outline 0.2s ease;
+ }
+
+ li:focus-within {
+ border-radius: 4px;
+ border: 2px solid var(--Links-Pink, #e7005e);
+ }
+
+ li a:focus {
+ outline: none;
+ }
+ }
+ }
+ }
+}
+
+footer#ftr {
+ background-color: unset;
+ color: unset;
+ text-decoration: unset;
+ border-top: unset;
+ padding-bottom: unset;
+}
+
+footer#ftr a,
+footer#ftr a:hover {
+ color: var(--Links-Neutral, #bfbfbf);
+ text-decoration: unset;
+}
+
+footer ul {
+ margin-left: unset;
+ font-size: unset;
+ line-height: unset;
+ list-style-position: unset;
+ margin-bottom: unset;
+ font-weight: unset;
+ line-height: unset;
+ padding-left: unset;
+ margin-bottom: unset;
+}
+
+footer li {
+ margin-left: unset;
+ font-size: unset;
+ line-height: unset;
+ list-style-position: unset;
+ margin-bottom: unset;
+ font-weight: unset;
+ line-height: unset;
+ padding-left: unset;
+ margin-bottom: unset;
+
+ ul {
+ margin-left: unset;
+ }
+}
+
+li.footer-column-list-item:has(.footer-column-list-item-link.do-not-sell) {
+ display: none;
+}
+ </style>
+
+
+
+ <link rel="stylesheet" href="/etc.clientlibs/ps/clientlibs/clientlib-main.min.css" type="text/css">
+
+<div class="ps-footer">
+ <footer id="ftr" class="footer-wrapper">
+ <ul class="footer-columns-wrapper">
+ <li class="footer-column">
+ <h2 class="footer-heading">Support</h2>
+ <ul class="footer-links footer-policy-link-list">
+ <li class="footer-link"><a href="/contact" data-aa-title="footer-contact" data-ps-analyitcs="footer-link|Contact|https://www.pluralsight.com/contact" class="footer-link-name" onclick="updateFooterAnalytics ('Support', 'Contact', 'https://www.pluralsight.com/contact')">Contact</a></li>
+ <li class="footer-link"><a href="https://help.pluralsight.com/help" data-aa-title="footer-help-center" data-ps-analyitcs="footer-link|Help Center|https://www.pluralsight.com/contact" class="footer-link-name" onclick="updateFooterAnalytics ('Support', 'Help center', 'https://www.pluralsight.com/contact')">Help center</a></li>
+ <li class="footer-link"><a href="https://help.pluralsight.com/help/ip-allowlist" data-aa-title="footer-ip-allowlist" data-ps-analyitcs="footer-link|IP Allowlist|https://www.pluralsight.com/help/allowlist" class="footer-link-name" onclick="updateFooterAnalytics ('Support', 'IP allowlist', 'https://www.pluralsight.com/help/allowlist')">IP allowlist</a></li>
+ <li class="footer-link"><a href="/sitemap.xml" data-aa-title="footer-sitemap" data-ps-analyitcs="footer-link|Sitemap|https://www.pluralsight.com/sitemap.xml" class="footer-link-name" onclick="updateFooterAnalytics ('Support', 'Sitemap', 'https://www.pluralsight.com/sitemap.xml')">Sitemap</a></li>
+ <li class="footer-link"><a href="/product/downloads" data-aa-title="footer-downloads" data-ps-analyitcs="footer-link|Download Pluralsight|https://www.pluralsight.com/product/downloads" class="footer-link-name" onclick="updateFooterAnalytics ('Support', 'Download Pluralsight', 'https://www.pluralsight.com/product/downloads')">Download Pluralsight</a></li>
+ <li class="footer-link"><a href="/get-started" data-aa-title="footer-plans-pricing" data-ps-analyitcs="footer-link|View Plans|https://www.pluralsight.com/get-started" class="footer-link-name" onclick="updateFooterAnalytics ('Support', 'View plans', 'https://www.pluralsight.com/get-started')">View plans</a></li>
+ <li class="footer-link"><a href="/product/professional-services" data-aa-title="footer-professional-services" data-ps-analyitcs="footer-link|Professional Services|https://www.pluralsight.com/professional-services" class="footer-link-name" onclick="updateFooterAnalytics ('Support', 'Professional services', 'https://www.pluralsight.com/professional-services')">Professional services</a></li>
+ </ul>
+ </li>
+ <li class="footer-column">
+ <h2 class="footer-heading">Community</h2>
+ <ul class="footer-links">
+ <li class="footer-link"><a href="/resources/blog?unified-tags=guides" data-aa-title="footer-guides" data-ps-analyitcs="footer-link|Guides|https://www.pluralsight.com/browse" class="footer-link-name" onclick="updateFooterAnalytics ('Community', 'Guides', 'https://www.pluralsight.com/browse')">Guides</a></li>
+ <li class="footer-link"><a href="/teach" data-aa-title="footer-teach" data-ps-analyitcs="footer-link|Teach|https://www.pluralsight.com/teach" class="footer-link-name" onclick="updateFooterAnalytics ('Community', 'Become an Author', 'https://www.pluralsight.com/teach')">Become an Author</a></li>
+ <li class="footer-link"><a href="/partners" data-aa-title="footer-partner-with-pluralsight" data-ps-analyitcs="footer-link|Partner with Pluralsight|https://www.pluralsight.com/partners" class="footer-link-name" onclick="updateFooterAnalytics ('Community', 'Partner with Pluralsight', 'https://www.pluralsight.com/partners')">Partner with Pluralsight</a></li>
+ <li class="footer-link"><a href="/affiliate" data-aa-title="footer-affiliate-partners" data-ps-analyitcs="footer-link|Affiliate Partners|https://www.pluralsight.com/affiliate" class="footer-link-name" onclick="updateFooterAnalytics ('Community', 'Affiliate p artners', 'https://www.pluralsight.com/affiliate')">Affiliate partners</a></li>
+ <li class="footer-link"><a href="https://www.pluralsightone.org/" data-aa-title="footer-pluralsightone" data-ps-analyitcs="footer-link|Pluralsight One|https://www.pluralsightone.org/" class="footer-link-name" onclick="updateFooterAnalytics ('Community', 'Pluralsight One', 'https://www.pluralsightone.org/')">Pluralsight One</a></li>
+ <li class="footer-link"><a href="/authors" data-aa-title="footer-authors" data-ps-analyitcs="footer-link|Authors|https://www.pluralsight.com/authors" class="footer-link-name" onclick="updateFooterAnalytics ('Community', 'Authors', 'https://www.pluralsight.com/authors')">Authors</a></li>
+ </ul>
+ </li>
+ <li class="footer-column">
+ <h2 class="footer-heading">Company</h2>
+ <ul class="footer-links">
+ <li class="footer-link"><a href="/about" data-aa-title="footer-about" data-ps-analyitcs="footer-link|About Us|https://www.pluralsight.com/about" class="footer-link-name" onclick="updateFooterAnalytics ('Company', 'About u s', 'https://www.pluralsight.com/about')">About us</a></li>
+ <li class="footer-link"><a href="/careers" data-aa-title="footer-careers" data-ps-analyitcs="footer-link|Careers|https://www.pluralsight.com/careers" class="footer-link-name" onclick="updateFooterAnalytics ('Company', 'Careers', 'https://www.pluralsight.com/careers')">Careers</a></li>
+ <li class="footer-link"><a href="/newsroom" data-aa-title="footer-newsroom" data-ps-analyitcs="footer-link|Newsroom|https://www.pluralsight.com/newsroom" class="footer-link-name" onclick="updateFooterAnalytics ('Company', 'Newsroom', 'https://www.pluralsight.com/newsroom')">Newsroom</a></li>
+ <li class="footer-link"><a href="/resources" data-aa-title="footer-resources" data-ps-analyitcs="footer-link|Resources|https://www.pluralsight.com/resources" class="footer-link-name" onclick="updateFooterAnalytics ('Company', 'Resources', 'https://www.pluralsight.com/resources')">Resources</a></li>
+ </ul>
+ </li>
+ <li class="footer-column">
+ <h2 class="footer-heading">Industries</h2>
+ <ul class="footer-links">
+ <li class="footer-link"><a href="/industries/public-sector/higher-education" data-aa-title="footer-education" data-ps-analyitcs="footer-link|Education|https://www.pluralsight.com/industries/public-sector/higher-education" class="footer-link-name" onclick="updateFooterAnalytics ('Industries', 'Education', 'https://www.pluralsight.com/industries/public-sector/higher-education')">Education</a></li>
+ <li class="footer-link"><a href="/industries/finance" data-aa-title="footer-financial-services" data-ps-analyitcs="footer-link|Education|https://www.pluralsight.com/industries/finance" class="footer-link-name" onclick="updateFooterAnalytics ('Industries', 'Financial services (FSBI)', 'https://www.pluralsight.com/industries/finance')">Financial services (FSBI)</a></li>
+ <li class="footer-link"><a href="/industries/healthcare" data-aa-title="footer-healthcare" data-ps-analyitcs="footer-link|Healthcare|https://www.pluralsight.com/industries/healthcare" class="footer-link-name" onclick="updateFooterAnalytics ('Industries', 'Healthcare', 'https://www.pluralsight.com/industries/healthcare')">Healthcare</a></li>
+ <li class="footer-link"><a href="/industries/insurance" data-aa-title="footer-insurance" data-ps-analyitcs="footer-link|Insurance|https://www.pluralsight.com/industries/insurance" class="footer-link-name" onclick="updateFooterAnalytics ('Industries', 'Insurance', 'https://www.pluralsight.com/industries/insurance')">Insurance</a></li>
+ <li class="footer-link"><a href="https://www.pluralsightone.org/" data-aa-title="footer-non-profit" data-ps-analyitcs="footer-link|Non-Profit|https://www.pluralsightone.org/" class="footer-link-name" onclick="updateFooterAnalytics ('Industries', 'Nonprofit', 'https://www.pluralsightone.org/')">Nonprofit</a></li>
+ <li class="footer-link"><a href="/industries/public-sector" data-aa-title="footer-non-profit" data-ps-analyitcs="footer-link|Public Sector|https://www.pluralsight.com/industries/public-sector" class="footer-link-name" onclick="updateFooterAnalytics ('Industries', 'Public sector', 'https://www.pluralsight.com/industries/public-sector')">Public sector</a></li>
+ </ul>
+ </li>
+ <li class="footer-last-column">
+ <div class="footer-copy">
+ <div class="footer-heading">Get tech insights and updates</div>
+ <div class="footer-subheading">Don’t miss the latest industry news, career resources, offers, and more.</div>
+ </div>
+ <a class="button-wrapper" href="/subscribe">
+ Sign up now
+ </a>
+ <ul class="social-links">
+ <li class="social-link">
+ <a href="https://www.facebook.com/pluralsight" data-aa-title="footer-facebook-social" data-ps-analyitcs="footer-social|facebook-social|https://www.facebook.com/pluralsight" onclick="updateFooterAnalytics ('Social link', 'Facebook', 'https://www.facebook.com/pluralsight')" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
+ <path d="M9.83131 22V13.25H6.65631V9.62503H9.83131V6.86253C9.83131 3.72503 11.6938 2.00003 14.5563 2.00003C15.9188 2.00003 17.3438 2.23753 17.3438 2.23753V5.32503H15.7688C14.2188 5.32503 13.7313 6.28753 13.7313 7.27503V9.62503H17.2063L16.6438 13.25H13.7313V22H9.83131Z" fill="white" />
+ </svg>
+ </a>
+ </li>
+ <li class="social-link">
+ <a href="https://x.com/pluralsight" data-aa-title="footer-twitter-social" data-ps-analyitcs="footer-social|twitter-social|https://www.x.com/pluralsight" onclick="updateFooterAnalytics ('Social link', 'Twitter', 'https://www.x.com/pluralsight')" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
+ <path
+ d="M3 3.02434C3.51026 3.02125 4.02053 3.01839 4.5308 3.01671C4.54213 3.01668 4.54213 3.01668 4.55369 3.01664C4.71785 3.0161 4.88202 3.0156 5.04619 3.01514C5.1267 3.01492 5.20721 3.01469 5.28772 3.01445C5.29573 3.01442 5.30374 3.0144 5.312 3.01438C5.57162 3.01361 5.83123 3.01226 6.09085 3.0106C6.35766 3.0089 6.62448 3.0078 6.8913 3.00743C6.929 3.00738 6.9667 3.00732 7.0044 3.00726C7.01553 3.00724 7.01553 3.00724 7.02688 3.00722C7.14625 3.00701 7.26561 3.00617 7.38498 3.00511C7.50503 3.00405 7.62506 3.00364 7.74511 3.00391C7.81642 3.00404 7.88769 3.00368 7.95899 3.00259C8.00668 3.00192 8.05433 3.0019 8.10202 3.00241C8.12918 3.00268 8.15626 3.00267 8.18342 3.00186C8.33923 2.99746 8.33923 2.99746 8.38988 3.0417C8.4262 3.08436 8.45227 3.13133 8.47742 3.18115C8.49432 3.2123 8.51467 3.24004 8.536 3.26826C8.55983 3.29987 8.58172 3.33281 8.60391 3.36559C8.61374 3.38006 8.62357 3.39453 8.63341 3.409C8.64072 3.41977 8.64072 3.41977 8.64817 3.43075C8.66975 3.46251 8.69143 3.49421 8.71312 3.5259C8.71711 3.53173 8.7211 3.53755 8.72521 3.54356C8.76088 3.59566 8.79664 3.64769 8.83243 3.6997C8.84954 3.72457 8.86665 3.74946 8.88375 3.77434C8.89062 3.78434 8.8975 3.79434 8.90438 3.80434C9.13125 4.13434 9.13125 4.13434 9.35812 4.46434C9.36323 4.47176 9.36323 4.47176 9.36843 4.47933C9.37532 4.48935 9.38221 4.49937 9.3891 4.50939C9.40609 4.53411 9.42309 4.55883 9.4401 4.58355C9.48139 4.64356 9.52257 4.70365 9.56369 4.76378C9.59985 4.81665 9.63612 4.86944 9.67243 4.9222C9.68954 4.94707 9.70665 4.97195 9.72375 4.99684C9.73062 5.00684 9.7375 5.01684 9.74438 5.02684C9.97125 5.35684 9.97125 5.35684 10.1981 5.68684C10.2015 5.69178 10.2049 5.69673 10.2084 5.70183C10.2153 5.71185 10.2222 5.72187 10.2291 5.73189C10.2461 5.75661 10.2631 5.78133 10.2801 5.80605C10.3214 5.86606 10.3626 5.92615 10.4037 5.98628C10.4399 6.03915 10.4761 6.09194 10.5124 6.1447C10.5295 6.16957 10.5466 6.19446 10.5637 6.21934C10.5706 6.22934 10.5775 6.23934 10.5844 6.24934C10.7081 6.42934 10.8319 6.60934 10.9556 6.78934C10.959 6.79428 10.9624 6.79923 10.9659 6.80433C10.9728 6.81435 10.9797 6.82437 10.9866 6.83439C11.0036 6.85911 11.0206 6.88383 11.0376 6.90855C11.0789 6.96856 11.1201 7.02865 11.1612 7.08878C11.1974 7.14165 11.2336 7.19444 11.2699 7.2472C11.287 7.27207 11.3041 7.29696 11.3212 7.32184C11.3281 7.33184 11.335 7.34184 11.3419 7.35184C11.4931 7.57184 11.6444 7.79184 11.7956 8.01184C11.799 8.01678 11.8024 8.02173 11.8059 8.02683C11.8128 8.03685 11.8197 8.04687 11.8266 8.05689C11.8436 8.08161 11.8606 8.10633 11.8776 8.13105C11.9189 8.19106 11.9601 8.25115 12.0012 8.31128C12.0374 8.36415 12.0736 8.41694 12.1099 8.4697C12.127 8.49457 12.1441 8.51946 12.1613 8.54434C12.1681 8.55434 12.175 8.56434 12.1819 8.57434C12.3331 8.79434 12.4844 9.01434 12.6356 9.23434C12.639 9.23928 12.6424 9.24423 12.6459 9.24933C12.6528 9.25935 12.6597 9.26937 12.6666 9.27939C12.6836 9.30411 12.7006 9.32883 12.7176 9.35355C12.7589 9.41352 12.8 9.47357 12.8411 9.53367C12.868 9.573 12.895 9.61228 12.922 9.65152C12.9501 9.69222 12.9778 9.73306 13.005 9.77434C13.0343 9.74578 13.0613 9.71584 13.088 9.68481C13.0922 9.67988 13.0965 9.67495 13.1008 9.66988C13.1327 9.63295 13.1644 9.59592 13.1961 9.55887C13.2235 9.52684 13.2511 9.49494 13.2788 9.46309C13.3252 9.40953 13.3714 9.35572 13.4175 9.30184C13.4677 9.24319 13.518 9.18468 13.5686 9.1264C13.6072 9.08187 13.6456 9.03713 13.6839 8.99234C13.7063 8.96611 13.7288 8.9399 13.7513 8.91369C13.7699 8.89192 13.7886 8.87014 13.8072 8.84835C13.85 8.79838 13.893 8.74857 13.9361 8.6989C13.9784 8.65006 14.0205 8.60096 14.0625 8.55184C14.1127 8.49319 14.163 8.43468 14.2136 8.3764C14.2559 8.32756 14.298 8.27846 14.34 8.22934C14.3902 8.17069 14.4405 8.11218 14.4911 8.0539C14.5334 8.00506 14.5755 7.95596 14.6175 7.90684C14.6677 7.84819 14.718 7.78968 14.7686 7.7314C14.8109 7.68256 14.853 7.63346 14.895 7.58434C14.9452 7.52569 14.9955 7.46718 15.0461 7.4089C15.0884 7.36006 15.1305 7.31096 15.1725 7.26184C15.2227 7.20319 15.273 7.14468 15.3236 7.0864C15.3622 7.04187 15.4006 6.99713 15.4389 6.95234C15.4613 6.92611 15.4838 6.8999 15.5063 6.87369C15.5249 6.85192 15.5436 6.83014 15.5622 6.80835C15.605 6.75838 15.648 6.70857 15.6911 6.6589C15.7334 6.61006 15.7755 6.56096 15.8175 6.51184C15.8677 6.45319 15.918 6.39468 15.9686 6.3364C16.0109 6.28756 16.053 6.23846 16.095 6.18934C16.1452 6.13069 16.1955 6.07218 16.2461 6.0139C16.2884 5.96506 16.3305 5.91596 16.3725 5.86684C16.4227 5.80819 16.473 5.74968 16.5236 5.6914C16.5659 5.64256 16.608 5.59346 16.65 5.54434C16.7002 5.48569 16.7505 5.42718 16.8011 5.3689C16.8397 5.32437 16.8781 5.27963 16.9164 5.23484C16.9388 5.20861 16.9613 5.1824 16.9838 5.15619C17.0024 5.13442 17.0211 5.11264 17.0397 5.09085C17.0825 5.04088 17.1255 4.99107 17.1686 4.9414C17.2109 4.89256 17.253 4.84346 17.295 4.79434C17.3452 4.73569 17.3955 4.67718 17.4461 4.6189C17.4884 4.57006 17.5305 4.52096 17.5725 4.47184C17.6227 4.41319 17.673 4.35468 17.7236 4.2964C17.7659 4.24756 17.808 4.19846 17.85 4.14934C17.9002 4.09069 17.9505 4.03218 18.0011 3.9739C18.0434 3.92506 18.0855 3.87596 18.1275 3.82684C18.1777 3.76819 18.228 3.70968 18.2786 3.6514C18.3209 3.60256 18.363 3.55346 18.405 3.50434C18.4552 3.44569 18.5055 3.38718 18.5561 3.3289C18.5946 3.28445 18.6329 3.23978 18.6712 3.19507C18.6909 3.17205 18.7106 3.14906 18.7303 3.12605C18.7374 3.11778 18.7445 3.10951 18.7516 3.10124C18.7548 3.09753 18.7581 3.09381 18.7615 3.08999C18.7726 3.07705 18.7726 3.07705 18.7821 3.06319C18.8085 3.0273 18.8085 3.0273 18.8321 3.01953C18.8495 3.01772 18.8661 3.01758 18.8836 3.01802C18.8901 3.01798 18.8967 3.01793 18.9034 3.01789C18.9254 3.0178 18.9473 3.01809 18.9693 3.01838C18.985 3.01839 19.0007 3.01838 19.0165 3.01835C19.0592 3.01834 19.1019 3.01865 19.1446 3.01901C19.1893 3.01934 19.2339 3.01937 19.2786 3.01943C19.3631 3.0196 19.4477 3.02003 19.5322 3.02056C19.6285 3.02114 19.7248 3.02143 19.821 3.02169C20.019 3.02224 20.217 3.02317 20.415 3.02434C20.408 3.03379 20.4009 3.04323 20.3939 3.05266C20.39 3.05792 20.3861 3.06318 20.382 3.0686C20.3637 3.09254 20.344 3.11515 20.3241 3.13777C20.3154 3.14763 20.3068 3.1575 20.2982 3.16736C20.2939 3.17229 20.2896 3.17721 20.2852 3.18228C20.2658 3.20451 20.2467 3.22692 20.2275 3.24934C20.1964 3.28571 20.1651 3.32194 20.1337 3.35809C20.091 3.40733 20.0485 3.45679 20.0061 3.50633C19.9837 3.53256 19.9612 3.55877 19.9387 3.58498C19.9201 3.60675 19.9014 3.62853 19.8828 3.65032C19.84 3.70029 19.797 3.7501 19.7539 3.79978C19.7116 3.84861 19.6695 3.89771 19.6275 3.94684C19.5773 4.00548 19.527 4.06399 19.4764 4.12228C19.4341 4.17111 19.392 4.22021 19.35 4.26934C19.2998 4.32798 19.2495 4.38649 19.1989 4.44478C19.1566 4.49361 19.1145 4.54271 19.0725 4.59184C19.0223 4.65048 18.972 4.70899 18.9214 4.76728C18.8791 4.81611 18.837 4.86521 18.795 4.91434C18.7448 4.97298 18.6945 5.03149 18.6439 5.08978C18.6016 5.13861 18.5595 5.18771 18.5175 5.23684C18.4673 5.29548 18.417 5.35399 18.3664 5.41228C18.3278 5.4568 18.2894 5.50155 18.2511 5.54633C18.2287 5.57256 18.2062 5.59877 18.1837 5.62498C18.1651 5.64675 18.1464 5.66853 18.1278 5.69032C18.085 5.74029 18.042 5.7901 17.9989 5.83978C17.9566 5.88861 17.9145 5.93771 17.8725 5.98684C17.8223 6.04548 17.772 6.10399 17.7214 6.16228C17.6791 6.21111 17.637 6.26021 17.595 6.30934C17.5448 6.36798 17.4945 6.42649 17.4439 6.48478C17.4016 6.53361 17.3595 6.58271 17.3175 6.63184C17.2673 6.69048 17.217 6.74899 17.1664 6.80728C17.1241 6.85611 17.082 6.90521 17.04 6.95434C16.9898 7.01298 16.9395 7.07149 16.8889 7.12978C16.8503 7.1743 16.8119 7.21905 16.7736 7.26383C16.7512 7.29006 16.7287 7.31627 16.7062 7.34248C16.6876 7.36425 16.6689 7.38603 16.6503 7.40782C16.6075 7.45779 16.5645 7.5076 16.5214 7.55728C16.4791 7.60611 16.437 7.65521 16.395 7.70434C16.3448 7.76298 16.2945 7.82149 16.2439 7.87978C16.2016 7.92861 16.1595 7.97771 16.1175 8.02684C16.0673 8.08548 16.017 8.14399 15.9664 8.20228C15.9241 8.25111 15.882 8.30021 15.84 8.34934C15.7898 8.40798 15.7395 8.46649 15.6889 8.52478C15.6466 8.57361 15.6045 8.62271 15.5625 8.67184C15.5123 8.73048 15.462 8.78899 15.4114 8.84728C15.3691 8.89611 15.327 8.94521 15.285 8.99434C15.2348 9.05298 15.1845 9.11149 15.1339 9.16978C15.0953 9.2143 15.0569 9.25905 15.0186 9.30383C14.9962 9.33006 14.9737 9.35627 14.9512 9.38248C14.9326 9.40425 14.9139 9.42603 14.8953 9.44782C14.8525 9.49779 14.8095 9.5476 14.7664 9.59728C14.7241 9.64611 14.682 9.69521 14.64 9.74434C14.5898 9.80298 14.5395 9.86149 14.4889 9.91978C14.4466 9.96861 14.4045 10.0177 14.3625 10.0668C14.3123 10.1255 14.262 10.184 14.2114 10.2423C14.1691 10.2911 14.127 10.3402 14.085 10.3893C14.0389 10.4432 13.9927 10.497 13.9462 10.5506C13.8719 10.6363 13.7982 10.7226 13.725 10.8093C13.7484 10.8532 13.7736 10.8943 13.8028 10.9345C13.839 10.985 13.8743 11.0359 13.9092 11.0873C13.914 11.0943 13.9188 11.1014 13.9237 11.1086C13.9331 11.1224 13.9425 11.1362 13.9519 11.15C13.9705 11.1775 13.9893 11.2048 14.0081 11.2321C14.0114 11.2369 14.0147 11.2417 14.0181 11.2466C14.0246 11.2561 14.0311 11.2656 14.0377 11.2751C14.0547 11.2998 14.0717 11.3246 14.0887 11.3493C14.0956 11.3593 14.1025 11.3693 14.1094 11.3793C14.2331 11.5593 14.3569 11.7393 14.4806 11.9193C14.484 11.9243 14.4874 11.9292 14.4909 11.9343C14.4978 11.9443 14.5047 11.9544 14.5116 11.9644C14.5286 11.9891 14.5456 12.0138 14.5626 12.0385C14.6039 12.0986 14.6451 12.1587 14.6862 12.2188C14.7224 12.2716 14.7586 12.3244 14.7949 12.3772C14.812 12.4021 14.8291 12.427 14.8462 12.4518C14.8531 12.4618 14.86 12.4718 14.8669 12.4818C15.0181 12.7018 15.1694 12.9218 15.3206 13.1418C15.324 13.1468 15.3274 13.1517 15.3309 13.1568C15.3378 13.1668 15.3447 13.1769 15.3516 13.1869C15.3686 13.2116 15.3856 13.2363 15.4026 13.261C15.4439 13.3211 15.4851 13.3812 15.5262 13.4413C15.5624 13.4941 15.5986 13.5469 15.6349 13.5997C15.652 13.6246 15.6691 13.6495 15.6862 13.6743C15.6931 13.6843 15.7 13.6943 15.7069 13.7043C15.8581 13.9243 16.0094 14.1443 16.1606 14.3643C16.164 14.3693 16.1674 14.3742 16.1709 14.3793C16.1778 14.3893 16.1847 14.3994 16.1916 14.4094C16.2086 14.4341 16.2256 14.4588 16.2426 14.4835C16.2839 14.5436 16.3251 14.6037 16.3662 14.6638C16.4024 14.7166 16.4386 14.7694 16.4749 14.8222C16.492 14.8471 16.5091 14.872 16.5262 14.8968C16.5331 14.9068 16.54 14.9168 16.5469 14.9268C16.7256 15.1868 16.9044 15.4468 17.0831 15.7068C17.0865 15.7118 17.0899 15.7167 17.0934 15.7218C17.1003 15.7318 17.1072 15.7419 17.1141 15.7519C17.1311 15.7766 17.1481 15.8013 17.1651 15.826C17.2064 15.8861 17.2476 15.9462 17.2887 16.0063C17.3249 16.0591 17.3611 16.1119 17.3974 16.1647C17.4145 16.1896 17.4316 16.2145 17.4487 16.2393C17.4556 16.2493 17.4625 16.2593 17.4694 16.2693C17.6206 16.4893 17.7719 16.7093 17.9231 16.9293C17.9265 16.9343 17.9299 16.9392 17.9334 16.9443C17.9403 16.9543 17.9472 16.9644 17.9541 16.9744C17.9711 16.9991 17.9881 17.0238 18.0051 17.0485C18.0464 17.1086 18.0876 17.1687 18.1287 17.2288C18.1649 17.2816 18.2011 17.3344 18.2374 17.3872C18.2545 17.4121 18.2716 17.437 18.2887 17.4618C18.2956 17.4718 18.3025 17.4818 18.3094 17.4918C18.5775 17.8818 18.5775 17.8818 18.8456 18.2718C18.849 18.2768 18.8524 18.2817 18.8559 18.2868C18.8628 18.2968 18.8697 18.3069 18.8766 18.3169C18.8936 18.3416 18.9106 18.3663 18.9276 18.391C18.9689 18.4511 19.0101 18.5112 19.0512 18.5713C19.0874 18.6241 19.1236 18.6769 19.1599 18.7297C19.177 18.7546 19.1941 18.7795 19.2112 18.8043C19.2181 18.8143 19.225 18.8243 19.2319 18.8343C19.3831 19.0543 19.5344 19.2743 19.6856 19.4943C19.689 19.4993 19.6924 19.5042 19.6959 19.5093C19.7028 19.5194 19.7097 19.5294 19.7166 19.5394C19.7336 19.5641 19.7506 19.5888 19.7676 19.6135C19.8089 19.6736 19.8501 19.7337 19.8912 19.7938C19.9274 19.8466 19.9636 19.8994 19.9999 19.9522C20.017 19.9771 20.0341 20.002 20.0512 20.0268C20.0581 20.0368 20.065 20.0468 20.0719 20.0568C20.2231 20.2768 20.3744 20.4968 20.5256 20.7168C20.529 20.7218 20.5324 20.7267 20.5359 20.7318C20.5428 20.7418 20.5497 20.7519 20.5566 20.7619C20.5736 20.7866 20.5906 20.8113 20.6076 20.836C20.6489 20.8961 20.6901 20.9562 20.7312 21.0163C20.7673 21.0691 20.8036 21.1219 20.8399 21.1746C20.8503 21.1897 20.8607 21.2049 20.8711 21.22C20.8746 21.2251 20.8781 21.2302 20.8817 21.2355C20.8886 21.2455 20.8955 21.2556 20.9024 21.2657C20.9191 21.2899 20.9358 21.314 20.9527 21.338C20.9558 21.3425 20.959 21.347 20.9623 21.3517C20.9709 21.3639 20.9795 21.3761 20.9881 21.3883C21 21.4068 21 21.4068 21 21.4218C20.4895 21.423 19.979 21.4241 19.4685 21.4247C19.4609 21.4247 19.4534 21.4247 19.4456 21.4247C19.2815 21.4249 19.1174 21.4251 18.9532 21.4253C18.8727 21.4254 18.7923 21.4255 18.7118 21.4255C18.6998 21.4256 18.6998 21.4256 18.6875 21.4256C18.4278 21.4259 18.1681 21.4264 17.9083 21.427C17.6415 21.4276 17.3747 21.428 17.1078 21.4282C17.0701 21.4282 17.0325 21.4282 16.9948 21.4282C16.9837 21.4282 16.9837 21.4282 16.9723 21.4283C16.8529 21.4283 16.7334 21.4286 16.6139 21.429C16.4939 21.4294 16.3739 21.4296 16.2539 21.4295C16.1825 21.4294 16.1112 21.4296 16.0398 21.43C15.9922 21.4302 15.9445 21.4303 15.8969 21.4301C15.8697 21.43 15.8426 21.43 15.8154 21.4303C15.7862 21.4306 15.7569 21.4304 15.7277 21.4301C15.7192 21.4303 15.7108 21.4305 15.7021 21.4307C15.6462 21.4296 15.6462 21.4296 15.6209 21.4071C15.6074 21.39 15.596 21.373 15.585 21.3543C15.5797 21.3468 15.5744 21.3392 15.569 21.3315C15.5646 21.3248 15.5602 21.3181 15.5557 21.3113C15.5508 21.3037 15.5458 21.2962 15.5407 21.2884C15.5356 21.2808 15.5306 21.2732 15.5255 21.2653C15.4913 21.2133 15.4565 21.1621 15.4197 21.112C15.3957 21.0791 15.373 21.0454 15.3502 21.0117C15.3403 20.9972 15.3305 20.9827 15.3206 20.9682C15.3158 20.9611 15.311 20.9541 15.3061 20.9469C15.2873 20.9192 15.2684 20.8916 15.2494 20.864C15.2461 20.8592 15.2428 20.8544 15.2394 20.8495C15.2328 20.84 15.2263 20.8305 15.2198 20.821C15.1685 20.7466 15.1173 20.672 15.0663 20.5974C15.0301 20.5445 14.9939 20.4917 14.9576 20.439C14.9405 20.4141 14.9234 20.3892 14.9062 20.3643C14.8994 20.3543 14.8925 20.3443 14.8856 20.3343C14.7069 20.0743 14.5281 19.8143 14.3494 19.5543C14.346 19.5494 14.3426 19.5444 14.3391 19.5393C14.3322 19.5293 14.3253 19.5193 14.3184 19.5093C14.3014 19.4846 14.2844 19.4598 14.2674 19.4351C14.2261 19.3751 14.1849 19.315 14.1438 19.2549C14.1076 19.202 14.0714 19.1492 14.0351 19.0965C14.018 19.0716 14.0009 19.0467 13.9837 19.0218C13.9769 19.0118 13.97 19.0018 13.9631 18.9918C13.8119 18.7718 13.6606 18.5518 13.5094 18.3318C13.506 18.3269 13.5026 18.3219 13.4991 18.3168C13.4922 18.3068 13.4853 18.2968 13.4784 18.2868C13.4614 18.2621 13.4444 18.2373 13.4274 18.2126C13.3861 18.1526 13.3449 18.0925 13.3038 18.0324C13.2676 17.9795 13.2314 17.9267 13.1951 17.874C13.178 17.8491 13.1609 17.8242 13.1438 17.7993C13.1369 17.7893 13.13 17.7793 13.1231 17.7693C12.9719 17.5493 12.8206 17.3293 12.6694 17.1093C12.666 17.1044 12.6626 17.0994 12.6591 17.0943C12.6522 17.0843 12.6453 17.0743 12.6384 17.0643C12.6214 17.0396 12.6044 17.0148 12.5874 16.9901C12.5461 16.9301 12.5049 16.87 12.4638 16.8099C12.4276 16.757 12.3914 16.7042 12.3551 16.6515C12.338 16.6266 12.3209 16.6017 12.3038 16.5768C12.2969 16.5668 12.29 16.5568 12.2831 16.5468C12.1044 16.2868 11.9256 16.0268 11.7469 15.7668C11.7435 15.7619 11.7401 15.7569 11.7366 15.7518C11.7297 15.7418 11.7228 15.7318 11.7159 15.7218C11.6989 15.6971 11.6819 15.6723 11.6649 15.6476C11.6236 15.5876 11.5824 15.5275 11.5413 15.4674C11.5051 15.4145 11.4689 15.3617 11.4326 15.309C11.4155 15.2841 11.3984 15.2592 11.3812 15.2343C11.3744 15.2243 11.3675 15.2143 11.3606 15.2043C10.9069 14.5443 10.9069 14.5443 10.8965 14.5293C10.8897 14.5194 10.8829 14.5095 10.8761 14.4995C10.8581 14.4734 10.8402 14.4473 10.8223 14.4212C10.8185 14.4157 10.8148 14.4103 10.811 14.4047C10.8038 14.3943 10.7967 14.3839 10.7896 14.3735C10.7764 14.3543 10.7633 14.3353 10.7489 14.3169C10.74 14.3043 10.74 14.3043 10.74 14.2893C10.7127 14.3098 10.6917 14.331 10.6706 14.3578C10.6482 14.3857 10.6254 14.4129 10.6012 14.4393C10.578 14.4648 10.5559 14.4908 10.5342 14.5176C10.5053 14.5534 10.4747 14.5873 10.4435 14.6212C10.4194 14.6481 10.3968 14.6761 10.3741 14.7042C10.3525 14.7304 10.3297 14.7553 10.3068 14.7804C10.2895 14.7999 10.2731 14.8198 10.2567 14.8401C10.2278 14.8759 10.1972 14.9098 10.166 14.9437C10.1419 14.9706 10.1193 14.9986 10.0966 15.0267C10.075 15.0529 10.0522 15.0778 10.0293 15.1029C10.012 15.1224 9.99558 15.1423 9.97922 15.1626C9.95027 15.1984 9.91971 15.2323 9.88854 15.2662C9.8644 15.2931 9.84181 15.3211 9.81911 15.3492C9.79751 15.3754 9.7747 15.4003 9.75185 15.4254C9.73454 15.4449 9.71808 15.4648 9.70172 15.4851C9.67277 15.5209 9.64221 15.5548 9.61104 15.5887C9.5869 15.6156 9.56431 15.6436 9.54161 15.6717C9.52001 15.6979 9.4972 15.7228 9.47435 15.7479C9.45704 15.7674 9.44058 15.7873 9.42422 15.8076C9.39527 15.8434 9.36471 15.8773 9.33354 15.9112C9.3094 15.9381 9.28681 15.9661 9.26411 15.9942C9.24783 16.0139 9.23098 16.0329 9.21375 16.0518C9.19039 16.0775 9.16806 16.1036 9.14625 16.1306C9.11916 16.1641 9.09085 16.1961 9.06185 16.2279C9.04454 16.2474 9.02808 16.2673 9.01172 16.2876C8.98277 16.3234 8.95221 16.3573 8.92104 16.3912C8.8969 16.4181 8.87431 16.4461 8.85161 16.4742C8.83001 16.5004 8.8072 16.5253 8.78435 16.5504C8.76704 16.5699 8.75058 16.5898 8.73422 16.6101C8.70527 16.6459 8.67471 16.6798 8.64354 16.7137C8.6194 16.7406 8.59681 16.7686 8.57411 16.7967C8.55251 16.8229 8.5297 16.8478 8.50685 16.8729C8.48954 16.8924 8.47308 16.9123 8.45672 16.9326C8.42777 16.9684 8.39721 17.0023 8.36604 17.0362C8.3419 17.0631 8.31931 17.0911 8.29661 17.1192C8.27501 17.1454 8.2522 17.1703 8.22935 17.1954C8.21204 17.2149 8.19558 17.2348 8.17922 17.2551C8.15027 17.2909 8.11971 17.3248 8.08854 17.3587C8.0644 17.3856 8.04181 17.4136 8.01911 17.4417C7.99751 17.4679 7.9747 17.4928 7.95185 17.5179C7.93454 17.5374 7.91808 17.5573 7.90172 17.5776C7.87277 17.6134 7.84221 17.6473 7.81104 17.6812C7.7869 17.7081 7.76431 17.7361 7.74161 17.7642C7.72001 17.7904 7.6972 17.8153 7.67435 17.8404C7.65704 17.8599 7.64058 17.8798 7.62422 17.9001C7.59527 17.9359 7.56471 17.9698 7.53355 18.0037C7.5094 18.0306 7.48681 18.0586 7.46411 18.0867C7.44251 18.1129 7.4197 18.1378 7.39685 18.1629C7.37954 18.1824 7.36308 18.2023 7.34672 18.2226C7.31777 18.2584 7.28721 18.2923 7.25604 18.3262C7.2319 18.3531 7.20931 18.3811 7.18661 18.4092C7.16501 18.4354 7.1422 18.4603 7.11935 18.4854C7.10204 18.5049 7.08558 18.5248 7.06922 18.5451C7.04027 18.5809 7.00971 18.6148 6.97854 18.6487C6.9544 18.6756 6.93181 18.7036 6.90911 18.7317C6.89283 18.7514 6.87598 18.7704 6.85875 18.7893C6.83539 18.815 6.81306 18.8411 6.79125 18.8681C6.76416 18.9016 6.73585 18.9336 6.70685 18.9654C6.68954 18.9849 6.67308 19.0048 6.65672 19.0251C6.62777 19.0609 6.59721 19.0948 6.56604 19.1287C6.5419 19.1556 6.51931 19.1836 6.49661 19.2117C6.47501 19.2379 6.4522 19.2628 6.42935 19.2879C6.41204 19.3074 6.39558 19.3273 6.37922 19.3476C6.35027 19.3834 6.31971 19.4173 6.28854 19.4512C6.2644 19.4781 6.24181 19.5061 6.21911 19.5342C6.19751 19.5604 6.1747 19.5853 6.15185 19.6104C6.13454 19.6299 6.11808 19.6498 6.10172 19.6701C6.07277 19.7059 6.04221 19.7398 6.01104 19.7737C5.9869 19.8006 5.96431 19.8286 5.94161 19.8567C5.92001 19.8829 5.8972 19.9078 5.87435 19.9329C5.85704 19.9524 5.84058 19.9723 5.82422 19.9926C5.79527 20.0284 5.76471 20.0623 5.73354 20.0962C5.7094 20.1231 5.68681 20.1511 5.66411 20.1792C5.64251 20.2054 5.6197 20.2303 5.59685 20.2554C5.57954 20.2749 5.56308 20.2948 5.54672 20.3151C5.51777 20.3509 5.48721 20.3848 5.45604 20.4187C5.4319 20.4456 5.40931 20.4736 5.38661 20.5017C5.36501 20.5279 5.3422 20.5528 5.31935 20.5779C5.30204 20.5974 5.28558 20.6173 5.26922 20.6376C5.24027 20.6734 5.20971 20.7073 5.17854 20.7412C5.1544 20.7681 5.13181 20.7961 5.10911 20.8242C5.08751 20.8504 5.0647 20.8753 5.04185 20.9004C5.02454 20.9199 5.00808 20.9398 4.99172 20.9601C4.96277 20.9959 4.93221 21.0298 4.90104 21.0637C4.8769 21.0906 4.85431 21.1186 4.83161 21.1467C4.81001 21.1729 4.7872 21.1978 4.76435 21.2229C4.74704 21.2424 4.73058 21.2623 4.71422 21.2826C4.68411 21.3199 4.65237 21.3552 4.61977 21.3902C4.6048 21.4056 4.6048 21.4056 4.5975 21.4218C4.07033 21.4218 3.54315 21.4218 3 21.4218C3.01358 21.3947 3.02512 21.3794 3.04547 21.3576C3.06998 21.3309 3.09349 21.3038 3.11625 21.2756C3.14334 21.2421 3.17165 21.2101 3.20065 21.1783C3.21796 21.1588 3.23442 21.1388 3.25078 21.1186C3.27973 21.0828 3.31029 21.0489 3.34146 21.015C3.3656 20.9881 3.38819 20.9601 3.41089 20.932C3.43249 20.9058 3.4553 20.8809 3.47815 20.8558C3.49546 20.8363 3.51192 20.8163 3.52828 20.7961C3.55723 20.7603 3.58779 20.7264 3.61896 20.6925C3.6431 20.6656 3.66569 20.6376 3.68839 20.6095C3.70999 20.5833 3.7328 20.5584 3.75565 20.5333C3.77296 20.5138 3.78942 20.4938 3.80578 20.4736C3.83473 20.4378 3.86529 20.4039 3.89646 20.37C3.9206 20.3431 3.94319 20.3151 3.96589 20.287C3.98749 20.2608 4.0103 20.2359 4.03315 20.2108C4.05046 20.1913 4.06692 20.1713 4.08328 20.1511C4.11223 20.1153 4.14279 20.0814 4.17396 20.0475C4.1981 20.0206 4.22069 19.9926 4.24339 19.9645C4.26499 19.9383 4.2878 19.9134 4.31065 19.8883C4.32796 19.8688 4.34442 19.8488 4.36078 19.8286C4.38973 19.7928 4.42029 19.7589 4.45146 19.725C4.4756 19.6981 4.49819 19.6701 4.52089 19.642C4.54249 19.6158 4.5653 19.5909 4.58815 19.5658C4.60546 19.5463 4.62192 19.5263 4.63828 19.5061C4.66723 19.4703 4.69779 19.4364 4.72896 19.4025C4.7531 19.3756 4.77569 19.3476 4.79839 19.3195C4.81999 19.2933 4.8428 19.2684 4.86565 19.2433C4.88296 19.2238 4.89942 19.2038 4.91578 19.1836C4.94473 19.1478 4.97529 19.1139 5.00646 19.08C5.0306 19.0531 5.05319 19.0251 5.07589 18.997C5.09749 18.9708 5.1203 18.9459 5.14315 18.9208C5.16046 18.9013 5.17692 18.8813 5.19328 18.8611C5.22223 18.8253 5.25279 18.7914 5.28396 18.7575C5.3081 18.7306 5.33069 18.7026 5.35339 18.6745C5.37499 18.6483 5.3978 18.6234 5.42065 18.5983C5.43796 18.5788 5.45442 18.5588 5.47078 18.5386C5.49973 18.5028 5.53029 18.4689 5.56146 18.435C5.5856 18.4081 5.60819 18.3801 5.63089 18.352C5.65249 18.3258 5.6753 18.3009 5.69815 18.2758C5.71546 18.2563 5.73192 18.2363 5.74828 18.2161C5.77723 18.1803 5.80779 18.1464 5.83896 18.1125C5.8631 18.0856 5.88569 18.0576 5.90839 18.0295C5.92999 18.0033 5.9528 17.9784 5.97565 17.9533C5.99296 17.9338 6.00942 17.9138 6.02578 17.8936C6.05473 17.8578 6.08529 17.8239 6.11646 17.79C6.1406 17.7631 6.16319 17.7351 6.18589 17.707C6.20217 17.6872 6.21902 17.6682 6.23625 17.6493C6.25961 17.6237 6.28194 17.5975 6.30375 17.5706C6.33084 17.5371 6.35915 17.5051 6.38815 17.4733C6.40546 17.4538 6.42192 17.4338 6.43828 17.4136C6.46723 17.3778 6.49779 17.3439 6.52896 17.31C6.5531 17.2831 6.57569 17.2551 6.59839 17.227C6.61999 17.2008 6.6428 17.1759 6.66565 17.1508C6.68296 17.1313 6.69942 17.1113 6.71578 17.0911C6.74473 17.0553 6.77529 17.0214 6.80645 16.9875C6.8306 16.9606 6.85319 16.9326 6.87589 16.9045C6.89749 16.8783 6.9203 16.8534 6.94315 16.8283C6.96046 16.8088 6.97692 16.7888 6.99328 16.7686C7.02223 16.7328 7.05279 16.6989 7.08396 16.665C7.1081 16.6381 7.13069 16.6101 7.15339 16.582C7.17499 16.5558 7.1978 16.5309 7.22065 16.5058C7.23796 16.4863 7.25442 16.4663 7.27078 16.4461C7.29973 16.4103 7.33029 16.3764 7.36145 16.3425C7.3856 16.3156 7.40819 16.2876 7.43089 16.2595C7.45249 16.2333 7.4753 16.2084 7.49815 16.1833C7.51546 16.1638 7.53192 16.1438 7.54828 16.1236C7.57723 16.0878 7.60779 16.0539 7.63896 16.02C7.6631 15.9931 7.68569 15.9651 7.70839 15.937C7.72999 15.9108 7.7528 15.8859 7.77565 15.8608C7.79296 15.8413 7.80942 15.8213 7.82578 15.8011C7.85473 15.7653 7.88529 15.7314 7.91645 15.6975C7.9406 15.6706 7.96319 15.6426 7.98589 15.6145C8.00749 15.5883 8.0303 15.5634 8.05315 15.5383C8.07046 15.5188 8.08692 15.4988 8.10328 15.4786C8.13223 15.4428 8.16279 15.4089 8.19395 15.375C8.2181 15.3481 8.24069 15.3201 8.26339 15.292C8.28499 15.2658 8.3078 15.2409 8.33065 15.2158C8.34796 15.1963 8.36442 15.1763 8.38078 15.1561C8.40973 15.1203 8.44029 15.0864 8.47146 15.0525C8.4956 15.0256 8.51819 14.9976 8.54089 14.9695C8.56249 14.9433 8.5853 14.9184 8.60815 14.8933C8.62546 14.8738 8.64192 14.8538 8.65828 14.8336C8.68723 14.7978 8.71779 14.7639 8.74895 14.73C8.7731 14.7031 8.79569 14.6751 8.81839 14.647C8.83999 14.6208 8.8628 14.5959 8.88565 14.5708C8.90296 14.5513 8.91942 14.5313 8.93578 14.5111C8.96473 14.4753 8.99529 14.4414 9.02645 14.4075C9.0506 14.3806 9.07319 14.3526 9.09589 14.3245C9.11749 14.2983 9.1403 14.2734 9.16315 14.2483C9.18046 14.2288 9.19692 14.2088 9.21328 14.1886C9.24223 14.1528 9.27279 14.1189 9.30396 14.085C9.3281 14.0581 9.35069 14.0301 9.37339 14.002C9.38967 13.9822 9.40652 13.9632 9.42375 13.9443C9.44711 13.9187 9.46944 13.8925 9.49125 13.8656C9.51834 13.8321 9.54665 13.8001 9.57565 13.7683C9.59296 13.7488 9.60942 13.7288 9.62578 13.7086C9.65473 13.6728 9.68529 13.6389 9.71645 13.605C9.7406 13.5781 9.76319 13.5501 9.78589 13.522C9.80749 13.4958 9.8303 13.4709 9.85315 13.4458C9.87631 13.4197 9.89802 13.3926 9.91983 13.3654C9.93248 13.3503 9.94512 13.336 9.95868 13.3218C9.96218 13.3181 9.96568 13.3145 9.96929 13.3107C9.97918 13.3003 9.98919 13.2901 9.9992 13.2799C10.0144 13.2636 10.0144 13.2636 10.0106 13.2473C10.0012 13.2213 9.98431 13.1998 9.96844 13.1775C9.96086 13.1666 9.95328 13.1558 9.9457 13.1449C9.93989 13.1366 9.93989 13.1366 9.93395 13.1282C9.91653 13.1033 9.89936 13.0783 9.88219 13.0532C9.87533 13.0433 9.86848 13.0333 9.86162 13.0233C9.83396 12.9831 9.80639 12.9427 9.77881 12.9024C9.74265 12.8495 9.70638 12.7967 9.67007 12.744C9.65296 12.7191 9.63585 12.6942 9.61875 12.6693C9.61188 12.6593 9.605 12.6493 9.59812 12.6393C9.44688 12.4193 9.29563 12.1993 9.14437 11.9793C9.13927 11.9719 9.13927 11.9719 9.13407 11.9643C9.12718 11.9543 9.12029 11.9443 9.1134 11.9343C9.09641 11.9096 9.07941 11.8848 9.0624 11.8601C9.02111 11.8001 8.97993 11.74 8.93881 11.6799C8.90265 11.627 8.86638 11.5742 8.83007 11.5215C8.81296 11.4966 8.79585 11.4717 8.77875 11.4468C8.77187 11.4368 8.765 11.4268 8.75813 11.4168C8.60687 11.1968 8.45563 10.9768 8.30438 10.7568C8.29927 10.7494 8.29927 10.7494 8.29407 10.7418C8.28718 10.7318 8.28029 10.7218 8.2734 10.7118C8.25641 10.6871 8.23941 10.6623 8.2224 10.6376C8.18111 10.5776 8.13993 10.5175 8.09881 10.4574C8.06265 10.4045 8.02638 10.3517 7.99007 10.299C7.97296 10.2741 7.95585 10.2492 7.93875 10.2243C7.93187 10.2143 7.925 10.2043 7.91813 10.1943C7.69125 9.86434 7.69125 9.86434 7.46438 9.53434C7.45927 9.52691 7.45927 9.52691 7.45407 9.51934C7.44718 9.50932 7.44029 9.49931 7.4334 9.48929C7.41641 9.46456 7.39941 9.43984 7.3824 9.41513C7.34111 9.35511 7.29993 9.29502 7.25881 9.23489C7.22265 9.18202 7.18638 9.12924 7.15007 9.07647C7.13296 9.0516 7.11585 9.02672 7.09875 9.00184C7.09188 8.99184 7.085 8.98184 7.07812 8.97184C6.92688 8.75184 6.77562 8.53184 6.62437 8.31184C6.62097 8.30689 6.61757 8.30194 6.61407 8.29684C6.60718 8.28682 6.60029 8.27681 6.5934 8.26679C6.57641 8.24206 6.55941 8.21734 6.5424 8.19263C6.50111 8.13261 6.45993 8.07252 6.41881 8.01239C6.38265 7.95952 6.34638 7.90674 6.31007 7.85397C6.29296 7.8291 6.27585 7.80422 6.25875 7.77934C6.25188 7.76934 6.245 7.75934 6.23813 7.74934C6.08687 7.52934 5.93562 7.30934 5.78437 7.08934C5.78097 7.08439 5.77757 7.07944 5.77407 7.07434C5.76718 7.06432 5.76029 7.05431 5.7534 7.04429C5.73641 7.01956 5.71941 6.99484 5.7024 6.97013C5.66111 6.91011 5.61993 6.85002 5.57881 6.78989C5.54265 6.73702 5.50638 6.68424 5.47007 6.63147C5.45296 6.6066 5.43585 6.58172 5.41875 6.55684C5.41188 6.54684 5.405 6.53684 5.39812 6.52684C5.24688 6.30684 5.09562 6.08684 4.94437 5.86684C4.94097 5.86189 4.93757 5.85694 4.93407 5.85184C4.92718 5.84182 4.92029 5.83181 4.9134 5.82179C4.89641 5.79706 4.87941 5.77234 4.8624 5.74763C4.82111 5.68761 4.77993 5.62752 4.73881 5.56739C4.70265 5.51452 4.66638 5.46174 4.63007 5.40897C4.61296 5.3841 4.59585 5.35922 4.57875 5.33434C4.57187 5.32434 4.565 5.31434 4.55813 5.30434C4.40688 5.08434 4.25563 4.86434 4.10438 4.64434C4.10097 4.63939 4.09757 4.63444 4.09407 4.62934C4.08718 4.61932 4.08029 4.60931 4.0734 4.59929C4.05641 4.57456 4.03941 4.54984 4.0224 4.52513C3.98111 4.46511 3.93993 4.40502 3.89881 4.34489C3.86265 4.29202 3.82638 4.23924 3.79007 4.18647C3.77296 4.1616 3.75585 4.13672 3.73875 4.11184C3.73188 4.10184 3.725 4.09184 3.71812 4.08184C3.56687 3.86184 3.41562 3.64184 3.26438 3.42184C3.25927 3.41441 3.25927 3.41441 3.25407 3.40684C3.24718 3.39682 3.24029 3.38681 3.2334 3.37679C3.21641 3.35206 3.19941 3.32734 3.1824 3.30263C3.17566 3.29283 3.16893 3.28304 3.16219 3.27324C3.15887 3.26842 3.15555 3.26359 3.15212 3.25862C3.13268 3.23033 3.11328 3.20201 3.09393 3.17366C3.08953 3.16723 3.08514 3.16079 3.08061 3.15416C3.07205 3.14162 3.0635 3.12908 3.05495 3.11654C3.05105 3.11082 3.04715 3.10511 3.04312 3.09922C3.03968 3.09417 3.03624 3.08912 3.0327 3.08392C3.02543 3.07352 3.01781 3.06337 3.00996 3.05341C3 3.03934 3 3.03934 3 3.02434ZM5.1675 4.22434C5.17582 4.2375 5.18415 4.25066 5.19248 4.26381C5.19712 4.27114 5.20176 4.27846 5.20654 4.28601C5.22316 4.31173 5.24094 4.3363 5.25937 4.36074C5.29141 4.40385 5.32228 4.4476 5.35256 4.49195C5.37981 4.53185 5.40741 4.5715 5.43516 4.61105C5.47356 4.66581 5.51183 4.72066 5.55 4.77559C5.60055 4.84831 5.65129 4.92091 5.70212 4.99345C5.72392 5.02457 5.74571 5.0557 5.7675 5.08684C5.77625 5.09934 5.785 5.11184 5.79375 5.12434C5.82 5.16184 5.82 5.16184 5.84625 5.19934C5.85058 5.20552 5.85491 5.21171 5.85937 5.21808C5.86813 5.2306 5.8769 5.24312 5.88566 5.25564C5.90734 5.28661 5.92902 5.31758 5.95072 5.34855C6.00238 5.42227 6.05387 5.49611 6.10526 5.57003C6.15073 5.63544 6.1964 5.70071 6.24212 5.76595C6.26392 5.79707 6.28571 5.8282 6.3075 5.85934C6.31625 5.87184 6.325 5.88434 6.33375 5.89684C6.38625 5.97184 6.43875 6.04684 6.49125 6.12184C6.49558 6.12802 6.49991 6.13421 6.50437 6.14058C6.51313 6.1531 6.5219 6.16562 6.53066 6.17814C6.55234 6.20911 6.57402 6.24008 6.59572 6.27105C6.64738 6.34477 6.69887 6.41861 6.75026 6.49253C6.79573 6.55794 6.8414 6.62321 6.88712 6.68845C6.90892 6.71957 6.93071 6.7507 6.9525 6.78184C6.96125 6.79434 6.97 6.80684 6.97875 6.81934C6.99625 6.84434 7.01375 6.86934 7.03125 6.89434C7.03558 6.90052 7.03991 6.90671 7.04437 6.91308C7.05313 6.9256 7.0619 6.93812 7.07066 6.95064C7.09234 6.98161 7.11402 7.01258 7.13572 7.04355C7.18738 7.11727 7.23887 7.19111 7.29026 7.26503C7.33574 7.33044 7.3814 7.39571 7.42712 7.46095C7.44892 7.49207 7.47071 7.5232 7.4925 7.55434C7.50125 7.56684 7.51 7.57934 7.51875 7.59184C7.57125 7.66684 7.62375 7.74184 7.67625 7.81684C7.68058 7.82302 7.68491 7.82921 7.68937 7.83558C7.69813 7.8481 7.7069 7.86062 7.71566 7.87314C7.73734 7.90411 7.75902 7.93508 7.78072 7.96605C7.83238 8.03977 7.88387 8.11361 7.93526 8.18753C7.98073 8.25294 8.0264 8.31821 8.07212 8.38345C8.09392 8.41457 8.11571 8.4457 8.1375 8.47684C8.14625 8.48934 8.155 8.50184 8.16375 8.51434C8.18125 8.53934 8.19875 8.56434 8.21625 8.58934C8.22058 8.59552 8.22491 8.60171 8.22937 8.60808C8.23813 8.6206 8.2469 8.63312 8.25566 8.64564C8.27734 8.67661 8.29902 8.70758 8.32072 8.73855C8.37238 8.81227 8.42387 8.88611 8.47526 8.96003C8.52074 9.02544 8.5664 9.09071 8.61212 9.15595C8.63392 9.18707 8.65571 9.2182 8.6775 9.24934C8.68625 9.26184 8.695 9.27434 8.70375 9.28684C8.75625 9.36184 8.80875 9.43684 8.86125 9.51184C8.86558 9.51802 8.86991 9.52421 8.87437 9.53058C8.88313 9.5431 8.8919 9.55562 8.90066 9.56814C8.92234 9.59911 8.94402 9.63008 8.96572 9.66105C9.01738 9.73477 9.06887 9.80861 9.12026 9.88253C9.16573 9.94794 9.2114 10.0132 9.25712 10.0784C9.27892 10.1096 9.30071 10.1407 9.3225 10.1718C9.33125 10.1843 9.34 10.1968 9.34875 10.2093C9.36625 10.2343 9.38375 10.2593 9.40125 10.2843C9.40558 10.2905 9.40991 10.2967 9.41437 10.3031C9.42313 10.3156 9.4319 10.3281 9.44066 10.3406C9.46234 10.3716 9.48402 10.4026 9.50572 10.4335C9.55738 10.5073 9.60887 10.5811 9.66026 10.655C9.70574 10.7204 9.7514 10.7857 9.79712 10.8509C9.81892 10.8821 9.84071 10.9132 9.8625 10.9443C9.87125 10.9568 9.88 10.9693 9.88875 10.9818C9.94125 11.0568 9.99375 11.1318 10.0463 11.2068C10.0506 11.213 10.0549 11.2192 10.0594 11.2256C10.0681 11.2381 10.0769 11.2506 10.0857 11.2631C10.1073 11.2941 10.129 11.3251 10.1507 11.356C10.2024 11.4298 10.2539 11.5036 10.3053 11.5775C10.3507 11.6429 10.3964 11.7082 10.4421 11.7734C10.4639 11.8046 10.4857 11.8357 10.5075 11.8668C10.5162 11.8793 10.525 11.8918 10.5337 11.9043C10.5512 11.9293 10.5687 11.9543 10.5862 11.9793C10.5906 11.9855 10.5949 11.9917 10.5994 11.9981C10.6081 12.0106 10.6169 12.0231 10.6257 12.0356C10.6473 12.0666 10.669 12.0976 10.6907 12.1285C10.7424 12.2023 10.7939 12.2761 10.8453 12.35C10.8907 12.4154 10.9364 12.4807 10.9821 12.5459C11.0039 12.5771 11.0257 12.6082 11.0475 12.6393C11.0562 12.6518 11.065 12.6643 11.0738 12.6768C11.1525 12.7893 11.1525 12.7893 11.2312 12.9018C11.2356 12.908 11.2399 12.9142 11.2444 12.9206C11.2531 12.9331 11.2619 12.9456 11.2707 12.9581C11.2923 12.9891 11.314 13.0201 11.3357 13.051C11.3874 13.1248 11.4389 13.1986 11.4903 13.2725C11.54 13.3441 11.59 13.4155 11.64 13.4868C11.7002 13.5728 11.7603 13.6588 11.8203 13.745C11.8657 13.8104 11.9114 13.8757 11.9571 13.9409C11.9789 13.9721 12.0007 14.0032 12.0225 14.0343C12.0312 14.0468 12.04 14.0593 12.0487 14.0718C12.1275 14.1843 12.1275 14.1843 12.2063 14.2968C12.2106 14.303 12.2149 14.3092 12.2194 14.3156C12.2281 14.3281 12.2369 14.3406 12.2457 14.3531C12.2673 14.3841 12.289 14.4151 12.3107 14.446C12.3624 14.5198 12.4139 14.5936 12.4653 14.6675C12.5107 14.7329 12.5564 14.7982 12.6021 14.8634C12.6239 14.8946 12.6457 14.9257 12.6675 14.9568C12.6762 14.9693 12.685 14.9818 12.6938 14.9943C12.7113 15.0193 12.7288 15.0443 12.7463 15.0693C12.7506 15.0755 12.7549 15.0817 12.7594 15.0881C12.7681 15.1006 12.7769 15.1131 12.7857 15.1256C12.8073 15.1566 12.829 15.1876 12.8507 15.2185C12.9024 15.2923 12.9539 15.3661 13.0053 15.44C13.0507 15.5054 13.0964 15.5707 13.1421 15.6359C13.1639 15.6671 13.1857 15.6982 13.2075 15.7293C13.2163 15.7418 13.225 15.7543 13.2338 15.7668C13.2863 15.8418 13.3387 15.9168 13.3912 15.9918C13.3956 15.998 13.3999 16.0042 13.4044 16.0106C13.4131 16.0231 13.4219 16.0356 13.4307 16.0481C13.4523 16.0791 13.474 16.1101 13.4957 16.141C13.5474 16.2148 13.5989 16.2886 13.6503 16.3625C13.6957 16.4279 13.7414 16.4932 13.7871 16.5584C13.8089 16.5896 13.8307 16.6207 13.8525 16.6518C13.8612 16.6643 13.87 16.6768 13.8787 16.6893C13.9575 16.8018 13.9575 16.8018 14.0363 16.9143C14.0406 16.9205 14.0449 16.9267 14.0494 16.9331C14.0581 16.9456 14.0669 16.9581 14.0757 16.9706C14.0973 17.0016 14.119 17.0326 14.1407 17.0635C14.1924 17.1373 14.2439 17.2111 14.2953 17.285C14.3407 17.3504 14.3864 17.4157 14.4321 17.4809C14.4539 17.5121 14.4757 17.5432 14.4975 17.5743C14.5062 17.5868 14.515 17.5993 14.5237 17.6118C14.5412 17.6368 14.5588 17.6618 14.5763 17.6868C14.5806 17.693 14.5849 17.6992 14.5894 17.7056C14.5981 17.7181 14.6069 17.7306 14.6157 17.7431C14.6373 17.7741 14.659 17.8051 14.6807 17.836C14.7324 17.9098 14.7839 17.9836 14.8353 18.0575C14.8807 18.1229 14.9264 18.1882 14.9721 18.2534C14.9939 18.2846 15.0157 18.3157 15.0375 18.3468C15.0462 18.3593 15.055 18.3718 15.0638 18.3843C15.1425 18.4968 15.1425 18.4968 15.2212 18.6093C15.2256 18.6155 15.2299 18.6217 15.2344 18.6281C15.2431 18.6406 15.2519 18.6531 15.2607 18.6656C15.2823 18.6966 15.304 18.7276 15.3257 18.7585C15.3774 18.8323 15.4289 18.9061 15.4803 18.98C15.5257 19.0454 15.5714 19.1107 15.6171 19.176C15.6389 19.2071 15.6607 19.2382 15.6825 19.2693C15.6912 19.2818 15.7 19.2943 15.7087 19.3068C15.7262 19.3318 15.7437 19.3568 15.7612 19.3818C15.7656 19.388 15.7699 19.3942 15.7744 19.4006C15.7831 19.4131 15.7919 19.4256 15.8007 19.4381C15.8223 19.4691 15.844 19.5001 15.8657 19.531C15.9174 19.6048 15.9689 19.6786 16.0203 19.7525C16.0657 19.8179 16.1114 19.8832 16.1571 19.9485C16.1745 19.9733 16.192 19.9982 16.2094 20.0231C16.218 20.0355 16.2267 20.0479 16.2354 20.0603C16.2585 20.0933 16.2816 20.1263 16.3047 20.1593C16.3095 20.1663 16.3144 20.1732 16.3193 20.1803C16.3287 20.1937 16.338 20.2071 16.3473 20.2205C16.3515 20.2264 16.3557 20.2324 16.36 20.2386C16.3637 20.2439 16.3674 20.2491 16.3712 20.2546C16.3793 20.2665 16.3793 20.2665 16.3875 20.2743C16.4004 20.2751 16.4134 20.2753 16.4264 20.2753C16.4349 20.2753 16.4433 20.2753 16.4521 20.2753C16.4615 20.2753 16.4709 20.2753 16.4807 20.2752C16.4907 20.2752 16.5007 20.2752 16.5107 20.2753C16.5384 20.2753 16.5661 20.2752 16.5938 20.2752C16.6236 20.2752 16.6534 20.2752 16.6832 20.2752C16.7349 20.2752 16.7866 20.2752 16.8383 20.2751C16.9131 20.2751 16.9878 20.275 17.0625 20.275C17.1838 20.275 17.305 20.275 17.4263 20.2749C17.5441 20.2748 17.6619 20.2748 17.7797 20.2747C17.787 20.2747 17.7942 20.2747 17.8017 20.2747C17.8381 20.2747 17.8745 20.2747 17.9109 20.2747C18.2131 20.2746 18.5153 20.2745 18.8175 20.2743C18.8092 20.2612 18.8009 20.2481 18.7926 20.235C18.7879 20.2277 18.7833 20.2204 18.7785 20.2129C18.7609 20.1854 18.7423 20.1588 18.7233 20.1323C18.7154 20.1213 18.7076 20.1102 18.6998 20.0992C18.6957 20.0935 18.6917 20.0878 18.6875 20.082C18.666 20.0517 18.6447 20.0212 18.6234 19.9907C18.6145 19.978 18.6056 19.9653 18.5967 19.9525C18.5901 19.943 18.5901 19.943 18.5833 19.9334C18.5703 19.9147 18.5573 19.8961 18.5442 19.8775C18.4926 19.8038 18.4411 19.73 18.3897 19.6561C18.3443 19.5907 18.2986 19.5255 18.2529 19.4602C18.2311 19.4291 18.2093 19.398 18.1875 19.3668C18.1788 19.3543 18.17 19.3418 18.1612 19.3293C18.1087 19.2543 18.0563 19.1793 18.0037 19.1043C17.9994 19.0982 17.9951 19.092 17.9906 19.0856C17.9819 19.0731 17.9731 19.0606 17.9643 19.048C17.9427 19.0171 17.921 18.9861 17.8993 18.9551C17.8476 18.8814 17.7961 18.8076 17.7447 18.7336C17.6993 18.6682 17.6536 18.603 17.6079 18.5377C17.5861 18.5066 17.5643 18.4755 17.5425 18.4443C17.5337 18.4318 17.525 18.4193 17.5162 18.4068C17.4987 18.3818 17.4813 18.3568 17.4638 18.3318C17.4594 18.3257 17.4551 18.3195 17.4506 18.3131C17.4419 18.3006 17.4331 18.2881 17.4243 18.2755C17.4027 18.2446 17.381 18.2136 17.3593 18.1826C17.3076 18.1089 17.2561 18.0351 17.2047 17.9611C17.1593 17.8957 17.1136 17.8305 17.0679 17.7652C17.0461 17.7341 17.0243 17.703 17.0025 17.6718C16.9938 17.6593 16.985 17.6468 16.9762 17.6343C16.9237 17.5593 16.8713 17.4843 16.8187 17.4093C16.8144 17.4032 16.8101 17.397 16.8056 17.3906C16.7969 17.3781 16.7881 17.3656 16.7793 17.353C16.7577 17.3221 16.736 17.2911 16.7143 17.2601C16.6626 17.1864 16.6111 17.1126 16.5597 17.0386C16.5143 16.9732 16.4686 16.908 16.4229 16.8427C16.4011 16.8116 16.3793 16.7805 16.3575 16.7493C16.3487 16.7368 16.34 16.7243 16.3312 16.7118C16.3137 16.6868 16.2963 16.6618 16.2788 16.6368C16.2744 16.6307 16.2701 16.6245 16.2656 16.6181C16.2569 16.6056 16.2481 16.5931 16.2393 16.5805C16.2177 16.5496 16.196 16.5186 16.1743 16.4876C16.1226 16.4139 16.0711 16.3401 16.0197 16.2661C15.9743 16.2007 15.9286 16.1355 15.8829 16.0702C15.8611 16.0391 15.8393 16.008 15.8175 15.9768C15.8088 15.9643 15.8 15.9518 15.7913 15.9393C15.7387 15.8643 15.6862 15.7893 15.6337 15.7143C15.6294 15.7082 15.6251 15.702 15.6206 15.6956C15.6119 15.6831 15.6031 15.6706 15.5943 15.658C15.5727 15.6271 15.551 15.5961 15.5293 15.5651C15.4776 15.4914 15.4261 15.4176 15.3747 15.3436C15.3293 15.2782 15.2836 15.213 15.2379 15.1477C15.2161 15.1166 15.1943 15.0855 15.1725 15.0543C15.1637 15.0418 15.155 15.0293 15.1462 15.0168C15.1287 14.9918 15.1112 14.9668 15.0938 14.9418C15.0894 14.9357 15.0851 14.9295 15.0806 14.9231C15.0719 14.9106 15.0631 14.8981 15.0543 14.8855C15.0327 14.8546 15.011 14.8236 14.9893 14.7926C14.9376 14.7189 14.8861 14.6451 14.8347 14.5711C14.7893 14.5057 14.7436 14.4405 14.6979 14.3752C14.6761 14.3441 14.6543 14.313 14.6325 14.2818C14.6238 14.2693 14.615 14.2568 14.6062 14.2443C14.5537 14.1693 14.5013 14.0943 14.4487 14.0193C14.4444 14.0132 14.4401 14.007 14.4356 14.0006C14.4269 13.9881 14.4181 13.9756 14.4093 13.963C14.3877 13.9321 14.366 13.9011 14.3443 13.8701C14.2926 13.7964 14.2411 13.7226 14.1897 13.6486C14.1443 13.5832 14.0986 13.518 14.0529 13.4527C14.0311 13.4216 14.0093 13.3905 13.9875 13.3593C13.9787 13.3468 13.97 13.3343 13.9612 13.3218C13.9437 13.2968 13.9263 13.2718 13.9088 13.2468C13.9044 13.2407 13.9001 13.2345 13.8956 13.2281C13.8869 13.2156 13.8781 13.2031 13.8693 13.1905C13.8477 13.1596 13.826 13.1286 13.8043 13.0976C13.7526 13.0239 13.7011 12.9501 13.6497 12.8761C13.6043 12.8107 13.5586 12.7455 13.5129 12.6802C13.4911 12.6491 13.4693 12.618 13.4475 12.5868C13.4388 12.5743 13.43 12.5618 13.4213 12.5493C13.4038 12.5243 13.3862 12.4993 13.3687 12.4743C13.3644 12.4682 13.3601 12.462 13.3556 12.4556C13.3469 12.4431 13.3381 12.4306 13.3293 12.418C13.3077 12.3871 13.286 12.3561 13.2643 12.3251C13.2126 12.2514 13.1611 12.1776 13.1097 12.1036C13.0643 12.0382 13.0186 11.973 12.9729 11.9077C12.9511 11.8766 12.9293 11.8455 12.9075 11.8143C12.8988 11.8018 12.89 11.7893 12.8813 11.7768C12.8288 11.7018 12.7762 11.6268 12.7238 11.5518C12.7194 11.5457 12.7151 11.5395 12.7106 11.5331C12.7019 11.5206 12.6931 11.5081 12.6843 11.4955C12.6627 11.4646 12.641 11.4336 12.6193 11.4026C12.5676 11.3289 12.5161 11.2551 12.4647 11.1811C12.4193 11.1157 12.3736 11.0505 12.3279 10.9852C12.3061 10.9541 12.2843 10.923 12.2625 10.8918C12.2538 10.8793 12.245 10.8668 12.2362 10.8543C12.1837 10.7793 12.1313 10.7043 12.0787 10.6293C12.0744 10.6232 12.0701 10.617 12.0656 10.6106C12.0569 10.5981 12.0481 10.5856 12.0393 10.573C12.0177 10.5421 11.996 10.5111 11.9743 10.4801C11.9226 10.4064 11.8711 10.3326 11.8197 10.2586C11.7743 10.1932 11.7286 10.128 11.6829 10.0627C11.6611 10.0316 11.6393 10.0005 11.6175 9.96934C11.6087 9.95684 11.6 9.94434 11.5912 9.93184C11.5737 9.90684 11.5563 9.88184 11.5388 9.85684C11.5344 9.85065 11.5301 9.84447 11.5256 9.83809C11.5169 9.82557 11.5081 9.81306 11.4993 9.80054C11.4777 9.76956 11.456 9.73859 11.4343 9.70763C11.3826 9.6339 11.3311 9.56006 11.2797 9.48614C11.2343 9.42073 11.1886 9.35546 11.1429 9.29022C11.1211 9.2591 11.0993 9.22797 11.0775 9.19684C11.0688 9.18434 11.06 9.17184 11.0513 9.15934C11.0338 9.13434 11.0162 9.10934 10.9987 9.08434C10.9944 9.07815 10.9901 9.07197 10.9856 9.06559C10.9769 9.05307 10.9681 9.04056 10.9593 9.02804C10.9377 8.99706 10.916 8.96609 10.8943 8.93513C10.8426 8.8614 10.7911 8.78756 10.7397 8.71364C10.6943 8.64823 10.6486 8.58296 10.6029 8.51772C10.5811 8.4866 10.5593 8.45547 10.5375 8.42434C10.5287 8.41184 10.52 8.39934 10.5113 8.38684C10.4588 8.31184 10.4062 8.23684 10.3537 8.16184C10.3494 8.15565 10.3451 8.14946 10.3406 8.14309C10.3319 8.13057 10.3231 8.11806 10.3143 8.10554C10.2927 8.07456 10.271 8.04359 10.2493 8.01263C10.1976 7.9389 10.1461 7.86506 10.0947 7.79114C10.0493 7.72573 10.0036 7.66046 9.95788 7.59522C9.93608 7.5641 9.91429 7.53297 9.8925 7.50184C9.88375 7.48934 9.875 7.47684 9.86625 7.46434C9.84875 7.43934 9.83125 7.41434 9.81375 7.38934C9.80942 7.38315 9.80509 7.37697 9.80063 7.37059C9.79187 7.35807 9.7831 7.34556 9.77434 7.33304C9.75266 7.30206 9.73098 7.27109 9.70928 7.24013C9.65762 7.1664 9.60613 7.09256 9.55474 7.01864C9.50926 6.95323 9.4636 6.88796 9.41788 6.82272C9.39608 6.7916 9.37429 6.76047 9.3525 6.72934C9.34375 6.71684 9.335 6.70434 9.32625 6.69184C9.30875 6.66684 9.29125 6.64184 9.27375 6.61684C9.26942 6.61065 9.26509 6.60447 9.26063 6.59809C9.25187 6.58557 9.2431 6.57306 9.23434 6.56054C9.21266 6.52956 9.19098 6.49859 9.16928 6.46763C9.11762 6.3939 9.06613 6.32006 9.01474 6.24614C8.96926 6.18073 8.9236 6.11546 8.87788 6.05022C8.85608 6.0191 8.83429 5.98797 8.8125 5.95684C8.80375 5.94434 8.795 5.93184 8.78625 5.91934C8.73375 5.84434 8.68125 5.76934 8.62875 5.69434C8.62442 5.68815 8.62009 5.68196 8.61563 5.67559C8.60687 5.66307 8.5981 5.65056 8.58934 5.63804C8.56766 5.60706 8.54598 5.57609 8.52428 5.54513C8.47262 5.4714 8.42113 5.39756 8.36974 5.32364C8.32427 5.25823 8.2786 5.19296 8.23288 5.12772C8.21108 5.0966 8.18929 5.06547 8.1675 5.03434C8.15875 5.02184 8.15 5.00934 8.14125 4.99684C8.12375 4.97184 8.10625 4.94684 8.08875 4.92184C8.08225 4.91256 8.08225 4.91256 8.07563 4.90309C8.06687 4.89057 8.0581 4.87806 8.04934 4.86554C8.02766 4.83456 8.00598 4.80359 7.98428 4.77263C7.93773 4.7062 7.8913 4.63969 7.845 4.57309C7.74129 4.42385 7.74129 4.42385 7.63641 4.27543C7.63329 4.27106 7.63018 4.26669 7.62698 4.26219C7.61326 4.24242 7.61326 4.24242 7.5975 4.22434C7.58456 4.22361 7.57159 4.22341 7.55863 4.22341C7.55015 4.2234 7.54167 4.22338 7.53293 4.22337C7.51878 4.2234 7.51878 4.2234 7.50435 4.22343C7.49432 4.22343 7.48429 4.22342 7.47426 4.22341C7.44657 4.2234 7.41888 4.22343 7.39119 4.22347C7.36138 4.2235 7.33157 4.22349 7.30176 4.22348C7.25006 4.22348 7.19837 4.2235 7.14668 4.22354C7.07194 4.2236 6.9972 4.22362 6.92246 4.22363C6.80122 4.22365 6.67997 4.2237 6.55873 4.22377C6.44092 4.22384 6.32311 4.22389 6.2053 4.22392C6.19441 4.22393 6.19441 4.22393 6.18331 4.22393C6.1469 4.22394 6.1105 4.22395 6.0741 4.22396C5.7719 4.22404 5.4697 4.22417 5.1675 4.22434Z"
+ fill="white"
+ />
+ </svg>
+ </a>
+ </li>
+ <li class="social-link">
+ <a href="https://www.instagram.com/pluralsight" data-aa-title="footer-instagram-social" data-ps-analyitcs="footer-social|instagram-social|https://www.instagram.com/pluralsight" onclick="updateFooterAnalytics ('Social link', 'Twitter', 'https://www.instagram.com/pluralsight')" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
+ <path
+ fill-rule="evenodd"
+ clip-rule="evenodd"
+ d="M12 2C9.284 2 8.944 2.01133 7.87733 2.06C6.81267 2.10867 6.08533 2.278 5.44933 2.52533C4.78267 2.776 4.178 3.16933 3.678 3.67867C3.16948 4.17809 2.77591 4.78233 2.52467 5.44933C2.27867 6.08533 2.10867 6.81333 2.06 7.878C2.012 8.944 2 9.28333 2 12C2 14.7167 2.01133 15.056 2.06 16.1227C2.10867 17.1873 2.278 17.9147 2.52533 18.5507C2.776 19.2173 3.16933 19.822 3.67867 20.322C4.1781 20.8305 4.78234 21.2241 5.44933 21.4753C6.08533 21.722 6.81267 21.8913 7.87733 21.94C8.944 21.9887 9.284 22 12 22C14.716 22 15.056 21.9887 16.1227 21.94C17.1873 21.8913 17.9147 21.722 18.5507 21.4747C19.2173 21.224 19.822 20.8307 20.322 20.3213C20.8305 19.8219 21.2241 19.2177 21.4753 18.5507C21.722 17.9147 21.8913 17.1873 21.94 16.1227C21.9887 15.056 22 14.716 22 12C22 9.284 21.9887 8.944 21.94 7.87733C21.8913 6.81267 21.722 6.08533 21.4747 5.44933C21.2236 4.78204 20.83 4.17755 20.3213 3.678C19.8219 3.16948 19.2177 2.77591 18.5507 2.52467C17.9147 2.27867 17.1867 2.10867 16.122 2.06C15.056 2.012 14.7167 2 12 2ZM12 3.802C14.67 3.802 14.9867 3.812 16.0413 3.86C17.016 3.90467 17.5453 4.06667 17.898 4.20467C18.3647 4.38533 18.698 4.60267 19.048 4.952C19.398 5.302 19.6147 5.63533 19.7953 6.102C19.9327 6.45467 20.0953 6.984 20.14 7.95867C20.188 9.01333 20.198 9.33 20.198 12C20.198 14.67 20.188 14.9867 20.14 16.0413C20.0953 17.016 19.9333 17.5453 19.7953 17.898C19.6353 18.3324 19.3799 18.7253 19.048 19.048C18.7254 19.38 18.3324 19.6354 17.898 19.7953C17.5453 19.9327 17.016 20.0953 16.0413 20.14C14.9867 20.188 14.6707 20.198 12 20.198C9.32933 20.198 9.01333 20.188 7.95867 20.14C6.984 20.0953 6.45467 19.9333 6.102 19.7953C5.66764 19.6353 5.27467 19.3799 4.952 19.048C4.62012 18.7253 4.36475 18.3323 4.20467 17.898C4.06733 17.5453 3.90467 17.016 3.86 16.0413C3.812 14.9867 3.802 14.67 3.802 12C3.802 9.33 3.812 9.01333 3.86 7.95867C3.90467 6.984 4.06667 6.45467 4.20467 6.102C4.38533 5.63533 4.60267 5.302 4.952 4.952C5.27463 4.62003 5.66761 4.36465 6.102 4.20467C6.45467 4.06733 6.984 3.90467 7.95867 3.86C9.01333 3.812 9.33 3.802 12 3.802Z"
+ fill="white"
+ />
+ <path
+ fill-rule="evenodd"
+ clip-rule="evenodd"
+ d="M12 15.3366C11.5618 15.3366 11.1279 15.2503 10.7231 15.0826C10.3183 14.915 9.95044 14.6692 9.64061 14.3594C9.33077 14.0495 9.08499 13.6817 8.91731 13.2769C8.74962 12.872 8.66332 12.4381 8.66332 12C8.66332 11.5618 8.74962 11.1279 8.91731 10.7231C9.08499 10.3183 9.33077 9.95043 9.64061 9.64059C9.95044 9.33075 10.3183 9.08497 10.7231 8.91729C11.1279 8.74961 11.5618 8.6633 12 8.6633C12.8849 8.6633 13.7336 9.01484 14.3594 9.64059C14.9851 10.2663 15.3366 11.115 15.3366 12C15.3366 12.8849 14.9851 13.7336 14.3594 14.3594C13.7336 14.9851 12.8849 15.3366 12 15.3366ZM12 6.85997C10.6368 6.85997 9.32939 7.4015 8.36546 8.36544C7.40152 9.32938 6.85999 10.6368 6.85999 12C6.85999 13.3632 7.40152 14.6706 8.36546 15.6345C9.32939 16.5984 10.6368 17.14 12 17.14C13.3632 17.14 14.6706 16.5984 15.6345 15.6345C16.5984 14.6706 17.14 13.3632 17.14 12C17.14 10.6368 16.5984 9.32938 15.6345 8.36544C14.6706 7.4015 13.3632 6.85997 12 6.85997ZM18.6353 6.76664C18.6353 7.08887 18.5073 7.39791 18.2795 7.62577C18.0516 7.85363 17.7426 7.98164 17.4203 7.98164C17.0981 7.98164 16.789 7.85363 16.5612 7.62577C16.3333 7.39791 16.2053 7.08887 16.2053 6.76664C16.2053 6.4444 16.3333 6.13536 16.5612 5.9075C16.789 5.67964 17.0981 5.55164 17.4203 5.55164C17.7426 5.55164 18.0516 5.67964 18.2795 5.9075C18.5073 6.13536 18.6353 6.4444 18.6353 6.76664Z"
+ fill="white"
+ />
+ </svg>
+ </a>
+ </li>
+ <li class="social-link">
+ <a href="https://www.linkedin.com/company/pluralsight/" data-aa-title="footer-linkedin-social" data-ps-analyitcs="footer-social|linkedin-social|https://www.linkedin.com/company/pluralsight/" onclick="updateFooterAnalytics ('Social link', 'Linkedin', 'https://www.linkedin.com/company/pluralsight/')" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
+ <path d="M3 5.27673C3 4.01933 4.01933 3 5.27673 3C6.53459 3 7.55346 4.01887 7.55346 5.27673C7.55346 6.53413 6.53413 7.55346 5.27673 7.55346C4.01887 7.55346 3 6.53459 3 5.27673Z" fill="white" />
+ <path d="M21 21H17.1429V14.3333C17.1429 13.2912 16.2081 12.4465 15.1661 12.4465C14.124 12.4465 13.2793 13.2912 13.2793 14.3333V21H9.42857V9.42853H13.2793V11.1886C13.9082 10.132 15.2793 9.42763 16.424 9.42763C18.8554 9.42763 21 11.3987 21 13.8301V21Z" fill="white" />
+ <path d="M3 21H6.85714V9.42857H3V21Z" fill="white" />
+ </svg>
+ </a>
+ </li>
+ <li class="social-link">
+ <a href="https://www.youtube.com/@pluralsight" data-aa-title="footer-youtube-social" data-ps-analyitcs="footer-social|youtube-social|https://www.youtube.com/@pluralsight" onclick="updateFooterAnalytics ('Social link', 'Youtube', 'https://www.youtube.com/@pluralsight')" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
+ <path d="M21.5764 7.19865C21.4672 6.76848 21.2487 6.37245 20.9414 6.05153C20.6341 5.73061 20.2449 5.49845 19.8148 5.38237C18.2511 5 11.9966 5 11.9966 5C11.9966 5 5.74204 5 4.17841 5.41651C3.74824 5.53942 3.35904 5.77158 3.05177 6.08567C2.74451 6.39976 2.51918 6.80262 2.41676 7.23279C2.12998 8.81691 1.99342 10.4283 2.00024 12.0398C1.99342 13.6649 2.12998 15.2831 2.41676 16.8809C2.53284 17.2974 2.75816 17.6798 3.07226 17.987C3.37952 18.2943 3.76189 18.5128 4.18524 18.6289C5.74887 19.0454 12.0034 19.0454 12.0034 19.0454C12.0034 19.0454 18.258 19.0454 19.8216 18.6289C20.2518 18.506 20.641 18.2738 20.9482 17.9597C21.2555 17.6388 21.4808 17.2428 21.5832 16.8126C21.87 15.2353 22.0066 13.6444 21.9998 12.0398C22.0066 10.4147 21.87 8.79642 21.5832 7.19865H21.5764ZM9.95498 15.0168V9.07638L15.1785 12.0466L9.95498 15.0168Z" fill="white" />
+ </svg>
+ </a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <hr />
+ <div class="footer-utility">
+ <div class="footer-logo-cp">
+ <a class="logo-link" href="/" data-aa-title="footer-logo" onclick="updateFooterAnalytics ('Pluralsight icon', 'Pluralsight icon', '/')">
+ <svg xmlns="http://www.w3.org/2000/svg" width="44" height="44" viewBox="0 0 44 44" fill="none">
+ <path d="M22 44C34.1503 44 44 34.1503 44 22C44 9.84974 34.1503 0 22 0C9.84974 0 0 9.84974 0 22C0 34.1503 9.84974 44 22 44Z" fill="white" />
+ <path d="M11.4013 31.6763L16.2426 28.882V34.3329L37.6025 22.0024L16.2426 9.67191V15.1206L11.4013 12.3263V31.6785V31.6763ZM18.4579 18.9547L23.7296 21.998L18.4579 25.0435V18.9547ZM18.4579 27.6018L18.5213 27.5647L28.1602 22.0002L18.4579 16.3986V13.5061L33.1697 22.0002L18.4579 30.4943V27.6018ZM13.6166 16.1605L16.2426 17.6767V26.3237L13.6166 27.8399V16.1605Z" fill="#130F25" />
+ </svg>
+ </a>
+
+ <span class="copyright">Copyright © 2004 - <span id="footer-current-year"></span> Pluralsight LLC. All rights reserved</span>
+ </div>
+ <ul class="utility-links">
+ <li class="utility-link"><a href="https://legal.pluralsight.com/policies" data-aa-title="footer-terms-of-use" data-ps-analytics="footer-link|Terms of Use|https://legal.pluralsight.com/policies" onclick="updateFooterAnalytics ('Utility links', 'Terms of Use', 'https://legal.pluralsight.com/policies')" target="_blank">Terms of Use</a></li>
+ <li class="utility-link"><a href="https://legal.pluralsight.com/policies?name=privacy-notice" data-aa-title="footer-privacy-policy" data-ps-analytics="footer-link|Privacy Policy|https://legal.pluralsight.com/policies?name=privacy-notice" onclick="updateFooterAnalytics ('Utility links', 'Privacy Policy', 'https://legal.pluralsight.com/policies?name=privacy-notice')" target="_blank">Privacy Policy</a></li>
+ <li class="utility-link"><a href="https://legal.pluralsight.com/policies?name=modern-slavery-act-transparency-statement" data-aa-title="footer-code-of-conduct" data-ps-analytics="footer-link|Code of Conduct|https://legal.pluralsight.com/policies?name=modern-slavery-act-transparency-statement" onclick="updateFooterAnalytics ('Utility links', 'Code of Conduct', 'https://legal.pluralsight.com/policies?name=modern-slavery-act-transparency-statement')" target="_blank">Code of Conduct</a></li>
+ </ul>
+ </div>
+ </footer>
+</div>
+
+
+ <script type="text/javascript">
+ const footerMetaPath = document.querySelector('meta[name="cludo:content-path"]')?.getAttribute("content");
+let pagePathVal = '';
+if (footerMetaPath.split('/en/').length > 1) {
+ pagePathVal = footerMetaPath.split('/en/')[1].includes('/') ? footerMetaPath.split('/en/')[1].split('/')[0] : footerMetaPath.split('/en/')[1];
+} else {
+ pagePathVal = 'Homepage';
+}
+
+function updateFooterAnalytics (linkContainer, linkText, linkUrl) {
+ window.appEventData = window.appEventData || [];
+ appEventData.push({
+ "event": "Navigation Link Clicked",
+ "linkInfo": {
+ "linkContainer": linkContainer,
+ "linkPage": pagePathVal,
+ "linkDestination": linkUrl,
+ "linkId": linkText,
+ "linkRegion": "footer nav"
+ }
+ });
+}
+ </script>
+
+</div>
+
+
+</div>
+
+ </div>
+
+
+</div>
+
+
+</div>
+
+
+</div>
+
+ </div>
+
+
+</div>
+
+
+
+
+ <script src="/etc.clientlibs/ps/components/organisms/page--course-detail/course-hero/clientlibs.lc-28f2fa026ce5451dc570f1f4a13aa76a-lc.min.js"></script>
+<script src="/etc.clientlibs/ps/components/organisms/page--cloud-course-detail/course-hero/clientlibs.lc-e8459aaa9afa6f363a8fe27ba8ef6fbc-lc.min.js"></script>
+<script src="/etc.clientlibs/ps/components/organisms/page--course-detail/course-table-of-contents/clientlibs.lc-7ac31a9577aa9a7fd3613a2fb7563dac-lc.min.js"></script>
+<script src="/etc.clientlibs/ps/components/molecules/simple-accordion/clientlibs.lc-5be9432763e316f813b9ed474edb60f5-lc.min.js"></script>
+<script src="/etc.clientlibs/ps/components/organisms/navigations/pluralsight-skills-header-v2/clientlibs.lc-4d2efe3079e02d528bf35e274df02877-lc.min.js"></script>
+<script src="/etc.clientlibs/ps/components/organisms/navigations/pluralsight-primary-footer/clientlibs.lc-84ea7f029865fc6450c3e67fb8ce18b6-lc.min.js"></script>
+<script src="/etc.clientlibs/core/wcm/components/commons/site/clientlibs/container.lc-0a6aff292f5cc42142779cde92054524-lc.min.js"></script>
+<script src="/etc.clientlibs/core/wcm/components/tabs/v1/tabs/clientlibs/site.lc-c53b992b35f5ca98e25330a02d295299-lc.min.js"></script>
+<script src="/etc.clientlibs/core/wcm/components/carousel/v1/carousel/clientlibs/site.lc-935e4f9b71a823975466546d99182da6-lc.min.js"></script>
+<script src="/etc.clientlibs/ps/clientlibs/clientlib-base.lc-085db75d6c1f967424411631015736a4-lc.min.js"></script>
+
+
+ <div>
+<script src="/etc.clientlibs/ps/clientlibs/clientlib-cludo.min.js"></script>
+<script>
+ var CludoSearch;
+ var cludoSettings = {"customerId":"10000847","engineId":"10001278","language":"en","type":"inline"}
+ CludoSearch = new Cludo(cludoSettings);
+ CludoSearch.init();
+</script>
+</div>
+<script>
+ window.appEventData = window.appEventData || [];
+ appEventData.push({
+ "event": "Page Load Completed"
+ });
+</script>
+ <div class="cloudservice sitecatalyst"></div>
+
+
+
+
+
+
+<script type="text/javascript">
+ CQ_Analytics.TestTarget.maxProfileParams = 11;
+
+ if (CQ_Analytics.CCM) {
+ if (CQ_Analytics.CCM.areStoresInitialized) {
+ CQ_Analytics.TestTarget.registerMboxUpdateCalls();
+ } else {
+ CQ_Analytics.CCM.addListener("storesinitialize", function (e) {
+ CQ_Analytics.TestTarget.registerMboxUpdateCalls();
+ });
+ }
+ } else {
+ // client context not there, still register calls
+ CQ_Analytics.TestTarget.registerMboxUpdateCalls();
+ }
+ </script>
+
+
+
+
+
+
+ <script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a289ac5af89a3478',t:'MTc4NjMwOTA0Nw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
+ </html>
\ No newline at end of file
diff --git a/archive/techworks/items/pluralsight-clojure-fundamentals/thumbnail.headers b/archive/techworks/items/pluralsight-clojure-fundamentals/thumbnail.headers
new file mode 100644
index 0000000..4590ee8
--- /dev/null
+++ b/archive/techworks/items/pluralsight-clojure-fundamentals/thumbnail.headers
@@ -0,0 +1,18 @@
+HTTP/2 200
+last-modified: Thu, 07 May 2026 14:44:37 GMT
+x-imgix-id: 1c50f9abfa23983602b6502b4c13b072dcd85f46
+cache-control: public, max-age=31536000
+server: imgix
+date: Sun, 09 Aug 2026 20:57:53 GMT
+age: 248246
+accept-ranges: bytes
+content-type: image/jpeg
+access-control-allow-origin: *
+timing-allow-origin: *
+cross-origin-resource-policy: cross-origin
+x-content-type-options: nosniff
+x-served-by: cache-chi-klot8100178-CHI, cache-lax-kwhp1940092-LAX
+x-cache: HIT, MISS
+alt-svc: h3=":443";ma=86400,h3-29=":443";ma=86400,h3-27=":443";ma=86400
+content-length: 64104
+
diff --git a/archive/techworks/items/pluralsight-clojure-fundamentals/thumbnail.jpg b/archive/techworks/items/pluralsight-clojure-fundamentals/thumbnail.jpg
new file mode 100644
index 0000000..57f6123
Binary files /dev/null and b/archive/techworks/items/pluralsight-clojure-fundamentals/thumbnail.jpg differ
diff --git a/archive/techworks/manifest.tsv b/archive/techworks/manifest.tsv
index 1cb2725..6d45ab1 100644
--- a/archive/techworks/manifest.tsv
+++ b/archive/techworks/manifest.tsv
@@ -149,3 +149,107 @@ rstudio-shiny-server-156 rstudio-shiny-server-156-source Shiny Server (Pro) 1.5.
rstudio-shiny-server-156 rstudio-shiny-server-156-clean Shiny Server (Pro) 1.5.6 web-page https://posit.co/blog/shiny-server-pro-1-5-6/ md/TechWorks/ShinyServer156.html 2026-08-09T20:43:41Z 710b7267a79fe63ee5a3c776dc80d2ca27819149095349387aeb5772767388ac 2637 public preserved Clean local reading copy retaining the article text
rstudio-shiny-server-releases rstudio-author-headers RStudio author portrait response headers metadata https://posit.co/sites/default/files/migrate/speakers/2023/02/alan-dipert.png archive/techworks/items/rstudio-shiny-server-releases/author.headers 2026-08-09T20:43:41Z e755294547f5b9a19054d29eb837069fe8320fe0aa972872c94becdd8b7d8246 738 repository-only preserved HTTP response metadata
rstudio-shiny-server-releases rstudio-author-image RStudio author portrait image https://posit.co/sites/default/files/migrate/speakers/2023/02/alan-dipert.png archive/techworks/items/rstudio-shiny-server-releases/author.png 2026-08-09T20:43:41Z b729a86e1f47a1d797082844e09495a5dab473d5e91b4ccf3973b7644b4a796d 34822 repository-only preserved Original 150x150 PNG used by the authored release pages
+2013-trilug-raspberry-pi trilug-raspberry-pi-slides An Introduction to Raspberry Pi slides pdf https://trilug.org/~porter/meetings/2013-01-10_RaspberryPi.pdf md/TechWorks/2013-01-10_RaspberryPi.pdf 2026-08-09T20:51:54Z 5e6bce4030e5151bdf7aa3c9986246953a70e4638a7c12be426bb7ecd24886c2 1446116 public preserved Original 36-page PDF presented by Pete Soper, Alan Dipert, Clinton Dreisbach, and Peter Reintjes
+2013-trilug-raspberry-pi berrycam-source-snapshot BerryCam source snapshot git-snapshot https://github.com/alandipert/berrycam/tree/d24a0c81b904b20ede445b8e8a46eae0fde5b8ea md/TechWorks/berrycam-d24a0c8.tar.gz 2026-08-09T20:51:54Z f05b26751ae23d5e6352a2a1877e037d8e6e1dd262492db9915150f2dbd6a638 3993 public preserved Exact GitHub source archive for the BerryCam demonstration named in the slides
+2013-trilug-raspberry-pi trilug-raspberry-pi-event-page TriLUG Raspberry Pi event page web-page https://trilug.org/2012/11/27/jan-10-meeting-raspberry-pi/ archive/techworks/items/2013-trilug-raspberry-pi/event.html 2026-08-09T20:51:54Z 285db7a349583cd968584174296508081643906051c2de0cbd8018ec5068729d 11231 repository-only preserved Exact live response body
+2013-trilug-raspberry-pi trilug-raspberry-pi-event-headers TriLUG Raspberry Pi event response headers metadata https://trilug.org/2012/11/27/jan-10-meeting-raspberry-pi/ archive/techworks/items/2013-trilug-raspberry-pi/event.headers 2026-08-09T20:51:54Z a8065e4a0e243e5b2c6e98bdf60400bfad222e7cfd7ef4a21375a92a22d7ee9a 574 repository-only preserved HTTP response metadata
+2013-trilug-raspberry-pi trilug-raspberry-pi-redirect-page TriLUG legacy event redirect page web-page https://trilug.org/2013-01-10/Raspberry_Pi archive/techworks/items/2013-trilug-raspberry-pi/redirect.html 2026-08-09T20:51:54Z 635386ec918673b0a650119c29fc1ab96fe7c85105342d585a2f4fa2d3ee53a4 202 repository-only preserved Exact live redirect response body
+2013-trilug-raspberry-pi trilug-raspberry-pi-redirect-headers TriLUG legacy event redirect headers metadata https://trilug.org/2013-01-10/Raspberry_Pi archive/techworks/items/2013-trilug-raspberry-pi/redirect.headers 2026-08-09T20:51:54Z 0d429f85eb02fc6e046eec7ee1ef1ae9507007c4978e0b83dd1994a70df62e3e 555 repository-only preserved HTTP redirect and response metadata
+2013-trilug-raspberry-pi trilug-raspberry-pi-slides-headers An Introduction to Raspberry Pi slide response headers metadata https://trilug.org/~porter/meetings/2013-01-10_RaspberryPi.pdf archive/techworks/items/2013-trilug-raspberry-pi/slides.headers 2026-08-09T20:51:54Z d3df1c308d6d98051b51e06a5421ac56dc63cf308b3a94024a480b30c8496613 317 repository-only preserved HTTP response metadata for the original PDF
+2013-trilug-raspberry-pi trilug-raspberry-pi-video TriLUG meeting 10 Jan 2013 Raspberry Pi full recording video https://www.youtube.com/watch?v=fDjpAHbB-Mg archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.mkv 2026-08-09T20:51:54Z bb4fab43fb5d8ef0fa84f3f977bf63f6eca8642eaa850f0327e432de104bf71e 363946032 repository-only preserved Highest available 854x480 H.264 video with 48 kHz stereo Opus audio; no transcoding
+2013-trilug-raspberry-pi trilug-raspberry-pi-video-metadata TriLUG Raspberry Pi YouTube metadata metadata https://www.youtube.com/watch?v=fDjpAHbB-Mg archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.info.json 2026-08-09T20:51:54Z 21aa34ee7e3ad4dd597164ddeb104e591c7d95ef0330c79226373e9e43ccfbd8 529310 repository-only preserved Exact yt-dlp metadata including the available format inventory
+2013-trilug-raspberry-pi trilug-raspberry-pi-video-ffprobe TriLUG Raspberry Pi stream metadata metadata https://www.youtube.com/watch?v=fDjpAHbB-Mg archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.ffprobe.json 2026-08-09T20:51:54Z ab4d1e461dd03bd236b128de9c76238f58d321dea6b2baa9a17f2e1232c6c39f 4214 repository-only preserved ffprobe stream and container metadata
+2013-trilug-raspberry-pi trilug-raspberry-pi-captions-en TriLUG Raspberry Pi English captions captions https://www.youtube.com/watch?v=fDjpAHbB-Mg archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.en.vtt 2026-08-09T20:51:54Z 430df79c889d233683733960864a6059e13fa3be5ae656b2883bddb411794c0f 705574 repository-only preserved Published English automatic captions
+2013-trilug-raspberry-pi trilug-raspberry-pi-captions-en-orig TriLUG Raspberry Pi original English captions captions https://www.youtube.com/watch?v=fDjpAHbB-Mg archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.en-orig.vtt 2026-08-09T20:51:54Z 430df79c889d233683733960864a6059e13fa3be5ae656b2883bddb411794c0f 705574 repository-only preserved Original published caption track; byte-identical to the normalized English track
+2013-trilug-raspberry-pi trilug-raspberry-pi-thumbnail TriLUG Raspberry Pi full-size YouTube thumbnail image https://www.youtube.com/watch?v=fDjpAHbB-Mg archive/techworks/items/2013-trilug-raspberry-pi/fDjpAHbB-Mg.webp 2026-08-09T20:51:54Z 0706d38fb5ecdd3722fa5d4694bae768c113aaf22af8a78f1da3a34117fa67b3 9226 repository-only preserved Highest-resolution thumbnail published by YouTube
+2009-scala-presentation scala-presentation-source Scala, a Scalable Language source snapshot git-snapshot https://github.com/alandipert/scala-presentation/tree/82e2d00b3182a1acf01cd3ed207402a17b2ebaf4 md/TechWorks/scala-presentation-82e2d00.tar.gz 2026-08-09T21:18:00Z 70678f56b3d687a793d0649cd7f5d38d2ded1f788357c12ecbe7f3acac037590 450146 public preserved Exact GitHub source archive
+2009-scala-presentation scala-presentation-pdf Scala, a Scalable Language slides pdf https://github.com/alandipert/scala-presentation md/TechWorks/2009-09-03-Scala-a-Scalable-Language.pdf 2026-08-09T21:18:00Z 9f8a8f129824e123e32d3d96d31374e9d72b20fd1a2d87d2393a390e596fcf41 737426 public preserved Reconstructed from the exact TeX source; the source used today's date, so the displayed date was fixed to the final source commit date
+2009-git-ruby-testing git-ruby-testing-source Git and Ruby testing presentation source snapshot git-snapshot https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/gitrubytesting-presentation-84744ec.tar.gz 2026-08-09T21:18:00Z ad6bd060e8651a883b5b5c0c5d2b0fe776115783f2c8864927549cf7bd03ae93 1337251 public preserved Exact GitHub source archive
+2014-triclojure-hoplon triclojure-hoplon-source TriClojure Hoplon presentation source snapshot git-snapshot https://github.com/alandipert/triclojure-hoplon-deck/tree/7afa060 md/TechWorks/triclojure-hoplon-deck-7afa060.tar.gz 2026-08-09T21:18:00Z fb24fd1e710fa026de230de0cdd6b8fe1208b690d7780f620b9eee638e6f7097 348345 public preserved Exact GitHub source archive
+2015-clojurebridge clojurebridge-curriculum-source ClojureBridge curriculum source snapshot git-snapshot https://github.com/ClojureBridge/curriculum/tree/c8605f6 md/TechWorks/clojurebridge-curriculum-c8605f6.tar.gz 2026-08-09T21:18:00Z 830a4af66d2897630624777882ffe794dd8efb61cb10fed7b671d9625124fe79 3514031 public preserved Exact source archive containing the contributed curriculum revisions
+2015-clojure-brave-true clojure-brave-true-foreword-source Clojure for the Brave and True foreword source web-page https://www.braveclojure.com/foreword/ archive/techworks/items/clojure-brave-true-foreword/source.html 2026-08-09T21:18:00Z d1689b5d52035006bf5479bc9819d700e4e239ee60ab695f178da38ba676726d 9180 repository-only preserved Exact live response body
+2015-clojure-brave-true clojure-brave-true-foreword-headers Clojure for the Brave and True foreword response headers metadata https://www.braveclojure.com/foreword/ archive/techworks/items/clojure-brave-true-foreword/source.headers 2026-08-09T21:18:00Z 7beddc663de419b9cb3d0f13c29dd4eb1c191664e837531c1baf0878b2dad3f7 1019 repository-only preserved HTTP response metadata
+2015-clojure-brave-true clojure-brave-true-foreword-clean Foreword to Clojure for the Brave and True web-page https://www.braveclojure.com/foreword/ md/TechWorks/ClojureBraveTrueForeword.html 2026-08-09T21:18:00Z 92c2feb1c52804fa75d23f59995b77e23ad108358c6240074f8162e0a331be13 3317 public preserved Clean local reading copy retaining the foreword text
+2019-software-engineering-shiny bbsw-2019-program BBSW 2019 program pdf https://www.bbsw.org/2019/agenda/BBSW_2019_program.pdf archive/techworks/items/2019-software-engineering-shiny/BBSW_2019_program.pdf 2026-08-09T21:18:00Z 3a00e044698d556109cd605696506244452c74dbf962b854d1e76bb5456d8986 821135 repository-only preserved Official program confirming the presentation title, date, venue, and presenter
+2019-software-engineering-shiny bbsw-2019-program-headers BBSW 2019 program response headers metadata https://www.bbsw.org/2019/agenda/BBSW_2019_program.pdf archive/techworks/items/2019-software-engineering-shiny/program.headers 2026-08-09T21:18:00Z 598574173e60c90655a88c6f5a0ea5f3139c8b69796fe086fbe648b77b77c311 527 repository-only preserved HTTP response metadata
+2019-software-engineering-shiny software-engineering-shiny-media Software Engineering with Shiny slides or recording metadata https://www.bbsw.org/2019/agenda/BBSW_2019_program.pdf 2026-08-09T21:18:00Z repository-only missing No independently published slides or recording found
+2012-pluralsight-clojure pluralsight-course-page Clojure Fundamentals Part 1 public course page web-page https://www.pluralsight.com/courses/clojure-fundamentals-part-one archive/techworks/items/pluralsight-clojure-fundamentals/source.html 2026-08-09T21:18:00Z dc07b0df8e99bd30fc28d0bfa5829fdf8bd58bab1ed24dac2dcaeecbcf549557 625766 repository-only preserved Exact public response body for the retired course listing
+2012-pluralsight-clojure pluralsight-course-headers Clojure Fundamentals Part 1 response headers metadata https://www.pluralsight.com/courses/clojure-fundamentals-part-one archive/techworks/items/pluralsight-clojure-fundamentals/source.headers 2026-08-09T21:18:00Z 70babbc4df02b0920bae65598b8ed2d0fa9a08f0ffc377fa3fb1756187ccc017 691 repository-only preserved HTTP response metadata with transient cookie fields omitted
+2012-pluralsight-clojure pluralsight-course-thumbnail Clojure Fundamentals Part 1 course image image https://www.pluralsight.com/courses/clojure-fundamentals-part-one archive/techworks/items/pluralsight-clojure-fundamentals/thumbnail.jpg 2026-08-09T21:18:00Z 587381cccc4525cd300170bc250d3aca514bbc4c84e3789683842fef91c5bf02 64104 repository-only preserved Full-size 1280x720 public course image
+2012-pluralsight-clojure pluralsight-course-thumbnail-headers Clojure Fundamentals Part 1 course image response headers metadata https://www.pluralsight.com/courses/clojure-fundamentals-part-one archive/techworks/items/pluralsight-clojure-fundamentals/thumbnail.headers 2026-08-09T21:18:00Z 18416d9b0edcfde7b86485b460d1b1e2f112efdd3c099a23c10df42fdde21689 566 repository-only preserved HTTP response metadata
+2012-pluralsight-clojure pluralsight-course-lessons Clojure Fundamentals Part 1 lesson media video https://www.pluralsight.com/courses/clojure-fundamentals-part-one 2026-08-09T21:18:00Z repository-only rights-limited Paid lesson media was not copied
+2012-barcamp-jsonscript barcamp-render-decks-barcamp-2012-index-html decks/barcamp-2012/index.html web-page https://github.com/alandipert/alandipert.github.com/tree/58149e3/barcamp-2012 md/TechWorks/decks/barcamp-2012/index.html 2026-08-09T21:24:00Z 43fc439246201eb4bbb0f0acdacae02752b34eff1052960711c20df435d3bb75 10437 public preserved Browsable copy of the deployed deck with stale references to absent stylesheets removed
+2012-barcamp-jsonscript barcamp-render-decks-barcamp-2012-slide-assets-cheating-jpg decks/barcamp-2012/slide-assets/cheating.jpg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/barcamp-2012 md/TechWorks/decks/barcamp-2012/slide-assets/cheating.jpg 2026-08-09T21:24:00Z 2db45a0e2da01c336fea6b6d4c49207519e1083b224e0a3a1c1b926bdc4e960c 162718 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-barcamp-jsonscript barcamp-render-decks-barcamp-2012-slide-assets-common-css decks/barcamp-2012/slide-assets/common.css web-asset https://github.com/alandipert/alandipert.github.com/tree/58149e3/barcamp-2012 md/TechWorks/decks/barcamp-2012/slide-assets/common.css 2026-08-09T21:24:00Z 43480288b281d39fc7f09d3a0bc7c05449359ba6fd2f01468e8d74cfe498e177 702 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-barcamp-jsonscript barcamp-render-decks-barcamp-2012-slide-assets-compilers-jpg decks/barcamp-2012/slide-assets/compilers.jpg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/barcamp-2012 md/TechWorks/decks/barcamp-2012/slide-assets/compilers.jpg 2026-08-09T21:24:00Z 2c721a3fb085f73cc1f4364d3d628bd252e13d4854baa9c96e25008043593873 56427 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-barcamp-jsonscript barcamp-render-decks-barcamp-2012-slide-assets-lisp-png decks/barcamp-2012/slide-assets/lisp.png image https://github.com/alandipert/alandipert.github.com/tree/58149e3/barcamp-2012 md/TechWorks/decks/barcamp-2012/slide-assets/lisp.png 2026-08-09T21:24:00Z 4ff4af718350ab5471be22487bb3c9ee77946e276b0f0dd66ce3b024c0a96206 42286 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-barcamp-jsonscript barcamp-render-decks-barcamp-2012-slide-assets-org-html-slideshow-js decks/barcamp-2012/slide-assets/org-html-slideshow.js web-asset https://github.com/alandipert/alandipert.github.com/tree/58149e3/barcamp-2012 md/TechWorks/decks/barcamp-2012/slide-assets/org-html-slideshow.js 2026-08-09T21:24:00Z c1a3b92d893c4945f2e5465da527a35043aca1d68075417486477a701e89b949 89070 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-barcamp-jsonscript barcamp-render-decks-barcamp-2012-slide-assets-presenter-css decks/barcamp-2012/slide-assets/presenter.css web-asset https://github.com/alandipert/alandipert.github.com/tree/58149e3/barcamp-2012 md/TechWorks/decks/barcamp-2012/slide-assets/presenter.css 2026-08-09T21:24:00Z f89ad0977d130d2fff7597f37dec8914e14d1388c29d1a1c356ebc9389bd064c 1717 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-barcamp-jsonscript barcamp-render-decks-barcamp-2012-slide-assets-projection-css decks/barcamp-2012/slide-assets/projection.css web-asset https://github.com/alandipert/alandipert.github.com/tree/58149e3/barcamp-2012 md/TechWorks/decks/barcamp-2012/slide-assets/projection.css 2026-08-09T21:24:00Z 28cb36d3ab40511699c72b4008929220cf01f2ff378b92892a8fba5425233832 2241 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-barcamp-jsonscript barcamp-render-decks-barcamp-2012-slide-assets-retina_wood-png decks/barcamp-2012/slide-assets/retina_wood.png image https://github.com/alandipert/alandipert.github.com/tree/58149e3/barcamp-2012 md/TechWorks/decks/barcamp-2012/slide-assets/retina_wood.png 2026-08-09T21:24:00Z 46f9c948966705d938d81ca2dc5cc5ccfab10ceb81d8a2c8d35d60b7bc72520d 102184 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-barcamp-jsonscript barcamp-render-decks-barcamp-2012-slide-assets-screen-css decks/barcamp-2012/slide-assets/screen.css web-asset https://github.com/alandipert/alandipert.github.com/tree/58149e3/barcamp-2012 md/TechWorks/decks/barcamp-2012/slide-assets/screen.css 2026-08-09T21:24:00Z e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 public preserved Exact deployed static deck from the GitHub Pages repository
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-BFF-gif decks/gitrubytesting/images/BFF.gif image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/BFF.gif 2026-08-09T21:24:00Z 9c84cbb3d5d485cac72323a10f6372c17767d054bf92471886bc512ce3d133c0 37667 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-adder_code-png decks/gitrubytesting/images/adder_code.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/adder_code.png 2026-08-09T21:24:00Z 4118ef817d78a47ac3ca5669bff4a0388b9ea15eee05d78cd2d237ad4b845a13 78782 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-bg-png decks/gitrubytesting/images/bg.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/bg.png 2026-08-09T21:24:00Z f0c4046c5705f57ae9b5a3de8db5cb3a4f8a1199d183c570aa305578cf583fc9 45692 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-cooldog-png decks/gitrubytesting/images/cooldog.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/cooldog.png 2026-08-09T21:24:00Z 44c6ccd9e3a63d7b73961428f329a19f574e2ccf997b9fb3bf01851f300f8a4f 124110 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-devflow-png decks/gitrubytesting/images/devflow.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/devflow.png 2026-08-09T21:24:00Z 094b38dafb55def06ed22df8b866ec2c7a09a3295fb5852d537cef2f3577d27d 26487 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-ferris-jpg decks/gitrubytesting/images/ferris.jpg image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/ferris.jpg 2026-08-09T21:24:00Z dfabdb080e00e53092b72e02b3e8f638e07fe568ebb8c4c639d91cb51762a2d2 46964 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-git-repo-1-png decks/gitrubytesting/images/git-repo-1.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/git-repo-1.png 2026-08-09T21:24:00Z a27b8236df5872c6226c65d6adc1a77c69bcc8c16e201c5f61befdaf6dffaf19 4688 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-git-repo-2-png decks/gitrubytesting/images/git-repo-2.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/git-repo-2.png 2026-08-09T21:24:00Z f1b637093671124100844ab1aa75702de55de535fca32327116c01ec500df150 11952 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-git-repo-5-png decks/gitrubytesting/images/git-repo-5.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/git-repo-5.png 2026-08-09T21:24:00Z 5bedc4c82781e2d478b53d1779f0dcae0bb536a6e2c40579b0c5c9bcd14867c8 16307 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-git-repo-6-png decks/gitrubytesting/images/git-repo-6.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/git-repo-6.png 2026-08-09T21:24:00Z f0923164a543d0fb63691ff1cf564076bd3febad61647703227696d8ac71dead 22015 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-git1-png decks/gitrubytesting/images/git1.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/git1.png 2026-08-09T21:24:00Z 006d48a0aef9f25d336b70f2449d8d3f54b5d1f776b666d1d42aab10ac473435 64187 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-git2-png decks/gitrubytesting/images/git2.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/git2.png 2026-08-09T21:24:00Z 46a6c0183f8e8078948d38be02c66bcaf0681331e8effe36be542eead2a27b95 59661 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-git3-png decks/gitrubytesting/images/git3.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/git3.png 2026-08-09T21:24:00Z 131afee7583c98dfe76d36d6860e66357a9c695f68cb15732b9847465acca3e1 71557 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-git4-png decks/gitrubytesting/images/git4.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/git4.png 2026-08-09T21:24:00Z 947286867e69ad7e8a0f78d92bf7cbd5cfed69de03a6bf061aa898cd5e285563 78390 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-git5-png decks/gitrubytesting/images/git5.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/git5.png 2026-08-09T21:24:00Z 2c20ea08804b073be81b41cc7dbff29e0184ebffda4455bb58647ba95521f721 69987 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-git6-png decks/gitrubytesting/images/git6.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/git6.png 2026-08-09T21:24:00Z 3c0bb4bd8b9ab59ccf3128ec66cfb775f98fee4dee25783a00987de1c92f8416 61717 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-git7-png decks/gitrubytesting/images/git7.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/git7.png 2026-08-09T21:24:00Z 3c668ca8dbb0338dfbfda72e866c6151a202c26fdf1f94fba39227106f17cd88 83896 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-git8-png decks/gitrubytesting/images/git8.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/git8.png 2026-08-09T21:24:00Z 82ec8c361441b58cdef9e221e8d53edb5931e7ece3a97dde5d575bc7e20ab7c6 83627 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-git9-png decks/gitrubytesting/images/git9.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/git9.png 2026-08-09T21:24:00Z 4ddcbaf994e67562646cdcee1123e798457d017c691ab27feeb414bfef8bd40e 100846 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-kittcar-jpg decks/gitrubytesting/images/kittcar.jpg image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/kittcar.jpg 2026-08-09T21:24:00Z 489ad1ba18a4a8e2838e4a11528b07be789394ecf8c27e23be87ab0a3a537e07 33369 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-linus_beer-jpg decks/gitrubytesting/images/linus_beer.jpg image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/linus_beer.jpg 2026-08-09T21:24:00Z dc6b504e3d3291965cb18cd875833987f7b47ffc8e897408a26c7e18d1329984 9137 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-pdp11-unix-jpg decks/gitrubytesting/images/pdp11-unix.jpg image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/pdp11-unix.jpg 2026-08-09T21:24:00Z 835e2eebdfd34fa92880bf32e76041e76ad796907b8390d13ae3e98bb589dd82 51028 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-tada-jpg decks/gitrubytesting/images/tada.jpg image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/tada.jpg 2026-08-09T21:24:00Z 77ac82b763c36b55cd9dfd145cc64fa8673da529d1b4123934a31f327ab32c19 51549 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-testsyo-png decks/gitrubytesting/images/testsyo.png image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/testsyo.png 2026-08-09T21:24:00Z 9ba1478796fb333177434674d7c0cfa697c1572031b4fa8cf6963a4515985cd4 193292 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-images-who-cares-jpg decks/gitrubytesting/images/who-cares.jpg image https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/images/who-cares.jpg 2026-08-09T21:24:00Z addb9b5c134b189a024bf6b859a7be3a1227023ee7714cc33b2b7ed62a60d6b1 61507 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2009-git-ruby-testing git-ruby-deck-decks-gitrubytesting-index-html decks/gitrubytesting/index.html web-page https://github.com/alandipert/gitrubytesting-presentation/tree/84744ec md/TechWorks/decks/gitrubytesting/index.html 2026-08-09T21:24:00Z 49b66e273df5e2f9c47c19f8a8b0ef4b5efb68a89fa457bb8aef566169fab398 148195 public preserved Browsable reconstruction from the exact Slidedown source and original assets
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-index-html decks/oscon2012-clojure/index.html web-page https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/index.html 2026-08-09T21:24:00Z f7f4733dd10d5bca2c171a9fca48d356f533c7ca8c10ef7ef46db7c16fb5cadb 115524 public preserved Browsable copy of the deployed deck with stale references to absent stylesheets removed
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-Clojure-svg decks/oscon2012-clojure/slide-assets/Clojure.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/Clojure.svg 2026-08-09T21:24:00Z ff2e0fd7602db3c079c43f6506ab569e776ec85b453a22dbb78b14949374adc2 9033 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-arrow-right-png decks/oscon2012-clojure/slide-assets/arrow-right.png image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/arrow-right.png 2026-08-09T21:24:00Z 267b61f459c7bf7d16de4c6f4e57deafa13a21cc00624059fc2a837e66fda5fd 1240 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-background-jpeg decks/oscon2012-clojure/slide-assets/background.jpeg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/background.jpeg 2026-08-09T21:24:00Z 69d0276a7a55e4c54dab59bf73fc333a5a272ef23e429811188f00febd2d9780 246942 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-clojure-interactive-evaluation-svg decks/oscon2012-clojure/slide-assets/clojure-interactive-evaluation.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/clojure-interactive-evaluation.svg 2026-08-09T21:24:00Z 3a5b95ac0b1d82b7022fa51989f0e7bddd7ebbbd0eb4793d18cc000f8424843f 27490 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-clojurescript-browser-repl-svg decks/oscon2012-clojure/slide-assets/clojurescript-browser-repl.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/clojurescript-browser-repl.svg 2026-08-09T21:24:00Z c79729f248f11364c5920f342dfe2a90e7aa5d453bfd37df4cb6e101b382367c 34072 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-clojurescript-compilation-svg decks/oscon2012-clojure/slide-assets/clojurescript-compilation.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/clojurescript-compilation.svg 2026-08-09T21:24:00Z b44ce2cc585d09d97c1f62f8e196600437eac29aca1e9bdc2742f8e553e4203e 25369 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-collections-linked-list-1-svg decks/oscon2012-clojure/slide-assets/collections-linked-list-1.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-linked-list-1.svg 2026-08-09T21:24:00Z 04d20f97d66d4e35fc1878a910c1a7340e3d4675ad94bf91ea2cf61d6fccc639 10963 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-collections-linked-list-2-svg decks/oscon2012-clojure/slide-assets/collections-linked-list-2.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-linked-list-2.svg 2026-08-09T21:24:00Z 590b349dfcd02ada6e0994e8e2b4ea020aadcfaf6ca04733b2f0dfb1da168c96 13539 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-collections-seq-lazy-first-svg decks/oscon2012-clojure/slide-assets/collections-seq-lazy-first.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-first.svg 2026-08-09T21:24:00Z 2037688dd8f3a3cc7781133ed521e1502c2fa1c9673ca96ed414c6f69c8d90fc 13814 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-collections-seq-lazy-initial-svg decks/oscon2012-clojure/slide-assets/collections-seq-lazy-initial.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-initial.svg 2026-08-09T21:24:00Z 8932b1b9386c5ff2f6a7fc98bc1fbc133ae327567bc64f4e6b39adfe053201f2 10937 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-collections-seq-lazy-rest-svg decks/oscon2012-clojure/slide-assets/collections-seq-lazy-rest.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-rest.svg 2026-08-09T21:24:00Z 490741c3ce341bd990bba77ef3ffae8e49f03b605c2eec899b36c39fad855f41 15925 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-collections-seq-lazy-second-svg decks/oscon2012-clojure/slide-assets/collections-seq-lazy-second.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-second.svg 2026-08-09T21:24:00Z 27bd5cc2bbd6bccdd71020249aa8d7b58dcd2d8cb5b36ee476d9523876f8eb8f 16681 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-collections-seq-list-first-svg decks/oscon2012-clojure/slide-assets/collections-seq-list-first.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-first.svg 2026-08-09T21:24:00Z b4e735e4accb6e99cd65fa25ba20f5d01f65b051ad20d624d0941b9bf820d8da 17356 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-collections-seq-list-initial-svg decks/oscon2012-clojure/slide-assets/collections-seq-list-initial.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-initial.svg 2026-08-09T21:24:00Z 354755d0a0eeb772b110844a7d17100a2137cc9f3ec153d9b9aa668bc947c113 18912 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-collections-seq-list-rest-svg decks/oscon2012-clojure/slide-assets/collections-seq-list-rest.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-rest.svg 2026-08-09T21:24:00Z 8c9eb665eecebb5a8199f3297339a490028966fee1cba65f36511247d2d3e53c 16577 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-collections-seq-list-second-svg decks/oscon2012-clojure/slide-assets/collections-seq-list-second.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-second.svg 2026-08-09T21:24:00Z 29da8f29b6711962dede7b2f5ecbdf981526b89a972c562b99e41fe03f382a08 17396 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-collections-structural-sharing-svg decks/oscon2012-clojure/slide-assets/collections-structural-sharing.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-structural-sharing.svg 2026-08-09T21:24:00Z 6b0dcc368fa9670e815d1967ad097bba27c2920223460f8a11280e098e3ce515 22036 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-collections-tree-1-svg decks/oscon2012-clojure/slide-assets/collections-tree-1.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-tree-1.svg 2026-08-09T21:24:00Z f9f103a2e4ded6dd619e5c27d43e141736257d2a93043a6150e01aa35826dcb5 18345 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-collections-tree-2-svg decks/oscon2012-clojure/slide-assets/collections-tree-2.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-tree-2.svg 2026-08-09T21:24:00Z 235d968a0c9d8ddfc4d5a33ddac2aa0980758e408014f43e041c670fdef3fc1f 28598 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-common-css decks/oscon2012-clojure/slide-assets/common.css web-asset https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/common.css 2026-08-09T21:24:00Z 38da91f7c836f694697ce8be4b998fea809fefa2f8f744b6a0766696d7295d20 739 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-identity-state-01-svg decks/oscon2012-clojure/slide-assets/identity-state-01.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-01.svg 2026-08-09T21:24:00Z e4898a3525451733e71c17c22b74710a6dca68c65064c20cbc764ee9922ce966 18725 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-identity-state-02-svg decks/oscon2012-clojure/slide-assets/identity-state-02.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-02.svg 2026-08-09T21:24:00Z 2fee1bfcf5ada10104fa724c8a51dab8cefb49006a0011fef1a1e4369fbb1805 19507 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-identity-state-03-svg decks/oscon2012-clojure/slide-assets/identity-state-03.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-03.svg 2026-08-09T21:24:00Z e3b57442ae6b25fb49db2a581422d26f8def1a2dc383747236cdafe393d7ef33 47246 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-identity-state-04-svg decks/oscon2012-clojure/slide-assets/identity-state-04.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-04.svg 2026-08-09T21:24:00Z 7f390ec3a82ecf99b291e96990d9ba815c5eb1bd908bdebe01782b703398681f 62686 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-identity-state-05-svg decks/oscon2012-clojure/slide-assets/identity-state-05.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-05.svg 2026-08-09T21:24:00Z 3213965bbe547e4faa41620fd84623a0a43c962b08bd88c93fd8045b331aa4ce 26799 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-john-mccarthy-jpg decks/oscon2012-clojure/slide-assets/john-mccarthy.jpg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/john-mccarthy.jpg 2026-08-09T21:24:00Z a807a73a042bcdf6574169e8abdb5584819ab3f534d40d9013c7009fde81ac1c 54692 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-macro-evaluation-svg decks/oscon2012-clojure/slide-assets/macro-evaluation.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/macro-evaluation.svg 2026-08-09T21:24:00Z 54e1c5d7fa0cfa998de9431c8ac5396a02ed924c7767b736f6d38391bc5823a8 21174 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-org-html-slideshow-js decks/oscon2012-clojure/slide-assets/org-html-slideshow.js web-asset https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/org-html-slideshow.js 2026-08-09T21:24:00Z c1a3b92d893c4945f2e5465da527a35043aca1d68075417486477a701e89b949 89070 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-presenter-css decks/oscon2012-clojure/slide-assets/presenter.css web-asset https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/presenter.css 2026-08-09T21:24:00Z f89ad0977d130d2fff7597f37dec8914e14d1388c29d1a1c356ebc9389bd064c 1717 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-projection-css decks/oscon2012-clojure/slide-assets/projection.css web-asset https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/projection.css 2026-08-09T21:24:00Z 873f0b046d38d6e1690e53d837cbc5dcaa31020192c23b516b95169d7e8aae4e 2284 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-screen-css decks/oscon2012-clojure/slide-assets/screen.css web-asset https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/screen.css 2026-08-09T21:24:00Z e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-structure-and-semantics-svg decks/oscon2012-clojure/slide-assets/structure-and-semantics.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/structure-and-semantics.svg 2026-08-09T21:24:00Z 56b21a1533bdd4dee097b2afb2d37600e46d6cbcdb1b0cb8583f83ff212bd900 10927 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-oscon-clojure oscon-render-decks-oscon2012-clojure-slide-assets-traditional-evaluation-svg decks/oscon2012-clojure/slide-assets/traditional-evaluation.svg image https://github.com/alandipert/alandipert.github.com/tree/58149e3/oscon2012-clojure md/TechWorks/decks/oscon2012-clojure/slide-assets/traditional-evaluation.svg 2026-08-09T21:24:00Z a9aff348b8a3820611205db6d0c5c82c5d452390947c02883ea62cd07e07700f 16409 public preserved Exact deployed static deck from the GitHub Pages repository
+2012-flapjax flapjax-render-demos-flapjax-Glass_TTY_VT220-ttf demos/flapjax/Glass_TTY_VT220.ttf font https://github.com/alandipert/alandipert.github.com/tree/58149e3/flapjax-demo md/TechWorks/demos/flapjax/Glass_TTY_VT220.ttf 2026-08-09T21:24:00Z d8d60969258daf549ebaa75dee72e303bb4032cfd202f977b807b7b83a0b2cee 88228 public preserved Exact deployed static demo from the GitHub Pages repository
+2012-flapjax flapjax-render-demos-flapjax-cljs_flapjax_frp-pdf demos/flapjax/cljs_flapjax_frp.pdf pdf https://github.com/alandipert/alandipert.github.com/tree/58149e3/flapjax-demo md/TechWorks/demos/flapjax/cljs_flapjax_frp.pdf 2026-08-09T21:24:00Z bc1cb40c406f0edf0cd7c63a0e01b5dfc941af4afe3a9aff910f9dbc5f057ab8 57621 public preserved Exact deployed static demo from the GitHub Pages repository
+2012-flapjax flapjax-render-demos-flapjax-demo-css demos/flapjax/demo.css web-asset https://github.com/alandipert/alandipert.github.com/tree/58149e3/flapjax-demo md/TechWorks/demos/flapjax/demo.css 2026-08-09T21:24:00Z 734494ecef0a50458ab02416d7a38ca757b10d0fbcbd3fbc9dcd15579b5f1454 911 public preserved Exact deployed static demo from the GitHub Pages repository
+2012-flapjax flapjax-render-demos-flapjax-index-html demos/flapjax/index.html web-page https://github.com/alandipert/alandipert.github.com/tree/58149e3/flapjax-demo md/TechWorks/demos/flapjax/index.html 2026-08-09T21:24:00Z f79b7668eb5466d2119cfe00b055642e8245af28044a2d52d47be67d8817d23e 699 public preserved Exact deployed static demo from the GitHub Pages repository
+2012-flapjax flapjax-render-demos-flapjax-main-js demos/flapjax/main.js web-asset https://github.com/alandipert/alandipert.github.com/tree/58149e3/flapjax-demo md/TechWorks/demos/flapjax/main.js 2026-08-09T21:24:00Z 1ac1525f93a95e3154969ce154f791d98e34ebae554b8c8b6ccbdda7234fc210 725105 public preserved Exact deployed static demo from the GitHub Pages repository
diff --git a/md/TechWorks.md b/md/TechWorks.md
index 07da52d..b58ec80 100644
--- a/md/TechWorks.md
+++ b/md/TechWorks.md
@@ -12,6 +12,7 @@ Papers, slides, recordings, and source snapshots are available in the [TechWorks
| 2019-12-11 | WWW | [Just Lisp Things](https://tailrecursion.com/jlt/) | Author | Blog | |
| 2019-11-19 | [OCRUG](https://web.archive.org/web/20220123183238/https://ocrug.org/) | [Integrating React.js and Shiny](https://www.meetup.com/OC-RUG/events/265511792/), [code](https://github.com/alandipert/ocrug-2018-11-27) | Presentation | Presenter | |
| 2019-11-16 | [OCRUG](https://web.archive.org/web/20220123183238/https://ocrug.org/) | [OCRUG interview](./TechWorks/OCRUGInterview.html) | Interview | Interviewee | |
+| 2019-11-06 | [BBSW](https://www.bbsw.org/) | [Software Engineering with Shiny](https://www.bbsw.org/2019/agenda/BBSW_2019_program.pdf) | Presentation | Presenter | |
| 2019-01-24 | rstudio::conf | [Integrating React.js and Shiny](https://rstudio.com/resources/rstudioconf-2019/integrating-react-js-and-shiny/) | Presentation | Presenter | |
| 2018-12-17 | [Orange Combinator](https://www.meetup.com/fr-FR/orange-combinator/events/lxvjrpyxqbwb/) | [Old School FP: A Common Lisp Experience Report](./TechWorks/2018-12-17-CommonLispOrangeCombinator.pdf) | Meetup | Presenter | |
| 2018-09-06 | rstudio.com | [Load testing Shiny](./TechWorks/2018-09-06-load-testing-shiny-archive.html) | Webinar | Presenter | |
@@ -25,17 +26,21 @@ Papers, slides, recordings, and source snapshots are available in the [TechWorks
| 2015-11-06 | [Øredev](https://archive.oredev.org/2015/2015.html) | [Programmable Builds with Boot](https://vimeo.com/144997124) | Presentation | Presenter | |
| 2015-11-04 | [Øredev](https://archive.oredev.org/2015/2015.html) | [Hoplon: A Simpler Way to Program the Web](https://vimeo.com/144696304) | Presentation | Presenter | |
| 2015-10-02 | [ClojureBridge](https://clojurebridge.org/) | ClojureBridge Durham | Workshop | Teaching assistant | Yoko Harada |
-| 2015-10-01 | No Starch Press | [Clojure for the Brave and True](https://www.amazon.com/Clojure-Brave-True-Ultimate-Programmer/dp/1593275919/ref=as_li_ss_tl?dchild=1&keywords=clojure+brave+true&qid=1606509052&sr=8-1&linkCode=ll1&tag=adipert-20&linkId=6377033a07b0c6d35bdd0535a5bc8fd6&language=en_US) | Book | Technical editor | Daniel Higginbotham |
+| 2015-10-01 | No Starch Press | [Clojure for the Brave and True](https://www.braveclojure.com/), [foreword](./TechWorks/ClojureBraveTrueForeword.html) | Book | Foreword, technical editor | Daniel Higginbotham |
| 2015-04-20 | [Clojure/West](https://web.archive.org/web/20150325185906/http://clojurewest.org/) | [Boot Can Build It](https://www.youtube.com/watch?v=TcnzB2tB-8Q), [slides](./TechWorks/2015-04-20_ClojureWestBoot.pdf) | Presentation | Presenter | Micha Niskin |
| 2014-03-24 | [Clojure/West](https://web.archive.org/web/20141115162625/http://www.clojurewest.org/) | [Web Programming with Hoplon](https://www.youtube.com/watch?v=wVXjExRiFy0) | Presentation | Presenter | Micha Niskin |
| 2014-03-18 | [The Cognicast](https://www.cognitect.com/cognicast/) | [Episode 52](https://www.cognitect.com/cognicast/052-alan-dipert) | Interview | Interviewee | Craig Andera |
+| 2014-02-27 | TriClojure | [Hoplon](https://github.com/alandipert/triclojure-hoplon-deck) | Presentation | Presenter | Micha Niskin |
| 2013-11-14 | [Clojure/conj](https://web.archive.org/web/20131010003442/http://clojure-conj.org/) | [Gherkin, a Lisp 1 in Bash 4](https://www.youtube.com/watch?v=bmHTFo2Rf2w#t=28m55s), [code](https://github.com/alandipert/gherkin) | Lightning talk | Presenter | |
| 2013-03-18 | Clojure/West | [FRP in ClojureScript with Javelin](http://www.infoq.com/presentations/ClojureScript-Javelin), [slides](./TechWorks/Dipert-FRP_in_ClojureScript_with_Javelin.pdf) | Presentation | Presenter | |
+| 2013-01-10 | [TriLUG](https://trilug.org/2012/11/27/jan-10-meeting-raspberry-pi/) | [An Introduction to Raspberry Pi](https://www.youtube.com/watch?v=fDjpAHbB-Mg), [slides](./TechWorks/2013-01-10_RaspberryPi.pdf), [BerryCam](https://github.com/alandipert/berrycam) | Presentation | Presenter | Pete Soper, Clinton Dreisbach, Peter Reintjes |
| 2012-11-16 | [Clojure/conj](https://web.archive.org/web/20210919060939/http://2012.clojure-conj.org/) | [FRP in ClojureScript with Flapjax](https://www.youtube.com/watch?v=xaxF5RDdVRE#t=22m21s), [code](https://github.com/alandipert/flapjax-demo), [demo](http://alandipert.github.io/flapjax-demo/) | Lightning talk | Presenter | |
-| 2012-10-06 | BarCamp Rochester 10 | Your Own Compiler in 20 Minutes, [slides](https://github.com/alandipert/barcamp2012-jsonscript) | Presentation | Presenter | |
-| 2012-07-19 | OSCON | Computing with Clojure, [slides](https://github.com/alandipert/oscon2012-clojure) | Workshop | Trainer | Clinton Dreisbach |
+| 2012-10-06 | BarCamp Rochester 10 | [Your Own Compiler in 20 Minutes](./TechWorks/decks/barcamp-2012/index.html), [source](https://github.com/alandipert/barcamp2012-jsonscript) | Presentation | Presenter | |
+| 2012-07-19 | OSCON | [Computing with Clojure](./TechWorks/decks/oscon2012-clojure/index.html), [source](https://github.com/alandipert/oscon2012-clojure) | Workshop | Trainer | Clinton Dreisbach |
| 2012-07-13 | Pluralsight | [Clojure Fundamentals - Part 1](https://www.pluralsight.com/courses/clojure-fundamentals-part-one) | Course | Trainer | Craig Andera |
| 2012-03-16 | Clojure/West | [Programming with Values in Clojure](https://www.infoq.com/presentations/Programming-with-Values-in-Clojure/), [slides](./TechWorks/Dipert-ProgrammingWithValues.pdf) | Presentation | Presenter | |
| 2011-11-12 | [Clojure/conj](https://web.archive.org/web/20111023154311/http://clojure-conj.org/) | [Uberlisp, a Lisp for Arduino](https://www.youtube.com/watch?v=tSw3x0rVh88#t=18m30s), [code](https://github.com/alandipert/wombat) | Lightning talk | Presenter | Jon Distad |
| 2011-08-25 | The Ruby Hoedown V | Functional Programming with Ruby | Presentation | Presenter | |
+| 2009-12-11 | WWW | [Managing Code and Quality with Git and Testing](./TechWorks/decks/gitrubytesting/index.html) | Presentation | Presenter | Julio Capote |
+| 2009-09-03 | Rochester Hackers | [Scala, a Scalable Language](./TechWorks/2009-09-03-Scala-a-Scalable-Language.pdf) | Presentation | Presenter | |
| 2005-01-14 | Linux.com | [My workstation OS: NetBSD](https://www.linux.com/news/my-workstation-os-netbsd/), [local copy](./TechWorks/MyWorkstationOSNetBSD.html) | Article | Author | |
diff --git a/md/TechWorks/2009-09-03-Scala-a-Scalable-Language.pdf b/md/TechWorks/2009-09-03-Scala-a-Scalable-Language.pdf
new file mode 100644
index 0000000..fe9c992
Binary files /dev/null and b/md/TechWorks/2009-09-03-Scala-a-Scalable-Language.pdf differ
diff --git a/md/TechWorks/2013-01-10_RaspberryPi.pdf b/md/TechWorks/2013-01-10_RaspberryPi.pdf
new file mode 100644
index 0000000..897bf4d
Binary files /dev/null and b/md/TechWorks/2013-01-10_RaspberryPi.pdf differ
diff --git a/md/TechWorks/ClojureBraveTrueForeword.html b/md/TechWorks/ClojureBraveTrueForeword.html
new file mode 100644
index 0000000..8fabba5
--- /dev/null
+++ b/md/TechWorks/ClojureBraveTrueForeword.html
@@ -0,0 +1,44 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>Foreword to Clojure for the Brave and True</title>
+ <link rel="stylesheet" href="../style.css">
+</head>
+<body>
+ <main id="main">
+ <header class="site-head">
+ <a class="site-brand" href="../TechWorks.html">
+ <span class="site-brand-name">TechWorks</span>
+ <span class="site-brand-tagline">Selected work</span>
+ </a>
+ <nav class="site-nav" aria-label="Archive navigation">
+ <a href="../TechWorks.html">Works</a>
+ <a href="../TechWorksArchive.html">Archive</a>
+ </nav>
+ </header>
+
+ <article>
+ <h1>Foreword to <cite>Clojure for the Brave and True</cite></h1>
+ <p><small>Originally published by No Starch Press in 2015. <a href="https://www.braveclojure.com/foreword/">Read it with the book online</a>.</small></p>
+
+ <p>As you read this hilarious book, you will at some point experience a very serious moment. It is the moment you admit to yourself that programming is more enjoyable after knowing some Clojure. It is also the moment that your investment in this book, in money and time, comes back to you—with interest.</p>
+
+ <p>Humor has a certain relationship to seriousness. It is appropriate to joke about serious things, but only after the right amount of time has passed. For example, it took years for me to be able to crack a smile when I remember my favorite uncle’s last words: “Hold my beer.”</p>
+
+ <p>This book works in the opposite way. It points out really funny things for the right amount of time <em>before</em>, and perhaps even <em>during</em>, the serious event—that moment you realize you enjoy programming more because of Clojure. It does this without obscuring the deep, technical aspects of Clojure programming that you will learn.</p>
+
+ <p>This approach is refreshing because most of the programming books I’ve read are drier than a camel’s fart. We are fortunate that Daniel is a brilliant programmer and writer and that his wife Jess is an equally brilliant illustrator. We are especially fortunate that they both went insane and decided to write a book at exactly the same time.</p>
+
+ <p>Clojure is the topic of this book, but in a way it—or perhaps its creator, Rich Hickey—is also one of the authors, since Clojure is the most elegant programming language ever designed. Like the concept of brunch, Clojure is so elegant that it’s difficult to tell anyone anything about it without somehow improving them.</p>
+
+ <p>Elegance is a quality regularly ascribed to many dialects in the family of programming languages known collectively as Lisp, of which Clojure is one. All Lisps descend from a set of simple and beautiful discoveries made by the mathematician John McCarthy in 1958.</p>
+
+ <p>Since 1958, there have been many Lisps and Lisp books. There are many more Lisps and books to come. As artifacts of the past and future, each are right for the unique combination of constraints and desires faced and fancied by their authors, in their respective times.</p>
+
+ <p>I find Clojure, and this particular book about it, especially right for the present. I hope you will too.</p>
+ </article>
+ </main>
+</body>
+</html>
diff --git a/md/TechWorks/berrycam-d24a0c8.tar.gz b/md/TechWorks/berrycam-d24a0c8.tar.gz
new file mode 100644
index 0000000..99021ae
Binary files /dev/null and b/md/TechWorks/berrycam-d24a0c8.tar.gz differ
diff --git a/md/TechWorks/clojurebridge-curriculum-c8605f6.tar.gz b/md/TechWorks/clojurebridge-curriculum-c8605f6.tar.gz
new file mode 100644
index 0000000..9894939
Binary files /dev/null and b/md/TechWorks/clojurebridge-curriculum-c8605f6.tar.gz differ
diff --git a/md/TechWorks/decks/barcamp-2012/index.html b/md/TechWorks/decks/barcamp-2012/index.html
new file mode 100644
index 0000000..f7beeb9
--- /dev/null
+++ b/md/TechWorks/decks/barcamp-2012/index.html
@@ -0,0 +1,419 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<title>Your Own Compiler in 20 Minutes</title>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+<meta name="title" content="Your Own Compiler in 20 Minutes"/>
+<meta name="generator" content="Org-mode"/>
+<meta name="generated" content="2012-10-06 10:16:20 EDT"/>
+<meta name="author" content="Alan Dipert"/>
+<meta name="description" content=""/>
+<meta name="keywords" content=""/>
+
+<link rel="stylesheet" type="text/css" href="slide-assets/common.css" />
+<link rel="stylesheet" type="text/css" href="slide-assets/projection.css" media="projection" />
+<link rel="stylesheet" type="text/css" href="slide-assets/presenter.css" media="presenter" />
+
+
+</head>
+<body>
+
+<div id="preamble">
+
+</div>
+
+<div id="content">
+<h1 class="title">Your Own Compiler in 20 Minutes</h1>
+
+
+<p>Press <strong>T</strong> to toggle slide-show mode.</p>
+
+
+<div id="table-of-contents">
+<h2>Table of Contents</h2>
+<div id="text-table-of-contents">
+<ul>
+<li><a href="#sec-1">1 Your Own Compiler in 20 Minutes</a></li>
+<li><a href="#sec-2">2 Agenda</a></li>
+<li><a href="#sec-3">3 What's a compiler?</a></li>
+<li><a href="#sec-4">4 What's in a compiler?</a></li>
+<li><a href="#sec-5">5 Javascript Compiler Example</a></li>
+<li><a href="#sec-6">6 The Dragon Book</a></li>
+<li><a href="#sec-7">7 Time to Cheat!</a></li>
+<li><a href="#sec-8">8 What's Lisp?</a></li>
+<li><a href="#sec-9">9 Javascript vs. Lisp</a></li>
+<li><a href="#sec-10">10 JSONScript</a></li>
+<li><a href="#sec-11">11 Compiling JSON to JSONScript</a></li>
+<li><a href="#sec-12">12 Thanks!</a></li>
+</ul>
+</div>
+</div>
+
+<div id="outline-container-1" class="outline-2">
+<h2 id="sec-1"><span class="section-number-2">1</span> Your Own Compiler in 20 Minutes <span class="tag"><span class="slide">slide</span></span></h2>
+<div class="outline-text-2" id="text-1">
+
+
+
+
+<div style="text-align:center;">
+</br>
+<img id="lisp-logo" src="slide-assets/lisp.png"/>
+</div>
+<p class="presenters">
+Alan Dipert</br>
+@alandipert
+</p>
+
+</div>
+
+</div>
+
+<div id="outline-container-2" class="outline-2">
+<h2 id="sec-2"><span class="section-number-2">2</span> Agenda <span class="tag"><span class="slide">slide</span></span></h2>
+<div class="outline-text-2" id="text-2">
+
+<ul>
+<li id="sec-2-1">What's in a compiler?<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-2-2">What's Lisp?<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-2-3">Lisp → Javascript compiler<br/>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3" class="outline-2">
+<h2 id="sec-3"><span class="section-number-2">3</span> What's a compiler? <span class="tag"><span class="slide">slide</span></span></h2>
+<div class="outline-text-2" id="text-3">
+
+<ul>
+<li id="sec-3-1">Compilers are functions<br/>
+<ul>
+<li id="sec-3-1-1">Language A → Language B<br/>
+<ul>
+<li id="sec-3-1-1-1">A is usually "high level"<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-1-1-2">B is usually "low level"<br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-3-1-2">Examples<br/>
+<ul>
+<li id="sec-3-1-2-1">Java to Java bytecode<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-1-2-2">C to assembly<br/>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-4" class="outline-2">
+<h2 id="sec-4"><span class="section-number-2">4</span> What's in a compiler? <span class="tag"><span class="slide">slide</span></span></h2>
+<div class="outline-text-2" id="text-4">
+
+<ul>
+<li id="sec-4-1">Lexical Analyzer or "lexer"<br/>
+<ul>
+<li id="sec-4-1-1">Recognizes <b>tokens</b> like <code>printf</code>, <code>echo</code>, and "<code>hello world</code>"<br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-4-2">Parser<br/>
+<ul>
+<li id="sec-4-2-1">Recognizes patterns of tokens and builds an <b>Abstract Syntax Tree (AST)</b><br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-4-3">Generator or "back end"<br/>
+<ul>
+<li id="sec-4-3-1">Walks the AST and generates appropriate code in the target language<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-4-3-2">Optionally optimizes code for size, speed, or architecture<br/>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-5" class="outline-2">
+<h2 id="sec-5"><span class="section-number-2">5</span> Javascript Compiler Example <span class="tag"><span class="slide">slide</span></span></h2>
+<div class="outline-text-2" id="text-5">
+
+<ul>
+<li id="sec-5-1"><code>alert(1+2*3)</code><br/>
+<ol>
+<li>Lexically Analyze: <code>alert</code>, <code>(</code>, <code>1</code>, <code>+</code>, <code>2</code>, <code>*</code>, <code>3</code>, <code>)</code>
+<ol>
+<li><code>identitifier<alert> arglist<number<1>, identifier<+>...</code>
+</li>
+</ol>
+
+</li>
+<li>Parse: <function call>(<arguments>…)
+<ol>
+<li><code><function: alert>(arguments: 1, +, 2...)</code>
+</li>
+</ol>
+
+</li>
+<li>Generate: <code>compile(alert, compile(1), compile(+)...)</code>
+<ol>
+<li><code>PUSH 2 R1, PUSH 3 R2, * R1,R2,R3...</code>
+</li>
+</ol>
+
+</li>
+</ol>
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-6" class="outline-2">
+<h2 id="sec-6"><span class="section-number-2">6</span> The Dragon Book <span class="tag"><span class="slide">slide</span></span></h2>
+<div class="outline-text-2" id="text-6">
+
+<ul>
+<li id="sec-6-1"><img src="slide-assets/compilers.jpg" alt="slide-assets/compilers.jpg" /><br/>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-7" class="outline-2">
+<h2 id="sec-7"><span class="section-number-2">7</span> Time to Cheat! <span class="tag"><span class="slide">slide</span></span></h2>
+<div class="outline-text-2" id="text-7">
+
+
+<img style="width:600px;" src="slide-assets/cheating.jpg"/>
+</div>
+
+</div>
+
+<div id="outline-container-8" class="outline-2">
+<h2 id="sec-8"><span class="section-number-2">8</span> What's Lisp? <span class="tag"><span class="slide">slide</span></span></h2>
+<div class="outline-text-2" id="text-8">
+
+<ul>
+<li id="sec-8-1">Programming language invented in 1958<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-8-2">Code is data<br/>
+<ul>
+<li id="sec-8-2-1">Symbols: <code>alert</code>, <code>*</code>, <code>+</code><br/>
+</li>
+</ul>
+<ul>
+<li id="sec-8-2-2">Numbers: <code>1</code>, <code>3</code><br/>
+</li>
+</ul>
+<ul>
+<li id="sec-8-2-3">List of numbers: <code>(1 2 3)</code><br/>
+</li>
+</ul>
+<ul>
+<li id="sec-8-2-4">Function call: <code>(+ 1 2 3)</code><br/>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-9" class="outline-2">
+<h2 id="sec-9"><span class="section-number-2">9</span> Javascript vs. Lisp <span class="tag"><span class="slide">slide</span></span></h2>
+<div class="outline-text-2" id="text-9">
+
+<ul>
+<li id="sec-9-1">Javascript<br/>
+
+
+
+<pre class="src src-javascript">alert(1+2*3); <span class="org-comment-delimiter">//</span><span class="org-comment">Source code string</span>
+</pre>
+
+</li>
+</ul>
+<ul>
+<li id="sec-9-2">Lisp<br/>
+
+
+
+<pre class="src src-lisp">(alert (+ 1 (* 2 3))) <span class="org-comment-delimiter">;;</span><span class="org-comment">Source code data</span>
+</pre>
+
+<ul>
+<li id="sec-9-2-1">Precedence rules unnecessary<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-9-2-2">Compiler is passed data instead of source code strings or files<br/>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-10" class="outline-2">
+<h2 id="sec-10"><span class="section-number-2">10</span> JSONScript <span class="tag"><span class="slide">slide</span></span></h2>
+<div class="outline-text-2" id="text-10">
+
+<ul>
+<li id="sec-10-1">Javascript Object Notation (JSON) is a subset of Javascript and common data format<br/>
+<ul>
+<li id="sec-10-1-1">We will use JSON to represent Lisp programs<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-10-1-2">Lisp<br/>
+
+
+
+<pre class="src src-lisp">(alert (+ 1 (* 2 3)))
+</pre>
+
+</li>
+</ul>
+<ul>
+<li id="sec-10-1-3">JSONScript<br/>
+
+
+
+<pre class="src src-javascript">[<span class="org-string">'alert'</span>, [<span class="org-string">'+'</span>, 1, [<span class="org-string">'*'</span>, 2, 3]]]
+</pre>
+
+</li>
+</ul>
+<ul>
+<li id="sec-10-1-4">Note: strings are symbols, arrays are lists<br/>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-11" class="outline-2">
+<h2 id="sec-11"><span class="section-number-2">11</span> Compiling JSON to JSONScript <span class="tag"><span class="slide">slide</span></span></h2>
+<div class="outline-text-2" id="text-11">
+
+<ul>
+<li id="sec-11-1">Write a function that converts JSONScript to a string of Javascript<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-11-2">Pass the string to <code>eval()</code><br/>
+</li>
+</ul>
+<ul>
+<li id="sec-11-3">JSONScript<br/>
+
+
+
+<pre class="src src-javascript">[<span class="org-string">'alert'</span>, [<span class="org-string">'+'</span>, 1, [<span class="org-string">'*'</span>, 2, 3]]]
+</pre>
+
+</li>
+</ul>
+<ul>
+<li id="sec-11-4">Javascript<br/>
+
+
+
+<pre class="src src-javascript">alert(1+2*3)
+</pre>
+
+</li>
+</ul>
+<ul>
+<li id="sec-11-5">Demo: <a href="http://tiny.cc/compiler">http://tiny.cc/compiler</a><br/>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-12" class="outline-2">
+<h2 id="sec-12"><span class="section-number-2">12</span> Thanks! <span class="tag"><span class="slide">slide</span></span></h2>
+<div class="outline-text-2" id="text-12">
+
+<ul>
+<li id="sec-12-1">Alan Dipert<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-12-2">@alandipert<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-12-3">Source for presentation: <a href="https://github.com/alandipert/barcamp2012-jsonscript">https://github.com/alandipert/barcamp2012-jsonscript</a><br/>
+</li>
+</ul>
+<ul>
+<li id="sec-12-4">Presentation online: <a href="http://alandipert.github.com/barcamp-2012/">http://alandipert.github.com/barcamp-2012/</a><br/>
+</li>
+</ul>
+<ul>
+<li id="sec-12-5">Original Blog Post: <a href="http://bit.ly/pffaCd">http://bit.ly/pffaCd</a><br/>
+
+
+
+
+
+
+
+
+<script type="text/javascript" src="slide-assets/org-html-slideshow.js"></script>
+
+
+</li>
+</ul>
+</div>
+</div>
+</div>
+
+<div id="postamble">
+<p class="date">Date: 2012-10-06 10:16:20 EDT</p>
+<p class="author">Author: Alan Dipert</p>
+<p class="creator">Org version 7.8.03 with Emacs version 24</p>
+<a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>
+
+</div>
+</body>
+</html>
diff --git a/md/TechWorks/decks/barcamp-2012/slide-assets/cheating.jpg b/md/TechWorks/decks/barcamp-2012/slide-assets/cheating.jpg
new file mode 100644
index 0000000..563c324
Binary files /dev/null and b/md/TechWorks/decks/barcamp-2012/slide-assets/cheating.jpg differ
diff --git a/md/TechWorks/decks/barcamp-2012/slide-assets/common.css b/md/TechWorks/decks/barcamp-2012/slide-assets/common.css
new file mode 100644
index 0000000..bf98388
--- /dev/null
+++ b/md/TechWorks/decks/barcamp-2012/slide-assets/common.css
@@ -0,0 +1,57 @@
+/* Org-HTML-Slideshow common styles.
+ *
+ * These styles will apply to all views.
+ */
+
+body {
+ font-family: Helvetica, Arial, sans-serif;
+}
+
+span.tag {
+ display: none;
+}
+
+pre {
+ font-family: Monaco, "Courier New", monospace;
+}
+
+#c-panel {
+ background: lightgray;
+ bottom: 0px;
+ border: 1px solid black;
+ font-size: 12pt;
+ position: fixed;
+ right: 0px;
+}
+
+#c-panel a {
+ display: block;
+}
+
+#c-panel .key {
+ display: none;
+}
+
+#c-panel .key {
+ display: none;
+}
+
+.org-constant {
+ color: purple;
+}
+
+.org-string {
+ color: green;
+}
+
+.org-comment {
+ color: darkred;
+}
+
+.org-comment-delimiter {
+ color: darkred;
+}
+
+.org-keyword, .org-builtin, .org-variable-name {
+ color: blue;
+}
\ No newline at end of file
diff --git a/md/TechWorks/decks/barcamp-2012/slide-assets/compilers.jpg b/md/TechWorks/decks/barcamp-2012/slide-assets/compilers.jpg
new file mode 100644
index 0000000..1f5b958
Binary files /dev/null and b/md/TechWorks/decks/barcamp-2012/slide-assets/compilers.jpg differ
diff --git a/md/TechWorks/decks/barcamp-2012/slide-assets/lisp.png b/md/TechWorks/decks/barcamp-2012/slide-assets/lisp.png
new file mode 100644
index 0000000..1285024
Binary files /dev/null and b/md/TechWorks/decks/barcamp-2012/slide-assets/lisp.png differ
diff --git a/md/TechWorks/decks/barcamp-2012/slide-assets/org-html-slideshow.js b/md/TechWorks/decks/barcamp-2012/slide-assets/org-html-slideshow.js
new file mode 100644
index 0000000..af155eb
--- /dev/null
+++ b/md/TechWorks/decks/barcamp-2012/slide-assets/org-html-slideshow.js
@@ -0,0 +1,193 @@
+function b(a){throw a;}var g=void 0,i=!0,k=null,m=!1;function ba(){return function(a){return a}}function n(a){return function(){return this[a]}}function ca(a){return function(){return a}}var o,p=this;function da(a){for(var a=a.split("."),c=p,d;d=a.shift();)if(c[d]!=k)c=c[d];else return k;return c}function ea(){}
+function s(a){var c=typeof a;if("object"==c)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return c;var d=Object.prototype.toString.call(a);if("[object Window]"==d)return"object";if("[object Array]"==d||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==d||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
+else if("function"==c&&"undefined"==typeof a.call)return"object";return c}function t(a){return a!==g}function v(a){return"array"==s(a)}function fa(a){var c=s(a);return"array"==c||"object"==c&&"number"==typeof a.length}function x(a){return"string"==typeof a}function ga(a){return"function"==s(a)}function ha(a){a=s(a);return"object"==a||"array"==a||"function"==a}function ia(a){return a[ja]||(a[ja]=++ka)}var ja="closure_uid_"+Math.floor(2147483648*Math.random()).toString(36),ka=0;
+function la(a,c,d){return a.call.apply(a.bind,arguments)}function ma(a,c,d){var e=c||p;if(2<arguments.length){var f=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,f);return a.apply(e,c)}}return function(){return a.apply(e,arguments)}}function na(a,c,d){na=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?la:ma;return na.apply(k,arguments)}
+function oa(a,c){var d=Array.prototype.slice.call(arguments,1);return function(){var c=Array.prototype.slice.call(arguments);c.unshift.apply(c,d);return a.apply(this,c)}}var pa=Date.now||function(){return+new Date};function qa(a,c){function d(){}d.prototype=c.prototype;a.la=c.prototype;a.prototype=new d};function ra(a,c){for(var d=1;d<arguments.length;d++)var e=(""+arguments[d]).replace(/\$/g,"$$$$"),a=a.replace(/\%s/,e);return a}var sa=/(\.\d+)|(\d+)|(\D+)/g;function ta(a,c){if(a==c)return 0;if(!a)return-1;if(!c)return 1;for(var d=a.toLowerCase().match(sa),e=c.toLowerCase().match(sa),f=Math.min(d.length,e.length),h=0;h<f;h++){var j=d[h],l=e[h];if(j!=l){d=parseInt(j,10);return!isNaN(d)&&(e=parseInt(l,10),!isNaN(e)&&d-e)?d-e:j<l?-1:1}}return d.length!=e.length?d.length-e.length:a<c?-1:1}var ua=/^[a-zA-Z0-9\-_.!~*'()]*$/;
+function va(a){a=""+a;return!ua.test(a)?encodeURIComponent(a):a}function wa(a){if(!xa.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(ya,"&"));-1!=a.indexOf("<")&&(a=a.replace(za,"<"));-1!=a.indexOf(">")&&(a=a.replace(Aa,">"));-1!=a.indexOf('"')&&(a=a.replace(Ba,"""));return a}var ya=/&/g,za=/</g,Aa=/>/g,Ba=/\"/g,xa=/[&<>\"]/,Ca={"\x00":"\\0","\u0008":"\\b","\u000c":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\u000b":"\\x0B",'"':'\\"',"\\":"\\\\"},Da={"'":"\\'"};
+function Ea(a){var q;a=""+a;if(a.quote)return a.quote();for(var c=['"'],d=0;d<a.length;d++){var e=a.charAt(d),f=e.charCodeAt(0),h=c,j=d+1,l;if(!(l=Ca[e])){if(!(31<f&&127>f))if(e in Da)e=Da[e];else if(e in Ca)q=Da[e]=Ca[e],e=q;else{f=e;l=e.charCodeAt(0);if(31<l&&127>l)f=e;else{if(256>l){if(f="\\x",16>l||256<l)f+="0"}else f="\\u",4096>l&&(f+="0");f+=l.toString(16).toUpperCase()}e=Da[e]=f}l=e}h[j]=l}c.push('"');return c.join("")}
+function Fa(a,c){for(var d=0,e=(""+a).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split("."),f=(""+c).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split("."),h=Math.max(e.length,f.length),j=0;0==d&&j<h;j++){var l=e[j]||"",q=f[j]||"",r=RegExp("(\\d*)(\\D*)","g"),w=RegExp("(\\d*)(\\D*)","g");do{var u=r.exec(l)||["","",""],H=w.exec(q)||["","",""];if(0==u[0].length&&0==H[0].length)break;d=((0==u[1].length?0:parseInt(u[1],10))<(0==H[1].length?0:parseInt(H[1],10))?-1:(0==u[1].length?0:parseInt(u[1],10))>(0==H[1].length?
+0:parseInt(H[1],10))?1:0)||((0==u[2].length)<(0==H[2].length)?-1:(0==u[2].length)>(0==H[2].length)?1:0)||(u[2]<H[2]?-1:u[2]>H[2]?1:0)}while(0==d)}return d}function Ga(a){for(var c=0,d=0;d<a.length;++d)c=31*c+a.charCodeAt(d),c%=4294967296;return c}var Ha={};function Ia(a){return Ha[a]||(Ha[a]=(""+a).replace(/\-([a-z])/g,function(a,d){return d.toUpperCase()}))};var Ja,Ka,La,Ma,Na,Oa=(Na="ScriptEngine"in p&&"JScript"==p.ScriptEngine())?p.ScriptEngineMajorVersion()+"."+p.ScriptEngineMinorVersion()+"."+p.ScriptEngineBuildVersion():"0";function Pa(a,c){this.n=Na?[]:"";a!=k&&this.append.apply(this,arguments)}Pa.prototype.set=function(a){this.clear();this.append(a)};Na?(Pa.prototype.Aa=0,Pa.prototype.append=function(a,c,d){c==k?this.n[this.Aa++]=a:(this.n.push.apply(this.n,arguments),this.Aa=this.n.length);return this}):Pa.prototype.append=function(a,c,d){this.n+=a;if(c!=k)for(var e=1;e<arguments.length;e++)this.n+=arguments[e];return this};Pa.prototype.clear=function(){Na?this.Aa=this.n.length=0:this.n=""};
+Pa.prototype.toString=function(){if(Na){var a=this.n.join("");this.clear();a&&this.append(a);return a}return this.n};var Qa;function Ra(a,c){var d=Array.prototype.slice.call(arguments),e=d.shift();"undefined"==typeof e&&b(Error("[goog.string.format] Template required"));return e.replace(/%([0\-\ \+]*)(\d+)?(\.(\d+))?([%sfdiu])/g,function(a,c,e,l,q,r,w,u){if("%"==r)return"%";var H=d.shift();"undefined"==typeof H&&b(Error("[goog.string.format] Not enough arguments"));arguments[0]=H;return Sa[r].apply(k,arguments)})}
+var Sa={s:function(a,c,d){return isNaN(d)||a.length>=d?a:a=-1<c.indexOf("-",0)?a+Array(d-a.length+1).join(" "):Array(d-a.length+1).join(" ")+a},f:function(a,c,d,e,f){e=a.toString();isNaN(f)||""==f||(e=a.toFixed(f));var h;h=0>a?"-":0<=c.indexOf("+")?"+":0<=c.indexOf(" ")?" ":"";0<=a&&(e=h+e);if(isNaN(d)||e.length>=d)return e;e=isNaN(f)?Math.abs(a).toString():Math.abs(a).toFixed(f);a=d-e.length-h.length;return e=0<=c.indexOf("-",0)?h+e+Array(a+1).join(" "):h+Array(a+1).join(0<=c.indexOf("0",0)?"0":
+" ")+e}};Sa.d=function(a,c,d,e,f,h,j,l){return Sa.f(parseInt(a,10),c,d,e,0,h,j,l)};Sa.i=Sa.d;Sa.u=Sa.d;function Ta(){return p.navigator?p.navigator.userAgent:k}Ma=La=Ka=Ja=m;var Ua;if(Ua=Ta()){var Va=p.navigator;Ja=0==Ua.indexOf("Opera");Ka=!Ja&&-1!=Ua.indexOf("MSIE");La=!Ja&&-1!=Ua.indexOf("WebKit");Ma=!Ja&&!La&&"Gecko"==Va.product}var Wa=Ja,y=Ka,Xa=Ma,Ya=La,Za=p.navigator,$a=-1!=(Za&&Za.platform||"").indexOf("Mac"),ab;
+a:{var bb="",cb;if(Wa&&p.opera)var db=p.opera.version,bb="function"==typeof db?db():db;else if(Xa?cb=/rv\:([^\);]+)(\)|;)/:y?cb=/MSIE\s+([^\);]+)(\)|;)/:Ya&&(cb=/WebKit\/(\S+)/),cb)var eb=cb.exec(Ta()),bb=eb?eb[1]:"";if(y){var fb,gb=p.document;fb=gb?gb.documentMode:g;if(fb>parseFloat(bb)){ab=""+fb;break a}}ab=bb}var hb={};function ib(a){return hb[a]||(hb[a]=0<=Fa(ab,a))};function jb(){this.eb=pa()}var kb=new jb;jb.prototype.set=function(a){this.eb=a};jb.prototype.reset=function(){this.set(pa())};jb.prototype.get=n("eb");function lb(a){this.ub=a||"";this.Ab=kb}o=lb.prototype;o.gb=i;o.yb=i;o.xb=i;o.hb=m;o.zb=m;function mb(a){return 10>a?"0"+a:""+a}function nb(a,c){var d=(a.ib-c)/1E3,e=d.toFixed(3),f=0;if(1>d)f=2;else for(;100>d;)f++,d*=10;for(;0<f--;)e=" "+e;return e}function ob(a){lb.call(this,a)}qa(ob,lb);function pb(a){this.stack=Error().stack||"";if(a)this.message=""+a}qa(pb,Error);pb.prototype.name="CustomError";function qb(a,c){c.unshift(a);pb.call(this,ra.apply(k,c));c.shift();this.Eb=a}qa(qb,pb);qb.prototype.name="AssertionError";function rb(a,c){b(new qb("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1)))};var sb=RegExp("^(?:([^:/?#.]+):)?(?://(?:([^/?#]*)@)?([\\w\\d\\-\\u0100-\\uffff.%]*)(?::([0-9]+))?)?([^?#]+)?(?:\\?([^#]*))?(?:#(.*))?$");var tb=Array.prototype,ub=tb.indexOf?function(a,c,d){return tb.indexOf.call(a,c,d)}:function(a,c,d){d=d==k?0:0>d?Math.max(0,a.length+d):d;if(x(a))return!x(c)||1!=c.length?-1:a.indexOf(c,d);for(;d<a.length;d++)if(d in a&&a[d]===c)return d;return-1},vb=tb.forEach?function(a,c,d){tb.forEach.call(a,c,d)}:function(a,c,d){for(var e=a.length,f=x(a)?a.split(""):a,h=0;h<e;h++)h in f&&c.call(d,f[h],h,a)};function wb(a){return tb.concat.apply(tb,arguments)}
+function xb(a){if(v(a))return wb(a);for(var c=[],d=0,e=a.length;d<e;d++)c[d]=a[d];return c}function yb(a){return v(a)?wb(a):xb(a)}function zb(a,c){for(var d=1;d<arguments.length;d++){var e=arguments[d],f;if(v(e)||(f=fa(e))&&e.hasOwnProperty("callee"))a.push.apply(a,e);else if(f)for(var h=a.length,j=e.length,l=0;l<j;l++)a[h+l]=e[l];else a.push(e)}}function Ab(a,c,d,e){tb.splice.apply(a,Bb(arguments,1))}function Bb(a,c,d){return 2>=arguments.length?tb.slice.call(a,c):tb.slice.call(a,c,d)};function Db(a,c,d){for(var e in a)c.call(d,a[e],e,a)}function Eb(a){var c=[],d=0,e;for(e in a)c[d++]=a[e];return c}function Fb(a){var c=[],d=0,e;for(e in a)c[d++]=e;return c}function Gb(a){var c={},d;for(d in a)c[d]=a[d];return c}var Hb="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",");
+function Ib(a,c){for(var d,e,f=1;f<arguments.length;f++){e=arguments[f];for(d in e)a[d]=e[d];for(var h=0;h<Hb.length;h++)d=Hb[h],Object.prototype.hasOwnProperty.call(e,d)&&(a[d]=e[d])}};function Jb(a){if("function"==typeof a.Z)return a.Z();if(x(a))return a.split("");if(fa(a)){for(var c=[],d=a.length,e=0;e<d;e++)c.push(a[e]);return c}return Eb(a)}function Kb(a,c,d){if("function"==typeof a.forEach)a.forEach(c,d);else if(fa(a)||x(a))vb(a,c,d);else{var e;if("function"==typeof a.fa)e=a.fa();else if("function"!=typeof a.Z)if(fa(a)||x(a)){e=[];for(var f=a.length,h=0;h<f;h++)e.push(h)}else e=Fb(a);else e=g;for(var f=Jb(a),h=f.length,j=0;j<h;j++)c.call(d,f[j],e&&e[j],a)}};function Lb(a,c){this.H={};this.h=[];var d=arguments.length;if(1<d){d%2&&b(Error("Uneven number of arguments"));for(var e=0;e<d;e+=2)this.set(arguments[e],arguments[e+1])}else if(a){a instanceof Lb?(d=a.fa(),e=a.Z()):(d=Fb(a),e=Eb(a));for(var f=0;f<d.length;f++)this.set(d[f],e[f])}}o=Lb.prototype;o.e=0;o.Oa=0;o.Z=function(){Mb(this);for(var a=[],c=0;c<this.h.length;c++)a.push(this.H[this.h[c]]);return a};o.fa=function(){Mb(this);return this.h.concat()};o.V=function(a){return Nb(this.H,a)};
+o.clear=function(){this.H={};this.Oa=this.e=this.h.length=0};o.remove=function(a){return Nb(this.H,a)?(delete this.H[a],this.e--,this.Oa++,this.h.length>2*this.e&&Mb(this),i):m};function Mb(a){if(a.e!=a.h.length){for(var c=0,d=0;c<a.h.length;){var e=a.h[c];Nb(a.H,e)&&(a.h[d++]=e);c++}a.h.length=d}if(a.e!=a.h.length){for(var f={},d=c=0;c<a.h.length;)e=a.h[c],Nb(f,e)||(a.h[d++]=e,f[e]=1),c++;a.h.length=d}}o.get=function(a,c){return Nb(this.H,a)?this.H[a]:c};
+o.set=function(a,c){Nb(this.H,a)||(this.e++,this.h.push(a),this.Oa++);this.H[a]=c};o.da=function(){return new Lb(this)};function Nb(a,c){return Object.prototype.hasOwnProperty.call(a,c)};function Ob(a,c){var d;a instanceof Ob?(this.ka(c==k?a.G:c),Pb(this,a.Q),Qb(this,a.ta),Rb(this,a.W),Sb(this,a.ha),Tb(this,a.ga),Ub(this,a.M.da()),Vb(this,a.ea)):a&&(d=(""+a).match(sb))?(this.ka(!!c),Pb(this,d[1]||"",i),Qb(this,d[2]||"",i),Rb(this,d[3]||"",i),Sb(this,d[4]),Tb(this,d[5]||"",i),Ub(this,d[6]||"",i),Vb(this,d[7]||"",i)):(this.ka(!!c),this.M=new Wb(k,this,this.G))}o=Ob.prototype;o.Q="";o.ta="";o.W="";o.ha=k;o.ga="";o.ea="";o.qb=m;o.G=m;
+o.toString=function(){if(this.A)return this.A;var a=[];this.Q&&a.push(Xb(this.Q,Yb),":");this.W&&(a.push("//"),this.ta&&a.push(Xb(this.ta,Yb),"@"),a.push(x(this.W)?encodeURIComponent(this.W):k),this.ha!=k&&a.push(":",""+this.ha));this.ga&&(this.W&&"/"!=this.ga.charAt(0)&&a.push("/"),a.push(Xb(this.ga,Zb)));var c=""+this.M;c&&a.push("?",c);this.ea&&a.push("#",Xb(this.ea,$b));return this.A=a.join("")};
+o.da=function(){var a=this.Q,c=this.ta,d=this.W,e=this.ha,f=this.ga,h=this.M.da(),j=this.ea,l=new Ob(k,this.G);a&&Pb(l,a);c&&Qb(l,c);d&&Rb(l,d);e&&Sb(l,e);f&&Tb(l,f);h&&Ub(l,h);j&&Vb(l,j);return l};function Pb(a,c,d){ac(a);delete a.A;a.Q=d?c?decodeURIComponent(c):"":c;if(a.Q)a.Q=a.Q.replace(/:$/,"")}function Qb(a,c,d){ac(a);delete a.A;a.ta=d?c?decodeURIComponent(c):"":c}function Rb(a,c,d){ac(a);delete a.A;a.W=d?c?decodeURIComponent(c):"":c}
+function Sb(a,c){ac(a);delete a.A;c?(c=Number(c),(isNaN(c)||0>c)&&b(Error("Bad port number "+c)),a.ha=c):a.ha=k}function Tb(a,c,d){ac(a);delete a.A;a.ga=d?c?decodeURIComponent(c):"":c}function Ub(a,c,d){ac(a);delete a.A;c instanceof Wb?(a.M=c,a.M.Na=a,a.M.ka(a.G)):(d||(c=Xb(c,bc)),a.M=new Wb(c,a,a.G))}function Vb(a,c,d){ac(a);delete a.A;a.ea=d?c?decodeURIComponent(c):"":c}function ac(a){a.qb&&b(Error("Tried to modify a read-only Uri"))}o.ka=function(a){this.G=a;this.M&&this.M.ka(a);return this};
+function cc(a,c){return a instanceof Ob?a.da():new Ob(a,c)}var dc=/^[a-zA-Z0-9\-_.!~*'():\/;?]*$/;function Xb(a,c){var d=k;x(a)&&(d=a,dc.test(d)||(d=encodeURI(a)),0<=d.search(c)&&(d=d.replace(c,ec)));return d}function ec(a){a=a.charCodeAt(0);return"%"+(a>>4&15).toString(16)+(a&15).toString(16)}var Yb=/[#\/\?@]/g,Zb=/[\#\?]/g,bc=/[\#\?@]/g,$b=/#/g;function Wb(a,c,d){this.K=a||k;this.Na=c||k;this.G=!!d}
+function fc(a){if(!a.g&&(a.g=new Lb,a.K))for(var c=a.K.split("&"),d=0;d<c.length;d++){var e=c[d].indexOf("="),f=k,h=k;0<=e?(f=c[d].substring(0,e),h=c[d].substring(e+1)):f=c[d];f=decodeURIComponent(f.replace(/\+/g," "));f=gc(a,f);a.add(f,h?decodeURIComponent(h.replace(/\+/g," ")):"")}}o=Wb.prototype;o.g=k;o.e=k;o.add=function(a,c){fc(this);hc(this);a=gc(this,a);if(this.V(a)){var d=this.g.get(a);v(d)?d.push(c):this.g.set(a,[d,c])}else this.g.set(a,c);this.e++;return this};
+o.remove=function(a){fc(this);a=gc(this,a);if(this.g.V(a)){hc(this);var c=this.g.get(a);v(c)?this.e-=c.length:this.e--;return this.g.remove(a)}return m};o.clear=function(){hc(this);this.g&&this.g.clear();this.e=0};o.V=function(a){fc(this);a=gc(this,a);return this.g.V(a)};o.fa=function(){fc(this);for(var a=this.g.Z(),c=this.g.fa(),d=[],e=0;e<c.length;e++){var f=a[e];if(v(f))for(var h=0;h<f.length;h++)d.push(c[e]);else d.push(c[e])}return d};
+o.Z=function(a){fc(this);if(a)if(a=gc(this,a),this.V(a)){var c=this.g.get(a);if(v(c))return c;a=[];a.push(c)}else a=[];else for(var c=this.g.Z(),a=[],d=0;d<c.length;d++){var e=c[d];v(e)?zb(a,e):a.push(e)}return a};o.set=function(a,c){fc(this);hc(this);a=gc(this,a);if(this.V(a)){var d=this.g.get(a);v(d)?this.e-=d.length:this.e--}this.g.set(a,c);this.e++;return this};o.get=function(a,c){fc(this);a=gc(this,a);if(this.V(a)){var d=this.g.get(a);return v(d)?d[0]:d}return c};
+o.toString=function(){if(this.K)return this.K;if(!this.g)return"";for(var a=[],c=0,d=this.g.fa(),e=0;e<d.length;e++){var f=d[e],h=va(f),f=this.g.get(f);if(v(f))for(var j=0;j<f.length;j++)0<c&&a.push("&"),a.push(h),""!==f[j]&&a.push("=",va(f[j])),c++;else 0<c&&a.push("&"),a.push(h),""!==f&&a.push("=",va(f)),c++}return this.K=a.join("")};function hc(a){delete a.Ea;delete a.K;a.Na&&delete a.Na.A}o.da=function(){var a=new Wb;if(this.Ea)a.Ea=this.Ea;if(this.K)a.K=this.K;if(this.g)a.g=this.g.da();return a};
+function gc(a,c){var d=""+c;a.G&&(d=d.toLowerCase());return d}o.ka=function(a){a&&!this.G&&(fc(this),hc(this),Kb(this.g,function(a,d){var e=d.toLowerCase();d!=e&&(this.remove(d),this.add(e,a))},this));this.G=a};!y||ib("9");var ic=y&&!ib("8");function jc(){}jc.prototype.Wa=m;jc.prototype.ma=function(){if(!this.Wa)this.Wa=i,this.D()};jc.prototype.D=function(){};function kc(a,c){this.type=a;this.currentTarget=this.target=c}qa(kc,jc);o=kc.prototype;o.D=function(){delete this.type;delete this.target;delete this.currentTarget};o.aa=m;o.sa=i;o.stopPropagation=function(){this.aa=i};o.preventDefault=function(){this.sa=m};var lc=new Function("a","return a");function mc(a,c){a&&this.qa(a,c)}qa(mc,kc);o=mc.prototype;o.target=k;o.relatedTarget=k;o.offsetX=0;o.offsetY=0;o.clientX=0;o.clientY=0;o.screenX=0;o.screenY=0;o.button=0;o.keyCode=0;o.charCode=0;o.ctrlKey=m;o.altKey=m;o.shiftKey=m;o.metaKey=m;o.tb=m;o.X=k;
+o.qa=function(a,c){var d=this.type=a.type;kc.call(this,d);this.target=a.target||a.srcElement;this.currentTarget=c;var e=a.relatedTarget;if(e){if(Xa)try{lc(e.nodeName)}catch(f){e=k}}else if("mouseover"==d)e=a.fromElement;else if("mouseout"==d)e=a.toElement;this.relatedTarget=e;this.offsetX=a.offsetX!==g?a.offsetX:a.layerX;this.offsetY=a.offsetY!==g?a.offsetY:a.layerY;this.clientX=a.clientX!==g?a.clientX:a.pageX;this.clientY=a.clientY!==g?a.clientY:a.pageY;this.screenX=a.screenX||0;this.screenY=a.screenY||
+0;this.button=a.button;this.keyCode=a.keyCode||0;this.charCode=a.charCode||("keypress"==d?a.keyCode:0);this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=a.shiftKey;this.metaKey=a.metaKey;this.tb=$a?a.metaKey:a.ctrlKey;this.state=a.state;this.X=a;delete this.sa;delete this.aa};o.stopPropagation=function(){mc.la.stopPropagation.call(this);this.X.stopPropagation?this.X.stopPropagation():this.X.cancelBubble=i};
+o.preventDefault=function(){mc.la.preventDefault.call(this);var a=this.X;if(a.preventDefault)a.preventDefault();else if(a.returnValue=m,ic)try{if(a.ctrlKey||112<=a.keyCode&&123>=a.keyCode)a.keyCode=-1}catch(c){}};o.D=function(){mc.la.D.call(this);this.relatedTarget=this.currentTarget=this.target=this.X=k};function nc(){}var oc=0;o=nc.prototype;o.key=0;o.ia=m;o.Qa=m;o.qa=function(a,c,d,e,f,h){ga(a)?this.Ya=i:a&&a.handleEvent&&ga(a.handleEvent)?this.Ya=m:b(Error("Invalid listener argument"));this.ra=a;this.cb=c;this.src=d;this.type=e;this.capture=!!f;this.Ja=h;this.Qa=m;this.key=++oc;this.ia=m};o.handleEvent=function(a){return this.Ya?this.ra.call(this.Ja||this.src,a):this.ra.handleEvent.call(this.ra,a)};function pc(a,c){this.$a=c;this.Y=[];a>this.$a&&b(Error("[goog.structs.SimplePool] Initial cannot be greater than max"));for(var d=0;d<a;d++)this.Y.push(this.J?this.J():{})}qa(pc,jc);pc.prototype.J=k;pc.prototype.Va=k;function qc(a){return a.Y.length?a.Y.pop():a.J?a.J():{}}function rc(a,c){a.Y.length<a.$a?a.Y.push(c):sc(a,c)}function sc(a,c){if(a.Va)a.Va(c);else if(ha(c))if(ga(c.ma))c.ma();else for(var d in c)delete c[d]}
+pc.prototype.D=function(){pc.la.D.call(this);for(var a=this.Y;a.length;)sc(this,a.pop());delete this.Y};var tc,uc,vc,wc,xc,yc,zc,Ac,Bc,Cc,Dc;
+(function(){function a(){return{e:0,z:0}}function c(){return[]}function d(){function a(c){return j.call(a.src,a.key,c)}return a}function e(){return new nc}function f(){return new mc}var h=Na&&!(0<=Fa(Oa,"5.7")),j;yc=function(a){j=a};if(h){tc=function(){return qc(l)};uc=function(a){rc(l,a)};vc=function(){return qc(q)};wc=function(a){rc(q,a)};xc=function(){return qc(r)};zc=function(){rc(r,d())};Ac=function(){return qc(w)};Bc=function(a){rc(w,a)};Cc=function(){return qc(u)};Dc=function(a){rc(u,a)};var l=
+new pc(0,600);l.J=a;var q=new pc(0,600);q.J=c;var r=new pc(0,600);r.J=d;var w=new pc(0,600);w.J=e;var u=new pc(0,600);u.J=f}else tc=a,uc=ea,vc=c,wc=ea,xc=d,zc=ea,Ac=e,Bc=ea,Cc=f,Dc=ea})();var Ec={},z={},Fc={},Gc={};
+function A(a,c,d,e,f){if(c){if(v(c)){for(var h=0;h<c.length;h++)A(a,c[h],d,e,f);return k}var e=!!e,j=z;c in j||(j[c]=tc());j=j[c];e in j||(j[e]=tc(),j.e++);var j=j[e],l=ia(a),q;j.z++;if(j[l]){q=j[l];for(h=0;h<q.length;h++)if(j=q[h],j.ra==d&&j.Ja==f){if(j.ia)break;return q[h].key}}else q=j[l]=vc(),j.e++;h=xc();h.src=a;j=Ac();j.qa(d,h,a,c,e,f);d=j.key;h.key=d;q.push(j);Ec[d]=j;Fc[l]||(Fc[l]=vc());Fc[l].push(j);a.addEventListener?(a==p||!a.Ua)&&a.addEventListener(c,h,e):a.attachEvent(c in Gc?Gc[c]:Gc[c]=
+"on"+c,h);return d}b(Error("Invalid event type"))}function Hc(a,c,d,e,f){if(v(c))for(var h=0;h<c.length;h++)Hc(a,c[h],d,e,f);else{e=!!e;a:{h=z;if(c in h&&(h=h[c],e in h&&(h=h[e],a=ia(a),h[a]))){a=h[a];break a}a=k}if(a)for(h=0;h<a.length;h++)if(a[h].ra==d&&a[h].capture==e&&a[h].Ja==f){Ic(a[h].key);break}}}
+function Ic(a){if(Ec[a]){var c=Ec[a];if(!c.ia){var d=c.src,e=c.type,f=c.cb,h=c.capture;d.removeEventListener?(d==p||!d.Ua)&&d.removeEventListener(e,f,h):d.detachEvent&&d.detachEvent(e in Gc?Gc[e]:Gc[e]="on"+e,f);d=ia(d);f=z[e][h][d];if(Fc[d]){var j=Fc[d],l=ub(j,c);0<=l&&tb.splice.call(j,l,1);0==j.length&&delete Fc[d]}c.ia=i;f.bb=i;Jc(e,h,d,f);delete Ec[a]}}}
+function Jc(a,c,d,e){if(!e.ya&&e.bb){for(var f=0,h=0;f<e.length;f++)if(e[f].ia){var j=e[f].cb;j.src=k;zc(j);Bc(e[f])}else f!=h&&(e[h]=e[f]),h++;e.length=h;e.bb=m;0==h&&(wc(e),delete z[a][c][d],z[a][c].e--,0==z[a][c].e&&(uc(z[a][c]),delete z[a][c],z[a].e--),0==z[a].e&&(uc(z[a]),delete z[a]))}}
+function Kc(a){var c,d=0,e=c==k;c=!!c;if(a==k)Db(Fc,function(a){for(var f=a.length-1;0<=f;f--){var h=a[f];if(e||c==h.capture)Ic(h.key),d++}});else if(a=ia(a),Fc[a])for(var a=Fc[a],f=a.length-1;0<=f;f--){var h=a[f];if(e||c==h.capture)Ic(h.key),d++}}function Lc(a,c,d,e,f){var h=1,c=ia(c);if(a[c]){a.z--;a=a[c];a.ya?a.ya++:a.ya=1;try{for(var j=a.length,l=0;l<j;l++){var q=a[l];q&&!q.ia&&(h&=Mc(q,f)!==m)}}finally{a.ya--,Jc(d,e,c,a)}}return Boolean(h)}
+function Mc(a,c){var d=a.handleEvent(c);a.Qa&&Ic(a.key);return d}
+yc(function(a,c){if(!Ec[a])return i;var d=Ec[a],e=d.type,f=z;if(!(e in f))return i;var f=f[e],h,j;Qa===g&&(Qa=y&&!p.addEventListener);if(Qa){h=c||da("window.event");var l=i in f,q=m in f;if(l){if(0>h.keyCode||h.returnValue!=g)return i;a:{var r=m;if(0==h.keyCode)try{h.keyCode=-1;break a}catch(w){r=i}if(r||h.returnValue==g)h.returnValue=i}}r=Cc();r.qa(h,this);h=i;try{if(l){for(var u=vc(),H=r.currentTarget;H;H=H.parentNode)u.push(H);j=f[i];j.z=j.e;for(var aa=u.length-1;!r.aa&&0<=aa&&j.z;aa--)r.currentTarget=
+u[aa],h&=Lc(j,u[aa],e,i,r);if(q){j=f[m];j.z=j.e;for(aa=0;!r.aa&&aa<u.length&&j.z;aa++)r.currentTarget=u[aa],h&=Lc(j,u[aa],e,m,r)}}else h=Mc(d,r)}finally{if(u)u.length=0,wc(u);r.ma();Dc(r)}return h}e=new mc(c,this);try{h=Mc(d,e)}finally{e.ma()}return h});function Nc(){}qa(Nc,jc);o=Nc.prototype;o.Ua=i;o.La=k;o.addEventListener=function(a,c,d,e){A(this,a,c,d,e)};o.removeEventListener=function(a,c,d,e){Hc(this,a,c,d,e)};
+o.dispatchEvent=function(a){var c=a.type||a,d=z;if(c in d){if(x(a))a=new kc(a,this);else if(a instanceof kc)a.target=a.target||this;else{var e=a,a=new kc(c,this);Ib(a,e)}var e=1,f,d=d[c],c=i in d,h;if(c){f=[];for(h=this;h;h=h.La)f.push(h);h=d[i];h.z=h.e;for(var j=f.length-1;!a.aa&&0<=j&&h.z;j--)a.currentTarget=f[j],e&=Lc(h,f[j],a.type,i,a)&&a.sa!=m}if(m in d)if(h=d[m],h.z=h.e,c)for(j=0;!a.aa&&j<f.length&&h.z;j++)a.currentTarget=f[j],e&=Lc(h,f[j],a.type,m,a)&&a.sa!=m;else for(f=this;!a.aa&&f&&h.z;f=
+f.La)a.currentTarget=f,e&=Lc(h,f,a.type,m,a)&&a.sa!=m;a=Boolean(e)}else a=i;return a};o.D=function(){Nc.la.D.call(this);Kc(this);this.La=k};function Oc(a,c,d,e,f){if(!y&&(!Ya||!ib("525")))return i;if($a&&f)return Pc(a);if(f&&!e||!d&&(17==c||18==c)||y&&e&&c==a)return m;switch(a){case 13:return i;case 27:return!Ya}return Pc(a)}function Pc(a){if(48<=a&&57>=a||96<=a&&106>=a||65<=a&&90>=a||Ya&&0==a)return i;switch(a){case 32:case 63:case 107:case 109:case 110:case 111:case 186:case 189:case 187:case 188:case 190:case 191:case 192:case 222:case 219:case 220:case 221:return i;default:return m}};function Qc(a,c){if(a)this.xa&&this.detach(),this.na=a,this.wa=A(this.na,"keypress",this,c),this.Ka=A(this.na,"keydown",this.ob,c,this),this.xa=A(this.na,"keyup",this.pb,c,this)}qa(Qc,Nc);o=Qc.prototype;o.na=k;o.wa=k;o.Ka=k;o.xa=k;o.P=-1;o.O=-1;
+var Rc={3:13,12:144,63232:38,63233:40,63234:37,63235:39,63236:112,63237:113,63238:114,63239:115,63240:116,63241:117,63242:118,63243:119,63244:120,63245:121,63246:122,63247:123,63248:44,63272:46,63273:36,63275:35,63276:33,63277:34,63289:144,63302:45},Sc={Up:38,Down:40,Left:37,Right:39,Enter:13,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,"U+007F":46,Home:36,End:35,PageUp:33,PageDown:34,Insert:45},Tc={61:187,59:186},Uc=y||Ya&&ib("525");o=Qc.prototype;
+o.ob=function(a){if(Ya&&(17==this.P&&!a.ctrlKey||18==this.P&&!a.altKey))this.O=this.P=-1;Uc&&!Oc(a.keyCode,this.P,a.shiftKey,a.ctrlKey,a.altKey)?this.handleEvent(a):this.O=Xa&&a.keyCode in Tc?Tc[a.keyCode]:a.keyCode};o.pb=function(){this.O=this.P=-1};
+o.handleEvent=function(a){var c=a.X,d,e;y&&"keypress"==a.type?(d=this.O,e=13!=d&&27!=d?c.keyCode:0):Ya&&"keypress"==a.type?(d=this.O,e=0<=c.charCode&&63232>c.charCode&&Pc(d)?c.charCode:0):Wa?(d=this.O,e=Pc(d)?c.keyCode:0):(d=c.keyCode||this.O,e=c.charCode||0,$a&&63==e&&!d&&(d=191));var f=d,h=c.keyIdentifier;d?63232<=d&&d in Rc?f=Rc[d]:25==d&&a.shiftKey&&(f=9):h&&h in Sc&&(f=Sc[h]);a=f==this.P;this.P=f;c=new Vc(f,e,a,c);try{this.dispatchEvent(c)}finally{c.ma()}};
+o.detach=function(){if(this.wa)Ic(this.wa),Ic(this.Ka),Ic(this.xa),this.xa=this.Ka=this.wa=k;this.na=k;this.O=this.P=-1};o.D=function(){Qc.la.D.call(this);this.detach()};function Vc(a,c,d,e){e&&this.qa(e,g);this.type="key";this.keyCode=a;this.charCode=c;this.repeat=d}qa(Vc,mc);var Wc=!y||ib("9");!Xa&&!y||y&&ib("9")||Xa&&ib("1.9.1");y&&ib("9");function Xc(a){return(a=a.className)&&"function"==typeof a.split?a.split(/\s+/):[]}function Yc(a,c){var d=Xc(a),e=Bb(arguments,1),f;f=d;for(var h=0,j=0;j<e.length;j++)0<=ub(f,e[j])||(f.push(e[j]),h++);f=h==e.length;a.className=d.join(" ");return f}function Zc(a,c){var d=Xc(a),e=Bb(arguments,1),f;f=d;for(var h=0,j=0;j<f.length;j++)0<=ub(e,f[j])&&(Ab(f,j--,1),h++);f=h==e.length;a.className=d.join(" ");return f}function $c(a,c){return 0<=ub(Xc(a),c)};function ad(){return document}function bd(a){return x(a)?document.getElementById(a):a}function cd(a,c,d){return dd(a,c,d)}
+function dd(a,c,d){d=d||document;a=a&&"*"!=a?a.toUpperCase():"";if(d.querySelectorAll&&d.querySelector&&(!Ya||"CSS1Compat"==document.compatMode||ib("528"))&&(a||c))return d.querySelectorAll(a+(c?"."+c:""));if(c&&d.getElementsByClassName){d=d.getElementsByClassName(c);if(a){for(var e={},f=0,h=0,j;j=d[h];h++)a==j.nodeName&&(e[f++]=j);e.length=f;return e}return d}d=d.getElementsByTagName(a||"*");if(c){e={};for(h=f=0;j=d[h];h++)a=j.className,"function"==typeof a.split&&0<=ub(a.split(/\s+/),c)&&(e[f++]=
+j);e.length=f;return e}return d}function ed(a,c){Db(c,function(c,e){"style"==e?a.style.cssText=c:"class"==e?a.className=c:"for"==e?a.htmlFor=c:e in fd?a.setAttribute(fd[e],c):a[e]=c})}var fd={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",rowspan:"rowSpan",valign:"vAlign",height:"height",width:"width",usemap:"useMap",frameborder:"frameBorder",maxlength:"maxLength",type:"type"};
+function gd(a,c,d){var e=arguments,f=document,h=e[0],j=e[1];if(!Wc&&j&&(j.name||j.type)){h=["<",h];j.name&&h.push(' name="',wa(j.name),'"');if(j.type){h.push(' type="',wa(j.type),'"');var l={};Ib(l,j);j=l;delete j.type}h.push(">");h=h.join("")}h=f.createElement(h);if(j)x(j)?h.className=j:v(j)?Yc.apply(k,[h].concat(j)):ed(h,j);2<e.length&&hd(f,h,e);return h}
+function hd(a,c,d){function e(d){d&&c.appendChild(x(d)?a.createTextNode(d):d)}for(var f=2;f<d.length;f++){var h=d[f];fa(h)&&!(ha(h)&&0<h.nodeType)?vb(id(h)?xb(h):h,e):e(h)}}function jd(a){var c;var d=document;c=d.createElement("div");y?(c.innerHTML="<br>"+a,c.removeChild(c.firstChild)):c.innerHTML=a;if(1==c.childNodes.length)c=c.removeChild(c.firstChild);else{for(a=d.createDocumentFragment();c.firstChild;)a.appendChild(c.firstChild);c=a}return c}
+function kd(a){if("outerHTML"in a)return a.outerHTML;var c=(9==a.nodeType?a:a.ownerDocument||a.document).createElement("div");c.appendChild(a.cloneNode(i));return c.innerHTML}function id(a){if(a&&"number"==typeof a.length){if(ha(a))return"function"==typeof a.item||"string"==typeof a.item;if(ga(a))return"function"==typeof a.item}return m};function ld(a,c,d){x(c)?md(a,d,c):Db(c,oa(md,a))}function md(a,c,d){a.style[Ia(d)]=c}function nd(a,c){a.style.display=c?"":"none"}function od(a){return"none"!=a.style.display};function pd(a){return qd(a||arguments.callee.caller,[])}
+function qd(a,c){var d=[];if(0<=ub(c,a))d.push("[...circular reference...]");else if(a&&50>c.length){d.push(rd(a)+"(");for(var e=a.arguments,f=0;f<e.length;f++){0<f&&d.push(", ");var h;h=e[f];switch(typeof h){case "object":h=h?"object":"null";break;case "string":break;case "number":h=""+h;break;case "boolean":h=h?"true":"false";break;case "function":h=(h=rd(h))?h:"[fn]";break;default:h=typeof h}40<h.length&&(h=h.substr(0,40)+"...");d.push(h)}c.push(a);d.push(")\n");try{d.push(qd(a.caller,c))}catch(j){d.push("[exception trying to get caller]\n")}}else a?
+d.push("[...long stack...]"):d.push("[end]");return d.join("")}function rd(a){a=""+a;if(!sd[a]){var c=/function ([^\(]+)/.exec(a);sd[a]=c?c[1]:"[Anonymous]"}return sd[a]}var sd={};var td=p.window;function ud(a,c,d){ga(a)?d&&(a=na(a,d)):a&&"function"==typeof a.handleEvent?a=na(a.handleEvent,a):b(Error("Invalid listener argument"));return 2147483647<c?-1:td.setTimeout(a,c||0)};function vd(a,c,d,e,f){this.reset(a,c,d,e,f)}vd.prototype.wb=0;vd.prototype.Ha=k;vd.prototype.Ga=k;var wd=0;vd.prototype.reset=function(a,c,d,e,f){this.wb="number"==typeof f?f:wd++;this.ib=e||pa();this.$=a;this.ab=c;this.rb=d;delete this.Ha;delete this.Ga};vd.prototype.fb=function(a){this.$=a};function xd(a){this.sb=a}xd.prototype.za=k;xd.prototype.$=k;xd.prototype.Ba=k;xd.prototype.pa=k;function yd(a,c){this.name=a;this.value=c}yd.prototype.toString=n("name");var zd=new yd("SHOUT",1200),Ad=new yd("SEVERE",1E3),Bd=new yd("WARNING",900),Cd=new yd("INFO",800),Dd=new yd("CONFIG",700);function Ed(a){return Fd(a)}o=xd.prototype;o.getParent=n("za");o.fb=function(a){this.$=a};function Gd(a){if(a.$)return a.$;if(a.za)return Gd(a.za);rb("Root logger has no level set.");return k}
+o.log=function(a,c,d){if(a.value>=Gd(this).value){a=this.nb(a,c,d);p.console&&p.console.markTimeline&&p.console.markTimeline("log:"+a.ab);for(c=this;c;){var d=c,e=a;if(d.pa)for(var f=0,h=g;h=d.pa[f];f++)h(e);c=c.getParent()}}};
+o.nb=function(a,c,d){var e=new vd(a,""+c,this.sb);if(d){e.Ha=d;var f;var h=arguments.callee.caller;try{var j;var l=da("window.location.href");if(x(d))j={message:d,name:"Unknown error",lineNumber:"Not available",fileName:l,stack:"Not available"};else{var q,r,w=m;try{q=d.lineNumber||d.Db||"Not available"}catch(u){q="Not available",w=i}try{r=d.fileName||d.filename||d.sourceURL||l}catch(H){r="Not available",w=i}j=w||!d.lineNumber||!d.fileName||!d.stack?{message:d.message,name:d.name,lineNumber:q,fileName:r,
+stack:d.stack||"Not available"}:d}f="Message: "+wa(j.message)+'\nUrl: <a href="view-source:'+j.fileName+'" target="_new">'+j.fileName+"</a>\nLine: "+j.lineNumber+"\n\nBrowser stack:\n"+wa(j.stack+"-> ")+"[end]\n\nJS stack traversal:\n"+wa(pd(h)+"-> ")}catch(aa){f="Exception trying to expose exception! You win, we lose. "+aa}e.Ga=f}return e};o.info=function(a,c){this.log(Cd,a,c)};var Hd={},Id=k;function Jd(){Id||(Id=new xd(""),Hd[""]=Id,Id.fb(Dd))}
+function Fd(a){Jd();var c;if(!(c=Hd[a])){c=new xd(a);var d=a.lastIndexOf("."),e=a.substr(d+1),d=Fd(a.substr(0,d));if(!d.Ba)d.Ba={};d.Ba[e]=c;c.za=d;Hd[a]=c}return c};function Kd(){this.vb=na(this.jb,this);this.Ia=new ob;this.Ia.gb=m;this.Xa=this.Ia.hb=m;this.Za=""}
+Kd.prototype.jb=function(a){var c;c=this.Ia;var d=[];d.push(c.ub," ");if(c.gb){var e=new Date(a.ib);d.push("[",mb(e.getFullYear()-2E3)+mb(e.getMonth()+1)+mb(e.getDate())+" "+mb(e.getHours())+":"+mb(e.getMinutes())+":"+mb(e.getSeconds())+"."+mb(Math.floor(e.getMilliseconds()/10)),"] ")}c.yb&&d.push("[",nb(a,c.Ab.get()),"s] ");c.xb&&d.push("[",a.rb,"] ");c.zb&&d.push("[",a.$.name,"] ");d.push(a.ab,"\n");c.hb&&a.Ha&&d.push(a.Ga,"\n");c=d.join("");if(window.console&&window.console.firebug)switch(a.$){case zd:window.console.info(c);
+break;case Ad:window.console.error(c);break;case Bd:window.console.warn(c);break;default:window.console.debug(c)}else window.console?window.console.log(c):window.opera?window.opera.postError(c):this.Za+=c};function Ld(a,c,d){c||(c={});var e=d||window,d="undefined"!=typeof a.href?a.href:""+a,a=c.target||a.target,f=[],h;for(h in c)switch(h){case "width":case "height":case "top":case "left":f.push(h+"="+c[h]);break;case "target":case "noreferrer":break;default:f.push(h+"="+(c[h]?1:0))}h=f.join(",");if(c.noreferrer){if(c=e.open("",a,h))y&&-1!=d.indexOf(";")&&(d="'"+d.replace(/'/g,"%27")+"'"),d=wa(d),c.document.write('<META HTTP-EQUIV="refresh" content="0; url='+d+'">'),c.document.close()}else c=e.open(d,
+a,h);return c};function B(a){return a!=k&&a!==m}function Md(a,c){var d=a[s.call(k,c)];if(B(d))return d;d=a._;return B(d)?d:m}function C(a,c){return Error.call(k,"No protocol method "+a+" defined for type "+s.call(k,c)+": "+c)}function Nd(a){return Array.prototype.slice.call(a)}function Od(a){return Array.prototype.slice.call(arguments)}function D(a){if(B(B(a)?a.o:a))a=a.o(a);else{var c;var d=D[s.call(k,a)];B(d)?c=d:(d=D._,B(d)?c=d:b(C.call(k,"ICounted.-count",a)));a=c.call(k,a)}return a}
+function Pd(a,c){var d;if(B(B(a)?a.t:a))d=a.t(a,c);else{var e=Pd[s.call(k,a)];B(e)?d=e:(e=Pd._,B(e)?d=e:b(C.call(k,"ICollection.-conj",a)));d=d.call(k,a,c)}return d}
+var E=function(){return function(a,c,d){switch(arguments.length){case 2:var e;if(B(B(a)?a.I:a))e=a.I(a,c);else{var f=E[s.call(k,a)];B(f)?e=f:(f=E._,B(f)?e=f:b(C.call(k,"IIndexed.-nth",a)));e=e.call(k,a,c)}return e;case 3:return B(B(a)?a.I:a)?e=a.I(a,c,d):(e=E[s.call(k,a)],B(e)?f=e:(e=E._,B(e)?f=e:b(C.call(k,"IIndexed.-nth",a))),e=f.call(k,a,c,d)),e}b("Invalid arity: "+arguments.length)}}(),Qd={};
+function Rd(a){if(B(B(a)?a.S:a))a=a.S(a);else{var c;var d=Rd[s.call(k,a)];B(d)?c=d:(d=Rd._,B(d)?c=d:b(C.call(k,"ISeq.-first",a)));a=c.call(k,a)}return a}function Sd(a){if(B(B(a)?a.T:a))a=a.T(a);else{var c;var d=Sd[s.call(k,a)];B(d)?c=d:(d=Sd._,B(d)?c=d:b(C.call(k,"ISeq.-rest",a)));a=c.call(k,a)}return a}
+var F=function(){return function(a,c,d){switch(arguments.length){case 2:var e;if(B(B(a)?a.R:a))e=a.R(a,c);else{var f=F[s.call(k,a)];B(f)?e=f:(f=F._,B(f)?e=f:b(C.call(k,"ILookup.-lookup",a)));e=e.call(k,a,c)}return e;case 3:return B(B(a)?a.R:a)?e=a.R(a,c,d):(e=F[s.call(k,a)],B(e)?f=e:(e=F._,B(e)?f=e:b(C.call(k,"ILookup.-lookup",a))),e=f.call(k,a,c,d)),e}b("Invalid arity: "+arguments.length)}}();
+function Td(a,c){var d;if(B(B(a)?a.Ca:a))d=a.Ca(a,c);else{var e=Td[s.call(k,a)];B(e)?d=e:(e=Td._,B(e)?d=e:b(C.call(k,"IAssociative.-contains-key?",a)));d=d.call(k,a,c)}return d}function Ud(a,c,d){if(B(B(a)?a.ua:a))a=a.ua(a,c,d);else{var e;var f=Ud[s.call(k,a)];B(f)?e=f:(f=Ud._,B(f)?e=f:b(C.call(k,"IAssociative.-assoc",a)));a=e.call(k,a,c,d)}return a}var Vd={};
+function Wd(a,c){var d;if(B(B(a)?a.Da:a))d=a.Da(a,c);else{var e=Wd[s.call(k,a)];B(e)?d=e:(e=Wd._,B(e)?d=e:b(C.call(k,"IMap.-dissoc",a)));d=d.call(k,a,c)}return d}var Xd={},Yd={};function Zd(a){if(B(B(a)?a.kb:a))a=a.state;else{var c;var d=Zd[s.call(k,a)];B(d)?c=d:(d=Zd._,B(d)?c=d:b(C.call(k,"IDeref.-deref",a)));a=c.call(k,a)}return a}var $d={};function ae(a){if(B(B(a)?a.B:a))a=a.c;else{var c;var d=ae[s.call(k,a)];B(d)?c=d:(d=ae._,B(d)?c=d:b(C.call(k,"IMeta.-meta",a)));a=c.call(k,a)}return a}
+function be(a,c){var d;if(B(B(a)?a.C:a))d=a.C(a,c);else{var e=be[s.call(k,a)];B(e)?d=e:(e=be._,B(e)?d=e:b(C.call(k,"IWithMeta.-with-meta",a)));d=d.call(k,a,c)}return d}
+var ce=function(){return function(a,c,d){switch(arguments.length){case 2:var e;if(B(B(a)?a.ba:a))e=a.ba(a,c);else{var f=ce[s.call(k,a)];B(f)?e=f:(f=ce._,B(f)?e=f:b(C.call(k,"IReduce.-reduce",a)));e=e.call(k,a,c)}return e;case 3:return B(B(a)?a.ba:a)?e=a.ba(a,c,d):(e=ce[s.call(k,a)],B(e)?f=e:(e=ce._,B(e)?f=e:b(C.call(k,"IReduce.-reduce",a))),e=f.call(k,a,c,d)),e}b("Invalid arity: "+arguments.length)}}();
+function de(a,c){var d;if(B(B(a)?a.j:a))d=a.j(a,c);else{var e=de[s.call(k,a)];B(e)?d=e:(e=de._,B(e)?d=e:b(C.call(k,"IEquiv.-equiv",a)));d=d.call(k,a,c)}return d}function ee(a){if(B(B(a)?a.p:a))a=a.p(a);else{var c;var d=ee[s.call(k,a)];B(d)?c=d:(d=ee._,B(d)?c=d:b(C.call(k,"IHash.-hash",a)));a=c.call(k,a)}return a}function fe(a){if(B(B(a)?a.k:a))a=a.k(a);else{var c;var d=fe[s.call(k,a)];B(d)?c=d:(d=fe._,B(d)?c=d:b(C.call(k,"ISeqable.-seq",a)));a=c.call(k,a)}return a}var ge={},he={};
+function ie(a,c){var d;if(B(B(a)?a.m:a))d=a.m(a,c);else{var e=ie[s.call(k,a)];B(e)?d=e:(e=ie._,B(e)?d=e:b(C.call(k,"IPrintable.-pr-seq",a)));d=d.call(k,a,c)}return d}function je(a,c,d){if(B(B(a)?a.Ta:a))a=a.Ta(a,c,d);else{var e;var f=je[s.call(k,a)];B(f)?e=f:(f=je._,B(f)?e=f:b(C.call(k,"IWatchable.-notify-watches",a)));a=e.call(k,a,c,d)}return a}
+function ke(a,c,d){if(B(B(a)?a.Sa:a))a=a.Sa(a,c,d);else{var e;var f=ke[s.call(k,a)];B(f)?e=f:(f=ke._,B(f)?e=f:b(C.call(k,"IWatchable.-add-watch",a)));a=e.call(k,a,c,d)}return a}function G(a,c){return de.call(k,a,c)}function I(a){return a===k}Function.prototype.q=i;Function.prototype.m=function(a){return J.call(k,"#<",K.call(k,a),">")};ee["null"]=ca(0);F["null"]=function(){return function(a,c,d){switch(arguments.length){case 2:return k;case 3:return d}b("Invalid arity: "+arguments.length)}}();
+Ud["null"]=function(a,c,d){return L.call(k,c,d)};Pd["null"]=function(a,c){return J.call(k,c)};ce["null"]=function(){return function(a,c,d){switch(arguments.length){case 2:return c.call(k);case 3:return d}b("Invalid arity: "+arguments.length)}}();he["null"]=i;ie["null"]=function(){return J.call(k,"nil")};Xd["null"]=i;D["null"]=ca(0);Qd["null"]=i;Rd["null"]=ca(k);Sd["null"]=function(){return J.call(k)};de["null"]=function(a,c){return I.call(k,c)};be["null"]=ca(k);$d["null"]=i;ae["null"]=ca(k);
+E["null"]=function(){return function(a,c,d){switch(arguments.length){case 2:return k;case 3:return d}b("Invalid arity: "+arguments.length)}}();Vd["null"]=i;Wd["null"]=ca(k);Date.prototype.j=function(a,c){return a.toString()===c.toString()};ee.number=ba();de.number=function(a,c){return a===c};ee["boolean"]=function(a){return a===i?1:0};ee["function"]=function(a){return ia.call(k,a)};
+var le=function(){return function(a,c,d,e){switch(arguments.length){case 2:var f;a:if(B(G.call(k,0,D.call(k,a))))f=c.call(k);else for(var h=E.call(k,a,0),j=1;;)if(B(j<D.call(k,a)))h=c.call(k,h,E.call(k,a,j)),j+=1;else{f=h;break a}return f;case 3:a:{f=d;for(j=0;;)if(B(j<D.call(k,a)))f=c.call(k,f,E.call(k,a,j)),j+=1;else{h=f;break a}}return h;case 4:a:{f=d;for(h=e;;)if(B(h<D.call(k,a)))f=c.call(k,f,E.call(k,a,h)),h+=1;else{j=f;break a}}return j}b("Invalid arity: "+arguments.length)}}();
+function me(a,c){this.r=a;this.L=c}o=me.prototype;o.p=function(a){return ne.call(k,a)};o.ba=function(){return function(a,c,d){switch(arguments.length){case 2:return le.call(k,this.r,c,this.r[this.L],this.L+1);case 3:return le.call(k,this.r,c,d,this.L)}b("Invalid arity: "+arguments.length)}}();o.t=function(a,c){return M.call(k,c,a)};o.j=function(a,c){return oe.call(k,a,c)};o.U=i;
+o.I=function(){return function(a,c,d){switch(arguments.length){case 2:var e=c+this.L;return B(e<this.r.length)?this.r[e]:k;case 3:return e=c+this.L,B(e<this.r.length)?this.r[e]:d}b("Invalid arity: "+arguments.length)}}();o.o=function(){return this.r.length-this.L};o.ca=i;o.S=function(){return this.r[this.L]};o.T=function(){return B(this.L+1<this.r.length)?new me(this.r,this.L+1):J.call(k)};o.k=ba();function pe(a,c){return B(G.call(k,0,a.length))?k:new me(a,c)}
+function N(a,c){return pe.call(k,a,c)}ce.array=function(){return function(a,c,d){switch(arguments.length){case 2:return le.call(k,a,c);case 3:return le.call(k,a,c,d)}b("Invalid arity: "+arguments.length)}}();F.array=function(){return function(a,c,d){switch(arguments.length){case 2:return a[c];case 3:return E.call(k,a,c,d)}b("Invalid arity: "+arguments.length)}}();
+E.array=function(){return function(a,c,d){switch(arguments.length){case 2:return B(c<a.length)?a[c]:k;case 3:return B(c<a.length)?a[c]:d}b("Invalid arity: "+arguments.length)}}();D.array=function(a){return a.length};fe.array=function(a){return N.call(k,a,0)};function O(a){return B(a)?fe.call(k,a):k}function P(a){a=O.call(k,a);return B(a)?Rd.call(k,a):k}function Q(a){return Sd.call(k,O.call(k,a))}function R(a){return B(a)?O.call(k,Q.call(k,a)):k}function qe(a){return P.call(k,R.call(k,a))}
+function re(a){return R.call(k,R.call(k,a))}function se(a){for(;;)if(B(R.call(k,a)))a=R.call(k,a);else return P.call(k,a)}D._=function(a){for(var a=O.call(k,a),c=0;;)if(B(a))a=R.call(k,a),c+=1;else return c};de._=function(a,c){return a===c};function S(a){return B(a)?m:i}
+var te=function(){var a=k,c=function(){function c(a,d,j){var l=k;t(j)&&(l=N(Array.prototype.slice.call(arguments,2),0));return e.call(this,a,d,l)}function e(c,d,e){for(;;)if(B(e))c=a.call(k,c,d),d=P.call(k,e),e=R.call(k,e);else return a.call(k,c,d)}c.b=2;c.a=function(a){var c=P(a),d=P(R(a)),a=Q(R(a));return e.call(this,c,d,a)};return c}(),a=function(a,e,f){switch(arguments.length){case 2:return Pd.call(k,a,e);default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=2;a.a=
+c.a;return a}();function ue(a){return D.call(k,a)}
+var T=function(){return function(a,c,d){switch(arguments.length){case 2:return E.call(k,a,Math.floor(c));case 3:return E.call(k,a,Math.floor(c),d)}b("Invalid arity: "+arguments.length)}}(),U=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,a,c);case 3:return F.call(k,a,c,d)}b("Invalid arity: "+arguments.length)}}(),ve=function(){var a=k,c=function(){function c(a,d,j,l){var q=k;t(l)&&(q=N(Array.prototype.slice.call(arguments,3),0));return e.call(this,a,d,j,q)}function e(c,
+d,e,l){for(;;)if(c=a.call(k,c,d,e),B(l))d=P.call(k,l),e=qe.call(k,l),l=re.call(k,l);else return c}c.b=3;c.a=function(a){var c=P(a),d=P(R(a)),l=P(R(R(a))),a=Q(R(R(a)));return e.call(this,c,d,l,a)};return c}(),a=function(a,e,f,h){switch(arguments.length){case 3:return Ud.call(k,a,e,f);default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=3;a.a=c.a;return a}(),we=function(){var a=k,c=function(){function c(a,d,j){var l=k;t(j)&&(l=N(Array.prototype.slice.call(arguments,2),0));
+return e.call(this,a,d,l)}function e(c,d,e){for(;;)if(c=a.call(k,c,d),B(e))d=P.call(k,e),e=R.call(k,e);else return c}c.b=2;c.a=function(a){var c=P(a),d=P(R(a)),a=Q(R(a));return e.call(this,c,d,a)};return c}(),a=function(a,e,f){switch(arguments.length){case 1:return a;case 2:return Wd.call(k,a,e);default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=2;a.a=c.a;return a}();function xe(a,c){return be.call(k,a,c)}
+function ye(a){var c;B(a)?(c=a.v,c=B(c)?S.call(k,a.hasOwnProperty("cljs$core$IMeta$")):c):c=a;c=B(c)?i:Md.call(k,$d,a);return B(c)?ae.call(k,a):k}function ze(a){return ee.call(k,a)}function Ae(a){return S.call(k,O.call(k,a))}function Be(a){if(B(I.call(k,a)))a=m;else{var c;B(a)?(c=a.lb,c=B(c)?S.call(k,a.hasOwnProperty("cljs$core$ISet$")):c):c=a;a=B(c)?i:Md.call(k,Xd,a)}return a}
+function Ce(a){var c;B(a)?(c=a.U,c=B(c)?S.call(k,a.hasOwnProperty("cljs$core$ISequential$")):c):c=a;return B(c)?i:Md.call(k,ge,a)}function De(a){if(B(I.call(k,a)))a=m;else{var c;B(a)?(c=a.Ra,c=B(c)?S.call(k,a.hasOwnProperty("cljs$core$IMap$")):c):c=a;a=B(c)?i:Md.call(k,Vd,a)}return a}function Ee(a){var c;B(a)?(c=a.mb,c=B(c)?S.call(k,a.hasOwnProperty("cljs$core$IVector$")):c):c=a;return B(c)?i:Md.call(k,Yd,a)}function Fe(){return{}}
+function Ge(a){var c=Od.call(k);Db.call(k,a,function(a,e){return c.push(e)});return c}function He(a,c){return delete a[c]}var Ie=Fe.call(k);function Je(a){if(B(I.call(k,a)))a=m;else{var c;B(a)?(c=a.ca,c=B(c)?S.call(k,a.hasOwnProperty("cljs$core$ISeq$")):c):c=a;a=B(c)?i:Md.call(k,Qd,a)}return a}function Ke(a){return B(a)?i:m}function Le(a){var c=x.call(k,a);return B(c)?S.call(k,function(){var c=G.call(k,a.charAt(0),"\ufdd0");return B(c)?c:G.call(k,a.charAt(0),"\ufdd1")}()):c}
+function Me(a){var c=x.call(k,a);return B(c)?G.call(k,a.charAt(0),"\ufdd0"):c}function Ne(a){var c=x.call(k,a);return B(c)?G.call(k,a.charAt(0),"\ufdd1"):c}function Oe(a,c){return B(F.call(k,a,c,Ie)===Ie)?m:i}
+var Pe=function(){return function(a,c,d){switch(arguments.length){case 2:return ce.call(k,c,a);case 3:return ce.call(k,d,a,c)}b("Invalid arity: "+arguments.length)}}(),Qe=function(){return function(a,c,d){switch(arguments.length){case 2:var e=O.call(k,c);return B(e)?Pe.call(k,a,P.call(k,e),R.call(k,e)):a.call(k);case 3:a:for(var f=c,h=O.call(k,d);;)if(B(h))f=a.call(k,f,P.call(k,h)),h=R.call(k,h);else{e=f;break a}return e}b("Invalid arity: "+arguments.length)}}();
+ce._=function(){return function(a,c,d){switch(arguments.length){case 2:return Qe.call(k,c,a);case 3:return Qe.call(k,c,d,a)}b("Invalid arity: "+arguments.length)}}();
+var Re=function(){var a=k,c=function(){function a(d,h,j){var l=k;t(j)&&(l=N(Array.prototype.slice.call(arguments,2),0));return c.call(this,d,h,l)}function c(a,d,e){for(;;)if(B(a<d))if(B(R.call(k,e)))a=d,d=P.call(k,e),e=R.call(k,e);else return d<P.call(k,e);else return m}a.b=2;a.a=function(a){var d=P(a),j=P(R(a)),a=Q(R(a));return c.call(this,d,j,a)};return a}(),a=function(a,e,f){switch(arguments.length){case 1:return i;case 2:return a<e;default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};
+a.b=2;a.a=c.a;return a}(),Se=function(){var a=k,c=function(){function a(d,h,j){var l=k;t(j)&&(l=N(Array.prototype.slice.call(arguments,2),0));return c.call(this,d,h,l)}function c(a,d,e){for(;;)if(B(a>d))if(B(R.call(k,e)))a=d,d=P.call(k,e),e=R.call(k,e);else return d>P.call(k,e);else return m}a.b=2;a.a=function(a){var d=P(a),j=P(R(a)),a=Q(R(a));return c.call(this,d,j,a)};return a}(),a=function(a,e,f){switch(arguments.length){case 1:return i;case 2:return a>e;default:return c.apply(this,arguments)}b("Invalid arity: "+
+arguments.length)};a.b=2;a.a=c.a;return a}();function Te(a,c){for(var d=c,e=O.call(k,a);;){var f=e;if(B(B(f)?0<d:f))d-=1,e=R.call(k,e);else return e}}E._=function(){return function(a,c,d){switch(arguments.length){case 2:var e;var f=Te.call(k,a,c);B(f)?e=P.call(k,f):b(Error("Index out of bounds"));return e;case 3:return e=Te.call(k,a,c),B(e)?P.call(k,e):d}b("Invalid arity: "+arguments.length)}}();
+var Ue=function(){var a=k,c=function(){function c(a,d){var j=k;t(d)&&(j=N(Array.prototype.slice.call(arguments,1),0));return e.call(this,a,j)}function e(c,d){return function(c,d){for(;;)if(B(d))var e=c.append(a.call(k,P.call(k,d))),f=R.call(k,d),c=e,d=f;else return a.call(k,c)}.call(k,new Pa(a.call(k,c)),d)}c.b=1;c.a=function(a){var c=P(a),a=Q(a);return e.call(this,c,a)};return c}(),a=function(a,e){switch(arguments.length){case 0:return"";case 1:return B(I.call(k,a))?"":B("\ufdd0'else")?a.toString():
+k;default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=1;a.a=c.a;return a}(),K=function(){var a=k,c=function(){function a(c,d){var h=k;t(d)&&(h=N(Array.prototype.slice.call(arguments,1),0));return V.call(k,Ue,c,h)}a.b=1;a.a=function(a){var c=P(a),a=Q(a);return V.call(k,Ue,c,a)};return a}(),a=function(a,e){switch(arguments.length){case 0:return"";case 1:return B(Ne.call(k,a))?a.substring(2,a.length):B(Me.call(k,a))?Ue.call(k,":",a.substring(2,a.length)):B(I.call(k,a))?
+"":B("\ufdd0'else")?a.toString():k;default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=1;a.a=c.a;return a}(),Ve=function(){return function(a,c,d){switch(arguments.length){case 2:return a.substring(c);case 3:return a.substring(c,d)}b("Invalid arity: "+arguments.length)}}();
+function oe(a,c){return Ke.call(k,B(Ce.call(k,c))?function(){for(var d=O.call(k,a),e=O.call(k,c);;){if(B(I.call(k,d)))return I.call(k,e);if(B(I.call(k,e)))return m;if(B(G.call(k,P.call(k,d),P.call(k,e))))d=R.call(k,d),e=R.call(k,e);else return B("\ufdd0'else")?m:k}}():k)}function We(a,c){return a^c+2654435769+(a<<6)+(a>>2)}function ne(a){return Pe.call(k,function(a,d){return We.call(k,a,ze.call(k,d))},ze.call(k,P.call(k,a)),R.call(k,a))}function Xe(a,c,d,e){this.c=a;this.oa=c;this.ja=d;this.w=e}
+o=Xe.prototype;o.p=function(a){return ne.call(k,a)};o.U=i;o.t=function(a,c){return new Xe(this.c,c,a,this.w+1)};o.k=ba();o.o=n("w");o.ca=i;o.S=n("oa");o.T=n("ja");o.j=function(a,c){return oe.call(k,a,c)};o.C=function(a,c){return new Xe(c,this.oa,this.ja,this.w)};o.v=i;o.B=n("c");function Ye(a){this.c=a}o=Ye.prototype;o.p=function(a){return ne.call(k,a)};o.U=i;o.t=function(a,c){return new Xe(this.c,c,k,1)};o.k=ca(k);o.o=ca(0);o.ca=i;o.S=ca(k);o.T=ca(k);o.j=function(a,c){return oe.call(k,a,c)};
+o.C=function(a,c){return new Ye(c)};o.v=i;o.B=n("c");var Ze=new Ye(k);function $e(a){return Pe.call(k,te,Ze,a)}var J=function(){function a(a){var d=k;t(a)&&(d=N(Array.prototype.slice.call(arguments,0),0));return Pe.call(k,te,Ze,$e.call(k,d))}a.b=0;a.a=function(a){a=O(a);return Pe.call(k,te,Ze,$e.call(k,a))};return a}();function af(a,c,d){this.c=a;this.oa=c;this.ja=d}o=af.prototype;o.k=ba();o.p=function(a){return ne.call(k,a)};o.j=function(a,c){return oe.call(k,a,c)};o.U=i;
+o.t=function(a,c){return new af(k,c,a)};o.ca=i;o.S=n("oa");o.T=function(){return B(I.call(k,this.ja))?Ze:this.ja};o.v=i;o.B=n("c");o.C=function(a,c){return new af(c,this.oa,this.ja)};function M(a,c){return new af(k,a,c)}ce.string=function(){return function(a,c,d){switch(arguments.length){case 2:return le.call(k,a,c);case 3:return le.call(k,a,c,d)}b("Invalid arity: "+arguments.length)}}();
+F.string=function(){return function(a,c,d){switch(arguments.length){case 2:return E.call(k,a,c);case 3:return E.call(k,a,c,d)}b("Invalid arity: "+arguments.length)}}();E.string=function(){return function(a,c,d){switch(arguments.length){case 2:return B(c<D.call(k,a))?a.charAt(c):k;case 3:return B(c<D.call(k,a))?a.charAt(c):d}b("Invalid arity: "+arguments.length)}}();D.string=function(a){return a.length};fe.string=function(a){return pe.call(k,a,0)};ee.string=function(a){return Ga.call(k,a)};
+String.prototype.call=function(){return function(a,c,d){switch(arguments.length){case 2:return U.call(k,c,this.toString());case 3:return U.call(k,c,this.toString(),d)}b("Invalid arity: "+arguments.length)}}();String.prototype.apply=function(a,c){return B(2>ue.call(k,c))?U.call(k,c[0],a):U.call(k,c[0],a,c[1])};function bf(a){var c=a.x;if(B(a.Ma))return c;a.x=c.call(k);a.Ma=i;return a.x}function W(a,c,d){this.c=a;this.Ma=c;this.x=d}o=W.prototype;o.k=function(a){return O.call(k,bf.call(k,a))};
+o.p=function(a){return ne.call(k,a)};o.j=function(a,c){return oe.call(k,a,c)};o.U=i;o.t=function(a,c){return M.call(k,c,a)};o.ca=i;o.S=function(a){return P.call(k,bf.call(k,a))};o.T=function(a){return Q.call(k,bf.call(k,a))};o.v=i;o.B=n("c");o.C=function(a,c){return new W(c,this.Ma,this.x)};function cf(a){for(var c=Od.call(k);;)if(B(O.call(k,a)))c.push(P.call(k,a)),a=R.call(k,a);else return c}
+function df(a,c){for(var d=a,e=c,f=0;;){var h;h=0<e;h=B(h)?O.call(k,d):h;if(B(h))d=R.call(k,d),e-=1,f+=1;else return f}}
+var ff=function ef(c){return B(I.call(k,c))?k:B(I.call(k,R.call(k,c)))?O.call(k,P.call(k,c)):B("\ufdd0'else")?M.call(k,P.call(k,c),ef.call(k,R.call(k,c))):k},gf=function(){function a(a,c){return new W(k,m,function(){var d=O.call(k,a);return B(d)?M.call(k,P.call(k,d),e.call(k,Q.call(k,d),c)):c})}function c(a){return new W(k,m,function(){return a})}function d(){return new W(k,m,ca(k))}var e=k,f=function(){function a(d,e,f){var h=k;t(f)&&(h=N(Array.prototype.slice.call(arguments,2),0));return c.call(this,
+d,e,h)}function c(a,d,f){return function u(a,c){return new W(k,m,function(){var d=O.call(k,a);return B(d)?M.call(k,P.call(k,d),u.call(k,Q.call(k,d),c)):B(c)?u.call(k,P.call(k,c),R.call(k,c)):k})}.call(k,e.call(k,a,d),f)}a.b=2;a.a=function(a){var d=P(a),e=P(R(a)),a=Q(R(a));return c.call(this,d,e,a)};return a}(),e=function(e,j,l){switch(arguments.length){case 0:return d.call(this);case 1:return c.call(this,e);case 2:return a.call(this,e,j);default:return f.apply(this,arguments)}b("Invalid arity: "+
+arguments.length)};e.b=2;e.a=f.a;return e}(),hf=function(){var a=k,c=function(){function a(d,h,j,l,q){var r=k;t(q)&&(r=N(Array.prototype.slice.call(arguments,4),0));return c.call(this,d,h,j,l,r)}function c(a,d,e,l,q){return M.call(k,a,M.call(k,d,M.call(k,e,M.call(k,l,ff.call(k,q)))))}a.b=4;a.a=function(a){var d=P(a),j=P(R(a)),l=P(R(R(a))),q=P(R(R(R(a)))),a=Q(R(R(R(a))));return c.call(this,d,j,l,q,a)};return a}(),a=function(a,e,f,h,j){switch(arguments.length){case 1:return O.call(k,a);case 2:return M.call(k,
+a,e);case 3:return M.call(k,a,M.call(k,e,f));case 4:return M.call(k,a,M.call(k,e,M.call(k,f,h)));default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=4;a.a=c.a;return a}(),V=function(){var a=k,c=function(){function a(d,h,j,l,q,r){var w=k;t(r)&&(w=N(Array.prototype.slice.call(arguments,5),0));return c.call(this,d,h,j,l,q,w)}function c(a,d,e,l,q,r){d=M.call(k,d,M.call(k,e,M.call(k,l,M.call(k,q,ff.call(k,r)))));e=a.b;return B(a.a)?B(df.call(k,d,e)<=e)?a.apply(a,cf.call(k,
+d)):a.a(d):a.apply(a,cf.call(k,d))}a.b=5;a.a=function(a){var d=P(a),j=P(R(a)),l=P(R(R(a))),q=P(R(R(R(a)))),r=P(R(R(R(R(a))))),a=Q(R(R(R(R(a)))));return c.call(this,d,j,l,q,r,a)};return a}(),a=function(a,e,f,h,j,l){switch(arguments.length){case 2:var q=a,r=e,w=q.b;return B(q.a)?B(df.call(k,r,w+1)<=w)?q.apply(q,cf.call(k,r)):q.a(r):q.apply(q,cf.call(k,r));case 3:return q=a,r=hf.call(k,e,f),w=q.b,B(q.a)?B(df.call(k,r,w)<=w)?q.apply(q,cf.call(k,r)):q.a(r):q.apply(q,cf.call(k,r));case 4:return q=a,r=hf.call(k,
+e,f,h),w=q.b,B(q.a)?B(df.call(k,r,w)<=w)?q.apply(q,cf.call(k,r)):q.a(r):q.apply(q,cf.call(k,r));case 5:return q=a,r=hf.call(k,e,f,h,j),w=q.b,B(q.a)?B(df.call(k,r,w)<=w)?q.apply(q,cf.call(k,r)):q.a(r):q.apply(q,cf.call(k,r));default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=5;a.a=c.a;return a}(),jf=function(){var a=k,c=function(){function a(c,d,h){var j=k;t(h)&&(j=N(Array.prototype.slice.call(arguments,2),0));return S.call(k,V.call(k,G,c,d,j))}a.b=2;a.a=function(a){var c=
+P(a),d=P(R(a)),a=Q(R(a));return S.call(k,V.call(k,G,c,d,a))};return a}(),a=function(a,e,f){switch(arguments.length){case 1:return m;case 2:return S.call(k,G.call(k,a,e));default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=2;a.a=c.a;return a}();function kf(a,c){for(;;){if(B(I.call(k,O.call(k,c))))return i;if(B(a.call(k,P.call(k,c))))var d=a,e=R.call(k,c),a=d,c=e;else return B("\ufdd0'else")?m:k}}
+function lf(a,c){for(;;)if(B(O.call(k,c))){var d=a.call(k,P.call(k,c));if(B(d))return d;var d=a,e=R.call(k,c),a=d,c=e}else return k}function mf(a){return a}
+var X=function(){function a(a,c,d,f){return new W(k,m,function(){var r=O.call(k,c),w=O.call(k,d),u=O.call(k,f);return B(B(r)?B(w)?u:w:r)?M.call(k,a.call(k,P.call(k,r),P.call(k,w),P.call(k,u)),e.call(k,a,Q.call(k,r),Q.call(k,w),Q.call(k,u))):k})}function c(a,c,d){return new W(k,m,function(){var f=O.call(k,c),r=O.call(k,d);return B(B(f)?r:f)?M.call(k,a.call(k,P.call(k,f),P.call(k,r)),e.call(k,a,Q.call(k,f),Q.call(k,r))):k})}function d(a,c){return new W(k,m,function(){var d=O.call(k,c);return B(d)?M.call(k,
+a.call(k,P.call(k,d)),e.call(k,a,Q.call(k,d))):k})}var e=k,f=function(){function a(d,e,f,h,u){var H=k;t(u)&&(H=N(Array.prototype.slice.call(arguments,4),0));return c.call(this,d,e,f,h,H)}function c(a,d,f,h,j){return e.call(k,function(c){return V.call(k,a,c)},function aa(a){return new W(k,m,function(){var c=e.call(k,O,a);return B(kf.call(k,mf,c))?M.call(k,e.call(k,P,c),aa.call(k,e.call(k,Q,c))):k})}.call(k,te.call(k,j,h,f,d)))}a.b=4;a.a=function(a){var d=P(a),e=P(R(a)),f=P(R(R(a))),h=P(R(R(R(a)))),
+a=Q(R(R(R(a))));return c.call(this,d,e,f,h,a)};return a}(),e=function(e,j,l,q,r){switch(arguments.length){case 2:return d.call(this,e,j);case 3:return c.call(this,e,j,l);case 4:return a.call(this,e,j,l,q);default:return f.apply(this,arguments)}b("Invalid arity: "+arguments.length)};e.b=4;e.a=f.a;return e}(),of=function nf(c,d){return new W(k,m,function(){if(B(0<c)){var e=O.call(k,d);return B(e)?M.call(k,P.call(k,e),nf.call(k,c-1,Q.call(k,e))):k}return k})};
+function pf(a,c){function d(a,c){for(;;){var d=O.call(k,c),j=0<a;if(B(B(j)?d:j))j=a-1,d=Q.call(k,d),a=j,c=d;else return d}}return new W(k,m,function(){return d.call(k,a,c)})}function qf(a,c){function d(a,c){for(;;){var d=O.call(k,c),j;j=d;j=B(j)?a.call(k,P.call(k,d)):j;if(B(j))j=a,d=Q.call(k,d),a=j,c=d;else return d}}return new W(k,m,function(){return d.call(k,a,c)})}
+var rf=function(){function a(a){return new W(k,m,function(){return M.call(k,a,c.call(k,a))})}var c=k;return c=function(d,e){switch(arguments.length){case 1:return a.call(this,d);case 2:return of.call(k,d,c.call(k,e))}b("Invalid arity: "+arguments.length)}}(),sf=function(){function a(a,d){return new W(k,m,function(){var h=O.call(k,a),j=O.call(k,d);return B(B(h)?j:h)?M.call(k,P.call(k,h),M.call(k,P.call(k,j),c.call(k,Q.call(k,h),Q.call(k,j)))):k})}var c=k,d=function(){function a(c,e,l){var q=k;t(l)&&
+(q=N(Array.prototype.slice.call(arguments,2),0));return d.call(this,c,e,q)}function d(a,e,f){return new W(k,m,function(){var d=X.call(k,O,te.call(k,f,e,a));return B(kf.call(k,mf,d))?gf.call(k,X.call(k,P,d),V.call(k,c,X.call(k,Q,d))):k})}a.b=2;a.a=function(a){var c=P(a),e=P(R(a)),a=Q(R(a));return d.call(this,c,e,a)};return a}(),c=function(c,f,h){switch(arguments.length){case 2:return a.call(this,c,f);default:return d.apply(this,arguments)}b("Invalid arity: "+arguments.length)};c.b=2;c.a=d.a;return c}();
+function tf(a,c){return pf.call(k,1,sf.call(k,rf.call(k,a),c))}function uf(a){return function d(a,f){return new W(k,m,function(){var h=O.call(k,a);return B(h)?M.call(k,P.call(k,h),d.call(k,Q.call(k,h),f)):B(O.call(k,f))?d.call(k,P.call(k,f),Q.call(k,f)):k})}.call(k,k,a)}
+var vf=function(){var a=k,c=function(){function a(c,d,h){var j=k;t(h)&&(j=N(Array.prototype.slice.call(arguments,2),0));return uf.call(k,V.call(k,X,c,d,j))}a.b=2;a.a=function(a){var c=P(a),d=P(R(a)),a=Q(R(a));return uf.call(k,V.call(k,X,c,d,a))};return a}(),a=function(a,e,f){switch(arguments.length){case 2:return uf.call(k,X.call(k,a,e));default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=2;a.a=c.a;return a}(),xf=function wf(c,d){return new W(k,m,function(){var e=O.call(k,
+d);if(B(e)){var f=P.call(k,e),e=Q.call(k,e);return B(c.call(k,f))?M.call(k,f,wf.call(k,c,e)):wf.call(k,c,e)}return k})};function yf(a,c){return Pe.call(k,Pd,a,c)}
+var zf=function(){function a(a,c,h,j){return new W(k,m,function(){var l=O.call(k,j);if(B(l)){var q=of.call(k,a,l);return B(G.call(k,a,ue.call(k,q)))?M.call(k,q,d.call(k,a,c,h,pf.call(k,c,l))):J.call(k,of.call(k,a,gf.call(k,q,h)))}return k})}function c(a,c,h){return new W(k,m,function(){var j=O.call(k,h);if(B(j)){var l=of.call(k,a,j);return B(G.call(k,a,ue.call(k,l)))?M.call(k,l,d.call(k,a,c,pf.call(k,c,j))):k}return k})}var d=k;return d=function(e,f,h,j){switch(arguments.length){case 2:return d.call(k,
+e,e,f);case 3:return c.call(this,e,f,h);case 4:return a.call(this,e,f,h,j)}b("Invalid arity: "+arguments.length)}}();function Af(a,c){this.c=a;this.l=c}o=Af.prototype;o.p=function(a){return ne.call(k,a)};o.R=function(){return function(a,c,d){switch(arguments.length){case 2:return E.call(k,a,c,k);case 3:return E.call(k,a,c,d)}b("Invalid arity: "+arguments.length)}}();o.ua=function(a,c,d){a=Nd.call(k,this.l);a[c]=d;return new Af(this.c,a)};
+o.call=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,this,c);case 3:return F.call(k,this,c,d)}b("Invalid arity: "+arguments.length)}}();o.U=i;o.t=function(a,c){var d=Nd.call(k,this.l);d.push(c);return new Af(this.c,d)};o.ba=function(){return function(a,c,d){switch(arguments.length){case 2:return le.call(k,this.l,c);case 3:return le.call(k,this.l,c,d)}b("Invalid arity: "+arguments.length)}}();
+o.k=function(){var a=this;return B(0<a.l.length)?function d(e){return new W(k,m,function(){return B(e<a.l.length)?M.call(k,a.l[e],d.call(k,e+1)):k})}.call(k,0):k};o.o=function(){return this.l.length};o.mb=i;o.j=function(a,c){return oe.call(k,a,c)};o.C=function(a,c){return new Af(c,this.l)};o.v=i;o.B=n("c");
+o.I=function(){return function(a,c,d){switch(arguments.length){case 2:var e=0<=c;return B(B(e)?c<this.l.length:e)?this.l[c]:k;case 3:return e=0<=c,B(B(e)?c<this.l.length:e)?this.l[c]:d}b("Invalid arity: "+arguments.length)}}();var Bf=new Af(k,Od.call(k));function Cf(a){return new Af(k,a)}function Df(a){return Pe.call(k,te,Bf,a)}var Ef=function(){function a(a){var d=k;t(a)&&(d=N(Array.prototype.slice.call(arguments,0),0));return Df.call(k,d)}a.b=0;a.a=function(a){a=O(a);return Df.call(k,a)};return a}();
+function Ff(){}Ff.prototype.j=ca(m);var Gf=new Ff;function Hf(a,c){return Ke.call(k,B(De.call(k,c))?B(G.call(k,ue.call(k,a),ue.call(k,c)))?kf.call(k,mf,X.call(k,function(a){return G.call(k,U.call(k,c,P.call(k,a),Gf),qe.call(k,a))},a)):k:k)}function If(a,c,d){for(var e=d.length,f=0;;)if(B(f<e)){if(B(G.call(k,c,d[f])))return f;f+=a}else return k}
+var Jf=function(){var a=k;return a=function(c,d,e,f){switch(arguments.length){case 2:return a.call(k,c,d,i,m);case 4:var h=x.call(k,c);return B(B(h)?d.hasOwnProperty(c):h)?e:f}b("Invalid arity: "+arguments.length)}}();function Kf(a,c,d){this.c=a;this.keys=c;this.N=d}o=Kf.prototype;o.p=function(a){return ne.call(k,a)};o.R=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,a,c,k);case 3:return Jf.call(k,c,this.N,this.N[c],d)}b("Invalid arity: "+arguments.length)}}();
+o.ua=function(a,c,d){if(B(x.call(k,c))){var a=Gb.call(k,this.N),e=a.hasOwnProperty(c);a[c]=d;if(B(e))return new Kf(this.c,this.keys,a);d=Nd.call(k,this.keys);d.push(c);return new Kf(this.c,d,a)}return xe.call(k,yf.call(k,L.call(k,c,d),O.call(k,a)),this.c)};o.Ca=function(a,c){return Jf.call(k,c,this.N)};o.call=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,this,c);case 3:return F.call(k,this,c,d)}b("Invalid arity: "+arguments.length)}}();
+o.t=function(a,c){return B(Ee.call(k,c))?Ud.call(k,a,E.call(k,c,0),E.call(k,c,1)):Pe.call(k,Pd,a,c)};o.k=function(){var a=this;return B(0<a.keys.length)?X.call(k,function(c){return Ef.call(k,c,a.N[c])},a.keys):k};o.o=function(){return this.keys.length};o.j=function(a,c){return Hf.call(k,a,c)};o.C=function(a,c){return new Kf(c,this.keys,this.N)};o.v=i;o.B=n("c");o.Ra=i;
+o.Da=function(a,c){var d=x.call(k,c);if(B(B(d)?this.N.hasOwnProperty(c):d)){var d=Nd.call(k,this.keys),e=Gb.call(k,this.N);d.splice(If.call(k,1,c,d),1);He.call(k,e,c);return new Kf(this.c,d,e)}return a};Od.call(k);function Lf(a,c){return new Kf(k,a,c)}function Mf(a,c,d){this.c=a;this.w=c;this.F=d}o=Mf.prototype;o.p=function(a){return ne.call(k,a)};
+o.R=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,a,c,k);case 3:var e=this.F[ze.call(k,c)],f=B(e)?If.call(k,2,c,e):k;return B(f)?e[f+1]:d}b("Invalid arity: "+arguments.length)}}();
+o.ua=function(a,c,d){var a=ze.call(k,c),e=this.F[a];if(B(e)){var e=Nd.call(k,e),f=Gb.call(k,this.F);f[a]=e;a=If.call(k,2,c,e);if(B(a))return e[a+1]=d,new Mf(this.c,this.w,f);e.push(c,d);return new Mf(this.c,this.w+1,f)}e=Gb.call(k,this.F);e[a]=Od.call(k,c,d);return new Mf(this.c,this.w+1,e)};o.Ca=function(a,c){var d=this.F[ze.call(k,c)],d=B(d)?If.call(k,2,c,d):k;return B(d)?i:m};
+o.call=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,this,c);case 3:return F.call(k,this,c,d)}b("Invalid arity: "+arguments.length)}}();o.t=function(a,c){return B(Ee.call(k,c))?Ud.call(k,a,E.call(k,c,0),E.call(k,c,1)):Pe.call(k,Pd,a,c)};o.k=function(){var a=this;if(B(0<a.w)){var c=Ge.call(k,a.F).sort();return vf.call(k,function(c){return X.call(k,Df,zf.call(k,2,a.F[c]))},c)}return k};o.o=n("w");o.j=function(a,c){return Hf.call(k,a,c)};
+o.C=function(a,c){return new Mf(c,this.w,this.F)};o.v=i;o.B=n("c");o.Ra=i;o.Da=function(a,c){var d=ze.call(k,c),e=this.F[d],f=B(e)?If.call(k,2,c,e):k;if(B(S.call(k,f)))return a;var h=Gb.call(k,this.F);B(3>e.length)?He.call(k,h,d):(e=Nd.call(k,e),e.splice(f,2),h[d]=e);return new Mf(this.c,this.w-1,h)};var Nf=new Mf(k,0,Fe.call(k));function Of(a,c){for(var d=a.length,e=0,f=Nf;;)if(B(e<d))var h=e+1,f=ve.call(k,f,a[e],c[e]),e=h;else return f}
+var L=function(){function a(a){var e=k;t(a)&&(e=N(Array.prototype.slice.call(arguments,0),0));return c.call(this,e)}function c(a){for(var a=O.call(k,a),c=Nf;;)if(B(a))var f=re.call(k,a),c=ve.call(k,c,P.call(k,a),qe.call(k,a)),a=f;else return c}a.b=0;a.a=function(a){a=O(a);return c.call(this,a)};return a}();function Pf(a){return O.call(k,X.call(k,P,a))}function Qf(a,c){this.c=a;this.va=c}o=Qf.prototype;o.p=function(a){return ne.call(k,a)};
+o.R=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,a,c,k);case 3:return B(Td.call(k,this.va,c))?c:d}b("Invalid arity: "+arguments.length)}}();o.call=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,this,c);case 3:return F.call(k,this,c,d)}b("Invalid arity: "+arguments.length)}}();o.t=function(a,c){return new Qf(this.c,ve.call(k,this.va,c,k))};o.k=function(){return Pf.call(k,this.va)};o.lb=i;
+o.o=function(a){return ue.call(k,O.call(k,a))};o.j=function(a,c){var d=Be.call(k,c);return B(d)?(d=G.call(k,ue.call(k,a),ue.call(k,c)),B(d)?kf.call(k,function(c){return Oe.call(k,a,c)},c):d):d};o.C=function(a,c){return new Qf(c,this.va)};o.v=i;o.B=n("c");var Rf=new Qf(k,L.call(k));function Y(a){for(var a=O.call(k,a),c=Rf;;)if(B(S.call(k,Ae.call(k,a))))var d=Q.call(k,a),c=te.call(k,c,P.call(k,a)),a=d;else return c}
+function Sf(a){if(B(Le.call(k,a)))return a;var c;c=Me.call(k,a);c=B(c)?c:Ne.call(k,a);if(B(c))return c=a.lastIndexOf("/"),B(0>c)?Ve.call(k,a,2):Ve.call(k,a,c+1);B("\ufdd0'else")&&b(Error(K.call(k,"Doesn't support name: ",a)));return k}function Tf(a){var c;c=Me.call(k,a);c=B(c)?c:Ne.call(k,a);if(B(c))return c=a.lastIndexOf("/"),B(-1<c)?Ve.call(k,a,2,c):k;b(Error(K.call(k,"Doesn't support namespace: ",a)))}
+var Vf=function Uf(c,d){return new W(k,m,function(){var e=O.call(k,d);return B(e)?B(c.call(k,P.call(k,e)))?M.call(k,P.call(k,e),Uf.call(k,c,Q.call(k,e))):k:k})};function Wf(a,c,d,e){this.c=a;this.start=c;this.end=d;this.step=e}o=Wf.prototype;o.p=function(a){return ne.call(k,a)};o.U=i;o.t=function(a,c){return M.call(k,c,a)};o.ba=function(){return function(a,c,d){switch(arguments.length){case 2:return le.call(k,a,c);case 3:return le.call(k,a,c,d)}b("Invalid arity: "+arguments.length)}}();
+o.k=function(a){return B((B(0<this.step)?Re:Se).call(k,this.start,this.end))?a:k};o.o=function(a){return B(S.call(k,fe.call(k,a)))?0:Math.ceil.call(k,(this.end-this.start)/this.step)};o.ca=i;o.S=n("start");o.T=function(a){return B(fe.call(k,a))?new Wf(this.c,this.start+this.step,this.end,this.step):J.call(k)};o.j=function(a,c){return oe.call(k,a,c)};o.C=function(a,c){return new Wf(c,this.start,this.end,this.step)};o.v=i;o.B=n("c");
+o.I=function(){return function(a,c,d){switch(arguments.length){case 2:var e;if(B(c<D.call(k,a)))e=this.start+c*this.step;else{var f;f=this.start>this.end;f=B(f)?G.call(k,this.step,0):f;B(f)?e=this.start:b(Error("Index out of bounds"))}return e;case 3:return B(c<D.call(k,a))?e=this.start+c*this.step:(e=this.start>this.end,e=B(e)?G.call(k,this.step,0):e,e=B(e)?this.start:d),e}b("Invalid arity: "+arguments.length)}}();
+var Xf=function(){var a=k;return a=function(c,d,e){switch(arguments.length){case 0:return a.call(k,0,Number.MAX_VALUE,1);case 1:return a.call(k,0,c,1);case 2:return a.call(k,c,d,1);case 3:return new Wf(k,c,d,e)}b("Invalid arity: "+arguments.length)}}();function Yf(a,c){var d=a.exec(c);return B(I.call(k,d))?k:B(G.call(k,ue.call(k,d),1))?P.call(k,d):Df.call(k,d)}function Zf(a,c,d,e,f,h){return gf.call(k,Cf([c]),uf.call(k,tf.call(k,Cf([d]),X.call(k,function(c){return a.call(k,c,f)},h))),Cf([e]))}
+var ag=function $f(c,d){return B(I.call(k,c))?J.call(k,"nil"):B(g===c)?J.call(k,"#<undefined>"):B("\ufdd0'else")?gf.call(k,B(function(){var e=U.call(k,d,"\ufdd0'meta");return B(e)?(B(c)?(e=c.v,e=B(e)?S.call(k,c.hasOwnProperty("cljs$core$IMeta$")):e):e=c,e=B(e)?i:Md.call(k,$d,c),B(e)?ye.call(k,c):e):e}())?gf.call(k,Cf(["^"]),$f.call(k,ye.call(k,c),d),Cf([" "])):k,B(function(){var d;B(c)?(d=c.q,d=B(d)?S.call(k,c.hasOwnProperty("cljs$core$IPrintable$")):d):d=c;return B(d)?i:Md.call(k,he,c)}())?ie.call(k,
+c,d):J.call(k,"#<",K.call(k,c),">")):k};function bg(a,c){var d=P.call(k,a),e=new Pa,f=O.call(k,a);if(B(f))for(var h=P.call(k,f);;){B(h===d)||e.append(" ");var j=O.call(k,ag.call(k,h,c));if(B(j))for(h=P.call(k,j);;)if(e.append(h),h=R.call(k,j),B(h))j=h,h=P.call(k,j);else break;f=R.call(k,f);if(B(f))h=f,f=P.call(k,h),j=h,h=f,f=j;else break}return K.call(k,e)}
+function cg(){return Lf(["\ufdd0'flush-on-newline","\ufdd0'readably","\ufdd0'meta","\ufdd0'dup"],{"\ufdd0'flush-on-newline":i,"\ufdd0'readably":i,"\ufdd0'meta":m,"\ufdd0'dup":m})}var dg=function(){function a(a){var d=k;t(a)&&(d=N(Array.prototype.slice.call(arguments,0),0));return bg.call(k,d,cg.call(k))}a.b=0;a.a=function(a){a=O(a);return bg.call(k,a,cg.call(k))};return a}();Mf.prototype.q=i;
+Mf.prototype.m=function(a,c){return Zf.call(k,function(a){return Zf.call(k,ag,""," ","",c,a)},"{",", ","}",c,a)};he.number=i;ie.number=function(a){return J.call(k,K.call(k,a))};me.prototype.q=i;me.prototype.m=function(a,c){return Zf.call(k,ag,"("," ",")",c,a)};W.prototype.q=i;W.prototype.m=function(a,c){return Zf.call(k,ag,"("," ",")",c,a)};he["boolean"]=i;ie["boolean"]=function(a){return J.call(k,K.call(k,a))};Qf.prototype.q=i;Qf.prototype.m=function(a,c){return Zf.call(k,ag,"#{"," ","}",c,a)};
+he.string=i;ie.string=function(a,c){return B(Me.call(k,a))?J.call(k,K.call(k,":",function(){var c=Tf.call(k,a);return B(c)?K.call(k,c,"/"):k}(),Sf.call(k,a))):B(Ne.call(k,a))?J.call(k,K.call(k,function(){var c=Tf.call(k,a);return B(c)?K.call(k,c,"/"):k}(),Sf.call(k,a))):B("\ufdd0'else")?J.call(k,B("\ufdd0'readably".call(k,c))?Ea.call(k,a):a):k};Af.prototype.q=i;Af.prototype.m=function(a,c){return Zf.call(k,ag,"["," ","]",c,a)};Xe.prototype.q=i;
+Xe.prototype.m=function(a,c){return Zf.call(k,ag,"("," ",")",c,a)};he.array=i;ie.array=function(a,c){return Zf.call(k,ag,"#<Array [",", ","]>",c,a)};Ye.prototype.q=i;Ye.prototype.m=function(){return J.call(k,"()")};af.prototype.q=i;af.prototype.m=function(a,c){return Zf.call(k,ag,"("," ",")",c,a)};Wf.prototype.q=i;Wf.prototype.m=function(a,c){return Zf.call(k,ag,"("," ",")",c,a)};Kf.prototype.q=i;
+Kf.prototype.m=function(a,c){return Zf.call(k,function(a){return Zf.call(k,ag,""," ","",c,a)},"{",", ","}",c,a)};function eg(a,c,d,e){this.state=a;this.c=c;this.Bb=d;this.Pa=e}o=eg.prototype;o.p=function(a){return ia.call(k,a)};o.Ta=function(a,c,d){var e=O.call(k,this.Pa);if(B(e)){var f=P.call(k,e);T.call(k,f,0,k);for(T.call(k,f,1,k);;){var h=f,f=T.call(k,h,0,k),h=T.call(k,h,1,k);h.call(k,f,a,c,d);e=R.call(k,e);if(B(e))f=e,e=P.call(k,f),h=f,f=e,e=h;else return k}}else return k};
+o.Sa=function(a,c,d){return a.Pa=ve.call(k,this.Pa,c,d)};o.q=i;o.m=function(a,c){return gf.call(k,Cf(["#<Atom: "]),ie.call(k,this.state,c),">")};o.v=i;o.B=n("c");o.kb=n("state");o.j=function(a,c){return a===c};
+var fg=function(){var a=k,c=function(){function a(d,h){var j=k;t(h)&&(j=N(Array.prototype.slice.call(arguments,1),0));return c.call(this,d,j)}function c(a,d){var e=B(Je.call(k,d))?V.call(k,L,d):d,l=U.call(k,e,"\ufdd0'validator"),e=U.call(k,e,"\ufdd0'meta");return new eg(a,e,l,k)}a.b=1;a.a=function(a){var d=P(a),a=Q(a);return c.call(this,d,a)};return a}(),a=function(a,e){switch(arguments.length){case 1:return new eg(a,k,k,k);default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};
+a.b=1;a.a=c.a;return a}();function gg(a,c){var d=a.Bb;B(d)&&!B(d.call(k,c))&&b(Error(K.call(k,"Assert failed: ","Validator rejected reference state","\n",dg.call(k,xe(J("\ufdd1'validate","\ufdd1'new-value"),L("\ufdd0'line",3061))))));d=a.state;a.state=c;je.call(k,a,d,c);return c}
+var hg=function(){var a=k,c=function(){function a(c,d,h,j,l,q){var r=k;t(q)&&(r=N(Array.prototype.slice.call(arguments,5),0));return gg.call(k,c,V.call(k,d,c.state,h,j,l,r))}a.b=5;a.a=function(a){var c=P(a),d=P(R(a)),j=P(R(R(a))),l=P(R(R(R(a)))),q=P(R(R(R(R(a))))),a=Q(R(R(R(R(a)))));return gg.call(k,c,V.call(k,d,c.state,j,l,q,a))};return a}(),a=function(a,e,f,h,j,l){switch(arguments.length){case 2:return gg.call(k,a,e.call(k,a.state));case 3:return gg.call(k,a,e.call(k,a.state,f));case 4:return gg.call(k,
+a,e.call(k,a.state,f,h));case 5:return gg.call(k,a,e.call(k,a.state,f,h,j));default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=5;a.a=c.a;return a}();function Z(a){return Zd.call(k,a)}fg.call(k,function(){return Lf(["\ufdd0'parents","\ufdd0'descendants","\ufdd0'ancestors"],{"\ufdd0'parents":Lf([],{}),"\ufdd0'descendants":Lf([],{}),"\ufdd0'ancestors":Lf([],{})})}.call(k));var ig=fg.call(k,Lf([],{})),jg=function(){var a=k;return a=function(c,d,e){switch(arguments.length){case 2:return a.call(k,k,c,d);case 3:var f=Lf(["\ufdd0'max-count","\ufdd0'event-pred","\ufdd0'reactor"],{"\ufdd0'max-count":c,"\ufdd0'event-pred":d,"\ufdd0'reactor":e});hg.call(k,ig,ve,f,0);return f}b("Invalid arity: "+arguments.length)}}();function kg(a){return hg.call(k,ig,we,a)}
+var lg=function(){function a(a,c){var f=xf.call(k,function(c){var e=T.call(k,c,0,k),e=B(Je.call(k,e))?V.call(k,L,e):e,e=U.call(k,e,"\ufdd0'event-pred");T.call(k,c,1,k);return e.call(k,a)},Z.call(k,ig)),h=O.call(k,f);if(B(h)){f=P.call(k,h);T.call(k,f,0,k);T.call(k,f,1,k);for(var j=h;;){var h=f,f=T.call(k,h,0,k),h=T.call(k,h,1,k),l=f,l=B(Je.call(k,l))?V.call(k,L,l):l,q=U.call(k,l,"\ufdd0'reactor"),r=U.call(k,l,"\ufdd0'max-count"),w=h+1;q.call(k,a,c);B(function(){var a=r;return B(a)?r<=w:a}())?kg.call(k,
+f):hg.call(k,ig,ve,f,w);f=R.call(k,j);if(B(f))h=f,f=P.call(k,h),j=h;else return k}}else return k}var c=k;return c=function(d,e){switch(arguments.length){case 1:return c.call(k,d,k);case 2:return a.call(this,d,e)}b("Invalid arity: "+arguments.length)}}();function mg(a){if(B(B(a)?a.Fa:a))a=a.Fa(a);else{var c;var d=mg[s.call(k,a)];B(d)?c=d:(d=mg._,B(d)?c=d:b(C.call(k,"DomContent.single-node",a)));a=c.call(k,a)}return a}function ng(a){return bd.call(k,Sf.call(k,a))}function og(a,c){return mg.call(k,a).getAttribute(Sf.call(k,c))}
+var pg=function(){function a(a,e){return B(e<a.length)?new W(k,m,function(){return M.call(k,a.item(e),c.call(k,a,e+1))}):k}var c=k;return c=function(d,e){switch(arguments.length){case 1:return c.call(k,d,0);case 2:return a.call(this,d,e)}b("Invalid arity: "+arguments.length)}}();function qg(a){return document.createElement(B(a)?B(Y(["td","th"]).call(k,a))?"tr":"table":"div")}function rg(a,c){return B(y)?(a.innerHTML=K.call(k,"<br>",c),a.removeChild(a.firstChild)):a.innerHTML=c}
+function sg(a,c){var d=B(G.call(k,c,"tr"))?P.call(k,cd.call(k,"tbody",k,a)):a,e=d.childNodes;return B(G.call(k,e.length,1))?d.removeChild(d.firstChild):e}function tg(a){var c=Yf.call(k,/^<(t(head|body|foot|[rhd]))/,a);T.call(k,c,0,k);var d=T.call(k,c,1,k);Te.call(k,c,2);c=qg.call(k,d);rg.call(k,c,a);return sg.call(k,c,d)}mg._=function(a){return P.call(k,a)};DocumentFragment.prototype.Fa=ba();Element.prototype.Fa=ba();mg.string=function(a){return mg.call(k,tg.call(k,a))};
+NodeList.prototype.k=function(a){return pg.call(k,a)};NodeList.prototype.I=function(){return function(a,c,d){switch(arguments.length){case 2:return a.item(c);case 3:return B(a.length<=c)?d:T.call(k,a,c)}b("Invalid arity: "+arguments.length)}}();NodeList.prototype.o=function(a){return a.length};
+if(B(window.Cb))StaticNodeList.prototype.k=function(a){return pg.call(k,a)},StaticNodeList.prototype.I=function(){return function(a,c,d){switch(arguments.length){case 2:return a.item(c);case 3:return B(a.length<=c)?d:T.call(k,a,c)}b("Invalid arity: "+arguments.length)}}(),StaticNodeList.prototype.o=function(a){return a.length};HTMLCollection.prototype.k=function(a){return pg.call(k,a)};
+HTMLCollection.prototype.I=function(){return function(a,c,d){switch(arguments.length){case 2:return a.item(c);case 3:return B(a.length<=c)?d:T.call(k,a,c)}b("Invalid arity: "+arguments.length)}}();HTMLCollection.prototype.o=function(a){return a.length};var ug={},vg=fg.call(k,Lf([],{})),wg=fg.call(k,k),xg=fg.call(k,m),yg=fg.call(k,k),zg=fg.call(k,k),Ag=function(){function a(a){var e=k;t(a)&&(e=N(Array.prototype.slice.call(arguments,0),0));return c.call(this,e)}function c(a){return Ed.call(k,"org_html_slideshow.main").info(V.call(k,dg,a))}a.b=0;a.a=function(a){a=O(a);return c.call(this,a)};return a}(),$=function(){return function(a,c,d){switch(arguments.length){case 1:return yb.call(k,cd.call(k,a));case 2:return yb.call(k,cd.call(k,a,c));case 3:return yb.call(k,
+cd.call(k,a,c,d))}b("Invalid arity: "+arguments.length)}}();function Bg(a){return a.parentNode.removeChild(a)}var Cg=function(){var a=k;return a=function(c,d){switch(arguments.length){case 1:return a.call(k,c,k);case 2:return P.call(k,$.call(k,"head",k,d)).appendChild(c)}b("Invalid arity: "+arguments.length)}}();function Dg(){return P.call(k,$.call(k,"body"))}function Eg(a){var c=a.firstChild;if(B(c))return c;c=a.nextSibling;if(B(c))return c;a=a.parentNode;return B(a)?a.nextSibling:k}
+function Fg(){return cc.call(k,window.location).ea}function Gg(a){var c=cc.call(k,window.location);Vb(c,a);return window.location=K.call(k,c)}function Hg(a){return function(c){B(c)&&(c.preventDefault(),c.stopPropagation());return lg.call(k,a,c)}}function Ig(a){return B(a)?nd.call(k,mg.call(k,a),i):k}function Jg(a){return B(a)?nd.call(k,mg.call(k,a),m):k}
+function Kg(a){return Y.call(k,X.call(k,function(a){return og.call(k,a,"href")},xf.call(k,function(c){var d=G.call(k,"stylesheet",og.call(k,c,"rel"));return B(d)?G.call(k,a,og.call(k,c,"media")):d},$.call(k,"link"))))}function Lg(a){var c=O.call(k,xf.call(k,function(c){var d=G.call(k,"stylesheet",og.call(k,c,"rel"));return B(d)?Oe.call(k,a,og.call(k,c,"href")):d},$.call(k,"link")));if(B(c))for(var d=P.call(k,c);;)if(Bg.call(k,d),d=R.call(k,c),B(d))c=d,d=P.call(k,c);else return k;else return k}
+var Mg=function(){function a(a,c){var f=O.call(k,a);if(B(f))for(var h=P.call(k,f);;)if(Cg.call(k,function(){var a=gd.call(k,"link");a.setAttribute("rel","stylesheet");a.setAttribute("type","text/css");a.setAttribute("href",h);return a}(),c),f=R.call(k,f),B(f))var j=f,h=f=P.call(k,j),f=j;else return k;else return k}var c=k;return c=function(d,e){switch(arguments.length){case 1:return c.call(k,d,k);case 2:return a.call(this,d,e)}b("Invalid arity: "+arguments.length)}}();
+function Ng(){return Df.call(k,X.call(k,function(a){return Lf(["\ufdd0'head-elem","\ufdd0'body-elem"],{"\ufdd0'head-elem":a.parentNode.parentNode,"\ufdd0'body-elem":P.call(k,$.call(k,"div",k,Og.call(k,a)))})},$.call(k,"span","fold")))}function Pg(a,c){if(B(od.call(k,c)))return nd.call(k,c,m),Zc.call(k,a,"unfolded"),Yc.call(k,a,"folded");nd.call(k,c,i);Zc.call(k,a,"folded");return Yc.call(k,a,"unfolded")}
+function Qg(a){a.preventDefault();var a=a.currentTarget,c=P.call(k,$.call(k,"div",k,Og.call(k,a)));return Pg.call(k,a,c)}
+function Rg(){var a=O.call(k,Ng.call(k));if(B(a)){var c=P.call(k,a),d=B(Je.call(k,c))?V.call(k,L,c):c;U.call(k,d,"\ufdd0'body-elem");for(U.call(k,d,"\ufdd0'head-elem");;)if(d=B(Je.call(k,c))?V.call(k,L,c):c,c=U.call(k,d,"\ufdd0'body-elem"),d=U.call(k,d,"\ufdd0'head-elem"),Pg.call(k,d,c),c=jd.call(k,' <a href="#" class="show-hide"><span>show/hide</span></a>'),d.appendChild(c),$.call(k,"a","show-hide",d),A.call(k,d,"click",Qg),a=R.call(k,a),B(a))c=a,a=P.call(k,c),d=c,c=a,a=d;else return k}else return k}
+function Sg(){return ld.call(k,bd.call(k,"c-panel"),"opacity",0.75)}function Tg(){return ld.call(k,bd.call(k,"c-panel"),"opacity",0)}
+function Ug(){Dg.call(k).appendChild(jd.call(k,'<div id="c-panel">\n<a id="c-toggle" href="#">\n <span class="label">Toggle slide-show mode</span>\n <span class="key">T</span>\n</a>\n<a id="c-first" href="#">\n <span class="label">First slide</span>\n <span class="key">Home</span>\n</a>\n<a id="c-prev" href="#">\n <span class="label">Previous slide</span>\n <span class="key">P</span>\n</a>\n<a id="c-next" href="#">\n <span class="label">Next slide</span>\n <span class="key">N</span>\n</a>\n<a id="c-last" href="#">\n <span class="label">Last slide</span>\n <span class="key">End</span>\n</a>\n<a id="c-presenter-window" href="#">\n <span class="label">Open presenter preview</span>\n</a>\n</div>'));var a=
+bd.call(k,"c-panel");lg.call(k,"\ufdd0'show-control-panel");ud.call(k,Hg.call(k,"\ufdd0'hide-control-panel"),3E3);A.call(k,a,"mouseover",Hg.call(k,"\ufdd0'show-control-panel"));A.call(k,a,"mouseout",Hg.call(k,"\ufdd0'hide-control-panel"));A.call(k,bd.call(k,"c-toggle"),"click",Hg.call(k,"\ufdd0'toggle-mode"));A.call(k,bd.call(k,"c-first"),"click",Hg.call(k,"\ufdd0'show-first-slide"));A.call(k,bd.call(k,"c-prev"),"click",Hg.call(k,"\ufdd0'show-prev-slide"));A.call(k,bd.call(k,"c-next"),"click",Hg.call(k,
+"\ufdd0'show-next-slide"));A.call(k,bd.call(k,"c-last"),"click",Hg.call(k,"\ufdd0'show-last-slide"));return A.call(k,bd.call(k,"c-presenter-window"),"click",Hg.call(k,"\ufdd0'show-presenter-window"))}function Og(a){for(;;){if(B(G.call(k,"DIV",a.nodeName)))return a;a=a.parentNode}}var Vg=Y.call(k,X.call(k,function(a){return K.call(k,"H",a)},Xf.call(k,1,9)));function Wg(a){for(;;){if(B(Oe.call(k,Vg,a.nodeName)))return a;a=Eg.call(k,a)}}
+function Xg(){var a=O.call(k,$.call(k,"span","tag"));if(B(a))for(var c=P.call(k,a);;){var d=Og.call(k,c),e=O.call(k,$.call(k,"span",k,c));if(B(e))for(c=P.call(k,e);;)if(Yc.call(k,d,Xc.call(k,c)),c=R.call(k,e),B(c))e=c,c=P.call(k,e);else break;a=R.call(k,a);if(B(a))d=a,c=a=P.call(k,d),a=d;else return k}else return k}
+function Yg(a){var a=a.cloneNode(i),c=O.call(k,$.call(k,"div",k,a));if(B(c))for(var d=P.call(k,c),e=c;;)if(B(function(){var a=S.call(k);return B(a)?lf.call(k,function(a){return function(c){return $c.call(k,a,K.call(k,"outline-",c))}}(d,e),Xf.call(k,1,9)):a}())&&Bg.call(k,d),c=R.call(k,e),B(c))var f=c,d=c=P.call(k,f),e=f;else break;return a}function Zg(a){a=P.call(k,xf.call(k,function(a){var d=G.call(k,"DIV",a.nodeName);return B(d)?$c.call(k,a,"notes"):d},a.children));return B(a)?kd.call(k,a):""}
+function $g(){return Df.call(k,X.call(k,function(a){return Lf(["\ufdd0'id","\ufdd0'html","\ufdd0'notes-html"],{"\ufdd0'id":Wg.call(k,a).id,"\ufdd0'html":kd.call(k,Yg.call(k,a)),"\ufdd0'notes-html":Zg.call(k,a)})},$.call(k,"div","slide")))}function ah(a){return lf.call(k,function(c){return B(G.call(k,a,"\ufdd0'id".call(k,c)))?c:k},Z.call(k,wg))}function bh(a){return qe.call(k,qf.call(k,function(c){return 0<ta.call(k,a,"\ufdd0'id".call(k,c))},Z.call(k,wg)))}
+function ch(){var a=Fg.call(k),c=ah.call(k,a);if(B(c))return c;c=O.call(k,a);a=B(c)?bh.call(k,a):c;return B(a)?a:P.call(k,Z.call(k,wg))}function dh(){return bh.call(k,"\ufdd0'id".call(k,ch.call(k)))}function eh(a){var c=B(Je.call(k,a))?V.call(k,L,a):a,a=U.call(k,c,"\ufdd0'html"),c=U.call(k,c,"\ufdd0'id");Gg.call(k,c);bd.call(k,"current-slide").innerHTML=a;return fh.call(k)}
+function gh(){Ag.call(k,xe(J("\ufdd1'enter-slideshow-mode"),L("\ufdd0'line",290)));Jg.call(k,ng.call(k,"preamble"));Jg.call(k,ng.call(k,"content"));Jg.call(k,ng.call(k,"postamble"));Lg.call(k,U.call(k,Z.call(k,vg),"screen"));Mg.call(k,U.call(k,Z.call(k,vg),"projection"));Ig.call(k,ng.call(k,"current-slide"));return eh.call(k,ch.call(k))}
+function hh(){Ag.call(k,xe(J("\ufdd1'leave-slideshow-mode"),L("\ufdd0'line",300)));Jg.call(k,ng.call(k,"current-slide"));Lg.call(k,U.call(k,Z.call(k,vg),"projection"));Mg.call(k,U.call(k,Z.call(k,vg),"screen"));Ig.call(k,ng.call(k,"preamble"));Ig.call(k,ng.call(k,"content"));Ig.call(k,ng.call(k,"postamble"));return bd.call(k,Fg.call(k)).scrollIntoView()}function ih(){return B(Z.call(k,xg))?gh.call(k):hh.call(k)}
+function jh(){Ag.call(k,xe(J("\ufdd1'toggle-mode"),L("\ufdd0'line",315)));return hg.call(k,xg,S)}(function(a,c,d){return ke.call(k,a,c,d)}).call(k,xg,"\ufdd0'change-mode",function(){return lg.call(k,"\ufdd0'change-mode")});function kh(){var a=ch.call(k),c=qe.call(k,qf.call(k,function(c){return jf.call(k,a,c)},Z.call(k,wg)));B(c)&&eh.call(k,c);return hg.call(k,zg,function(a){return B(I.call(k,a))?(new Date).getTime():a})}
+function lh(){var a=ch.call(k),c=se.call(k,Vf.call(k,function(c){return jf.call(k,a,c)},Z.call(k,wg)));return B(c)?eh.call(k,c):k}function mh(){return eh.call(k,P.call(k,Z.call(k,wg)))}function nh(){return eh.call(k,se.call(k,Z.call(k,wg)))}function oh(){Gg.call(k,"top");return ug.window.scrollTo(0,0)}var ph=Of([84,36],["\ufdd0'toggle-mode","\ufdd0'go-to-top"]),qh=Of([32,84,35,80,37,34,13,33,78,40,38,39,3,36],"\ufdd0'show-next-slide,\ufdd0'toggle-mode,\ufdd0'show-last-slide,\ufdd0'show-prev-slide,\ufdd0'show-prev-slide,\ufdd0'show-next-slide,\ufdd0'show-next-slide,\ufdd0'show-prev-slide,\ufdd0'show-next-slide,\ufdd0'show-next-slide,\ufdd0'show-prev-slide,\ufdd0'show-next-slide,\ufdd0'show-next-slide,\ufdd0'show-first-slide".split(","));
+function rh(a){var c=a.keyCode,d=B(Z.call(k,xg))?qh:ph,c=U.call(k,d,c);return B(c)?(lg.call(k,c),a.preventDefault(),a.stopPropagation()):k}function sh(a){return A.call(k,new Qc(a),"key",rh)}function th(){return B(Z.call(k,yg))?B(Z.call(k,yg).closed)?gg.call(k,yg,k):Z.call(k,yg):k}
+function uh(a){var c=new Date,d=c.getHours();return a.document.getElementById("presenter-clock-time").innerHTML=Ra.call(k,'<span>%d:%02d:%02d<span id="presenter-clock-time-ampm"> %s</span></span>',B(12<d)?d-12:d,c.getMinutes(),c.getSeconds(),B(12<=d)?"pm":"am")}function vh(){var a=(new Date).getTime()-Z.call(k,zg);return Ra.call(k,"%d:%02d:%02d",a/36E5,a/6E4%60,a/1E3%60)}function wh(a){return a.document.getElementById("presenter-elapsed-time").innerHTML=B(Z.call(k,zg))?vh.call(k):"0:00:00"}
+var yh=function xh(){var c=th.call(k);return B(c)?(uh.call(k,c),wh.call(k,c),window.setTimeout(xh,1E3)):k};function zh(){gg.call(k,zg,k);var a=th.call(k);return B(a)?wh.call(k,a):k}
+function fh(){var a=th.call(k);if(B(a)){var c=ch.call(k),d=B(Je.call(k,c))?V.call(k,L,c):c,c=U.call(k,d,"\ufdd0'notes-html"),d=U.call(k,d,"\ufdd0'html");a.document.getElementById("presenter-current-slide").innerHTML=d;a.document.getElementById("presenter-notes-container").innerHTML=c;return a.document.getElementById("presenter-next-slide").innerHTML="\ufdd0'html".call(k,dh.call(k))}return k}
+function Ah(){var a=th.call(k);if(B(a))return a.focus();gg.call(k,yg,Ld.call(k,"",Lf(["\ufdd0'target","\ufdd0'toolbar","\ufdd0'location","\ufdd0'statusbar","\ufdd0'menubar"],{"\ufdd0'target":"PRESENTERDISPLAY","\ufdd0'toolbar":m,"\ufdd0'location":m,"\ufdd0'statusbar":m,"\ufdd0'menubar":m}).N));a=Z.call(k,yg).document;a.write('\n<html>\n <head>\n </head>\n <body class="presenter-display">\n <div id="presenter-slide-preview">\n <div id="presenter-current-slide-container">\n <span class="presenter-label">Current Slide</span>\n <div id="presenter-current-slide">\n </div>\n </div>\n <div id="presenter-next-slide-container">\n <span class="presenter-label">Next Slide</span>\n <div id="presenter-next-slide">\n </div>\n </div>\n </div>\n <div id="presenter-notes-container"></div>\n <div id="presenter-times" class="presenter-label">\n <div id="presenter-elapsed-time-container">\n <span id="presenter-elapsed-time">0:00:00</span>\n <span id="presenter-elapsed-time-reset-container">\n <a href="#" id="presenter-elapsed-time-reset">reset</a>\n </span>\n </div>\n <div id="presenter-clock-time"><span></span></div>\n </div>\n </body>\n</html>\n');
+Mg.call(k,U.call(k,Z.call(k,vg),"common"),a);Mg.call(k,U.call(k,Z.call(k,vg),"projection"),a);Mg.call(k,U.call(k,Z.call(k,vg),"presenter"),a);sh.call(k,a);A.call(k,a.getElementById("presenter-elapsed-time-reset"),"click",Hg.call(k,"\ufdd0'reset-elapsed-time"));fh.call(k);return yh.call(k)}
+function Bh(){jg.call(k,Y(["\ufdd0'show-next-slide"]),function(){return kh.call(k)});jg.call(k,Y(["\ufdd0'show-prev-slide"]),function(){return lh.call(k)});jg.call(k,Y(["\ufdd0'show-first-slide"]),function(){return mh.call(k)});jg.call(k,Y(["\ufdd0'show-last-slide"]),function(){return nh.call(k)});jg.call(k,Y(["\ufdd0'toggle-mode"]),function(){return jh.call(k)});jg.call(k,Y(["\ufdd0'go-to-top"]),function(){return oh.call(k)});jg.call(k,Y(["\ufdd0'show-control-panel"]),function(){return Sg.call(k)});
+jg.call(k,Y(["\ufdd0'hide-control-panel"]),function(){return Tg.call(k)});jg.call(k,Y(["\ufdd0'change-mode"]),function(){return ih.call(k)});jg.call(k,Y(["\ufdd0'show-presenter-window"]),function(){return Ah.call(k)});return jg.call(k,Y(["\ufdd0'reset-elapsed-time"]),function(){return zh.call(k)})}function Ch(){return hg.call(k,vg,ve,"projection",Kg.call(k,"projection"),"screen",Kg.call(k,"screen"),"common",Kg.call(k,k),"presenter",Kg.call(k,"presenter"))}
+function Dh(){var a=O.call(k,$.call(k,"img"));if(B(a))for(var c=P.call(k,a);;)if(c=c.parentNode,B(G.call(k,"P",c.nodeName))&&Yc.call(k,c,"image"),c=R.call(k,a),B(c))a=c,c=P.call(k,a);else return k;else return k}
+function Eh(){var a=O.call(k,Xf.call(k,1,9));if(B(a))for(var c=P.call(k,a);;){var d=O.call(k,$.call(k,"div",K.call(k,"outline-text-",c)));if(B(d))for(c=P.call(k,d);;)if(Yc.call(k,c,"outline-text"),c=R.call(k,d),B(c))d=c,c=P.call(k,d);else break;a=R.call(k,a);if(B(a))c=a,a=P.call(k,c),d=c,c=a,a=d;else return k}else return k}
+(function(){var a=new Kd;if(i!=a.Xa){Jd();var c=Id,d=a.vb;if(!c.pa)c.pa=[];c.pa.push(d);a.Xa=i}Ag.call(k,"Application started");Ag.call(k,"Preparing document");Ch.call(k);Lg.call(k,U.call(k,Z.call(k,vg),"projection"));Lg.call(k,U.call(k,Z.call(k,vg),"presenter"));Dh.call(k);Xg.call(k);Eh.call(k);Rg.call(k);Dg.call(k).appendChild(jd.call(k,'<div id="current-slide"></div>'));Jg.call(k,ng.call(k,"current-slide"));gg.call(k,wg,$g.call(k));Ag.call(k,xe(J("\ufdd1'count","\ufdd1'slides"),L("\ufdd0'line",
+559)),ue.call(k,Z.call(k,wg)));Ag.call(k,"Installing key handler");Bh.call(k);Ug.call(k);return sh.call(k,ad.call(k))}).call(k);
\ No newline at end of file
diff --git a/md/TechWorks/decks/barcamp-2012/slide-assets/presenter.css b/md/TechWorks/decks/barcamp-2012/slide-assets/presenter.css
new file mode 100644
index 0000000..7e7c5c6
--- /dev/null
+++ b/md/TechWorks/decks/barcamp-2012/slide-assets/presenter.css
@@ -0,0 +1,97 @@
+/* Org-HTML-Slideshow presenter styles.
+ *
+ * These styles will apply only to the presenter preview.
+ */
+
+body.presenter-display {
+ background-color: black;
+}
+
+.presenter-label {
+ color: white;
+ font-family: Helvetica, Arial, sans-serif;
+}
+
+#presenter-current-slide-container {
+ bottom: 200px;
+ height: 40%;
+ left: 1%;
+ overflow: hidden;
+ position: absolute;
+ top: 0;
+ vertical-align: top;
+ width: 50%;
+ zoom: 60%;
+}
+
+#presenter-next-slide-container {
+ height: 30%;
+ overflow: hidden;
+ position: absolute;
+ right: 1%;
+ top: 1%;
+ vertical-align: top;
+ width: 40%;
+ zoom: 50%;
+}
+
+#presenter-current-slide {
+ background: white;
+ height: 100%;
+ padding: 12pt;
+}
+
+#presenter-next-slide {
+ background: white;
+ height: 100%;
+ padding: 12pt;
+}
+
+#presenter-times {
+ bottom: 1%;
+ font-size: 2.5em;
+ position: absolute;
+ text-align: center;
+ height: 12%;
+ width: 98%;
+}
+
+#presenter-elapsed-time-container {
+ position: absolute;
+ left: 1%;
+ width: 45%;
+}
+
+#presenter-clock-time {
+ position: absolute;
+ right: 1%;
+ width: 45%;
+}
+
+#presenter-clock-time-ampm {
+ font-size: 0.5em;
+}
+
+#presenter-elapsed-time-reset-container {
+ font-size: 12pt;
+}
+
+a#presenter-elapsed-time-reset {
+ color: cyan;
+}
+
+#presenter-notes-container {
+ position: absolute;
+ overflow: auto;
+ top: 40%;
+ left: 10px;
+ height: 45%;
+ width: 98%;
+ font-size: 18pt;
+ color: white;
+}
+
+#presenter-notes-container h1,#presenter-notes-container h2,#presenter-notes-container h3,#presenter-notes-container h4,#presenter-notes-container h5,#presenter-notes-container h6,#presenter-notes-container h7,#presenter-notes-container h8 {
+ font-size: 12pt;
+ text-align: left;
+}
\ No newline at end of file
diff --git a/md/TechWorks/decks/barcamp-2012/slide-assets/projection.css b/md/TechWorks/decks/barcamp-2012/slide-assets/projection.css
new file mode 100644
index 0000000..0c40299
--- /dev/null
+++ b/md/TechWorks/decks/barcamp-2012/slide-assets/projection.css
@@ -0,0 +1,118 @@
+/* Org-HTML-Slideshow projection styles.
+ *
+ * These styles will apply only to the slide-show view.
+ */
+
+/*
+ * dark blue: #3C5996
+ * light blue: #90B4FE
+ * light green: #91DC47
+ * dark green: #63B131
+ */
+
+@import url(http://fonts.googleapis.com/css?family=Ubuntu+Mono);
+@import url(http://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic,700italic);
+@import url(http://fonts.googleapis.com/css?family=Bitter:400,700);
+
+
+body {
+ margin: 18pt;
+ font-size: 24pt;
+ background-color: white;
+ background-image: url("retina_wood.png");
+ background-size: cover;
+ font-family: 'PT Sans', sans-serif;
+}
+
+.presenters {
+ text-align: right;
+ position: absolute;
+ bottom: 0;
+ right: 20px;
+}
+
+#lisp-logo {
+ margin: 0 auto;
+ display: block;
+}
+
+/* Use all headings as slide titles, regardless of level. */
+h1,h2,h3,h4,h5,h6,h7,h8 {
+ font-family: 'Bitter', serif;
+ font-size: 48pt;
+ margin: 18pt;
+ text-align: center;
+}
+
+h1 code, h2 code, h3 code, h4 code, h5 code, h6 code, h7 code, h8 code {
+ background-color: inherit;
+}
+
+ul {
+ padding-left: 0;
+}
+
+li {
+ margin: 12pt;
+ list-style: none;
+}
+
+li li {
+ margin-left: 2em;
+ list-style: disc;
+}
+
+/* Center embedded images. */
+p.image {
+ text-align: center;
+}
+
+/* Hide Org-Mode tags in slide-show view. */
+span.tag {
+ display: none;
+}
+
+/* Hide Org-Mode section numbers in slide-show view. */
+span.section-number-1,span.section-number-2,span.section-number-3,span.section-number-4,span.section-number-5,span.section-number-6,span.section-number-7,span.section-number-8 {
+ display: none;
+}
+
+.blue_background {
+ background: blue;
+ color: white;
+}
+
+.colorize-highlight {
+ color: blue;
+}
+
+code {
+ background-color: #eee;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ color: black;
+ font-family: 'Ubuntu Mono', sans-serif;
+ font-size: .9em;
+ padding: 2px 4px;
+}
+
+pre code {
+ display: block;
+ overflow: auto;
+}
+
+pre {
+ background-color: #eee;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+ -webkit-box-shadow: 1px 1px 1px #999;
+ box-shadow: 1px 1px 1px #999;
+ color: black;
+ font-family: 'Ubuntu Mono', sans-serif;
+ margin-bottom: 40px;
+ padding: 20px;
+ line-height: initial;
+ font-size: 22px;
+}
\ No newline at end of file
diff --git a/md/TechWorks/decks/barcamp-2012/slide-assets/retina_wood.png b/md/TechWorks/decks/barcamp-2012/slide-assets/retina_wood.png
new file mode 100644
index 0000000..22f2450
Binary files /dev/null and b/md/TechWorks/decks/barcamp-2012/slide-assets/retina_wood.png differ
diff --git a/md/TechWorks/decks/barcamp-2012/slide-assets/screen.css b/md/TechWorks/decks/barcamp-2012/slide-assets/screen.css
new file mode 100644
index 0000000..e69de29
diff --git a/md/TechWorks/decks/gitrubytesting/images/BFF.gif b/md/TechWorks/decks/gitrubytesting/images/BFF.gif
new file mode 100644
index 0000000..33e7dd8
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/BFF.gif differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/adder_code.png b/md/TechWorks/decks/gitrubytesting/images/adder_code.png
new file mode 100644
index 0000000..8b64061
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/adder_code.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/bg.png b/md/TechWorks/decks/gitrubytesting/images/bg.png
new file mode 100644
index 0000000..f59e029
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/bg.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/cooldog.png b/md/TechWorks/decks/gitrubytesting/images/cooldog.png
new file mode 100644
index 0000000..94768eb
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/cooldog.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/devflow.png b/md/TechWorks/decks/gitrubytesting/images/devflow.png
new file mode 100644
index 0000000..8ec32c1
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/devflow.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/ferris.jpg b/md/TechWorks/decks/gitrubytesting/images/ferris.jpg
new file mode 100644
index 0000000..2f4b784
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/ferris.jpg differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/git-repo-1.png b/md/TechWorks/decks/gitrubytesting/images/git-repo-1.png
new file mode 100644
index 0000000..ca72d2d
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/git-repo-1.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/git-repo-2.png b/md/TechWorks/decks/gitrubytesting/images/git-repo-2.png
new file mode 100644
index 0000000..a9e5c84
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/git-repo-2.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/git-repo-5.png b/md/TechWorks/decks/gitrubytesting/images/git-repo-5.png
new file mode 100644
index 0000000..858026b
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/git-repo-5.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/git-repo-6.png b/md/TechWorks/decks/gitrubytesting/images/git-repo-6.png
new file mode 100644
index 0000000..9cb238f
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/git-repo-6.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/git1.png b/md/TechWorks/decks/gitrubytesting/images/git1.png
new file mode 100644
index 0000000..34dbe4d
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/git1.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/git2.png b/md/TechWorks/decks/gitrubytesting/images/git2.png
new file mode 100644
index 0000000..389518d
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/git2.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/git3.png b/md/TechWorks/decks/gitrubytesting/images/git3.png
new file mode 100644
index 0000000..b04974b
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/git3.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/git4.png b/md/TechWorks/decks/gitrubytesting/images/git4.png
new file mode 100644
index 0000000..1578a61
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/git4.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/git5.png b/md/TechWorks/decks/gitrubytesting/images/git5.png
new file mode 100644
index 0000000..905ad28
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/git5.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/git6.png b/md/TechWorks/decks/gitrubytesting/images/git6.png
new file mode 100644
index 0000000..14f0139
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/git6.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/git7.png b/md/TechWorks/decks/gitrubytesting/images/git7.png
new file mode 100644
index 0000000..717a99a
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/git7.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/git8.png b/md/TechWorks/decks/gitrubytesting/images/git8.png
new file mode 100644
index 0000000..12ad716
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/git8.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/git9.png b/md/TechWorks/decks/gitrubytesting/images/git9.png
new file mode 100644
index 0000000..559334d
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/git9.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/kittcar.jpg b/md/TechWorks/decks/gitrubytesting/images/kittcar.jpg
new file mode 100644
index 0000000..a1367b8
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/kittcar.jpg differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/linus_beer.jpg b/md/TechWorks/decks/gitrubytesting/images/linus_beer.jpg
new file mode 100644
index 0000000..c2d8231
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/linus_beer.jpg differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/pdp11-unix.jpg b/md/TechWorks/decks/gitrubytesting/images/pdp11-unix.jpg
new file mode 100644
index 0000000..e5df71c
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/pdp11-unix.jpg differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/tada.jpg b/md/TechWorks/decks/gitrubytesting/images/tada.jpg
new file mode 100644
index 0000000..6031cb9
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/tada.jpg differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/testsyo.png b/md/TechWorks/decks/gitrubytesting/images/testsyo.png
new file mode 100644
index 0000000..76e3c20
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/testsyo.png differ
diff --git a/md/TechWorks/decks/gitrubytesting/images/who-cares.jpg b/md/TechWorks/decks/gitrubytesting/images/who-cares.jpg
new file mode 100644
index 0000000..3b2eba3
Binary files /dev/null and b/md/TechWorks/decks/gitrubytesting/images/who-cares.jpg differ
diff --git a/md/TechWorks/decks/gitrubytesting/index.html b/md/TechWorks/decks/gitrubytesting/index.html
new file mode 100644
index 0000000..daa536e
--- /dev/null
+++ b/md/TechWorks/decks/gitrubytesting/index.html
@@ -0,0 +1,5264 @@
+<html>
+ <head>
+ <title>Managing Code and Quality with Git and Testing</title>
+ <style type="text/css" media="screen">
+ * {
+ margin: 0;
+ padding: 0;
+}
+
+body {
+ font-family: Helvetica;
+ font-size: 38px;
+ color: #111;
+ background: #fff;
+ overflow: hidden;
+}
+
+pre {
+ font-family: Bitstream Vera Sans Mono;
+ font-size: 1em;
+}
+
+blockquote {
+ padding: 0 0 0 1em;
+ font-size: 1.4em;
+ font-family: Georgia, serif;
+ font-style: italic;
+}
+
+ul {
+ padding: 0 0 0 1em;
+}
+
+#instructions {
+ position: absolute;
+ width: 99%;
+ text-align: center;
+ background: #ffd;
+ font-size: 20px;
+ padding: 10px;
+ font-weight: bold;
+ border-bottom: 1px solid #ff0;
+}
+
+#slides {
+ overflow: hidden;
+ text-align: left;
+}
+
+#track {
+ width: 1000000px;
+ overflow: hidden;
+}
+
+#track > div {
+ float: left;
+ overflow: hidden;
+}
+
+#track > div .content {
+ margin: 0 0.6em;
+}
+
+#track > div .content h1 {
+ margin-bottom: 0.1em;
+}
+
+#track > div .content h1 strong {
+ text-decoration: underline;
+}
+
+/* - Ripped shamefully from GitHub - */
+.code .c { color: #999988; font-style: italic } /* Comment */
+.code .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.code .k { font-weight: bold } /* Keyword */
+.code .o { font-weight: bold } /* Operator */
+.code .cm { color: #999988; font-style: italic } /* Comment.Multiline */
+.code .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
+.code .c1 { color: #999988; font-style: italic } /* Comment.Single */
+.code .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
+.code .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.code .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
+.code .ge { font-style: italic } /* Generic.Emph */
+.code .gr { color: #aa0000 } /* Generic.Error */
+.code .gh { color: #999999 } /* Generic.Heading */
+.code .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.code .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
+.code .go { color: #888888 } /* Generic.Output */
+.code .gp { color: #555555 } /* Generic.Prompt */
+.code .gs { font-weight: bold } /* Generic.Strong */
+.code .gu { color: #aaaaaa } /* Generic.Subheading */
+.code .gt { color: #aa0000 } /* Generic.Traceback */
+.code .kc { font-weight: bold } /* Keyword.Constant */
+.code .kd { font-weight: bold } /* Keyword.Declaration */
+.code .kp { font-weight: bold } /* Keyword.Pseudo */
+.code .kr { font-weight: bold } /* Keyword.Reserved */
+.code .kt { color: #445588; font-weight: bold } /* Keyword.Type */
+.code .m { color: #009999 } /* Literal.Number */
+.code .s { color: #d14 } /* Literal.String */
+.code .na { color: #008080 } /* Name.Attribute */
+.code .nb { color: #0086B3 } /* Name.Builtin */
+.code .nc { color: #445588; font-weight: bold } /* Name.Class */
+.code .no { color: #008080 } /* Name.Constant */
+.code .ni { color: #800080 } /* Name.Entity */
+.code .ne { color: #990000; font-weight: bold } /* Name.Exception */
+.code .nf { color: #990000; font-weight: bold } /* Name.Function */
+.code .nn { color: #555555 } /* Name.Namespace */
+.code .nt { color: #000080 } /* Name.Tag */
+.code .nv { color: #008080 } /* Name.Variable */
+.code .ow { font-weight: bold } /* Operator.Word */
+.code .w { color: #bbbbbb } /* Text.Whitespace */
+.code .mf { color: #009999 } /* Literal.Number.Float */
+.code .mh { color: #009999 } /* Literal.Number.Hex */
+.code .mi { color: #009999 } /* Literal.Number.Integer */
+.code .mo { color: #009999 } /* Literal.Number.Oct */
+.code .sb { color: #d14 } /* Literal.String.Backtick */
+.code .sc { color: #d14 } /* Literal.String.Char */
+.code .sd { color: #d14 } /* Literal.String.Doc */
+.code .s2 { color: #d14 } /* Literal.String.Double */
+.code .se { color: #d14 } /* Literal.String.Escape */
+.code .sh { color: #d14 } /* Literal.String.Heredoc */
+.code .si { color: #d14 } /* Literal.String.Interpol */
+.code .sx { color: #d14 } /* Literal.String.Other */
+.code .sr { color: #009926 } /* Literal.String.Regex */
+.code .s1 { color: #d14 } /* Literal.String.Single */
+.code .ss { color: #990073 } /* Literal.String.Symbol */
+.code .bp { color: #999999 } /* Name.Builtin.Pseudo */
+.code .vc { color: #008080 } /* Name.Variable.Class */
+.code .vg { color: #008080 } /* Name.Variable.Global */
+.code .vi { color: #008080 } /* Name.Variable.Instance */
+.code .il { color: #009999 } /* Literal.Number.Integer.Long */
+
+ </style>
+
+
+ <script type="text/javascript">
+ /*!
+ * jQuery JavaScript Library v1.3.2
+ * http://jquery.com/
+ *
+ * Copyright (c) 2009 John Resig
+ * Dual licensed under the MIT and GPL licenses.
+ * http://docs.jquery.com/License
+ *
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
+ * Revision: 6246
+ */
+(function(){
+
+var
+ // Will speed up references to window, and allows munging its name.
+ window = this,
+ // Will speed up references to undefined, and allows munging its name.
+ undefined,
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ jQuery = window.jQuery = window.$ = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
+ // Is it a simple selector
+ isSimple = /^.[^:#\[\.,]*$/;
+
+jQuery.fn = jQuery.prototype = {
+ init: function( selector, context ) {
+ // Make sure that a selection was provided
+ selector = selector || document;
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this[0] = selector;
+ this.length = 1;
+ this.context = selector;
+ return this;
+ }
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ var match = quickExpr.exec( selector );
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] )
+ selector = jQuery.clean( [ match[1] ], context );
+
+ // HANDLE: $("#id")
+ else {
+ var elem = document.getElementById( match[3] );
+
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem && elem.id != match[3] )
+ return jQuery().find( selector );
+
+ // Otherwise, we inject the element directly into the jQuery object
+ var ret = jQuery( elem || [] );
+ ret.context = document;
+ ret.selector = selector;
+ return ret;
+ }
+
+ // HANDLE: $(expr, [context])
+ // (which is just equivalent to: $(content).find(expr)
+ } else
+ return jQuery( context ).find( selector );
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) )
+ return jQuery( document ).ready( selector );
+
+ // Make sure that old selector state is passed along
+ if ( selector.selector && selector.context ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return this.setArray(jQuery.isArray( selector ) ?
+ selector :
+ jQuery.makeArray(selector));
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.3.2",
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num === undefined ?
+
+ // Return a 'clean' array
+ Array.prototype.slice.call( this ) :
+
+ // Return just the object
+ this[ num ];
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = jQuery( elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" )
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ else if ( name )
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Force the current matched set of elements to become
+ // the specified array of elements (destroying the stack in the process)
+ // You should use pushStack() in order to do this, but maintain the stack
+ setArray: function( elems ) {
+ // Resetting the length to 0, then using the native Array push
+ // is a super-fast way to populate an object with array-like properties
+ this.length = 0;
+ Array.prototype.push.apply( this, elems );
+
+ return this;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem && elem.jquery ? elem[0] : elem
+ , this );
+ },
+
+ attr: function( name, value, type ) {
+ var options = name;
+
+ // Look for the case where we're accessing a style value
+ if ( typeof name === "string" )
+ if ( value === undefined )
+ return this[0] && jQuery[ type || "attr" ]( this[0], name );
+
+ else {
+ options = {};
+ options[ name ] = value;
+ }
+
+ // Check to see if we're setting style values
+ return this.each(function(i){
+ // Set all the styles
+ for ( name in options )
+ jQuery.attr(
+ type ?
+ this.style :
+ this,
+ name, jQuery.prop( this, options[ name ], type, i, name )
+ );
+ });
+ },
+
+ css: function( key, value ) {
+ // ignore negative width and height values
+ if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
+ value = undefined;
+ return this.attr( key, value, "curCSS" );
+ },
+
+ text: function( text ) {
+ if ( typeof text !== "object" && text != null )
+ return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+
+ var ret = "";
+
+ jQuery.each( text || this, function(){
+ jQuery.each( this.childNodes, function(){
+ if ( this.nodeType != 8 )
+ ret += this.nodeType != 1 ?
+ this.nodeValue :
+ jQuery.fn.text( [ this ] );
+ });
+ });
+
+ return ret;
+ },
+
+ wrapAll: function( html ) {
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).clone();
+
+ if ( this[0].parentNode )
+ wrap.insertBefore( this[0] );
+
+ wrap.map(function(){
+ var elem = this;
+
+ while ( elem.firstChild )
+ elem = elem.firstChild;
+
+ return elem;
+ }).append(this);
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ return this.each(function(){
+ jQuery( this ).contents().wrapAll( html );
+ });
+ },
+
+ wrap: function( html ) {
+ return this.each(function(){
+ jQuery( this ).wrapAll( html );
+ });
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function(elem){
+ if (this.nodeType == 1)
+ this.appendChild( elem );
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function(elem){
+ if (this.nodeType == 1)
+ this.insertBefore( elem, this.firstChild );
+ });
+ },
+
+ before: function() {
+ return this.domManip(arguments, false, function(elem){
+ this.parentNode.insertBefore( elem, this );
+ });
+ },
+
+ after: function() {
+ return this.domManip(arguments, false, function(elem){
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ },
+
+ end: function() {
+ return this.prevObject || jQuery( [] );
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: [].push,
+ sort: [].sort,
+ splice: [].splice,
+
+ find: function( selector ) {
+ if ( this.length === 1 ) {
+ var ret = this.pushStack( [], "find", selector );
+ ret.length = 0;
+ jQuery.find( selector, this[0], ret );
+ return ret;
+ } else {
+ return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){
+ return jQuery.find( selector, elem );
+ })), "find", selector );
+ }
+ },
+
+ clone: function( events ) {
+ // Do the clone
+ var ret = this.map(function(){
+ if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
+ // IE copies events bound via attachEvent when
+ // using cloneNode. Calling detachEvent on the
+ // clone will also remove the events from the orignal
+ // In order to get around this, we use innerHTML.
+ // Unfortunately, this means some modifications to
+ // attributes in IE that are actually only stored
+ // as properties will not be copied (such as the
+ // the name attribute on an input).
+ var html = this.outerHTML;
+ if ( !html ) {
+ var div = this.ownerDocument.createElement("div");
+ div.appendChild( this.cloneNode(true) );
+ html = div.innerHTML;
+ }
+
+ return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g, "").replace(/^\s*/, "")])[0];
+ } else
+ return this.cloneNode(true);
+ });
+
+ // Copy the events from the original to the clone
+ if ( events === true ) {
+ var orig = this.find("*").andSelf(), i = 0;
+
+ ret.find("*").andSelf().each(function(){
+ if ( this.nodeName !== orig[i].nodeName )
+ return;
+
+ var events = jQuery.data( orig[i], "events" );
+
+ for ( var type in events ) {
+ for ( var handler in events[ type ] ) {
+ jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
+ }
+ }
+
+ i++;
+ });
+ }
+
+ // Return the cloned set
+ return ret;
+ },
+
+ filter: function( selector ) {
+ return this.pushStack(
+ jQuery.isFunction( selector ) &&
+ jQuery.grep(this, function(elem, i){
+ return selector.call( elem, i );
+ }) ||
+
+ jQuery.multiFilter( selector, jQuery.grep(this, function(elem){
+ return elem.nodeType === 1;
+ }) ), "filter", selector );
+ },
+
+ closest: function( selector ) {
+ var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null,
+ closer = 0;
+
+ return this.map(function(){
+ var cur = this;
+ while ( cur && cur.ownerDocument ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) {
+ jQuery.data(cur, "closest", closer);
+ return cur;
+ }
+ cur = cur.parentNode;
+ closer++;
+ }
+ });
+ },
+
+ not: function( selector ) {
+ if ( typeof selector === "string" )
+ // test special case where just one selector is passed in
+ if ( isSimple.test( selector ) )
+ return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector );
+ else
+ selector = jQuery.multiFilter( selector, this );
+
+ var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
+ return this.filter(function() {
+ return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
+ });
+ },
+
+ add: function( selector ) {
+ return this.pushStack( jQuery.unique( jQuery.merge(
+ this.get(),
+ typeof selector === "string" ?
+ jQuery( selector ) :
+ jQuery.makeArray( selector )
+ )));
+ },
+
+ is: function( selector ) {
+ return !!selector && jQuery.multiFilter( selector, this ).length > 0;
+ },
+
+ hasClass: function( selector ) {
+ return !!selector && this.is( "." + selector );
+ },
+
+ val: function( value ) {
+ if ( value === undefined ) {
+ var elem = this[0];
+
+ if ( elem ) {
+ if( jQuery.nodeName( elem, 'option' ) )
+ return (elem.attributes.value || {}).specified ? elem.value : elem.text;
+
+ // We need to handle select boxes special
+ if ( jQuery.nodeName( elem, "select" ) ) {
+ var index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type == "select-one";
+
+ // Nothing was selected
+ if ( index < 0 )
+ return null;
+
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[ i ];
+
+ if ( option.selected ) {
+ // Get the specifc value for the option
+ value = jQuery(option).val();
+
+ // We don't need an array for one selects
+ if ( one )
+ return value;
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ }
+
+ // Everything else, we just grab the value
+ return (elem.value || "").replace(/\r/g, "");
+
+ }
+
+ return undefined;
+ }
+
+ if ( typeof value === "number" )
+ value += '';
+
+ return this.each(function(){
+ if ( this.nodeType != 1 )
+ return;
+
+ if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )
+ this.checked = (jQuery.inArray(this.value, value) >= 0 ||
+ jQuery.inArray(this.name, value) >= 0);
+
+ else if ( jQuery.nodeName( this, "select" ) ) {
+ var values = jQuery.makeArray(value);
+
+ jQuery( "option", this ).each(function(){
+ this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
+ jQuery.inArray( this.text, values ) >= 0);
+ });
+
+ if ( !values.length )
+ this.selectedIndex = -1;
+
+ } else
+ this.value = value;
+ });
+ },
+
+ html: function( value ) {
+ return value === undefined ?
+ (this[0] ?
+ this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") :
+ null) :
+ this.empty().append( value );
+ },
+
+ replaceWith: function( value ) {
+ return this.after( value ).remove();
+ },
+
+ eq: function( i ) {
+ return this.slice( i, +i + 1 );
+ },
+
+ slice: function() {
+ return this.pushStack( Array.prototype.slice.apply( this, arguments ),
+ "slice", Array.prototype.slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function(elem, i){
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ },
+
+ domManip: function( args, table, callback ) {
+ if ( this[0] ) {
+ var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),
+ scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),
+ first = fragment.firstChild;
+
+ if ( first )
+ for ( var i = 0, l = this.length; i < l; i++ )
+ callback.call( root(this[i], first), this.length > 1 || i > 0 ?
+ fragment.cloneNode(true) : fragment );
+
+ if ( scripts )
+ jQuery.each( scripts, evalScript );
+ }
+
+ return this;
+
+ function root( elem, cur ) {
+ return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+ }
+ }
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+function evalScript( i, elem ) {
+ if ( elem.src )
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+
+ else
+ jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
+
+ if ( elem.parentNode )
+ elem.parentNode.removeChild( elem );
+}
+
+function now(){
+ return +new Date;
+}
+
+jQuery.extend = jQuery.fn.extend = function() {
+ // copy reference to target object
+ var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) )
+ target = {};
+
+ // extend jQuery itself if only one argument is passed
+ if ( length == i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ )
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null )
+ // Extend the base object
+ for ( var name in options ) {
+ var src = target[ name ], copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy )
+ continue;
+
+ // Recurse if we're merging object values
+ if ( deep && copy && typeof copy === "object" && !copy.nodeType )
+ target[ name ] = jQuery.extend( deep,
+ // Never move original objects, clone them
+ src || ( copy.length != null ? [ ] : { } )
+ , copy );
+
+ // Don't bring in undefined values
+ else if ( copy !== undefined )
+ target[ name ] = copy;
+
+ }
+
+ // Return the modified object
+ return target;
+};
+
+// exclude the following css properties to add px
+var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
+ // cache defaultView
+ defaultView = document.defaultView || {},
+ toString = Object.prototype.toString;
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ window.$ = _$;
+
+ if ( deep )
+ window.jQuery = _jQuery;
+
+ return jQuery;
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return toString.call(obj) === "[object Function]";
+ },
+
+ isArray: function( obj ) {
+ return toString.call(obj) === "[object Array]";
+ },
+
+ // check if an element is in a (or is an) XML document
+ isXMLDoc: function( elem ) {
+ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
+ !!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );
+ },
+
+ // Evalulates a script in a global context
+ globalEval: function( data ) {
+ if ( data && /\S/.test(data) ) {
+ // Inspired by code by Andrea Giammarchi
+ // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.getElementsByTagName("head")[0] || document.documentElement,
+ script = document.createElement("script");
+
+ script.type = "text/javascript";
+ if ( jQuery.support.scriptEval )
+ script.appendChild( document.createTextNode( data ) );
+ else
+ script.text = data;
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore( script, head.firstChild );
+ head.removeChild( script );
+ }
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0, length = object.length;
+
+ if ( args ) {
+ if ( length === undefined ) {
+ for ( name in object )
+ if ( callback.apply( object[ name ], args ) === false )
+ break;
+ } else
+ for ( ; i < length; )
+ if ( callback.apply( object[ i++ ], args ) === false )
+ break;
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( length === undefined ) {
+ for ( name in object )
+ if ( callback.call( object[ name ], name, object[ name ] ) === false )
+ break;
+ } else
+ for ( var value = object[0];
+ i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
+ }
+
+ return object;
+ },
+
+ prop: function( elem, value, type, i, name ) {
+ // Handle executable functions
+ if ( jQuery.isFunction( value ) )
+ value = value.call( elem, i );
+
+ // Handle passing in a number to a CSS property
+ return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ?
+ value + "px" :
+ value;
+ },
+
+ className: {
+ // internal only, use addClass("class")
+ add: function( elem, classNames ) {
+ jQuery.each((classNames || "").split(/\s+/), function(i, className){
+ if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )
+ elem.className += (elem.className ? " " : "") + className;
+ });
+ },
+
+ // internal only, use removeClass("class")
+ remove: function( elem, classNames ) {
+ if (elem.nodeType == 1)
+ elem.className = classNames !== undefined ?
+ jQuery.grep(elem.className.split(/\s+/), function(className){
+ return !jQuery.className.has( classNames, className );
+ }).join(" ") :
+ "";
+ },
+
+ // internal only, use hasClass("class")
+ has: function( elem, className ) {
+ return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call( elem );
+
+ // Revert the old values
+ for ( var name in options )
+ elem.style[ name ] = old[ name ];
+ },
+
+ css: function( elem, name, force, extra ) {
+ if ( name == "width" || name == "height" ) {
+ var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
+
+ function getWH() {
+ val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
+
+ if ( extra === "border" )
+ return;
+
+ jQuery.each( which, function() {
+ if ( !extra )
+ val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
+ if ( extra === "margin" )
+ val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
+ else
+ val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
+ });
+ }
+
+ if ( elem.offsetWidth !== 0 )
+ getWH();
+ else
+ jQuery.swap( elem, props, getWH );
+
+ return Math.max(0, Math.round(val));
+ }
+
+ return jQuery.curCSS( elem, name, force );
+ },
+
+ curCSS: function( elem, name, force ) {
+ var ret, style = elem.style;
+
+ // We need to handle opacity special in IE
+ if ( name == "opacity" && !jQuery.support.opacity ) {
+ ret = jQuery.attr( style, "opacity" );
+
+ return ret == "" ?
+ "1" :
+ ret;
+ }
+
+ // Make sure we're using the right name for getting the float value
+ if ( name.match( /float/i ) )
+ name = styleFloat;
+
+ if ( !force && style && style[ name ] )
+ ret = style[ name ];
+
+ else if ( defaultView.getComputedStyle ) {
+
+ // Only "float" is needed here
+ if ( name.match( /float/i ) )
+ name = "float";
+
+ name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();
+
+ var computedStyle = defaultView.getComputedStyle( elem, null );
+
+ if ( computedStyle )
+ ret = computedStyle.getPropertyValue( name );
+
+ // We should always get a number back from opacity
+ if ( name == "opacity" && ret == "" )
+ ret = "1";
+
+ } else if ( elem.currentStyle ) {
+ var camelCase = name.replace(/\-(\w)/g, function(all, letter){
+ return letter.toUpperCase();
+ });
+
+ ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
+ // Remember the original values
+ var left = style.left, rsLeft = elem.runtimeStyle.left;
+
+ // Put in the new values to get a computed value out
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ style.left = ret || 0;
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ elem.runtimeStyle.left = rsLeft;
+ }
+ }
+
+ return ret;
+ },
+
+ clean: function( elems, context, fragment ) {
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if ( typeof context.createElement === "undefined" )
+ context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) {
+ var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
+ if ( match )
+ return [ context.createElement( match[1] ) ];
+ }
+
+ var ret = [], scripts = [], div = context.createElement("div");
+
+ jQuery.each(elems, function(i, elem){
+ if ( typeof elem === "number" )
+ elem += '';
+
+ if ( !elem )
+ return;
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" ) {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
+ return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
+ all :
+ front + "></" + tag + ">";
+ });
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tags = elem.replace(/^\s+/, "").substring(0, 10).toLowerCase();
+
+ var wrap =
+ // option or optgroup
+ !tags.indexOf("<opt") &&
+ [ 1, "<select multiple='multiple'>", "</select>" ] ||
+
+ !tags.indexOf("<leg") &&
+ [ 1, "<fieldset>", "</fieldset>" ] ||
+
+ tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
+ [ 1, "<table>", "</table>" ] ||
+
+ !tags.indexOf("<tr") &&
+ [ 2, "<table><tbody>", "</tbody></table>" ] ||
+
+ // <thead> matched above
+ (!tags.indexOf("<td") || !tags.indexOf("<th")) &&
+ [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||
+
+ !tags.indexOf("<col") &&
+ [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||
+
+ // IE can't serialize <link> and <script> tags normally
+ !jQuery.support.htmlSerialize &&
+ [ 1, "div<div>", "</div>" ] ||
+
+ [ 0, "", "" ];
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( wrap[0]-- )
+ div = div.lastChild;
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = /<tbody/i.test(elem),
+ tbody = !tags.indexOf("<table") && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] == "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( var j = tbody.length - 1; j >= 0 ; --j )
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) )
+ div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );
+
+ elem = jQuery.makeArray( div.childNodes );
+ }
+
+ if ( elem.nodeType )
+ ret.push( elem );
+ else
+ ret = jQuery.merge( ret, elem );
+
+ });
+
+ if ( fragment ) {
+ for ( var i = 0; ret[i]; i++ ) {
+ if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+ scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+ } else {
+ if ( ret[i].nodeType === 1 )
+ ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
+ fragment.appendChild( ret[i] );
+ }
+ }
+
+ return scripts;
+ }
+
+ return ret;
+ },
+
+ attr: function( elem, name, value ) {
+ // don't set attributes on text and comment nodes
+ if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
+ return undefined;
+
+ var notxml = !jQuery.isXMLDoc( elem ),
+ // Whether we are setting (or getting)
+ set = value !== undefined;
+
+ // Try to normalize/fix the name
+ name = notxml && jQuery.props[ name ] || name;
+
+ // Only do all the following if this is a node (faster for style)
+ // IE elem.getAttribute passes even for style
+ if ( elem.tagName ) {
+
+ // These attributes require special treatment
+ var special = /href|src|style/.test( name );
+
+ // Safari mis-reports the default selected property of a hidden option
+ // Accessing the parent's selectedIndex property fixes it
+ if ( name == "selected" && elem.parentNode )
+ elem.parentNode.selectedIndex;
+
+ // If applicable, access the attribute via the DOM 0 way
+ if ( name in elem && notxml && !special ) {
+ if ( set ){
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
+ throw "type property can't be changed";
+
+ elem[ name ] = value;
+ }
+
+ // browsers index elements by id/name on forms, give priority to attributes.
+ if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
+ return elem.getAttributeNode( name ).nodeValue;
+
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ if ( name == "tabIndex" ) {
+ var attributeNode = elem.getAttributeNode( "tabIndex" );
+ return attributeNode && attributeNode.specified
+ ? attributeNode.value
+ : elem.nodeName.match(/(button|input|object|select|textarea)/i)
+ ? 0
+ : elem.nodeName.match(/^(a|area)$/i) && elem.href
+ ? 0
+ : undefined;
+ }
+
+ return elem[ name ];
+ }
+
+ if ( !jQuery.support.style && notxml && name == "style" )
+ return jQuery.attr( elem.style, "cssText", value );
+
+ if ( set )
+ // convert the value to a string (all browsers do this but IE) see #1070
+ elem.setAttribute( name, "" + value );
+
+ var attr = !jQuery.support.hrefNormalized && notxml && special
+ // Some attributes require a special call on IE
+ ? elem.getAttribute( name, 2 )
+ : elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return attr === null ? undefined : attr;
+ }
+
+ // elem is actually elem.style ... set the style
+
+ // IE uses filters for opacity
+ if ( !jQuery.support.opacity && name == "opacity" ) {
+ if ( set ) {
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ elem.zoom = 1;
+
+ // Set the alpha filter to set the opacity
+ elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
+ (parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
+ }
+
+ return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
+ (parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
+ "";
+ }
+
+ name = name.replace(/-([a-z])/ig, function(all, letter){
+ return letter.toUpperCase();
+ });
+
+ if ( set )
+ elem[ name ] = value;
+
+ return elem[ name ];
+ },
+
+ trim: function( text ) {
+ return (text || "").replace( /^\s+|\s+$/g, "" );
+ },
+
+ makeArray: function( array ) {
+ var ret = [];
+
+ if( array != null ){
+ var i = array.length;
+ // The window, strings (and functions) also have 'length'
+ if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval )
+ ret[0] = array;
+ else
+ while( i )
+ ret[--i] = array[i];
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array ) {
+ for ( var i = 0, length = array.length; i < length; i++ )
+ // Use === because on IE, window == document
+ if ( array[ i ] === elem )
+ return i;
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ // We have to loop this way because IE & Opera overwrite the length
+ // expando of getElementsByTagName
+ var i = 0, elem, pos = first.length;
+ // Also, we need to make sure that the correct elements are being returned
+ // (IE returns comment nodes in a '*' query)
+ if ( !jQuery.support.getAll ) {
+ while ( (elem = second[ i++ ]) != null )
+ if ( elem.nodeType != 8 )
+ first[ pos++ ] = elem;
+
+ } else
+ while ( (elem = second[ i++ ]) != null )
+ first[ pos++ ] = elem;
+
+ return first;
+ },
+
+ unique: function( array ) {
+ var ret = [], done = {};
+
+ try {
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ var id = jQuery.data( array[ i ] );
+
+ if ( !done[ id ] ) {
+ done[ id ] = true;
+ ret.push( array[ i ] );
+ }
+ }
+
+ } catch( e ) {
+ ret = array;
+ }
+
+ return ret;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [];
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ )
+ if ( !inv != !callback( elems[ i ], i ) )
+ ret.push( elems[ i ] );
+
+ return ret;
+ },
+
+ map: function( elems, callback ) {
+ var ret = [];
+
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ var value = callback( elems[ i ], i );
+
+ if ( value != null )
+ ret[ ret.length ] = value;
+ }
+
+ return ret.concat.apply( [], ret );
+ }
+});
+
+// Use of jQuery.browser is deprecated.
+// It's included for backwards compatibility and plugins,
+// although they should work to migrate away.
+
+var userAgent = navigator.userAgent.toLowerCase();
+
+// Figure out what browser is being used
+jQuery.browser = {
+ version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
+ safari: /webkit/.test( userAgent ),
+ opera: /opera/.test( userAgent ),
+ msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
+ mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
+};
+
+jQuery.each({
+ parent: function(elem){return elem.parentNode;},
+ parents: function(elem){return jQuery.dir(elem,"parentNode");},
+ next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
+ prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
+ nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
+ prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
+ siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
+ children: function(elem){return jQuery.sibling(elem.firstChild);},
+ contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
+}, function(name, fn){
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = jQuery.map( this, fn );
+
+ if ( selector && typeof selector == "string" )
+ ret = jQuery.multiFilter( selector, ret );
+
+ return this.pushStack( jQuery.unique( ret ), name, selector );
+ };
+});
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function(name, original){
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = [], insert = jQuery( selector );
+
+ for ( var i = 0, l = insert.length; i < l; i++ ) {
+ var elems = (i > 0 ? this.clone(true) : this).get();
+ jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
+ ret = ret.concat( elems );
+ }
+
+ return this.pushStack( ret, name, selector );
+ };
+});
+
+jQuery.each({
+ removeAttr: function( name ) {
+ jQuery.attr( this, name, "" );
+ if (this.nodeType == 1)
+ this.removeAttribute( name );
+ },
+
+ addClass: function( classNames ) {
+ jQuery.className.add( this, classNames );
+ },
+
+ removeClass: function( classNames ) {
+ jQuery.className.remove( this, classNames );
+ },
+
+ toggleClass: function( classNames, state ) {
+ if( typeof state !== "boolean" )
+ state = !jQuery.className.has( this, classNames );
+ jQuery.className[ state ? "add" : "remove" ]( this, classNames );
+ },
+
+ remove: function( selector ) {
+ if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
+ // Prevent memory leaks
+ jQuery( "*", this ).add([this]).each(function(){
+ jQuery.event.remove(this);
+ jQuery.removeData(this);
+ });
+ if (this.parentNode)
+ this.parentNode.removeChild( this );
+ }
+ },
+
+ empty: function() {
+ // Remove element nodes and prevent memory leaks
+ jQuery(this).children().remove();
+
+ // Remove any remaining nodes
+ while ( this.firstChild )
+ this.removeChild( this.firstChild );
+ }
+}, function(name, fn){
+ jQuery.fn[ name ] = function(){
+ return this.each( fn, arguments );
+ };
+});
+
+// Helper function used by the dimensions and offset modules
+function num(elem, prop) {
+ return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;
+}
+var expando = "jQuery" + now(), uuid = 0, windowData = {};
+
+jQuery.extend({
+ cache: {},
+
+ data: function( elem, name, data ) {
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var id = elem[ expando ];
+
+ // Compute a unique ID for the element
+ if ( !id )
+ id = elem[ expando ] = ++uuid;
+
+ // Only generate the data cache if we're
+ // trying to access or manipulate it
+ if ( name && !jQuery.cache[ id ] )
+ jQuery.cache[ id ] = {};
+
+ // Prevent overriding the named cache with undefined values
+ if ( data !== undefined )
+ jQuery.cache[ id ][ name ] = data;
+
+ // Return the named cache data, or the ID for the element
+ return name ?
+ jQuery.cache[ id ][ name ] :
+ id;
+ },
+
+ removeData: function( elem, name ) {
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var id = elem[ expando ];
+
+ // If we want to remove a specific section of the element's data
+ if ( name ) {
+ if ( jQuery.cache[ id ] ) {
+ // Remove the section of cache data
+ delete jQuery.cache[ id ][ name ];
+
+ // If we've removed all the data, remove the element's cache
+ name = "";
+
+ for ( name in jQuery.cache[ id ] )
+ break;
+
+ if ( !name )
+ jQuery.removeData( elem );
+ }
+
+ // Otherwise, we want to remove all of the element's data
+ } else {
+ // Clean up the element expando
+ try {
+ delete elem[ expando ];
+ } catch(e){
+ // IE has trouble directly removing the expando
+ // but it's ok with using removeAttribute
+ if ( elem.removeAttribute )
+ elem.removeAttribute( expando );
+ }
+
+ // Completely remove the data cache
+ delete jQuery.cache[ id ];
+ }
+ },
+ queue: function( elem, type, data ) {
+ if ( elem ){
+
+ type = (type || "fx") + "queue";
+
+ var q = jQuery.data( elem, type );
+
+ if ( !q || jQuery.isArray(data) )
+ q = jQuery.data( elem, type, jQuery.makeArray(data) );
+ else if( data )
+ q.push( data );
+
+ }
+ return q;
+ },
+
+ dequeue: function( elem, type ){
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift();
+
+ if( !type || type === "fx" )
+ fn = queue[0];
+
+ if( fn !== undefined )
+ fn.call(elem);
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ){
+ var parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if ( value === undefined ) {
+ var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+ if ( data === undefined && this.length )
+ data = jQuery.data( this[0], key );
+
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+ } else
+ return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
+ jQuery.data( this, key, value );
+ });
+ },
+
+ removeData: function( key ){
+ return this.each(function(){
+ jQuery.removeData( this, key );
+ });
+ },
+ queue: function(type, data){
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ }
+
+ if ( data === undefined )
+ return jQuery.queue( this[0], type );
+
+ return this.each(function(){
+ var queue = jQuery.queue( this, type, data );
+
+ if( type == "fx" && queue.length == 1 )
+ queue[0].call(this);
+ });
+ },
+ dequeue: function(type){
+ return this.each(function(){
+ jQuery.dequeue( this, type );
+ });
+ }
+});/*!
+ * Sizzle CSS Selector Engine - v0.9.3
+ * Copyright 2009, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,
+ done = 0,
+ toString = Object.prototype.toString;
+
+var Sizzle = function(selector, context, results, seed) {
+ results = results || [];
+ context = context || document;
+
+ if ( context.nodeType !== 1 && context.nodeType !== 9 )
+ return [];
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ var parts = [], m, set, checkSet, check, mode, extra, prune = true;
+
+ // Reset the position of the chunker regexp (start from head)
+ chunker.lastIndex = 0;
+
+ while ( (m = chunker.exec(selector)) !== null ) {
+ parts.push( m[1] );
+
+ if ( m[2] ) {
+ extra = RegExp.rightContext;
+ break;
+ }
+ }
+
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+ set = posProcess( parts[0] + parts[1], context );
+ } else {
+ set = Expr.relative[ parts[0] ] ?
+ [ context ] :
+ Sizzle( parts.shift(), context );
+
+ while ( parts.length ) {
+ selector = parts.shift();
+
+ if ( Expr.relative[ selector ] )
+ selector += parts.shift();
+
+ set = posProcess( selector, set );
+ }
+ }
+ } else {
+ var ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );
+ set = Sizzle.filter( ret.expr, ret.set );
+
+ if ( parts.length > 0 ) {
+ checkSet = makeArray(set);
+ } else {
+ prune = false;
+ }
+
+ while ( parts.length ) {
+ var cur = parts.pop(), pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ]( checkSet, pop, isXML(context) );
+ }
+ }
+
+ if ( !checkSet ) {
+ checkSet = set;
+ }
+
+ if ( !checkSet ) {
+ throw "Syntax error, unrecognized expression: " + (cur || selector);
+ }
+
+ if ( toString.call(checkSet) === "[object Array]" ) {
+ if ( !prune ) {
+ results.push.apply( results, checkSet );
+ } else if ( context.nodeType === 1 ) {
+ for ( var i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
+ results.push( set[i] );
+ }
+ }
+ } else {
+ for ( var i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+ results.push( set[i] );
+ }
+ }
+ }
+ } else {
+ makeArray( checkSet, results );
+ }
+
+ if ( extra ) {
+ Sizzle( extra, context, results, seed );
+
+ if ( sortOrder ) {
+ hasDuplicate = false;
+ results.sort(sortOrder);
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[i-1] ) {
+ results.splice(i--, 1);
+ }
+ }
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.matches = function(expr, set){
+ return Sizzle(expr, null, null, set);
+};
+
+Sizzle.find = function(expr, context, isXML){
+ var set, match;
+
+ if ( !expr ) {
+ return [];
+ }
+
+ for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+ var type = Expr.order[i], match;
+
+ if ( (match = Expr.match[ type ].exec( expr )) ) {
+ var left = RegExp.leftContext;
+
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
+ match[1] = (match[1] || "").replace(/\\/g, "");
+ set = Expr.find[ type ]( match, context, isXML );
+ if ( set != null ) {
+ expr = expr.replace( Expr.match[ type ], "" );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( !set ) {
+ set = context.getElementsByTagName("*");
+ }
+
+ return {set: set, expr: expr};
+};
+
+Sizzle.filter = function(expr, set, inplace, not){
+ var old = expr, result = [], curLoop = set, match, anyFound,
+ isXMLFilter = set && set[0] && isXML(set[0]);
+
+ while ( expr && set.length ) {
+ for ( var type in Expr.filter ) {
+ if ( (match = Expr.match[ type ].exec( expr )) != null ) {
+ var filter = Expr.filter[ type ], found, item;
+ anyFound = false;
+
+ if ( curLoop == result ) {
+ result = [];
+ }
+
+ if ( Expr.preFilter[ type ] ) {
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+ if ( !match ) {
+ anyFound = found = true;
+ } else if ( match === true ) {
+ continue;
+ }
+ }
+
+ if ( match ) {
+ for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+ if ( item ) {
+ found = filter( item, match, i, curLoop );
+ var pass = not ^ !!found;
+
+ if ( inplace && found != null ) {
+ if ( pass ) {
+ anyFound = true;
+ } else {
+ curLoop[i] = false;
+ }
+ } else if ( pass ) {
+ result.push( item );
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if ( found !== undefined ) {
+ if ( !inplace ) {
+ curLoop = result;
+ }
+
+ expr = expr.replace( Expr.match[ type ], "" );
+
+ if ( !anyFound ) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ // Improper expression
+ if ( expr == old ) {
+ if ( anyFound == null ) {
+ throw "Syntax error, unrecognized expression: " + expr;
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+};
+
+var Expr = Sizzle.selectors = {
+ order: [ "ID", "NAME", "TAG" ],
+ match: {
+ ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
+ },
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+ attrHandle: {
+ href: function(elem){
+ return elem.getAttribute("href");
+ }
+ },
+ relative: {
+ "+": function(checkSet, part, isXML){
+ var isPartStr = typeof part === "string",
+ isTag = isPartStr && !/\W/.test(part),
+ isPartStrNotTag = isPartStr && !isTag;
+
+ if ( isTag && !isXML ) {
+ part = part.toUpperCase();
+ }
+
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+ if ( (elem = checkSet[i]) ) {
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
+ elem || false :
+ elem === part;
+ }
+ }
+
+ if ( isPartStrNotTag ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ },
+ ">": function(checkSet, part, isXML){
+ var isPartStr = typeof part === "string";
+
+ if ( isPartStr && !/\W/.test(part) ) {
+ part = isXML ? part : part.toUpperCase();
+
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName === part ? parent : false;
+ }
+ }
+ } else {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ checkSet[i] = isPartStr ?
+ elem.parentNode :
+ elem.parentNode === part;
+ }
+ }
+
+ if ( isPartStr ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ }
+ },
+ "": function(checkSet, part, isXML){
+ var doneName = done++, checkFn = dirCheck;
+
+ if ( !part.match(/\W/) ) {
+ var nodeCheck = part = isXML ? part : part.toUpperCase();
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
+ },
+ "~": function(checkSet, part, isXML){
+ var doneName = done++, checkFn = dirCheck;
+
+ if ( typeof part === "string" && !part.match(/\W/) ) {
+ var nodeCheck = part = isXML ? part : part.toUpperCase();
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
+ }
+ },
+ find: {
+ ID: function(match, context, isXML){
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ return m ? [m] : [];
+ }
+ },
+ NAME: function(match, context, isXML){
+ if ( typeof context.getElementsByName !== "undefined" ) {
+ var ret = [], results = context.getElementsByName(match[1]);
+
+ for ( var i = 0, l = results.length; i < l; i++ ) {
+ if ( results[i].getAttribute("name") === match[1] ) {
+ ret.push( results[i] );
+ }
+ }
+
+ return ret.length === 0 ? null : ret;
+ }
+ },
+ TAG: function(match, context){
+ return context.getElementsByTagName(match[1]);
+ }
+ },
+ preFilter: {
+ CLASS: function(match, curLoop, inplace, result, not, isXML){
+ match = " " + match[1].replace(/\\/g, "") + " ";
+
+ if ( isXML ) {
+ return match;
+ }
+
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+ if ( elem ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
+ if ( !inplace )
+ result.push( elem );
+ } else if ( inplace ) {
+ curLoop[i] = false;
+ }
+ }
+ }
+
+ return false;
+ },
+ ID: function(match){
+ return match[1].replace(/\\/g, "");
+ },
+ TAG: function(match, curLoop){
+ for ( var i = 0; curLoop[i] === false; i++ ){}
+ return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
+ },
+ CHILD: function(match){
+ if ( match[1] == "nth" ) {
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
+ match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+ // calculate the numbers (first)n+(last) including if they are negative
+ match[2] = (test[1] + (test[2] || 1)) - 0;
+ match[3] = test[3] - 0;
+ }
+
+ // TODO: Move to normal caching system
+ match[0] = done++;
+
+ return match;
+ },
+ ATTR: function(match, curLoop, inplace, result, not, isXML){
+ var name = match[1].replace(/\\/g, "");
+
+ if ( !isXML && Expr.attrMap[name] ) {
+ match[1] = Expr.attrMap[name];
+ }
+
+ if ( match[2] === "~=" ) {
+ match[4] = " " + match[4] + " ";
+ }
+
+ return match;
+ },
+ PSEUDO: function(match, curLoop, inplace, result, not){
+ if ( match[1] === "not" ) {
+ // If we're dealing with a complex expression, or a simple one
+ if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {
+ match[3] = Sizzle(match[3], null, null, curLoop);
+ } else {
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+ if ( !inplace ) {
+ result.push.apply( result, ret );
+ }
+ return false;
+ }
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+ return true;
+ }
+
+ return match;
+ },
+ POS: function(match){
+ match.unshift( true );
+ return match;
+ }
+ },
+ filters: {
+ enabled: function(elem){
+ return elem.disabled === false && elem.type !== "hidden";
+ },
+ disabled: function(elem){
+ return elem.disabled === true;
+ },
+ checked: function(elem){
+ return elem.checked === true;
+ },
+ selected: function(elem){
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ elem.parentNode.selectedIndex;
+ return elem.selected === true;
+ },
+ parent: function(elem){
+ return !!elem.firstChild;
+ },
+ empty: function(elem){
+ return !elem.firstChild;
+ },
+ has: function(elem, i, match){
+ return !!Sizzle( match[3], elem ).length;
+ },
+ header: function(elem){
+ return /h\d/i.test( elem.nodeName );
+ },
+ text: function(elem){
+ return "text" === elem.type;
+ },
+ radio: function(elem){
+ return "radio" === elem.type;
+ },
+ checkbox: function(elem){
+ return "checkbox" === elem.type;
+ },
+ file: function(elem){
+ return "file" === elem.type;
+ },
+ password: function(elem){
+ return "password" === elem.type;
+ },
+ submit: function(elem){
+ return "submit" === elem.type;
+ },
+ image: function(elem){
+ return "image" === elem.type;
+ },
+ reset: function(elem){
+ return "reset" === elem.type;
+ },
+ button: function(elem){
+ return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
+ },
+ input: function(elem){
+ return /input|select|textarea|button/i.test(elem.nodeName);
+ }
+ },
+ setFilters: {
+ first: function(elem, i){
+ return i === 0;
+ },
+ last: function(elem, i, match, array){
+ return i === array.length - 1;
+ },
+ even: function(elem, i){
+ return i % 2 === 0;
+ },
+ odd: function(elem, i){
+ return i % 2 === 1;
+ },
+ lt: function(elem, i, match){
+ return i < match[3] - 0;
+ },
+ gt: function(elem, i, match){
+ return i > match[3] - 0;
+ },
+ nth: function(elem, i, match){
+ return match[3] - 0 == i;
+ },
+ eq: function(elem, i, match){
+ return match[3] - 0 == i;
+ }
+ },
+ filter: {
+ PSEUDO: function(elem, match, i, array){
+ var name = match[1], filter = Expr.filters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ } else if ( name === "contains" ) {
+ return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
+ } else if ( name === "not" ) {
+ var not = match[3];
+
+ for ( var i = 0, l = not.length; i < l; i++ ) {
+ if ( not[i] === elem ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ },
+ CHILD: function(elem, match){
+ var type = match[1], node = elem;
+ switch (type) {
+ case 'only':
+ case 'first':
+ while (node = node.previousSibling) {
+ if ( node.nodeType === 1 ) return false;
+ }
+ if ( type == 'first') return true;
+ node = elem;
+ case 'last':
+ while (node = node.nextSibling) {
+ if ( node.nodeType === 1 ) return false;
+ }
+ return true;
+ case 'nth':
+ var first = match[2], last = match[3];
+
+ if ( first == 1 && last == 0 ) {
+ return true;
+ }
+
+ var doneName = match[0],
+ parent = elem.parentNode;
+
+ if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
+ var count = 0;
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ node.nodeIndex = ++count;
+ }
+ }
+ parent.sizcache = doneName;
+ }
+
+ var diff = elem.nodeIndex - last;
+ if ( first == 0 ) {
+ return diff == 0;
+ } else {
+ return ( diff % first == 0 && diff / first >= 0 );
+ }
+ }
+ },
+ ID: function(elem, match){
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
+ },
+ TAG: function(elem, match){
+ return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
+ },
+ CLASS: function(elem, match){
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
+ .indexOf( match ) > -1;
+ },
+ ATTR: function(elem, match){
+ var name = match[1],
+ result = Expr.attrHandle[ name ] ?
+ Expr.attrHandle[ name ]( elem ) :
+ elem[ name ] != null ?
+ elem[ name ] :
+ elem.getAttribute( name ),
+ value = result + "",
+ type = match[2],
+ check = match[4];
+
+ return result == null ?
+ type === "!=" :
+ type === "=" ?
+ value === check :
+ type === "*=" ?
+ value.indexOf(check) >= 0 :
+ type === "~=" ?
+ (" " + value + " ").indexOf(check) >= 0 :
+ !check ?
+ value && result !== false :
+ type === "!=" ?
+ value != check :
+ type === "^=" ?
+ value.indexOf(check) === 0 :
+ type === "$=" ?
+ value.substr(value.length - check.length) === check :
+ type === "|=" ?
+ value === check || value.substr(0, check.length + 1) === check + "-" :
+ false;
+ },
+ POS: function(elem, match, i, array){
+ var name = match[2], filter = Expr.setFilters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ }
+ }
+ }
+};
+
+var origPOS = Expr.match.POS;
+
+for ( var type in Expr.match ) {
+ Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
+}
+
+var makeArray = function(array, results) {
+ array = Array.prototype.slice.call( array );
+
+ if ( results ) {
+ results.push.apply( results, array );
+ return results;
+ }
+
+ return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+try {
+ Array.prototype.slice.call( document.documentElement.childNodes );
+
+// Provide a fallback method if it does not work
+} catch(e){
+ makeArray = function(array, results) {
+ var ret = results || [];
+
+ if ( toString.call(array) === "[object Array]" ) {
+ Array.prototype.push.apply( ret, array );
+ } else {
+ if ( typeof array.length === "number" ) {
+ for ( var i = 0, l = array.length; i < l; i++ ) {
+ ret.push( array[i] );
+ }
+ } else {
+ for ( var i = 0; array[i]; i++ ) {
+ ret.push( array[i] );
+ }
+ }
+ }
+
+ return ret;
+ };
+}
+
+var sortOrder;
+
+if ( document.documentElement.compareDocumentPosition ) {
+ sortOrder = function( a, b ) {
+ var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+} else if ( "sourceIndex" in document.documentElement ) {
+ sortOrder = function( a, b ) {
+ var ret = a.sourceIndex - b.sourceIndex;
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+} else if ( document.createRange ) {
+ sortOrder = function( a, b ) {
+ var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
+ aRange.selectNode(a);
+ aRange.collapse(true);
+ bRange.selectNode(b);
+ bRange.collapse(true);
+ var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+}
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+ // We're going to inject a fake input element with a specified name
+ var form = document.createElement("form"),
+ id = "script" + (new Date).getTime();
+ form.innerHTML = "<input name='" + id + "'/>";
+
+ // Inject it into the root element, check its status, and remove it quickly
+ var root = document.documentElement;
+ root.insertBefore( form, root.firstChild );
+
+ // The workaround has to do additional checks after a getElementById
+ // Which slows things down for other browsers (hence the branching)
+ if ( !!document.getElementById( id ) ) {
+ Expr.find.ID = function(match, context, isXML){
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
+ }
+ };
+
+ Expr.filter.ID = function(elem, match){
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+ return elem.nodeType === 1 && node && node.nodeValue === match;
+ };
+ }
+
+ root.removeChild( form );
+})();
+
+(function(){
+ // Check to see if the browser returns only elements
+ // when doing getElementsByTagName("*")
+
+ // Create a fake element
+ var div = document.createElement("div");
+ div.appendChild( document.createComment("") );
+
+ // Make sure no comments are found
+ if ( div.getElementsByTagName("*").length > 0 ) {
+ Expr.find.TAG = function(match, context){
+ var results = context.getElementsByTagName(match[1]);
+
+ // Filter out possible comments
+ if ( match[1] === "*" ) {
+ var tmp = [];
+
+ for ( var i = 0; results[i]; i++ ) {
+ if ( results[i].nodeType === 1 ) {
+ tmp.push( results[i] );
+ }
+ }
+
+ results = tmp;
+ }
+
+ return results;
+ };
+ }
+
+ // Check to see if an attribute returns normalized href attributes
+ div.innerHTML = "<a href='#'></a>";
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+ div.firstChild.getAttribute("href") !== "#" ) {
+ Expr.attrHandle.href = function(elem){
+ return elem.getAttribute("href", 2);
+ };
+ }
+})();
+
+if ( document.querySelectorAll ) (function(){
+ var oldSizzle = Sizzle, div = document.createElement("div");
+ div.innerHTML = "<p class='TEST'></p>";
+
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+ return;
+ }
+
+ Sizzle = function(query, context, extra, seed){
+ context = context || document;
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if ( !seed && context.nodeType === 9 && !isXML(context) ) {
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(e){}
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
+
+ Sizzle.find = oldSizzle.find;
+ Sizzle.filter = oldSizzle.filter;
+ Sizzle.selectors = oldSizzle.selectors;
+ Sizzle.matches = oldSizzle.matches;
+})();
+
+if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
+ var div = document.createElement("div");
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+ // Opera can't find a second classname (in 9.6)
+ if ( div.getElementsByClassName("e").length === 0 )
+ return;
+
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
+ div.lastChild.className = "e";
+
+ if ( div.getElementsByClassName("e").length === 1 )
+ return;
+
+ Expr.order.splice(1, 0, "CLASS");
+ Expr.find.CLASS = function(match, context, isXML) {
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+ return context.getElementsByClassName(match[1]);
+ }
+ };
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ var sibDir = dir == "previousSibling" && !isXML;
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ if ( sibDir && elem.nodeType === 1 ){
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+ elem = elem[dir];
+ var match = false;
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 && !isXML ){
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( elem.nodeName === cur ) {
+ match = elem;
+ break;
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ var sibDir = dir == "previousSibling" && !isXML;
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ if ( sibDir && elem.nodeType === 1 ) {
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+ elem = elem[dir];
+ var match = false;
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 ) {
+ if ( !isXML ) {
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+ if ( typeof cur !== "string" ) {
+ if ( elem === cur ) {
+ match = true;
+ break;
+ }
+
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+ match = elem;
+ break;
+ }
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+var contains = document.compareDocumentPosition ? function(a, b){
+ return a.compareDocumentPosition(b) & 16;
+} : function(a, b){
+ return a !== b && (a.contains ? a.contains(b) : true);
+};
+
+var isXML = function(elem){
+ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
+ !!elem.ownerDocument && isXML( elem.ownerDocument );
+};
+
+var posProcess = function(selector, context){
+ var tmpSet = [], later = "", match,
+ root = context.nodeType ? [context] : context;
+
+ // Position selectors must be done after the filter
+ // And so must :not(positional) so we move all PSEUDOs to the end
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+ later += match[0];
+ selector = selector.replace( Expr.match.PSEUDO, "" );
+ }
+
+ selector = Expr.relative[selector] ? selector + "*" : selector;
+
+ for ( var i = 0, l = root.length; i < l; i++ ) {
+ Sizzle( selector, root[i], tmpSet );
+ }
+
+ return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+jQuery.find = Sizzle;
+jQuery.filter = Sizzle.filter;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+
+Sizzle.selectors.filters.hidden = function(elem){
+ return elem.offsetWidth === 0 || elem.offsetHeight === 0;
+};
+
+Sizzle.selectors.filters.visible = function(elem){
+ return elem.offsetWidth > 0 || elem.offsetHeight > 0;
+};
+
+Sizzle.selectors.filters.animated = function(elem){
+ return jQuery.grep(jQuery.timers, function(fn){
+ return elem === fn.elem;
+ }).length;
+};
+
+jQuery.multiFilter = function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return Sizzle.matches(expr, elems);
+};
+
+jQuery.dir = function( elem, dir ){
+ var matched = [], cur = elem[dir];
+ while ( cur && cur != document ) {
+ if ( cur.nodeType == 1 )
+ matched.push( cur );
+ cur = cur[dir];
+ }
+ return matched;
+};
+
+jQuery.nth = function(cur, result, dir, elem){
+ result = result || 1;
+ var num = 0;
+
+ for ( ; cur; cur = cur[dir] )
+ if ( cur.nodeType == 1 && ++num == result )
+ break;
+
+ return cur;
+};
+
+jQuery.sibling = function(n, elem){
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType == 1 && n != elem )
+ r.push( n );
+ }
+
+ return r;
+};
+
+return;
+
+window.Sizzle = Sizzle;
+
+})();
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
+
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function(elem, types, handler, data) {
+ if ( elem.nodeType == 3 || elem.nodeType == 8 )
+ return;
+
+ // For whatever reason, IE has trouble passing the window object
+ // around, causing it to be cloned in the process
+ if ( elem.setInterval && elem != window )
+ elem = window;
+
+ // Make sure that the function being executed has a unique ID
+ if ( !handler.guid )
+ handler.guid = this.guid++;
+
+ // if data is passed, bind to handler
+ if ( data !== undefined ) {
+ // Create temporary function pointer to original handler
+ var fn = handler;
+
+ // Create unique handler function, wrapped around original handler
+ handler = this.proxy( fn );
+
+ // Store data in unique handler
+ handler.data = data;
+ }
+
+ // Init the element's event structure
+ var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
+ handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
+ // Handle the second event of a trigger and when
+ // an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
+ jQuery.event.handle.apply(arguments.callee.elem, arguments) :
+ undefined;
+ });
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native
+ // event in IE.
+ handle.elem = elem;
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ jQuery.each(types.split(/\s+/), function(index, type) {
+ // Namespaced event handlers
+ var namespaces = type.split(".");
+ type = namespaces.shift();
+ handler.type = namespaces.slice().sort().join(".");
+
+ // Get the current list of functions bound to this event
+ var handlers = events[type];
+
+ if ( jQuery.event.specialAll[type] )
+ jQuery.event.specialAll[type].setup.call(elem, data, namespaces);
+
+ // Init the event handler queue
+ if (!handlers) {
+ handlers = events[type] = {};
+
+ // Check for a special event handler
+ // Only use addEventListener/attachEvent if the special
+ // events handler returns false
+ if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {
+ // Bind the global event handler to the element
+ if (elem.addEventListener)
+ elem.addEventListener(type, handle, false);
+ else if (elem.attachEvent)
+ elem.attachEvent("on" + type, handle);
+ }
+ }
+
+ // Add the function to the element's handler list
+ handlers[handler.guid] = handler;
+
+ // Keep track of which events have been used, for global triggering
+ jQuery.event.global[type] = true;
+ });
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ guid: 1,
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function(elem, types, handler) {
+ // don't do events on text and comment nodes
+ if ( elem.nodeType == 3 || elem.nodeType == 8 )
+ return;
+
+ var events = jQuery.data(elem, "events"), ret, index;
+
+ if ( events ) {
+ // Unbind all events for the element
+ if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") )
+ for ( var type in events )
+ this.remove( elem, type + (types || "") );
+ else {
+ // types is actually an event object here
+ if ( types.type ) {
+ handler = types.handler;
+ types = types.type;
+ }
+
+ // Handle multiple events seperated by a space
+ // jQuery(...).unbind("mouseover mouseout", fn);
+ jQuery.each(types.split(/\s+/), function(index, type){
+ // Namespaced event handlers
+ var namespaces = type.split(".");
+ type = namespaces.shift();
+ var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
+
+ if ( events[type] ) {
+ // remove the given handler for the given type
+ if ( handler )
+ delete events[type][handler.guid];
+
+ // remove all handlers for the given type
+ else
+ for ( var handle in events[type] )
+ // Handle the removal of namespaced events
+ if ( namespace.test(events[type][handle].type) )
+ delete events[type][handle];
+
+ if ( jQuery.event.specialAll[type] )
+ jQuery.event.specialAll[type].teardown.call(elem, namespaces);
+
+ // remove generic event handler if no more handlers exist
+ for ( ret in events[type] ) break;
+ if ( !ret ) {
+ if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {
+ if (elem.removeEventListener)
+ elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
+ else if (elem.detachEvent)
+ elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
+ }
+ ret = null;
+ delete events[type];
+ }
+ }
+ });
+ }
+
+ // Remove the expando if it's no longer used
+ for ( ret in events ) break;
+ if ( !ret ) {
+ var handle = jQuery.data( elem, "handle" );
+ if ( handle ) handle.elem = null;
+ jQuery.removeData( elem, "events" );
+ jQuery.removeData( elem, "handle" );
+ }
+ }
+ },
+
+ // bubbling is internal
+ trigger: function( event, data, elem, bubbling ) {
+ // Event object or event type
+ var type = event.type || event;
+
+ if( !bubbling ){
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[expando] ? event :
+ // Object literal
+ jQuery.extend( jQuery.Event(type), event ) :
+ // Just the event type (string)
+ jQuery.Event(type);
+
+ if ( type.indexOf("!") >= 0 ) {
+ event.type = type = type.slice(0, -1);
+ event.exclusive = true;
+ }
+
+ // Handle a global trigger
+ if ( !elem ) {
+ // Don't bubble custom events when global (to avoid too much overhead)
+ event.stopPropagation();
+ // Only trigger if we've ever bound an event for it
+ if ( this.global[type] )
+ jQuery.each( jQuery.cache, function(){
+ if ( this.events && this.events[type] )
+ jQuery.event.trigger( event, data, this.handle.elem );
+ });
+ }
+
+ // Handle triggering a single element
+
+ // don't do events on text and comment nodes
+ if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )
+ return undefined;
+
+ // Clean up in case it is reused
+ event.result = undefined;
+ event.target = elem;
+
+ // Clone the incoming data, if any
+ data = jQuery.makeArray(data);
+ data.unshift( event );
+ }
+
+ event.currentTarget = elem;
+
+ // Trigger the event, it is assumed that "handle" is a function
+ var handle = jQuery.data(elem, "handle");
+ if ( handle )
+ handle.apply( elem, data );
+
+ // Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
+ if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
+ event.result = false;
+
+ // Trigger the native events (except for clicks on links)
+ if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
+ this.triggered = true;
+ try {
+ elem[ type ]();
+ // prevent IE from throwing an error for some hidden elements
+ } catch (e) {}
+ }
+
+ this.triggered = false;
+
+ if ( !event.isPropagationStopped() ) {
+ var parent = elem.parentNode || elem.ownerDocument;
+ if ( parent )
+ jQuery.event.trigger(event, data, parent, true);
+ }
+ },
+
+ handle: function(event) {
+ // returned undefined or false
+ var all, handlers;
+
+ event = arguments[0] = jQuery.event.fix( event || window.event );
+ event.currentTarget = this;
+
+ // Namespaced event handlers
+ var namespaces = event.type.split(".");
+ event.type = namespaces.shift();
+
+ // Cache this now, all = true means, any handler
+ all = !namespaces.length && !event.exclusive;
+
+ var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
+
+ handlers = ( jQuery.data(this, "events") || {} )[event.type];
+
+ for ( var j in handlers ) {
+ var handler = handlers[j];
+
+ // Filter the functions by class
+ if ( all || namespace.test(handler.type) ) {
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handler;
+ event.data = handler.data;
+
+ var ret = handler.apply(this, arguments);
+
+ if( ret !== undefined ){
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+
+ if( event.isImmediatePropagationStopped() )
+ break;
+
+ }
+ }
+ },
+
+ props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+
+ fix: function(event) {
+ if ( event[expando] )
+ return event;
+
+ // store a copy of the original event object
+ // and "clone" to set read-only properties
+ var originalEvent = event;
+ event = jQuery.Event( originalEvent );
+
+ for ( var i = this.props.length, prop; i; ){
+ prop = this.props[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary
+ if ( !event.target )
+ event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
+
+ // check if target is a textnode (safari)
+ if ( event.target.nodeType == 3 )
+ event.target = event.target.parentNode;
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && event.fromElement )
+ event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && event.clientX != null ) {
+ var doc = document.documentElement, body = document.body;
+ event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
+ event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
+ }
+
+ // Add which for key events
+ if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
+ event.which = event.charCode || event.keyCode;
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if ( !event.metaKey && event.ctrlKey )
+ event.metaKey = event.ctrlKey;
+
+ // Add which for click: 1 == left; 2 == middle; 3 == right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && event.button )
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+
+ return event;
+ },
+
+ proxy: function( fn, proxy ){
+ proxy = proxy || function(){ return fn.apply(this, arguments); };
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
+ // So proxy can be declared as an argument
+ return proxy;
+ },
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: bindReady,
+ teardown: function() {}
+ }
+ },
+
+ specialAll: {
+ live: {
+ setup: function( selector, namespaces ){
+ jQuery.event.add( this, namespaces[0], liveHandler );
+ },
+ teardown: function( namespaces ){
+ if ( namespaces.length ) {
+ var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
+
+ jQuery.each( (jQuery.data(this, "events").live || {}), function(){
+ if ( name.test(this.type) )
+ remove++;
+ });
+
+ if ( remove < 1 )
+ jQuery.event.remove( this, namespaces[0], liveHandler );
+ }
+ }
+ }
+ }
+};
+
+jQuery.Event = function( src ){
+ // Allow instantiation without the 'new' keyword
+ if( !this.preventDefault )
+ return new jQuery.Event(src);
+
+ // Event object
+ if( src && src.type ){
+ this.originalEvent = src;
+ this.type = src.type;
+ // Event type
+ }else
+ this.type = src;
+
+ // timeStamp is buggy for some events on Firefox(#3843)
+ // So we won't rely on the native value
+ this.timeStamp = now();
+
+ // Mark it as fixed
+ this[expando] = true;
+};
+
+function returnFalse(){
+ return false;
+}
+function returnTrue(){
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if( !e )
+ return;
+ // if preventDefault exists run it on the original event
+ if (e.preventDefault)
+ e.preventDefault();
+ // otherwise set the returnValue property of the original event to false (IE)
+ e.returnValue = false;
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if( !e )
+ return;
+ // if stopPropagation exists run it on the original event
+ if (e.stopPropagation)
+ e.stopPropagation();
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation:function(){
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function(event) {
+ // Check if mouse(over|out) are still within the same parent element
+ var parent = event.relatedTarget;
+ // Traverse up the tree
+ while ( parent && parent != this )
+ try { parent = parent.parentNode; }
+ catch(e) { parent = this; }
+
+ if( parent != this ){
+ // set the correct event type
+ event.type = event.data;
+ // handle event if we actually just moused on to a non sub-element
+ jQuery.event.handle.apply( this, arguments );
+ }
+};
+
+jQuery.each({
+ mouseover: 'mouseenter',
+ mouseout: 'mouseleave'
+}, function( orig, fix ){
+ jQuery.event.special[ fix ] = {
+ setup: function(){
+ jQuery.event.add( this, orig, withinElement, fix );
+ },
+ teardown: function(){
+ jQuery.event.remove( this, orig, withinElement );
+ }
+ };
+});
+
+jQuery.fn.extend({
+ bind: function( type, data, fn ) {
+ return type == "unload" ? this.one(type, data, fn) : this.each(function(){
+ jQuery.event.add( this, type, fn || data, fn && data );
+ });
+ },
+
+ one: function( type, data, fn ) {
+ var one = jQuery.event.proxy( fn || data, function(event) {
+ jQuery(this).unbind(event, one);
+ return (fn || data).apply( this, arguments );
+ });
+ return this.each(function(){
+ jQuery.event.add( this, type, one, fn && data);
+ });
+ },
+
+ unbind: function( type, fn ) {
+ return this.each(function(){
+ jQuery.event.remove( this, type, fn );
+ });
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function(){
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+
+ triggerHandler: function( type, data ) {
+ if( this[0] ){
+ var event = jQuery.Event(type);
+ event.preventDefault();
+ event.stopPropagation();
+ jQuery.event.trigger( event, data, this[0] );
+ return event.result;
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments, i = 1;
+
+ // link all the functions, so any of them can unbind this click handler
+ while( i < args.length )
+ jQuery.event.proxy( fn, args[i++] );
+
+ return this.click( jQuery.event.proxy( fn, function(event) {
+ // Figure out which function to execute
+ this.lastToggle = ( this.lastToggle || 0 ) % i;
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ this.lastToggle++ ].apply( this, arguments ) || false;
+ }));
+ },
+
+ hover: function(fnOver, fnOut) {
+ return this.mouseenter(fnOver).mouseleave(fnOut);
+ },
+
+ ready: function(fn) {
+ // Attach the listeners
+ bindReady();
+
+ // If the DOM is already ready
+ if ( jQuery.isReady )
+ // Execute the function immediately
+ fn.call( document, jQuery );
+
+ // Otherwise, remember the function for later
+ else
+ // Add the function to the wait list
+ jQuery.readyList.push( fn );
+
+ return this;
+ },
+
+ live: function( type, fn ){
+ var proxy = jQuery.event.proxy( fn );
+ proxy.guid += this.selector + type;
+
+ jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );
+
+ return this;
+ },
+
+ die: function( type, fn ){
+ jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
+ return this;
+ }
+});
+
+function liveHandler( event ){
+ var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"),
+ stop = true,
+ elems = [];
+
+ jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
+ if ( check.test(fn.type) ) {
+ var elem = jQuery(event.target).closest(fn.data)[0];
+ if ( elem )
+ elems.push({ elem: elem, fn: fn });
+ }
+ });
+
+ elems.sort(function(a,b) {
+ return jQuery.data(a.elem, "closest") - jQuery.data(b.elem, "closest");
+ });
+
+ jQuery.each(elems, function(){
+ if ( this.fn.call(this.elem, event, this.fn.data) === false )
+ return (stop = false);
+ });
+
+ return stop;
+}
+
+function liveConvert(type, selector){
+ return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join(".");
+}
+
+jQuery.extend({
+ isReady: false,
+ readyList: [],
+ // Handle when the DOM is ready
+ ready: function() {
+ // Make sure that the DOM is not already loaded
+ if ( !jQuery.isReady ) {
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If there are functions bound, to execute
+ if ( jQuery.readyList ) {
+ // Execute all of them
+ jQuery.each( jQuery.readyList, function(){
+ this.call( document, jQuery );
+ });
+
+ // Reset the list of functions
+ jQuery.readyList = null;
+ }
+
+ // Trigger any bound ready events
+ jQuery(document).triggerHandler("ready");
+ }
+ }
+});
+
+var readyBound = false;
+
+function bindReady(){
+ if ( readyBound ) return;
+ readyBound = true;
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", function(){
+ document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
+ jQuery.ready();
+ }, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent("onreadystatechange", function(){
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", arguments.callee );
+ jQuery.ready();
+ }
+ });
+
+ // If IE and not an iframe
+ // continually check to see if the document is ready
+ if ( document.documentElement.doScroll && window == window.top ) (function(){
+ if ( jQuery.isReady ) return;
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch( error ) {
+ setTimeout( arguments.callee, 0 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+ })();
+ }
+
+ // A fallback to window.onload, that will always work
+ jQuery.event.add( window, "load", jQuery.ready );
+}
+
+jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
+ "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
+ "change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){
+
+ // Handle event binding
+ jQuery.fn[name] = function(fn){
+ return fn ? this.bind(name, fn) : this.trigger(name);
+ };
+});
+
+// Prevent memory leaks in IE
+// And prevent errors on refresh with events like mouseover in other browsers
+// Window isn't included so as not to unbind existing unload events
+jQuery( window ).bind( 'unload', function(){
+ for ( var id in jQuery.cache )
+ // Skip the window
+ if ( id != 1 && jQuery.cache[ id ].handle )
+ jQuery.event.remove( jQuery.cache[ id ].handle.elem );
+});
+(function(){
+
+ jQuery.support = {};
+
+ var root = document.documentElement,
+ script = document.createElement("script"),
+ div = document.createElement("div"),
+ id = "script" + (new Date).getTime();
+
+ div.style.display = "none";
+ div.innerHTML = ' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
+
+ var all = div.getElementsByTagName("*"),
+ a = div.getElementsByTagName("a")[0];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return;
+ }
+
+ jQuery.support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: div.firstChild.nodeType == 3,
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that you can get all elements in an <object> element
+ // IE 7 always returns no results
+ objectAll: !!div.getElementsByTagName("object")[0]
+ .getElementsByTagName("*").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText insted)
+ style: /red/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: a.getAttribute("href") === "/a",
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ opacity: a.style.opacity === "0.5",
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Will be defined later
+ scriptEval: false,
+ noCloneEvent: true,
+ boxModel: null
+ };
+
+ script.type = "text/javascript";
+ try {
+ script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+ } catch(e){}
+
+ root.insertBefore( script, root.firstChild );
+
+ // Make sure that the execution of code works by injecting a script
+ // tag with appendChild/createTextNode
+ // (IE doesn't support this, fails, and uses .text instead)
+ if ( window[ id ] ) {
+ jQuery.support.scriptEval = true;
+ delete window[ id ];
+ }
+
+ root.removeChild( script );
+
+ if ( div.attachEvent && div.fireEvent ) {
+ div.attachEvent("onclick", function(){
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ jQuery.support.noCloneEvent = false;
+ div.detachEvent("onclick", arguments.callee);
+ });
+ div.cloneNode(true).fireEvent("onclick");
+ }
+
+ // Figure out if the W3C box model works as expected
+ // document.body must exist before we can do this
+ jQuery(function(){
+ var div = document.createElement("div");
+ div.style.width = div.style.paddingLeft = "1px";
+
+ document.body.appendChild( div );
+ jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+ document.body.removeChild( div ).style.display = 'none';
+ });
+})();
+
+var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat";
+
+jQuery.props = {
+ "for": "htmlFor",
+ "class": "className",
+ "float": styleFloat,
+ cssFloat: styleFloat,
+ styleFloat: styleFloat,
+ readonly: "readOnly",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ rowspan: "rowSpan",
+ tabindex: "tabIndex"
+};
+jQuery.fn.extend({
+ // Keep a copy of the old load
+ _load: jQuery.fn.load,
+
+ load: function( url, params, callback ) {
+ if ( typeof url !== "string" )
+ return this._load( url );
+
+ var off = url.indexOf(" ");
+ if ( off >= 0 ) {
+ var selector = url.slice(off, url.length);
+ url = url.slice(0, off);
+ }
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params )
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = null;
+
+ // Otherwise, build a param string
+ } else if( typeof params === "object" ) {
+ params = jQuery.param( params );
+ type = "POST";
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ complete: function(res, status){
+ // If successful, inject the HTML into all the matched elements
+ if ( status == "success" || status == "notmodified" )
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div/>")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ res.responseText );
+
+ if( callback )
+ self.each( callback, [res.responseText, status, res] );
+ }
+ });
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param(this.serializeArray());
+ },
+ serializeArray: function() {
+ return this.map(function(){
+ return this.elements ? jQuery.makeArray(this.elements) : this;
+ })
+ .filter(function(){
+ return this.name && !this.disabled &&
+ (this.checked || /select|textarea/i.test(this.nodeName) ||
+ /text|hidden|password|search/i.test(this.type));
+ })
+ .map(function(i, elem){
+ var val = jQuery(this).val();
+ return val == null ? null :
+ jQuery.isArray(val) ?
+ jQuery.map( val, function(val, i){
+ return {name: elem.name, value: val};
+ }) :
+ {name: elem.name, value: val};
+ }).get();
+ }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
+ jQuery.fn[o] = function(f){
+ return this.bind(o, f);
+ };
+});
+
+var jsc = now();
+
+jQuery.extend({
+
+ get: function( url, data, callback, type ) {
+ // shift arguments if data argument was ommited
+ if ( jQuery.isFunction( data ) ) {
+ callback = data;
+ data = null;
+ }
+
+ return jQuery.ajax({
+ type: "GET",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get(url, null, callback, "script");
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get(url, data, callback, "json");
+ },
+
+ post: function( url, data, callback, type ) {
+ if ( jQuery.isFunction( data ) ) {
+ callback = data;
+ data = {};
+ }
+
+ return jQuery.ajax({
+ type: "POST",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ ajaxSetup: function( settings ) {
+ jQuery.extend( jQuery.ajaxSettings, settings );
+ },
+
+ ajaxSettings: {
+ url: location.href,
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ username: null,
+ password: null,
+ */
+ // Create the request object; Microsoft failed to properly
+ // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
+ // This function can be overriden by calling jQuery.ajaxSetup
+ xhr:function(){
+ return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
+ },
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ script: "text/javascript, application/javascript",
+ json: "application/json, text/javascript",
+ text: "text/plain",
+ _default: "*/*"
+ }
+ },
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+
+ ajax: function( s ) {
+ // Extend the settings, but re-extend 's' so that it can be
+ // checked again later (in the test suite, specifically)
+ s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
+
+ var jsonp, jsre = /=\?(&|$)/g, status, data,
+ type = s.type.toUpperCase();
+
+ // convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" )
+ s.data = jQuery.param(s.data);
+
+ // Handle JSONP Parameter Callbacks
+ if ( s.dataType == "jsonp" ) {
+ if ( type == "GET" ) {
+ if ( !s.url.match(jsre) )
+ s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?";
+ } else if ( !s.data || !s.data.match(jsre) )
+ s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
+ s.dataType = "json";
+ }
+
+ // Build temporary JSONP function
+ if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
+ jsonp = "jsonp" + jsc++;
+
+ // Replace the =? sequence both in the query string and the data
+ if ( s.data )
+ s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
+ s.url = s.url.replace(jsre, "=" + jsonp + "$1");
+
+ // We need to make sure
+ // that a JSONP style response is executed properly
+ s.dataType = "script";
+
+ // Handle JSONP-style loading
+ window[ jsonp ] = function(tmp){
+ data = tmp;
+ success();
+ complete();
+ // Garbage collect
+ window[ jsonp ] = undefined;
+ try{ delete window[ jsonp ]; } catch(e){}
+ if ( head )
+ head.removeChild( script );
+ };
+ }
+
+ if ( s.dataType == "script" && s.cache == null )
+ s.cache = false;
+
+ if ( s.cache === false && type == "GET" ) {
+ var ts = now();
+ // try replacing _= if it is there
+ var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
+ }
+
+ // If data is available, append data to url for get requests
+ if ( s.data && type == "GET" ) {
+ s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
+
+ // IE likes to send both get and post data, prevent this
+ s.data = null;
+ }
+
+ // Watch for a new set of requests
+ if ( s.global && ! jQuery.active++ )
+ jQuery.event.trigger( "ajaxStart" );
+
+ // Matches an absolute URL, and saves the domain
+ var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url );
+
+ // If we're requesting a remote document
+ // and trying to load JSON or Script with a GET
+ if ( s.dataType == "script" && type == "GET" && parts
+ && ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){
+
+ var head = document.getElementsByTagName("head")[0];
+ var script = document.createElement("script");
+ script.src = s.url;
+ if (s.scriptCharset)
+ script.charset = s.scriptCharset;
+
+ // Handle Script loading
+ if ( !jsonp ) {
+ var done = false;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function(){
+ if ( !done && (!this.readyState ||
+ this.readyState == "loaded" || this.readyState == "complete") ) {
+ done = true;
+ success();
+ complete();
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+ head.removeChild( script );
+ }
+ };
+ }
+
+ head.appendChild(script);
+
+ // We handle everything using the script element injection
+ return undefined;
+ }
+
+ var requestDone = false;
+
+ // Create the request object
+ var xhr = s.xhr();
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if( s.username )
+ xhr.open(type, s.url, s.async, s.username, s.password);
+ else
+ xhr.open(type, s.url, s.async);
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ // Set the correct header, if data is being sent
+ if ( s.data )
+ xhr.setRequestHeader("Content-Type", s.contentType);
+
+ // Set the If-Modified-Since header, if ifModified mode.
+ if ( s.ifModified )
+ xhr.setRequestHeader("If-Modified-Since",
+ jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
+
+ // Set header so the called script knows that it's an XMLHttpRequest
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+
+ // Set the Accepts header for the server, depending on the dataType
+ xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
+ s.accepts[ s.dataType ] + ", */*" :
+ s.accepts._default );
+ } catch(e){}
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active )
+ jQuery.event.trigger( "ajaxStop" );
+ // close opended socket
+ xhr.abort();
+ return false;
+ }
+
+ if ( s.global )
+ jQuery.event.trigger("ajaxSend", [xhr, s]);
+
+ // Wait for a response to come back
+ var onreadystatechange = function(isTimeout){
+ // The request was aborted, clear the interval and decrement jQuery.active
+ if (xhr.readyState == 0) {
+ if (ival) {
+ // clear poll interval
+ clearInterval(ival);
+ ival = null;
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active )
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ // The transfer is complete and the data is available, or the request timed out
+ } else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
+ requestDone = true;
+
+ // clear poll interval
+ if (ival) {
+ clearInterval(ival);
+ ival = null;
+ }
+
+ status = isTimeout == "timeout" ? "timeout" :
+ !jQuery.httpSuccess( xhr ) ? "error" :
+ s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" :
+ "success";
+
+ if ( status == "success" ) {
+ // Watch for, and catch, XML document parse errors
+ try {
+ // process the data (runs the xml through httpData regardless of callback)
+ data = jQuery.httpData( xhr, s.dataType, s );
+ } catch(e) {
+ status = "parsererror";
+ }
+ }
+
+ // Make sure that the request was successful or notmodified
+ if ( status == "success" ) {
+ // Cache Last-Modified header, if ifModified mode.
+ var modRes;
+ try {
+ modRes = xhr.getResponseHeader("Last-Modified");
+ } catch(e) {} // swallow exception thrown by FF if header is not available
+
+ if ( s.ifModified && modRes )
+ jQuery.lastModified[s.url] = modRes;
+
+ // JSONP handles its own success callback
+ if ( !jsonp )
+ success();
+ } else
+ jQuery.handleError(s, xhr, status);
+
+ // Fire the complete handlers
+ complete();
+
+ if ( isTimeout )
+ xhr.abort();
+
+ // Stop memory leaks
+ if ( s.async )
+ xhr = null;
+ }
+ };
+
+ if ( s.async ) {
+ // don't attach the handler to the request, just poll it instead
+ var ival = setInterval(onreadystatechange, 13);
+
+ // Timeout checker
+ if ( s.timeout > 0 )
+ setTimeout(function(){
+ // Check to see if the request is still happening
+ if ( xhr && !requestDone )
+ onreadystatechange( "timeout" );
+ }, s.timeout);
+ }
+
+ // Send the data
+ try {
+ xhr.send(s.data);
+ } catch(e) {
+ jQuery.handleError(s, xhr, null, e);
+ }
+
+ // firefox 1.5 doesn't fire statechange for sync requests
+ if ( !s.async )
+ onreadystatechange();
+
+ function success(){
+ // If a local callback was specified, fire it and pass it the data
+ if ( s.success )
+ s.success( data, status );
+
+ // Fire the global callback
+ if ( s.global )
+ jQuery.event.trigger( "ajaxSuccess", [xhr, s] );
+ }
+
+ function complete(){
+ // Process result
+ if ( s.complete )
+ s.complete(xhr, status);
+
+ // The request was completed
+ if ( s.global )
+ jQuery.event.trigger( "ajaxComplete", [xhr, s] );
+
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active )
+ jQuery.event.trigger( "ajaxStop" );
+ }
+
+ // return XMLHttpRequest to allow aborting the request etc.
+ return xhr;
+ },
+
+ handleError: function( s, xhr, status, e ) {
+ // If a local callback was specified, fire it
+ if ( s.error ) s.error( xhr, status, e );
+
+ // Fire the global callback
+ if ( s.global )
+ jQuery.event.trigger( "ajaxError", [xhr, s, e] );
+ },
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Determines if an XMLHttpRequest was successful or not
+ httpSuccess: function( xhr ) {
+ try {
+ // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
+ return !xhr.status && location.protocol == "file:" ||
+ ( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
+ } catch(e){}
+ return false;
+ },
+
+ // Determines if an XMLHttpRequest returns NotModified
+ httpNotModified: function( xhr, url ) {
+ try {
+ var xhrRes = xhr.getResponseHeader("Last-Modified");
+
+ // Firefox always returns 200. check Last-Modified date
+ return xhr.status == 304 || xhrRes == jQuery.lastModified[url];
+ } catch(e){}
+ return false;
+ },
+
+ httpData: function( xhr, type, s ) {
+ var ct = xhr.getResponseHeader("content-type"),
+ xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
+ data = xml ? xhr.responseXML : xhr.responseText;
+
+ if ( xml && data.documentElement.tagName == "parsererror" )
+ throw "parsererror";
+
+ // Allow a pre-filtering function to sanitize the response
+ // s != null is checked to keep backwards compatibility
+ if( s && s.dataFilter )
+ data = s.dataFilter( data, type );
+
+ // The filter can actually parse the response
+ if( typeof data === "string" ){
+
+ // If the type is "script", eval it in global context
+ if ( type == "script" )
+ jQuery.globalEval( data );
+
+ // Get the JavaScript object, if JSON is used.
+ if ( type == "json" )
+ data = window["eval"]("(" + data + ")");
+ }
+
+ return data;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function( a ) {
+ var s = [ ];
+
+ function add( key, value ){
+ s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
+ };
+
+ // If an array was passed in, assume that it is an array
+ // of form elements
+ if ( jQuery.isArray(a) || a.jquery )
+ // Serialize the form elements
+ jQuery.each( a, function(){
+ add( this.name, this.value );
+ });
+
+ // Otherwise, assume that it's an object of key/value pairs
+ else
+ // Serialize the key/values
+ for ( var j in a )
+ // If the value is an array then the key names need to be repeated
+ if ( jQuery.isArray(a[j]) )
+ jQuery.each( a[j], function(){
+ add( j, this );
+ });
+ else
+ add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );
+
+ // Return the resulting serialization
+ return s.join("&").replace(/%20/g, "+");
+ }
+
+});
+var elemdisplay = {},
+ timerId,
+ fxAttrs = [
+ // height animations
+ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+ // width animations
+ [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+ // opacity animations
+ [ "opacity" ]
+ ];
+
+function genFx( type, num ){
+ var obj = {};
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){
+ obj[ this ] = type;
+ });
+ return obj;
+}
+
+jQuery.fn.extend({
+ show: function(speed,callback){
+ if ( speed ) {
+ return this.animate( genFx("show", 3), speed, callback);
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ var old = jQuery.data(this[i], "olddisplay");
+
+ this[i].style.display = old || "";
+
+ if ( jQuery.css(this[i], "display") === "none" ) {
+ var tagName = this[i].tagName, display;
+
+ if ( elemdisplay[ tagName ] ) {
+ display = elemdisplay[ tagName ];
+ } else {
+ var elem = jQuery("<" + tagName + " />").appendTo("body");
+
+ display = elem.css("display");
+ if ( display === "none" )
+ display = "block";
+
+ elem.remove();
+
+ elemdisplay[ tagName ] = display;
+ }
+
+ jQuery.data(this[i], "olddisplay", display);
+ }
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ this[i].style.display = jQuery.data(this[i], "olddisplay") || "";
+ }
+
+ return this;
+ }
+ },
+
+ hide: function(speed,callback){
+ if ( speed ) {
+ return this.animate( genFx("hide", 3), speed, callback);
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ var old = jQuery.data(this[i], "olddisplay");
+ if ( !old && old !== "none" )
+ jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ this[i].style.display = "none";
+ }
+
+ return this;
+ }
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function( fn, fn2 ){
+ var bool = typeof fn === "boolean";
+
+ return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
+ this._toggle.apply( this, arguments ) :
+ fn == null || bool ?
+ this.each(function(){
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ }) :
+ this.animate(genFx("toggle", 3), fn, fn2);
+ },
+
+ fadeTo: function(speed,to,callback){
+ return this.animate({opacity: to}, speed, callback);
+ },
+
+ animate: function( prop, speed, easing, callback ) {
+ var optall = jQuery.speed(speed, easing, callback);
+
+ return this[ optall.queue === false ? "each" : "queue" ](function(){
+
+ var opt = jQuery.extend({}, optall), p,
+ hidden = this.nodeType == 1 && jQuery(this).is(":hidden"),
+ self = this;
+
+ for ( p in prop ) {
+ if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
+ return opt.complete.call(this);
+
+ if ( ( p == "height" || p == "width" ) && this.style ) {
+ // Store display property
+ opt.display = jQuery.css(this, "display");
+
+ // Make sure that nothing sneaks out
+ opt.overflow = this.style.overflow;
+ }
+ }
+
+ if ( opt.overflow != null )
+ this.style.overflow = "hidden";
+
+ opt.curAnim = jQuery.extend({}, prop);
+
+ jQuery.each( prop, function(name, val){
+ var e = new jQuery.fx( self, opt, name );
+
+ if ( /toggle|show|hide/.test(val) )
+ e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
+ else {
+ var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
+ start = e.cur(true) || 0;
+
+ if ( parts ) {
+ var end = parseFloat(parts[2]),
+ unit = parts[3] || "px";
+
+ // We need to compute starting value
+ if ( unit != "px" ) {
+ self.style[ name ] = (end || 1) + unit;
+ start = ((end || 1) / e.cur(true)) * start;
+ self.style[ name ] = start + unit;
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if ( parts[1] )
+ end = ((parts[1] == "-=" ? -1 : 1) * end) + start;
+
+ e.custom( start, end, unit );
+ } else
+ e.custom( start, val, "" );
+ }
+ });
+
+ // For JS strict compliance
+ return true;
+ });
+ },
+
+ stop: function(clearQueue, gotoEnd){
+ var timers = jQuery.timers;
+
+ if (clearQueue)
+ this.queue([]);
+
+ this.each(function(){
+ // go in reverse order so anything added to the queue during the loop is ignored
+ for ( var i = timers.length - 1; i >= 0; i-- )
+ if ( timers[i].elem == this ) {
+ if (gotoEnd)
+ // force the next step to be the last
+ timers[i](true);
+ timers.splice(i, 1);
+ }
+ });
+
+ // start the next in the queue if the last step wasn't forced
+ if (!gotoEnd)
+ this.dequeue();
+
+ return this;
+ }
+
+});
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show", 1),
+ slideUp: genFx("hide", 1),
+ slideToggle: genFx("toggle", 1),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" }
+}, function( name, props ){
+ jQuery.fn[ name ] = function( speed, callback ){
+ return this.animate( props, speed, callback );
+ };
+});
+
+jQuery.extend({
+
+ speed: function(speed, easing, fn) {
+ var opt = typeof speed === "object" ? speed : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
+
+ // Queueing
+ opt.old = opt.complete;
+ opt.complete = function(){
+ if ( opt.queue !== false )
+ jQuery(this).dequeue();
+ if ( jQuery.isFunction( opt.old ) )
+ opt.old.call( this );
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function( p, n, firstNum, diff ) {
+ return firstNum + diff * p;
+ },
+ swing: function( p, n, firstNum, diff ) {
+ return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
+ }
+ },
+
+ timers: [],
+
+ fx: function( elem, options, prop ){
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ if ( !options.orig )
+ options.orig = {};
+ }
+
+});
+
+jQuery.fx.prototype = {
+
+ // Simple function for setting a style value
+ update: function(){
+ if ( this.options.step )
+ this.options.step.call( this.elem, this.now, this );
+
+ (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
+
+ // Set display property to block for height/width animations
+ if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style )
+ this.elem.style.display = "block";
+ },
+
+ // Get the current size
+ cur: function(force){
+ if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )
+ return this.elem[ this.prop ];
+
+ var r = parseFloat(jQuery.css(this.elem, this.prop, force));
+ return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
+ },
+
+ // Start an animation from one number to another
+ custom: function(from, to, unit){
+ this.startTime = now();
+ this.start = from;
+ this.end = to;
+ this.unit = unit || this.unit || "px";
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ var self = this;
+ function t(gotoEnd){
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if ( t() && jQuery.timers.push(t) && !timerId ) {
+ timerId = setInterval(function(){
+ var timers = jQuery.timers;
+
+ for ( var i = 0; i < timers.length; i++ )
+ if ( !timers[i]() )
+ timers.splice(i--, 1);
+
+ if ( !timers.length ) {
+ clearInterval( timerId );
+ timerId = undefined;
+ }
+ }, 13);
+ }
+ },
+
+ // Simple 'show' function
+ show: function(){
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
+ this.options.show = true;
+
+ // Begin the animation
+ // Make sure that we start at a small width/height to avoid any
+ // flash of content
+ this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur());
+
+ // Start by showing the element
+ jQuery(this.elem).show();
+ },
+
+ // Simple 'hide' function
+ hide: function(){
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom(this.cur(), 0);
+ },
+
+ // Each step of an animation
+ step: function(gotoEnd){
+ var t = now();
+
+ if ( gotoEnd || t >= this.options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ this.options.curAnim[ this.prop ] = true;
+
+ var done = true;
+ for ( var i in this.options.curAnim )
+ if ( this.options.curAnim[i] !== true )
+ done = false;
+
+ if ( done ) {
+ if ( this.options.display != null ) {
+ // Reset the overflow
+ this.elem.style.overflow = this.options.overflow;
+
+ // Reset the display
+ this.elem.style.display = this.options.display;
+ if ( jQuery.css(this.elem, "display") == "none" )
+ this.elem.style.display = "block";
+ }
+
+ // Hide the element if the "hide" operation was done
+ if ( this.options.hide )
+ jQuery(this.elem).hide();
+
+ // Reset the properties, if the item has been hidden or shown
+ if ( this.options.hide || this.options.show )
+ for ( var p in this.options.curAnim )
+ jQuery.attr(this.elem.style, p, this.options.orig[p]);
+
+ // Execute the complete function
+ this.options.complete.call( this.elem );
+ }
+
+ return false;
+ } else {
+ var n = t - this.startTime;
+ this.state = n / this.options.duration;
+
+ // Perform the easing function, defaults to swing
+ this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
+ this.now = this.start + ((this.end - this.start) * this.pos);
+
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+
+};
+
+jQuery.extend( jQuery.fx, {
+ speeds:{
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ },
+ step: {
+
+ opacity: function(fx){
+ jQuery.attr(fx.elem.style, "opacity", fx.now);
+ },
+
+ _default: function(fx){
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
+ fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+ else
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+});
+if ( document.documentElement["getBoundingClientRect"] )
+ jQuery.fn.offset = function() {
+ if ( !this[0] ) return { top: 0, left: 0 };
+ if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
+ var box = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,
+ clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ top = box.top + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop || body.scrollTop ) - clientTop,
+ left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
+ return { top: top, left: left };
+ };
+else
+ jQuery.fn.offset = function() {
+ if ( !this[0] ) return { top: 0, left: 0 };
+ if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
+ jQuery.offset.initialized || jQuery.offset.initialize();
+
+ var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,
+ doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
+ body = doc.body, defaultView = doc.defaultView,
+ prevComputedStyle = defaultView.getComputedStyle(elem, null),
+ top = elem.offsetTop, left = elem.offsetLeft;
+
+ while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+ computedStyle = defaultView.getComputedStyle(elem, null);
+ top -= elem.scrollTop, left -= elem.scrollLeft;
+ if ( elem === offsetParent ) {
+ top += elem.offsetTop, left += elem.offsetLeft;
+ if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )
+ top += parseInt( computedStyle.borderTopWidth, 10) || 0,
+ left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
+ prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
+ }
+ if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" )
+ top += parseInt( computedStyle.borderTopWidth, 10) || 0,
+ left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
+ prevComputedStyle = computedStyle;
+ }
+
+ if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" )
+ top += body.offsetTop,
+ left += body.offsetLeft;
+
+ if ( prevComputedStyle.position === "fixed" )
+ top += Math.max(docElem.scrollTop, body.scrollTop),
+ left += Math.max(docElem.scrollLeft, body.scrollLeft);
+
+ return { top: top, left: left };
+ };
+
+jQuery.offset = {
+ initialize: function() {
+ if ( this.initialized ) return;
+ var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,
+ html = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';
+
+ rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };
+ for ( prop in rules ) container.style[prop] = rules[prop];
+
+ container.innerHTML = html;
+ body.insertBefore(container, body.firstChild);
+ innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;
+
+ this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
+ this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
+
+ innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';
+ this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
+
+ body.style.marginTop = '1px';
+ this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);
+ body.style.marginTop = bodyMarginTop;
+
+ body.removeChild(container);
+ this.initialized = true;
+ },
+
+ bodyOffset: function(body) {
+ jQuery.offset.initialized || jQuery.offset.initialize();
+ var top = body.offsetTop, left = body.offsetLeft;
+ if ( jQuery.offset.doesNotIncludeMarginInBodyOffset )
+ top += parseInt( jQuery.curCSS(body, 'marginTop', true), 10 ) || 0,
+ left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;
+ return { top: top, left: left };
+ }
+};
+
+
+jQuery.fn.extend({
+ position: function() {
+ var left = 0, top = 0, results;
+
+ if ( this[0] ) {
+ // Get *real* offsetParent
+ var offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= num( this, 'marginTop' );
+ offset.left -= num( this, 'marginLeft' );
+
+ // Add offsetParent borders
+ parentOffset.top += num( offsetParent, 'borderTopWidth' );
+ parentOffset.left += num( offsetParent, 'borderLeftWidth' );
+
+ // Subtract the two offsets
+ results = {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ }
+
+ return results;
+ },
+
+ offsetParent: function() {
+ var offsetParent = this[0].offsetParent || document.body;
+ while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )
+ offsetParent = offsetParent.offsetParent;
+ return jQuery(offsetParent);
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ['Left', 'Top'], function(i, name) {
+ var method = 'scroll' + name;
+
+ jQuery.fn[ method ] = function(val) {
+ if (!this[0]) return null;
+
+ return val !== undefined ?
+
+ // Set the scroll offset
+ this.each(function() {
+ this == window || this == document ?
+ window.scrollTo(
+ !i ? val : jQuery(window).scrollLeft(),
+ i ? val : jQuery(window).scrollTop()
+ ) :
+ this[ method ] = val;
+ }) :
+
+ // Return the scroll offset
+ this[0] == window || this[0] == document ?
+ self[ i ? 'pageYOffset' : 'pageXOffset' ] ||
+ jQuery.boxModel && document.documentElement[ method ] ||
+ document.body[ method ] :
+ this[0][ method ];
+ };
+});
+// Create innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function(i, name){
+
+ var tl = i ? "Left" : "Top", // top or left
+ br = i ? "Right" : "Bottom", // bottom or right
+ lower = name.toLowerCase();
+
+ // innerHeight and innerWidth
+ jQuery.fn["inner" + name] = function(){
+ return this[0] ?
+ jQuery.css( this[0], lower, false, "padding" ) :
+ null;
+ };
+
+ // outerHeight and outerWidth
+ jQuery.fn["outer" + name] = function(margin) {
+ return this[0] ?
+ jQuery.css( this[0], lower, false, margin ? "margin" : "border" ) :
+ null;
+ };
+
+ var type = name.toLowerCase();
+
+ jQuery.fn[ type ] = function( size ) {
+ // Get window width or height
+ return this[0] == window ?
+ // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+ document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] ||
+ document.body[ "client" + name ] :
+
+ // Get document width or height
+ this[0] == document ?
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ Math.max(
+ document.documentElement["client" + name],
+ document.body["scroll" + name], document.documentElement["scroll" + name],
+ document.body["offset" + name], document.documentElement["offset" + name]
+ ) :
+
+ // Get or set width or height on the element
+ size === undefined ?
+ // Get width or height on the element
+ (this.length ? jQuery.css( this[0], type ) : null) :
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ this.css( type, typeof size === "string" ? size : size + "px" );
+ };
+
+});
+})();
+
+ </script>
+ <script type="text/javascript" charset="utf-8">
+ /*
+ * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
+ *
+ * Uses the built in easing capabilities added In jQuery 1.1
+ * to offer multiple easing options
+ *
+ * TERMS OF USE - jQuery Easing
+ *
+ * Open source under the BSD License.
+ *
+ * Copyright © 2008 George McGinley Smith
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the author nor the names of contributors may be used to endorse
+ * or promote products derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+*/
+
+// t: current time, b: begInnIng value, c: change In value, d: duration
+jQuery.easing['jswing'] = jQuery.easing['swing'];
+
+jQuery.extend( jQuery.easing,
+{
+ def: 'easeOutQuad',
+ swing: function (x, t, b, c, d) {
+ //alert(jQuery.easing.default);
+ return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
+ },
+ easeInQuad: function (x, t, b, c, d) {
+ return c*(t/=d)*t + b;
+ },
+ easeOutQuad: function (x, t, b, c, d) {
+ return -c *(t/=d)*(t-2) + b;
+ },
+ easeInOutQuad: function (x, t, b, c, d) {
+ if ((t/=d/2) < 1) return c/2*t*t + b;
+ return -c/2 * ((--t)*(t-2) - 1) + b;
+ },
+ easeInCubic: function (x, t, b, c, d) {
+ return c*(t/=d)*t*t + b;
+ },
+ easeOutCubic: function (x, t, b, c, d) {
+ return c*((t=t/d-1)*t*t + 1) + b;
+ },
+ easeInOutCubic: function (x, t, b, c, d) {
+ if ((t/=d/2) < 1) return c/2*t*t*t + b;
+ return c/2*((t-=2)*t*t + 2) + b;
+ },
+ easeInQuart: function (x, t, b, c, d) {
+ return c*(t/=d)*t*t*t + b;
+ },
+ easeOutQuart: function (x, t, b, c, d) {
+ return -c * ((t=t/d-1)*t*t*t - 1) + b;
+ },
+ easeInOutQuart: function (x, t, b, c, d) {
+ if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
+ return -c/2 * ((t-=2)*t*t*t - 2) + b;
+ },
+ easeInQuint: function (x, t, b, c, d) {
+ return c*(t/=d)*t*t*t*t + b;
+ },
+ easeOutQuint: function (x, t, b, c, d) {
+ return c*((t=t/d-1)*t*t*t*t + 1) + b;
+ },
+ easeInOutQuint: function (x, t, b, c, d) {
+ if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
+ return c/2*((t-=2)*t*t*t*t + 2) + b;
+ },
+ easeInSine: function (x, t, b, c, d) {
+ return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
+ },
+ easeOutSine: function (x, t, b, c, d) {
+ return c * Math.sin(t/d * (Math.PI/2)) + b;
+ },
+ easeInOutSine: function (x, t, b, c, d) {
+ return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
+ },
+ easeInExpo: function (x, t, b, c, d) {
+ return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
+ },
+ easeOutExpo: function (x, t, b, c, d) {
+ return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
+ },
+ easeInOutExpo: function (x, t, b, c, d) {
+ if (t==0) return b;
+ if (t==d) return b+c;
+ if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
+ return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
+ },
+ easeInCirc: function (x, t, b, c, d) {
+ return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
+ },
+ easeOutCirc: function (x, t, b, c, d) {
+ return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
+ },
+ easeInOutCirc: function (x, t, b, c, d) {
+ if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
+ return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
+ },
+ easeInElastic: function (x, t, b, c, d) {
+ var s=1.70158;var p=0;var a=c;
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
+ return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
+ },
+ easeOutElastic: function (x, t, b, c, d) {
+ var s=1.70158;var p=0;var a=c;
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
+ return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
+ },
+ easeInOutElastic: function (x, t, b, c, d) {
+ var s=1.70158;var p=0;var a=c;
+ if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
+ if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
+ return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
+ },
+ easeInBack: function (x, t, b, c, d, s) {
+ if (s == undefined) s = 1.70158;
+ return c*(t/=d)*t*((s+1)*t - s) + b;
+ },
+ easeOutBack: function (x, t, b, c, d, s) {
+ if (s == undefined) s = 1.70158;
+ return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
+ },
+ easeInOutBack: function (x, t, b, c, d, s) {
+ if (s == undefined) s = 1.70158;
+ if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
+ return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
+ },
+ easeInBounce: function (x, t, b, c, d) {
+ return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
+ },
+ easeOutBounce: function (x, t, b, c, d) {
+ if ((t/=d) < (1/2.75)) {
+ return c*(7.5625*t*t) + b;
+ } else if (t < (2/2.75)) {
+ return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
+ } else if (t < (2.5/2.75)) {
+ return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
+ } else {
+ return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
+ }
+ },
+ easeInOutBounce: function (x, t, b, c, d) {
+ if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
+ return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
+ }
+});
+
+/*
+ *
+ * TERMS OF USE - EASING EQUATIONS
+ *
+ * Open source under the BSD License.
+ *
+ * Copyright © 2001 Robert Penner
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the author nor the names of contributors may be used to endorse
+ * or promote products derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+ </script>
+ <script type="text/javascript" charset="utf-8">
+ (function($) {
+ var currentHash = document.location.hash;
+
+ var checkHash = function checkAgain() {
+ var newHash = document.location.hash;
+ if (currentHash != newHash) {
+ currentHash = newHash;
+ $(document).trigger('hash.changed');
+ }
+ window.setTimeout(checkAgain, 10);
+ }
+
+ checkHash();
+})(jQuery);
+
+ </script>
+ <script type="text/javascript" charset="utf-8">
+ (function($) {
+ jQuery.easing.def = "easeOutQuart"; // For tweening
+
+ var allSlides = function() {
+ return $('#slides #track > div');
+ }
+
+ var slideDimensions = function() {
+ return {
+ width: $(window).width(),
+ height: $(window).height()
+ }
+ }
+
+ var getIndex = function() {
+ var index = document.location.hash.split('#')[1];
+ return Number(index);
+ }
+
+ var setIndex = function(idx) {
+ var newSlide = '#slide-' + idx;
+ if ($(newSlide).size() < 1) { return false; }
+ document.location.hash = '#' + idx;
+ }
+
+ var setSlideDimensions = function() {
+ var dimensions = slideDimensions();
+
+ $('#slides').height(dimensions.height);
+ $('#slides').width(dimensions.width);
+
+ allSlides().height(dimensions.height);
+ allSlides().width(dimensions.width);
+ }
+
+ var showCurrentSlide = function() {
+ var dimensions = slideDimensions();
+ var index = getIndex();
+ var offset = (index || 0) * dimensions.width;
+
+ $('#track').animate({ marginLeft: '-' + offset + 'px' }, 200);
+ }
+
+ var verticalAlign = function() {
+ var dimensions = slideDimensions();
+ var margin = (dimensions.height - $(this).height()) / 2;
+ $(this).css({ paddingTop: margin + 'px' });
+ }
+
+ var formatGist = function() {
+ $('.gist-meta').css({ fontSize: '12px' });
+ $('.gist .gist-file .gist-data pre').css({
+ padding: '0.4em',
+ overflow: 'hidden',
+ fontSize: '26px'
+ });
+
+ allSlides().find('.content').each(verticalAlign);
+ }
+
+ var adjustSlides = function() {
+ var dimensions = slideDimensions();
+
+ setSlideDimensions();
+ showCurrentSlide();
+
+ formatGist();
+ }
+
+ var move = function(event) {
+ var DIRECTIONS = {
+ 37: -1, // ARROW LEFT
+ 39: 1, // ARROW RIGHT
+ 32: 1, // SPACE BAR
+ 13: 1, // RETURN
+ 27: 'home', // ESCAPE
+ left: -1,
+ right: 1
+ }
+
+ if (dir = DIRECTIONS[event.which || event]) {
+ if (dir == 'home') {
+ event.preventDefault();
+ event.stopPropagation();
+ location.href = '/';
+ } else {
+ $('#instructions').slideUp(100);
+ setIndex(getIndex() + dir);
+ }
+ }
+ }
+
+ function clickMove(e) {
+ if (e.pageX < ($(window).width() / 2)) {
+ move('left');
+ } else {
+ move('right');
+ }
+ }
+
+ function hideInstructions() {
+ $('#instructions').slideUp(200);
+ }
+
+ $(window).bind('resize', function() { adjustSlides(); });
+ $(document).bind('keydown', move);
+ $(document).bind('hash.changed', adjustSlides);
+ $(document).bind('click', clickMove);
+ $(document).ready(function() {
+ setIndex(getIndex() || 0);
+ $(this).trigger('hash.changed');
+ if (document.location.search.indexOf('notes') == 1) {
+ $('.notes').show();
+ }
+
+ window.setTimeout(hideInstructions, 3000);
+ });
+})(jQuery);
+
+ </script>
+
+ </head>
+ <body>
+ <div id="instructions">
+ Use the left/right arrow keys to navigate.
+ </div>
+ <div id="slides">
+ <div id="track">
+
+ <div class="">
+ <div id="slide-0" class="content">
+ <h1>managing code and quality</h1><h2>with git and testing</h2><h3>@superpants5000 & @capotej</h3>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-1" class="content">
+ <p><img src="images/BFF.gif" alt=""></p><h1>us</h1><ul>
+<li>bff's</li>
+<li>made some software</li>
+<li>"serial language enthusiasts"</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-2" class="content">
+ <h1>what we're talking about</h1><ul>
+<li>version control with git</li>
+<li>automated testing with ruby</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-3" class="content">
+ <h1>oh btw</h1><h2>if you have questions, tweet with hashtag #gitrubytalk</h2>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-4" class="content">
+ <p><img src="images/pdp11-unix.jpg" alt=""></p><h1>technology of teamwork</h1>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-5" class="content">
+ <ul>
+<li>one constant in our field is collaboration</li>
+<li>tech assisting us always improving</li>
+<li>methodologies too!</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-6" class="content">
+ <h1>some common ones</h1><ul>
+<li>waterfall, spiral</li>
+<li>agile, extreme, scrum</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-7" class="content">
+ <h1>tools augment processes</h1><ul>
+<li>how do you work?</li>
+<li>how can you work better?</li>
+<li>what's out there to help?</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-8" class="content">
+ <h1>common tools</h1><ul>
+<li>OS, editor, ide</li>
+<li>docs, tests</li>
+<li>revision control</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-9" class="content">
+ <p><img src="images/linus_beer.jpg" alt=""></p><h1>and yes, git!</h1>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-10" class="content">
+ <h1>essentials</h1><ul>
+<li>low level content tracker (SHA1/DAG/etc)</li>
+<li>distributed</li>
+<li>simplifies parallel development</li>
+<li>emphasis on pull, not push</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-11" class="content">
+ <p><img src="images/git-repo-1.png" alt=""></p><h1>commits</h1>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-12" class="content">
+ <h1>branches</h1><ul>
+<li>points where commits diverge</li>
+<li>can be merged with eachother</li>
+<li>exist on your machine or elsewhere</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-13" class="content">
+ <p><img src="images/git-repo-2.png" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-14" class="content">
+ <p><img src="images/git-repo-5.png" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-15" class="content">
+ <h1>remotes</h1><ul>
+<li>like svn repos but awesomer</li>
+<li>friends instead of svn servers</li>
+<li>push to, pull from. bring in changes</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-16" class="content">
+ <p><img src="images/git-repo-6.png" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-17" class="content">
+ <h1>distributed</h1><ul>
+<li>all changes are on your machine</li>
+<li>you're free to inspect and change</li>
+<li>no wifi? no problem</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-18" class="content">
+ <p><img src="images/who-cares.jpg" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-19" class="content">
+ <h1>why git?</h1><ul>
+<li>augments many workflows, including individual</li>
+<li>supports various protocols, git-svn lets you interop</li>
+<li>alternatives: bzr, darcs, hg</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-20" class="content">
+ <p><img src="images/ferris.jpg" alt=""></p><h1>a quick spin</h1>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-21" class="content">
+ <p><img src="images/git1.png" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-22" class="content">
+ <p><img src="images/git2.png" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-23" class="content">
+ <p><img src="images/git3.png" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-24" class="content">
+ <p><img src="images/git4.png" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-25" class="content">
+ <p><img src="images/git5.png" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-26" class="content">
+ <p><img src="images/git6.png" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-27" class="content">
+ <p><img src="images/git7.png" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-28" class="content">
+ <p><img src="images/git8.png" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-29" class="content">
+ <p><img src="images/git9.png" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-30" class="content">
+ <p><img src="images/tada.jpg" alt=""></p><h1>tada!</h1>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-31" class="content">
+ <h1>takeaways</h1><ul>
+<li>git is worth looking into</li>
+<li>simple, powerful, extensible</li>
+<li>easy to get started, see github.com</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-32" class="content">
+ <h1>testing your codez</h1><ul>
+<li>what it is</li>
+<li>what it do</li>
+<li>how it is</li>
+<li>when to use</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-33" class="content">
+ <h1>what is testing?</h1><p>"a particular process or method for trying or assessing"</p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-34" class="content">
+ <p><img src="images/testsyo.png" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-35" class="content">
+ <h1>popular processes</h1><ul>
+<li>F5</li>
+<li>Alt+Tab Up+Enter</li>
+<li>"Yo, try it again"</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-36" class="content">
+ <h1>why this sucks</h1><ul>
+<li>gets old, fast</li>
+<li>explicit setup of state</li>
+<li>mix of "test" code and real code</li>
+<li>its not permanent</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-37" class="content">
+ <p><img src="images/kittcar.jpg" alt=""></p><h1>what's better?</h1><ul>
+<li>Test::Unit</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-38" class="content">
+ <h1>why is it better?</h1><ul>
+<li>guides our design from the top down, rather than bottom up</li>
+<li>best docs money can buy</li>
+<li>permanent knowledge of functionality</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-39" class="content">
+ <h1>testing strategy</h1><ul>
+<li>write some tests</li>
+<li>run your tests</li>
+<li>make them pass</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-40" class="content">
+ <p><img src="images/devflow.png" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-41" class="content">
+ <h1>how to test</h1><h2>anatomy of Test::Unit</h2><ul>
+<li>test case</li>
+<li>test methods</li>
+<li>assertions</li>
+<li>setup and teardown methods</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-42" class="content">
+ <p><img src="images/adder_code.png" alt=""></p>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-43" class="content">
+ <h1>a test case</h1><ul>
+<li>defines your general testing stragegy</li>
+<li>usually mapped to a single class</li>
+<li>encapsulates the desired behaviour of our class</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-44" class="content">
+ <h1>test method</h1><ul>
+<li>runs a method in vacuum environment</li>
+<li>asserts an expected outcome</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-45" class="content">
+ <h1>assetrions</h1><h2>common assertions</h2><ul>
+<li>assert(expression) (determines if expression is true)</li>
+<li>assert_equal("foobar", "foo" + "bar")</li>
+<li>assert<em>instance</em>of(String, "foobar")</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-46" class="content">
+ <h1>how a test suite runs</h1><ul>
+<li>runs the "setup" method in the testcase</li>
+<li>runs a test method</li>
+<li>runs the "teardown" method in the testcase</li>
+<li>repeat for every test method</li>
+<li>repeat for every test case</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-47" class="content">
+ <h1>good times to write a test case</h1><ul>
+<li>whenever you'd use the shell to try something out</li>
+<li>whenever a bug is found</li>
+<li>when designing an interface</li>
+<li>all the time (google for: TATFT)</li>
+</ul>
+ </div>
+ </div>
+
+ <div class="">
+ <div id="slide-48" class="content">
+ <h1>q & a!</h1>
+ </div>
+ </div>
+
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/md/TechWorks/decks/oscon2012-clojure/index.html b/md/TechWorks/decks/oscon2012-clojure/index.html
new file mode 100644
index 0000000..be4984d
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/index.html
@@ -0,0 +1,3354 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<title>Computing with Clojure</title>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+<meta name="title" content="Computing with Clojure"/>
+<meta name="generator" content="Org-mode"/>
+<meta name="generated" content="2012-07-17 18:56:16 EDT"/>
+<meta name="author" content="Alan Dipert"/>
+<meta name="description" content=""/>
+<meta name="keywords" content=""/>
+
+<link rel="stylesheet" type="text/css" href="slide-assets/common.css" />
+<link rel="stylesheet" type="text/css" href="slide-assets/screen.css" media="screen" />
+<link rel="stylesheet" type="text/css" href="slide-assets/projection.css" media="projection" />
+<link rel="stylesheet" type="text/css" href="slide-assets/presenter.css" media="presenter" />
+
+
+</head>
+<body>
+
+<div id="preamble">
+
+</div>
+
+<div id="content">
+<h1 class="title">Computing with Clojure</h1>
+
+
+<p>Press <strong>T</strong> to toggle slide-show mode.</p>
+
+
+<div id="table-of-contents">
+<h2>Table of Contents</h2>
+<div id="text-table-of-contents">
+<ul>
+<li><a href="#sec-1">1 Computing with Clojure</a></li>
+<li><a href="#sec-2">2 Welcome</a></li>
+<li><a href="#sec-3">3 Tutorial</a>
+<ul>
+<li><a href="#sec-3-1">3.1 Clojure Overview & REPL</a></li>
+<li><a href="#sec-3-2">3.2 Functions</a></li>
+<li><a href="#sec-3-3">3.3 Names and Namespaces</a></li>
+<li><a href="#sec-3-4">3.4 Working with Java</a></li>
+<li><a href="#sec-3-5">3.5 Collections</a></li>
+<li><a href="#sec-3-6">3.6 Flow Control</a></li>
+<li><a href="#sec-3-7">3.7 HACK LIFE</a></li>
+</ul>
+</li>
+<li><a href="#sec-4">4 End</a></li>
+</ul>
+</div>
+</div>
+
+<div id="outline-container-1" class="outline-2">
+<h2 id="sec-1"><span class="section-number-2">1</span> Computing with Clojure <span class="tag"><span class="slide">slide</span></span></h2>
+<div class="outline-text-2" id="text-1">
+
+
+
+
+<img id="clojure-logo" src="slide-assets/Clojure.svg" alt="slide-assets/clojure-glyph.svg" width="300" height="300" />
+<p class="presenters">
+Alan Dipert & Clinton Dreisbach<br />
+Relevance, Inc.<br />
+thinkrelevance.com
+</p>
+
+</div>
+
+</div>
+
+<div id="outline-container-2" class="outline-2">
+<h2 id="sec-2"><span class="section-number-2">2</span> Welcome</h2>
+<div class="outline-text-2" id="text-2">
+
+
+
+
+</div>
+
+<div id="outline-container-2-1" class="outline-5">
+<h5 id="sec-2-1"><span class="section-number-5">2.1</span> Welcome <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-2-1">
+
+<ul>
+<li id="sec-2-1-1">Schedule<br/>
+<ul>
+<li id="sec-2-1-1-1">0900-1030 Introduction to Clojure - REPL, functions, Java + exercises<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-2-1-1-2">1030-1100 Break<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-2-1-1-3">1100-1230 Namespaces, Collections, Flow Control<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-2-1-1-4">We are making this up. Who knows? There will be a break.<br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-2-1-2">Play Along<br/>
+<ul>
+<li id="sec-2-1-2-1">We have thumb drives with Clooj, JDK, slides, and example code.<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-2-1-2-2">You can get slides and example code from <a href="https://github.com/alandipert/oscon2012-clojure">https://github.com/alandipert/oscon2012-clojure</a><br/>
+
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3" class="outline-2">
+<h2 id="sec-3"><span class="section-number-2">3</span> Tutorial</h2>
+<div class="outline-text-2" id="text-3">
+
+
+</div>
+
+<div id="outline-container-3-1" class="outline-3">
+<h3 id="sec-3-1"><span class="section-number-3">3.1</span> Clojure Overview & REPL <span class="tag"><span class="slide">slide</span></span></h3>
+<div class="outline-text-3" id="text-3-1">
+
+
+
+
+</div>
+
+<div id="outline-container-3-1-1" class="outline-4">
+<h4 id="sec-3-1-1"><span class="section-number-4">3.1.1</span> Clojure Rationale</h4>
+<div class="outline-text-4" id="text-3-1-1">
+
+
+</div>
+
+<div id="outline-container-3-1-1-1" class="outline-5">
+<h5 id="sec-3-1-1-1"><span class="section-number-5">3.1.1.1</span> Clojure Objectives <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-1-1">
+
+<ul>
+<li id="sec-3-1-1-1-1">Lisp: small core, code-as-data, abstraction<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-1-1-1-2">Functional, emphasis on immutability<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-1-1-1-3">Support concurrency & managed state<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-1-1-1-4">Expose and embrace host platforms<br/>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-1-1-2" class="outline-5">
+<h5 id="sec-3-1-1-2"><span class="section-number-5">3.1.1.2</span> Why Another Lisp? <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-1-2">
+
+<ul>
+<li id="sec-3-1-1-2-1">Limits to change post standardization<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-1-1-2-2">Core data structures mutable, not extensible<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-1-1-2-3">No concurrency in specs<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-1-1-2-4">Standard Lisps are their own platforms<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-1-1-2-5">Good implementations already exist for JVM<br/>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-1-1-3" class="outline-5">
+<h5 id="sec-3-1-1-3"><span class="section-number-5">3.1.1.3</span> Why the JVM? <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-1-3">
+
+<ul>
+<li id="sec-3-1-1-3-1">VM, not OS, is target platform of the future<br/>
+<ul>
+<li id="sec-3-1-1-3-1-1">Type system<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-1-1-3-1-2">Dynamic enforcement and safety<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-1-1-3-1-3">Garbage collection<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-1-1-3-1-4">Libraries<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-1-1-3-1-5">Bytecode, just-in-time compilation<br/>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-1-2" class="outline-4">
+<h4 id="sec-3-1-2"><span class="section-number-4">3.1.2</span> Evaluation and the REPL</h4>
+<div class="outline-text-4" id="text-3-1-2">
+
+
+</div>
+
+<div id="outline-container-3-1-2-1" class="outline-5">
+<h5 id="sec-3-1-2-1"><span class="section-number-5">3.1.2.1</span> The REPL <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-2-1">
+
+
+
+
+<pre class="src src-clojure">user=> (<span class="org-variable-name">+</span> 3 4) <span class="org-comment-delimiter">; </span><span class="org-comment">Read</span>
+ <span class="org-comment-delimiter">; </span><span class="org-comment">Eval</span>
+7 <span class="org-comment-delimiter">; </span><span class="org-comment">Print</span>
+user=> <span class="org-comment-delimiter">; </span><span class="org-comment">Loop</span>
+</pre>
+
+</div>
+
+</div>
+
+<div id="outline-container-3-1-2-2" class="outline-5">
+<h5 id="sec-3-1-2-2"><span class="section-number-5">3.1.2.2</span> Traditional Evaluation <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-2-2">
+
+<p><img src="slide-assets/traditional-evaluation.svg" alt="slide-assets/traditional-evaluation.svg" />
+</p></div>
+
+</div>
+
+<div id="outline-container-3-1-2-3" class="outline-5">
+<h5 id="sec-3-1-2-3"><span class="section-number-5">3.1.2.3</span> Clojure Evaluation <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-2-3">
+
+<p><img src="slide-assets/clojure-interactive-evaluation.svg" alt="slide-assets/clojure-interactive-evaluation.svg" />
+</p></div>
+</div>
+
+</div>
+
+<div id="outline-container-3-1-3" class="outline-4">
+<h4 id="sec-3-1-3"><span class="section-number-4">3.1.3</span> Basic Syntax</h4>
+<div class="outline-text-4" id="text-3-1-3">
+
+
+</div>
+
+<div id="outline-container-3-1-3-1" class="outline-5">
+<h5 id="sec-3-1-3-1"><span class="section-number-5">3.1.3.1</span> Operation Forms <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-3-1">
+
+
+
+
+<pre class="src src-clojure">(op ... )
+</pre>
+
+<ul>
+<li id="sec-3-1-3-1-1">op can be either:<br/>
+<ul>
+<li id="sec-3-1-3-1-1-1">special operator or macro<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-1-3-1-1-2">expression which yields a function<br/>
+<ul>
+<li id="sec-3-1-3-1-1-2-1">more generally, something invocable<br/>
+
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-1-3-2" class="outline-5">
+<h5 id="sec-3-1-3-2"><span class="section-number-5">3.1.3.2</span> Structure vs. Semantics <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-3-2">
+
+<p><img src="slide-assets/structure-and-semantics.svg" alt="slide-assets/structure-and-semantics.svg" />
+</p>
+</div>
+
+</div>
+
+<div id="outline-container-3-1-3-3" class="outline-5">
+<h5 id="sec-3-1-3-3"><span class="section-number-5">3.1.3.3</span> Literals (1) <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-3-3">
+
+
+
+
+<pre class="src src-clojure">42 <span class="org-comment-delimiter">; </span><span class="org-comment">Long</span>
+6.022e23 <span class="org-comment-delimiter">; </span><span class="org-comment">Double</span>
+
+42N <span class="org-comment-delimiter">; </span><span class="org-comment">BigInt</span>
+1.0M <span class="org-comment-delimiter">; </span><span class="org-comment">BigDecimal</span>
+22/7 <span class="org-comment-delimiter">; </span><span class="org-comment">Ratio</span>
+
+<span class="org-string">"hello"</span> <span class="org-comment-delimiter">; </span><span class="org-comment">String</span>
+\e <span class="org-comment-delimiter">; </span><span class="org-comment">Character</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-1-3-4" class="outline-5">
+<h5 id="sec-3-1-3-4"><span class="section-number-5">3.1.3.4</span> Literals (2) <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-3-4">
+
+
+
+
+<pre class="src src-clojure">true false <span class="org-comment-delimiter">; </span><span class="org-comment">Booleans</span>
+
+nil <span class="org-comment-delimiter">; </span><span class="org-comment">null</span>
+
++ <span class="org-preprocessor">Fred</span> *bob* <span class="org-comment-delimiter">; </span><span class="org-comment">Symbols</span>
+
+<span class="org-constant">:alpha</span> <span class="org-constant">:beta</span> <span class="org-comment-delimiter">; </span><span class="org-comment">Keywords</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-1-3-5" class="outline-5">
+<h5 id="sec-3-1-3-5"><span class="section-number-5">3.1.3.5</span> Data Structures <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-3-5">
+
+
+
+
+<pre class="src src-clojure">(4 <span class="org-constant">:alpha</span> 3.0) <span class="org-comment-delimiter">; </span><span class="org-comment">List</span>
+
+[2 <span class="org-string">"hello"</span> 99] <span class="org-comment-delimiter">; </span><span class="org-comment">Vector</span>
+
+{<span class="org-constant">:a</span> 1, <span class="org-constant">:b</span> 2} <span class="org-comment-delimiter">; </span><span class="org-comment">Map</span>
+
+#{alice jim bob} <span class="org-comment-delimiter">; </span><span class="org-comment">Set</span>
+</pre>
+
+
+<ul>
+<li id="sec-3-1-3-5-1">Note: commas are whitespace<br/>
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-1-3-6" class="outline-5">
+<h5 id="sec-3-1-3-6"><span class="section-number-5">3.1.3.6</span> Reader Macros <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-3-6">
+
+<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<caption></caption>
+<colgroup><col class="left" /><col class="left" />
+</colgroup>
+<thead>
+<tr><th scope="col" class="left">Reader Macro</th><th scope="col" class="left">Expansion</th></tr>
+</thead>
+<tbody>
+<tr><td class="left">'foo</td><td class="left">(quote foo)</td></tr>
+<tr><td class="left">#'foo</td><td class="left">(var foo)</td></tr>
+<tr><td class="left">@foo</td><td class="left">(deref foo)</td></tr>
+<tr><td class="left">#(+ % 5)</td><td class="left">(fn [x] (+ x 5))</td></tr>
+</tbody>
+</table>
+
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-1-4" class="outline-4">
+<h4 id="sec-3-1-4"><span class="section-number-4">3.1.4</span> Discoverability of the Environment</h4>
+<div class="outline-text-4" id="text-3-1-4">
+
+
+</div>
+
+<div id="outline-container-3-1-4-1" class="outline-5">
+<h5 id="sec-3-1-4-1"><span class="section-number-5">3.1.4.1</span> doc <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-4-1">
+
+
+
+
+<pre class="src src-clojure">user=> (<span class="org-variable-name">use</span> 'clojure.repl)
+
+user=> (<span class="org-variable-name">doc</span> when)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">-------------------------</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">clojure.core/when</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">([test & body])</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Macro</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Evaluates test. If logical true, evaluates</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">body in an implicit do.</span>
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> nil</span>
+</pre>
+
+</div>
+
+</div>
+
+<div id="outline-container-3-1-4-2" class="outline-5">
+<h5 id="sec-3-1-4-2"><span class="section-number-5">3.1.4.2</span> find-doc <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-4-2">
+
+
+
+
+<pre class="src src-clojure">user=> (<span class="org-variable-name">find-doc</span> <span class="org-string">"sequence"</span>)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">... all definitions with "sequence"</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">in their documentation ...</span>
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> nil</span>
+</pre>
+
+</div>
+
+</div>
+
+<div id="outline-container-3-1-4-3" class="outline-5">
+<h5 id="sec-3-1-4-3"><span class="section-number-5">3.1.4.3</span> apropos <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-4-3">
+
+
+
+
+<pre class="src src-clojure">user=> (apropos <span class="org-string">"map"</span>)
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> (sorted-map ns-unmap zipmap map mapcat</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">sorted-map-by map? amap struct-map</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">proxy-mappings pmap map-indexed</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">ns-map array-map hash-map)</span>
+</pre>
+
+</div>
+
+</div>
+
+<div id="outline-container-3-1-4-4" class="outline-5">
+<h5 id="sec-3-1-4-4"><span class="section-number-5">3.1.4.4</span> source <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-4-4">
+
+
+
+
+<pre class="src src-clojure">user=> (source take)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">(defn take</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">"Returns a lazy sequence of the first n items</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">in coll, or all items if there are fewer than n."</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">{:added "1.0"</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">:static true}</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">[n coll]</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">(lazy-seq</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">(when (pos? n)</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">(when-let [s (seq coll)]</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">(cons (first s) (take (dec n) (rest s)))))))</span>
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> nil</span>
+</pre>
+
+</div>
+
+</div>
+
+<div id="outline-container-3-1-4-5" class="outline-5">
+<h5 id="sec-3-1-4-5"><span class="section-number-5">3.1.4.5</span> dir <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-4-5">
+
+
+
+
+<pre class="src src-clojure">user=> (dir clojure.repl)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">apropos</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">demunge</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">dir</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">dir-fn</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">doc</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">find-doc</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">pst</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">root-cause</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">set-break-handler!</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">source</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">source-fn</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">stack-element-str</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">thread-stopper</span>
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> nil</span>
+</pre>
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-1-5" class="outline-4">
+<h4 id="sec-3-1-5"><span class="section-number-4">3.1.5</span> Exercises</h4>
+<div class="outline-text-4" id="text-3-1-5">
+
+
+</div>
+
+<div id="outline-container-3-1-5-1" class="outline-5">
+<h5 id="sec-3-1-5-1"><span class="section-number-5">3.1.5.1</span> Exercise: Basic Math <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-5-1">
+
+<ul>
+<li id="sec-3-1-5-1-1">Find the product of 314 and 159 using the REPL.<br/>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-1-5-2" class="outline-5">
+<h5 id="sec-3-1-5-2"><span class="section-number-5">3.1.5.2</span> Exercise: Basic Math Solution <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-5-2">
+
+<ul>
+<li id="sec-3-1-5-2-1">Find the product of 314 and 159 using the REPL.<br/>
+
+
+
+<pre class="src src-clojure">user=> (<span class="org-variable-name">*</span> 314 159)
+<span class="org-comment-delimiter">;</span><span class="org-comment">=> 49926</span>
+</pre>
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-1-5-3" class="outline-5">
+<h5 id="sec-3-1-5-3"><span class="section-number-5">3.1.5.3</span> Exercise: Prefix Notation <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-5-3">
+
+<ul>
+<li id="sec-3-1-5-3-1">Transform the following expression into Clojure code: (42 + 17 * 9) / 12<br/>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-1-5-4" class="outline-5">
+<h5 id="sec-3-1-5-4"><span class="section-number-5">3.1.5.4</span> Exercise: Prefix Notation Solution <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-1-5-4">
+
+<ul>
+<li id="sec-3-1-5-4-1">Transform the following expression into Clojure code: (42 + 17 * 9) / 12<br/>
+
+
+
+
+<pre class="src src-clojure">user=> (<span class="org-variable-name">/</span> (<span class="org-variable-name">*</span> (<span class="org-variable-name">+</span> 42 17) 9) 12)
+<span class="org-comment-delimiter">;</span><span class="org-comment">=> 177/4</span>
+</pre>
+
+
+</li>
+</ul>
+</div>
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-2" class="outline-3">
+<h3 id="sec-3-2"><span class="section-number-3">3.2</span> Functions <span class="tag"><span class="slide">slide</span></span></h3>
+<div class="outline-text-3" id="text-3-2">
+
+
+
+
+</div>
+
+<div id="outline-container-3-2-1" class="outline-4">
+<h4 id="sec-3-2-1"><span class="section-number-4">3.2.1</span> Motivation <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-2-1">
+
+<ul>
+<li>Clojure is a functional language
+</li>
+<li>Functions are a first-class abstraction
+</li>
+<li>Ubiquitous support for high-order functions
+</li>
+<li>Core code (almost) entirely pure functions
+<ul>
+<li>i.e., no side-effects
+</li>
+</ul>
+
+</li>
+<li>The obvious place to start…
+</li>
+</ul>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-2-2" class="outline-4">
+<h4 id="sec-3-2-2"><span class="section-number-4">3.2.2</span> Functions <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-2-2">
+
+
+<ul>
+<li>Functions are first-class abstractions in Clojure
+<ul>
+<li>Can be stored, passed as argument, invoked
+</li>
+</ul>
+
+</li>
+<li><code>fn</code> creates a function with named parameters and body
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure"><span class="org-comment-delimiter">;; </span><span class="org-comment">params body</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">--------- ---------------</span>
+ (<span class="org-variable-name">fn</span> [message] (<span class="org-variable-name">print</span> message) )
+
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> #<user$eval484$fn__485@45d1c3cd></span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-2-3" class="outline-4">
+<h4 id="sec-3-2-3"><span class="section-number-4">3.2.3</span> Invoking Functions <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-2-3">
+
+
+<ul>
+<li><code>(op ...)</code>
+</li>
+<li>Invoke a function with <code>fn</code> itself in function position
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">( (<span class="org-variable-name">fn</span> [message] (<span class="org-variable-name">print</span> message)) <span class="org-comment-delimiter">; </span><span class="org-comment">Operation</span>
+ <span class="org-string">"Hello world!"</span> <span class="org-comment-delimiter">; </span><span class="org-comment">Arguments</span>
+)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Hello world!</span>
+</pre>
+
+
+
+</div>
+
+<div id="outline-container-3-2-3-1" class="outline-5">
+<h5 id="sec-3-2-3-1"><span class="section-number-5">3.2.3.1</span> Instructor notes <span class="tag"><span class="notes">notes</span></span></h5>
+<div class="outline-text-5" id="text-3-2-3-1">
+
+
+<ul>
+<li>The extra whitespace helps show the structure
+</li>
+<li>Normally we would not use so much whitespace
+</li>
+</ul>
+
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-2-4" class="outline-4">
+<h4 id="sec-3-2-4"><span class="section-number-4">3.2.4</span> Naming functions <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-2-4">
+
+
+<ul>
+<li><code>fn</code> makes <i>anonymous</i> functions
+</li>
+<li>Store function in a named <i>Var</i> for later use
+</li>
+<li>Invoke as list with name in function position
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">def</span> <span class="org-function-name">messenger</span> (<span class="org-variable-name">fn</span> [msg] (<span class="org-variable-name">print</span> msg)))
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> #'user/messenger</span>
+
+(<span class="org-keyword">defn</span> <span class="org-function-name">messenger</span> [msg] (<span class="org-variable-name">print</span> msg))
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> #'user/messenger</span>
+
+(messenger <span class="org-string">"Hello world!"</span>)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Hello world!</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-2-5" class="outline-4">
+<h4 id="sec-3-2-5"><span class="section-number-4">3.2.5</span> <code>let</code> <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-2-5">
+
+
+<ul>
+<li><code>let</code> binds <i>symbols</i> to immutable <i>values</i>
+<ul>
+<li>Values may be literals or expressions
+</li>
+</ul>
+
+</li>
+<li>Bound symbols are available in <i>lexical scope</i>
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">defn</span> <span class="org-function-name">messenger</span> [msg]
+ (<span class="org-builtin">let</span> [a 7
+ b 5
+ c (capitalize msg)]
+ (<span class="org-variable-name">println</span> a b c)
+ ) <span class="org-comment-delimiter">; </span><span class="org-comment">end of 'let' scope</span>
+) <span class="org-comment-delimiter">; </span><span class="org-comment">end of function</span>
+</pre>
+
+
+
+</div>
+
+<div id="outline-container-3-2-5-1" class="outline-5">
+<h5 id="sec-3-2-5-1"><span class="section-number-5">3.2.5.1</span> Notes <span class="tag"><span class="notes">notes</span></span></h5>
+<div class="outline-text-5" id="text-3-2-5-1">
+
+
+<ul>
+<li>Again, extra whitespace to show structure
+</li>
+</ul>
+
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-2-6" class="outline-4">
+<h4 id="sec-3-2-6"><span class="section-number-4">3.2.6</span> Multi-arity functions <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-2-6">
+
+
+<ul>
+<li>Can overload function by <b>arity</b> (number of arguments)
+</li>
+<li>Each arity is a list <code>([args*] body*)</code>
+</li>
+<li>One form can invoke another
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">defn</span> <span class="org-function-name">messenger</span>
+ <span class="org-comment-delimiter">;; </span><span class="org-comment">no args, call self with default msg</span>
+ ([] (messenger <span class="org-string">"Hello world!"</span>))
+ <span class="org-comment-delimiter">;; </span><span class="org-comment">one arg, print it</span>
+ ([msg] (<span class="org-variable-name">print</span> msg)))
+
+(messenger)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Hello world!</span>
+(messenger <span class="org-string">"Hello class!"</span>)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Hello class!</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-2-7" class="outline-4">
+<h4 id="sec-3-2-7"><span class="section-number-4">3.2.7</span> Variadic functions <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-2-7">
+
+
+<ul>
+<li><b>Variadic:</b> function of indefinite arity
+<ul>
+<li>Only one allowed when overloading on arity
+</li>
+</ul>
+
+</li>
+<li><code>&</code> symbol in params
+<ul>
+<li>Next param collects all remaining args
+</li>
+<li>Collected args represented as sequence
+</li>
+</ul>
+
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">defn</span> <span class="org-function-name">messenger</span> [greeting & who]
+ (<span class="org-variable-name">print</span> greeting who))
+
+(messenger <span class="org-string">"Hello"</span> <span class="org-string">"world"</span> <span class="org-string">"class"</span>)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Hello (world class)</span>
+</pre>
+
+
+
+</div>
+
+<div id="outline-container-3-2-7-1" class="outline-5">
+<h5 id="sec-3-2-7-1"><span class="section-number-5">3.2.7.1</span> Notes <span class="tag"><span class="notes">notes</span></span></h5>
+<div class="outline-text-5" id="text-3-2-7-1">
+
+
+<ul>
+<li>Sequences look and behave like lists
+</li>
+</ul>
+
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-2-8" class="outline-4">
+<h4 id="sec-3-2-8"><span class="section-number-4">3.2.8</span> <code>apply</code> <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-2-8">
+
+
+<ul>
+<li>Invokes function on arguments
+</li>
+<li>Final argument is a sequence
+</li>
+<li>"Unpacks" remaining arguments from a sequence
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">let</span> [a 1
+ b 2
+ more '(3 4)]
+ (<span class="org-variable-name">apply</span> f a b more))
+<span class="org-comment-delimiter">;; </span><span class="org-comment">this invokes (f 1 2 3 4)</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-2-9" class="outline-4">
+<h4 id="sec-3-2-9"><span class="section-number-4">3.2.9</span> <code>apply</code> <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-2-9">
+
+
+
+
+
+<pre class="src src-clojure"><span class="org-comment-delimiter">;; </span><span class="org-comment">& puts rest of args into sequence</span>
+(<span class="org-keyword">defn</span> <span class="org-function-name">messenger</span> [greeting & who]
+ <span class="org-comment-delimiter">;; </span><span class="org-comment">apply gets args out of sequence</span>
+ (<span class="org-variable-name">apply</span> print greeting who))
+
+(messenger <span class="org-string">"Hello"</span> <span class="org-string">"world"</span> <span class="org-string">"class"</span>)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Hello world class</span>
+</pre>
+
+
+
+</div>
+
+<div id="outline-container-3-2-9-1" class="outline-5">
+<h5 id="sec-3-2-9-1"><span class="section-number-5">3.2.9.1</span> Notes <span class="tag"><span class="notes">notes</span></span></h5>
+<div class="outline-text-5" id="text-3-2-9-1">
+
+
+<ul>
+<li>Similar to <code>*splat</code> in Ruby
+</li>
+</ul>
+
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-2-10" class="outline-4">
+<h4 id="sec-3-2-10"><span class="section-number-4">3.2.10</span> Closures <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-2-10">
+
+
+<ul>
+<li><code>fn</code> "closes" over surrounding lexical scope
+<ul>
+<li>Creates a <i>closure</i>
+</li>
+</ul>
+
+</li>
+<li>Closed-over references persist beyond lexical scope
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">defn</span> <span class="org-function-name">messenger-builder</span> [greeting]
+ (<span class="org-variable-name">fn</span> [who] (<span class="org-variable-name">print</span> greeting who))) <span class="org-comment-delimiter">; </span><span class="org-comment">closes over greeting</span>
+
+<span class="org-comment-delimiter">;; </span><span class="org-comment">greeting provided here, then goes out of scope</span>
+(<span class="org-keyword">def</span> <span class="org-function-name">hello-er</span> (messenger-builder <span class="org-string">"Hello"</span>))
+
+<span class="org-comment-delimiter">;; </span><span class="org-comment">greeting still available because hello-er is closure</span>
+(hello-er <span class="org-string">"world!"</span>)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Hello world!</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-2-11" class="outline-4">
+<h4 id="sec-3-2-11"><span class="section-number-4">3.2.11</span> Function literals <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-2-11">
+
+
+<ul>
+<li>Terse form <code>#()</code> for short fns defined inline
+<ul>
+<li>Single argument: <code>%</code>
+</li>
+<li>Multiple args: <code>%1</code>, <code>%2</code>, <code>%3</code>, …
+</li>
+<li>Variadic: <code>%&</code> for remaining args
+</li>
+</ul>
+
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure"><span class="org-comment-delimiter">;; </span><span class="org-comment">A function to square numbers</span>
+(<span class="org-keyword">def</span> <span class="org-function-name">square</span> #(<span class="org-variable-name">*</span> % %))
+
+<span class="org-comment-delimiter">;; </span><span class="org-comment">A function to get the sum of squares</span>
+(<span class="org-keyword">def</span> <span class="org-function-name">sum-of-squares</span> #(<span class="org-variable-name">+</span> (square %1) (square %2)))
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-2-12" class="outline-4">
+<h4 id="sec-3-2-12"><span class="section-number-4">3.2.12</span> Exercise: Greeting <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-2-12">
+
+<ul>
+<li>Make a function that takes a greeting and one to three number of people and greets them appropriately. Here's some example output.
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(messenger <span class="org-string">"Hello"</span> <span class="org-string">"Clinton"</span>)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Hello, Clinton!</span>
+
+(messenger <span class="org-string">"Hello"</span> <span class="org-string">"Clinton"</span> <span class="org-string">"Alan"</span>)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Hello, Clinton and Alan!</span>
+
+(messenger <span class="org-string">"Hello"</span> <span class="org-string">"Clinton"</span> <span class="org-string">"Alan"</span> <span class="org-string">"all of you"</span>)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Hello, Clinton, Alan, and all of you!</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-2-13" class="outline-4">
+<h4 id="sec-3-2-13"><span class="section-number-4">3.2.13</span> <code>str</code> will be necessary to make this work.</h4>
+<div class="outline-text-4" id="text-3-2-13">
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-2-14" class="outline-4">
+<h4 id="sec-3-2-14"><span class="section-number-4">3.2.14</span> Exercise: Greeting Solution <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-2-14">
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">defn</span> <span class="org-function-name">messenger</span>
+ ([greeting who] (<span class="org-variable-name">str</span> greeting <span class="org-string">", "</span> who <span class="org-string">"!"</span>))
+ ([greeting who1 who2] (<span class="org-variable-name">str</span> greeting <span class="org-string">", "</span> who1 <span class="org-string">" and "</span> who2 <span class="org-string">"!"</span>))
+ ([greeting who1 who2 who3]
+ (<span class="org-variable-name">str</span> greeting <span class="org-string">", "</span> who1 <span class="org-string">", "</span> who2 <span class="org-string">", and "</span> who3 <span class="org-string">"!"</span>)))
+</pre>
+
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-3" class="outline-3">
+<h3 id="sec-3-3"><span class="section-number-3">3.3</span> Names and Namespaces <span class="tag"><span class="slide">slide</span></span></h3>
+<div class="outline-text-3" id="text-3-3">
+
+
+
+
+</div>
+
+<div id="outline-container-3-3-1" class="outline-4">
+<h4 id="sec-3-3-1"><span class="section-number-4">3.3.1</span> Namespace Concepts</h4>
+<div class="outline-text-4" id="text-3-3-1">
+
+
+</div>
+
+<div id="outline-container-3-3-1-1" class="outline-5">
+<h5 id="sec-3-3-1-1"><span class="section-number-5">3.3.1.1</span> Why Namespaces? <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-3-1-1">
+
+<ul>
+<li id="sec-3-3-1-1-1">Re-use common names in different contexts<br/>
+<ul>
+<li id="sec-3-3-1-1-1-1">e.g. clojure.core/replace and clojure.string/replace<br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-1-1-2">Separate application "layers" or "components"<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-1-1-3">Libraries<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-1-1-4">Separate "public API" and "internal implementation"<br/>
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-3-1-2" class="outline-5">
+<h5 id="sec-3-3-1-2"><span class="section-number-5">3.3.1.2</span> Namespace-Qualified Vars <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-3-1-2">
+
+
+
+
+<pre class="src src-clojure"><span class="org-comment-delimiter">;; </span><span class="org-comment">In the namespace "foo.bar"</span>
+(<span class="org-keyword">defn</span> <span class="org-function-name">hello</span> [] (<span class="org-variable-name">println</span> <span class="org-string">"Hello, World!"</span>))
+
+<span class="org-comment-delimiter">;; </span><span class="org-comment">In another namespace</span>
+(foo.bar/hello) <span class="org-comment-delimiter">; </span><span class="org-comment">namespace-qualified</span>
+</pre>
+
+</div>
+
+</div>
+
+<div id="outline-container-3-3-1-3" class="outline-5">
+<h5 id="sec-3-3-1-3"><span class="section-number-5">3.3.1.3</span> Namespace Operations <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-3-1-3">
+
+<ul>
+<li id="sec-3-3-1-3-1">Load: find source on classpath & eval it<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-1-3-2">Alias: make shorter name for namespace-qualified symbols<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-1-3-3">Refer: copy symbol bindings from another namespace into current namespace<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-1-3-4">Import: make Java class names available in current namespace<br/>
+
+</li>
+</ul>
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-3-2" class="outline-4">
+<h4 id="sec-3-3-2"><span class="section-number-4">3.3.2</span> <code>ns</code> macro</h4>
+<div class="outline-text-4" id="text-3-3-2">
+
+
+</div>
+
+<div id="outline-container-3-3-2-1" class="outline-5">
+<h5 id="sec-3-3-2-1"><span class="section-number-5">3.3.2.1</span> <code>ns</code> Declaration <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-3-2-1">
+
+<ul>
+<li id="sec-3-3-2-1-1">Creates namespace and loads, aliases what you need<br/>
+<ul>
+<li id="sec-3-3-2-1-1-1">At top of file<br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-2-1-2">Refers all of <code>clojure.core</code><br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-2-1-3">Imports all of <code>java.lang</code><br/>
+
+
+
+
+<pre class="src src-clojure"><span class="org-comment-delimiter">;; </span><span class="org-comment">in file foo/bar/baz_quux.clj</span>
+(<span class="org-builtin">ns</span> foo.bar.baz-quux)
+</pre>
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-3-2-2" class="outline-5">
+<h5 id="sec-3-3-2-2"><span class="section-number-5">3.3.2.2</span> <code>require</code> <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-3-2-2">
+
+<ul>
+<li id="sec-3-3-2-2-1">Loads the namespace if not already loaded<br/>
+<ul>
+<li id="sec-3-3-2-2-1-1">Argument is a symbol, must be quoted<br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-2-2-2">Have to refer to things with fully-qualified names<br/>
+
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">ns</span> my-ns
+ (<span class="org-constant">:require</span> clojure.set))
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> nil</span>
+
+(clojure.set/<span class="org-type">union</span> #{1 2} #{2 3 4})
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> #{1 2 3 4}</span>
+</pre>
+
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-3-2-3" class="outline-5">
+<h5 id="sec-3-3-2-3"><span class="section-number-5">3.3.2.3</span> <code>require :as</code> <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-3-2-3">
+
+<ul>
+<li id="sec-3-3-2-3-1">Loads the namespace if not already loaded<br/>
+<ul>
+<li id="sec-3-3-2-3-1-1">Argument is a vector, must be quoted<br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-2-3-2">Aliases the namespace to alternate name<br/>
+
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">ns</span> my-ns
+ (<span class="org-constant">:require</span> [clojure.set <span class="org-constant">:as</span> set]))
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> nil</span>
+
+<span class="org-comment-delimiter">;; </span><span class="org-comment">"set" is an alias for "clojure.set"</span>
+(set/<span class="org-type">union</span> #{1 2} #{2 3 4})
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> #{1 2 3 4}</span>
+</pre>
+
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-3-2-4" class="outline-5">
+<h5 id="sec-3-3-2-4"><span class="section-number-5">3.3.2.4</span> <code>use</code> <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-3-2-4">
+
+<ul>
+<li id="sec-3-3-2-4-1">Loads the namespace if not already loaded<br/>
+<ul>
+<li id="sec-3-3-2-4-1-1">Argument is a symbol, must be quoted<br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-2-4-2">Refers all symbols into current namespace<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-2-4-3">Warns when symbols clash<br/>
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-3-2-5" class="outline-5">
+<h5 id="sec-3-3-2-5"><span class="section-number-5">3.3.2.5</span> <code>use</code> Example <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-3-2-5">
+
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">ns</span> my-ns
+ (<span class="org-constant">:use</span> clojure.string))
+<span class="org-comment-delimiter">;; </span><span class="org-comment">WARNING: reverse already refers</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">to: #'clojure.core/reverse in</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">namespace: user, being reversed</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">by: #'clojure.string/reverse</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">...</span>
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> nil</span>
+
+(<span class="org-variable-name">reverse</span> <span class="org-string">"hello"</span>)
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> "olleh"</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-3-2-6" class="outline-5">
+<h5 id="sec-3-3-2-6"><span class="section-number-5">3.3.2.6</span> <code>use :only</code> <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-3-2-6">
+
+<ul>
+<li id="sec-3-3-2-6-1">Loads the namespace if not already loaded<br/>
+<ul>
+<li id="sec-3-3-2-6-1-1">Argument is a vector, must be quoted<br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-2-6-2">Refers only specified symbols into current namespace<br/>
+
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">ns</span> my-ns
+ (<span class="org-constant">:use</span> [clojure.string <span class="org-constant">:only</span> (<span class="org-type">join</span>)]))
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> nil</span>
+(<span class="org-type">join</span> <span class="org-string">","</span> [1 2 3])
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> "1,2,3"</span>
+</pre>
+
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-3-2-7" class="outline-5">
+<h5 id="sec-3-3-2-7"><span class="section-number-5">3.3.2.7</span> <code>import</code> <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-3-2-7">
+
+<ul>
+<li id="sec-3-3-2-7-1">Makes Java classes available w/o package prefix in current namespace<br/>
+<ul>
+<li id="sec-3-3-2-7-1-1">Argument is a list, quoting is optional<br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-2-7-2">Does not support aliases/renaming<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-2-7-3">Does not support Java's <code>import *</code><br/>
+
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">ns</span> my-ns
+ (<span class="org-constant">:import</span> (java.io <span class="org-preprocessor">FileReader</span> <span class="org-preprocessor">File</span>))
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> nil</span>
+(<span class="org-preprocessor">FileReader.</span> (<span class="org-preprocessor">File.</span> <span class="org-string">"readme.txt"</span>))
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> #<FileReader ...></span>
+</pre>
+
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-3-2-8" class="outline-5">
+<h5 id="sec-3-3-2-8"><span class="section-number-5">3.3.2.8</span> <code>ns</code> Complete Example <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-3-2-8">
+
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">ns</span> name
+ (<span class="org-constant">:require</span> [some.ns.foo <span class="org-constant">:as</span> foo]
+ [other.ns.bar <span class="org-constant">:as</span> bar])
+ (<span class="org-constant">:use</span> [this.ns.baz <span class="org-constant">:only</span> (a b c)]
+ [that.ns.quux <span class="org-constant">:only</span> (d e f)])
+ (<span class="org-constant">:import</span> (java.io <span class="org-preprocessor">File</span> <span class="org-preprocessor">FileWriter</span>)
+ (java.net URL URI)))
+</pre>
+
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-3-2-9" class="outline-5">
+<h5 id="sec-3-3-2-9"><span class="section-number-5">3.3.2.9</span> Namespaces and Files <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-3-2-9">
+
+<ul>
+<li id="sec-3-3-2-9-1">For require/use to work, have to find code defining namespace<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-2-9-2">Clojure converts namespace name to path and looks on CLASSPATH<br/>
+<ul>
+<li id="sec-3-3-2-9-2-1">Dots in namespace name become /<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-2-9-2-2">Hyphens become underscores<br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-2-9-3">Idiomatic to define namespace per file<br/>
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-3-2-10" class="outline-5">
+<h5 id="sec-3-3-2-10"><span class="section-number-5">3.3.2.10</span> Namespaces in the REPL <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-3-2-10">
+
+<ul>
+<li id="sec-3-3-2-10-1"><code>in-ns</code> switches to namespace<br/>
+<ul>
+<li id="sec-3-3-2-10-1-1">Creates namespace if it doesn't exist<br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-2-10-2">Argument is a symbol, must be quoted<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-3-2-10-3">REPL always starts in namespace "user"<br/>
+
+
+
+
+<pre class="src src-clojure">user=> (<span class="org-builtin">in-ns</span> 'foo.bar.baz)
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> nil</span>
+foo.bar.baz=>
+</pre>
+
+
+
+
+</li>
+</ul>
+</div>
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-4" class="outline-3">
+<h3 id="sec-3-4"><span class="section-number-3">3.4</span> Working with Java <span class="tag"><span class="slide">slide</span></span></h3>
+<div class="outline-text-3" id="text-3-4">
+
+
+
+
+</div>
+
+<div id="outline-container-3-4-1" class="outline-4">
+<h4 id="sec-3-4-1"><span class="section-number-4">3.4.1</span> Invoking Java code <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-4-1">
+
+
+<ul>
+<li>Clojure provides operational forms for Java invocation
+</li>
+</ul>
+
+
+<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<caption></caption>
+<colgroup><col class="left" /><col class="left" /><col class="left" />
+</colgroup>
+<thead>
+<tr><th scope="col" class="left">Task</th><th scope="col" class="left">Java</th><th scope="col" class="left">Clojure</th></tr>
+</thead>
+<tbody>
+<tr><td class="left">Instantiation</td><td class="left"><code>new Widget("foo")</code></td><td class="left"><code>(Widget. "foo")</code></td></tr>
+<tr><td class="left">Instance method</td><td class="left"><code>rnd.nextInt()</code></td><td class="left"><code>(.nextInt rnd)</code></td></tr>
+<tr><td class="left">Instance field</td><td class="left"><code>object.field</code></td><td class="left"><code>(.-field object)</code></td></tr>
+<tr><td class="left">Static method</td><td class="left"><code>Math.sqrt(25)</code></td><td class="left"><code>(Math/sqrt 25)</code></td></tr>
+<tr><td class="left">Static field</td><td class="left"><code>Math.PI</code></td><td class="left"><code>Math/PI</code></td></tr>
+</tbody>
+</table>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-4-2" class="outline-4">
+<h4 id="sec-3-4-2"><span class="section-number-4">3.4.2</span> Chaining access <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-4-2">
+
+
+<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<caption></caption>
+<colgroup><col class="left" /><col class="left" />
+</colgroup>
+<thead>
+<tr><th scope="col" class="left">Language</th><th scope="col" class="left">Syntax</th></tr>
+</thead>
+<tbody>
+<tr><td class="left">java</td><td class="left"><code>person.getAddress().getZipCode()</code></td></tr>
+<tr><td class="left">clojure</td><td class="left"><code>(.getZipCode (.getAddress person))</code></td></tr>
+<tr><td class="left">clojure sugar</td><td class="left"><code>(.. person getAddress getZipCode)</code></td></tr>
+</tbody>
+</table>
+
+
+
+</div>
+
+<div id="outline-container-3-4-2-1" class="outline-5">
+<h5 id="sec-3-4-2-1"><span class="section-number-5">3.4.2.1</span> Notes <span class="tag"><span class="notes">notes</span></span></h5>
+<div class="outline-text-5" id="text-3-4-2-1">
+
+
+<ul>
+<li>Just a taste of macros
+</li>
+<li>Clojure has fewer parens than Java!
+</li>
+</ul>
+
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-4-3" class="outline-4">
+<h4 id="sec-3-4-3"><span class="section-number-4">3.4.3</span> Atomic data types <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-4-3">
+
+
+<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<caption></caption>
+<colgroup><col class="left" /><col class="left" /><col class="left" />
+</colgroup>
+<thead>
+<tr><th scope="col" class="left">Type</th><th scope="col" class="left">Example</th><th scope="col" class="left">Java equivalent</th></tr>
+</thead>
+<tbody>
+<tr><td class="left">string</td><td class="left"><code>"foo"</code></td><td class="left">String</td></tr>
+<tr><td class="left">character</td><td class="left"><code>\f</code></td><td class="left">Character</td></tr>
+<tr><td class="left">regex</td><td class="left"><code>#"fo*"</code></td><td class="left">Pattern</td></tr>
+<tr><td class="left">integer</td><td class="left"><code>42</code></td><td class="left">Long</td></tr>
+<tr><td class="left">arbitrary-precision integer</td><td class="left"><code>42N</code></td><td class="left">clojure.lang.BigInt</td></tr>
+<tr><td class="left">double</td><td class="left"><code>3.14159</code></td><td class="left">Double</td></tr>
+<tr><td class="left">arbitrary-precision decimal</td><td class="left"><code>3.14159M</code></td><td class="left">BigDecimal</td></tr>
+</tbody>
+</table>
+
+
+
+</div>
+
+<div id="outline-container-3-4-3-1" class="outline-5">
+<h5 id="sec-3-4-3-1"><span class="section-number-5">3.4.3.1</span> Notes <span class="tag"><span class="notes">notes</span></span></h5>
+<div class="outline-text-5" id="text-3-4-3-1">
+
+
+<ul>
+<li>Clojure types are Java types
+</li>
+<li>clojure.lang.BigInt fixes bugs in Java BigInteger
+</li>
+</ul>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-4-3-2" class="outline-5">
+<h5 id="sec-3-4-3-2"><span class="section-number-5">3.4.3.2</span> Atomic data types <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-4-3-2">
+
+
+<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<caption></caption>
+<colgroup><col class="left" /><col class="left" /><col class="left" />
+</colgroup>
+<thead>
+<tr><th scope="col" class="left">Type</th><th scope="col" class="left">Example</th><th scope="col" class="left">Java equivalent</th></tr>
+</thead>
+<tbody>
+<tr><td class="left">boolean</td><td class="left"><code>true</code></td><td class="left">Boolean</td></tr>
+<tr><td class="left">nil</td><td class="left"><code>nil</code></td><td class="left"><code>null</code></td></tr>
+<tr><td class="left">symbol</td><td class="left"><code>foo</code></td><td class="left">clojure.lang.Symbol</td></tr>
+<tr><td class="left">keyword</td><td class="left"><code>:foo</code></td><td class="left">clojure.lang.Keyword</td></tr>
+</tbody>
+</table>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-4-3-3" class="outline-5">
+<h5 id="sec-3-4-3-3"><span class="section-number-5">3.4.3.3</span> Composite data types <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-4-3-3">
+
+
+<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<caption></caption>
+<colgroup><col class="left" /><col class="left" /><col class="left" />
+</colgroup>
+<thead>
+<tr><th scope="col" class="left">Type</th><th scope="col" class="left">Example</th><th scope="col" class="left">Java equivalent</th></tr>
+</thead>
+<tbody>
+<tr><td class="left">list</td><td class="left"><code>(1 2 3)</code></td><td class="left">java.util.List*</td></tr>
+<tr><td class="left">vector</td><td class="left"><code>[4 5 6]</code></td><td class="left">java.util.List*</td></tr>
+<tr><td class="left">map</td><td class="left"><code>{:a 1 :b 2}</code></td><td class="left">java.util.Map*</td></tr>
+<tr><td class="left">set</td><td class="left"><code>#{3 7 9}</code></td><td class="left">java.util.Set*</td></tr>
+</tbody>
+</table>
+
+
+<ul>
+<li>*read-only
+</li>
+</ul>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-4-3-4" class="outline-5">
+<h5 id="sec-3-4-3-4"><span class="section-number-5">3.4.3.4</span> Java methods vs functions <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-4-3-4">
+
+
+<ul>
+<li>Java methods are not Clojure functions
+</li>
+<li>Can't store them, pass them as arguments
+</li>
+<li>Can wrap them in functions when necessary
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure"><span class="org-comment-delimiter">;; </span><span class="org-comment">make a function to invoke .length on arg</span>
+(<span class="org-variable-name">fn</span> [obj] (<span class="org-preprocessor">.length</span> obj))
+</pre>
+
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-4-4" class="outline-4">
+<h4 id="sec-3-4-4"><span class="section-number-4">3.4.4</span> Generating sound with javax.sound.midi <span class="tag"><span class="slide">slide</span></span></h4>
+<div class="outline-text-4" id="text-3-4-4">
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">ns</span> tutorial.midi
+ (<span class="org-constant">:import</span> (javax.sound.midi <span class="org-preprocessor">MidiSystem</span> <span class="org-preprocessor">Synthesizer</span>)))
+
+(<span class="org-keyword">defn</span> <span class="org-function-name">play-a-note</span> [note velocity duration]
+ (<span class="org-builtin">with-open</span> [synth (<span class="org-builtin">doto</span> (<span class="org-preprocessor">MidiSystem/getSynthesizer</span>) <span class="org-preprocessor">.open</span>)]
+ (<span class="org-builtin">let</span> [channel (<span class="org-variable-name">aget</span> (<span class="org-preprocessor">.getChannels</span> synth) 0)]
+ (<span class="org-preprocessor">.noteOn</span> channel note velocity)
+ (<span class="org-preprocessor">Thread/sleep</span> duration))))
+
+(play-a-note 60 127 3000)
+
+</pre>
+
+
+
+</div>
+
+<div id="outline-container-3-4-4-1" class="outline-5">
+<h5 id="sec-3-4-4-1"><span class="section-number-5">3.4.4.1</span> Exercise: Make Some Noise! <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-4-4-1">
+
+
+<ul>
+<li id="sec-3-4-4-1-1">Find the code in <code>src/tutorial/midi.clj</code><br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-4-4-1-2">Can you play a progression of notes?<br/>
+
+
+
+</li>
+</ul>
+</div>
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-5" class="outline-3">
+<h3 id="sec-3-5"><span class="section-number-3">3.5</span> Collections <span class="tag"><span class="slide">slide</span></span></h3>
+<div class="outline-text-3" id="text-3-5">
+
+
+
+</div>
+
+<div id="outline-container-3-5-1" class="outline-4">
+<h4 id="sec-3-5-1"><span class="section-number-4">3.5.1</span> Overview</h4>
+<div class="outline-text-4" id="text-3-5-1">
+
+
+
+</div>
+
+<div id="outline-container-3-5-1-1" class="outline-5">
+<h5 id="sec-3-5-1-1"><span class="section-number-5">3.5.1.1</span> Wisdom of the Ancients <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-1-1">
+
+
+<ul>
+<li>"It is better to have 100 functions operate on one data structure than to have 10 functions operate on 10 data structures." - Alan J. Perlis
+</li>
+</ul>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-1-2" class="outline-5">
+<h5 id="sec-3-5-1-2"><span class="section-number-5">3.5.1.2</span> Working With Data <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-1-2">
+
+
+<ul>
+<li>Clojure provides extensive facilities for representing and manipulating data
+</li>
+<li>Small number of data structures
+</li>
+<li>Seq abstraction common across data structures & more
+</li>
+<li>Large library of functions across all of them
+</li>
+</ul>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-1-3" class="outline-5">
+<h5 id="sec-3-5-1-3"><span class="section-number-5">3.5.1.3</span> Immutability <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-1-3">
+
+
+<ul>
+<li>The values of simple types are immutable
+<ul>
+<li>4, 0.5, true
+</li>
+</ul>
+
+</li>
+<li>In Clojure, the values of compound data structures are immutable too
+<ul>
+<li>Key to Clojure's concurrency model
+</li>
+</ul>
+
+</li>
+<li>Code never changes values, generates new ones to refer to instead
+</li>
+<li>Persistent data structures ensure this is efficient in time and space
+</li>
+</ul>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-1-4" class="outline-5">
+<h5 id="sec-3-5-1-4"><span class="section-number-5">3.5.1.4</span> Persistent Data Structures <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-1-4">
+
+
+<ul>
+<li>New values built from old values + modifications
+</li>
+<li>New values are not full copies
+</li>
+<li>New value and old value are both available after 'changes'
+</li>
+<li>Collection maintains its performance guarantees for most operations
+</li>
+<li>All Clojure data structures are persistent
+</li>
+</ul>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-1-5" class="outline-5">
+<h5 id="sec-3-5-1-5"><span class="section-number-5">3.5.1.5</span> Example: Linked List <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-1-5">
+
+
+<p>
+<img src="slide-assets/collections-linked-list-1.svg" alt="slide-assets/collections-linked-list-1.svg" />
+</p>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-1-6" class="outline-5">
+<h5 id="sec-3-5-1-6"><span class="section-number-5">3.5.1.6</span> Example: Linked List <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-1-6">
+
+
+<p>
+<img src="slide-assets/collections-linked-list-2.svg" alt="slide-assets/collections-linked-list-2.svg" />
+</p>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-1-7" class="outline-5">
+<h5 id="sec-3-5-1-7"><span class="section-number-5">3.5.1.7</span> Example: Binary Tree <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-1-7">
+
+
+<p>
+<img src="slide-assets/collections-tree-1.svg" alt="slide-assets/collections-tree-1.svg" />
+</p>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-1-8" class="outline-5">
+<h5 id="sec-3-5-1-8"><span class="section-number-5">3.5.1.8</span> Example: Tree Structure <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-1-8">
+
+
+<p>
+<img src="slide-assets/collections-structural-sharing.svg" alt="slide-assets/collections-structural-sharing.svg" />
+</p>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-1-9" class="outline-5">
+<h5 id="sec-3-5-1-9"><span class="section-number-5">3.5.1.9</span> Concrete Data Structures <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-1-9">
+
+
+<ul>
+<li>Sequential
+<ul>
+<li>List, Vector
+</li>
+</ul>
+
+</li>
+<li>Associative
+<ul>
+<li>Map, Vector
+</li>
+</ul>
+
+</li>
+<li>Both types support declarative destructuring
+</li>
+</ul>
+
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-2" class="outline-4">
+<h4 id="sec-3-5-2"><span class="section-number-4">3.5.2</span> Sequential</h4>
+<div class="outline-text-4" id="text-3-5-2">
+
+
+
+</div>
+
+<div id="outline-container-3-5-2-1" class="outline-5">
+<h5 id="sec-3-5-2-1"><span class="section-number-5">3.5.2.1</span> Lists <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-2-1">
+
+
+<ul>
+<li>Singly-linked lists
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">() <span class="org-comment-delimiter">;</span><span class="org-comment">=> the empty list</span>
+(1 2 3) <span class="org-comment-delimiter">; </span><span class="org-comment">error because 1 not function</span>
+(<span class="org-variable-name">list</span> 1 2 3) <span class="org-comment-delimiter">;</span><span class="org-comment">=> (1 2 3)</span>
+'(1 2 3) <span class="org-comment-delimiter">;</span><span class="org-comment">=> (1 2 3)</span>
+(<span class="org-variable-name">conj</span> '(2 3) 1) <span class="org-comment-delimiter">;</span><span class="org-comment">=> (1 2 3)</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-2-2" class="outline-5">
+<h5 id="sec-3-5-2-2"><span class="section-number-5">3.5.2.2</span> Vectors <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-2-2">
+
+
+<ul>
+<li>Indexed, random-access, array-like
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">[] <span class="org-comment-delimiter">;</span><span class="org-comment">=> the empty vector</span>
+[1 2 3] <span class="org-comment-delimiter">;</span><span class="org-comment">=> [1 2 3]</span>
+(<span class="org-variable-name">vector</span> 1 2 3) <span class="org-comment-delimiter">;</span><span class="org-comment">=> [1 2 3]</span>
+(<span class="org-variable-name">vec</span> '(1 2 3)) <span class="org-comment-delimiter">;</span><span class="org-comment">=> [1 2 3]</span>
+(<span class="org-variable-name">nth</span> [1 2 3] 0) <span class="org-comment-delimiter">;</span><span class="org-comment">=> 1</span>
+(<span class="org-variable-name">conj</span> [1 2] 3) <span class="org-comment-delimiter">;</span><span class="org-comment">=> [1 2 3]</span>
+</pre>
+
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-3" class="outline-4">
+<h4 id="sec-3-5-3"><span class="section-number-4">3.5.3</span> Associative</h4>
+<div class="outline-text-4" id="text-3-5-3">
+
+
+
+</div>
+
+<div id="outline-container-3-5-3-1" class="outline-5">
+<h5 id="sec-3-5-3-1"><span class="section-number-5">3.5.3.1</span> Maps <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-3-1">
+
+
+<ul>
+<li>Key => value, hash table, dictionary
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">{} <span class="org-comment-delimiter">;</span><span class="org-comment">=> the empty map</span>
+{<span class="org-constant">:a</span> 1 <span class="org-constant">:b</span> 2} <span class="org-comment-delimiter">;</span><span class="org-comment">=> {:a 1 :b 2}</span>
+(<span class="org-constant">:a</span> {<span class="org-constant">:a</span> 1 <span class="org-constant">:b</span> 2}) <span class="org-comment-delimiter">;</span><span class="org-comment">=> 1</span>
+({<span class="org-constant">:a</span> 1 <span class="org-constant">:b</span> 2} <span class="org-constant">:a</span>) <span class="org-comment-delimiter">;</span><span class="org-comment">=> 1</span>
+(<span class="org-variable-name">assoc</span> {<span class="org-constant">:a</span> 1} <span class="org-constant">:b</span> 2) <span class="org-comment-delimiter">;</span><span class="org-comment">=> {:a 1 :b 2}</span>
+(<span class="org-variable-name">dissoc</span> {<span class="org-constant">:a</span> 1} <span class="org-constant">:a</span>) <span class="org-comment-delimiter">;</span><span class="org-comment">=> {}</span>
+(<span class="org-variable-name">conj</span> {} [<span class="org-constant">:a</span> 1]) <span class="org-comment-delimiter">;</span><span class="org-comment">=> {:a 1}</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-3-2" class="outline-5">
+<h5 id="sec-3-5-3-2"><span class="section-number-5">3.5.3.2</span> Nested Access <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-3-2">
+
+
+<ul>
+<li>Helper functions access data via path specified by keys
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">def</span> <span class="org-function-name">jdoe</span> {<span class="org-constant">:name</span> <span class="org-string">"John Doe"</span>, <span class="org-constant">:address</span> {<span class="org-constant">:zip</span> 27705}})
+
+(<span class="org-variable-name">get-in</span> jdoe [<span class="org-constant">:address</span> <span class="org-constant">:zip</span>]) <span class="org-comment-delimiter">;</span><span class="org-comment">=> 27705</span>
+
+(<span class="org-variable-name">assoc-in</span> jdoe [<span class="org-constant">:address</span> <span class="org-constant">:zip</span>] 27514)
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> {:name "John Doe", :address {:zip 27514}}</span>
+
+(<span class="org-variable-name">update-in</span> jdoe [<span class="org-constant">:address</span> <span class="org-constant">:zip</span>] inc)
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> {:name "John Doe", :address {:zip 27706}}</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-3-3" class="outline-5">
+<h5 id="sec-3-5-3-3"><span class="section-number-5">3.5.3.3</span> Sets <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-3-3">
+
+
+<ul>
+<li>Set of distinct values
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">#{} <span class="org-comment-delimiter">;</span><span class="org-comment">=> the empty set</span>
+#{<span class="org-constant">:a</span> <span class="org-constant">:b</span>} <span class="org-comment-delimiter">;</span><span class="org-comment">=> #{:a :b}</span>
+(#{<span class="org-constant">:a</span> <span class="org-constant">:b</span>} <span class="org-constant">:a</span>) <span class="org-comment-delimiter">;</span><span class="org-comment">=> :a</span>
+(<span class="org-variable-name">conj</span> #{} <span class="org-constant">:a</span>) <span class="org-comment-delimiter">;</span><span class="org-comment">=> #{:a}</span>
+(<span class="org-variable-name">contains?</span> #{<span class="org-constant">:a</span>} <span class="org-constant">:a</span>) <span class="org-comment-delimiter">;</span><span class="org-comment">=> true</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-3-4" class="outline-5">
+<h5 id="sec-3-5-3-4"><span class="section-number-5">3.5.3.4</span> clojure.set Examples <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-3-4">
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-variable-name">require</span> '[clojure.set <span class="org-constant">:as</span> set])
+(set/<span class="org-type">union</span> #{<span class="org-constant">:a</span>} #{<span class="org-constant">:b</span>}) <span class="org-comment-delimiter">;</span><span class="org-comment">=> #{:a :b}</span>
+(set/<span class="org-type">difference</span> #{<span class="org-constant">:a</span> <span class="org-constant">:b</span>} #{<span class="org-constant">:a</span>}) <span class="org-comment-delimiter">;</span><span class="org-comment">=> #{:b}</span>
+(set/<span class="org-type">intersection</span> #{<span class="org-constant">:a</span> <span class="org-constant">:b</span>} #{<span class="org-constant">:b</span> <span class="org-constant">:c</span>}) <span class="org-comment-delimiter">;</span><span class="org-comment">=> #{:b}</span>
+</pre>
+
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-4" class="outline-4">
+<h4 id="sec-3-5-4"><span class="section-number-4">3.5.4</span> Destructuring</h4>
+<div class="outline-text-4" id="text-3-5-4">
+
+
+
+</div>
+
+<div id="outline-container-3-5-4-1" class="outline-5">
+<h5 id="sec-3-5-4-1"><span class="section-number-5">3.5.4.1</span> Destructuring <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-4-1">
+
+
+<ul>
+<li>Declarative way to pull apart compound data
+<ul>
+<li>vs. explicit, verbose access
+</li>
+</ul>
+
+</li>
+<li>Works for both sequential and associative data structures
+</li>
+<li>Nests for deep, arbitrary access
+</li>
+</ul>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-4-2" class="outline-5">
+<h5 id="sec-3-5-4-2"><span class="section-number-5">3.5.4.2</span> Where You Can Destructure <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-4-2">
+
+
+<ul>
+<li>Destructuring works in <code>fn</code> and <code>defn</code> params, <code>let</code> bindings
+<ul>
+<li>And anything built on top of them
+</li>
+</ul>
+
+</li>
+</ul>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-4-3" class="outline-5">
+<h5 id="sec-3-5-4-3"><span class="section-number-5">3.5.4.3</span> Sequential Destructuring <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-4-3">
+
+
+<ul>
+<li>Provide vector of symbols to bind by position
+<ul>
+<li>Binds to <code>nil</code> if there's no data
+</li>
+</ul>
+
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">def</span> <span class="org-function-name">stuff</span> [7 8 9 10 11]) <span class="org-comment-delimiter">;</span><span class="org-comment">=> #'user/stuff</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Bind a, b, c to first 3 values in stuff</span>
+(<span class="org-builtin">let</span> [[a b c] stuff]
+ (<span class="org-variable-name">list</span> (<span class="org-variable-name">+</span> a b) (<span class="org-variable-name">+</span> b c)))
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> (15 17)</span>
+(<span class="org-builtin">let</span> [[a b c d e f] stuff]
+ (<span class="org-variable-name">list</span> d e f))
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> (10 11 nil)</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-4-4" class="outline-5">
+<h5 id="sec-3-5-4-4"><span class="section-number-5">3.5.4.4</span> Sequential Destructuring <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-4-4">
+
+
+<ul>
+<li>Can get "everything else" with <code>&</code>
+<ul>
+<li>Value is a sequence
+</li>
+</ul>
+
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">def</span> <span class="org-function-name">stuff</span> [7 8 9 10 11]) <span class="org-comment-delimiter">;</span><span class="org-comment">=> #'user/stuff</span>
+(<span class="org-builtin">let</span> [[a & others] stuff]
+ (<span class="org-variable-name">println</span> a)
+ (<span class="org-variable-name">println</span> others))
+<span class="org-comment-delimiter">;; </span><span class="org-comment">7</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">(8 9 10 11)</span>
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> nil</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-4-5" class="outline-5">
+<h5 id="sec-3-5-4-5"><span class="section-number-5">3.5.4.5</span> Sequential Destructuring <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-4-5">
+
+
+<ul>
+<li>Idiomatic to use <code>_</code> for values you don't care about
+</li>
+</ul>
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">def</span> <span class="org-function-name">stuff</span> [7 8 9 10 11]) <span class="org-comment-delimiter">;</span><span class="org-comment">=> #'user/stuff</span>
+(<span class="org-builtin">let</span> [[_ & others] stuff] <span class="org-comment-delimiter">; </span><span class="org-comment">skip the first one</span>
+ (<span class="org-variable-name">println</span> others)))
+<span class="org-comment-delimiter">;; </span><span class="org-comment">(8 9 10 11)</span>
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> nil</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-4-6" class="outline-5">
+<h5 id="sec-3-5-4-6"><span class="section-number-5">3.5.4.6</span> Associative Destructuring <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-4-6">
+
+
+<ul>
+<li>Provide map of symbols to bind by key
+<ul>
+<li>Binds to <code>nil</code> if there's no value
+</li>
+</ul>
+
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">def</span> <span class="org-function-name">m</span> {<span class="org-constant">:a</span> 7 <span class="org-constant">:b</span> 4}) <span class="org-comment-delimiter">;</span><span class="org-comment">=> #'user/m</span>
+(<span class="org-builtin">let</span> [{a <span class="org-constant">:a</span>, b <span class="org-constant">:b</span>} m]
+ [a b])
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> [7 4]</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-4-7" class="outline-5">
+<h5 id="sec-3-5-4-7"><span class="section-number-5">3.5.4.7</span> Associative Destructuring <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-4-7">
+
+
+<ul>
+<li>Keys can be inferred from vector of symbols to bind
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">def</span> <span class="org-function-name">m</span> {<span class="org-constant">:a</span> 7 <span class="org-constant">:b</span> 4}) <span class="org-comment-delimiter">;</span><span class="org-comment">=> #'user/m</span>
+(<span class="org-builtin">let</span> [{<span class="org-constant">:keys</span> [a b]} m]
+ [a b])
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> [7 4]</span>
+(<span class="org-builtin">let</span> [{<span class="org-constant">:keys</span> [a b c]} m]
+ [a b c])
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> [7 4 nil]</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-4-8" class="outline-5">
+<h5 id="sec-3-5-4-8"><span class="section-number-5">3.5.4.8</span> Associative Destructuring <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-4-8">
+
+
+<ul>
+<li>Use <code>:or</code> to provide default values for bound keys
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">def</span> <span class="org-function-name">m</span> {<span class="org-constant">:a</span> 7 <span class="org-constant">:b</span> 4}) <span class="org-comment-delimiter">;</span><span class="org-comment">=> #'user/m</span>
+(<span class="org-builtin">let</span> [{<span class="org-constant">:keys</span> [a b c]
+ <span class="org-constant">:or</span> {c 3}} m]
+ [a b c])
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> [7 4 3]</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-4-9" class="outline-5">
+<h5 id="sec-3-5-4-9"><span class="section-number-5">3.5.4.9</span> Named Arguments <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-4-9">
+
+
+<ul>
+<li>Applying vector of keys to <code>&</code> binding emulates named args
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">defn</span> <span class="org-function-name">game</span> [planet & {<span class="org-constant">:keys</span> [human-players computer-players]}]
+ (<span class="org-variable-name">println</span> <span class="org-string">"Total players: "</span> (<span class="org-variable-name">+</span> human-players computer-players)))
+
+(game <span class="org-string">"Mars"</span> <span class="org-constant">:human-players</span> 1 <span class="org-constant">:computer-players</span> 2)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Total players: 3</span>
+</pre>
+
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5" class="outline-4">
+<h4 id="sec-3-5-5"><span class="section-number-4">3.5.5</span> Sequences</h4>
+<div class="outline-text-4" id="text-3-5-5">
+
+
+
+</div>
+
+<div id="outline-container-3-5-5-1" class="outline-5">
+<h5 id="sec-3-5-5-1"><span class="section-number-5">3.5.5.1</span> Sequences <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-1">
+
+
+<ul>
+<li>Abstraction for representing iteration
+</li>
+<li>Backed by a data structure or a function
+<ul>
+<li>Can be lazy and/or "infinite"
+</li>
+</ul>
+
+</li>
+<li>Foundation for large library of functions
+</li>
+</ul>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-2" class="outline-5">
+<h5 id="sec-3-5-5-2"><span class="section-number-5">3.5.5.2</span> Sequence API <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-2">
+
+
+<ul>
+<li><code>(seq coll)</code>
+<ul>
+<li>If collection is non-empty, return seq object on it, else <code>nil</code>
+</li>
+<li>Can't recover input source from seq
+</li>
+</ul>
+
+</li>
+<li><code>(first coll)</code>
+<ul>
+<li>Returns the first element
+</li>
+</ul>
+
+</li>
+<li><code>(rest coll)</code>
+<ul>
+<li>Returns a sequence of the rest of the elements
+</li>
+</ul>
+
+</li>
+<li><code>(cons x coll)</code>
+<ul>
+<li>Returns a new sequence: first is x, rest is coll
+</li>
+</ul>
+
+</li>
+</ul>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-3" class="outline-5">
+<h5 id="sec-3-5-5-3"><span class="section-number-5">3.5.5.3</span> Sequences Over Structures <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-3">
+
+
+<ul>
+<li>Can treat any Clojure data structure as a seq
+<ul>
+<li>Associative structures treated as sequence of pairs
+</li>
+</ul>
+
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">def</span> <span class="org-function-name">a-list</span> '(1 2 3)) <span class="org-comment-delimiter">;</span><span class="org-comment">=> #'user/a-list</span>
+</pre>
+
+
+<p>
+<img src="slide-assets/collections-seq-list-initial.svg" alt="slide-assets/collections-seq-list-initial.svg" />
+</p>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-4" class="outline-5">
+<h5 id="sec-3-5-5-4"><span class="section-number-5">3.5.5.4</span> Sequence Over Structure <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-4">
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-variable-name">first</span> a-list) <span class="org-comment-delimiter">;</span><span class="org-comment">=> 1</span>
+</pre>
+
+
+<p>
+<img src="slide-assets/collections-seq-list-first.svg" alt="slide-assets/collections-seq-list-first.svg" />
+</p>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-5" class="outline-5">
+<h5 id="sec-3-5-5-5"><span class="section-number-5">3.5.5.5</span> Sequence Over Structure <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-5">
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-variable-name">second</span> a-list) <span class="org-comment-delimiter">;</span><span class="org-comment">=> 2</span>
+</pre>
+
+
+<p>
+<img src="slide-assets/collections-seq-list-second.svg" alt="slide-assets/collections-seq-list-second.svg" />
+</p>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-6" class="outline-5">
+<h5 id="sec-3-5-5-6"><span class="section-number-5">3.5.5.6</span> Sequence Over Structure <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-6">
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-variable-name">rest</span> a-list) <span class="org-comment-delimiter">; </span><span class="org-comment">seq</span>
+</pre>
+
+
+<p>
+<img src="slide-assets/collections-seq-list-rest.svg" alt="slide-assets/collections-seq-list-rest.svg" />
+</p>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-7" class="outline-5">
+<h5 id="sec-3-5-5-7"><span class="section-number-5">3.5.5.7</span> Sequences Over Functions <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-7">
+
+
+<ul>
+<li>Can map a generator function to a seq
+</li>
+<li>Seq is lazy, can be infinite
+<ul>
+<li>Can process more than fits in memory
+</li>
+</ul>
+
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">def</span> <span class="org-function-name">a-range</span> (<span class="org-variable-name">range</span> 1 4)) <span class="org-comment-delimiter">;</span><span class="org-comment">=> #'user/a-range</span>
+</pre>
+
+
+<p>
+<img src="slide-assets/collections-seq-lazy-initial.svg" alt="slide-assets/collections-seq-lazy-initial.svg" />
+</p>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-8" class="outline-5">
+<h5 id="sec-3-5-5-8"><span class="section-number-5">3.5.5.8</span> Sequences Over Functions <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-8">
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-variable-name">first</span> a-range) <span class="org-comment-delimiter">;</span><span class="org-comment">=> 1</span>
+</pre>
+
+
+<p>
+<img src="slide-assets/collections-seq-lazy-first.svg" alt="slide-assets/collections-seq-lazy-first.svg" />
+</p>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-9" class="outline-5">
+<h5 id="sec-3-5-5-9"><span class="section-number-5">3.5.5.9</span> Sequences Over Functions <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-9">
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-variable-name">second</span> a-range) <span class="org-comment-delimiter">;</span><span class="org-comment">=> 2</span>
+</pre>
+
+
+<p>
+<img src="slide-assets/collections-seq-lazy-second.svg" alt="slide-assets/collections-seq-lazy-second.svg" />
+</p>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-10" class="outline-5">
+<h5 id="sec-3-5-5-10"><span class="section-number-5">3.5.5.10</span> Sequences Over Functions <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-10">
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-variable-name">rest</span> a-range) <span class="org-comment-delimiter">; </span><span class="org-comment">seq</span>
+</pre>
+
+
+<p>
+<img src="slide-assets/collections-seq-lazy-rest.svg" alt="slide-assets/collections-seq-lazy-rest.svg" />
+</p>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-11" class="outline-5">
+<h5 id="sec-3-5-5-11"><span class="section-number-5">3.5.5.11</span> Sequences in the REPL <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-11">
+
+
+<ul>
+<li>REPL always prints sequences with parens
+<ul>
+<li>But it's not a list!
+</li>
+</ul>
+
+</li>
+<li>Infinite sequences take a long time to print
+</li>
+</ul>
+
+
+
+
+
+<pre class="src src-clojure">(set! *print-length* 10) <span class="org-comment-delimiter">; </span><span class="org-comment">only print 10 things</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-12" class="outline-5">
+<h5 id="sec-3-5-5-12"><span class="section-number-5">3.5.5.12</span> Sequence Library <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-12">
+
+
+<ul>
+<li>Generators
+<ul>
+<li>list, vector, map, SQL ResultSet, Stream, Directory, Iterator, XML, …
+</li>
+</ul>
+
+</li>
+<li>Operations
+<ul>
+<li>map, filter, reduce, count, some, replace, …
+</li>
+</ul>
+
+</li>
+<li>Generators * Operations = Power!
+</li>
+</ul>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-13" class="outline-5">
+<h5 id="sec-3-5-5-13"><span class="section-number-5">3.5.5.13</span> Creating a Sequence <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-13">
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-variable-name">seq</span> [1 2 3]) <span class="org-comment-delimiter">;</span><span class="org-comment">=> (1 2 3) ; not a list</span>
+(<span class="org-variable-name">range</span>) <span class="org-comment-delimiter">;</span><span class="org-comment">=> (0 1 2 ... infinite</span>
+(<span class="org-variable-name">range</span> 3) <span class="org-comment-delimiter">;</span><span class="org-comment">=> (0 1 2)</span>
+(<span class="org-variable-name">range</span> 1 7 2) <span class="org-comment-delimiter">;</span><span class="org-comment">=> (1 3 5)</span>
+(<span class="org-variable-name">iterate</span> #(<span class="org-variable-name">*</span> 2 %) 2) <span class="org-comment-delimiter">;</span><span class="org-comment">=> (2 4 8 16 ... infinite</span>
+(<span class="org-variable-name">re-seq</span> #<span class="org-string">"[aeiou]"</span> <span class="org-string">"clojure"</span>) <span class="org-comment-delimiter">;</span><span class="org-comment">=> ("o" "u" "e")</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-14" class="outline-5">
+<h5 id="sec-3-5-5-14"><span class="section-number-5">3.5.5.14</span> Seq in, Seq out <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-14">
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-variable-name">take</span> 3 (<span class="org-variable-name">range</span>)) <span class="org-comment-delimiter">;</span><span class="org-comment">=> (0 1 2)</span>
+(<span class="org-variable-name">drop</span> 3 (<span class="org-variable-name">range</span>)) <span class="org-comment-delimiter">;</span><span class="org-comment">=> (3 4 5 ... infinite</span>
+(<span class="org-variable-name">map</span> #(<span class="org-variable-name">*</span> % %) [0 1 2 3]) <span class="org-comment-delimiter">;</span><span class="org-comment">=> (0 1 4 9) ; vector treated as seq</span>
+(<span class="org-variable-name">filter</span> even? (<span class="org-variable-name">range</span>)) <span class="org-comment-delimiter">;</span><span class="org-comment">=> (0 2 4 6 ... infinite</span>
+(<span class="org-variable-name">apply</span> str (<span class="org-variable-name">interpose</span> <span class="org-string">","</span> (<span class="org-variable-name">range</span> 3))) <span class="org-comment-delimiter">;</span><span class="org-comment">=> "0,1,2"</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-15" class="outline-5">
+<h5 id="sec-3-5-5-15"><span class="section-number-5">3.5.5.15</span> Using a Seq <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-15">
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-variable-name">reduce</span> + (<span class="org-variable-name">range</span> 4)) <span class="org-comment-delimiter">;</span><span class="org-comment">=> 6</span>
+(<span class="org-variable-name">reduce</span> + 10 (<span class="org-variable-name">range</span> 4)) <span class="org-comment-delimiter">;</span><span class="org-comment">=> 16</span>
+(<span class="org-variable-name">into</span> #{} <span class="org-string">"hello"</span>) <span class="org-comment-delimiter">;</span><span class="org-comment">=> #{\e \h \l \o}</span>
+(<span class="org-variable-name">into</span> {} [[<span class="org-constant">:x</span> 1] [<span class="org-constant">:y</span> 2]]) <span class="org-comment-delimiter">;</span><span class="org-comment">=> {:x 1, :y 2}</span>
+(<span class="org-variable-name">some</span> {2 <span class="org-constant">:b</span> 3 <span class="org-constant">:c</span>} [1 nil 2 3]) <span class="org-comment-delimiter">;</span><span class="org-comment">=> :b</span>
+</pre>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-16" class="outline-5">
+<h5 id="sec-3-5-5-16"><span class="section-number-5">3.5.5.16</span> Adopting the Sequence Mindset <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-16">
+
+
+<ul>
+<li>Sequence library surface space is big
+</li>
+<li>Most things you want to do are in there somewhere
+</li>
+<li>If you find yourself explicitly iterating, look for a function
+</li>
+<li>The Clojure Cheatsheet helps
+</li>
+<li><a href="http://clojure.org/cheatsheet">http://clojure.org/cheatsheet</a>
+</li>
+</ul>
+
+
+</div>
+
+</div>
+
+<div id="outline-container-3-5-5-17" class="outline-5">
+<h5 id="sec-3-5-5-17"><span class="section-number-5">3.5.5.17</span> The Fibonacci Sequence <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-5-17">
+
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">def</span> <span class="org-function-name">fibs</span> <span class="org-comment-delimiter">; </span><span class="org-comment">define a sequence called fibs...</span>
+ (<span class="org-variable-name">map</span> first <span class="org-comment-delimiter">; </span><span class="org-comment">that maps the first value of a pair across...</span>
+ (<span class="org-variable-name">iterate</span> <span class="org-comment-delimiter">; </span><span class="org-comment">a lazy, infinite sequnce that's generated by...</span>
+ (<span class="org-variable-name">fn</span> [[a b]] <span class="org-comment-delimiter">; </span><span class="org-comment">a function that destructures a pair of args...</span>
+ [b (<span class="org-variable-name">+</span> a b)]) <span class="org-comment-delimiter">; </span><span class="org-comment">and returns the next pair in the sequence...</span>
+ [0 1]))) <span class="org-comment-delimiter">; </span><span class="org-comment">starting at [0 1]</span>
+
+(<span class="org-variable-name">take</span> 5 fibs) <span class="org-comment-delimiter">; </span><span class="org-comment">consume as many as you'd like</span>
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> (0 1 1 2 3)</span>
+</pre>
+
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-6" class="outline-4">
+<h4 id="sec-3-5-6"><span class="section-number-4">3.5.6</span> Exercises</h4>
+<div class="outline-text-4" id="text-3-5-6">
+
+
+
+</div>
+
+<div id="outline-container-3-5-6-1" class="outline-5">
+<h5 id="sec-3-5-6-1"><span class="section-number-5">3.5.6.1</span> Exercise: What's That Song? <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-6-1">
+
+<ul>
+<li id="sec-3-5-6-1-1">Go back to <code>midi.clj</code> from the previous exercise.<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-5-6-1-2">Play the song in this data structure:<br/>
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">def</span> <span class="org-function-name">notes</span>
+ [{<span class="org-constant">:note</span> 60 <span class="org-constant">:duration</span> 1}
+ {<span class="org-constant">:note</span> 62 <span class="org-constant">:duration</span> 1}
+ {<span class="org-constant">:note</span> 64 <span class="org-constant">:duration</span> 1}
+ {<span class="org-constant">:note</span> 60 <span class="org-constant">:duration</span> 1}
+ {<span class="org-constant">:note</span> 60 <span class="org-constant">:duration</span> 1}
+ {<span class="org-constant">:note</span> 62 <span class="org-constant">:duration</span> 1}
+ {<span class="org-constant">:note</span> 64 <span class="org-constant">:duration</span> 1}
+ {<span class="org-constant">:note</span> 60 <span class="org-constant">:duration</span> 1}
+ {<span class="org-constant">:note</span> 64 <span class="org-constant">:duration</span> 1}
+ {<span class="org-constant">:note</span> 65 <span class="org-constant">:duration</span> 1}
+ {<span class="org-constant">:note</span> 67 <span class="org-constant">:duration</span> 2}
+ {<span class="org-constant">:note</span> 64 <span class="org-constant">:duration</span> 1}
+ {<span class="org-constant">:note</span> 65 <span class="org-constant">:duration</span> 1}
+ {<span class="org-constant">:note</span> 67 <span class="org-constant">:duration</span> 2}])
+</pre>
+
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-6-2" class="outline-5">
+<h5 id="sec-3-5-6-2"><span class="section-number-5">3.5.6.2</span> Exercise: Improve Your Greeting <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-6-2">
+
+<ul>
+<li id="sec-3-5-6-2-1">Go back to your greeting code from the functions section. Change this so it works for any amount of people.<br/>
+
+
+
+
+<pre class="src src-clojure">(messenger <span class="org-string">"Hello"</span> <span class="org-string">"Clinton"</span>)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Hello, Clinton!</span>
+
+(messenger <span class="org-string">"Hello"</span> <span class="org-string">"Clinton"</span> <span class="org-string">"Alan"</span>)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Hello, Clinton and Alan!</span>
+
+(messenger <span class="org-string">"Hello"</span> <span class="org-string">"Clinton"</span> <span class="org-string">"Alan"</span> <span class="org-string">"all of you"</span>)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Hello, Clinton, Alan, and all of you!</span>
+
+(messenger <span class="org-string">"Hello"</span> <span class="org-string">"Clinton"</span> <span class="org-string">"Alan"</span> <span class="org-string">"Rich"</span> <span class="org-string">"all of you"</span>)
+<span class="org-comment-delimiter">;; </span><span class="org-comment">Hello, Clinton, Alan, Rich, and all of you!</span>
+</pre>
+
+
+</li>
+</ul>
+<ul>
+<li id="sec-3-5-6-2-2"><code>last</code>, <code>butlast</code>, <code>list*</code>, and <code>clojure.string/join</code> will come in very helpful in this exercise.<br/>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-5-6-3" class="outline-5">
+<h5 id="sec-3-5-6-3"><span class="section-number-5">3.5.6.3</span> Exercise: Greeting Solution <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-5-6-3">
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">defn</span> <span class="org-function-name">messenger</span>
+ ([greeting who] (<span class="org-variable-name">str</span> greeting <span class="org-string">", "</span> who <span class="org-string">"!"</span>))
+ ([greeting who1 who2] (<span class="org-variable-name">str</span> greeting <span class="org-string">", "</span> who1 <span class="org-string">" and "</span> who2 <span class="org-string">"!"</span>))
+ ([greeting who1 who2 & whos]
+ (<span class="org-variable-name">str</span>
+ greeting <span class="org-string">", "</span>
+ (clojure.string/<span class="org-type">join</span> <span class="org-string">", "</span> (<span class="org-variable-name">butlast</span> (<span class="org-variable-name">list*</span> who1 who2 whos)))
+ <span class="org-string">", and "</span> (<span class="org-variable-name">last</span> whos) <span class="org-string">"!"</span>)))
+</pre>
+
+
+
+
+</div>
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-6" class="outline-3">
+<h3 id="sec-3-6"><span class="section-number-3">3.6</span> Flow Control <span class="tag"><span class="slide">slide</span></span></h3>
+<div class="outline-text-3" id="text-3-6">
+
+
+
+</div>
+
+<div id="outline-container-3-6-1" class="outline-4">
+<h4 id="sec-3-6-1"><span class="section-number-4">3.6.1</span> Introduction</h4>
+<div class="outline-text-4" id="text-3-6-1">
+
+
+</div>
+
+<div id="outline-container-3-6-1-1" class="outline-5">
+<h5 id="sec-3-6-1-1"><span class="section-number-5">3.6.1.1</span> Expressions in Clojure <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-1-1">
+
+<ul>
+<li id="sec-3-6-1-1-1">Everything in Clojure is an expression<br/>
+<ul>
+<li id="sec-3-6-1-1-1-1">Always returns a value<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-6-1-1-1-2">A block of multiple expressions returns the last value<br/>
+<ul>
+<li id="sec-3-6-1-1-1-2-1">E.g., <code>let</code>, <code>do</code>, <code>fn</code><br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-3-6-1-1-1-3">Expressions exclusively for side-effects return <code>nil</code><br/>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-6-1-2" class="outline-5">
+<h5 id="sec-3-6-1-2"><span class="section-number-5">3.6.1.2</span> Flow Control Expressions <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-1-2">
+
+<ul>
+<li id="sec-3-6-1-2-1">Flow control operators are expressions too<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-6-1-2-2">Composable, can use them anywhere<br/>
+<ul>
+<li id="sec-3-6-1-2-2-1">Less duplicate code<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-6-1-2-2-2">Fewer intermediate variables<br/>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-6-1-3" class="outline-5">
+<h5 id="sec-3-6-1-3"><span class="section-number-5">3.6.1.3</span> Truthiness <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-1-3">
+
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">if</span> true <span class="org-constant">:truthy</span> <span class="org-constant">:falsey</span>)
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> :truthy</span>
+(<span class="org-builtin">if</span> (<span class="org-preprocessor">Object.</span>) <span class="org-constant">:truthy</span> <span class="org-constant">:falsey</span>) <span class="org-comment-delimiter">; </span><span class="org-comment">objects are true</span>
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> :truthy</span>
+(<span class="org-builtin">if</span> [] <span class="org-constant">:truthy</span> <span class="org-constant">:falsey</span>) <span class="org-comment-delimiter">; </span><span class="org-comment">empty collections are true</span>
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> :truthy</span>
+
+(<span class="org-builtin">if</span> false <span class="org-constant">:truthy</span> <span class="org-constant">:falsey</span>)
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> :falsey</span>
+(<span class="org-builtin">if</span> nil <span class="org-constant">:truthy</span> <span class="org-constant">:falsey</span>) <span class="org-comment-delimiter">; </span><span class="org-comment">nil is false</span>
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> :falsey</span>
+(<span class="org-builtin">if</span> (<span class="org-variable-name">seq</span> []) <span class="org-constant">:truthy</span> <span class="org-constant">:falsey</span>) <span class="org-comment-delimiter">; </span><span class="org-comment">seq on empty coll is nil</span>
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> :falsey</span>
+</pre>
+
+</div>
+
+</div>
+
+<div id="outline-container-3-6-1-4" class="outline-5">
+<h5 id="sec-3-6-1-4"><span class="section-number-5">3.6.1.4</span> if <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-1-4">
+
+
+
+
+<pre class="src src-clojure">(<span class="org-variable-name">str</span> <span class="org-string">"2 is "</span> (<span class="org-builtin">if</span> (<span class="org-variable-name">even?</span> 2) <span class="org-string">"even"</span> <span class="org-string">"odd"</span>))
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> "2 is even"</span>
+
+<span class="org-comment-delimiter">; </span><span class="org-comment">else-expression is optional</span>
+(<span class="org-builtin">if</span> (<span class="org-variable-name">true?</span> false) <span class="org-string">"impossible!"</span>)
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> nil</span>
+</pre>
+
+</div>
+
+</div>
+
+<div id="outline-container-3-6-1-5" class="outline-5">
+<h5 id="sec-3-6-1-5"><span class="section-number-5">3.6.1.5</span> if/do <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-1-5">
+
+<ul>
+<li id="sec-3-6-1-5-1">Multiple expressions per branch<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-6-1-5-2">Last value in branch returned<br/>
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">if</span> (<span class="org-variable-name">even?</span> 5)
+ (<span class="org-builtin">do</span> (<span class="org-variable-name">println</span> <span class="org-string">"even"</span>)
+ true)
+ (<span class="org-builtin">do</span> (<span class="org-variable-name">println</span> <span class="org-string">"odd"</span>)
+ false)) <span class="org-comment-delimiter">;</span><span class="org-comment">=> false</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">odd</span>
+</pre>
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-6-1-6" class="outline-5">
+<h5 id="sec-3-6-1-6"><span class="section-number-5">3.6.1.6</span> cond <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-1-6">
+
+<ul>
+<li id="sec-3-6-1-6-1">Series of tests and expressions<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-6-1-6-2"><code>:else</code> expression is optional<br/>
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">cond</span>
+ test1 expression1
+ test2 expression2
+ ...
+ <span class="org-constant">:else</span> else-expression)
+</pre>
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-6-1-7" class="outline-5">
+<h5 id="sec-3-6-1-7"><span class="section-number-5">3.6.1.7</span> cond <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-1-7">
+
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">let</span> [x 5]
+ (<span class="org-builtin">cond</span>
+ (<span class="org-variable-name"><</span> x 2) <span class="org-string">"x is less than 2"</span>
+ (<span class="org-variable-name"><</span> x 10) <span class="org-string">"x is less than 10"</span>))
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> "x is less than 10"</span>
+</pre>
+
+</div>
+
+</div>
+
+<div id="outline-container-3-6-1-8" class="outline-5">
+<h5 id="sec-3-6-1-8"><span class="section-number-5">3.6.1.8</span> cond with :else <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-1-8">
+
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">let</span> [x 11]
+ (<span class="org-builtin">cond</span>
+ (<span class="org-variable-name"><</span> x 2) <span class="org-string">"x is less than 2"</span>
+ (<span class="org-variable-name"><</span> x 10) <span class="org-string">"x is less than 10"</span>
+ <span class="org-constant">:else</span> <span class="org-string">"x is greater than or equal to 10"</span>))
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> "x is greater than or equal to 10"</span>
+</pre>
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-6-2" class="outline-4">
+<h4 id="sec-3-6-2"><span class="section-number-4">3.6.2</span> Flow Control Exercise</h4>
+<div class="outline-text-4" id="text-3-6-2">
+
+
+</div>
+
+<div id="outline-container-3-6-2-1" class="outline-5">
+<h5 id="sec-3-6-2-1"><span class="section-number-5">3.6.2.1</span> Exercise: Improve Your Greeting Again <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-2-1">
+
+<ul>
+<li id="sec-3-6-2-1-1">Go back to your greeting code. It is kind of a complex mess. Use flow control to make it awesome.<br/>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-6-2-2" class="outline-5">
+<h5 id="sec-3-6-2-2"><span class="section-number-5">3.6.2.2</span> Exercise: One Greeting Solution <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-2-2">
+
+
+
+
+<pre class="src src-clojure">(<span class="org-keyword">defn</span> <span class="org-function-name">messenger</span> [greeting & whos]
+ (<span class="org-builtin">let</span> [x (<span class="org-variable-name">count</span> whos)]
+ (<span class="org-variable-name">apply</span> str greeting <span class="org-string">", "</span>
+ (<span class="org-builtin">cond</span>
+ (<span class="org-variable-name">=</span> x 0) [<span class="org-string">"!"</span>]
+ (<span class="org-variable-name"><</span> x 3) (<span class="org-variable-name">conj</span> (<span class="org-variable-name">vec</span> (<span class="org-variable-name">interpose</span> <span class="org-string">" and "</span> whos)) <span class="org-string">"!"</span>)
+ <span class="org-constant">:else</span>
+ (<span class="org-variable-name">concat</span> (<span class="org-variable-name">vec</span> (<span class="org-variable-name">interpose</span> <span class="org-string">", "</span> (<span class="org-variable-name">butlast</span> whos)))
+ [<span class="org-string">", and "</span> (<span class="org-variable-name">last</span> whos) <span class="org-string">"!"</span>])))))
+</pre>
+
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-6-3" class="outline-4">
+<h4 id="sec-3-6-3"><span class="section-number-4">3.6.3</span> Iteration</h4>
+<div class="outline-text-4" id="text-3-6-3">
+
+
+</div>
+
+<div id="outline-container-3-6-3-1" class="outline-5">
+<h5 id="sec-3-6-3-1"><span class="section-number-5">3.6.3.1</span> Recursion and Iteration <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-3-1">
+
+<ul>
+<li id="sec-3-6-3-1-1">Clojure provides <code>loop</code> and the sequence abstraction<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-6-3-1-2"><code>loop</code> is "classic" recursion<br/>
+<ul>
+<li id="sec-3-6-3-1-2-1">Closed to consumers, lower-level<br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-3-6-3-1-3">Sequences represent iteration as values<br/>
+<ul>
+<li id="sec-3-6-3-1-3-1">Consumers can partially iterate<br/>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-6-3-2" class="outline-5">
+<h5 id="sec-3-6-3-2"><span class="section-number-5">3.6.3.2</span> doseq <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-3-2">
+
+<ul>
+<li id="sec-3-6-3-2-1">Iterates over a sequence<br/>
+<ul>
+<li id="sec-3-6-3-2-1-1">Similar to Java's foreach loop<br/>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li id="sec-3-6-3-2-2">If a lazy sequence, <code>doseq</code> forces evaluation<br/>
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">doseq</span> [n (<span class="org-variable-name">range</span> 3)]
+ (<span class="org-variable-name">println</span> n))
+<span class="org-comment-delimiter">;; </span><span class="org-comment">0</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">1</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">2</span>
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> nil</span>
+</pre>
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-6-3-3" class="outline-5">
+<h5 id="sec-3-6-3-3"><span class="section-number-5">3.6.3.3</span> <code>doseq</code> with multiple bindings <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-3-3">
+
+<ul>
+<li id="sec-3-6-3-3-1">Similar to nested foreach loops<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-6-3-3-2">Processes all permutations of sequence content<br/>
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-6-3-4" class="outline-5">
+<h5 id="sec-3-6-3-4"><span class="section-number-5">3.6.3.4</span> dotimes <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-3-4">
+
+<ul>
+<li id="sec-3-6-3-4-1">Evaluate expression n times<br/>
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">dotimes</span> [i 3]
+ (<span class="org-variable-name">println</span> i))
+<span class="org-comment-delimiter">;; </span><span class="org-comment">0</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">1</span>
+<span class="org-comment-delimiter">;; </span><span class="org-comment">2</span>
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> nil</span>
+</pre>
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-6-3-5" class="outline-5">
+<h5 id="sec-3-6-3-5"><span class="section-number-5">3.6.3.5</span> while <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-3-5">
+
+<ul>
+<li id="sec-3-6-3-5-1">Evaluate expression while condition is true<br/>
+
+
+
+<pre class="src src-clojure">(<span class="org-variable-name">while</span> (<span class="org-preprocessor">.accept</span> socket)
+ (<span class="org-builtin">handle</span> socket))
+</pre>
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-6-3-6" class="outline-5">
+<h5 id="sec-3-6-3-6"><span class="section-number-5">3.6.3.6</span> Clojure's for <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-3-6">
+
+<ul>
+<li id="sec-3-6-3-6-1">List comprehension, NOT a for-loop<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-6-3-6-2">Generator function for sequence permutation<br/>
+
+
+
+<pre class="src src-clojure">(<span class="org-builtin">for</span> [x [0 1]
+ y [0 1]]
+ [x y])
+<span class="org-comment-delimiter">;;</span><span class="org-comment">=> ([0 0] [0 1] [1 0] [1 1]) ; seq</span>
+</pre>
+
+</li>
+</ul>
+</div>
+
+</div>
+
+<div id="outline-container-3-6-3-7" class="outline-5">
+<h5 id="sec-3-6-3-7"><span class="section-number-5">3.6.3.7</span> with-open <span class="tag"><span class="slide">slide</span></span></h5>
+<div class="outline-text-5" id="text-3-6-3-7">
+
+<ul>
+<li id="sec-3-6-3-7-1">JDK7 introduces try-with-resources<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-6-3-7-2">Clojure provides <code>with-open</code> for similar purposes<br/>
+
+
+
+<pre class="src src-clojure">(<span class="org-variable-name">require</span> '[clojure.java.io <span class="org-constant">:as</span> io])
+(<span class="org-builtin">with-open</span> [f (io/writer <span class="org-string">"/tmp/new"</span>)]
+ (<span class="org-preprocessor">.write</span> f <span class="org-string">"some text"</span>))
+</pre>
+
+
+</li>
+</ul>
+</div>
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-3-7" class="outline-3">
+<h3 id="sec-3-7"><span class="section-number-3">3.7</span> HACK LIFE <span class="tag"><span class="slide">slide</span></span></h3>
+<div class="outline-text-3" id="text-3-7">
+
+<ul>
+<li id="sec-3-7-1">Clinton: @crnixon<br/>
+</li>
+</ul>
+<ul>
+<li id="sec-3-7-2">Alan: @alandipert<br/>
+</li>
+</ul>
+</div>
+</div>
+
+</div>
+
+<div id="outline-container-4" class="outline-2">
+<h2 id="sec-4"><span class="section-number-2">4</span> End</h2>
+<div class="outline-text-2" id="text-4">
+
+
+
+
+
+
+
+<script type="text/javascript" src="slide-assets/org-html-slideshow.js"></script>
+
+
+</div>
+</div>
+</div>
+
+<div id="postamble">
+<p class="date">Date: 2012-07-17 18:56:16 EDT</p>
+<p class="author">Author: Alan Dipert</p>
+<p class="creator">Org version 7.8.03 with Emacs version 24</p>
+<a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>
+
+</div>
+</body>
+</html>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/Clojure.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/Clojure.svg
new file mode 100644
index 0000000..ec7ee3c
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/Clojure.svg
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="98.586px" height="98.609px" viewBox="0 0 98.586 98.609" enable-background="new 0 0 98.586 98.609" xml:space="preserve">
+<g id="to_circ._w_x2F__back._circ." display="none">
+ <circle display="inline" fill="#FFFFFF" cx="49.316" cy="49.32" r="44.568"/>
+ <path display="inline" fill="#91DC47" d="M49.315,72.884c2.598-0.005,5.094-0.434,7.43-1.211c-0.549-0.502-1.073-1.037-1.55-1.64
+ c-3.167-4.039-4.935-9.958-7.73-19.91c-0.443,0.96-0.932,2.038-1.438,3.187c-1.79,4.056-3.771,8.989-4.496,12.15
+ c-0.26,1.126-0.421,2.521-0.418,4.067c0,0.612,0.034,1.255,0.085,1.91C43.728,72.369,46.461,72.879,49.315,72.884z"/>
+ <path display="inline" fill="#5881D8" d="M25.353,19.813c5.181,0.015,9.254,1.621,11.208,2.72c0.472,0.272,0.919,0.565,1.359,0.866
+ c3.487-1.536,7.34-2.395,11.395-2.395c15.64,0.002,28.317,12.676,28.319,28.315h-0.002c0,7.886-3.225,15.015-8.424,20.148
+ c1.276,0.143,2.638,0.231,4.027,0.225c4.936,0.002,10.271-1.087,14.271-4.451c2.607-2.197,4.793-5.414,6.005-10.237
+ c0.237-1.862,0.373-3.757,0.373-5.684c0-24.614-19.953-44.571-44.568-44.571c-14.926,0-28.129,7.347-36.218,18.613
+ C17.307,20.734,21.603,19.78,25.353,19.813z"/>
+ <path display="inline" fill="#63B132" d="M73.623,76.563c-1.347,0-2.61-0.072-3.78-0.215c-3.121-0.392-5.697-0.863-7.95-1.658
+ c-3.79,1.882-8.059,2.945-12.577,2.945C33.678,77.635,21.001,64.96,21,49.319c0.001-8.487,3.74-16.095,9.654-21.285
+ c-1.581-0.381-3.231-0.605-4.917-0.602c-8.308,0.079-17.079,4.676-20.729,17.093c-0.168,1.575-0.26,3.174-0.26,4.794
+ c0,24.615,19.955,44.57,44.568,44.57c15.073,0,28.389-7.49,36.455-18.944C81.409,76.032,77.214,76.552,73.623,76.563z"/>
+ <path display="inline" fill="#91DC47" d="M44.906,42.911c-1.505-3.778-3.68-8.166-5.62-10.153
+ c-0.988-1.038-2.189-1.936-3.515-2.701c-6.05,4.263-10.007,11.293-10.022,19.262c0.015,7.85,3.854,14.789,9.751,19.07
+ c1.446-6.025,5.072-11.542,10.508-22.6C45.686,44.902,45.318,43.931,44.906,42.911z"/>
+ <path display="inline" fill="#90B4FE" d="M61.467,67.711c0.274,0.137,0.898,0.359,1.767,0.605
+ c5.841-4.287,9.636-11.193,9.65-18.998h-0.002C72.86,36.307,62.33,25.779,49.315,25.754c-2.586,0.005-5.072,0.431-7.399,1.203
+ c4.785,5.454,7.086,13.249,9.312,21.775c0.001,0.003,0.003,0.006,0.004,0.01c0.004,0.006,0.712,2.368,1.927,5.5
+ c1.207,3.128,2.927,7,4.802,9.821C59.191,65.954,60.545,67.312,61.467,67.711z"/>
+ <path display="inline" fill="#FFFFFF" d="M93.511,55.003c-1.212,4.823-3.397,8.04-6.005,10.237c-4,3.364-9.335,4.453-14.271,4.451
+ c-1.39,0.007-2.751-0.082-4.027-0.225c5.199-5.134,8.424-12.263,8.424-20.148h0.002c-0.002-15.639-12.68-28.313-28.319-28.315
+ c-4.055,0-7.908,0.859-11.395,2.395c-0.439-0.301-0.887-0.594-1.359-0.866c-1.954-1.099-6.027-2.705-11.208-2.72
+ c-3.75-0.034-8.046,0.92-12.255,3.548c-4.372,6.089-7.251,13.319-8.09,21.164c3.651-12.417,12.421-17.015,20.729-17.093
+ c1.685-0.003,3.335,0.22,4.917,0.602C24.739,33.224,21,40.832,21,49.319c0.002,15.642,12.678,28.316,28.315,28.316
+ c4.519,0,8.787-1.063,12.577-2.945c2.253,0.795,4.829,1.267,7.95,1.658c1.17,0.143,2.434,0.215,3.78,0.215
+ c3.592-0.011,7.786-0.531,12.148-1.617C89.845,69.16,92.574,62.363,93.511,55.003z M25.75,49.319
+ c0.015-7.968,3.973-14.999,10.022-19.262c1.326,0.766,2.526,1.663,3.515,2.701c1.94,1.987,4.114,6.375,5.62,10.153
+ c0.412,1.02,0.78,1.991,1.103,2.878c-5.436,11.058-9.062,16.575-10.508,22.6C29.604,64.108,25.765,57.168,25.75,49.319z
+ M49.315,72.884c-2.854-0.005-5.587-0.516-8.117-1.446c-0.052-0.655-0.085-1.298-0.085-1.91c-0.002-1.547,0.159-2.941,0.418-4.067
+ c0.724-3.161,2.706-8.095,4.496-12.15c0.506-1.148,0.995-2.227,1.438-3.187c2.796,9.952,4.563,15.871,7.73,19.91
+ c0.477,0.603,1.001,1.138,1.55,1.64C54.409,72.451,51.913,72.879,49.315,72.884z M63.234,68.317
+ c-0.868-0.246-1.492-0.469-1.767-0.605c-0.922-0.399-2.276-1.758-3.507-3.649c-1.875-2.821-3.595-6.693-4.802-9.821
+ c-1.215-3.132-1.923-5.493-1.927-5.5c-0.001-0.003-0.003-0.006-0.004-0.01c-2.226-8.526-4.527-16.321-9.312-21.775
+ c2.327-0.771,4.812-1.198,7.399-1.203C62.33,25.779,72.86,36.307,72.882,49.319h0.002C72.87,57.124,69.075,64.03,63.234,68.317z"/>
+</g>
+<g id="w_x2F__circle">
+ <path fill="none" d="M49.316,98.639c-27.193,0-49.318-22.124-49.318-49.32C-0.002,22.125,22.123,0,49.316,0
+ C76.51,0,98.635,22.125,98.635,49.319C98.635,76.515,76.51,98.639,49.316,98.639L49.316,98.639z"/>
+ <path fill="#91DC47" d="M40.25,72.155l0.601,0.222c2.711,0.997,5.559,1.503,8.462,1.507c2.639-0.004,5.245-0.427,7.747-1.26
+ l1.619-0.539l-1.261-1.148c-0.569-0.522-1.04-1.02-1.44-1.523c-3.055-3.898-4.775-9.679-7.55-19.559l-0.734-2.611l-1.138,2.462
+ c-0.445,0.964-0.937,2.048-1.446,3.204c-1.341,3.043-3.72,8.692-4.554,12.328c-0.292,1.271-0.445,2.756-0.443,4.294
+ c0,0.587,0.027,1.237,0.087,1.985L40.25,72.155z"/>
+ <path fill="#5881D8" d="M25.164,20.812h0.18c5.706,0.019,9.652,1.99,10.728,2.595c0.441,0.253,0.866,0.531,1.285,0.816l0.458,0.315
+ l0.508-0.224c3.486-1.534,7.183-2.311,10.993-2.311c15.062,0.002,27.318,12.257,27.32,27.317
+ c-0.002,7.357-2.889,14.261-8.129,19.436l-1.49,1.472l2.081,0.232c1.376,0.155,2.722,0.234,4.002,0.234l0.142-0.002
+ c4.265,0,10.303-0.812,14.909-4.687c1.725-1.454,3.135-3.207,4.25-5.261c0.965-3.646,1.484-7.475,1.484-11.425
+ c0-24.614-19.953-44.571-44.568-44.571c-15.906,0-29.857,8.341-37.744,20.88C16.756,21.615,21.898,20.812,25.164,20.812z"/>
+ <path fill="#63B132" d="M73.62,75.564c-1.295,0-2.526-0.07-3.658-0.209c-3.461-0.436-5.776-0.916-7.736-1.608l-0.4-0.141
+ l-0.379,0.188c-3.795,1.884-7.876,2.841-12.131,2.841c-15.059,0-27.314-12.255-27.316-27.315c0-7.857,3.395-15.341,9.314-20.533
+ l1.451-1.272l-1.876-0.452c-1.73-0.417-3.449-0.63-5.104-0.63c-8.949,0.083-16.03,4.915-19.975,13.235
+ c-0.687,3.109-1.061,6.336-1.061,9.652c0,24.615,19.955,44.57,44.568,44.57c15.622,0,29.357-8.044,37.314-20.209
+ C82.008,74.939,77.5,75.551,73.62,75.564z"/>
+ <path fill="#90B4FE" d="M61.069,68.627c0.323,0.163,1.031,0.408,1.894,0.65l0.471,0.133l0.392-0.288
+ c6.284-4.611,10.046-12.015,10.059-19.801C73.858,35.8,62.838,24.78,49.317,24.755h-0.002h-0.002
+ c-2.62,0.004-5.215,0.425-7.712,1.252l-1.432,0.475l0.995,1.134c4.63,5.274,6.858,12.798,9.097,21.368l0.006,0.021l0.027,0.085
+ c0.244,0.787,0.92,2.901,1.934,5.515c0.905,2.345,2.746,6.768,4.899,10.011C58.432,66.621,59.906,68.124,61.069,68.627z"/>
+ <path fill="#91DC47" d="M46.907,46.231l0.188-0.384l-0.147-0.4c-0.326-0.897-0.699-1.88-1.113-2.91
+ c-0.713-1.785-3.239-7.82-5.834-10.479c-0.995-1.049-2.253-2.017-3.729-2.868l-0.553-0.319l-0.522,0.369
+ c-6.526,4.599-10.431,12.104-10.446,20.076c0.013,7.839,3.813,15.271,10.162,19.88l1.213,0.881l0.348-1.454
+ c0.976-4.062,2.955-7.857,5.95-13.603C43.742,52.493,45.238,49.626,46.907,46.231z"/>
+ <path fill="#FFFFFF" d="M49.316,0C22.123,0-0.002,22.125-0.002,49.319c0,27.196,22.125,49.32,49.318,49.32
+ c27.194,0,49.319-22.124,49.319-49.32C98.635,22.125,76.51,0,49.316,0z M49.316,4.749c24.615,0,44.568,19.957,44.568,44.571
+ c0,1.927-0.136,3.821-0.373,5.684c-1.212,4.823-3.397,8.04-6.005,10.237c-4,3.364-9.335,4.453-14.271,4.451
+ c-1.39,0.007-2.751-0.082-4.027-0.225c5.199-5.134,8.424-12.263,8.424-20.148h0.002c-0.002-15.639-12.68-28.313-28.319-28.315
+ c-4.055,0-7.908,0.859-11.395,2.395c-0.439-0.301-0.887-0.594-1.359-0.866c-1.954-1.099-6.027-2.705-11.208-2.72
+ c-3.751-0.034-8.049,0.917-12.258,3.553C21.183,12.098,34.388,4.749,49.316,4.749z M41.531,65.46
+ c0.724-3.161,2.706-8.095,4.496-12.15c0.506-1.148,0.995-2.227,1.438-3.187c2.796,9.952,4.563,15.871,7.73,19.91
+ c0.477,0.603,1.001,1.138,1.55,1.64c-2.336,0.777-4.832,1.206-7.43,1.211c-2.854-0.005-5.587-0.516-8.117-1.446
+ c-0.052-0.655-0.085-1.298-0.085-1.91C41.11,67.981,41.271,66.586,41.531,65.46z M35.501,68.389
+ c-5.897-4.281-9.736-11.221-9.751-19.07c0.015-7.968,3.973-14.999,10.022-19.262c1.326,0.766,2.526,1.663,3.515,2.701
+ c1.94,1.987,4.114,6.375,5.62,10.153c0.412,1.02,0.78,1.991,1.103,2.878C40.573,56.847,36.947,62.364,35.501,68.389z
+ M53.159,54.241c-1.215-3.132-1.923-5.493-1.927-5.5c-0.001-0.003-0.003-0.006-0.004-0.01c-2.226-8.526-4.527-16.321-9.312-21.775
+ c2.327-0.771,4.812-1.198,7.399-1.203C62.33,25.779,72.86,36.307,72.882,49.319h0.002c-0.015,7.805-3.81,14.711-9.65,18.998
+ c-0.868-0.246-1.492-0.469-1.767-0.605c-0.922-0.399-2.276-1.758-3.507-3.649C56.085,61.241,54.366,57.369,53.159,54.241z
+ M49.316,93.89c-24.613,0-44.568-19.955-44.568-44.57c0-1.62,0.092-3.219,0.26-4.794c3.651-12.417,12.421-17.015,20.729-17.093
+ c1.685-0.003,3.335,0.22,4.917,0.602C24.739,33.224,21,40.832,21,49.319c0.002,15.642,12.678,28.316,28.315,28.316
+ c4.519,0,8.787-1.063,12.577-2.945c2.253,0.795,4.829,1.267,7.95,1.658c1.17,0.143,2.434,0.215,3.78,0.215
+ c3.592-0.011,7.786-0.531,12.148-1.618C77.706,86.4,64.39,93.89,49.316,93.89z"/>
+</g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/arrow-right.png b/md/TechWorks/decks/oscon2012-clojure/slide-assets/arrow-right.png
new file mode 100644
index 0000000..0235f79
Binary files /dev/null and b/md/TechWorks/decks/oscon2012-clojure/slide-assets/arrow-right.png differ
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/background.jpeg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/background.jpeg
new file mode 100644
index 0000000..53cb2ce
Binary files /dev/null and b/md/TechWorks/decks/oscon2012-clojure/slide-assets/background.jpeg differ
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/clojure-interactive-evaluation.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/clojure-interactive-evaluation.svg
new file mode 100644
index 0000000..b884b62
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/clojure-interactive-evaluation.svg
@@ -0,0 +1,693 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="777.03656"
+ height="435.57773"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="clojure-interactive-evaluation.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3909"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-79.002155,81.288185)"
+ x1="220.17732"
+ y1="551.9975"
+ x2="185.32698"
+ y2="406.91125" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3867"
+ id="linearGradient3933"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient4062"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4064"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3288"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-79.002155,81.288185)"
+ x1="220.17732"
+ y1="551.9975"
+ x2="185.32698"
+ y2="406.91125" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3290"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3867"
+ id="linearGradient3292"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3294"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3345"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-79.002155,81.288185)"
+ x1="220.17732"
+ y1="551.9975"
+ x2="185.32698"
+ y2="406.91125" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3347"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3867"
+ id="linearGradient3349"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3351"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.70710678"
+ inkscape:cx="747.68754"
+ inkscape:cy="71.560289"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1538"
+ inkscape:window-height="849"
+ inkscape:window-x="23"
+ inkscape:window-y="91"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-17.945213,-305.84215)">
+ <g
+ id="g3903"
+ transform="matrix(0.82326024,0,0,0.82326024,7.1912424,-69.713341)">
+ <rect
+ y="485.02948"
+ x="64.864838"
+ height="164.83743"
+ width="127.52402"
+ id="rect2987"
+ style="fill:url(#linearGradient3345);fill-opacity:1;stroke:#000000;stroke-width:3.03670692;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3771"
+ y="556.96301"
+ x="127.95782"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ y="556.96301"
+ x="127.95782"
+ id="tspan3773"
+ sodipodi:role="line">Source</tspan><tspan
+ id="tspan3775"
+ y="586.96301"
+ x="127.95782"
+ sodipodi:role="line">Code</tspan></text>
+ </g>
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#linearGradient3347);fill-opacity:1;stroke:#000000;stroke-width:4.31094885;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3777"
+ sodipodi:cx="263.34976"
+ sodipodi:cy="451.05295"
+ sodipodi:rx="95.098518"
+ sodipodi:ry="62.78941"
+ d="m 358.44828,451.05295 c 0,34.67763 -42.57706,62.78941 -95.09852,62.78941 -52.52146,0 -95.09852,-28.11178 -95.09852,-62.78941 0,-34.67764 42.57706,-62.78941 95.09852,-62.78941 52.52146,0 95.09852,28.11177 95.09852,62.78941 z"
+ transform="matrix(0.62799979,0,0,0.5355188,123.55656,283.87226)" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3797"
+ y="532.78552"
+ x="287.98022"
+ style="font-size:19.75824547px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ id="tspan3999"
+ y="532.78552"
+ x="287.98022"
+ sodipodi:role="line">Reader</tspan></text>
+ <g
+ id="g3252"
+ transform="matrix(0.82326024,0,0,0.82326024,8.3980162,-265.59573)">
+ <path
+ inkscape:transform-center-x="-1.1598852"
+ sodipodi:type="star"
+ style="fill:#ffa7d8;fill-opacity:1;stroke:#000000;stroke-width:5.36779737;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3904"
+ sodipodi:sides="8"
+ sodipodi:cx="665.68964"
+ sodipodi:cy="90.775864"
+ sodipodi:r1="101.04758"
+ sodipodi:r2="70.720428"
+ sodipodi:arg1="0.84515599"
+ sodipodi:arg2="1.2357786"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 732.74628,166.36699 -43.80476,-8.80244 -29.28667,34.07852 -24.75039,-37.19891 -44.80595,3.38835 8.80244,-43.80477 -34.07852,-29.286667 37.19891,-24.750382 -3.38835,-44.805957 43.80477,8.80244 29.28667,-34.078521 24.75038,37.198913 44.80596,-3.38835 -8.80244,43.804767 34.07852,29.286671 -37.19892,24.750386 z"
+ transform="matrix(0.53156998,0.19407428,-0.19402176,0.53124187,521.7111,779.3226)"
+ inkscape:transform-center-y="-4.4649423" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ x="857.77246"
+ y="964.20227"
+ id="text3908"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="857.77246"
+ y="964.20227"
+ id="tspan3910">Effect</tspan></text>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 173.73968,412.40489 67.62092,83.1401"
+ id="path3831"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.50000048;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 489.91424,681.14049 157.67467,0.55179"
+ id="path3812"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3814"
+ d="m 713.74569,644.93411 0.0466,-78.52049"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <g
+ id="g3928"
+ transform="matrix(0.82326024,0,0,0.82326024,144.70207,-69.713341)">
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#linearGradient3349);fill-opacity:1;stroke:#000000;stroke-width:4.31094885;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3859"
+ sodipodi:cx="263.34976"
+ sodipodi:cy="451.05295"
+ sodipodi:rx="95.098518"
+ sodipodi:ry="62.78941"
+ d="m 358.44828,451.05295 c 0,34.67763 -42.57706,62.78941 -95.09852,62.78941 -52.52146,0 -95.09852,-28.11178 -95.09852,-62.78941 0,-34.67764 42.57706,-62.78941 95.09852,-62.78941 52.52146,0 95.09852,28.11177 95.09852,62.78941 z"
+ transform="matrix(0.7628205,0,0,0.65048544,136.47008,620.61429)" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3861"
+ y="920.63873"
+ x="336.69656"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ y="920.63873"
+ x="336.69656"
+ sodipodi:role="line"
+ id="tspan4001">Compiler</tspan></text>
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3956"
+ d="m 306.23186,569.99028 67.62092,83.14011"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <text
+ xml:space="preserve"
+ style="font-size:19.75824547px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ x="260.05972"
+ y="437.79446"
+ id="text3958"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3960"
+ x="260.05972"
+ y="437.79446"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica">characters</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3962"
+ y="600.80896"
+ x="421.93732"
+ style="font-size:19.75824547px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ y="600.80896"
+ x="421.93732"
+ sodipodi:role="line"
+ id="tspan3966">data structures</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:19.75824547px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ x="553.92444"
+ y="672.89465"
+ id="text3968"
+ sodipodi:linespacing="125%"><tspan
+ id="tspan3972"
+ sodipodi:role="line"
+ x="553.92444"
+ y="672.89465"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica">bytecode</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:19.75824547px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ x="97.365768"
+ y="560.25519"
+ id="text3987"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3989"
+ x="97.365768"
+ y="560.25519">You</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3991"
+ d="m 180.03474,605.42956 56.30722,-53.44162"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <g
+ id="g4039"
+ transform="matrix(0.82326024,0,0,0.82326024,10.405451,58.070162)">
+ <rect
+ rx="31.100067"
+ ry="31.100065"
+ y="720.73639"
+ x="783.95325"
+ height="80.467979"
+ width="140.20937"
+ id="rect4025"
+ style="fill:url(#linearGradient3351);fill-opacity:1;stroke:#000000;stroke-width:3.03670692;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:19.75824547px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica Bold"
+ x="714.99829"
+ y="689.771"
+ id="text4035"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4037"
+ x="714.99829"
+ y="689.771">JVM</tspan></text>
+ <g
+ transform="matrix(0.62698128,0,0,0.62698128,15.365962,522.39171)"
+ id="layer1-1"
+ inkscape:label="Ebene 1">
+ <g
+ id="g3025">
+ <path
+ sodipodi:type="arc"
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
+ id="path1872"
+ sodipodi:cx="67.427681"
+ sodipodi:cy="50.038319"
+ sodipodi:rx="18.940361"
+ sodipodi:ry="18.940361"
+ d="m 86.368042,50.038319 c 0,10.460472 -8.479888,18.940361 -18.940361,18.940361 -10.460473,0 -18.940361,-8.479889 -18.940361,-18.940361 0,-10.460473 8.479888,-18.940361 18.940361,-18.940361 10.460473,0 18.940361,8.479888 18.940361,18.940361 z"
+ transform="matrix(1.055946,0,0,1.055946,-5.743133,12.54472)" />
+ <rect
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
+ id="rect1874"
+ width="48.992401"
+ height="114.69568"
+ x="40"
+ y="87.666504"
+ ry="27.389324"
+ rx="27.389324" />
+ <rect
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
+ id="rect1880"
+ width="110.10663"
+ height="29.294424"
+ x="40.406101"
+ y="173.79344"
+ ry="23.361483"
+ rx="23.361483" />
+ <rect
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
+ id="rect1884"
+ width="22.223356"
+ height="92.934036"
+ x="128.28937"
+ y="179.34927"
+ ry="17.722504"
+ rx="17.722504" />
+ <rect
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
+ id="rect1890"
+ width="145.96704"
+ height="16.162441"
+ x="100.08632"
+ y="142.98378"
+ ry="12.486309"
+ rx="12.486309" />
+ <rect
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
+ id="rect1892"
+ width="37.880722"
+ height="14.647212"
+ x="108.08633"
+ y="127.04215"
+ rx="13.326328"
+ ry="12.486309" />
+ <rect
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
+ id="rect1900"
+ width="64.649788"
+ height="15.152294"
+ x="117.04251"
+ y="6.8155155"
+ rx="16.548611"
+ ry="11.158344"
+ transform="matrix(0.713376,0.700782,-0.700782,0.713376,0,0)" />
+ <rect
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
+ id="rect1906"
+ width="28.789347"
+ height="13.637059"
+ x="147.50256"
+ y="127.54723"
+ rx="8.0556831"
+ ry="17.722504" />
+ <rect
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
+ id="rect1910"
+ width="45.961941"
+ height="9.5964489"
+ x="193.76909"
+ y="132.0726"
+ rx="2.4167049"
+ ry="15.305798" />
+ <rect
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
+ id="rect1912"
+ width="18.182745"
+ height="17.421562"
+ x="208.49753"
+ y="118.94063"
+ rx="2.4167049"
+ ry="15.305798" />
+ <rect
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
+ id="rect1914"
+ width="10.606602"
+ height="69.700523"
+ x="179.74878"
+ y="63.661659"
+ rx="2.4167049"
+ ry="15.305798" />
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.594944px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 187.83001,70.816238 59.27912,16.162441 0,31.819801 -58.77404,8.5863 -0.50508,-56.568542 z"
+ id="path1938"
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
+ id="rect2827"
+ width="66.670067"
+ height="11.111678"
+ x="42.911179"
+ y="205.87465"
+ rx="2.4167049"
+ ry="15.305798" />
+ <rect
+ style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
+ id="rect2829"
+ width="11.616755"
+ height="60.104073"
+ x="70.225906"
+ y="211.4305"
+ rx="2.4167049"
+ ry="15.305798" />
+ </g>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ x="385.64075"
+ y="352.51114"
+ id="text3353"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3355"
+ x="385.64075"
+ y="352.51114">compilation unit = expression</tspan></text>
+ </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/clojurescript-browser-repl.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/clojurescript-browser-repl.svg
new file mode 100644
index 0000000..199714f
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/clojurescript-browser-repl.svg
@@ -0,0 +1,907 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="899.6535"
+ height="390.93851"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ sodipodi:docname="clojurescript-browser-repl.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lstart"
+ style="overflow:visible">
+ <path
+ id="path4625"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible">
+ <path
+ id="path4607"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <linearGradient
+ id="linearGradient4374">
+ <stop
+ id="stop4376"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop4378"
+ offset="1"
+ style="stop-color:#e2ed4c;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ff9191;stop-opacity:1;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#eccd8d;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3867"
+ id="linearGradient3106"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3120"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3889"
+ id="linearGradient3974"
+ x1="845.9295"
+ y1="720.82959"
+ x2="878.42365"
+ y2="798.02344"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3889"
+ id="linearGradient3988"
+ gradientUnits="userSpaceOnUse"
+ x1="845.9295"
+ y1="720.82959"
+ x2="878.42365"
+ y2="798.02344" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="radialGradient4085"
+ cx="629.02985"
+ cy="270.68365"
+ fx="629.02985"
+ fy="270.68365"
+ r="286.01791"
+ gradientTransform="matrix(1,0,0,0.90643951,0,25.325296)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3074"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-79.002155,81.288185)"
+ x1="220.17732"
+ y1="551.9975"
+ x2="185.32698"
+ y2="406.91125" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3080"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.59863442,311.96092,255.22341)"
+ x1="220.17732"
+ y1="551.9975"
+ x2="185.32698"
+ y2="406.91125" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3095"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.59863442,311.96092,255.22341)"
+ x1="220.17732"
+ y1="551.9975"
+ x2="185.32698"
+ y2="406.91125" />
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective21-3" />
+ <linearGradient
+ y2="340.10468"
+ x2="827.87561"
+ y1="447.39532"
+ x1="843.66382"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4048-1"
+ xlink:href="#linearGradient3881-9"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ gradientUnits="userSpaceOnUse"
+ y2="340.10468"
+ x2="827.87561"
+ y1="447.39532"
+ x1="843.66382"
+ id="linearGradient4033-7"
+ xlink:href="#linearGradient3881-9"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="392.0405"
+ x2="243.19038"
+ y1="508.26315"
+ x1="263.02637"
+ gradientTransform="translate(-30.367596,0)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3947-4"
+ xlink:href="#linearGradient3881-9"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="392.0405"
+ x2="243.19038"
+ y1="508.26315"
+ x1="263.02637"
+ gradientTransform="translate(-30.367596,0)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3926-1"
+ xlink:href="#linearGradient3787-1"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="392.0405"
+ x2="243.19038"
+ y1="508.26315"
+ x1="263.02637"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3874-5"
+ xlink:href="#linearGradient3787-1"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient3765-3">
+ <stop
+ style="stop-color:#dcdcdc;stop-opacity:1;"
+ offset="0"
+ id="stop3767-6" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3769-5" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3787-1">
+ <stop
+ style="stop-color:#91dc47;stop-opacity:1;"
+ offset="0"
+ id="stop3789-7" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3791-2" />
+ </linearGradient>
+ <inkscape:perspective
+ id="perspective3888-9"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 382.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ style="overflow:visible"
+ id="Arrow1Lend-9"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ id="path3839-9" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Arrow2Lend-0"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ id="path3857-3" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="TriangleOutL-2"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="TriangleOutL">
+ <path
+ inkscape:connector-curvature="0"
+ transform="scale(0.8,0.8)"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ id="path3979-7" />
+ </marker>
+ <linearGradient
+ id="linearGradient3867-5">
+ <stop
+ id="stop3869-7"
+ offset="0"
+ style="stop-color:#90b4fe;stop-opacity:1;" />
+ <stop
+ id="stop3871-6"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881-9">
+ <stop
+ style="stop-color:#f2b840;stop-opacity:1;"
+ offset="0"
+ id="stop3883-8" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3885-6" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889-7">
+ <stop
+ id="stop3891-0"
+ offset="0"
+ style="stop-color:#dd83e2;stop-opacity:1;" />
+ <stop
+ id="stop3893-3"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4374"
+ id="linearGradient4386"
+ x1="849.34882"
+ y1="721.97156"
+ x2="883.35675"
+ y2="798.88593"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4374"
+ id="linearGradient4397"
+ gradientUnits="userSpaceOnUse"
+ x1="849.34882"
+ y1="721.97156"
+ x2="883.35675"
+ y2="798.88593" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4374"
+ id="linearGradient4408"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.2018902,0,0,2.0449973,-1278.2933,-894.23142)"
+ x1="849.34882"
+ y1="721.97156"
+ x2="883.35675"
+ y2="798.88593" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient5673"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2622475,0,0,0.90372718,-611.31021,263.44874)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4374"
+ id="linearGradient3125"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.2018902,0,0,2.0449973,-1278.2933,-894.23142)"
+ x1="849.34882"
+ y1="721.97156"
+ x2="883.35675"
+ y2="798.88593" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4374"
+ id="linearGradient3132"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.2018902,0,0,2.0449973,-1278.2933,-894.23142)"
+ x1="849.34882"
+ y1="721.97156"
+ x2="883.35675"
+ y2="798.88593" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3867"
+ id="linearGradient3138"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.3594871,0,0,1.2663094,-329.63771,-337.13248)"
+ x1="876.68146"
+ y1="798.55188"
+ x2="855.35742"
+ y2="720.87421" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.1033845"
+ inkscape:cx="447.36498"
+ inkscape:cy="190.29017"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1669"
+ inkscape:window-height="1015"
+ inkscape:window-x="1591"
+ inkscape:window-y="56"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-50.845899,-312.47408)">
+ <g
+ id="g3114"
+ transform="matrix(1.0245804,0,0,0.96810782,103.63578,-156.74505)">
+ <path
+ transform="matrix(0.7628205,0,0,0.65048544,138.46688,277.10635)"
+ d="m 358.44828,451.05295 c 0,34.67763 -42.57706,62.78941 -95.09852,62.78941 -52.52146,0 -95.09852,-28.11178 -95.09852,-62.78941 0,-34.67764 42.57706,-62.78941 95.09852,-62.78941 52.52146,0 95.09852,28.11177 95.09852,62.78941 z"
+ sodipodi:ry="62.78941"
+ sodipodi:rx="95.098518"
+ sodipodi:cy="451.05295"
+ sodipodi:cx="263.34976"
+ id="path3777"
+ style="fill:url(#linearGradient3120);fill-opacity:1;stroke:#000000;stroke-width:5.73980045;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ sodipodi:type="arc" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica, Arial, sans-serif';-inkscape-font-specification:Helvetica"
+ x="338.48242"
+ y="564.45697"
+ id="text3797"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="338.48242"
+ y="564.45697"
+ id="tspan3999">Clojure</tspan><tspan
+ id="tspan3098"
+ sodipodi:role="line"
+ x="338.48242"
+ y="594.45697">Reader</tspan></text>
+ </g>
+ <g
+ id="g3252"
+ transform="translate(-698.14479,-330.24832)">
+ <path
+ inkscape:transform-center-x="-1.1598852"
+ sodipodi:type="star"
+ style="fill:#ffa7d8;fill-opacity:1;stroke:#000000;stroke-width:4.41909409;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3904"
+ sodipodi:sides="8"
+ sodipodi:cx="665.68964"
+ sodipodi:cy="90.775864"
+ sodipodi:r1="101.04758"
+ sodipodi:r2="70.720428"
+ sodipodi:arg1="0.84515599"
+ sodipodi:arg2="1.2357786"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 732.74628,166.36699 -43.80476,-8.80244 -29.28667,34.07852 -24.75039,-37.19891 -44.80595,3.38835 8.80244,-43.80477 -34.07852,-29.286667 37.19891,-24.750382 -3.38835,-44.805957 43.80477,8.80244 29.28667,-34.078521 24.75038,37.198913 44.80596,-3.38835 -8.80244,43.804767 34.07852,29.286671 -37.19892,24.750386 z"
+ transform="matrix(0.53156998,0.19407428,-0.19402176,0.53124187,521.7111,779.3226)"
+ inkscape:transform-center-y="-4.4649423" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica, Arial, sans-serif';-inkscape-font-specification:Helvetica"
+ x="857.77246"
+ y="964.20227"
+ id="text3908"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="857.77246"
+ y="964.20227"
+ id="tspan3910">Effect</tspan></text>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:url(#Arrow2Lend-0)"
+ d="m 218.87862,395.61392 146.38096,0"
+ id="path3831"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <g
+ id="g3128"
+ transform="matrix(0.77387782,0,0,0.80939483,191.61648,69.281337)">
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#linearGradient3106);fill-opacity:1;stroke:#000000;stroke-width:3.99117756;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3859"
+ sodipodi:cx="263.34976"
+ sodipodi:cy="451.05295"
+ sodipodi:rx="95.098518"
+ sodipodi:ry="62.78941"
+ d="m 358.44828,451.05295 c 0,34.67763 -42.57706,62.78941 -95.09852,62.78941 -52.52146,0 -95.09852,-28.11178 -95.09852,-62.78941 0,-34.67764 42.57706,-62.78941 95.09852,-62.78941 52.52146,0 95.09852,28.11177 95.09852,62.78941 z"
+ transform="matrix(1.0751123,0,0,0.95454759,543.6492,-27.42496)" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3861"
+ y="398.74762"
+ x="826.39893"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica, Arial, sans-serif';-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ y="398.74762"
+ x="826.39893"
+ sodipodi:role="line"
+ id="tspan4001">ClojureScript</tspan><tspan
+ y="428.74762"
+ x="826.39893"
+ sodipodi:role="line"
+ id="tspan3100">Compiler</tspan></text>
+ </g>
+ <g
+ id="g5666"
+ transform="translate(0,6.0982605)">
+ <rect
+ rx="25.603447"
+ ry="25.603449"
+ y="570.2597"
+ x="362.84329"
+ height="100.26698"
+ width="176.97891"
+ id="rect4025"
+ style="fill:url(#linearGradient5673);fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4043"
+ y="614.34045"
+ x="450.16675"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ id="tspan4053"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ y="614.34045"
+ x="450.16675"
+ sodipodi:role="line">Web</tspan><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ y="644.34045"
+ x="450.16675"
+ sodipodi:role="line"
+ id="tspan3960">Browser</tspan></text>
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4065"
+ d="m 341.86489,625.92622 -120.17094,0.67026"
+ style="fill:none;stroke:#000000;stroke-width:2.50000048;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <g
+ id="g4325"
+ transform="translate(36.257418,10.155854)">
+ <text
+ sodipodi:linespacing="125%"
+ id="text3987"
+ y="341.59454"
+ x="120.5455"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica, Arial, sans-serif';-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ y="341.59454"
+ x="120.5455"
+ id="tspan3989"
+ sodipodi:role="line">You</tspan></text>
+ <g
+ inkscape:label="Ebene 1"
+ id="layer1-1"
+ transform="matrix(0.46495798,0,0,0.46495798,56.560185,320.1293)">
+ <g
+ id="g3025">
+ <path
+ transform="matrix(1.055946,0,0,1.055946,-5.743133,12.54472)"
+ d="m 86.368042,50.038319 c 0,10.460472 -8.479888,18.940361 -18.940361,18.940361 -10.460473,0 -18.940361,-8.479889 -18.940361,-18.940361 0,-10.460473 8.479888,-18.940361 18.940361,-18.940361 10.460473,0 18.940361,8.479888 18.940361,18.940361 z"
+ sodipodi:ry="18.940361"
+ sodipodi:rx="18.940361"
+ sodipodi:cy="50.038319"
+ sodipodi:cx="67.427681"
+ id="path1872"
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0"
+ sodipodi:type="arc" />
+ <rect
+ rx="36.933647"
+ ry="36.933647"
+ y="87.666504"
+ x="40"
+ height="114.69568"
+ width="48.992401"
+ id="rect1874"
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0" />
+ <rect
+ rx="31.502228"
+ ry="31.502228"
+ y="173.79344"
+ x="40.406101"
+ height="29.294424"
+ width="110.10663"
+ id="rect1880"
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0" />
+ <rect
+ rx="23.898241"
+ ry="23.898241"
+ y="179.34927"
+ x="128.28937"
+ height="92.934036"
+ width="22.223356"
+ id="rect1884"
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0" />
+ <rect
+ rx="16.837397"
+ ry="16.837397"
+ y="142.98378"
+ x="100.08632"
+ height="16.162441"
+ width="145.96704"
+ id="rect1890"
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0" />
+ <rect
+ ry="16.837397"
+ rx="17.970137"
+ y="127.04215"
+ x="108.08633"
+ height="14.647212"
+ width="37.880722"
+ id="rect1892"
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0" />
+ <rect
+ transform="matrix(0.713376,0.700782,-0.700782,0.713376,0,0)"
+ ry="15.046678"
+ rx="22.315283"
+ y="6.8155155"
+ x="117.04251"
+ height="15.152294"
+ width="64.649788"
+ id="rect1900"
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0" />
+ <rect
+ ry="23.898241"
+ rx="10.862837"
+ y="127.54723"
+ x="147.50256"
+ height="13.637059"
+ width="28.789347"
+ id="rect1906"
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0" />
+ <rect
+ ry="20.639389"
+ rx="3.2588508"
+ y="132.0726"
+ x="193.76909"
+ height="9.5964489"
+ width="45.961941"
+ id="rect1910"
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0" />
+ <rect
+ ry="20.639389"
+ rx="3.2588508"
+ y="118.94063"
+ x="208.49753"
+ height="17.421562"
+ width="18.182745"
+ id="rect1912"
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0" />
+ <rect
+ ry="20.639389"
+ rx="3.2588508"
+ y="63.661659"
+ x="179.74878"
+ height="69.700523"
+ width="10.606602"
+ id="rect1914"
+ style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc"
+ id="path1938"
+ d="m 187.83001,70.816238 59.27912,16.162441 0,31.819801 -58.77404,8.5863 -0.50508,-56.568542 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.15073204px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <rect
+ ry="20.639389"
+ rx="3.2588508"
+ y="205.87465"
+ x="42.911179"
+ height="11.111678"
+ width="66.670067"
+ id="rect2827"
+ style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0" />
+ <rect
+ ry="20.639389"
+ rx="3.2588508"
+ y="211.4305"
+ x="70.225906"
+ height="60.104073"
+ width="11.616755"
+ id="rect2829"
+ style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1, 2;stroke-dashoffset:0" />
+ </g>
+ </g>
+ </g>
+ <rect
+ style="fill:url(#linearGradient3138);fill-opacity:1;stroke:#000000;stroke-width:2.49999976000000013;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4353"
+ width="190.61281"
+ height="101.89735"
+ x="736.1366"
+ y="575.54279"
+ ry="25.603445"
+ rx="25.603447" />
+ <text
+ xml:space="preserve"
+ style="font-size:14.83967876px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ x="831.53821"
+ y="619.15594"
+ id="text4355"
+ sodipodi:linespacing="125%"
+ transform="scale(0.9985416,1.0014605)"><tspan
+ id="tspan4361"
+ sodipodi:role="line"
+ x="831.53821"
+ y="619.15594"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica">Browser-REPL</tspan><tspan
+ id="tspan4372"
+ sodipodi:role="line"
+ x="831.53821"
+ y="649.15588"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica">HTTP Server</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.51999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Lstart);marker-end:url(#Arrow2Lend)"
+ d="m 718.8649,626.15633 -165.17094,0.67026"
+ id="path4410"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text5653"
+ y="618.83716"
+ x="632.24683"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ id="tspan5659"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ y="618.83716"
+ x="632.24683"
+ sodipodi:role="line">AJAX</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path5675"
+ d="m 831.40189,459.61339 0,95.93129"
+ style="fill:none;stroke:#000000;stroke-width:2.33372307;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path6288"
+ d="m 546.96008,395.61392 184.12607,0"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:url(#Arrow2Lend-0)" />
+ </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/clojurescript-compilation.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/clojurescript-compilation.svg
new file mode 100644
index 0000000..99251ad
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/clojurescript-compilation.svg
@@ -0,0 +1,606 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="925.33472"
+ height="565.10864"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="clojurescript-compilation.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ff9191;stop-opacity:1;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3909"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-79.002155,81.288185)"
+ x1="220.17732"
+ y1="551.9975"
+ x2="185.32698"
+ y2="406.91125" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3867"
+ id="linearGradient3106"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3120"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3889"
+ id="linearGradient3974"
+ x1="845.9295"
+ y1="720.82959"
+ x2="878.42365"
+ y2="798.02344"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3889"
+ id="linearGradient3986"
+ gradientUnits="userSpaceOnUse"
+ x1="845.9295"
+ y1="720.82959"
+ x2="878.42365"
+ y2="798.02344" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3889"
+ id="linearGradient3988"
+ gradientUnits="userSpaceOnUse"
+ x1="845.9295"
+ y1="720.82959"
+ x2="878.42365"
+ y2="798.02344" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4063"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2622475,0,0,0.90372718,-674.25134,346.04322)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="radialGradient4085"
+ cx="629.02985"
+ cy="270.68365"
+ fx="629.02985"
+ fy="270.68365"
+ r="286.01791"
+ gradientTransform="matrix(1,0,0,0.90643951,0,25.325296)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3074"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-79.002155,81.288185)"
+ x1="220.17732"
+ y1="551.9975"
+ x2="185.32698"
+ y2="406.91125" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3080"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.59863442,311.96092,255.22341)"
+ x1="220.17732"
+ y1="551.9975"
+ x2="185.32698"
+ y2="406.91125" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3095"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.59863442,311.96092,255.22341)"
+ x1="220.17732"
+ y1="551.9975"
+ x2="185.32698"
+ y2="406.91125" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.1033845"
+ inkscape:cx="462.66736"
+ inkscape:cy="282.55432"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1538"
+ inkscape:window-height="849"
+ inkscape:window-x="23"
+ inkscape:window-y="91"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-25.016282,-306.06307)">
+ <g
+ id="g3903"
+ transform="translate(-1.4658473,-161.21641)">
+ <rect
+ y="485.02948"
+ x="64.864838"
+ height="164.83743"
+ width="127.52402"
+ id="rect2987"
+ style="fill:url(#linearGradient3909);fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3771"
+ y="556.96301"
+ x="127.95782"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ y="556.96301"
+ x="127.95782"
+ id="tspan3773"
+ sodipodi:role="line">Source</tspan><tspan
+ id="tspan3775"
+ y="586.96301"
+ x="127.95782"
+ sodipodi:role="line">Code</tspan></text>
+ </g>
+ <g
+ id="g3114"
+ transform="translate(111.72287,-164.27794)">
+ <path
+ transform="matrix(0.7628205,0,0,0.65048544,138.46688,277.10635)"
+ d="m 358.44828,451.05295 c 0,34.67763 -42.57706,62.78941 -95.09852,62.78941 -52.52146,0 -95.09852,-28.11178 -95.09852,-62.78941 0,-34.67764 42.57706,-62.78941 95.09852,-62.78941 52.52146,0 95.09852,28.11177 95.09852,62.78941 z"
+ sodipodi:ry="62.78941"
+ sodipodi:rx="95.098518"
+ sodipodi:cy="451.05295"
+ sodipodi:cx="263.34976"
+ id="path3777"
+ style="fill:url(#linearGradient3120);fill-opacity:1;stroke:#000000;stroke-width:3.54903293;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ sodipodi:type="arc" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ x="338.48242"
+ y="564.45697"
+ id="text3797"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="338.48242"
+ y="564.45697"
+ id="tspan3999">Clojure</tspan><tspan
+ id="tspan3098"
+ sodipodi:role="line"
+ x="338.48242"
+ y="594.45697">Reader</tspan></text>
+ </g>
+ <g
+ id="g3252"
+ transform="translate(-721.24892,-220.83636)">
+ <path
+ inkscape:transform-center-x="-1.1598852"
+ sodipodi:type="star"
+ style="fill:#ffa7d8;fill-opacity:1;stroke:#000000;stroke-width:4.41909409;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3904"
+ sodipodi:sides="8"
+ sodipodi:cx="665.68964"
+ sodipodi:cy="90.775864"
+ sodipodi:r1="101.04758"
+ sodipodi:r2="70.720428"
+ sodipodi:arg1="0.84515599"
+ sodipodi:arg2="1.2357786"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 732.74628,166.36699 -43.80476,-8.80244 -29.28667,34.07852 -24.75039,-37.19891 -44.80595,3.38835 8.80244,-43.80477 -34.07852,-29.286667 37.19891,-24.750382 -3.38835,-44.805957 43.80477,8.80244 29.28667,-34.078521 24.75038,37.198913 44.80596,-3.38835 -8.80244,43.804767 34.07852,29.286671 -37.19892,24.750386 z"
+ transform="matrix(0.53156998,0.19407428,-0.19402176,0.53124187,521.7111,779.3226)"
+ inkscape:transform-center-y="-4.4649423" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ x="857.77246"
+ y="964.20227"
+ id="text3908"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="857.77246"
+ y="964.20227"
+ id="tspan3910">Effect</tspan></text>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 196.59503,406.27582 168.40499,0"
+ id="path3831"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.50000048;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 721.91575,735.61957 -191.52468,0.67026"
+ id="path3812"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3814"
+ d="m 828.48935,476.81304 0.057,159.04941"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <g
+ id="g3128"
+ transform="translate(0,3.1052419)">
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#linearGradient3106);fill-opacity:1;stroke:#000000;stroke-width:2.4678247;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3859"
+ sodipodi:cx="263.34976"
+ sodipodi:cy="451.05295"
+ sodipodi:rx="95.098518"
+ sodipodi:ry="62.78941"
+ d="m 358.44828,451.05295 c 0,34.67763 -42.57706,62.78941 -95.09852,62.78941 -52.52146,0 -95.09852,-28.11178 -95.09852,-62.78941 0,-34.67764 42.57706,-62.78941 95.09852,-62.78941 52.52146,0 95.09852,28.11177 95.09852,62.78941 z"
+ transform="matrix(1.0751123,0,0,0.95454759,543.6492,-27.42496)" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3861"
+ y="398.74762"
+ x="826.39893"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ y="398.74762"
+ x="826.39893"
+ sodipodi:role="line"
+ id="tspan4001">ClojureScript</tspan><tspan
+ y="428.74762"
+ x="826.39893"
+ sodipodi:role="line"
+ id="tspan3100">Compiler</tspan></text>
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3956"
+ d="m 534.30768,406.27582 178.30448,0"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ x="269.42297"
+ y="397.10159"
+ id="text3958"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3960"
+ x="269.42297"
+ y="397.10159"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica">characters</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3962"
+ y="365.70627"
+ x="616.1593"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ y="365.70627"
+ x="616.1593"
+ sodipodi:role="line"
+ id="tspan3966">data</tspan><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ y="395.70627"
+ x="616.1593"
+ sodipodi:role="line"
+ id="tspan3122">structures</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ x="761.8233"
+ y="549.55408"
+ id="text3142"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="761.8233"
+ y="549.55408"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ id="tspan3994">JavaScript</tspan></text>
+ <g
+ id="g3978"
+ transform="translate(22.627417,4.2426407)">
+ <g
+ style="fill:url(#linearGradient3988);fill-opacity:1"
+ id="g3156"
+ transform="matrix(1.3064485,0,0,1.8320286,-308.07673,-664.96894)">
+ <rect
+ rx="19.597748"
+ ry="13.975462"
+ y="720.73639"
+ x="783.95325"
+ height="80.467979"
+ width="140.20937"
+ id="rect3158"
+ style="fill:url(#linearGradient3986);fill-opacity:1;stroke:#000000;stroke-width:1.61594927;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ x="807.04388"
+ y="705.77167"
+ id="text3170"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="807.04388"
+ y="705.77167"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ id="tspan3172">Google</tspan><tspan
+ id="tspan3174"
+ sodipodi:role="line"
+ x="807.04388"
+ y="735.77167"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica">Closure</tspan><tspan
+ id="tspan3176"
+ sodipodi:role="line"
+ x="807.04388"
+ y="765.77167"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica">Compiler</tspan></text>
+ </g>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3990"
+ y="695.21802"
+ x="643.02942"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ id="tspan3992"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ y="695.21802"
+ x="643.02942"
+ sodipodi:role="line">optimized</tspan><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ y="725.21802"
+ x="643.02942"
+ sodipodi:role="line"
+ id="tspan3996">JavaScript</tspan></text>
+ <g
+ id="g4057"
+ transform="translate(33.941125,30.40552)">
+ <rect
+ rx="25.603447"
+ ry="25.603449"
+ y="652.85419"
+ x="299.90216"
+ height="100.26698"
+ width="176.97891"
+ id="rect4025"
+ style="fill:url(#linearGradient4063);fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4043"
+ y="697.10486"
+ x="389.30566"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ y="697.10486"
+ x="389.30566"
+ sodipodi:role="line"
+ id="tspan4047">JavaScript</tspan><tspan
+ id="tspan4053"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica, Arial, sans-serif;-inkscape-font-specification:Helvetica"
+ y="727.10486"
+ x="389.30566"
+ sodipodi:role="line">VM</tspan></text>
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4065"
+ d="m 318.86489,735.6751 -120.17094,0.67026"
+ style="fill:none;stroke:#000000;stroke-width:2.50000048;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-linked-list-1.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-linked-list-1.svg
new file mode 100644
index 0000000..ef4c30c
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-linked-list-1.svg
@@ -0,0 +1,328 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="925.33472"
+ height="565.10864"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ sodipodi:docname="collections-linked-list-1.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3893">
+ <stop
+ id="stop3895"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3897"
+ offset="1"
+ style="stop-color:#d991fe;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0838672"
+ inkscape:cx="445.92994"
+ inkscape:cy="286.40039"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1857"
+ inkscape:window-height="1156"
+ inkscape:window-x="1"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-25.016282,-306.06307)">
+ <g
+ id="g4384"
+ transform="translate(293.74138,-129.81814)">
+ <rect
+ y="724.87622"
+ x="131.41298"
+ height="53.198349"
+ width="51.989296"
+ id="rect3517"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4382"
+ width="51.989296"
+ height="53.198349"
+ x="183.41298"
+ y="724.87622" />
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3814"
+ d="m 505.62971,621.08309 95.37748,0.0566"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <g
+ id="g4388"
+ transform="translate(473.74138,-129.81814)">
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4390"
+ width="51.989296"
+ height="53.198349"
+ x="131.41298"
+ y="724.87622" />
+ <rect
+ y="724.87622"
+ x="183.41298"
+ height="53.198349"
+ width="51.989296"
+ id="rect4392"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 681.62971,621.08309 95.37748,0.0566"
+ id="path4394"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <g
+ transform="translate(651.74138,-129.81814)"
+ id="g4396">
+ <rect
+ y="724.87622"
+ x="131.41298"
+ height="53.198349"
+ width="51.989296"
+ id="rect4398"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4400"
+ width="51.989296"
+ height="53.198349"
+ x="183.41298"
+ y="724.87622" />
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.23856544;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 364.02205,508.11899 82.78246,81.92231"
+ id="path4402"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4404"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion4406"><rect
+ id="rect4408"
+ width="46.131111"
+ height="42.440624"
+ x="274.94144"
+ y="159.15485" /></flowRegion><flowPara
+ id="flowPara4410">x</flowPara></flowRoot> <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="342.72559"
+ y="497.20612"
+ id="text4412"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4414"
+ x="342.72559"
+ y="497.20612">x</tspan></text>
+ </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-linked-list-2.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-linked-list-2.svg
new file mode 100644
index 0000000..22eecc4
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-linked-list-2.svg
@@ -0,0 +1,385 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="925.33472"
+ height="565.10864"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ sodipodi:docname="collections-linked-list-1.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3893">
+ <stop
+ id="stop3895"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3897"
+ offset="1"
+ style="stop-color:#d991fe;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0838672"
+ inkscape:cx="445.92994"
+ inkscape:cy="286.40039"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1857"
+ inkscape:window-height="1156"
+ inkscape:window-x="1"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-25.016282,-306.06307)">
+ <g
+ id="g4384"
+ transform="translate(293.74138,-129.81814)">
+ <rect
+ y="724.87622"
+ x="131.41298"
+ height="53.198349"
+ width="51.989296"
+ id="rect3517"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4382"
+ width="51.989296"
+ height="53.198349"
+ x="183.41298"
+ y="724.87622" />
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3814"
+ d="m 505.62971,621.08309 95.37748,0.0566"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <g
+ id="g4388"
+ transform="translate(473.74138,-129.81814)">
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4390"
+ width="51.989296"
+ height="53.198349"
+ x="131.41298"
+ y="724.87622" />
+ <rect
+ y="724.87622"
+ x="183.41298"
+ height="53.198349"
+ width="51.989296"
+ id="rect4392"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 681.62971,621.08309 95.37748,0.0566"
+ id="path4394"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <g
+ transform="translate(651.74138,-129.81814)"
+ id="g4396">
+ <rect
+ y="724.87622"
+ x="131.41298"
+ height="53.198349"
+ width="51.989296"
+ id="rect4398"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4400"
+ width="51.989296"
+ height="53.198349"
+ x="183.41298"
+ y="724.87622" />
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.23856544;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 364.02205,508.11899 82.78246,81.92231"
+ id="path4402"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4404"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion4406"><rect
+ id="rect4408"
+ width="46.131111"
+ height="42.440624"
+ x="274.94144"
+ y="159.15485" /></flowRegion><flowPara
+ id="flowPara4410">x</flowPara></flowRoot> <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="342.72559"
+ y="497.20612"
+ id="text4412"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4414"
+ x="342.72559"
+ y="497.20612">x</tspan></text>
+ <rect
+ y="595.05811"
+ x="249.15436"
+ height="53.198349"
+ width="51.989296"
+ id="rect4418"
+ style="fill:#c9ffa1;fill-opacity:1;stroke:#000000;stroke-width:3.54330707000000000;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#c9ffa1;fill-opacity:1;stroke:#000000;stroke-width:3.54330707000000000;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4420"
+ width="51.989296"
+ height="53.198349"
+ x="301.15436"
+ y="595.05811" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 325.62971,621.08309 95.37748,0.0566"
+ id="path4422"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ style="fill:#c9ffa1;fill-opacity:1;stroke:#000000;stroke-width:3.54330707000000000;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4426"
+ width="51.989296"
+ height="53.198349"
+ x="73.154358"
+ y="595.05811" />
+ <rect
+ y="595.05811"
+ x="125.15436"
+ height="53.198349"
+ width="51.989296"
+ id="rect4428"
+ style="fill:#c9ffa1;fill-opacity:1;stroke:#000000;stroke-width:3.54330707000000000;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4430"
+ d="m 149.62971,621.08309 95.37748,0.0566"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4436"
+ d="M 180.01653,508.50545 98.094223,591.28792"
+ style="fill:none;stroke:#000000;stroke-width:2.23856544;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4438"
+ y="499.20612"
+ x="184.80833"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="499.20612"
+ x="184.80833"
+ id="tspan4440"
+ sodipodi:role="line">y</tspan></text>
+ </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-first.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-first.svg
new file mode 100644
index 0000000..47a30d9
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-first.svg
@@ -0,0 +1,393 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="925.33472"
+ height="565.10864"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ sodipodi:docname="collections-seq-lazy-first.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3893">
+ <stop
+ id="stop3895"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3897"
+ offset="1"
+ style="stop-color:#d991fe;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0838672"
+ inkscape:cx="282.6258"
+ inkscape:cy="286.40039"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1857"
+ inkscape:window-height="1156"
+ inkscape:window-x="1870"
+ inkscape:window-y="168"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-25.016282,-306.06307)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.23856544;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 68.683651,361.05934 82.782459,81.92231"
+ id="path4402"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4404"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion4406"><rect
+ id="rect4408"
+ width="46.131111"
+ height="42.440624"
+ x="274.94144"
+ y="159.15485" /></flowRegion><flowPara
+ id="flowPara4410">x</flowPara></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot3288"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion3290"><rect
+ id="rect3292"
+ width="72.887161"
+ height="44.28587"
+ x="196.51854"
+ y="275.40524" /></flowRegion><flowPara
+ id="flowPara3294">fi</flowPara></flowRoot> <rect
+ style="fill:#d2ff7a;fill-opacity:1;stroke:#000000;stroke-width:3.54330709;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3517"
+ width="67.647171"
+ height="139.95964"
+ x="413.56845"
+ y="-299.56342"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="182.76103"
+ y="666.14752"
+ id="text3360"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="182.76103"
+ y="666.14752"
+ id="tspan3366">1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="170.63586"
+ y="457.22385"
+ id="text4220"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4222"
+ x="170.63586"
+ y="457.22385">LazySeq</tspan></text>
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-230.11031"
+ x="479.56848"
+ height="70.506523"
+ width="67.647171"
+ id="rect4224"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330709;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-533.90948"
+ x="482.76514"
+ height="139.95964"
+ width="67.647171"
+ id="rect4912"
+ style="fill:#d2ff7a;fill-opacity:1;stroke:#000000;stroke-width:3.26060963;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4914"
+ y="526.42047"
+ x="404.98193"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="526.42047"
+ x="404.98193"
+ id="tspan4916"
+ sodipodi:role="line">LazySeq</tspan></text>
+ <rect
+ style="fill:#d2ff7a;fill-opacity:1;stroke:#000000;stroke-width:3.26060963;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4918"
+ width="67.647171"
+ height="139.95964"
+ x="548.76514"
+ y="-533.90948"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="448.98193"
+ y="590.42053"
+ id="text4920"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4922"
+ x="448.98193"
+ y="590.42053">fn</tspan></text>
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330709;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4924"
+ width="67.647171"
+ height="70.59742"
+ x="479.56848"
+ y="-299.56342"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4926"
+ y="520.30127"
+ x="173.11786"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="520.30127"
+ x="173.11786"
+ id="tspan4928"
+ sodipodi:role="line"
+ style="font-size:22px">first</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="239.11786"
+ y="520.30127"
+ id="text4930"
+ sodipodi:linespacing="125%"><tspan
+ style="font-size:22px"
+ sodipodi:role="line"
+ id="tspan4932"
+ x="239.11786"
+ y="520.30127">next</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3380"
+ d="m 194.9649,530.77891 -0.0566,95.37748"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 292.23476,514.92243 95.37748,0.0566"
+ id="path4394"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="40.081837"
+ y="348.3544"
+ id="text3275"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3277"
+ x="40.081837"
+ y="348.3544">a-range</tspan></text>
+ </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-initial.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-initial.svg
new file mode 100644
index 0000000..f499888
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-initial.svg
@@ -0,0 +1,322 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="925.33472"
+ height="565.10864"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ sodipodi:docname="collections-seq-lazy-initial.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3893">
+ <stop
+ id="stop3895"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3897"
+ offset="1"
+ style="stop-color:#d991fe;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0838672"
+ inkscape:cx="282.6258"
+ inkscape:cy="286.40039"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1857"
+ inkscape:window-height="1156"
+ inkscape:window-x="1818"
+ inkscape:window-y="153"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-25.016282,-306.06307)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.23856544;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 68.683651,361.05934 82.782459,81.92231"
+ id="path4402"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4404"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion4406"><rect
+ id="rect4408"
+ width="46.131111"
+ height="42.440624"
+ x="274.94144"
+ y="159.15485" /></flowRegion><flowPara
+ id="flowPara4410">x</flowPara></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot3288"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion3290"><rect
+ id="rect3292"
+ width="72.887161"
+ height="44.28587"
+ x="196.51854"
+ y="275.40524" /></flowRegion><flowPara
+ id="flowPara3294">fi</flowPara></flowRoot> <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-296.79556"
+ x="413.56848"
+ height="139.95964"
+ width="67.647171"
+ id="rect4912"
+ style="fill:#d2ff7a;fill-opacity:1;stroke:#000000;stroke-width:3.26060963;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4914"
+ y="457.22382"
+ x="167.86801"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="457.22382"
+ x="167.86801"
+ id="tspan4916"
+ sodipodi:role="line">LazySeq</tspan></text>
+ <rect
+ style="fill:#d2ff7a;fill-opacity:1;stroke:#000000;stroke-width:3.26060963;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4918"
+ width="67.647171"
+ height="139.95964"
+ x="479.56848"
+ y="-296.79556"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="211.86801"
+ y="521.22388"
+ id="text4920"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4922"
+ x="211.86801"
+ y="521.22388">fn</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot3263"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion3265"><rect
+ id="rect3267"
+ width="190.9828"
+ height="41.518002"
+ x="11.994089"
+ y="9.6900454" /></flowRegion><flowPara
+ id="flowPara3269">ra</flowPara></flowRoot> <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="44.385441"
+ y="349.58655"
+ id="text3271"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3273"
+ x="44.385441"
+ y="349.58655">a-range</tspan></text>
+ </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-rest.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-rest.svg
new file mode 100644
index 0000000..d0a7dcb
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-rest.svg
@@ -0,0 +1,445 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="721.24689"
+ height="359.7515"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="collections-seq-lazy-rest.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3893">
+ <stop
+ id="stop3895"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3897"
+ offset="1"
+ style="stop-color:#d991fe;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0838672"
+ inkscape:cx="373.91292"
+ inkscape:cy="104.3132"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1678"
+ inkscape:window-height="1029"
+ inkscape:window-x="1366"
+ inkscape:window-y="19"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-46.793694,-329.33304)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.23856544;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 68.683651,361.05934 82.782459,81.92231"
+ id="path4402"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4404"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion4406"><rect
+ id="rect4408"
+ width="46.131111"
+ height="42.440624"
+ x="274.94144"
+ y="159.15485" /></flowRegion><flowPara
+ id="flowPara4410">x</flowPara></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot3288"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion3290"><rect
+ id="rect3292"
+ width="72.887161"
+ height="44.28587"
+ x="196.51854"
+ y="275.40524" /></flowRegion><flowPara
+ id="flowPara3294">fi</flowPara></flowRoot> <rect
+ style="opacity:0.3;fill:#d2ff7a;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3517"
+ width="67.647171"
+ height="139.95964"
+ x="413.56845"
+ y="-299.56342"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;opacity:0.3;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="170.63586"
+ y="457.22385"
+ id="text4220"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4222"
+ x="170.63586"
+ y="457.22385">LazySeq</tspan></text>
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-230.11031"
+ x="479.56848"
+ height="70.506523"
+ width="67.647171"
+ id="rect4224"
+ style="opacity:0.3;fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <g
+ id="g5021"
+ transform="translate(232.50081,71.04191)">
+ <rect
+ style="fill:#d2ff7a;fill-opacity:1;stroke:#000000;stroke-width:3.26060963;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4912"
+ width="67.647171"
+ height="139.95964"
+ x="482.76514"
+ y="-533.90948"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="404.98193"
+ y="526.42047"
+ id="text4914"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4916"
+ x="404.98193"
+ y="526.42047">LazySeq</tspan></text>
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-533.90948"
+ x="548.76514"
+ height="139.95964"
+ width="67.647171"
+ id="rect4918"
+ style="fill:#d2ff7a;fill-opacity:1;stroke:#000000;stroke-width:3.26060963;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4920"
+ y="590.42053"
+ x="448.98193"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="590.42053"
+ x="448.98193"
+ id="tspan4922"
+ sodipodi:role="line">fn</tspan></text>
+ </g>
+ <rect
+ style="opacity:0.3;fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4924"
+ width="67.647171"
+ height="70.59742"
+ x="479.56848"
+ y="-299.56342"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4926"
+ y="520.30127"
+ x="173.11786"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;opacity:0.3;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="520.30127"
+ x="173.11786"
+ id="tspan4928"
+ sodipodi:role="line"
+ style="font-size:22px">first</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;opacity:0.3;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="239.11786"
+ y="520.30127"
+ id="text4930"
+ sodipodi:linespacing="125%"><tspan
+ style="font-size:22px"
+ sodipodi:role="line"
+ id="tspan4932"
+ x="239.11786"
+ y="520.30127">next</tspan></text>
+ <path
+ style="opacity:0.3;fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 292.23476,514.92243 95.37748,0.0566"
+ id="path4394"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-532.98682"
+ x="484.61035"
+ height="139.95964"
+ width="67.647171"
+ id="rect5029"
+ style="fill:#d2ff7a;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text5035"
+ y="528.26575"
+ x="404.0593"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="528.26575"
+ x="404.0593"
+ id="tspan5037"
+ sodipodi:role="line">LazySeq</tspan></text>
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect5039"
+ width="67.647171"
+ height="70.506523"
+ x="550.61041"
+ y="-463.53372"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-532.98682"
+ x="550.61041"
+ height="70.59742"
+ width="67.647171"
+ id="rect5041"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="406.54129"
+ y="591.3432"
+ id="text5043"
+ sodipodi:linespacing="125%"><tspan
+ style="font-size:22px"
+ sodipodi:role="line"
+ id="tspan5045"
+ x="406.54129"
+ y="591.3432">first</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text5047"
+ y="591.3432"
+ x="472.54129"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="591.3432"
+ x="472.54129"
+ id="tspan5049"
+ sodipodi:role="line"
+ style="font-size:22px">next</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path5053"
+ d="m 524.73557,585.04172 95.37748,0.0566"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="48.39135"
+ y="355.73538"
+ id="text3259"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3261"
+ x="48.39135"
+ y="355.73538">a-range</tspan></text>
+ </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-second.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-second.svg
new file mode 100644
index 0000000..37cf346
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-lazy-second.svg
@@ -0,0 +1,464 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="925.33472"
+ height="565.10864"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ sodipodi:docname="collections-seq-lazy-second.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3893">
+ <stop
+ id="stop3895"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3897"
+ offset="1"
+ style="stop-color:#d991fe;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0838672"
+ inkscape:cx="282.6258"
+ inkscape:cy="286.40039"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1857"
+ inkscape:window-height="1156"
+ inkscape:window-x="2050"
+ inkscape:window-y="181"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18"
+ showguides="true"
+ inkscape:guide-bbox="true" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-25.016282,-306.06307)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.23856544;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 68.683651,361.05934 82.782459,81.92231"
+ id="path4402"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4404"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion4406"><rect
+ id="rect4408"
+ width="46.131111"
+ height="42.440624"
+ x="274.94144"
+ y="159.15485" /></flowRegion><flowPara
+ id="flowPara4410">x</flowPara></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot3288"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion3290"><rect
+ id="rect3292"
+ width="72.887161"
+ height="44.28587"
+ x="196.51854"
+ y="275.40524" /></flowRegion><flowPara
+ id="flowPara3294">fi</flowPara></flowRoot> <rect
+ style="fill:#d2ff7a;fill-opacity:1;stroke:#000000;stroke-width:3.54330709;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3517"
+ width="67.647171"
+ height="139.95964"
+ x="413.56845"
+ y="-299.56342"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="170.63586"
+ y="457.22385"
+ id="text4220"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4222"
+ x="170.63586"
+ y="457.22385">LazySeq</tspan></text>
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-230.11031"
+ x="479.56848"
+ height="70.506523"
+ width="67.647171"
+ id="rect4224"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330709;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <g
+ id="g5021"
+ transform="translate(232.50081,71.04191)">
+ <rect
+ style="fill:#d2ff7a;fill-opacity:1;stroke:#000000;stroke-width:3.26060963;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4912"
+ width="67.647171"
+ height="139.95964"
+ x="482.76514"
+ y="-533.90948"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="404.98193"
+ y="526.42047"
+ id="text4914"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4916"
+ x="404.98193"
+ y="526.42047">LazySeq</tspan></text>
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-533.90948"
+ x="548.76514"
+ height="139.95964"
+ width="67.647171"
+ id="rect4918"
+ style="fill:#d2ff7a;fill-opacity:1;stroke:#000000;stroke-width:3.26060963;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4920"
+ y="590.42053"
+ x="448.98193"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="590.42053"
+ x="448.98193"
+ id="tspan4922"
+ sodipodi:role="line">fn</tspan></text>
+ </g>
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330709;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4924"
+ width="67.647171"
+ height="70.59742"
+ x="479.56848"
+ y="-299.56342"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4926"
+ y="520.30127"
+ x="173.11786"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="520.30127"
+ x="173.11786"
+ id="tspan4928"
+ sodipodi:role="line"
+ style="font-size:22px">first</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="239.11786"
+ y="520.30127"
+ id="text4930"
+ sodipodi:linespacing="125%"><tspan
+ style="font-size:22px"
+ sodipodi:role="line"
+ id="tspan4932"
+ x="239.11786"
+ y="520.30127">next</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 292.23476,514.92243 95.37748,0.0566"
+ id="path4394"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-532.98682"
+ x="484.61035"
+ height="139.95964"
+ width="67.647171"
+ id="rect5029"
+ style="fill:#d2ff7a;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text5031"
+ y="737.18945"
+ x="416.18445"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ id="tspan5033"
+ y="737.18945"
+ x="416.18445"
+ sodipodi:role="line">2</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text5035"
+ y="528.26575"
+ x="404.0593"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="528.26575"
+ x="404.0593"
+ id="tspan5037"
+ sodipodi:role="line">LazySeq</tspan></text>
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect5039"
+ width="67.647171"
+ height="70.506523"
+ x="550.61041"
+ y="-463.53372"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-532.98682"
+ x="550.61041"
+ height="70.59742"
+ width="67.647171"
+ id="rect5041"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:3.54330707;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="406.54129"
+ y="591.3432"
+ id="text5043"
+ sodipodi:linespacing="125%"><tspan
+ style="font-size:22px"
+ sodipodi:role="line"
+ id="tspan5045"
+ x="406.54129"
+ y="591.3432">first</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text5047"
+ y="591.3432"
+ x="472.54129"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="591.3432"
+ x="472.54129"
+ id="tspan5049"
+ sodipodi:role="line"
+ style="font-size:22px">next</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 428.38833,601.82082 -0.0566,95.37748"
+ id="path5051"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path5053"
+ d="m 524.73557,585.04172 95.37748,0.0566"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="45.468727"
+ y="352.36621"
+ id="text3255"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3257"
+ x="45.468727"
+ y="352.36621">a-range</tspan></text>
+ </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-first.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-first.svg
new file mode 100644
index 0000000..8114d09
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-first.svg
@@ -0,0 +1,445 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="925.33472"
+ height="565.10864"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ sodipodi:docname="collections-seq-list-first.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3893">
+ <stop
+ id="stop3895"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3897"
+ offset="1"
+ style="stop-color:#d991fe;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0838672"
+ inkscape:cx="445.92994"
+ inkscape:cy="286.40039"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1857"
+ inkscape:window-height="1156"
+ inkscape:window-x="1679"
+ inkscape:window-y="135"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-25.016282,-306.06307)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.23856544;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 226.24195,364.74983 -82.78246,81.92231"
+ id="path4402"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4404"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion4406"><rect
+ id="rect4408"
+ width="46.131111"
+ height="42.440624"
+ x="274.94144"
+ y="159.15485" /></flowRegion><flowPara
+ id="flowPara4410">x</flowPara></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot3288"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion3290"><rect
+ id="rect3292"
+ width="72.887161"
+ height="44.28587"
+ x="196.51854"
+ y="275.40524" /></flowRegion><flowPara
+ id="flowPara3294">fi</flowPara></flowRoot> <g
+ id="g3304"
+ transform="translate(-116.43471,-111.07738)">
+ <rect
+ y="562.79431"
+ x="217.59236"
+ height="81.743607"
+ width="79.885803"
+ id="rect3517"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3286"
+ width="79.885803"
+ height="81.743607"
+ x="297.59235"
+ y="562.79431" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3296"
+ y="613.14697"
+ x="229.67775"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
+ y="613.14697"
+ x="229.67775"
+ id="tspan3298"
+ sodipodi:role="line">first</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="303.67773"
+ y="613.14697"
+ id="text3300"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3302"
+ x="303.67773"
+ y="613.14697"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">next</tspan></text>
+ </g>
+ <g
+ id="g3312"
+ transform="translate(135.56529,-111.07738)">
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3314"
+ width="79.885803"
+ height="81.743607"
+ x="217.59236"
+ y="562.79431" />
+ <rect
+ y="562.79431"
+ x="297.59235"
+ height="81.743607"
+ width="79.885803"
+ id="rect3316"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="229.67775"
+ y="613.14697"
+ id="text3318"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3320"
+ x="229.67775"
+ y="613.14697"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">first</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3322"
+ y="613.14697"
+ x="303.67773"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
+ y="613.14697"
+ x="303.67773"
+ id="tspan3324"
+ sodipodi:role="line">next</tspan></text>
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3814"
+ d="m 252.3433,493.24376 95.37748,0.0566"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <g
+ transform="translate(385.56529,-111.07738)"
+ id="g3340">
+ <rect
+ y="562.79431"
+ x="217.59236"
+ height="81.743607"
+ width="79.885803"
+ id="rect3342"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3344"
+ width="79.885803"
+ height="81.743607"
+ x="297.59235"
+ y="562.79431" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3346"
+ y="613.14697"
+ x="229.67775"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
+ y="613.14697"
+ x="229.67775"
+ id="tspan3348"
+ sodipodi:role="line">first</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="303.67773"
+ y="613.14697"
+ id="text3350"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3352"
+ x="303.67773"
+ y="613.14697"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">next</tspan></text>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 502.3433,493.24376 95.37748,0.0566"
+ id="path3354"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 756.92686,492.77949 95.37748,0.0566"
+ id="path4394"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="860.14417"
+ y="500.99225"
+ id="text3356"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3358"
+ x="860.14417"
+ y="500.99225">nil</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="128.32632"
+ y="651.07605"
+ id="text3360"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="128.32632"
+ y="651.07605"
+ id="tspan3366">1</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3364"
+ d="m 141.35932,515.40384 -0.0566,95.37748"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot3382"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(3.016282,298.06307)"><flowRegion
+ id="flowRegion3384"><rect
+ id="rect3386"
+ width="123.63139"
+ height="46.131111"
+ x="227.8877"
+ y="37.368713" /></flowRegion><flowPara
+ id="flowPara3388">a-list</flowPara></flowRoot> </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-initial.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-initial.svg
new file mode 100644
index 0000000..9d06230
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-initial.svg
@@ -0,0 +1,479 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="925.33472"
+ height="565.10864"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ sodipodi:docname="collections-seq-list-initial.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3893">
+ <stop
+ id="stop3895"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3897"
+ offset="1"
+ style="stop-color:#d991fe;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0838672"
+ inkscape:cx="282.6258"
+ inkscape:cy="286.40039"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1857"
+ inkscape:window-height="1156"
+ inkscape:window-x="1724"
+ inkscape:window-y="29"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-25.016282,-306.06307)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.23856544;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 226.24195,364.74983 -82.78246,81.92231"
+ id="path4402"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4404"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion4406"><rect
+ id="rect4408"
+ width="46.131111"
+ height="42.440624"
+ x="274.94144"
+ y="159.15485" /></flowRegion><flowPara
+ id="flowPara4410">x</flowPara></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot3288"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion3290"><rect
+ id="rect3292"
+ width="72.887161"
+ height="44.28587"
+ x="196.51854"
+ y="275.40524" /></flowRegion><flowPara
+ id="flowPara3294">fi</flowPara></flowRoot> <g
+ id="g3304"
+ transform="translate(-116.43471,-111.07738)">
+ <rect
+ y="562.79431"
+ x="217.59236"
+ height="81.743607"
+ width="79.885803"
+ id="rect3517"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3286"
+ width="79.885803"
+ height="81.743607"
+ x="297.59235"
+ y="562.79431" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3296"
+ y="613.14697"
+ x="229.67775"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
+ y="613.14697"
+ x="229.67775"
+ id="tspan3298"
+ sodipodi:role="line">first</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="303.67773"
+ y="613.14697"
+ id="text3300"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3302"
+ x="303.67773"
+ y="613.14697"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">next</tspan></text>
+ </g>
+ <g
+ id="g3312"
+ transform="translate(135.56529,-111.07738)">
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3314"
+ width="79.885803"
+ height="81.743607"
+ x="217.59236"
+ y="562.79431" />
+ <rect
+ y="562.79431"
+ x="297.59235"
+ height="81.743607"
+ width="79.885803"
+ id="rect3316"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="229.67775"
+ y="613.14697"
+ id="text3318"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3320"
+ x="229.67775"
+ y="613.14697"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">first</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3322"
+ y="613.14697"
+ x="303.67773"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
+ y="613.14697"
+ x="303.67773"
+ id="tspan3324"
+ sodipodi:role="line">next</tspan></text>
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3814"
+ d="m 252.3433,493.24376 95.37748,0.0566"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <g
+ transform="translate(385.56529,-111.07738)"
+ id="g3340">
+ <rect
+ y="562.79431"
+ x="217.59236"
+ height="81.743607"
+ width="79.885803"
+ id="rect3342"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3344"
+ width="79.885803"
+ height="81.743607"
+ x="297.59235"
+ y="562.79431" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3346"
+ y="613.14697"
+ x="229.67775"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
+ y="613.14697"
+ x="229.67775"
+ id="tspan3348"
+ sodipodi:role="line">first</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="303.67773"
+ y="613.14697"
+ id="text3350"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3352"
+ x="303.67773"
+ y="613.14697"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">next</tspan></text>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 502.3433,493.24376 95.37748,0.0566"
+ id="path3354"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 756.92686,492.77949 95.37748,0.0566"
+ id="path4394"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="860.14417"
+ y="500.99225"
+ id="text3356"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3358"
+ x="860.14417"
+ y="500.99225">nil</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="128.32632"
+ y="651.07605"
+ id="text3360"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="128.32632"
+ y="651.07605"
+ id="tspan3366">1</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3364"
+ d="m 141.35932,515.40384 -0.0566,95.37748"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3370"
+ y="651.07605"
+ x="380.32632"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ id="tspan3372"
+ y="651.07605"
+ x="380.32632"
+ sodipodi:role="line">2</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 393.35932,515.40384 -0.0566,95.37748"
+ id="path3374"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="630.32629"
+ y="651.07605"
+ id="text3376"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="630.32629"
+ y="651.07605"
+ id="tspan3378">3</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3380"
+ d="m 643.35932,515.40384 -0.0566,95.37748"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot3382"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(3.016282,298.06307)"><flowRegion
+ id="flowRegion3384"><rect
+ id="rect3386"
+ width="123.63139"
+ height="46.131111"
+ x="227.8877"
+ y="37.368713" /></flowRegion><flowPara
+ id="flowPara3388">a-list</flowPara></flowRoot> </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-rest.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-rest.svg
new file mode 100644
index 0000000..3d4f1a6
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-rest.svg
@@ -0,0 +1,425 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="925.33472"
+ height="565.10864"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ sodipodi:docname="collections-seq-list-rest.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3893">
+ <stop
+ id="stop3895"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3897"
+ offset="1"
+ style="stop-color:#d991fe;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0838672"
+ inkscape:cx="119.32166"
+ inkscape:cy="286.40039"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1857"
+ inkscape:window-height="1156"
+ inkscape:window-x="1747"
+ inkscape:window-y="150"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-25.016282,-306.06307)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.23856544;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 226.24195,364.74983 -82.78246,81.92231"
+ id="path4402"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4404"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion4406"><rect
+ id="rect4408"
+ width="46.131111"
+ height="42.440624"
+ x="274.94144"
+ y="159.15485" /></flowRegion><flowPara
+ id="flowPara4410">x</flowPara></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot3288"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion3290"><rect
+ id="rect3292"
+ width="72.887161"
+ height="44.28587"
+ x="196.51854"
+ y="275.40524" /></flowRegion><flowPara
+ id="flowPara3294">fi</flowPara></flowRoot> <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103000000015;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;opacity:0.3"
+ id="rect3517"
+ width="79.885803"
+ height="81.743607"
+ x="101.15765"
+ y="451.71692" />
+ <rect
+ y="451.71692"
+ x="181.15764"
+ height="81.743607"
+ width="79.885803"
+ id="rect3286"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103000000015;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;opacity:0.3" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;opacity:0.3"
+ x="113.24304"
+ y="502.06958"
+ id="text3296"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3298"
+ x="113.24304"
+ y="502.06958"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">first</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3300"
+ y="502.06958"
+ x="187.24303"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;opacity:0.3"
+ xml:space="preserve"><tspan
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
+ y="502.06958"
+ x="187.24303"
+ id="tspan3302"
+ sodipodi:role="line">next</tspan></text>
+ <g
+ id="g3312"
+ transform="translate(135.56529,-111.07738)"
+ style="opacity:1">
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103000000015;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3314"
+ width="79.885803"
+ height="81.743607"
+ x="217.59236"
+ y="562.79431" />
+ <rect
+ y="562.79431"
+ x="297.59235"
+ height="81.743607"
+ width="79.885803"
+ id="rect3316"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103000000015;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="229.67775"
+ y="613.14697"
+ id="text3318"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3320"
+ x="229.67775"
+ y="613.14697"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">first</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3322"
+ y="613.14697"
+ x="303.67773"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
+ y="613.14697"
+ x="303.67773"
+ id="tspan3324"
+ sodipodi:role="line">next</tspan></text>
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3814"
+ d="m 252.3433,493.24376 95.37748,0.0566"
+ style="fill:none;stroke:#000000;stroke-width:2.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend);opacity:0.3" />
+ <g
+ transform="translate(385.56529,-111.07738)"
+ id="g3340">
+ <rect
+ y="562.79431"
+ x="217.59236"
+ height="81.743607"
+ width="79.885803"
+ id="rect3342"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3344"
+ width="79.885803"
+ height="81.743607"
+ x="297.59235"
+ y="562.79431" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3346"
+ y="613.14697"
+ x="229.67775"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
+ y="613.14697"
+ x="229.67775"
+ id="tspan3348"
+ sodipodi:role="line">first</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="303.67773"
+ y="613.14697"
+ id="text3350"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3352"
+ x="303.67773"
+ y="613.14697"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">next</tspan></text>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend);opacity:1"
+ d="m 502.3433,493.24376 95.37748,0.0566"
+ id="path3354"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 756.92686,492.77949 95.37748,0.0566"
+ id="path4394"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="860.14417"
+ y="500.99225"
+ id="text3356"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3358"
+ x="860.14417"
+ y="500.99225">nil</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot3382"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(3.016282,298.06307)"><flowRegion
+ id="flowRegion3384"><rect
+ id="rect3386"
+ width="123.63139"
+ height="46.131111"
+ x="227.8877"
+ y="37.368713" /></flowRegion><flowPara
+ id="flowPara3388">a-list</flowPara></flowRoot> </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-second.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-second.svg
new file mode 100644
index 0000000..4db9071
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-seq-list-second.svg
@@ -0,0 +1,446 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="925.33472"
+ height="565.10864"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ sodipodi:docname="collections-seq-list-second.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3893">
+ <stop
+ id="stop3895"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3897"
+ offset="1"
+ style="stop-color:#d991fe;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0838672"
+ inkscape:cx="445.92994"
+ inkscape:cy="286.40039"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1857"
+ inkscape:window-height="1156"
+ inkscape:window-x="2054"
+ inkscape:window-y="101"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-25.016282,-306.06307)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.23856544;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 226.24195,364.74983 -82.78246,81.92231"
+ id="path4402"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4404"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion4406"><rect
+ id="rect4408"
+ width="46.131111"
+ height="42.440624"
+ x="274.94144"
+ y="159.15485" /></flowRegion><flowPara
+ id="flowPara4410">x</flowPara></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot3288"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion3290"><rect
+ id="rect3292"
+ width="72.887161"
+ height="44.28587"
+ x="196.51854"
+ y="275.40524" /></flowRegion><flowPara
+ id="flowPara3294">fi</flowPara></flowRoot> <g
+ id="g3304"
+ transform="translate(-116.43471,-111.07738)">
+ <rect
+ y="562.79431"
+ x="217.59236"
+ height="81.743607"
+ width="79.885803"
+ id="rect3517"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3286"
+ width="79.885803"
+ height="81.743607"
+ x="297.59235"
+ y="562.79431" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3296"
+ y="613.14697"
+ x="229.67775"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
+ y="613.14697"
+ x="229.67775"
+ id="tspan3298"
+ sodipodi:role="line">first</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="303.67773"
+ y="613.14697"
+ id="text3300"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3302"
+ x="303.67773"
+ y="613.14697"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">next</tspan></text>
+ </g>
+ <g
+ id="g3312"
+ transform="translate(135.56529,-111.07738)">
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3314"
+ width="79.885803"
+ height="81.743607"
+ x="217.59236"
+ y="562.79431" />
+ <rect
+ y="562.79431"
+ x="297.59235"
+ height="81.743607"
+ width="79.885803"
+ id="rect3316"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="229.67775"
+ y="613.14697"
+ id="text3318"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3320"
+ x="229.67775"
+ y="613.14697"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">first</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3322"
+ y="613.14697"
+ x="303.67773"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
+ y="613.14697"
+ x="303.67773"
+ id="tspan3324"
+ sodipodi:role="line">next</tspan></text>
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3814"
+ d="m 252.3433,493.24376 95.37748,0.0566"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <g
+ transform="translate(385.56529,-111.07738)"
+ id="g3340">
+ <rect
+ y="562.79431"
+ x="217.59236"
+ height="81.743607"
+ width="79.885803"
+ id="rect3342"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:5.44458103;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3344"
+ width="79.885803"
+ height="81.743607"
+ x="297.59235"
+ y="562.79431" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3346"
+ y="613.14697"
+ x="229.67775"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans"
+ y="613.14697"
+ x="229.67775"
+ id="tspan3348"
+ sodipodi:role="line">first</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="303.67773"
+ y="613.14697"
+ id="text3350"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3352"
+ x="303.67773"
+ y="613.14697"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">next</tspan></text>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 502.3433,493.24376 95.37748,0.0566"
+ id="path3354"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 756.92686,492.77949 95.37748,0.0566"
+ id="path4394"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="860.14417"
+ y="500.99225"
+ id="text3356"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3358"
+ x="860.14417"
+ y="500.99225">nil</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3370"
+ y="651.07605"
+ x="380.32632"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ id="tspan3372"
+ y="651.07605"
+ x="380.32632"
+ sodipodi:role="line">2</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 393.35932,515.40384 -0.0566,95.37748"
+ id="path3374"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot3382"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(3.016282,298.06307)"><flowRegion
+ id="flowRegion3384"><rect
+ id="rect3386"
+ width="123.63139"
+ height="46.131111"
+ x="227.8877"
+ y="37.368713" /></flowRegion><flowPara
+ id="flowPara3388">a-list</flowPara><flowPara
+ id="flowPara3291" /></flowRoot> </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-structural-sharing.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-structural-sharing.svg
new file mode 100644
index 0000000..3fd09ec
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-structural-sharing.svg
@@ -0,0 +1,551 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="925.33472"
+ height="565.10864"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ sodipodi:docname="collections-tree-2.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Mend"
+ style="overflow:visible;">
+ <path
+ id="path4150"
+ style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(0.6) rotate(180) translate(0,0)" />
+ </marker>
+ <linearGradient
+ id="linearGradient3893">
+ <stop
+ id="stop3895"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3897"
+ offset="1"
+ style="stop-color:#d991fe;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0838672"
+ inkscape:cx="403.96443"
+ inkscape:cy="286.40039"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1857"
+ inkscape:window-height="1156"
+ inkscape:window-x="1"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18"
+ showguides="true"
+ inkscape:guide-bbox="true" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-25.016282,-306.06307)">
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3517"
+ width="31.274717"
+ height="29.715906"
+ x="421.06509"
+ y="466.41479" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4404"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion4406"><rect
+ id="rect4408"
+ width="46.131111"
+ height="42.440624"
+ x="274.94144"
+ y="159.15485" /></flowRegion><flowPara
+ id="flowPara4410">x</flowPara></flowRoot> <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="368.24951"
+ y="402.63437"
+ id="text4412"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4414"
+ x="368.24951"
+ y="402.63437">x</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4570"
+ d="m 382.11892,408.43418 55.23807,55.31812"
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4622"
+ d="m 420.88244,496.09383 -46.08456,46.1646"
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ y="544.83765"
+ x="357.40417"
+ height="29.715906"
+ width="31.274717"
+ id="rect4624"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4630"
+ d="m 388.81696,574.43431 13.61547,57.90173"
+ style="fill:none;stroke:#000000;stroke-width:1.78253996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ y="635.2547"
+ x="326.96353"
+ height="29.715906"
+ width="31.274717"
+ id="rect4636"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 327.49791,664.65119 -5.62879,64.98672"
+ id="path4640"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4642"
+ d="m 358.89058,664.65119 5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4644"
+ width="31.274717"
+ height="29.715906"
+ x="390.61264"
+ y="635.2547" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4646"
+ d="m 391.14702,664.65119 -5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 422.53969,664.65119 5.62879,64.98672"
+ id="path4648"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 357.60632,574.43431 -13.61547,57.90173"
+ id="path4662"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4668"
+ width="31.274717"
+ height="29.715906"
+ x="308.51108"
+ y="733.97528" />
+ <rect
+ y="733.97528"
+ x="340.51108"
+ height="29.715906"
+ width="31.274717"
+ id="rect4672"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4674"
+ width="31.274717"
+ height="29.715906"
+ x="372.51108"
+ y="733.97528" />
+ <rect
+ y="733.97528"
+ x="404.51108"
+ height="29.715906"
+ width="31.274717"
+ id="rect4676"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4717"
+ y="402.63437"
+ x="584.24951"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="402.63437"
+ x="584.24951"
+ sodipodi:role="line"
+ id="tspan4787">y</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="M 578.35873,408.43418 523.12066,463.7523"
+ id="path4721"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ style="fill:#c3ff83;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4810"
+ width="31.274717"
+ height="29.715906"
+ x="507.06509"
+ y="466.41479" />
+ <rect
+ y="544.83765"
+ x="443.40414"
+ height="29.715906"
+ width="31.274717"
+ id="rect4812"
+ style="fill:#c3ff83;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#c3ff83;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4814"
+ width="31.274717"
+ height="29.715906"
+ x="476.61264"
+ y="635.2547" />
+ <rect
+ y="733.97528"
+ x="484.51108"
+ height="29.715906"
+ width="31.274717"
+ id="rect4816"
+ style="fill:#c3ff83;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4818"
+ width="31.274717"
+ height="29.715906"
+ x="587.49396"
+ y="545.91504" />
+ <rect
+ y="636.17731"
+ x="557.35687"
+ height="29.715906"
+ width="31.274717"
+ id="rect4820"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 557.89124,663.57381 -5.62879,64.98672"
+ id="path4822"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4824"
+ d="m 589.28391,665.57381 5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4826"
+ width="31.274717"
+ height="29.715906"
+ x="618.85712"
+ y="636.17731" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4828"
+ d="m 619.39151,663.57381 -5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 650.78418,665.57381 5.62879,64.98672"
+ id="path4830"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 619.06145,575.35693 13.61547,57.90173"
+ id="path4832"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4834"
+ d="m 587.85081,575.35693 -13.61547,57.90173"
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4836"
+ width="31.274717"
+ height="29.715906"
+ x="538.51111"
+ y="733.97528" />
+ <rect
+ y="733.97528"
+ x="570.51111"
+ height="29.715906"
+ width="31.274717"
+ id="rect4838"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4840"
+ width="31.274717"
+ height="29.715906"
+ x="602.51111"
+ y="733.97528" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4842"
+ d="m 506.88244,496.09383 -46.08456,46.1646"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 538.50692,496.29476 63.78382,47.58069"
+ id="path4844"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4846"
+ d="m 451.4126,496.08168 134.19,48.36814"
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 474.81696,574.43431 13.61547,57.90173"
+ id="path4848"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 476.23858,664.73769 -86.46063,64.80387"
+ id="path4850"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4852"
+ d="m 507.89124,663.57381 -5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4854"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(266.36071,322.67027)"><flowRegion
+ id="flowRegion4856"><rect
+ id="rect4858"
+ width="173.45299"
+ height="52.58947"
+ x="373.66202"
+ y="388.88779" /></flowRegion><flowPara
+ id="flowPara4860">...</flowPara></flowRoot> <path
+ style="fill:none;stroke:#000000;stroke-width:2.12598419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 444.67539,573.98546 -90.27327,55.04462"
+ id="path4862"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-tree-1.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-tree-1.svg
new file mode 100644
index 0000000..f44504a
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-tree-1.svg
@@ -0,0 +1,477 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="925.33472"
+ height="565.10864"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ sodipodi:docname="collections-linked-list-2.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Mend"
+ style="overflow:visible;">
+ <path
+ id="path4150"
+ style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(0.6) rotate(180) translate(0,0)" />
+ </marker>
+ <linearGradient
+ id="linearGradient3893">
+ <stop
+ id="stop3895"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3897"
+ offset="1"
+ style="stop-color:#d991fe;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0838672"
+ inkscape:cx="403.96443"
+ inkscape:cy="286.40039"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1857"
+ inkscape:window-height="1156"
+ inkscape:window-x="1"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18"
+ showguides="true"
+ inkscape:guide-bbox="true" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-25.016282,-306.06307)">
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3517"
+ width="31.274717"
+ height="29.715906"
+ x="213.4751"
+ y="469.18268" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4404"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion4406"><rect
+ id="rect4408"
+ width="46.131111"
+ height="42.440624"
+ x="274.94144"
+ y="159.15485" /></flowRegion><flowPara
+ id="flowPara4410">x</flowPara></flowRoot> <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="160.6595"
+ y="405.40225"
+ id="text4412"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4414"
+ x="160.6595"
+ y="405.40225">x</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4570"
+ d="m 174.52892,411.20205 55.23807,55.31812"
+ style="fill:none;stroke:#000000;stroke-width:2.26334691;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 244.71599,498.8617 46.08456,46.1646"
+ id="path4620"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4622"
+ d="m 213.29244,498.8617 -46.08456,46.1646"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ y="547.60553"
+ x="149.81416"
+ height="29.715906"
+ width="31.274717"
+ id="rect4624"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4626"
+ width="31.274717"
+ height="29.715906"
+ x="277.9039"
+ y="548.68292" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4630"
+ d="m 181.22696,577.20218 13.61547,57.90173"
+ style="fill:none;stroke:#000000;stroke-width:1.78253996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ y="638.02258"
+ x="119.37354"
+ height="29.715906"
+ width="31.274717"
+ id="rect4636"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 119.90791,667.41906 -5.62879,64.98672"
+ id="path4640"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4642"
+ d="m 151.30058,667.41906 5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4644"
+ width="31.274717"
+ height="29.715906"
+ x="183.02264"
+ y="638.02258" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4646"
+ d="m 183.55702,667.41906 -5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 214.94969,667.41906 5.62879,64.98672"
+ id="path4648"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ y="638.94519"
+ x="247.76686"
+ height="29.715906"
+ width="31.274717"
+ id="rect4650"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 248.30124,666.34168 -5.62879,64.98672"
+ id="path4652"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4654"
+ d="m 279.69391,668.34168 5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4656"
+ width="31.274717"
+ height="29.715906"
+ x="309.26712"
+ y="638.94519" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4658"
+ d="m 309.80151,666.34168 -5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 341.19418,668.34168 5.62879,64.98672"
+ id="path4660"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.78253996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 150.01632,577.20218 -13.61547,57.90173"
+ id="path4662"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.78253996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 309.47145,578.1248 13.61547,57.90173"
+ id="path4664"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4666"
+ d="m 278.26081,578.1248 -13.61547,57.90173"
+ style="fill:none;stroke:#000000;stroke-width:1.78253996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4668"
+ width="31.274717"
+ height="29.715906"
+ x="100.92108"
+ y="736.74316" />
+ <rect
+ y="736.74316"
+ x="132.92108"
+ height="29.715906"
+ width="31.274717"
+ id="rect4672"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4674"
+ width="31.274717"
+ height="29.715906"
+ x="164.92108"
+ y="736.74316" />
+ <rect
+ y="736.74316"
+ x="196.92108"
+ height="29.715906"
+ width="31.274717"
+ id="rect4676"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4678"
+ width="31.274717"
+ height="29.715906"
+ x="228.92108"
+ y="736.74316" />
+ <rect
+ y="736.74316"
+ x="260.92108"
+ height="29.715906"
+ width="31.274717"
+ id="rect4680"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4682"
+ width="31.274717"
+ height="29.715906"
+ x="292.92108"
+ y="736.74316" />
+ <rect
+ y="736.74316"
+ x="324.92108"
+ height="29.715906"
+ width="31.274717"
+ id="rect4684"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4688"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(-15.579098,325.43814)"><flowRegion
+ id="flowRegion4690"><rect
+ id="rect4692"
+ width="173.45299"
+ height="52.58947"
+ x="373.66202"
+ y="388.88779" /></flowRegion><flowPara
+ id="flowPara4694">...</flowPara></flowRoot> </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-tree-2.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-tree-2.svg
new file mode 100644
index 0000000..6eca673
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/collections-tree-2.svg
@@ -0,0 +1,694 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="925.33472"
+ height="565.10864"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ sodipodi:docname="collections-tree-1.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Mend"
+ style="overflow:visible;">
+ <path
+ id="path4150"
+ style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(0.6) rotate(180) translate(0,0)" />
+ </marker>
+ <linearGradient
+ id="linearGradient3893">
+ <stop
+ id="stop3895"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3897"
+ offset="1"
+ style="stop-color:#d991fe;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0838672"
+ inkscape:cx="403.96443"
+ inkscape:cy="286.40039"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1857"
+ inkscape:window-height="1156"
+ inkscape:window-x="1"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18"
+ showguides="true"
+ inkscape:guide-bbox="true" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-25.016282,-306.06307)">
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3517"
+ width="31.274717"
+ height="29.715906"
+ x="213.4751"
+ y="469.18268" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4404"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(25.016282,306.06307)"><flowRegion
+ id="flowRegion4406"><rect
+ id="rect4408"
+ width="46.131111"
+ height="42.440624"
+ x="274.94144"
+ y="159.15485" /></flowRegion><flowPara
+ id="flowPara4410">x</flowPara></flowRoot> <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="160.6595"
+ y="405.40225"
+ id="text4412"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4414"
+ x="160.6595"
+ y="405.40225">x</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4570"
+ d="m 174.52892,411.20205 55.23807,55.31812"
+ style="fill:none;stroke:#000000;stroke-width:2.26334691;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 244.71599,498.8617 46.08456,46.1646"
+ id="path4620"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4622"
+ d="m 213.29244,498.8617 -46.08456,46.1646"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ y="547.60553"
+ x="149.81416"
+ height="29.715906"
+ width="31.274717"
+ id="rect4624"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4626"
+ width="31.274717"
+ height="29.715906"
+ x="277.9039"
+ y="548.68292" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4630"
+ d="m 181.22696,577.20218 13.61547,57.90173"
+ style="fill:none;stroke:#000000;stroke-width:1.78253996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ y="638.02258"
+ x="119.37354"
+ height="29.715906"
+ width="31.274717"
+ id="rect4636"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 119.90791,667.41906 -5.62879,64.98672"
+ id="path4640"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4642"
+ d="m 151.30058,667.41906 5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4644"
+ width="31.274717"
+ height="29.715906"
+ x="183.02264"
+ y="638.02258" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4646"
+ d="m 183.55702,667.41906 -5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 214.94969,667.41906 5.62879,64.98672"
+ id="path4648"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ y="638.94519"
+ x="247.76686"
+ height="29.715906"
+ width="31.274717"
+ id="rect4650"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 248.30124,666.34168 -5.62879,64.98672"
+ id="path4652"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4654"
+ d="m 279.69391,668.34168 5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4656"
+ width="31.274717"
+ height="29.715906"
+ x="309.26712"
+ y="638.94519" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4658"
+ d="m 309.80151,666.34168 -5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 341.19418,668.34168 5.62879,64.98672"
+ id="path4660"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.78253996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 150.01632,577.20218 -13.61547,57.90173"
+ id="path4662"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.78253996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 309.47145,578.1248 13.61547,57.90173"
+ id="path4664"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4666"
+ d="m 278.26081,578.1248 -13.61547,57.90173"
+ style="fill:none;stroke:#000000;stroke-width:1.78253996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4668"
+ width="31.274717"
+ height="29.715906"
+ x="100.92108"
+ y="736.74316" />
+ <rect
+ y="736.74316"
+ x="132.92108"
+ height="29.715906"
+ width="31.274717"
+ id="rect4672"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4674"
+ width="31.274717"
+ height="29.715906"
+ x="164.92108"
+ y="736.74316" />
+ <rect
+ y="736.74316"
+ x="196.92108"
+ height="29.715906"
+ width="31.274717"
+ id="rect4676"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4678"
+ width="31.274717"
+ height="29.715906"
+ x="228.92108"
+ y="736.74316" />
+ <rect
+ y="736.74316"
+ x="260.92108"
+ height="29.715906"
+ width="31.274717"
+ id="rect4680"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4682"
+ width="31.274717"
+ height="29.715906"
+ x="292.92108"
+ y="736.74316" />
+ <rect
+ y="736.74316"
+ x="324.92108"
+ height="29.715906"
+ width="31.274717"
+ id="rect4684"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4688"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(-15.579098,325.43814)"><flowRegion
+ id="flowRegion4690"><rect
+ id="rect4692"
+ width="173.45299"
+ height="52.58947"
+ x="373.66202"
+ y="388.88779" /></flowRegion><flowPara
+ id="flowPara4694">...</flowPara></flowRoot> <rect
+ y="469.18268"
+ x="685.4751"
+ height="29.715906"
+ width="31.274717"
+ id="rect4715"
+ style="fill:#c3ff83;fill-opacity:1;stroke:#000000;stroke-width:2.65748023999999994;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text4717"
+ y="405.40225"
+ x="626.65948"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="405.40225"
+ x="626.65948"
+ sodipodi:role="line"
+ id="tspan4787">y</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.26334691;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 646.52892,411.20205 55.23807,55.31812"
+ id="path4721"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4723"
+ d="m 716.71599,498.8617 46.08456,46.1646"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 685.29244,498.8617 -46.08456,46.1646"
+ id="path4725"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ style="fill:#c3ff83;fill-opacity:1;stroke:#000000;stroke-width:2.65748023999999994;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4727"
+ width="31.274717"
+ height="29.715906"
+ x="621.81415"
+ y="547.60553" />
+ <rect
+ y="548.68292"
+ x="749.90393"
+ height="29.715906"
+ width="31.274717"
+ id="rect4729"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.78253996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 653.22696,577.20218 13.61547,57.90173"
+ id="path4731"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4733"
+ width="31.274717"
+ height="29.715906"
+ x="591.37354"
+ y="638.02258" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4735"
+ d="m 591.90791,667.41906 -5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 623.30058,667.41906 5.62879,64.98672"
+ id="path4737"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ y="638.02258"
+ x="655.02264"
+ height="29.715906"
+ width="31.274717"
+ id="rect4739"
+ style="fill:#c3ff83;fill-opacity:1;stroke:#000000;stroke-width:2.65748023999999994;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 655.55702,667.41906 -5.62879,64.98672"
+ id="path4741"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4743"
+ d="m 686.94969,667.41906 5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4745"
+ width="31.274717"
+ height="29.715906"
+ x="719.76685"
+ y="638.94519" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4747"
+ d="m 720.30124,666.34168 -5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 751.69391,668.34168 5.62879,64.98672"
+ id="path4749"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ y="638.94519"
+ x="781.26709"
+ height="29.715906"
+ width="31.274717"
+ id="rect4751"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 781.80151,666.34168 -5.62879,64.98672"
+ id="path4753"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4755"
+ d="m 813.19418,668.34168 5.62879,64.98672"
+ style="fill:none;stroke:#000000;stroke-width:2.0674777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4757"
+ d="m 622.01632,577.20218 -13.61547,57.90173"
+ style="fill:none;stroke:#000000;stroke-width:1.78253996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4759"
+ d="m 781.47145,578.1248 13.61547,57.90173"
+ style="fill:none;stroke:#000000;stroke-width:1.78253996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.78253996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 750.26081,578.1248 -13.61547,57.90173"
+ id="path4761"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ y="736.74316"
+ x="572.92108"
+ height="29.715906"
+ width="31.274717"
+ id="rect4763"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4765"
+ width="31.274717"
+ height="29.715906"
+ x="604.92108"
+ y="736.74316" />
+ <rect
+ y="736.74316"
+ x="636.92108"
+ height="29.715906"
+ width="31.274717"
+ id="rect4767"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#c3ff83;fill-opacity:1;stroke:#000000;stroke-width:2.65748023999999994;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4769"
+ width="31.274717"
+ height="29.715906"
+ x="668.92108"
+ y="736.74316" />
+ <rect
+ y="736.74316"
+ x="700.92108"
+ height="29.715906"
+ width="31.274717"
+ id="rect4771"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4773"
+ width="31.274717"
+ height="29.715906"
+ x="732.92108"
+ y="736.74316" />
+ <rect
+ y="736.74316"
+ x="764.92108"
+ height="29.715906"
+ width="31.274717"
+ id="rect4775"
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <rect
+ style="fill:#bff4ff;fill-opacity:1;stroke:#000000;stroke-width:2.65748024;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect4777"
+ width="31.274717"
+ height="29.715906"
+ x="796.92108"
+ y="736.74316" />
+ <flowRoot
+ transform="translate(456.4209,325.43814)"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ id="flowRoot4779"
+ xml:space="preserve"><flowRegion
+ id="flowRegion4781"><rect
+ y="388.88779"
+ x="373.66202"
+ height="52.58947"
+ width="173.45299"
+ id="rect4783" /></flowRegion><flowPara
+ id="flowPara4785">...</flowPara></flowRoot> </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/common.css b/md/TechWorks/decks/oscon2012-clojure/slide-assets/common.css
new file mode 100644
index 0000000..06dfd04
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/common.css
@@ -0,0 +1,62 @@
+/* Org-HTML-Slideshow common styles.
+ *
+ * These styles will apply to all views.
+ */
+
+body {
+ font-family: Helvetica, Arial, sans-serif;
+}
+
+span.tag {
+ display: none;
+}
+
+pre {
+ font-family: Monaco, "Courier New", monospace;
+}
+
+#clojure-logo {
+ display: none;
+}
+
+
+#c-panel {
+ background: lightgray;
+ bottom: 0px;
+ border: 1px solid black;
+ font-size: 12pt;
+ position: fixed;
+ right: 0px;
+}
+
+#c-panel a {
+ display: block;
+}
+
+#c-panel .key {
+ display: none;
+}
+
+#c-panel .key {
+ display: none;
+}
+
+.org-constant {
+ color: purple;
+}
+
+.org-string {
+ color: green;
+}
+
+.org-comment {
+ color: darkred;
+}
+
+.org-comment-delimiter {
+ color: darkred;
+}
+
+.org-keyword, .org-builtin, .org-variable-name {
+ color: blue;
+}
\ No newline at end of file
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-01.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-01.svg
new file mode 100644
index 0000000..a333972
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-01.svg
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg3004"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ width="845.41956"
+ height="446.87125"
+ xml:space="preserve"
+ sodipodi:docname="identity-state.svg"><metadata
+ id="metadata3010"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+ id="defs3008"><linearGradient
+ id="linearGradient4265"><stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop4267" /><stop
+ style="stop-color:#bbbbbb;stop-opacity:1;"
+ offset="1"
+ id="stop4269" /></linearGradient><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3020"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3022"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3038"><path
+ d="m 430.2527,378.5 0,51 c 0,8.2843 6.7158,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2842,0 -15,6.7158 -15,15 z"
+ id="path3040"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3044"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3046"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3056"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3058"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3092"><path
+ d="m 802,379 0,51 c 0,8.2843 6.7157,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2843,0 -15,6.7158 -15,15 z"
+ id="path3094"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3098"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3100"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3110"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3112"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3128"><path
+ d="m 56,380 0,51 c 0,8.2843 6.71573,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.28427,0 -15,6.7158 -15,15 z"
+ id="path3130"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3134"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3136"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3146"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3148"
+ inkscape:connector-curvature="0" /></clipPath><mask
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="mask3174"><image
+ width="1"
+ height="1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ id="image3176" /></mask><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3186"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3188"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3202"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3204"
+ inkscape:connector-curvature="0" /></clipPath><mask
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="mask3232"><image
+ width="1"
+ height="1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ id="image3234" /></mask><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3244"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3246"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3260"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3262"
+ inkscape:connector-curvature="0" /></clipPath><mask
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="mask3278"><image
+ width="1"
+ height="1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAoCAAAAABBFVKaAAAAAXNCSVQI5gpbmQAABXtJREFUSImtl9ly3LgOhn9w1dpqL5n3f784tlsLKXEBzkXbjjNzpjquDG4oVkFf/QUCIEj4ihGBICK3Hb9EVUorqVX4lqf+ClaZpu+cuk2F+QqWTH9uyiz1Zhi+ir0fksS93vL8Glb7YdpXo256XrFEIMHtkJG2nn+DesUSaUVc1U0uXe33sETGW5WPrAQfZ0H49ViIAPW3PSDynqPy9tf12wBEth06xO0owizypgki8p75RKSUIuOMJgAgRUopEqksIEUQFgaIFBFYWAxImfZ8P2LxMeWUK0hpYwxBSimVRQBFxjprSDedVQQQaeOcUVJSyqKtpZIzmEg7qzknsCHSzfTtr1GGIe5h3kS0b9rGadS0x5gqi1Ku7frWKnJTZwgg6/qh9UpSXEI2fa+PdTuEtB8Gm9f1YANl+7vHx16abo+vNVVqx9PYOo2awzwvsYjyw/k8NhqwXQ8CtD3dn3urpWyvz0GN983+LJXJ9g93dpM9kSFlfNd3nkuVarWyfnq46xwBxKehNRTY9A/fzg3VSsZqJpDx08PJKaXU0Kjn4rqp4Dgq3PhwT/JKIgYAmJnTtsS4Jfjpr4de5VRhfeOsEs7N+fGhrSEmaqGVgJR1psZCvmsoH0tl4/O6ZWpPU3/UXAUGXOIWdgrPP9bjiOjuHkZsly2TG6Zukpz3/nzX1cvLfKih6lYASF6WlGi4v3Nds+4hDf1pydSfOpW2PbMY4RzXbVfh8jTniqabBj1//7FmuFP+1o8x6uHU0fr0fcn6cIMVCO9zrEfRyQ3GGuzz2LjTkmkcbF6XWARGUHPKpZYjhAxru94el6fnWGESnHfDQF1r8vLyGqsxR2EBSipKmBphIa0krfMwdFOlqaM4b4kFBiLMLMJca9FkGodjXUISVMzjZH1bW0cphCMzMbMAUks1xrt2aA0RSQnzqWnOCpMr6xKz/KODKW205JSrCLiklKGt1Upqzvy5mHXTd943XhMItazLMJ48vFqX9WD+hKWP5VM3kPdF8LlFkO3Pp5YEJWsRSA7zqW87SNiWWOSt1UAEREqBILUyWe90BZR23hKXnIpoY3X5oBp7/jYgbMzeCCB1X+dT3yIey3rUX7DaWAtSnHLbDEOiCtONg5cjRjp62/c7itFKEUCmO9/5LVxYjZ2ASEpYtklJXueQ5Q0rIszk+pEzCHvo3DnRmsmOj5PNYd146N14zy7prjGKAO2HniQlMJEyxig+QjiyhPlNLAwArimJP9cu1Zz3uTkNaLYEN0x9XV6XUC/d1D3aLVF7bjWBSGujrG+pc5aars2JSy45Le9ir2pz3MZu1Ke8L6/7i6Z+8FOB8YbX55f1qNarvrdTgR0aYmbOqfj2bNA7ZZph21lrjbxd3sVCAyBSRmttrJZ9C6kKaeO9t5QuT0+XWFiqgIz13jvKy+ucyFpNRFpr4nzsR/XTw8CX78/hDWsASAk/cPRG8hr2g0uOp9Zq4RSWyxKySOASh8ZpUoQ8LynhRe2uHklCY1JMrJuhU8e87G/UK7buKGtrKe9rOLjkfW6cQk17iKmwUOYaZ281EUmJ654r8uKQEytnOG7Z9mMj2xI+asYAEJSYg9VUSypVmNNmtAKXUgqLQFg4Ra2JCMI1F66cVgOuTFpLKcoPoz3WJb6LfctbVM6KIMIiAqlZ0ccO1xQs9H6tXl0SQUSICKLa7tQizlv6FQsRUP2oVhFUwi/l+veh6zqrXG9zZZrrFfYR2U894R//3bCPdkHK9qcWcV6Pn93oNwafG0bKd51Jy7KXn1PRl0a7f8EaSylcPov9D7Agyeu+voT8KXB/jCXUNBfE5bPYr70d/q8p5ZyRchT+NHD+OZZIKQLzLy+KP8eCQG/30k/7HysbpOIIsiZQAAAAAElFTkSuQmCC"
+ id="image3280" /></mask><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3290"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3292"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3306"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3308"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3326"><path
+ d="M 2,3 159,3 159,18 2,18 2,3 z"
+ id="path3328"
+ inkscape:connector-curvature="0" /></clipPath><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4271"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4277"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4279"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4285"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4287"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4327"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1630"
+ inkscape:window-height="766"
+ id="namedview3006"
+ showgrid="false"
+ inkscape:zoom="1.2934374"
+ inkscape:cx="422.70978"
+ inkscape:cy="223.43562"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g3012"
+ units="pt"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" /><g
+ id="g3012"
+ inkscape:groupmode="layer"
+ inkscape:label="identity-state"
+ transform="matrix(1.25,0,0,-1.25,-45.355279,820.2111)"><g
+ id="g3028"
+ transform="matrix(0.7038814,0,0,-0.7038814,16.181591,648.43097)"><path
+ d="m 512,320.231 0,-1.5 L 512,183"
+ style="fill:none;stroke:#000000;stroke-width:4.26208162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3030"
+ inkscape:connector-curvature="0" /></g><path
+ d="m 371.92325,426.40496 4.64561,-9.29123 4.64562,9.29123 -4.64562,-2.3228 -4.64561,2.3228 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3032"
+ inkscape:connector-curvature="0" /><g
+ id="g3060"
+ transform="matrix(0.7038814,0,0,-0.7038814,16.181591,648.43097)"
+ style="fill:url(#linearGradient4271);fill-opacity:1"><path
+ d="m 430.2527,409.5 0,-51 c 0,-8.2843 6.7158,-15 15,-15 l 133,0 c 8.2843,0 15,6.7157 15,15 l 0,51 c 0,8.2843 -6.7157,15 -15,15 l -133,0 c -8.2842,0 -15,-6.7158 -15,-15 z"
+ style="fill:url(#linearGradient4327);fill-opacity:1;stroke:#000000;stroke-width:4.26208162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3062"
+ inkscape:connector-curvature="0" /></g><g
+ id="g3064"
+ transform="matrix(0.7038814,0,0,-0.7038814,335.66744,398.55308)"><text
+ transform="translate(4.5,43)"
+ id="text3066"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 32.793598 55.557598 73.953598 85.621201"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3068">Nov 8</tspan></text>
+
+
+</g><path
+ d="m 415.39081,621.08828 c 21.44107,-21.44086 21.44107,-56.20324 0,-77.64418 -21.44079,-21.44092 -56.2033,-21.44092 -77.64403,0 -21.44086,21.44094 -21.44086,56.20332 0,77.64418 21.44073,21.44079 56.20324,21.44079 77.64403,0"
+ style="fill:#d4e3fe;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3264"
+ inkscape:connector-curvature="0" /><g
+ id="g3266"
+ transform="matrix(0.7038814,0,0,-0.7038814,16.181591,648.43097)"><path
+ d="m 567.1541,38.84564 c 30.4612,30.46082 30.4612,79.84756 0,110.30856 -30.4608,30.461 -79.8477,30.461 -110.3084,0 -30.4609,-30.461 -30.4609,-79.84774 0,-110.30856 30.4607,-30.460874 79.8476,-30.460874 110.3084,0"
+ style="fill:none;stroke:#000000;stroke-width:2.84138799;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3268"
+ inkscape:connector-curvature="0" /></g><image
+ width="1"
+ height="1"
+ transform="matrix(60.533801,0,0,-28.155256,346.30197,592.82435)"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAoCAYAAABkfg1GAAAABHNCSVQICAgIfAhkiAAAAHVJREFUaIHt0IEJACEQwLDT/Xf+X8IiSDJB6ZqZbzhu3w54lbERYyPGRoyNGBsxNmJsxNiIsRFjI8ZGjI0YGzE2YmzE2IixEWMjxkaMjRgbMTZibMTYiLERYyPGRoyNGBsxNmJsxNiIsRFjI8ZGjI0YGzE28gNT5gFPZ1Ar0AAAAABJRU5ErkJggg=="
+ mask="url(#mask3278)"
+ id="image3282" /><g
+ id="g3294"
+ transform="matrix(0.7038814,0,0,-0.7038814,321.66612,637.16887)"><text
+ transform="translate(38.0537,90)"
+ id="text3296"><tspan
+ style="font-size:36px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 11.988 31.8528 50.205601 64.126801"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3298">today</tspan></text>
+
+
+</g></g></svg>
\ No newline at end of file
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-02.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-02.svg
new file mode 100644
index 0000000..1d5e6a3
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-02.svg
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg3004"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ width="845.41956"
+ height="446.87125"
+ xml:space="preserve"
+ sodipodi:docname="identity-state-02.svg"><metadata
+ id="metadata3010"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+ id="defs3008"><linearGradient
+ id="linearGradient4265"><stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop4267" /><stop
+ style="stop-color:#bbbbbb;stop-opacity:1;"
+ offset="1"
+ id="stop4269" /></linearGradient><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3020"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3022"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3038"><path
+ d="m 430.2527,378.5 0,51 c 0,8.2843 6.7158,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2842,0 -15,6.7158 -15,15 z"
+ id="path3040"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3044"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3046"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3056"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3058"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3092"><path
+ d="m 802,379 0,51 c 0,8.2843 6.7157,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2843,0 -15,6.7158 -15,15 z"
+ id="path3094"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3098"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3100"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3110"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3112"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3128"><path
+ d="m 56,380 0,51 c 0,8.2843 6.71573,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.28427,0 -15,6.7158 -15,15 z"
+ id="path3130"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3134"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3136"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3146"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3148"
+ inkscape:connector-curvature="0" /></clipPath><mask
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="mask3174"><image
+ width="1"
+ height="1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ id="image3176" /></mask><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3186"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3188"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3202"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3204"
+ inkscape:connector-curvature="0" /></clipPath><mask
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="mask3232"><image
+ width="1"
+ height="1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ id="image3234" /></mask><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3244"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3246"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3260"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3262"
+ inkscape:connector-curvature="0" /></clipPath><mask
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="mask3278"><image
+ width="1"
+ height="1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAoCAAAAABBFVKaAAAAAXNCSVQI5gpbmQAABXtJREFUSImtl9ly3LgOhn9w1dpqL5n3f784tlsLKXEBzkXbjjNzpjquDG4oVkFf/QUCIEj4ihGBICK3Hb9EVUorqVX4lqf+ClaZpu+cuk2F+QqWTH9uyiz1Zhi+ir0fksS93vL8Glb7YdpXo256XrFEIMHtkJG2nn+DesUSaUVc1U0uXe33sETGW5WPrAQfZ0H49ViIAPW3PSDynqPy9tf12wBEth06xO0owizypgki8p75RKSUIuOMJgAgRUopEqksIEUQFgaIFBFYWAxImfZ8P2LxMeWUK0hpYwxBSimVRQBFxjprSDedVQQQaeOcUVJSyqKtpZIzmEg7qzknsCHSzfTtr1GGIe5h3kS0b9rGadS0x5gqi1Ku7frWKnJTZwgg6/qh9UpSXEI2fa+PdTuEtB8Gm9f1YANl+7vHx16abo+vNVVqx9PYOo2awzwvsYjyw/k8NhqwXQ8CtD3dn3urpWyvz0GN983+LJXJ9g93dpM9kSFlfNd3nkuVarWyfnq46xwBxKehNRTY9A/fzg3VSsZqJpDx08PJKaXU0Kjn4rqp4Dgq3PhwT/JKIgYAmJnTtsS4Jfjpr4de5VRhfeOsEs7N+fGhrSEmaqGVgJR1psZCvmsoH0tl4/O6ZWpPU3/UXAUGXOIWdgrPP9bjiOjuHkZsly2TG6Zukpz3/nzX1cvLfKih6lYASF6WlGi4v3Nds+4hDf1pydSfOpW2PbMY4RzXbVfh8jTniqabBj1//7FmuFP+1o8x6uHU0fr0fcn6cIMVCO9zrEfRyQ3GGuzz2LjTkmkcbF6XWARGUHPKpZYjhAxru94el6fnWGESnHfDQF1r8vLyGqsxR2EBSipKmBphIa0krfMwdFOlqaM4b4kFBiLMLMJca9FkGodjXUISVMzjZH1bW0cphCMzMbMAUks1xrt2aA0RSQnzqWnOCpMr6xKz/KODKW205JSrCLiklKGt1Upqzvy5mHXTd943XhMItazLMJ48vFqX9WD+hKWP5VM3kPdF8LlFkO3Pp5YEJWsRSA7zqW87SNiWWOSt1UAEREqBILUyWe90BZR23hKXnIpoY3X5oBp7/jYgbMzeCCB1X+dT3yIey3rUX7DaWAtSnHLbDEOiCtONg5cjRjp62/c7itFKEUCmO9/5LVxYjZ2ASEpYtklJXueQ5Q0rIszk+pEzCHvo3DnRmsmOj5PNYd146N14zy7prjGKAO2HniQlMJEyxig+QjiyhPlNLAwArimJP9cu1Zz3uTkNaLYEN0x9XV6XUC/d1D3aLVF7bjWBSGujrG+pc5aars2JSy45Le9ir2pz3MZu1Ke8L6/7i6Z+8FOB8YbX55f1qNarvrdTgR0aYmbOqfj2bNA7ZZph21lrjbxd3sVCAyBSRmttrJZ9C6kKaeO9t5QuT0+XWFiqgIz13jvKy+ucyFpNRFpr4nzsR/XTw8CX78/hDWsASAk/cPRG8hr2g0uOp9Zq4RSWyxKySOASh8ZpUoQ8LynhRe2uHklCY1JMrJuhU8e87G/UK7buKGtrKe9rOLjkfW6cQk17iKmwUOYaZ281EUmJ654r8uKQEytnOG7Z9mMj2xI+asYAEJSYg9VUSypVmNNmtAKXUgqLQFg4Ra2JCMI1F66cVgOuTFpLKcoPoz3WJb6LfctbVM6KIMIiAqlZ0ccO1xQs9H6tXl0SQUSICKLa7tQizlv6FQsRUP2oVhFUwi/l+veh6zqrXG9zZZrrFfYR2U894R//3bCPdkHK9qcWcV6Pn93oNwafG0bKd51Jy7KXn1PRl0a7f8EaSylcPov9D7Agyeu+voT8KXB/jCXUNBfE5bPYr70d/q8p5ZyRchT+NHD+OZZIKQLzLy+KP8eCQG/30k/7HysbpOIIsiZQAAAAAElFTkSuQmCC"
+ id="image3280" /></mask><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3290"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3292"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3306"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3308"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3326"><path
+ d="M 2,3 159,3 159,18 2,18 2,3 z"
+ id="path3328"
+ inkscape:connector-curvature="0" /></clipPath><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4271"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4277"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4279"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4287"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4327"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1630"
+ inkscape:window-height="766"
+ id="namedview3006"
+ showgrid="false"
+ inkscape:zoom="1.2934374"
+ inkscape:cx="422.70978"
+ inkscape:cy="223.43562"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g3012"
+ units="pt"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" /><g
+ id="g3012"
+ inkscape:groupmode="layer"
+ inkscape:label="identity-state"
+ transform="matrix(1.25,0,0,-1.25,-45.355279,820.2111)"><g
+ style="fill:url(#linearGradient4279);fill-opacity:1"
+ transform="matrix(0.7038814,0,0,-0.7038814,275.54031,648.43097)"
+ id="g4273"><path
+ inkscape:connector-curvature="0"
+ id="path4275"
+ style="fill:url(#linearGradient4277);fill-opacity:1;stroke:#000000;stroke-width:4.26208162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 430.2527,409.5 0,-51 c 0,-8.2843 6.7158,-15 15,-15 l 133,0 c 8.2843,0 15,6.7157 15,15 l 0,51 c 0,8.2843 -6.7157,15 -15,15 l -133,0 c -8.2842,0 -15,-6.7158 -15,-15 z" /></g><path
+ inkscape:connector-curvature="0"
+ id="path3030"
+ style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 584.85696,419.74114 -1.71815,1.37273 -155.47201,124.21496" /><path
+ d="m 579.95425,417.53746 10.18338,-2.05117 -4.46909,9.37741 -1.0256,-5.09169 -4.68869,-2.23455 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3032"
+ inkscape:connector-curvature="0" /><g
+ id="g3060"
+ transform="matrix(0.7038814,0,0,-0.7038814,16.181591,648.43097)"
+ style="fill:url(#linearGradient4271);fill-opacity:1"><path
+ d="m 430.2527,409.5 0,-51 c 0,-8.2843 6.7158,-15 15,-15 l 133,0 c 8.2843,0 15,6.7157 15,15 l 0,51 c 0,8.2843 -6.7157,15 -15,15 l -133,0 c -8.2842,0 -15,-6.7158 -15,-15 z"
+ style="fill:url(#linearGradient4327);fill-opacity:1;stroke:#000000;stroke-width:4.26208162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3062"
+ inkscape:connector-curvature="0" /></g><g
+ id="g3064"
+ transform="matrix(0.7038814,0,0,-0.7038814,335.66744,398.55308)"><text
+ transform="translate(4.5,43)"
+ id="text3066"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 32.793598 55.557598 73.953598 85.621201"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3068">Nov 8</tspan></text>
+
+
+</g><g
+ id="g3118"
+ transform="matrix(0.7038814,0,0,-0.7038814,597.52646,399.25696)"><text
+ transform="translate(4.5,43)"
+ id="text3120"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 32.793598 55.557598 73.953598 85.621201"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3122">Nov 9</tspan></text>
+
+
+</g><path
+ d="m 415.39081,621.08828 c 21.44107,-21.44086 21.44107,-56.20324 0,-77.64418 -21.44079,-21.44092 -56.2033,-21.44092 -77.64403,0 -21.44086,21.44094 -21.44086,56.20332 0,77.64418 21.44073,21.44079 56.20324,21.44079 77.64403,0"
+ style="fill:#d4e3fe;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3264"
+ inkscape:connector-curvature="0" /><g
+ id="g3266"
+ transform="matrix(0.7038814,0,0,-0.7038814,16.181591,648.43097)"><path
+ d="m 567.1541,38.84564 c 30.4612,30.46082 30.4612,79.84756 0,110.30856 -30.4608,30.461 -79.8477,30.461 -110.3084,0 -30.4609,-30.461 -30.4609,-79.84774 0,-110.30856 30.4607,-30.460874 79.8476,-30.460874 110.3084,0"
+ style="fill:none;stroke:#000000;stroke-width:2.84138799;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3268"
+ inkscape:connector-curvature="0" /></g><image
+ width="1"
+ height="1"
+ transform="matrix(60.533801,0,0,-28.155256,346.30197,592.82435)"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAoCAYAAABkfg1GAAAABHNCSVQICAgIfAhkiAAAAHVJREFUaIHt0IEJACEQwLDT/Xf+X8IiSDJB6ZqZbzhu3w54lbERYyPGRoyNGBsxNmJsxNiIsRFjI8ZGjI0YGzE2YmzE2IixEWMjxkaMjRgbMTZibMTYiLERYyPGRoyNGBsxNmJsxNiIsRFjI8ZGjI0YGzE28gNT5gFPZ1Ar0AAAAABJRU5ErkJggg=="
+ mask="url(#mask3278)"
+ id="image3282" /><g
+ id="g3294"
+ transform="matrix(0.7038814,0,0,-0.7038814,321.66612,637.16887)"><text
+ transform="translate(38.0537,90)"
+ id="text3296"><tspan
+ style="font-size:36px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 11.988 31.8528 50.205601 64.126801"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3298">today</tspan></text>
+
+
+</g></g></svg>
\ No newline at end of file
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-03.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-03.svg
new file mode 100644
index 0000000..e27789f
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-03.svg
@@ -0,0 +1,645 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg3004"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ width="845.41956"
+ height="446.87125"
+ xml:space="preserve"
+ sodipodi:docname="identity-state.svg"><metadata
+ id="metadata3010"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+ id="defs3008"><linearGradient
+ id="linearGradient4265"><stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop4267" /><stop
+ style="stop-color:#bbbbbb;stop-opacity:1;"
+ offset="1"
+ id="stop4269" /></linearGradient><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3020"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3022"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3038"><path
+ d="m 430.2527,378.5 0,51 c 0,8.2843 6.7158,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2842,0 -15,6.7158 -15,15 z"
+ id="path3040"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3044"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3046"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3056"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3058"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3092"><path
+ d="m 802,379 0,51 c 0,8.2843 6.7157,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2843,0 -15,6.7158 -15,15 z"
+ id="path3094"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3098"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3100"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3110"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3112"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3128"><path
+ d="m 56,380 0,51 c 0,8.2843 6.71573,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.28427,0 -15,6.7158 -15,15 z"
+ id="path3130"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3134"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3136"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3146"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3148"
+ inkscape:connector-curvature="0" /></clipPath><mask
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="mask3174"><image
+ width="1"
+ height="1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ id="image3176" /></mask><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3186"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3188"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3202"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3204"
+ inkscape:connector-curvature="0" /></clipPath><mask
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="mask3232"><image
+ width="1"
+ height="1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ id="image3234" /></mask><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3244"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3246"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3260"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3262"
+ inkscape:connector-curvature="0" /></clipPath><mask
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="mask3278"><image
+ width="1"
+ height="1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAoCAAAAABBFVKaAAAAAXNCSVQI5gpbmQAABXtJREFUSImtl9ly3LgOhn9w1dpqL5n3f784tlsLKXEBzkXbjjNzpjquDG4oVkFf/QUCIEj4ihGBICK3Hb9EVUorqVX4lqf+ClaZpu+cuk2F+QqWTH9uyiz1Zhi+ir0fksS93vL8Glb7YdpXo256XrFEIMHtkJG2nn+DesUSaUVc1U0uXe33sETGW5WPrAQfZ0H49ViIAPW3PSDynqPy9tf12wBEth06xO0owizypgki8p75RKSUIuOMJgAgRUopEqksIEUQFgaIFBFYWAxImfZ8P2LxMeWUK0hpYwxBSimVRQBFxjprSDedVQQQaeOcUVJSyqKtpZIzmEg7qzknsCHSzfTtr1GGIe5h3kS0b9rGadS0x5gqi1Ku7frWKnJTZwgg6/qh9UpSXEI2fa+PdTuEtB8Gm9f1YANl+7vHx16abo+vNVVqx9PYOo2awzwvsYjyw/k8NhqwXQ8CtD3dn3urpWyvz0GN983+LJXJ9g93dpM9kSFlfNd3nkuVarWyfnq46xwBxKehNRTY9A/fzg3VSsZqJpDx08PJKaXU0Kjn4rqp4Dgq3PhwT/JKIgYAmJnTtsS4Jfjpr4de5VRhfeOsEs7N+fGhrSEmaqGVgJR1psZCvmsoH0tl4/O6ZWpPU3/UXAUGXOIWdgrPP9bjiOjuHkZsly2TG6Zukpz3/nzX1cvLfKih6lYASF6WlGi4v3Nds+4hDf1pydSfOpW2PbMY4RzXbVfh8jTniqabBj1//7FmuFP+1o8x6uHU0fr0fcn6cIMVCO9zrEfRyQ3GGuzz2LjTkmkcbF6XWARGUHPKpZYjhAxru94el6fnWGESnHfDQF1r8vLyGqsxR2EBSipKmBphIa0krfMwdFOlqaM4b4kFBiLMLMJca9FkGodjXUISVMzjZH1bW0cphCMzMbMAUks1xrt2aA0RSQnzqWnOCpMr6xKz/KODKW205JSrCLiklKGt1Upqzvy5mHXTd943XhMItazLMJ48vFqX9WD+hKWP5VM3kPdF8LlFkO3Pp5YEJWsRSA7zqW87SNiWWOSt1UAEREqBILUyWe90BZR23hKXnIpoY3X5oBp7/jYgbMzeCCB1X+dT3yIey3rUX7DaWAtSnHLbDEOiCtONg5cjRjp62/c7itFKEUCmO9/5LVxYjZ2ASEpYtklJXueQ5Q0rIszk+pEzCHvo3DnRmsmOj5PNYd146N14zy7prjGKAO2HniQlMJEyxig+QjiyhPlNLAwArimJP9cu1Zz3uTkNaLYEN0x9XV6XUC/d1D3aLVF7bjWBSGujrG+pc5aars2JSy45Le9ir2pz3MZu1Ke8L6/7i6Z+8FOB8YbX55f1qNarvrdTgR0aYmbOqfj2bNA7ZZph21lrjbxd3sVCAyBSRmttrJZ9C6kKaeO9t5QuT0+XWFiqgIz13jvKy+ucyFpNRFpr4nzsR/XTw8CX78/hDWsASAk/cPRG8hr2g0uOp9Zq4RSWyxKySOASh8ZpUoQ8LynhRe2uHklCY1JMrJuhU8e87G/UK7buKGtrKe9rOLjkfW6cQk17iKmwUOYaZ281EUmJ654r8uKQEytnOG7Z9mMj2xI+asYAEJSYg9VUSypVmNNmtAKXUgqLQFg4Ra2JCMI1F66cVgOuTFpLKcoPoz3WJb6LfctbVM6KIMIiAqlZ0ccO1xQs9H6tXl0SQUSICKLa7tQizlv6FQsRUP2oVhFUwi/l+veh6zqrXG9zZZrrFfYR2U894R//3bCPdkHK9qcWcV6Pn93oNwafG0bKd51Jy7KXn1PRl0a7f8EaSylcPov9D7Agyeu+voT8KXB/jCXUNBfE5bPYr70d/q8p5ZyRchT+NHD+OZZIKQLzLy+KP8eCQG/30k/7HysbpOIIsiZQAAAAAElFTkSuQmCC"
+ id="image3280" /></mask><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3290"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3292"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3306"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3308"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3326"><path
+ d="M 2,3 159,3 159,18 2,18 2,3 z"
+ id="path3328"
+ inkscape:connector-curvature="0" /></clipPath><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4271"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4277"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4279"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4287"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4327"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4287-6"
+ xlink:href="#linearGradient4265-5"
+ inkscape:collect="always" /><linearGradient
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4279-5"
+ xlink:href="#linearGradient4265-5"
+ inkscape:collect="always" /><linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ id="linearGradient4271-9"
+ xlink:href="#linearGradient4265-5"
+ inkscape:collect="always" /><clipPath
+ id="clipPath3326-4"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3328-3"
+ d="M 2,3 159,3 159,18 2,18 2,3 z" /></clipPath><clipPath
+ id="clipPath3306-5"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3308-9"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3290-2"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3292-8"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><mask
+ id="mask3278-5"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image3280-6"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAoCAAAAABBFVKaAAAAAXNCSVQI5gpbmQAABXtJREFUSImtl9ly3LgOhn9w1dpqL5n3f784tlsLKXEBzkXbjjNzpjquDG4oVkFf/QUCIEj4ihGBICK3Hb9EVUorqVX4lqf+ClaZpu+cuk2F+QqWTH9uyiz1Zhi+ir0fksS93vL8Glb7YdpXo256XrFEIMHtkJG2nn+DesUSaUVc1U0uXe33sETGW5WPrAQfZ0H49ViIAPW3PSDynqPy9tf12wBEth06xO0owizypgki8p75RKSUIuOMJgAgRUopEqksIEUQFgaIFBFYWAxImfZ8P2LxMeWUK0hpYwxBSimVRQBFxjprSDedVQQQaeOcUVJSyqKtpZIzmEg7qzknsCHSzfTtr1GGIe5h3kS0b9rGadS0x5gqi1Ku7frWKnJTZwgg6/qh9UpSXEI2fa+PdTuEtB8Gm9f1YANl+7vHx16abo+vNVVqx9PYOo2awzwvsYjyw/k8NhqwXQ8CtD3dn3urpWyvz0GN983+LJXJ9g93dpM9kSFlfNd3nkuVarWyfnq46xwBxKehNRTY9A/fzg3VSsZqJpDx08PJKaXU0Kjn4rqp4Dgq3PhwT/JKIgYAmJnTtsS4Jfjpr4de5VRhfeOsEs7N+fGhrSEmaqGVgJR1psZCvmsoH0tl4/O6ZWpPU3/UXAUGXOIWdgrPP9bjiOjuHkZsly2TG6Zukpz3/nzX1cvLfKih6lYASF6WlGi4v3Nds+4hDf1pydSfOpW2PbMY4RzXbVfh8jTniqabBj1//7FmuFP+1o8x6uHU0fr0fcn6cIMVCO9zrEfRyQ3GGuzz2LjTkmkcbF6XWARGUHPKpZYjhAxru94el6fnWGESnHfDQF1r8vLyGqsxR2EBSipKmBphIa0krfMwdFOlqaM4b4kFBiLMLMJca9FkGodjXUISVMzjZH1bW0cphCMzMbMAUks1xrt2aA0RSQnzqWnOCpMr6xKz/KODKW205JSrCLiklKGt1Upqzvy5mHXTd943XhMItazLMJ48vFqX9WD+hKWP5VM3kPdF8LlFkO3Pp5YEJWsRSA7zqW87SNiWWOSt1UAEREqBILUyWe90BZR23hKXnIpoY3X5oBp7/jYgbMzeCCB1X+dT3yIey3rUX7DaWAtSnHLbDEOiCtONg5cjRjp62/c7itFKEUCmO9/5LVxYjZ2ASEpYtklJXueQ5Q0rIszk+pEzCHvo3DnRmsmOj5PNYd146N14zy7prjGKAO2HniQlMJEyxig+QjiyhPlNLAwArimJP9cu1Zz3uTkNaLYEN0x9XV6XUC/d1D3aLVF7bjWBSGujrG+pc5aars2JSy45Le9ir2pz3MZu1Ke8L6/7i6Z+8FOB8YbX55f1qNarvrdTgR0aYmbOqfj2bNA7ZZph21lrjbxd3sVCAyBSRmttrJZ9C6kKaeO9t5QuT0+XWFiqgIz13jvKy+ucyFpNRFpr4nzsR/XTw8CX78/hDWsASAk/cPRG8hr2g0uOp9Zq4RSWyxKySOASh8ZpUoQ8LynhRe2uHklCY1JMrJuhU8e87G/UK7buKGtrKe9rOLjkfW6cQk17iKmwUOYaZ281EUmJ654r8uKQEytnOG7Z9mMj2xI+asYAEJSYg9VUSypVmNNmtAKXUgqLQFg4Ra2JCMI1F66cVgOuTFpLKcoPoz3WJb6LfctbVM6KIMIiAqlZ0ccO1xQs9H6tXl0SQUSICKLa7tQizlv6FQsRUP2oVhFUwi/l+veh6zqrXG9zZZrrFfYR2U894R//3bCPdkHK9qcWcV6Pn93oNwafG0bKd51Jy7KXn1PRl0a7f8EaSylcPov9D7Agyeu+voT8KXB/jCXUNBfE5bPYr70d/q8p5ZyRchT+NHD+OZZIKQLzLy+KP8eCQG/30k/7HysbpOIIsiZQAAAAAElFTkSuQmCC"
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath3260-0"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3262-9"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3244-6"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3246-0"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><mask
+ id="mask3232-8"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image3234-7"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath3202-0"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3204-1"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3186-1"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3188-1"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><mask
+ id="mask3174-5"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image3176-2"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath3146-7"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3148-1"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3134-2"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3136-2"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3128-2"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3130-5"
+ d="m 56,380 0,51 c 0,8.2843 6.71573,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.28427,0 -15,6.7158 -15,15 z" /></clipPath><clipPath
+ id="clipPath3110-6"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3112-2"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3098-3"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3100-0"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3092-5"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3094-8"
+ d="m 802,379 0,51 c 0,8.2843 6.7157,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2843,0 -15,6.7158 -15,15 z" /></clipPath><clipPath
+ id="clipPath3056-4"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3058-8"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3044-0"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3046-7"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3038-8"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3040-2"
+ d="m 430.2527,378.5 0,51 c 0,8.2843 6.7158,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2842,0 -15,6.7158 -15,15 z" /></clipPath><clipPath
+ id="clipPath3020-2"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3022-9"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><linearGradient
+ id="linearGradient4265-5"><stop
+ id="stop4267-5"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" /><stop
+ id="stop4269-8"
+ offset="1"
+ style="stop-color:#bbbbbb;stop-opacity:1;" /></linearGradient><linearGradient
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4327-2"
+ xlink:href="#linearGradient4265-8"
+ inkscape:collect="always" /><linearGradient
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4287-3"
+ xlink:href="#linearGradient4265-8"
+ inkscape:collect="always" /><linearGradient
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4279-56"
+ xlink:href="#linearGradient4265-8"
+ inkscape:collect="always" /><linearGradient
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4277-5"
+ xlink:href="#linearGradient4265-8"
+ inkscape:collect="always" /><linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ id="linearGradient4271-0"
+ xlink:href="#linearGradient4265-8"
+ inkscape:collect="always" /><clipPath
+ id="clipPath3326-5"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3328-39"
+ d="M 2,3 159,3 159,18 2,18 2,3 z" /></clipPath><clipPath
+ id="clipPath3306-59"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3308-7"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3290-4"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3292-4"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><mask
+ id="mask3278-2"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image3280-0"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAoCAAAAABBFVKaAAAAAXNCSVQI5gpbmQAABXtJREFUSImtl9ly3LgOhn9w1dpqL5n3f784tlsLKXEBzkXbjjNzpjquDG4oVkFf/QUCIEj4ihGBICK3Hb9EVUorqVX4lqf+ClaZpu+cuk2F+QqWTH9uyiz1Zhi+ir0fksS93vL8Glb7YdpXo256XrFEIMHtkJG2nn+DesUSaUVc1U0uXe33sETGW5WPrAQfZ0H49ViIAPW3PSDynqPy9tf12wBEth06xO0owizypgki8p75RKSUIuOMJgAgRUopEqksIEUQFgaIFBFYWAxImfZ8P2LxMeWUK0hpYwxBSimVRQBFxjprSDedVQQQaeOcUVJSyqKtpZIzmEg7qzknsCHSzfTtr1GGIe5h3kS0b9rGadS0x5gqi1Ku7frWKnJTZwgg6/qh9UpSXEI2fa+PdTuEtB8Gm9f1YANl+7vHx16abo+vNVVqx9PYOo2awzwvsYjyw/k8NhqwXQ8CtD3dn3urpWyvz0GN983+LJXJ9g93dpM9kSFlfNd3nkuVarWyfnq46xwBxKehNRTY9A/fzg3VSsZqJpDx08PJKaXU0Kjn4rqp4Dgq3PhwT/JKIgYAmJnTtsS4Jfjpr4de5VRhfeOsEs7N+fGhrSEmaqGVgJR1psZCvmsoH0tl4/O6ZWpPU3/UXAUGXOIWdgrPP9bjiOjuHkZsly2TG6Zukpz3/nzX1cvLfKih6lYASF6WlGi4v3Nds+4hDf1pydSfOpW2PbMY4RzXbVfh8jTniqabBj1//7FmuFP+1o8x6uHU0fr0fcn6cIMVCO9zrEfRyQ3GGuzz2LjTkmkcbF6XWARGUHPKpZYjhAxru94el6fnWGESnHfDQF1r8vLyGqsxR2EBSipKmBphIa0krfMwdFOlqaM4b4kFBiLMLMJca9FkGodjXUISVMzjZH1bW0cphCMzMbMAUks1xrt2aA0RSQnzqWnOCpMr6xKz/KODKW205JSrCLiklKGt1Upqzvy5mHXTd943XhMItazLMJ48vFqX9WD+hKWP5VM3kPdF8LlFkO3Pp5YEJWsRSA7zqW87SNiWWOSt1UAEREqBILUyWe90BZR23hKXnIpoY3X5oBp7/jYgbMzeCCB1X+dT3yIey3rUX7DaWAtSnHLbDEOiCtONg5cjRjp62/c7itFKEUCmO9/5LVxYjZ2ASEpYtklJXueQ5Q0rIszk+pEzCHvo3DnRmsmOj5PNYd146N14zy7prjGKAO2HniQlMJEyxig+QjiyhPlNLAwArimJP9cu1Zz3uTkNaLYEN0x9XV6XUC/d1D3aLVF7bjWBSGujrG+pc5aars2JSy45Le9ir2pz3MZu1Ke8L6/7i6Z+8FOB8YbX55f1qNarvrdTgR0aYmbOqfj2bNA7ZZph21lrjbxd3sVCAyBSRmttrJZ9C6kKaeO9t5QuT0+XWFiqgIz13jvKy+ucyFpNRFpr4nzsR/XTw8CX78/hDWsASAk/cPRG8hr2g0uOp9Zq4RSWyxKySOASh8ZpUoQ8LynhRe2uHklCY1JMrJuhU8e87G/UK7buKGtrKe9rOLjkfW6cQk17iKmwUOYaZ281EUmJ654r8uKQEytnOG7Z9mMj2xI+asYAEJSYg9VUSypVmNNmtAKXUgqLQFg4Ra2JCMI1F66cVgOuTFpLKcoPoz3WJb6LfctbVM6KIMIiAqlZ0ccO1xQs9H6tXl0SQUSICKLa7tQizlv6FQsRUP2oVhFUwi/l+veh6zqrXG9zZZrrFfYR2U894R//3bCPdkHK9qcWcV6Pn93oNwafG0bKd51Jy7KXn1PRl0a7f8EaSylcPov9D7Agyeu+voT8KXB/jCXUNBfE5bPYr70d/q8p5ZyRchT+NHD+OZZIKQLzLy+KP8eCQG/30k/7HysbpOIIsiZQAAAAAElFTkSuQmCC"
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath3260-6"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3262-1"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3244-4"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3246-1"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><mask
+ id="mask3232-6"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image3234-79"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath3202-8"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3204-5"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3186-5"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3188-5"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><mask
+ id="mask3174-7"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image3176-1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath3146-2"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3148-18"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3134-5"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3136-0"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3128-3"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3130-7"
+ d="m 56,380 0,51 c 0,8.2843 6.71573,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.28427,0 -15,6.7158 -15,15 z" /></clipPath><clipPath
+ id="clipPath3110-9"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3112-7"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3098-1"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3100-3"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3092-2"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3094-5"
+ d="m 802,379 0,51 c 0,8.2843 6.7157,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2843,0 -15,6.7158 -15,15 z" /></clipPath><clipPath
+ id="clipPath3056-5"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3058-86"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3044-2"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3046-4"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3038-1"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3040-9"
+ d="m 430.2527,378.5 0,51 c 0,8.2843 6.7158,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2842,0 -15,6.7158 -15,15 z" /></clipPath><clipPath
+ id="clipPath3020-4"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3022-2"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><linearGradient
+ id="linearGradient4265-8"><stop
+ id="stop4267-55"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" /><stop
+ id="stop4269-5"
+ offset="1"
+ style="stop-color:#bbbbbb;stop-opacity:1;" /></linearGradient></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1630"
+ inkscape:window-height="766"
+ id="namedview3006"
+ showgrid="false"
+ inkscape:zoom="1.2934374"
+ inkscape:cx="422.70978"
+ inkscape:cy="223.43562"
+ inkscape:window-x="82"
+ inkscape:window-y="90"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g3012"
+ units="pt"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" /><g
+ id="g3012"
+ inkscape:groupmode="layer"
+ inkscape:label="identity-state"
+ transform="matrix(1.25,0,0,-1.25,-45.355279,820.2111)"><g
+ style="fill:url(#linearGradient4279);fill-opacity:1"
+ transform="matrix(0.7038814,0,0,-0.7038814,275.54031,648.43097)"
+ id="g4273"><path
+ inkscape:connector-curvature="0"
+ id="path4275"
+ style="fill:url(#linearGradient4277);fill-opacity:1;stroke:#000000;stroke-width:4.26208162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 430.2527,409.5 0,-51 c 0,-8.2843 6.7158,-15 15,-15 l 133,0 c 8.2843,0 15,6.7157 15,15 l 0,51 c 0,8.2843 -6.7157,15 -15,15 l -133,0 c -8.2842,0 -15,-6.7158 -15,-15 z" /></g><g
+ id="g3060"
+ transform="matrix(0.7038814,0,0,-0.7038814,16.181591,648.43097)"
+ style="fill:url(#linearGradient4271);fill-opacity:1"><path
+ d="m 430.2527,409.5 0,-51 c 0,-8.2843 6.7158,-15 15,-15 l 133,0 c 8.2843,0 15,6.7157 15,15 l 0,51 c 0,8.2843 -6.7157,15 -15,15 l -133,0 c -8.2842,0 -15,-6.7158 -15,-15 z"
+ style="fill:url(#linearGradient4327);fill-opacity:1;stroke:#000000;stroke-width:4.26208162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3062"
+ inkscape:connector-curvature="0" /></g><g
+ id="g3064"
+ transform="matrix(0.7038814,0,0,-0.7038814,335.66744,398.55308)"><text
+ transform="translate(4.5,43)"
+ id="text3066"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 32.793598 55.557598 73.953598 85.621201"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3068">Nov 8</tspan></text>
+
+
+</g><g
+ id="g3070"
+ transform="matrix(0.7038814,0,0,-0.7038814,212.41394,616.05243)"><text
+ transform="translate(4.5,43)"
+ id="text3072"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#0061ff;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 10.5 31.9116 52.029598 73.029602 87.015602 96.222 110.208"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3074">Identity</tspan></text>
+
+
+</g><g
+ id="g3076"
+ transform="matrix(0.7038814,0,0,-0.7038814,508.59559,519.04211)"><text
+ transform="translate(4.5,43)"
+ id="text3078"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#0061ff;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 19.236 33.222 51.147598 65.133598"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3080">State</tspan></text>
+
+
+</g><g
+ id="g3118"
+ transform="matrix(0.7038814,0,0,-0.7038814,597.52646,399.25696)"><text
+ transform="translate(4.5,43)"
+ id="text3120"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 32.793598 55.557598 73.953598 85.621201"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3122">Nov 9</tspan></text>
+
+
+</g><g
+ id="g3206"
+ transform="matrix(0.7038814,0,0,-0.7038814,328.31653,347.87362)"><text
+ id="text3208"
+ x="21.195471"
+ y="43"
+ style="font-size:12px"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#0061ff;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ sodipodi:role="line"
+ id="tspan3210"
+ x="21.195471"
+ y="43">Value</tspan></text>
+
+
+</g><g
+ id="g3212"
+ transform="matrix(0.7038814,0,0,-0.7038814,600.23595,347.16974)"><text
+ transform="translate(4.5,43)"
+ id="text3214"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#0061ff;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3216">Value</tspan></text>
+
+
+</g><path
+ d="m 415.39081,621.08828 c 21.44107,-21.44086 21.44107,-56.20324 0,-77.64418 -21.44079,-21.44092 -56.2033,-21.44092 -77.64403,0 -21.44086,21.44094 -21.44086,56.20332 0,77.64418 21.44073,21.44079 56.20324,21.44079 77.64403,0"
+ style="fill:#d4e3fe;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3264"
+ inkscape:connector-curvature="0" /><g
+ id="g3266"
+ transform="matrix(0.7038814,0,0,-0.7038814,16.181591,648.43097)"><path
+ d="m 567.1541,38.84564 c 30.4612,30.46082 30.4612,79.84756 0,110.30856 -30.4608,30.461 -79.8477,30.461 -110.3084,0 -30.4609,-30.461 -30.4609,-79.84774 0,-110.30856 30.4607,-30.460874 79.8476,-30.460874 110.3084,0"
+ style="fill:none;stroke:#000000;stroke-width:2.84138799;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3268"
+ inkscape:connector-curvature="0" /></g><image
+ width="1"
+ height="1"
+ transform="matrix(60.533801,0,0,-28.155256,346.30197,592.82435)"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAoCAYAAABkfg1GAAAABHNCSVQICAgIfAhkiAAAAHVJREFUaIHt0IEJACEQwLDT/Xf+X8IiSDJB6ZqZbzhu3w54lbERYyPGRoyNGBsxNmJsxNiIsRFjI8ZGjI0YGzE2YmzE2IixEWMjxkaMjRgbMTZibMTYiLERYyPGRoyNGBsxNmJsxNiIsRFjI8ZGjI0YGzE28gNT5gFPZ1Ar0AAAAABJRU5ErkJggg=="
+ mask="url(#mask3278)"
+ id="image3282" /><g
+ id="g3294"
+ transform="matrix(0.7038814,0,0,-0.7038814,321.66612,637.16887)"><text
+ transform="translate(38.0537,90)"
+ id="text3296"><tspan
+ style="font-size:36px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 11.988 31.8528 50.205601 64.126801"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3298">today</tspan></text>
+
+
+</g><path
+ inkscape:connector-curvature="0"
+ id="path3030-4"
+ style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 584.51377,420.0916 -1.71815,1.37273 -155.47201,124.21496" /><path
+ d="m 579.61106,417.88792 10.18338,-2.05117 -4.46909,9.37741 -1.0256,-5.09169 -4.68869,-2.23455 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3032-8"
+ inkscape:connector-curvature="0" /></g></svg>
\ No newline at end of file
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-04.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-04.svg
new file mode 100644
index 0000000..d61b650
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-04.svg
@@ -0,0 +1,853 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg3004"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ width="845.41956"
+ height="446.87125"
+ xml:space="preserve"
+ sodipodi:docname="identity-state-03.svg"><metadata
+ id="metadata3010"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+ id="defs3008"><linearGradient
+ id="linearGradient4265"><stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop4267" /><stop
+ style="stop-color:#bbbbbb;stop-opacity:1;"
+ offset="1"
+ id="stop4269" /></linearGradient><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3020"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3022"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3038"><path
+ d="m 430.2527,378.5 0,51 c 0,8.2843 6.7158,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2842,0 -15,6.7158 -15,15 z"
+ id="path3040"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3044"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3046"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3056"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3058"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3092"><path
+ d="m 802,379 0,51 c 0,8.2843 6.7157,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2843,0 -15,6.7158 -15,15 z"
+ id="path3094"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3098"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3100"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3110"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3112"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3128"><path
+ d="m 56,380 0,51 c 0,8.2843 6.71573,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.28427,0 -15,6.7158 -15,15 z"
+ id="path3130"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3134"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3136"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3146"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3148"
+ inkscape:connector-curvature="0" /></clipPath><mask
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="mask3174"><image
+ width="1"
+ height="1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ id="image3176" /></mask><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3186"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3188"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3202"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3204"
+ inkscape:connector-curvature="0" /></clipPath><mask
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="mask3232"><image
+ width="1"
+ height="1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ id="image3234" /></mask><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3244"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3246"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3260"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3262"
+ inkscape:connector-curvature="0" /></clipPath><mask
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="mask3278"><image
+ width="1"
+ height="1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAoCAAAAABBFVKaAAAAAXNCSVQI5gpbmQAABXtJREFUSImtl9ly3LgOhn9w1dpqL5n3f784tlsLKXEBzkXbjjNzpjquDG4oVkFf/QUCIEj4ihGBICK3Hb9EVUorqVX4lqf+ClaZpu+cuk2F+QqWTH9uyiz1Zhi+ir0fksS93vL8Glb7YdpXo256XrFEIMHtkJG2nn+DesUSaUVc1U0uXe33sETGW5WPrAQfZ0H49ViIAPW3PSDynqPy9tf12wBEth06xO0owizypgki8p75RKSUIuOMJgAgRUopEqksIEUQFgaIFBFYWAxImfZ8P2LxMeWUK0hpYwxBSimVRQBFxjprSDedVQQQaeOcUVJSyqKtpZIzmEg7qzknsCHSzfTtr1GGIe5h3kS0b9rGadS0x5gqi1Ku7frWKnJTZwgg6/qh9UpSXEI2fa+PdTuEtB8Gm9f1YANl+7vHx16abo+vNVVqx9PYOo2awzwvsYjyw/k8NhqwXQ8CtD3dn3urpWyvz0GN983+LJXJ9g93dpM9kSFlfNd3nkuVarWyfnq46xwBxKehNRTY9A/fzg3VSsZqJpDx08PJKaXU0Kjn4rqp4Dgq3PhwT/JKIgYAmJnTtsS4Jfjpr4de5VRhfeOsEs7N+fGhrSEmaqGVgJR1psZCvmsoH0tl4/O6ZWpPU3/UXAUGXOIWdgrPP9bjiOjuHkZsly2TG6Zukpz3/nzX1cvLfKih6lYASF6WlGi4v3Nds+4hDf1pydSfOpW2PbMY4RzXbVfh8jTniqabBj1//7FmuFP+1o8x6uHU0fr0fcn6cIMVCO9zrEfRyQ3GGuzz2LjTkmkcbF6XWARGUHPKpZYjhAxru94el6fnWGESnHfDQF1r8vLyGqsxR2EBSipKmBphIa0krfMwdFOlqaM4b4kFBiLMLMJca9FkGodjXUISVMzjZH1bW0cphCMzMbMAUks1xrt2aA0RSQnzqWnOCpMr6xKz/KODKW205JSrCLiklKGt1Upqzvy5mHXTd943XhMItazLMJ48vFqX9WD+hKWP5VM3kPdF8LlFkO3Pp5YEJWsRSA7zqW87SNiWWOSt1UAEREqBILUyWe90BZR23hKXnIpoY3X5oBp7/jYgbMzeCCB1X+dT3yIey3rUX7DaWAtSnHLbDEOiCtONg5cjRjp62/c7itFKEUCmO9/5LVxYjZ2ASEpYtklJXueQ5Q0rIszk+pEzCHvo3DnRmsmOj5PNYd146N14zy7prjGKAO2HniQlMJEyxig+QjiyhPlNLAwArimJP9cu1Zz3uTkNaLYEN0x9XV6XUC/d1D3aLVF7bjWBSGujrG+pc5aars2JSy45Le9ir2pz3MZu1Ke8L6/7i6Z+8FOB8YbX55f1qNarvrdTgR0aYmbOqfj2bNA7ZZph21lrjbxd3sVCAyBSRmttrJZ9C6kKaeO9t5QuT0+XWFiqgIz13jvKy+ucyFpNRFpr4nzsR/XTw8CX78/hDWsASAk/cPRG8hr2g0uOp9Zq4RSWyxKySOASh8ZpUoQ8LynhRe2uHklCY1JMrJuhU8e87G/UK7buKGtrKe9rOLjkfW6cQk17iKmwUOYaZ281EUmJ654r8uKQEytnOG7Z9mMj2xI+asYAEJSYg9VUSypVmNNmtAKXUgqLQFg4Ra2JCMI1F66cVgOuTFpLKcoPoz3WJb6LfctbVM6KIMIiAqlZ0ccO1xQs9H6tXl0SQUSICKLa7tQizlv6FQsRUP2oVhFUwi/l+veh6zqrXG9zZZrrFfYR2U894R//3bCPdkHK9qcWcV6Pn93oNwafG0bKd51Jy7KXn1PRl0a7f8EaSylcPov9D7Agyeu+voT8KXB/jCXUNBfE5bPYr70d/q8p5ZyRchT+NHD+OZZIKQLzLy+KP8eCQG/30k/7HysbpOIIsiZQAAAAAElFTkSuQmCC"
+ id="image3280" /></mask><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3290"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3292"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3306"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3308"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3326"><path
+ d="M 2,3 159,3 159,18 2,18 2,3 z"
+ id="path3328"
+ inkscape:connector-curvature="0" /></clipPath><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4271"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4277"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4279"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4287"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4327"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4287-6"
+ xlink:href="#linearGradient4265-5"
+ inkscape:collect="always" /><linearGradient
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4279-5"
+ xlink:href="#linearGradient4265-5"
+ inkscape:collect="always" /><linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ id="linearGradient4271-9"
+ xlink:href="#linearGradient4265-5"
+ inkscape:collect="always" /><clipPath
+ id="clipPath3326-4"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3328-3"
+ d="M 2,3 159,3 159,18 2,18 2,3 z" /></clipPath><clipPath
+ id="clipPath3306-5"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3308-9"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3290-2"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3292-8"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><mask
+ id="mask3278-5"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image3280-6"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAoCAAAAABBFVKaAAAAAXNCSVQI5gpbmQAABXtJREFUSImtl9ly3LgOhn9w1dpqL5n3f784tlsLKXEBzkXbjjNzpjquDG4oVkFf/QUCIEj4ihGBICK3Hb9EVUorqVX4lqf+ClaZpu+cuk2F+QqWTH9uyiz1Zhi+ir0fksS93vL8Glb7YdpXo256XrFEIMHtkJG2nn+DesUSaUVc1U0uXe33sETGW5WPrAQfZ0H49ViIAPW3PSDynqPy9tf12wBEth06xO0owizypgki8p75RKSUIuOMJgAgRUopEqksIEUQFgaIFBFYWAxImfZ8P2LxMeWUK0hpYwxBSimVRQBFxjprSDedVQQQaeOcUVJSyqKtpZIzmEg7qzknsCHSzfTtr1GGIe5h3kS0b9rGadS0x5gqi1Ku7frWKnJTZwgg6/qh9UpSXEI2fa+PdTuEtB8Gm9f1YANl+7vHx16abo+vNVVqx9PYOo2awzwvsYjyw/k8NhqwXQ8CtD3dn3urpWyvz0GN983+LJXJ9g93dpM9kSFlfNd3nkuVarWyfnq46xwBxKehNRTY9A/fzg3VSsZqJpDx08PJKaXU0Kjn4rqp4Dgq3PhwT/JKIgYAmJnTtsS4Jfjpr4de5VRhfeOsEs7N+fGhrSEmaqGVgJR1psZCvmsoH0tl4/O6ZWpPU3/UXAUGXOIWdgrPP9bjiOjuHkZsly2TG6Zukpz3/nzX1cvLfKih6lYASF6WlGi4v3Nds+4hDf1pydSfOpW2PbMY4RzXbVfh8jTniqabBj1//7FmuFP+1o8x6uHU0fr0fcn6cIMVCO9zrEfRyQ3GGuzz2LjTkmkcbF6XWARGUHPKpZYjhAxru94el6fnWGESnHfDQF1r8vLyGqsxR2EBSipKmBphIa0krfMwdFOlqaM4b4kFBiLMLMJca9FkGodjXUISVMzjZH1bW0cphCMzMbMAUks1xrt2aA0RSQnzqWnOCpMr6xKz/KODKW205JSrCLiklKGt1Upqzvy5mHXTd943XhMItazLMJ48vFqX9WD+hKWP5VM3kPdF8LlFkO3Pp5YEJWsRSA7zqW87SNiWWOSt1UAEREqBILUyWe90BZR23hKXnIpoY3X5oBp7/jYgbMzeCCB1X+dT3yIey3rUX7DaWAtSnHLbDEOiCtONg5cjRjp62/c7itFKEUCmO9/5LVxYjZ2ASEpYtklJXueQ5Q0rIszk+pEzCHvo3DnRmsmOj5PNYd146N14zy7prjGKAO2HniQlMJEyxig+QjiyhPlNLAwArimJP9cu1Zz3uTkNaLYEN0x9XV6XUC/d1D3aLVF7bjWBSGujrG+pc5aars2JSy45Le9ir2pz3MZu1Ke8L6/7i6Z+8FOB8YbX55f1qNarvrdTgR0aYmbOqfj2bNA7ZZph21lrjbxd3sVCAyBSRmttrJZ9C6kKaeO9t5QuT0+XWFiqgIz13jvKy+ucyFpNRFpr4nzsR/XTw8CX78/hDWsASAk/cPRG8hr2g0uOp9Zq4RSWyxKySOASh8ZpUoQ8LynhRe2uHklCY1JMrJuhU8e87G/UK7buKGtrKe9rOLjkfW6cQk17iKmwUOYaZ281EUmJ654r8uKQEytnOG7Z9mMj2xI+asYAEJSYg9VUSypVmNNmtAKXUgqLQFg4Ra2JCMI1F66cVgOuTFpLKcoPoz3WJb6LfctbVM6KIMIiAqlZ0ccO1xQs9H6tXl0SQUSICKLa7tQizlv6FQsRUP2oVhFUwi/l+veh6zqrXG9zZZrrFfYR2U894R//3bCPdkHK9qcWcV6Pn93oNwafG0bKd51Jy7KXn1PRl0a7f8EaSylcPov9D7Agyeu+voT8KXB/jCXUNBfE5bPYr70d/q8p5ZyRchT+NHD+OZZIKQLzLy+KP8eCQG/30k/7HysbpOIIsiZQAAAAAElFTkSuQmCC"
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath3260-0"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3262-9"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3244-6"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3246-0"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><mask
+ id="mask3232-8"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image3234-7"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath3202-0"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3204-1"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3186-1"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3188-1"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><mask
+ id="mask3174-5"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image3176-2"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath3146-7"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3148-1"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3134-2"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3136-2"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3128-2"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3130-5"
+ d="m 56,380 0,51 c 0,8.2843 6.71573,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.28427,0 -15,6.7158 -15,15 z" /></clipPath><clipPath
+ id="clipPath3110-6"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3112-2"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3098-3"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3100-0"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3092-5"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3094-8"
+ d="m 802,379 0,51 c 0,8.2843 6.7157,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2843,0 -15,6.7158 -15,15 z" /></clipPath><clipPath
+ id="clipPath3056-4"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3058-8"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3044-0"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3046-7"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3038-8"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3040-2"
+ d="m 430.2527,378.5 0,51 c 0,8.2843 6.7158,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2842,0 -15,6.7158 -15,15 z" /></clipPath><clipPath
+ id="clipPath3020-2"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3022-9"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><linearGradient
+ id="linearGradient4265-5"><stop
+ id="stop4267-5"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" /><stop
+ id="stop4269-8"
+ offset="1"
+ style="stop-color:#bbbbbb;stop-opacity:1;" /></linearGradient><linearGradient
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4287-3"
+ xlink:href="#linearGradient4265-8"
+ inkscape:collect="always" /><linearGradient
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4279-56"
+ xlink:href="#linearGradient4265-8"
+ inkscape:collect="always" /><linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ id="linearGradient4271-0"
+ xlink:href="#linearGradient4265-8"
+ inkscape:collect="always" /><clipPath
+ id="clipPath3326-5"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3328-39"
+ d="M 2,3 159,3 159,18 2,18 2,3 z" /></clipPath><clipPath
+ id="clipPath3306-59"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3308-7"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3290-4"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3292-4"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><mask
+ id="mask3278-2"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image3280-0"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAoCAAAAABBFVKaAAAAAXNCSVQI5gpbmQAABXtJREFUSImtl9ly3LgOhn9w1dpqL5n3f784tlsLKXEBzkXbjjNzpjquDG4oVkFf/QUCIEj4ihGBICK3Hb9EVUorqVX4lqf+ClaZpu+cuk2F+QqWTH9uyiz1Zhi+ir0fksS93vL8Glb7YdpXo256XrFEIMHtkJG2nn+DesUSaUVc1U0uXe33sETGW5WPrAQfZ0H49ViIAPW3PSDynqPy9tf12wBEth06xO0owizypgki8p75RKSUIuOMJgAgRUopEqksIEUQFgaIFBFYWAxImfZ8P2LxMeWUK0hpYwxBSimVRQBFxjprSDedVQQQaeOcUVJSyqKtpZIzmEg7qzknsCHSzfTtr1GGIe5h3kS0b9rGadS0x5gqi1Ku7frWKnJTZwgg6/qh9UpSXEI2fa+PdTuEtB8Gm9f1YANl+7vHx16abo+vNVVqx9PYOo2awzwvsYjyw/k8NhqwXQ8CtD3dn3urpWyvz0GN983+LJXJ9g93dpM9kSFlfNd3nkuVarWyfnq46xwBxKehNRTY9A/fzg3VSsZqJpDx08PJKaXU0Kjn4rqp4Dgq3PhwT/JKIgYAmJnTtsS4Jfjpr4de5VRhfeOsEs7N+fGhrSEmaqGVgJR1psZCvmsoH0tl4/O6ZWpPU3/UXAUGXOIWdgrPP9bjiOjuHkZsly2TG6Zukpz3/nzX1cvLfKih6lYASF6WlGi4v3Nds+4hDf1pydSfOpW2PbMY4RzXbVfh8jTniqabBj1//7FmuFP+1o8x6uHU0fr0fcn6cIMVCO9zrEfRyQ3GGuzz2LjTkmkcbF6XWARGUHPKpZYjhAxru94el6fnWGESnHfDQF1r8vLyGqsxR2EBSipKmBphIa0krfMwdFOlqaM4b4kFBiLMLMJca9FkGodjXUISVMzjZH1bW0cphCMzMbMAUks1xrt2aA0RSQnzqWnOCpMr6xKz/KODKW205JSrCLiklKGt1Upqzvy5mHXTd943XhMItazLMJ48vFqX9WD+hKWP5VM3kPdF8LlFkO3Pp5YEJWsRSA7zqW87SNiWWOSt1UAEREqBILUyWe90BZR23hKXnIpoY3X5oBp7/jYgbMzeCCB1X+dT3yIey3rUX7DaWAtSnHLbDEOiCtONg5cjRjp62/c7itFKEUCmO9/5LVxYjZ2ASEpYtklJXueQ5Q0rIszk+pEzCHvo3DnRmsmOj5PNYd146N14zy7prjGKAO2HniQlMJEyxig+QjiyhPlNLAwArimJP9cu1Zz3uTkNaLYEN0x9XV6XUC/d1D3aLVF7bjWBSGujrG+pc5aars2JSy45Le9ir2pz3MZu1Ke8L6/7i6Z+8FOB8YbX55f1qNarvrdTgR0aYmbOqfj2bNA7ZZph21lrjbxd3sVCAyBSRmttrJZ9C6kKaeO9t5QuT0+XWFiqgIz13jvKy+ucyFpNRFpr4nzsR/XTw8CX78/hDWsASAk/cPRG8hr2g0uOp9Zq4RSWyxKySOASh8ZpUoQ8LynhRe2uHklCY1JMrJuhU8e87G/UK7buKGtrKe9rOLjkfW6cQk17iKmwUOYaZ281EUmJ654r8uKQEytnOG7Z9mMj2xI+asYAEJSYg9VUSypVmNNmtAKXUgqLQFg4Ra2JCMI1F66cVgOuTFpLKcoPoz3WJb6LfctbVM6KIMIiAqlZ0ccO1xQs9H6tXl0SQUSICKLa7tQizlv6FQsRUP2oVhFUwi/l+veh6zqrXG9zZZrrFfYR2U894R//3bCPdkHK9qcWcV6Pn93oNwafG0bKd51Jy7KXn1PRl0a7f8EaSylcPov9D7Agyeu+voT8KXB/jCXUNBfE5bPYr70d/q8p5ZyRchT+NHD+OZZIKQLzLy+KP8eCQG/30k/7HysbpOIIsiZQAAAAAElFTkSuQmCC"
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath3260-6"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3262-1"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3244-4"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3246-1"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><mask
+ id="mask3232-6"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image3234-79"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath3202-8"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3204-5"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3186-5"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3188-5"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><mask
+ id="mask3174-7"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image3176-1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath3146-2"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3148-18"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3134-5"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3136-0"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3128-3"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3130-7"
+ d="m 56,380 0,51 c 0,8.2843 6.71573,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.28427,0 -15,6.7158 -15,15 z" /></clipPath><clipPath
+ id="clipPath3110-9"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3112-7"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3098-1"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3100-3"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3092-2"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3094-5"
+ d="m 802,379 0,51 c 0,8.2843 6.7157,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2843,0 -15,6.7158 -15,15 z" /></clipPath><clipPath
+ id="clipPath3056-5"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3058-86"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3044-2"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3046-4"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3038-1"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3040-9"
+ d="m 430.2527,378.5 0,51 c 0,8.2843 6.7158,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2842,0 -15,6.7158 -15,15 z" /></clipPath><clipPath
+ id="clipPath3020-4"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3022-2"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><linearGradient
+ id="linearGradient4265-8"><stop
+ id="stop4267-55"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" /><stop
+ id="stop4269-5"
+ offset="1"
+ style="stop-color:#bbbbbb;stop-opacity:1;" /></linearGradient><linearGradient
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4327-3"
+ xlink:href="#linearGradient4265-3"
+ inkscape:collect="always" /><linearGradient
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4287-7"
+ xlink:href="#linearGradient4265-3"
+ inkscape:collect="always" /><linearGradient
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4285"
+ xlink:href="#linearGradient4265-3"
+ inkscape:collect="always" /><linearGradient
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4279-2"
+ xlink:href="#linearGradient4265-3"
+ inkscape:collect="always" /><linearGradient
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4277-3"
+ xlink:href="#linearGradient4265-3"
+ inkscape:collect="always" /><linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="428.16113"
+ x2="532.65112"
+ y1="343.97897"
+ x1="483.9541"
+ id="linearGradient4271-95"
+ xlink:href="#linearGradient4265-3"
+ inkscape:collect="always" /><clipPath
+ id="clipPath3326-7"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3328-5"
+ d="M 2,3 159,3 159,18 2,18 2,3 z" /></clipPath><clipPath
+ id="clipPath3306-4"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3308-8"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3290-3"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3292-0"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><mask
+ id="mask3278-3"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image3280-4"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAoCAAAAABBFVKaAAAAAXNCSVQI5gpbmQAABXtJREFUSImtl9ly3LgOhn9w1dpqL5n3f784tlsLKXEBzkXbjjNzpjquDG4oVkFf/QUCIEj4ihGBICK3Hb9EVUorqVX4lqf+ClaZpu+cuk2F+QqWTH9uyiz1Zhi+ir0fksS93vL8Glb7YdpXo256XrFEIMHtkJG2nn+DesUSaUVc1U0uXe33sETGW5WPrAQfZ0H49ViIAPW3PSDynqPy9tf12wBEth06xO0owizypgki8p75RKSUIuOMJgAgRUopEqksIEUQFgaIFBFYWAxImfZ8P2LxMeWUK0hpYwxBSimVRQBFxjprSDedVQQQaeOcUVJSyqKtpZIzmEg7qzknsCHSzfTtr1GGIe5h3kS0b9rGadS0x5gqi1Ku7frWKnJTZwgg6/qh9UpSXEI2fa+PdTuEtB8Gm9f1YANl+7vHx16abo+vNVVqx9PYOo2awzwvsYjyw/k8NhqwXQ8CtD3dn3urpWyvz0GN983+LJXJ9g93dpM9kSFlfNd3nkuVarWyfnq46xwBxKehNRTY9A/fzg3VSsZqJpDx08PJKaXU0Kjn4rqp4Dgq3PhwT/JKIgYAmJnTtsS4Jfjpr4de5VRhfeOsEs7N+fGhrSEmaqGVgJR1psZCvmsoH0tl4/O6ZWpPU3/UXAUGXOIWdgrPP9bjiOjuHkZsly2TG6Zukpz3/nzX1cvLfKih6lYASF6WlGi4v3Nds+4hDf1pydSfOpW2PbMY4RzXbVfh8jTniqabBj1//7FmuFP+1o8x6uHU0fr0fcn6cIMVCO9zrEfRyQ3GGuzz2LjTkmkcbF6XWARGUHPKpZYjhAxru94el6fnWGESnHfDQF1r8vLyGqsxR2EBSipKmBphIa0krfMwdFOlqaM4b4kFBiLMLMJca9FkGodjXUISVMzjZH1bW0cphCMzMbMAUks1xrt2aA0RSQnzqWnOCpMr6xKz/KODKW205JSrCLiklKGt1Upqzvy5mHXTd943XhMItazLMJ48vFqX9WD+hKWP5VM3kPdF8LlFkO3Pp5YEJWsRSA7zqW87SNiWWOSt1UAEREqBILUyWe90BZR23hKXnIpoY3X5oBp7/jYgbMzeCCB1X+dT3yIey3rUX7DaWAtSnHLbDEOiCtONg5cjRjp62/c7itFKEUCmO9/5LVxYjZ2ASEpYtklJXueQ5Q0rIszk+pEzCHvo3DnRmsmOj5PNYd146N14zy7prjGKAO2HniQlMJEyxig+QjiyhPlNLAwArimJP9cu1Zz3uTkNaLYEN0x9XV6XUC/d1D3aLVF7bjWBSGujrG+pc5aars2JSy45Le9ir2pz3MZu1Ke8L6/7i6Z+8FOB8YbX55f1qNarvrdTgR0aYmbOqfj2bNA7ZZph21lrjbxd3sVCAyBSRmttrJZ9C6kKaeO9t5QuT0+XWFiqgIz13jvKy+ucyFpNRFpr4nzsR/XTw8CX78/hDWsASAk/cPRG8hr2g0uOp9Zq4RSWyxKySOASh8ZpUoQ8LynhRe2uHklCY1JMrJuhU8e87G/UK7buKGtrKe9rOLjkfW6cQk17iKmwUOYaZ281EUmJ654r8uKQEytnOG7Z9mMj2xI+asYAEJSYg9VUSypVmNNmtAKXUgqLQFg4Ra2JCMI1F66cVgOuTFpLKcoPoz3WJb6LfctbVM6KIMIiAqlZ0ccO1xQs9H6tXl0SQUSICKLa7tQizlv6FQsRUP2oVhFUwi/l+veh6zqrXG9zZZrrFfYR2U894R//3bCPdkHK9qcWcV6Pn93oNwafG0bKd51Jy7KXn1PRl0a7f8EaSylcPov9D7Agyeu+voT8KXB/jCXUNBfE5bPYr70d/q8p5ZyRchT+NHD+OZZIKQLzLy+KP8eCQG/30k/7HysbpOIIsiZQAAAAAElFTkSuQmCC"
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath3260-5"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3262-7"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3244-0"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3246-6"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><mask
+ id="mask3232-7"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image3234-8"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath3202-05"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3204-6"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3186-57"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3188-0"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><mask
+ id="mask3174-4"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image3176-0"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath3146-8"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3148-0"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3134-7"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3136-4"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3128-9"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3130-3"
+ d="m 56,380 0,51 c 0,8.2843 6.71573,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.28427,0 -15,6.7158 -15,15 z" /></clipPath><clipPath
+ id="clipPath3110-1"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3112-8"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3098-2"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3100-37"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3092-1"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3094-0"
+ d="m 802,379 0,51 c 0,8.2843 6.7157,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2843,0 -15,6.7158 -15,15 z" /></clipPath><clipPath
+ id="clipPath3056-7"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3058-3"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3044-8"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3046-49"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><clipPath
+ id="clipPath3038-7"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3040-1"
+ d="m 430.2527,378.5 0,51 c 0,8.2843 6.7158,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2842,0 -15,6.7158 -15,15 z" /></clipPath><clipPath
+ id="clipPath3020-8"
+ clipPathUnits="userSpaceOnUse"><path
+ inkscape:connector-curvature="0"
+ id="path3022-6"
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z" /></clipPath><linearGradient
+ id="linearGradient4265-3"><stop
+ id="stop4267-7"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" /><stop
+ id="stop4269-6"
+ offset="1"
+ style="stop-color:#bbbbbb;stop-opacity:1;" /></linearGradient><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265-3"
+ id="linearGradient5105"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265-3"
+ id="linearGradient5107"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265-3"
+ id="linearGradient5109"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1630"
+ inkscape:window-height="766"
+ id="namedview3006"
+ showgrid="false"
+ inkscape:zoom="1.2934374"
+ inkscape:cx="422.70978"
+ inkscape:cy="223.43562"
+ inkscape:window-x="115"
+ inkscape:window-y="71"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g3012"
+ units="pt"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" /><g
+ id="g3012"
+ inkscape:groupmode="layer"
+ inkscape:label="identity-state"
+ transform="matrix(1.25,0,0,-1.25,-45.355279,820.2111)"><g
+ style="fill:url(#linearGradient4279);fill-opacity:1"
+ transform="matrix(0.7038814,0,0,-0.7038814,275.54031,648.43097)"
+ id="g4273"><path
+ inkscape:connector-curvature="0"
+ id="path4275"
+ style="fill:url(#linearGradient4277);fill-opacity:1;stroke:#000000;stroke-width:4.26208162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 430.2527,409.5 0,-51 c 0,-8.2843 6.7158,-15 15,-15 l 133,0 c 8.2843,0 15,6.7157 15,15 l 0,51 c 0,8.2843 -6.7157,15 -15,15 l -133,0 c -8.2842,0 -15,-6.7158 -15,-15 z" /></g><g
+ id="g3060"
+ transform="matrix(0.7038814,0,0,-0.7038814,16.181591,648.43097)"
+ style="fill:url(#linearGradient4271);fill-opacity:1"><path
+ d="m 430.2527,409.5 0,-51 c 0,-8.2843 6.7158,-15 15,-15 l 133,0 c 8.2843,0 15,6.7157 15,15 l 0,51 c 0,8.2843 -6.7157,15 -15,15 l -133,0 c -8.2842,0 -15,-6.7158 -15,-15 z"
+ style="fill:url(#linearGradient4327);fill-opacity:1;stroke:#000000;stroke-width:4.26208162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3062"
+ inkscape:connector-curvature="0" /></g><g
+ id="g3064"
+ transform="matrix(0.7038814,0,0,-0.7038814,335.66744,398.55308)"><text
+ transform="translate(4.5,43)"
+ id="text3066"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 32.793598 55.557598 73.953598 85.621201"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3068">Nov 8</tspan></text>
+
+
+</g><g
+ id="g3070"
+ transform="matrix(0.7038814,0,0,-0.7038814,212.41394,616.05243)"><text
+ transform="translate(4.5,43)"
+ id="text3072"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#0061ff;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 10.5 31.9116 52.029598 73.029602 87.015602 96.222 110.208"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3074">Identity</tspan></text>
+
+
+</g><g
+ id="g3076"
+ transform="matrix(0.7038814,0,0,-0.7038814,508.59559,519.04211)"><text
+ transform="translate(4.5,43)"
+ id="text3078"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#0061ff;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 19.236 33.222 51.147598 65.133598"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3080">State</tspan></text>
+
+
+</g><g
+ id="g3118"
+ transform="matrix(0.7038814,0,0,-0.7038814,597.52646,399.25696)"><text
+ transform="translate(4.5,43)"
+ id="text3120"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 32.793598 55.557598 73.953598 85.621201"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3122">Nov 9</tspan></text>
+
+
+</g><g
+ id="g3206"
+ transform="matrix(0.7038814,0,0,-0.7038814,328.31653,347.87362)"><text
+ id="text3208"
+ x="21.195471"
+ y="43"
+ style="font-size:12px"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#0061ff;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ sodipodi:role="line"
+ id="tspan3210"
+ x="21.195471"
+ y="43">Value</tspan></text>
+
+
+</g><g
+ id="g3212"
+ transform="matrix(0.7038814,0,0,-0.7038814,600.23595,347.16974)"><text
+ transform="translate(4.5,43)"
+ id="text3214"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#0061ff;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3216">Value</tspan></text>
+
+
+</g><path
+ d="m 415.39081,621.08828 c 21.44107,-21.44086 21.44107,-56.20324 0,-77.64418 -21.44079,-21.44092 -56.2033,-21.44092 -77.64403,0 -21.44086,21.44094 -21.44086,56.20332 0,77.64418 21.44073,21.44079 56.20324,21.44079 77.64403,0"
+ style="fill:#d4e3fe;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3264"
+ inkscape:connector-curvature="0" /><g
+ id="g3266"
+ transform="matrix(0.7038814,0,0,-0.7038814,16.181591,648.43097)"><path
+ d="m 567.1541,38.84564 c 30.4612,30.46082 30.4612,79.84756 0,110.30856 -30.4608,30.461 -79.8477,30.461 -110.3084,0 -30.4609,-30.461 -30.4609,-79.84774 0,-110.30856 30.4607,-30.460874 79.8476,-30.460874 110.3084,0"
+ style="fill:none;stroke:#000000;stroke-width:2.84138799;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3268"
+ inkscape:connector-curvature="0" /></g><image
+ width="1"
+ height="1"
+ transform="matrix(60.533801,0,0,-28.155256,346.30197,592.82435)"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAoCAYAAABkfg1GAAAABHNCSVQICAgIfAhkiAAAAHVJREFUaIHt0IEJACEQwLDT/Xf+X8IiSDJB6ZqZbzhu3w54lbERYyPGRoyNGBsxNmJsxNiIsRFjI8ZGjI0YGzE2YmzE2IixEWMjxkaMjRgbMTZibMTYiLERYyPGRoyNGBsxNmJsxNiIsRFjI8ZGjI0YGzE28gNT5gFPZ1Ar0AAAAABJRU5ErkJggg=="
+ mask="url(#mask3278)"
+ id="image3282" /><g
+ id="g3294"
+ transform="matrix(0.7038814,0,0,-0.7038814,321.66612,637.16887)"><text
+ transform="translate(38.0537,90)"
+ id="text3296"><tspan
+ style="font-size:36px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 11.988 31.8528 50.205601 64.126801"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3298">today</tspan></text>
+
+
+</g><path
+ inkscape:connector-curvature="0"
+ id="path3030-4"
+ style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 584.51377,420.0916 -1.71815,1.37273 -155.47201,124.21496" /><path
+ d="m 579.61106,417.88792 10.18338,-2.05117 -4.46909,9.37741 -1.0256,-5.09169 -4.68869,-2.23455 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3032-8"
+ inkscape:connector-curvature="0" /><g
+ id="g5165"
+ transform="translate(-2.4740277,0)"><path
+ inkscape:connector-curvature="0"
+ id="path3218"
+ style="fill:#b1dd8c;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ d="m 539.45505,357.71711 0,-13.98141 30.58055,35.19407 -30.58055,35.19407 0,-13.9814 -90.48705,0 0,-42.42533 90.48705,0 z" /><g
+ transform="matrix(0.7038814,0,0,-0.7038814,18.192581,647.81246)"
+ id="g3220"><path
+ inkscape:connector-curvature="0"
+ id="path3222"
+ style="fill:none;stroke:#000000;stroke-width:2.84138799;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 740.5544,412.1367 0,19.8633 43.4456,-50 -43.4456,-50 0,19.8633 -128.5544,0 0,60.2734 128.5544,0 z" /></g><image
+ id="image3236"
+ mask="url(#mask3232-7)"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAYAAAC+ahnyAAAABHNCSVQICAgIfAhkiAAAAG9JREFUeJzt0jEBwCAQwMAH/55bA2SG4U5BhqyZ+QYO9u0A3mUOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QO0g8UtQFFgnmy2QAAAABJRU5ErkJggg=="
+ transform="matrix(95.023988,0,0,-24.635849,453.19128,390.19187)"
+ height="1"
+ width="1" /><g
+ transform="matrix(0.7038814,0,0,-0.7038814,448.968,414.12384)"
+ id="g3248"><text
+ id="text3250"
+ transform="translate(9.260719,64)"><tspan
+ id="tspan3252"
+ sodipodi:role="line"
+ y="0"
+ x="0 10 30 50 67.519997 80.839996 89.608002 111.68"
+ style="font-size:40px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans">function</tspan></text>
+
+
+</g></g></g></svg>
\ No newline at end of file
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-05.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-05.svg
new file mode 100644
index 0000000..ae572b1
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/identity-state-05.svg
@@ -0,0 +1,421 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg3004"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ width="845.41956"
+ height="446.87125"
+ xml:space="preserve"
+ sodipodi:docname="identity-state.svg"><metadata
+ id="metadata3010"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
+ id="defs3008"><linearGradient
+ id="linearGradient4265"><stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop4267" /><stop
+ style="stop-color:#bbbbbb;stop-opacity:1;"
+ offset="1"
+ id="stop4269" /></linearGradient><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3020"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3022"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3038"><path
+ d="m 430.2527,378.5 0,51 c 0,8.2843 6.7158,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2842,0 -15,6.7158 -15,15 z"
+ id="path3040"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3044"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3046"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3056"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3058"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3092"><path
+ d="m 802,379 0,51 c 0,8.2843 6.7157,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.2843,0 -15,6.7158 -15,15 z"
+ id="path3094"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3098"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3100"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3110"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3112"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3128"><path
+ d="m 56,380 0,51 c 0,8.2843 6.71573,15 15,15 l 133,0 c 8.2843,0 15,-6.7157 15,-15 l 0,-51 c 0,-8.2843 -6.7157,-15 -15,-15 l -133,0 c -8.28427,0 -15,6.7158 -15,15 z"
+ id="path3130"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3134"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3136"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3146"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3148"
+ inkscape:connector-curvature="0" /></clipPath><mask
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="mask3174"><image
+ width="1"
+ height="1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ id="image3176" /></mask><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3186"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3188"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3202"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3204"
+ inkscape:connector-curvature="0" /></clipPath><mask
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="mask3232"><image
+ width="1"
+ height="1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAAAAACbAUYuAAAAAXNCSVQI5gpbmQAABv9JREFUWIXFl9lyHDkORS8IkrnVppLcM///dx1tLVWVGxcA81CSbUnlmXZPRzTfMgI8eQkC5CXhdRCIADMY/onhX1UQsWOYiP4zQvyrDI6xCSTrmuXv0EGgX8usv8rw7Wa7aZFOL6J/gwpyjkzV/rySqw5u9/f320YnWpf6N8jwMZLk8gup9QCI4nD/72NHuQSm/1sGwM1m69NltD+fEA+AuNnfH3tbpvNc9K+XB+FaEuSa/bGZkcufn+sBgNvtrtXz82ka57+8LXTtewPgOPatRSb6tXz4duho+vr7aS1/uV0cMUMEBkC1JEvlV+uUODZe5tPzpajZT/uFAHzoRQLh2p/OhSZYTgUANJ3h05j/h4wfgR5EHGJkLalUAZzDdR0O7prna8JBRATVb7VHROSIoKZm5Jp+28gIqJlpHivX9VprRCACmb1u2hX0EejJcdsPbagcm0JgJqlVDOS8Z6tVwN6TibH3ZLWU+kp37INnMq2lCMXN8a5NkdcqpZqZ2PUgIiJm7xxMRETNQO4W0BO3u+NhaHhzV3m2pnNpXNTgfD80skwJzdCzFAtNw7rO41LEQMSx67o2OCtpmpPr7387Nqkb1rJMc/Vd7zOJEByHto3RkZS8plzVyN0CeuJuf3/cNEGEnMN250eqVUFh+zDUZxV0x7tGVg1d4209Pz1PpiDfbg77TRMIZTm9jG735V8Hn7t9Xs+PQu3hLi5fSzXnu2G76SND8zJexqUo+RtA83Ch7bvotR2WLtH+Psb5QgCF/u6QZVzQ7r5sZCnOh8AyBKgWcLt/uD+0HoD23hztD7uePYUSdQoat/fdeb04C/3heBiiJ0DydHp6GTP4BtA8TGrOolJSKuabIabgAMCFbvAtO/h2s7MwpTXFvvWoKQvi9uHfdy1yEXLKMYAdkdW05jUVhW/6vkZ21B9/u9+wVSUXmr6LzqzSDaB5k/XcNA3q+fHxVNgxs6PXQmTvHIiYvep0Xqw5HPvdcp4KdfuHY1fH81wpuDonzHNq7PJ0Tmm5JJDzzM6x3z182dI6LRWh27QHtlqXz8Axq4esJ+4GzuevXyfXGuhDgwOArufHx8na7Jsw9NFTfzi0cvrjaarkPUoy7XaNXv54mktN4o1AAHx3d79z4+PLWBCHu+N2W9elus9AB29alnnOtSzTuMbbh5jV9fz8vGri7W6IjWffbzqavv7+vAo5JqtES66yji+TmBBfp7kw7Ld+fvz9eanw3aq82ezPq9JHYHDkzSClqqmUUv1PTkBJy7xmo3Ut5rzn0Ha+js+nsRjIAcaliqqUnAXm7E1HPzRyeXo6F4XLGvo2Dn0sn4Ds4L8f1T+/Dcy0iipUqoCcYx8DlXleqxqgAMjMALMfrwVyrml4nccli0FtvkyHrmmC0CcgvfnTtx/CfiyLH5UYYDC9HsvMDlKqmOHjlfPDIBcYknMxA0xrThUc2H0GAu7GdNBPzNCbm6frrXFj5vvP6zX442Kud8sn4Acddt0bR9c/3coLAIKpCDh4fh/ycQHXMH8NI3IhMFTeG60r8NO+qBqY2RE5/vib70NrqRb6zVSgrzbMzEDMjhze1JhqLhb6YapQUOj6PlrJ9abj+6ijCoW2iUZt30W+LQNa16XG7SHZUo0cWQXMwLGJjZDh1eRqWeZd3N5lWwTcHo67UOclyy3kOx2mJRfE7V5W19/tO387H2ZlHpfYf0EcszqmMhfUatzt1yDQQu5Vx3ze+v4BcSzww93DYPN5zDeZ7/MheZ43YV+aRO1+2/zMvFuZXobQ73mYsjrW0V20rLnp790stk7JfQvrQ7/jYc4I3XbDy8vLlMPP9sVMr97HNI8v3a596LNxw1qrGsxEqlw9mplUEdO6vkRGu2331QjJzWNdx0sT902WfFaBShVVWU/BHfttVyo4eEzPfzzPlT8D7ZoPLUtIqSo0j0/BhjDEUletPKWqqGkqS1EA0LxMJVXTfHEo+863MNQCM1lOLW9DE4o505pmXbKojGTlMPimATTNp8enSza7AYQHoGV6SuWc1KwuT5Z3DWpaiut8OidBOrswTkUBq/NzqeckVlfIOm5a76B5PC+12onqrmeU6Tyv/uLjPBWRZJKmbRcdpCzT6TwlIbkF9IBZvmjUeRWYZeh6akhSKhR9nZeK+WnhNGUzaBlx0mWuZnWRNLZtcCRlmaaiNsl6aj2VdZoyW+IyZTVJmqe+iQwp67KsVQz1BhAEwDkfnNVazeDIh8hktSgxXX1yYNJSVUHsPZsUUSMiDt6zg0otVRSOQwgOWnNV8v5tinM+vIbVKqYgdwt4tTyvT7FXI04OZq8H1Ld3g5kB7l3g9d1gpvYa9vYJfI8jgiMimJni28RPwFudeePB9JPx/R116/M98L8T/wMFBYWOWfPkQgAAAABJRU5ErkJggg=="
+ id="image3234" /></mask><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3244"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3246"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3260"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3262"
+ inkscape:connector-curvature="0" /></clipPath><mask
+ maskUnits="userSpaceOnUse"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ id="mask3278"><image
+ width="1"
+ height="1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAoCAAAAABBFVKaAAAAAXNCSVQI5gpbmQAABXtJREFUSImtl9ly3LgOhn9w1dpqL5n3f784tlsLKXEBzkXbjjNzpjquDG4oVkFf/QUCIEj4ihGBICK3Hb9EVUorqVX4lqf+ClaZpu+cuk2F+QqWTH9uyiz1Zhi+ir0fksS93vL8Glb7YdpXo256XrFEIMHtkJG2nn+DesUSaUVc1U0uXe33sETGW5WPrAQfZ0H49ViIAPW3PSDynqPy9tf12wBEth06xO0owizypgki8p75RKSUIuOMJgAgRUopEqksIEUQFgaIFBFYWAxImfZ8P2LxMeWUK0hpYwxBSimVRQBFxjprSDedVQQQaeOcUVJSyqKtpZIzmEg7qzknsCHSzfTtr1GGIe5h3kS0b9rGadS0x5gqi1Ku7frWKnJTZwgg6/qh9UpSXEI2fa+PdTuEtB8Gm9f1YANl+7vHx16abo+vNVVqx9PYOo2awzwvsYjyw/k8NhqwXQ8CtD3dn3urpWyvz0GN983+LJXJ9g93dpM9kSFlfNd3nkuVarWyfnq46xwBxKehNRTY9A/fzg3VSsZqJpDx08PJKaXU0Kjn4rqp4Dgq3PhwT/JKIgYAmJnTtsS4Jfjpr4de5VRhfeOsEs7N+fGhrSEmaqGVgJR1psZCvmsoH0tl4/O6ZWpPU3/UXAUGXOIWdgrPP9bjiOjuHkZsly2TG6Zukpz3/nzX1cvLfKih6lYASF6WlGi4v3Nds+4hDf1pydSfOpW2PbMY4RzXbVfh8jTniqabBj1//7FmuFP+1o8x6uHU0fr0fcn6cIMVCO9zrEfRyQ3GGuzz2LjTkmkcbF6XWARGUHPKpZYjhAxru94el6fnWGESnHfDQF1r8vLyGqsxR2EBSipKmBphIa0krfMwdFOlqaM4b4kFBiLMLMJca9FkGodjXUISVMzjZH1bW0cphCMzMbMAUks1xrt2aA0RSQnzqWnOCpMr6xKz/KODKW205JSrCLiklKGt1Upqzvy5mHXTd943XhMItazLMJ48vFqX9WD+hKWP5VM3kPdF8LlFkO3Pp5YEJWsRSA7zqW87SNiWWOSt1UAEREqBILUyWe90BZR23hKXnIpoY3X5oBp7/jYgbMzeCCB1X+dT3yIey3rUX7DaWAtSnHLbDEOiCtONg5cjRjp62/c7itFKEUCmO9/5LVxYjZ2ASEpYtklJXueQ5Q0rIszk+pEzCHvo3DnRmsmOj5PNYd146N14zy7prjGKAO2HniQlMJEyxig+QjiyhPlNLAwArimJP9cu1Zz3uTkNaLYEN0x9XV6XUC/d1D3aLVF7bjWBSGujrG+pc5aars2JSy45Le9ir2pz3MZu1Ke8L6/7i6Z+8FOB8YbX55f1qNarvrdTgR0aYmbOqfj2bNA7ZZph21lrjbxd3sVCAyBSRmttrJZ9C6kKaeO9t5QuT0+XWFiqgIz13jvKy+ucyFpNRFpr4nzsR/XTw8CX78/hDWsASAk/cPRG8hr2g0uOp9Zq4RSWyxKySOASh8ZpUoQ8LynhRe2uHklCY1JMrJuhU8e87G/UK7buKGtrKe9rOLjkfW6cQk17iKmwUOYaZ281EUmJ654r8uKQEytnOG7Z9mMj2xI+asYAEJSYg9VUSypVmNNmtAKXUgqLQFg4Ra2JCMI1F66cVgOuTFpLKcoPoz3WJb6LfctbVM6KIMIiAqlZ0ccO1xQs9H6tXl0SQUSICKLa7tQizlv6FQsRUP2oVhFUwi/l+veh6zqrXG9zZZrrFfYR2U894R//3bCPdkHK9qcWcV6Pn93oNwafG0bKd51Jy7KXn1PRl0a7f8EaSylcPov9D7Agyeu+voT8KXB/jCXUNBfE5bPYr70d/q8p5ZyRchT+NHD+OZZIKQLzLy+KP8eCQG/30k/7HysbpOIIsiZQAAAAAElFTkSuQmCC"
+ id="image3280" /></mask><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3290"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3292"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3306"><path
+ d="m 0,20 1024,0 0,768 L 0,788 0,20 z"
+ id="path3308"
+ inkscape:connector-curvature="0" /></clipPath><clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3326"><path
+ d="M 2,3 159,3 159,18 2,18 2,3 z"
+ id="path3328"
+ inkscape:connector-curvature="0" /></clipPath><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4271"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4277"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4279"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4285"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4287"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /><linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4265"
+ id="linearGradient4327"
+ gradientUnits="userSpaceOnUse"
+ x1="483.9541"
+ y1="343.97897"
+ x2="532.65112"
+ y2="428.16113" /></defs><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1630"
+ inkscape:window-height="766"
+ id="namedview3006"
+ showgrid="false"
+ inkscape:zoom="0.57969543"
+ inkscape:cx="289.31197"
+ inkscape:cy="119.16023"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="g3012"
+ units="pt"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" /><g
+ id="g3012"
+ inkscape:groupmode="layer"
+ inkscape:label="identity-state"
+ transform="matrix(1.25,0,0,-1.25,-45.355279,820.2111)"><g
+ id="g4281"
+ transform="matrix(0.7038814,0,0,-0.7038814,-247.06265,648.43097)"
+ style="fill:url(#linearGradient4287);fill-opacity:1"><path
+ d="m 430.2527,409.5 0,-51 c 0,-8.2843 6.7158,-15 15,-15 l 133,0 c 8.2843,0 15,6.7157 15,15 l 0,51 c 0,8.2843 -6.7157,15 -15,15 l -133,0 c -8.2842,0 -15,-6.7158 -15,-15 z"
+ style="fill:url(#linearGradient4285);fill-opacity:1;stroke:#000000;stroke-width:4.26208162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path4283"
+ inkscape:connector-curvature="0" /></g><g
+ style="fill:url(#linearGradient4279);fill-opacity:1"
+ transform="matrix(0.7038814,0,0,-0.7038814,275.54031,648.43097)"
+ id="g4273"><path
+ inkscape:connector-curvature="0"
+ id="path4275"
+ style="fill:url(#linearGradient4277);fill-opacity:1;stroke:#000000;stroke-width:4.26208162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 430.2527,409.5 0,-51 c 0,-8.2843 6.7158,-15 15,-15 l 133,0 c 8.2843,0 15,6.7157 15,15 l 0,51 c 0,8.2843 -6.7157,15 -15,15 l -133,0 c -8.2842,0 -15,-6.7158 -15,-15 z" /></g><g
+ id="g3028"
+ transform="matrix(0.7038814,0,0,-0.7038814,16.181591,648.43097)"><path
+ d="m 512,320.231 0,-1.5 L 512,183"
+ style="fill:none;stroke:#000000;stroke-width:4.26208162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3030"
+ inkscape:connector-curvature="0" /></g><path
+ d="m 371.92325,426.40496 4.64561,-9.29123 4.64562,9.29123 -4.64562,-2.3228 -4.64561,2.3228 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3032"
+ inkscape:connector-curvature="0" /><g
+ id="g3060"
+ transform="matrix(0.7038814,0,0,-0.7038814,16.181591,648.43097)"
+ style="fill:url(#linearGradient4271);fill-opacity:1"><path
+ d="m 430.2527,409.5 0,-51 c 0,-8.2843 6.7158,-15 15,-15 l 133,0 c 8.2843,0 15,6.7157 15,15 l 0,51 c 0,8.2843 -6.7157,15 -15,15 l -133,0 c -8.2842,0 -15,-6.7158 -15,-15 z"
+ style="fill:url(#linearGradient4327);fill-opacity:1;stroke:#000000;stroke-width:4.26208162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3062"
+ inkscape:connector-curvature="0" /></g><g
+ id="g3064"
+ transform="matrix(0.7038814,0,0,-0.7038814,335.66744,398.55308)"><text
+ transform="translate(4.5,43)"
+ id="text3066"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 32.793598 55.557598 73.953598 85.621201"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3068">Nov 8</tspan></text>
+
+</g><g
+ id="g3070"
+ transform="matrix(0.7038814,0,0,-0.7038814,212.41394,616.05243)"><text
+ transform="translate(4.5,43)"
+ id="text3072"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#0061ff;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 10.5 31.9116 52.029598 73.029602 87.015602 96.222 110.208"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3074">Identity</tspan></text>
+
+</g><g
+ id="g3076"
+ transform="matrix(0.7038814,0,0,-0.7038814,380.56466,489.35378)"><text
+ transform="translate(4.5,43)"
+ id="text3078"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#0061ff;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 19.236 33.222 51.147598 65.133598"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3080">State</tspan></text>
+
+</g><g
+ id="g3082"
+ transform="matrix(0.7038814,0,0,-0.7038814,85.78508,349.28138)"><text
+ transform="translate(4.5,43)"
+ id="text3084"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#0061ff;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 21.4116 39.3372 55.498798"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3086">Past</tspan></text>
+
+</g><g
+ id="g3118"
+ transform="matrix(0.7038814,0,0,-0.7038814,597.52646,399.25696)"><text
+ transform="translate(4.5,43)"
+ id="text3120"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 32.793598 55.557598 73.953598 85.621201"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3122">Nov 9</tspan></text>
+
+</g><g
+ id="g3154"
+ transform="matrix(0.7038814,0,0,-0.7038814,72.430929,399.96084)"><text
+ transform="translate(4.5,43)"
+ id="text3156"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 32.793598 55.557598 73.953598 85.621201"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3158">Nov 7</tspan></text>
+
+</g><path
+ d="m 275.60017,356.92786 0,-13.98141 30.58056,35.19407 -30.58056,35.19406 0,-13.9814 -90.48704,0 0,-42.42532 90.48704,0 z"
+ style="fill:#b1dd8c;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3160"
+ inkscape:connector-curvature="0" /><g
+ id="g3162"
+ transform="matrix(0.7038814,0,0,-0.7038814,16.181591,648.43097)"><path
+ d="m 368.5544,414.1367 0,19.8633 43.4456,-50 -43.4456,-50 0,19.8633 -128.5544,0 0,60.2734 128.5544,0 z"
+ style="fill:none;stroke:#000000;stroke-width:2.84138799;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3164"
+ inkscape:connector-curvature="0" /></g><image
+ width="1"
+ height="1"
+ transform="matrix(95.023988,0,0,-24.635849,189.33642,389.40262)"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAYAAAC+ahnyAAAABHNCSVQICAgIfAhkiAAAAG9JREFUeJzt0jEBwCAQwMAH/55bA2SG4U5BhqyZ+QYO9u0A3mUOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QO0g8UtQFFgnmy2QAAAABJRU5ErkJggg=="
+ mask="url(#mask3174)"
+ id="image3178" /><g
+ id="g3190"
+ transform="matrix(0.7038814,0,0,-0.7038814,185.11313,413.33458)"><text
+ transform="translate(9.260719,64)"
+ id="text3192"><tspan
+ style="font-size:40px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 10 30 50 67.519997 80.839996 89.608002 111.68"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3194">function</tspan></text>
+
+</g><g
+ id="g3206"
+ transform="matrix(0.7038814,0,0,-0.7038814,328.31653,347.87362)"><text
+ transform="translate(4.5,43)"
+ id="text3208"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#0061ff;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 21.4116 37.203602 57.321602 73.4832 93.601196 114.6012"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3210">Present</tspan></text>
+
+</g><g
+ id="g3212"
+ transform="matrix(0.7038814,0,0,-0.7038814,596.52491,347.16974)"><text
+ transform="translate(4.5,43)"
+ id="text3214"><tspan
+ style="font-size:42px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#0061ff;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 19.7064 40.706402 54.692402 75.692398 91.484398"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3216">Future</tspan></text>
+
+</g><path
+ d="m 537.44406,358.33562 0,-13.98141 30.58055,35.19407 -30.58055,35.19407 0,-13.9814 -90.48705,0 0,-42.42533 90.48705,0 z"
+ style="fill:#b1dd8c;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3218"
+ inkscape:connector-curvature="0" /><g
+ id="g3220"
+ transform="matrix(0.7038814,0,0,-0.7038814,16.181591,648.43097)"><path
+ d="m 740.5544,412.1367 0,19.8633 43.4456,-50 -43.4456,-50 0,19.8633 -128.5544,0 0,60.2734 128.5544,0 z"
+ style="fill:none;stroke:#000000;stroke-width:2.84138799;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3222"
+ inkscape:connector-curvature="0" /></g><image
+ width="1"
+ height="1"
+ transform="matrix(95.023988,0,0,-24.635849,451.18029,390.81038)"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAjCAYAAAC+ahnyAAAABHNCSVQICAgIfAhkiAAAAG9JREFUeJzt0jEBwCAQwMAH/55bA2SG4U5BhqyZ+QYO9u0A3mUOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QOkjlI5iCZg2QO0g8UtQFFgnmy2QAAAABJRU5ErkJggg=="
+ mask="url(#mask3232)"
+ id="image3236" /><g
+ id="g3248"
+ transform="matrix(0.7038814,0,0,-0.7038814,446.95701,414.74235)"><text
+ transform="translate(9.260719,64)"
+ id="text3250"><tspan
+ style="font-size:40px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 10 30 50 67.519997 80.839996 89.608002 111.68"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3252">function</tspan></text>
+
+</g><path
+ d="m 415.39081,621.08828 c 21.44107,-21.44086 21.44107,-56.20324 0,-77.64418 -21.44079,-21.44092 -56.2033,-21.44092 -77.64403,0 -21.44086,21.44094 -21.44086,56.20332 0,77.64418 21.44073,21.44079 56.20324,21.44079 77.64403,0"
+ style="fill:#d4e3fe;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3264"
+ inkscape:connector-curvature="0" /><g
+ id="g3266"
+ transform="matrix(0.7038814,0,0,-0.7038814,16.181591,648.43097)"><path
+ d="m 567.1541,38.84564 c 30.4612,30.46082 30.4612,79.84756 0,110.30856 -30.4608,30.461 -79.8477,30.461 -110.3084,0 -30.4609,-30.461 -30.4609,-79.84774 0,-110.30856 30.4607,-30.460874 79.8476,-30.460874 110.3084,0"
+ style="fill:none;stroke:#000000;stroke-width:2.84138799;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3268"
+ inkscape:connector-curvature="0" /></g><image
+ width="1"
+ height="1"
+ transform="matrix(60.533801,0,0,-28.155256,346.30197,592.82435)"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAoCAYAAABkfg1GAAAABHNCSVQICAgIfAhkiAAAAHVJREFUaIHt0IEJACEQwLDT/Xf+X8IiSDJB6ZqZbzhu3w54lbERYyPGRoyNGBsxNmJsxNiIsRFjI8ZGjI0YGzE2YmzE2IixEWMjxkaMjRgbMTZibMTYiLERYyPGRoyNGBsxNmJsxNiIsRFjI8ZGjI0YGzE28gNT5gFPZ1Ar0AAAAABJRU5ErkJggg=="
+ mask="url(#mask3278)"
+ id="image3282" /><g
+ id="g3294"
+ transform="matrix(0.7038814,0,0,-0.7038814,321.66612,637.16887)"><text
+ transform="translate(38.0537,90)"
+ id="text3296"><tspan
+ style="font-size:36px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Gill Sans;-inkscape-font-specification:GillSans"
+ x="0 11.988 31.8528 50.205601 64.126801"
+ y="0"
+ sodipodi:role="line"
+ id="tspan3298">today</tspan></text>
+
+</g></g></svg>
\ No newline at end of file
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/john-mccarthy.jpg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/john-mccarthy.jpg
new file mode 100644
index 0000000..7452849
Binary files /dev/null and b/md/TechWorks/decks/oscon2012-clojure/slide-assets/john-mccarthy.jpg differ
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/macro-evaluation.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/macro-evaluation.svg
new file mode 100644
index 0000000..feca3ba
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/macro-evaluation.svg
@@ -0,0 +1,515 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="925.33472"
+ height="565.10864"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="clojure-interactive-evaluation.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3893">
+ <stop
+ id="stop3895"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3897"
+ offset="1"
+ style="stop-color:#d991fe;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#90b4fe;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3909"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-79.002155,81.288185)"
+ x1="220.17732"
+ y1="551.9975"
+ x2="185.32698"
+ y2="406.91125" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3867"
+ id="linearGradient3933"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient4062"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4064"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3893"
+ id="linearGradient3891"
+ x1="379.16345"
+ y1="174.5844"
+ x2="585.66119"
+ y2="174.5844"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.82709332"
+ inkscape:cx="533.40308"
+ inkscape:cy="185.83005"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1538"
+ inkscape:window-height="849"
+ inkscape:window-x="23"
+ inkscape:window-y="91"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-25.016282,-306.06307)">
+ <g
+ id="g3903"
+ transform="translate(-1.4658473,-155.21641)">
+ <rect
+ y="485.02948"
+ x="64.864838"
+ height="164.83743"
+ width="127.52402"
+ id="rect2987"
+ style="fill:url(#linearGradient3909);fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3771"
+ y="556.96301"
+ x="127.95782"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ y="556.96301"
+ x="127.95782"
+ id="tspan3773"
+ sodipodi:role="line">Source</tspan><tspan
+ id="tspan3775"
+ y="586.96301"
+ x="127.95782"
+ sodipodi:role="line">Code</tspan></text>
+ </g>
+ <g
+ id="g3065">
+ <path
+ transform="matrix(0.7628205,0,0,0.65048544,139.88109,274.27792)"
+ d="m 358.44828,451.05295 c 0,34.67763 -42.57706,62.78941 -95.09852,62.78941 -52.52146,0 -95.09852,-28.11178 -95.09852,-62.78941 0,-34.67764 42.57706,-62.78941 95.09852,-62.78941 52.52146,0 95.09852,28.11177 95.09852,62.78941 z"
+ sodipodi:ry="62.78941"
+ sodipodi:rx="95.098518"
+ sodipodi:cy="451.05295"
+ sodipodi:cx="263.34976"
+ id="path3777"
+ style="fill:url(#linearGradient4062);fill-opacity:1;stroke:#000000;stroke-width:3.54903293;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ sodipodi:type="arc" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ x="339.60367"
+ y="576.62854"
+ id="text3797"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="339.60367"
+ y="576.62854"
+ id="tspan3999">Reader</tspan></text>
+ </g>
+ <g
+ id="g3252"
+ transform="translate(0,-393.15137)">
+ <path
+ inkscape:transform-center-x="-1.1598852"
+ sodipodi:type="star"
+ style="fill:#ffa7d8;fill-opacity:1;stroke:#000000;stroke-width:4.41909409;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3904"
+ sodipodi:sides="8"
+ sodipodi:cx="665.68964"
+ sodipodi:cy="90.775864"
+ sodipodi:r1="101.04758"
+ sodipodi:r2="70.720428"
+ sodipodi:arg1="0.84515599"
+ sodipodi:arg2="1.2357786"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 732.74628,166.36699 -43.80476,-8.80244 -29.28667,34.07852 -24.75039,-37.19891 -44.80595,3.38835 8.80244,-43.80477 -34.07852,-29.286667 37.19891,-24.750382 -3.38835,-44.805957 43.80477,8.80244 29.28667,-34.078521 24.75038,37.198913 44.80596,-3.38835 -8.80244,43.804767 34.07852,29.286671 -37.19892,24.750386 z"
+ transform="matrix(0.53156998,0.19407428,-0.19402176,0.53124187,521.7111,779.3226)"
+ inkscape:transform-center-y="-4.4649423" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ x="857.77246"
+ y="964.20227"
+ id="text3908"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="857.77246"
+ y="964.20227"
+ id="tspan3910">Effect</tspan></text>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 200.83767,430.40428 82.13796,100.98885"
+ id="path3831"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.50000048;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 584.88944,756.83277 191.5247,0.67026"
+ id="path3812"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3814"
+ d="m 856.77364,712.85351 0.0566,-95.37748"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <g
+ id="g3928"
+ transform="translate(165.56618,-155.21641)">
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#linearGradient3933);fill-opacity:1;stroke:#000000;stroke-width:3.54903293;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3859"
+ sodipodi:cx="263.34976"
+ sodipodi:cy="451.05295"
+ sodipodi:rx="95.098518"
+ sodipodi:ry="62.78941"
+ d="m 358.44828,451.05295 c 0,34.67763 -42.57706,62.78941 -95.09852,62.78941 -52.52146,0 -95.09852,-28.11178 -95.09852,-62.78941 0,-34.67764 42.57706,-62.78941 95.09852,-62.78941 52.52146,0 95.09852,28.11177 95.09852,62.78941 z"
+ transform="matrix(0.7628205,0,0,0.65048544,136.47008,620.61429)" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3861"
+ y="920.63873"
+ x="336.69656"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ y="920.63873"
+ x="336.69656"
+ sodipodi:role="line"
+ id="tspan4001">Compiler</tspan></text>
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3956"
+ d="m 361.77363,621.82054 82.13796,100.98885"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ x="300.53568"
+ y="466.39804"
+ id="text3958"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3960"
+ x="300.53568"
+ y="466.39804"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica">characters</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3962"
+ y="671.15448"
+ x="292.00952"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ y="671.15448"
+ x="292.00952"
+ sodipodi:role="line"
+ id="tspan3966">data structures</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ x="662.64154"
+ y="746.81671"
+ id="text3968"
+ sodipodi:linespacing="125%"><tspan
+ id="tspan3972"
+ sodipodi:role="line"
+ x="662.64154"
+ y="746.81671"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica">bytecode</tspan></text>
+ <g
+ id="g4039"
+ transform="translate(2.4383967,4.9937357e-6)">
+ <rect
+ rx="25.603449"
+ ry="25.603447"
+ y="720.73639"
+ x="783.95325"
+ height="80.467979"
+ width="140.20937"
+ id="rect4025"
+ style="fill:url(#linearGradient4064);fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica Bold"
+ x="858.29517"
+ y="767.3161"
+ id="text4035"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4037"
+ x="858.29517"
+ y="767.3161">JVM</tspan></text>
+ <path
+ sodipodi:type="star"
+ style="fill:url(#linearGradient3891);fill-opacity:1;stroke:#000000;stroke-width:4.68423653;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3097"
+ sodipodi:sides="6"
+ sodipodi:cx="482.41232"
+ sodipodi:cy="174.5844"
+ sodipodi:r1="112.02518"
+ sodipodi:r2="78.403343"
+ sodipodi:arg1="0.60895762"
+ sodipodi:arg2="1.1325564"
+ inkscape:flatsided="true"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 574.30038,238.66423 -101.43879,47.53748 -91.88806,-64.07984 9.55073,-111.6173 101.43879,-47.537483 91.88806,64.079833 z"
+ transform="matrix(0.06925409,0.36431843,-0.7756628,0.03252772,721.27564,412.86796)" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ x="621.31311"
+ y="603.22772"
+ id="text3074"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="621.31311"
+ y="603.22772"
+ id="tspan3076">Macros</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="M 498.96521,706.74046 C 468.81148,677.35571 455.67531,452.24961 544.90925,562.8631"
+ id="path3901"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 565.837,334.17944 c 0.80603,28.21124 -14.10563,43.1229 -44.73498,70.1251"
+ id="path4461"
+ inkscape:connector-curvature="0"
+ transform="translate(25.016282,306.06307)"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/org-html-slideshow.js b/md/TechWorks/decks/oscon2012-clojure/slide-assets/org-html-slideshow.js
new file mode 100644
index 0000000..af155eb
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/org-html-slideshow.js
@@ -0,0 +1,193 @@
+function b(a){throw a;}var g=void 0,i=!0,k=null,m=!1;function ba(){return function(a){return a}}function n(a){return function(){return this[a]}}function ca(a){return function(){return a}}var o,p=this;function da(a){for(var a=a.split("."),c=p,d;d=a.shift();)if(c[d]!=k)c=c[d];else return k;return c}function ea(){}
+function s(a){var c=typeof a;if("object"==c)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return c;var d=Object.prototype.toString.call(a);if("[object Window]"==d)return"object";if("[object Array]"==d||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==d||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
+else if("function"==c&&"undefined"==typeof a.call)return"object";return c}function t(a){return a!==g}function v(a){return"array"==s(a)}function fa(a){var c=s(a);return"array"==c||"object"==c&&"number"==typeof a.length}function x(a){return"string"==typeof a}function ga(a){return"function"==s(a)}function ha(a){a=s(a);return"object"==a||"array"==a||"function"==a}function ia(a){return a[ja]||(a[ja]=++ka)}var ja="closure_uid_"+Math.floor(2147483648*Math.random()).toString(36),ka=0;
+function la(a,c,d){return a.call.apply(a.bind,arguments)}function ma(a,c,d){var e=c||p;if(2<arguments.length){var f=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,f);return a.apply(e,c)}}return function(){return a.apply(e,arguments)}}function na(a,c,d){na=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?la:ma;return na.apply(k,arguments)}
+function oa(a,c){var d=Array.prototype.slice.call(arguments,1);return function(){var c=Array.prototype.slice.call(arguments);c.unshift.apply(c,d);return a.apply(this,c)}}var pa=Date.now||function(){return+new Date};function qa(a,c){function d(){}d.prototype=c.prototype;a.la=c.prototype;a.prototype=new d};function ra(a,c){for(var d=1;d<arguments.length;d++)var e=(""+arguments[d]).replace(/\$/g,"$$$$"),a=a.replace(/\%s/,e);return a}var sa=/(\.\d+)|(\d+)|(\D+)/g;function ta(a,c){if(a==c)return 0;if(!a)return-1;if(!c)return 1;for(var d=a.toLowerCase().match(sa),e=c.toLowerCase().match(sa),f=Math.min(d.length,e.length),h=0;h<f;h++){var j=d[h],l=e[h];if(j!=l){d=parseInt(j,10);return!isNaN(d)&&(e=parseInt(l,10),!isNaN(e)&&d-e)?d-e:j<l?-1:1}}return d.length!=e.length?d.length-e.length:a<c?-1:1}var ua=/^[a-zA-Z0-9\-_.!~*'()]*$/;
+function va(a){a=""+a;return!ua.test(a)?encodeURIComponent(a):a}function wa(a){if(!xa.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(ya,"&"));-1!=a.indexOf("<")&&(a=a.replace(za,"<"));-1!=a.indexOf(">")&&(a=a.replace(Aa,">"));-1!=a.indexOf('"')&&(a=a.replace(Ba,"""));return a}var ya=/&/g,za=/</g,Aa=/>/g,Ba=/\"/g,xa=/[&<>\"]/,Ca={"\x00":"\\0","\u0008":"\\b","\u000c":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\u000b":"\\x0B",'"':'\\"',"\\":"\\\\"},Da={"'":"\\'"};
+function Ea(a){var q;a=""+a;if(a.quote)return a.quote();for(var c=['"'],d=0;d<a.length;d++){var e=a.charAt(d),f=e.charCodeAt(0),h=c,j=d+1,l;if(!(l=Ca[e])){if(!(31<f&&127>f))if(e in Da)e=Da[e];else if(e in Ca)q=Da[e]=Ca[e],e=q;else{f=e;l=e.charCodeAt(0);if(31<l&&127>l)f=e;else{if(256>l){if(f="\\x",16>l||256<l)f+="0"}else f="\\u",4096>l&&(f+="0");f+=l.toString(16).toUpperCase()}e=Da[e]=f}l=e}h[j]=l}c.push('"');return c.join("")}
+function Fa(a,c){for(var d=0,e=(""+a).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split("."),f=(""+c).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split("."),h=Math.max(e.length,f.length),j=0;0==d&&j<h;j++){var l=e[j]||"",q=f[j]||"",r=RegExp("(\\d*)(\\D*)","g"),w=RegExp("(\\d*)(\\D*)","g");do{var u=r.exec(l)||["","",""],H=w.exec(q)||["","",""];if(0==u[0].length&&0==H[0].length)break;d=((0==u[1].length?0:parseInt(u[1],10))<(0==H[1].length?0:parseInt(H[1],10))?-1:(0==u[1].length?0:parseInt(u[1],10))>(0==H[1].length?
+0:parseInt(H[1],10))?1:0)||((0==u[2].length)<(0==H[2].length)?-1:(0==u[2].length)>(0==H[2].length)?1:0)||(u[2]<H[2]?-1:u[2]>H[2]?1:0)}while(0==d)}return d}function Ga(a){for(var c=0,d=0;d<a.length;++d)c=31*c+a.charCodeAt(d),c%=4294967296;return c}var Ha={};function Ia(a){return Ha[a]||(Ha[a]=(""+a).replace(/\-([a-z])/g,function(a,d){return d.toUpperCase()}))};var Ja,Ka,La,Ma,Na,Oa=(Na="ScriptEngine"in p&&"JScript"==p.ScriptEngine())?p.ScriptEngineMajorVersion()+"."+p.ScriptEngineMinorVersion()+"."+p.ScriptEngineBuildVersion():"0";function Pa(a,c){this.n=Na?[]:"";a!=k&&this.append.apply(this,arguments)}Pa.prototype.set=function(a){this.clear();this.append(a)};Na?(Pa.prototype.Aa=0,Pa.prototype.append=function(a,c,d){c==k?this.n[this.Aa++]=a:(this.n.push.apply(this.n,arguments),this.Aa=this.n.length);return this}):Pa.prototype.append=function(a,c,d){this.n+=a;if(c!=k)for(var e=1;e<arguments.length;e++)this.n+=arguments[e];return this};Pa.prototype.clear=function(){Na?this.Aa=this.n.length=0:this.n=""};
+Pa.prototype.toString=function(){if(Na){var a=this.n.join("");this.clear();a&&this.append(a);return a}return this.n};var Qa;function Ra(a,c){var d=Array.prototype.slice.call(arguments),e=d.shift();"undefined"==typeof e&&b(Error("[goog.string.format] Template required"));return e.replace(/%([0\-\ \+]*)(\d+)?(\.(\d+))?([%sfdiu])/g,function(a,c,e,l,q,r,w,u){if("%"==r)return"%";var H=d.shift();"undefined"==typeof H&&b(Error("[goog.string.format] Not enough arguments"));arguments[0]=H;return Sa[r].apply(k,arguments)})}
+var Sa={s:function(a,c,d){return isNaN(d)||a.length>=d?a:a=-1<c.indexOf("-",0)?a+Array(d-a.length+1).join(" "):Array(d-a.length+1).join(" ")+a},f:function(a,c,d,e,f){e=a.toString();isNaN(f)||""==f||(e=a.toFixed(f));var h;h=0>a?"-":0<=c.indexOf("+")?"+":0<=c.indexOf(" ")?" ":"";0<=a&&(e=h+e);if(isNaN(d)||e.length>=d)return e;e=isNaN(f)?Math.abs(a).toString():Math.abs(a).toFixed(f);a=d-e.length-h.length;return e=0<=c.indexOf("-",0)?h+e+Array(a+1).join(" "):h+Array(a+1).join(0<=c.indexOf("0",0)?"0":
+" ")+e}};Sa.d=function(a,c,d,e,f,h,j,l){return Sa.f(parseInt(a,10),c,d,e,0,h,j,l)};Sa.i=Sa.d;Sa.u=Sa.d;function Ta(){return p.navigator?p.navigator.userAgent:k}Ma=La=Ka=Ja=m;var Ua;if(Ua=Ta()){var Va=p.navigator;Ja=0==Ua.indexOf("Opera");Ka=!Ja&&-1!=Ua.indexOf("MSIE");La=!Ja&&-1!=Ua.indexOf("WebKit");Ma=!Ja&&!La&&"Gecko"==Va.product}var Wa=Ja,y=Ka,Xa=Ma,Ya=La,Za=p.navigator,$a=-1!=(Za&&Za.platform||"").indexOf("Mac"),ab;
+a:{var bb="",cb;if(Wa&&p.opera)var db=p.opera.version,bb="function"==typeof db?db():db;else if(Xa?cb=/rv\:([^\);]+)(\)|;)/:y?cb=/MSIE\s+([^\);]+)(\)|;)/:Ya&&(cb=/WebKit\/(\S+)/),cb)var eb=cb.exec(Ta()),bb=eb?eb[1]:"";if(y){var fb,gb=p.document;fb=gb?gb.documentMode:g;if(fb>parseFloat(bb)){ab=""+fb;break a}}ab=bb}var hb={};function ib(a){return hb[a]||(hb[a]=0<=Fa(ab,a))};function jb(){this.eb=pa()}var kb=new jb;jb.prototype.set=function(a){this.eb=a};jb.prototype.reset=function(){this.set(pa())};jb.prototype.get=n("eb");function lb(a){this.ub=a||"";this.Ab=kb}o=lb.prototype;o.gb=i;o.yb=i;o.xb=i;o.hb=m;o.zb=m;function mb(a){return 10>a?"0"+a:""+a}function nb(a,c){var d=(a.ib-c)/1E3,e=d.toFixed(3),f=0;if(1>d)f=2;else for(;100>d;)f++,d*=10;for(;0<f--;)e=" "+e;return e}function ob(a){lb.call(this,a)}qa(ob,lb);function pb(a){this.stack=Error().stack||"";if(a)this.message=""+a}qa(pb,Error);pb.prototype.name="CustomError";function qb(a,c){c.unshift(a);pb.call(this,ra.apply(k,c));c.shift();this.Eb=a}qa(qb,pb);qb.prototype.name="AssertionError";function rb(a,c){b(new qb("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1)))};var sb=RegExp("^(?:([^:/?#.]+):)?(?://(?:([^/?#]*)@)?([\\w\\d\\-\\u0100-\\uffff.%]*)(?::([0-9]+))?)?([^?#]+)?(?:\\?([^#]*))?(?:#(.*))?$");var tb=Array.prototype,ub=tb.indexOf?function(a,c,d){return tb.indexOf.call(a,c,d)}:function(a,c,d){d=d==k?0:0>d?Math.max(0,a.length+d):d;if(x(a))return!x(c)||1!=c.length?-1:a.indexOf(c,d);for(;d<a.length;d++)if(d in a&&a[d]===c)return d;return-1},vb=tb.forEach?function(a,c,d){tb.forEach.call(a,c,d)}:function(a,c,d){for(var e=a.length,f=x(a)?a.split(""):a,h=0;h<e;h++)h in f&&c.call(d,f[h],h,a)};function wb(a){return tb.concat.apply(tb,arguments)}
+function xb(a){if(v(a))return wb(a);for(var c=[],d=0,e=a.length;d<e;d++)c[d]=a[d];return c}function yb(a){return v(a)?wb(a):xb(a)}function zb(a,c){for(var d=1;d<arguments.length;d++){var e=arguments[d],f;if(v(e)||(f=fa(e))&&e.hasOwnProperty("callee"))a.push.apply(a,e);else if(f)for(var h=a.length,j=e.length,l=0;l<j;l++)a[h+l]=e[l];else a.push(e)}}function Ab(a,c,d,e){tb.splice.apply(a,Bb(arguments,1))}function Bb(a,c,d){return 2>=arguments.length?tb.slice.call(a,c):tb.slice.call(a,c,d)};function Db(a,c,d){for(var e in a)c.call(d,a[e],e,a)}function Eb(a){var c=[],d=0,e;for(e in a)c[d++]=a[e];return c}function Fb(a){var c=[],d=0,e;for(e in a)c[d++]=e;return c}function Gb(a){var c={},d;for(d in a)c[d]=a[d];return c}var Hb="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",");
+function Ib(a,c){for(var d,e,f=1;f<arguments.length;f++){e=arguments[f];for(d in e)a[d]=e[d];for(var h=0;h<Hb.length;h++)d=Hb[h],Object.prototype.hasOwnProperty.call(e,d)&&(a[d]=e[d])}};function Jb(a){if("function"==typeof a.Z)return a.Z();if(x(a))return a.split("");if(fa(a)){for(var c=[],d=a.length,e=0;e<d;e++)c.push(a[e]);return c}return Eb(a)}function Kb(a,c,d){if("function"==typeof a.forEach)a.forEach(c,d);else if(fa(a)||x(a))vb(a,c,d);else{var e;if("function"==typeof a.fa)e=a.fa();else if("function"!=typeof a.Z)if(fa(a)||x(a)){e=[];for(var f=a.length,h=0;h<f;h++)e.push(h)}else e=Fb(a);else e=g;for(var f=Jb(a),h=f.length,j=0;j<h;j++)c.call(d,f[j],e&&e[j],a)}};function Lb(a,c){this.H={};this.h=[];var d=arguments.length;if(1<d){d%2&&b(Error("Uneven number of arguments"));for(var e=0;e<d;e+=2)this.set(arguments[e],arguments[e+1])}else if(a){a instanceof Lb?(d=a.fa(),e=a.Z()):(d=Fb(a),e=Eb(a));for(var f=0;f<d.length;f++)this.set(d[f],e[f])}}o=Lb.prototype;o.e=0;o.Oa=0;o.Z=function(){Mb(this);for(var a=[],c=0;c<this.h.length;c++)a.push(this.H[this.h[c]]);return a};o.fa=function(){Mb(this);return this.h.concat()};o.V=function(a){return Nb(this.H,a)};
+o.clear=function(){this.H={};this.Oa=this.e=this.h.length=0};o.remove=function(a){return Nb(this.H,a)?(delete this.H[a],this.e--,this.Oa++,this.h.length>2*this.e&&Mb(this),i):m};function Mb(a){if(a.e!=a.h.length){for(var c=0,d=0;c<a.h.length;){var e=a.h[c];Nb(a.H,e)&&(a.h[d++]=e);c++}a.h.length=d}if(a.e!=a.h.length){for(var f={},d=c=0;c<a.h.length;)e=a.h[c],Nb(f,e)||(a.h[d++]=e,f[e]=1),c++;a.h.length=d}}o.get=function(a,c){return Nb(this.H,a)?this.H[a]:c};
+o.set=function(a,c){Nb(this.H,a)||(this.e++,this.h.push(a),this.Oa++);this.H[a]=c};o.da=function(){return new Lb(this)};function Nb(a,c){return Object.prototype.hasOwnProperty.call(a,c)};function Ob(a,c){var d;a instanceof Ob?(this.ka(c==k?a.G:c),Pb(this,a.Q),Qb(this,a.ta),Rb(this,a.W),Sb(this,a.ha),Tb(this,a.ga),Ub(this,a.M.da()),Vb(this,a.ea)):a&&(d=(""+a).match(sb))?(this.ka(!!c),Pb(this,d[1]||"",i),Qb(this,d[2]||"",i),Rb(this,d[3]||"",i),Sb(this,d[4]),Tb(this,d[5]||"",i),Ub(this,d[6]||"",i),Vb(this,d[7]||"",i)):(this.ka(!!c),this.M=new Wb(k,this,this.G))}o=Ob.prototype;o.Q="";o.ta="";o.W="";o.ha=k;o.ga="";o.ea="";o.qb=m;o.G=m;
+o.toString=function(){if(this.A)return this.A;var a=[];this.Q&&a.push(Xb(this.Q,Yb),":");this.W&&(a.push("//"),this.ta&&a.push(Xb(this.ta,Yb),"@"),a.push(x(this.W)?encodeURIComponent(this.W):k),this.ha!=k&&a.push(":",""+this.ha));this.ga&&(this.W&&"/"!=this.ga.charAt(0)&&a.push("/"),a.push(Xb(this.ga,Zb)));var c=""+this.M;c&&a.push("?",c);this.ea&&a.push("#",Xb(this.ea,$b));return this.A=a.join("")};
+o.da=function(){var a=this.Q,c=this.ta,d=this.W,e=this.ha,f=this.ga,h=this.M.da(),j=this.ea,l=new Ob(k,this.G);a&&Pb(l,a);c&&Qb(l,c);d&&Rb(l,d);e&&Sb(l,e);f&&Tb(l,f);h&&Ub(l,h);j&&Vb(l,j);return l};function Pb(a,c,d){ac(a);delete a.A;a.Q=d?c?decodeURIComponent(c):"":c;if(a.Q)a.Q=a.Q.replace(/:$/,"")}function Qb(a,c,d){ac(a);delete a.A;a.ta=d?c?decodeURIComponent(c):"":c}function Rb(a,c,d){ac(a);delete a.A;a.W=d?c?decodeURIComponent(c):"":c}
+function Sb(a,c){ac(a);delete a.A;c?(c=Number(c),(isNaN(c)||0>c)&&b(Error("Bad port number "+c)),a.ha=c):a.ha=k}function Tb(a,c,d){ac(a);delete a.A;a.ga=d?c?decodeURIComponent(c):"":c}function Ub(a,c,d){ac(a);delete a.A;c instanceof Wb?(a.M=c,a.M.Na=a,a.M.ka(a.G)):(d||(c=Xb(c,bc)),a.M=new Wb(c,a,a.G))}function Vb(a,c,d){ac(a);delete a.A;a.ea=d?c?decodeURIComponent(c):"":c}function ac(a){a.qb&&b(Error("Tried to modify a read-only Uri"))}o.ka=function(a){this.G=a;this.M&&this.M.ka(a);return this};
+function cc(a,c){return a instanceof Ob?a.da():new Ob(a,c)}var dc=/^[a-zA-Z0-9\-_.!~*'():\/;?]*$/;function Xb(a,c){var d=k;x(a)&&(d=a,dc.test(d)||(d=encodeURI(a)),0<=d.search(c)&&(d=d.replace(c,ec)));return d}function ec(a){a=a.charCodeAt(0);return"%"+(a>>4&15).toString(16)+(a&15).toString(16)}var Yb=/[#\/\?@]/g,Zb=/[\#\?]/g,bc=/[\#\?@]/g,$b=/#/g;function Wb(a,c,d){this.K=a||k;this.Na=c||k;this.G=!!d}
+function fc(a){if(!a.g&&(a.g=new Lb,a.K))for(var c=a.K.split("&"),d=0;d<c.length;d++){var e=c[d].indexOf("="),f=k,h=k;0<=e?(f=c[d].substring(0,e),h=c[d].substring(e+1)):f=c[d];f=decodeURIComponent(f.replace(/\+/g," "));f=gc(a,f);a.add(f,h?decodeURIComponent(h.replace(/\+/g," ")):"")}}o=Wb.prototype;o.g=k;o.e=k;o.add=function(a,c){fc(this);hc(this);a=gc(this,a);if(this.V(a)){var d=this.g.get(a);v(d)?d.push(c):this.g.set(a,[d,c])}else this.g.set(a,c);this.e++;return this};
+o.remove=function(a){fc(this);a=gc(this,a);if(this.g.V(a)){hc(this);var c=this.g.get(a);v(c)?this.e-=c.length:this.e--;return this.g.remove(a)}return m};o.clear=function(){hc(this);this.g&&this.g.clear();this.e=0};o.V=function(a){fc(this);a=gc(this,a);return this.g.V(a)};o.fa=function(){fc(this);for(var a=this.g.Z(),c=this.g.fa(),d=[],e=0;e<c.length;e++){var f=a[e];if(v(f))for(var h=0;h<f.length;h++)d.push(c[e]);else d.push(c[e])}return d};
+o.Z=function(a){fc(this);if(a)if(a=gc(this,a),this.V(a)){var c=this.g.get(a);if(v(c))return c;a=[];a.push(c)}else a=[];else for(var c=this.g.Z(),a=[],d=0;d<c.length;d++){var e=c[d];v(e)?zb(a,e):a.push(e)}return a};o.set=function(a,c){fc(this);hc(this);a=gc(this,a);if(this.V(a)){var d=this.g.get(a);v(d)?this.e-=d.length:this.e--}this.g.set(a,c);this.e++;return this};o.get=function(a,c){fc(this);a=gc(this,a);if(this.V(a)){var d=this.g.get(a);return v(d)?d[0]:d}return c};
+o.toString=function(){if(this.K)return this.K;if(!this.g)return"";for(var a=[],c=0,d=this.g.fa(),e=0;e<d.length;e++){var f=d[e],h=va(f),f=this.g.get(f);if(v(f))for(var j=0;j<f.length;j++)0<c&&a.push("&"),a.push(h),""!==f[j]&&a.push("=",va(f[j])),c++;else 0<c&&a.push("&"),a.push(h),""!==f&&a.push("=",va(f)),c++}return this.K=a.join("")};function hc(a){delete a.Ea;delete a.K;a.Na&&delete a.Na.A}o.da=function(){var a=new Wb;if(this.Ea)a.Ea=this.Ea;if(this.K)a.K=this.K;if(this.g)a.g=this.g.da();return a};
+function gc(a,c){var d=""+c;a.G&&(d=d.toLowerCase());return d}o.ka=function(a){a&&!this.G&&(fc(this),hc(this),Kb(this.g,function(a,d){var e=d.toLowerCase();d!=e&&(this.remove(d),this.add(e,a))},this));this.G=a};!y||ib("9");var ic=y&&!ib("8");function jc(){}jc.prototype.Wa=m;jc.prototype.ma=function(){if(!this.Wa)this.Wa=i,this.D()};jc.prototype.D=function(){};function kc(a,c){this.type=a;this.currentTarget=this.target=c}qa(kc,jc);o=kc.prototype;o.D=function(){delete this.type;delete this.target;delete this.currentTarget};o.aa=m;o.sa=i;o.stopPropagation=function(){this.aa=i};o.preventDefault=function(){this.sa=m};var lc=new Function("a","return a");function mc(a,c){a&&this.qa(a,c)}qa(mc,kc);o=mc.prototype;o.target=k;o.relatedTarget=k;o.offsetX=0;o.offsetY=0;o.clientX=0;o.clientY=0;o.screenX=0;o.screenY=0;o.button=0;o.keyCode=0;o.charCode=0;o.ctrlKey=m;o.altKey=m;o.shiftKey=m;o.metaKey=m;o.tb=m;o.X=k;
+o.qa=function(a,c){var d=this.type=a.type;kc.call(this,d);this.target=a.target||a.srcElement;this.currentTarget=c;var e=a.relatedTarget;if(e){if(Xa)try{lc(e.nodeName)}catch(f){e=k}}else if("mouseover"==d)e=a.fromElement;else if("mouseout"==d)e=a.toElement;this.relatedTarget=e;this.offsetX=a.offsetX!==g?a.offsetX:a.layerX;this.offsetY=a.offsetY!==g?a.offsetY:a.layerY;this.clientX=a.clientX!==g?a.clientX:a.pageX;this.clientY=a.clientY!==g?a.clientY:a.pageY;this.screenX=a.screenX||0;this.screenY=a.screenY||
+0;this.button=a.button;this.keyCode=a.keyCode||0;this.charCode=a.charCode||("keypress"==d?a.keyCode:0);this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=a.shiftKey;this.metaKey=a.metaKey;this.tb=$a?a.metaKey:a.ctrlKey;this.state=a.state;this.X=a;delete this.sa;delete this.aa};o.stopPropagation=function(){mc.la.stopPropagation.call(this);this.X.stopPropagation?this.X.stopPropagation():this.X.cancelBubble=i};
+o.preventDefault=function(){mc.la.preventDefault.call(this);var a=this.X;if(a.preventDefault)a.preventDefault();else if(a.returnValue=m,ic)try{if(a.ctrlKey||112<=a.keyCode&&123>=a.keyCode)a.keyCode=-1}catch(c){}};o.D=function(){mc.la.D.call(this);this.relatedTarget=this.currentTarget=this.target=this.X=k};function nc(){}var oc=0;o=nc.prototype;o.key=0;o.ia=m;o.Qa=m;o.qa=function(a,c,d,e,f,h){ga(a)?this.Ya=i:a&&a.handleEvent&&ga(a.handleEvent)?this.Ya=m:b(Error("Invalid listener argument"));this.ra=a;this.cb=c;this.src=d;this.type=e;this.capture=!!f;this.Ja=h;this.Qa=m;this.key=++oc;this.ia=m};o.handleEvent=function(a){return this.Ya?this.ra.call(this.Ja||this.src,a):this.ra.handleEvent.call(this.ra,a)};function pc(a,c){this.$a=c;this.Y=[];a>this.$a&&b(Error("[goog.structs.SimplePool] Initial cannot be greater than max"));for(var d=0;d<a;d++)this.Y.push(this.J?this.J():{})}qa(pc,jc);pc.prototype.J=k;pc.prototype.Va=k;function qc(a){return a.Y.length?a.Y.pop():a.J?a.J():{}}function rc(a,c){a.Y.length<a.$a?a.Y.push(c):sc(a,c)}function sc(a,c){if(a.Va)a.Va(c);else if(ha(c))if(ga(c.ma))c.ma();else for(var d in c)delete c[d]}
+pc.prototype.D=function(){pc.la.D.call(this);for(var a=this.Y;a.length;)sc(this,a.pop());delete this.Y};var tc,uc,vc,wc,xc,yc,zc,Ac,Bc,Cc,Dc;
+(function(){function a(){return{e:0,z:0}}function c(){return[]}function d(){function a(c){return j.call(a.src,a.key,c)}return a}function e(){return new nc}function f(){return new mc}var h=Na&&!(0<=Fa(Oa,"5.7")),j;yc=function(a){j=a};if(h){tc=function(){return qc(l)};uc=function(a){rc(l,a)};vc=function(){return qc(q)};wc=function(a){rc(q,a)};xc=function(){return qc(r)};zc=function(){rc(r,d())};Ac=function(){return qc(w)};Bc=function(a){rc(w,a)};Cc=function(){return qc(u)};Dc=function(a){rc(u,a)};var l=
+new pc(0,600);l.J=a;var q=new pc(0,600);q.J=c;var r=new pc(0,600);r.J=d;var w=new pc(0,600);w.J=e;var u=new pc(0,600);u.J=f}else tc=a,uc=ea,vc=c,wc=ea,xc=d,zc=ea,Ac=e,Bc=ea,Cc=f,Dc=ea})();var Ec={},z={},Fc={},Gc={};
+function A(a,c,d,e,f){if(c){if(v(c)){for(var h=0;h<c.length;h++)A(a,c[h],d,e,f);return k}var e=!!e,j=z;c in j||(j[c]=tc());j=j[c];e in j||(j[e]=tc(),j.e++);var j=j[e],l=ia(a),q;j.z++;if(j[l]){q=j[l];for(h=0;h<q.length;h++)if(j=q[h],j.ra==d&&j.Ja==f){if(j.ia)break;return q[h].key}}else q=j[l]=vc(),j.e++;h=xc();h.src=a;j=Ac();j.qa(d,h,a,c,e,f);d=j.key;h.key=d;q.push(j);Ec[d]=j;Fc[l]||(Fc[l]=vc());Fc[l].push(j);a.addEventListener?(a==p||!a.Ua)&&a.addEventListener(c,h,e):a.attachEvent(c in Gc?Gc[c]:Gc[c]=
+"on"+c,h);return d}b(Error("Invalid event type"))}function Hc(a,c,d,e,f){if(v(c))for(var h=0;h<c.length;h++)Hc(a,c[h],d,e,f);else{e=!!e;a:{h=z;if(c in h&&(h=h[c],e in h&&(h=h[e],a=ia(a),h[a]))){a=h[a];break a}a=k}if(a)for(h=0;h<a.length;h++)if(a[h].ra==d&&a[h].capture==e&&a[h].Ja==f){Ic(a[h].key);break}}}
+function Ic(a){if(Ec[a]){var c=Ec[a];if(!c.ia){var d=c.src,e=c.type,f=c.cb,h=c.capture;d.removeEventListener?(d==p||!d.Ua)&&d.removeEventListener(e,f,h):d.detachEvent&&d.detachEvent(e in Gc?Gc[e]:Gc[e]="on"+e,f);d=ia(d);f=z[e][h][d];if(Fc[d]){var j=Fc[d],l=ub(j,c);0<=l&&tb.splice.call(j,l,1);0==j.length&&delete Fc[d]}c.ia=i;f.bb=i;Jc(e,h,d,f);delete Ec[a]}}}
+function Jc(a,c,d,e){if(!e.ya&&e.bb){for(var f=0,h=0;f<e.length;f++)if(e[f].ia){var j=e[f].cb;j.src=k;zc(j);Bc(e[f])}else f!=h&&(e[h]=e[f]),h++;e.length=h;e.bb=m;0==h&&(wc(e),delete z[a][c][d],z[a][c].e--,0==z[a][c].e&&(uc(z[a][c]),delete z[a][c],z[a].e--),0==z[a].e&&(uc(z[a]),delete z[a]))}}
+function Kc(a){var c,d=0,e=c==k;c=!!c;if(a==k)Db(Fc,function(a){for(var f=a.length-1;0<=f;f--){var h=a[f];if(e||c==h.capture)Ic(h.key),d++}});else if(a=ia(a),Fc[a])for(var a=Fc[a],f=a.length-1;0<=f;f--){var h=a[f];if(e||c==h.capture)Ic(h.key),d++}}function Lc(a,c,d,e,f){var h=1,c=ia(c);if(a[c]){a.z--;a=a[c];a.ya?a.ya++:a.ya=1;try{for(var j=a.length,l=0;l<j;l++){var q=a[l];q&&!q.ia&&(h&=Mc(q,f)!==m)}}finally{a.ya--,Jc(d,e,c,a)}}return Boolean(h)}
+function Mc(a,c){var d=a.handleEvent(c);a.Qa&&Ic(a.key);return d}
+yc(function(a,c){if(!Ec[a])return i;var d=Ec[a],e=d.type,f=z;if(!(e in f))return i;var f=f[e],h,j;Qa===g&&(Qa=y&&!p.addEventListener);if(Qa){h=c||da("window.event");var l=i in f,q=m in f;if(l){if(0>h.keyCode||h.returnValue!=g)return i;a:{var r=m;if(0==h.keyCode)try{h.keyCode=-1;break a}catch(w){r=i}if(r||h.returnValue==g)h.returnValue=i}}r=Cc();r.qa(h,this);h=i;try{if(l){for(var u=vc(),H=r.currentTarget;H;H=H.parentNode)u.push(H);j=f[i];j.z=j.e;for(var aa=u.length-1;!r.aa&&0<=aa&&j.z;aa--)r.currentTarget=
+u[aa],h&=Lc(j,u[aa],e,i,r);if(q){j=f[m];j.z=j.e;for(aa=0;!r.aa&&aa<u.length&&j.z;aa++)r.currentTarget=u[aa],h&=Lc(j,u[aa],e,m,r)}}else h=Mc(d,r)}finally{if(u)u.length=0,wc(u);r.ma();Dc(r)}return h}e=new mc(c,this);try{h=Mc(d,e)}finally{e.ma()}return h});function Nc(){}qa(Nc,jc);o=Nc.prototype;o.Ua=i;o.La=k;o.addEventListener=function(a,c,d,e){A(this,a,c,d,e)};o.removeEventListener=function(a,c,d,e){Hc(this,a,c,d,e)};
+o.dispatchEvent=function(a){var c=a.type||a,d=z;if(c in d){if(x(a))a=new kc(a,this);else if(a instanceof kc)a.target=a.target||this;else{var e=a,a=new kc(c,this);Ib(a,e)}var e=1,f,d=d[c],c=i in d,h;if(c){f=[];for(h=this;h;h=h.La)f.push(h);h=d[i];h.z=h.e;for(var j=f.length-1;!a.aa&&0<=j&&h.z;j--)a.currentTarget=f[j],e&=Lc(h,f[j],a.type,i,a)&&a.sa!=m}if(m in d)if(h=d[m],h.z=h.e,c)for(j=0;!a.aa&&j<f.length&&h.z;j++)a.currentTarget=f[j],e&=Lc(h,f[j],a.type,m,a)&&a.sa!=m;else for(f=this;!a.aa&&f&&h.z;f=
+f.La)a.currentTarget=f,e&=Lc(h,f,a.type,m,a)&&a.sa!=m;a=Boolean(e)}else a=i;return a};o.D=function(){Nc.la.D.call(this);Kc(this);this.La=k};function Oc(a,c,d,e,f){if(!y&&(!Ya||!ib("525")))return i;if($a&&f)return Pc(a);if(f&&!e||!d&&(17==c||18==c)||y&&e&&c==a)return m;switch(a){case 13:return i;case 27:return!Ya}return Pc(a)}function Pc(a){if(48<=a&&57>=a||96<=a&&106>=a||65<=a&&90>=a||Ya&&0==a)return i;switch(a){case 32:case 63:case 107:case 109:case 110:case 111:case 186:case 189:case 187:case 188:case 190:case 191:case 192:case 222:case 219:case 220:case 221:return i;default:return m}};function Qc(a,c){if(a)this.xa&&this.detach(),this.na=a,this.wa=A(this.na,"keypress",this,c),this.Ka=A(this.na,"keydown",this.ob,c,this),this.xa=A(this.na,"keyup",this.pb,c,this)}qa(Qc,Nc);o=Qc.prototype;o.na=k;o.wa=k;o.Ka=k;o.xa=k;o.P=-1;o.O=-1;
+var Rc={3:13,12:144,63232:38,63233:40,63234:37,63235:39,63236:112,63237:113,63238:114,63239:115,63240:116,63241:117,63242:118,63243:119,63244:120,63245:121,63246:122,63247:123,63248:44,63272:46,63273:36,63275:35,63276:33,63277:34,63289:144,63302:45},Sc={Up:38,Down:40,Left:37,Right:39,Enter:13,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,"U+007F":46,Home:36,End:35,PageUp:33,PageDown:34,Insert:45},Tc={61:187,59:186},Uc=y||Ya&&ib("525");o=Qc.prototype;
+o.ob=function(a){if(Ya&&(17==this.P&&!a.ctrlKey||18==this.P&&!a.altKey))this.O=this.P=-1;Uc&&!Oc(a.keyCode,this.P,a.shiftKey,a.ctrlKey,a.altKey)?this.handleEvent(a):this.O=Xa&&a.keyCode in Tc?Tc[a.keyCode]:a.keyCode};o.pb=function(){this.O=this.P=-1};
+o.handleEvent=function(a){var c=a.X,d,e;y&&"keypress"==a.type?(d=this.O,e=13!=d&&27!=d?c.keyCode:0):Ya&&"keypress"==a.type?(d=this.O,e=0<=c.charCode&&63232>c.charCode&&Pc(d)?c.charCode:0):Wa?(d=this.O,e=Pc(d)?c.keyCode:0):(d=c.keyCode||this.O,e=c.charCode||0,$a&&63==e&&!d&&(d=191));var f=d,h=c.keyIdentifier;d?63232<=d&&d in Rc?f=Rc[d]:25==d&&a.shiftKey&&(f=9):h&&h in Sc&&(f=Sc[h]);a=f==this.P;this.P=f;c=new Vc(f,e,a,c);try{this.dispatchEvent(c)}finally{c.ma()}};
+o.detach=function(){if(this.wa)Ic(this.wa),Ic(this.Ka),Ic(this.xa),this.xa=this.Ka=this.wa=k;this.na=k;this.O=this.P=-1};o.D=function(){Qc.la.D.call(this);this.detach()};function Vc(a,c,d,e){e&&this.qa(e,g);this.type="key";this.keyCode=a;this.charCode=c;this.repeat=d}qa(Vc,mc);var Wc=!y||ib("9");!Xa&&!y||y&&ib("9")||Xa&&ib("1.9.1");y&&ib("9");function Xc(a){return(a=a.className)&&"function"==typeof a.split?a.split(/\s+/):[]}function Yc(a,c){var d=Xc(a),e=Bb(arguments,1),f;f=d;for(var h=0,j=0;j<e.length;j++)0<=ub(f,e[j])||(f.push(e[j]),h++);f=h==e.length;a.className=d.join(" ");return f}function Zc(a,c){var d=Xc(a),e=Bb(arguments,1),f;f=d;for(var h=0,j=0;j<f.length;j++)0<=ub(e,f[j])&&(Ab(f,j--,1),h++);f=h==e.length;a.className=d.join(" ");return f}function $c(a,c){return 0<=ub(Xc(a),c)};function ad(){return document}function bd(a){return x(a)?document.getElementById(a):a}function cd(a,c,d){return dd(a,c,d)}
+function dd(a,c,d){d=d||document;a=a&&"*"!=a?a.toUpperCase():"";if(d.querySelectorAll&&d.querySelector&&(!Ya||"CSS1Compat"==document.compatMode||ib("528"))&&(a||c))return d.querySelectorAll(a+(c?"."+c:""));if(c&&d.getElementsByClassName){d=d.getElementsByClassName(c);if(a){for(var e={},f=0,h=0,j;j=d[h];h++)a==j.nodeName&&(e[f++]=j);e.length=f;return e}return d}d=d.getElementsByTagName(a||"*");if(c){e={};for(h=f=0;j=d[h];h++)a=j.className,"function"==typeof a.split&&0<=ub(a.split(/\s+/),c)&&(e[f++]=
+j);e.length=f;return e}return d}function ed(a,c){Db(c,function(c,e){"style"==e?a.style.cssText=c:"class"==e?a.className=c:"for"==e?a.htmlFor=c:e in fd?a.setAttribute(fd[e],c):a[e]=c})}var fd={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",rowspan:"rowSpan",valign:"vAlign",height:"height",width:"width",usemap:"useMap",frameborder:"frameBorder",maxlength:"maxLength",type:"type"};
+function gd(a,c,d){var e=arguments,f=document,h=e[0],j=e[1];if(!Wc&&j&&(j.name||j.type)){h=["<",h];j.name&&h.push(' name="',wa(j.name),'"');if(j.type){h.push(' type="',wa(j.type),'"');var l={};Ib(l,j);j=l;delete j.type}h.push(">");h=h.join("")}h=f.createElement(h);if(j)x(j)?h.className=j:v(j)?Yc.apply(k,[h].concat(j)):ed(h,j);2<e.length&&hd(f,h,e);return h}
+function hd(a,c,d){function e(d){d&&c.appendChild(x(d)?a.createTextNode(d):d)}for(var f=2;f<d.length;f++){var h=d[f];fa(h)&&!(ha(h)&&0<h.nodeType)?vb(id(h)?xb(h):h,e):e(h)}}function jd(a){var c;var d=document;c=d.createElement("div");y?(c.innerHTML="<br>"+a,c.removeChild(c.firstChild)):c.innerHTML=a;if(1==c.childNodes.length)c=c.removeChild(c.firstChild);else{for(a=d.createDocumentFragment();c.firstChild;)a.appendChild(c.firstChild);c=a}return c}
+function kd(a){if("outerHTML"in a)return a.outerHTML;var c=(9==a.nodeType?a:a.ownerDocument||a.document).createElement("div");c.appendChild(a.cloneNode(i));return c.innerHTML}function id(a){if(a&&"number"==typeof a.length){if(ha(a))return"function"==typeof a.item||"string"==typeof a.item;if(ga(a))return"function"==typeof a.item}return m};function ld(a,c,d){x(c)?md(a,d,c):Db(c,oa(md,a))}function md(a,c,d){a.style[Ia(d)]=c}function nd(a,c){a.style.display=c?"":"none"}function od(a){return"none"!=a.style.display};function pd(a){return qd(a||arguments.callee.caller,[])}
+function qd(a,c){var d=[];if(0<=ub(c,a))d.push("[...circular reference...]");else if(a&&50>c.length){d.push(rd(a)+"(");for(var e=a.arguments,f=0;f<e.length;f++){0<f&&d.push(", ");var h;h=e[f];switch(typeof h){case "object":h=h?"object":"null";break;case "string":break;case "number":h=""+h;break;case "boolean":h=h?"true":"false";break;case "function":h=(h=rd(h))?h:"[fn]";break;default:h=typeof h}40<h.length&&(h=h.substr(0,40)+"...");d.push(h)}c.push(a);d.push(")\n");try{d.push(qd(a.caller,c))}catch(j){d.push("[exception trying to get caller]\n")}}else a?
+d.push("[...long stack...]"):d.push("[end]");return d.join("")}function rd(a){a=""+a;if(!sd[a]){var c=/function ([^\(]+)/.exec(a);sd[a]=c?c[1]:"[Anonymous]"}return sd[a]}var sd={};var td=p.window;function ud(a,c,d){ga(a)?d&&(a=na(a,d)):a&&"function"==typeof a.handleEvent?a=na(a.handleEvent,a):b(Error("Invalid listener argument"));return 2147483647<c?-1:td.setTimeout(a,c||0)};function vd(a,c,d,e,f){this.reset(a,c,d,e,f)}vd.prototype.wb=0;vd.prototype.Ha=k;vd.prototype.Ga=k;var wd=0;vd.prototype.reset=function(a,c,d,e,f){this.wb="number"==typeof f?f:wd++;this.ib=e||pa();this.$=a;this.ab=c;this.rb=d;delete this.Ha;delete this.Ga};vd.prototype.fb=function(a){this.$=a};function xd(a){this.sb=a}xd.prototype.za=k;xd.prototype.$=k;xd.prototype.Ba=k;xd.prototype.pa=k;function yd(a,c){this.name=a;this.value=c}yd.prototype.toString=n("name");var zd=new yd("SHOUT",1200),Ad=new yd("SEVERE",1E3),Bd=new yd("WARNING",900),Cd=new yd("INFO",800),Dd=new yd("CONFIG",700);function Ed(a){return Fd(a)}o=xd.prototype;o.getParent=n("za");o.fb=function(a){this.$=a};function Gd(a){if(a.$)return a.$;if(a.za)return Gd(a.za);rb("Root logger has no level set.");return k}
+o.log=function(a,c,d){if(a.value>=Gd(this).value){a=this.nb(a,c,d);p.console&&p.console.markTimeline&&p.console.markTimeline("log:"+a.ab);for(c=this;c;){var d=c,e=a;if(d.pa)for(var f=0,h=g;h=d.pa[f];f++)h(e);c=c.getParent()}}};
+o.nb=function(a,c,d){var e=new vd(a,""+c,this.sb);if(d){e.Ha=d;var f;var h=arguments.callee.caller;try{var j;var l=da("window.location.href");if(x(d))j={message:d,name:"Unknown error",lineNumber:"Not available",fileName:l,stack:"Not available"};else{var q,r,w=m;try{q=d.lineNumber||d.Db||"Not available"}catch(u){q="Not available",w=i}try{r=d.fileName||d.filename||d.sourceURL||l}catch(H){r="Not available",w=i}j=w||!d.lineNumber||!d.fileName||!d.stack?{message:d.message,name:d.name,lineNumber:q,fileName:r,
+stack:d.stack||"Not available"}:d}f="Message: "+wa(j.message)+'\nUrl: <a href="view-source:'+j.fileName+'" target="_new">'+j.fileName+"</a>\nLine: "+j.lineNumber+"\n\nBrowser stack:\n"+wa(j.stack+"-> ")+"[end]\n\nJS stack traversal:\n"+wa(pd(h)+"-> ")}catch(aa){f="Exception trying to expose exception! You win, we lose. "+aa}e.Ga=f}return e};o.info=function(a,c){this.log(Cd,a,c)};var Hd={},Id=k;function Jd(){Id||(Id=new xd(""),Hd[""]=Id,Id.fb(Dd))}
+function Fd(a){Jd();var c;if(!(c=Hd[a])){c=new xd(a);var d=a.lastIndexOf("."),e=a.substr(d+1),d=Fd(a.substr(0,d));if(!d.Ba)d.Ba={};d.Ba[e]=c;c.za=d;Hd[a]=c}return c};function Kd(){this.vb=na(this.jb,this);this.Ia=new ob;this.Ia.gb=m;this.Xa=this.Ia.hb=m;this.Za=""}
+Kd.prototype.jb=function(a){var c;c=this.Ia;var d=[];d.push(c.ub," ");if(c.gb){var e=new Date(a.ib);d.push("[",mb(e.getFullYear()-2E3)+mb(e.getMonth()+1)+mb(e.getDate())+" "+mb(e.getHours())+":"+mb(e.getMinutes())+":"+mb(e.getSeconds())+"."+mb(Math.floor(e.getMilliseconds()/10)),"] ")}c.yb&&d.push("[",nb(a,c.Ab.get()),"s] ");c.xb&&d.push("[",a.rb,"] ");c.zb&&d.push("[",a.$.name,"] ");d.push(a.ab,"\n");c.hb&&a.Ha&&d.push(a.Ga,"\n");c=d.join("");if(window.console&&window.console.firebug)switch(a.$){case zd:window.console.info(c);
+break;case Ad:window.console.error(c);break;case Bd:window.console.warn(c);break;default:window.console.debug(c)}else window.console?window.console.log(c):window.opera?window.opera.postError(c):this.Za+=c};function Ld(a,c,d){c||(c={});var e=d||window,d="undefined"!=typeof a.href?a.href:""+a,a=c.target||a.target,f=[],h;for(h in c)switch(h){case "width":case "height":case "top":case "left":f.push(h+"="+c[h]);break;case "target":case "noreferrer":break;default:f.push(h+"="+(c[h]?1:0))}h=f.join(",");if(c.noreferrer){if(c=e.open("",a,h))y&&-1!=d.indexOf(";")&&(d="'"+d.replace(/'/g,"%27")+"'"),d=wa(d),c.document.write('<META HTTP-EQUIV="refresh" content="0; url='+d+'">'),c.document.close()}else c=e.open(d,
+a,h);return c};function B(a){return a!=k&&a!==m}function Md(a,c){var d=a[s.call(k,c)];if(B(d))return d;d=a._;return B(d)?d:m}function C(a,c){return Error.call(k,"No protocol method "+a+" defined for type "+s.call(k,c)+": "+c)}function Nd(a){return Array.prototype.slice.call(a)}function Od(a){return Array.prototype.slice.call(arguments)}function D(a){if(B(B(a)?a.o:a))a=a.o(a);else{var c;var d=D[s.call(k,a)];B(d)?c=d:(d=D._,B(d)?c=d:b(C.call(k,"ICounted.-count",a)));a=c.call(k,a)}return a}
+function Pd(a,c){var d;if(B(B(a)?a.t:a))d=a.t(a,c);else{var e=Pd[s.call(k,a)];B(e)?d=e:(e=Pd._,B(e)?d=e:b(C.call(k,"ICollection.-conj",a)));d=d.call(k,a,c)}return d}
+var E=function(){return function(a,c,d){switch(arguments.length){case 2:var e;if(B(B(a)?a.I:a))e=a.I(a,c);else{var f=E[s.call(k,a)];B(f)?e=f:(f=E._,B(f)?e=f:b(C.call(k,"IIndexed.-nth",a)));e=e.call(k,a,c)}return e;case 3:return B(B(a)?a.I:a)?e=a.I(a,c,d):(e=E[s.call(k,a)],B(e)?f=e:(e=E._,B(e)?f=e:b(C.call(k,"IIndexed.-nth",a))),e=f.call(k,a,c,d)),e}b("Invalid arity: "+arguments.length)}}(),Qd={};
+function Rd(a){if(B(B(a)?a.S:a))a=a.S(a);else{var c;var d=Rd[s.call(k,a)];B(d)?c=d:(d=Rd._,B(d)?c=d:b(C.call(k,"ISeq.-first",a)));a=c.call(k,a)}return a}function Sd(a){if(B(B(a)?a.T:a))a=a.T(a);else{var c;var d=Sd[s.call(k,a)];B(d)?c=d:(d=Sd._,B(d)?c=d:b(C.call(k,"ISeq.-rest",a)));a=c.call(k,a)}return a}
+var F=function(){return function(a,c,d){switch(arguments.length){case 2:var e;if(B(B(a)?a.R:a))e=a.R(a,c);else{var f=F[s.call(k,a)];B(f)?e=f:(f=F._,B(f)?e=f:b(C.call(k,"ILookup.-lookup",a)));e=e.call(k,a,c)}return e;case 3:return B(B(a)?a.R:a)?e=a.R(a,c,d):(e=F[s.call(k,a)],B(e)?f=e:(e=F._,B(e)?f=e:b(C.call(k,"ILookup.-lookup",a))),e=f.call(k,a,c,d)),e}b("Invalid arity: "+arguments.length)}}();
+function Td(a,c){var d;if(B(B(a)?a.Ca:a))d=a.Ca(a,c);else{var e=Td[s.call(k,a)];B(e)?d=e:(e=Td._,B(e)?d=e:b(C.call(k,"IAssociative.-contains-key?",a)));d=d.call(k,a,c)}return d}function Ud(a,c,d){if(B(B(a)?a.ua:a))a=a.ua(a,c,d);else{var e;var f=Ud[s.call(k,a)];B(f)?e=f:(f=Ud._,B(f)?e=f:b(C.call(k,"IAssociative.-assoc",a)));a=e.call(k,a,c,d)}return a}var Vd={};
+function Wd(a,c){var d;if(B(B(a)?a.Da:a))d=a.Da(a,c);else{var e=Wd[s.call(k,a)];B(e)?d=e:(e=Wd._,B(e)?d=e:b(C.call(k,"IMap.-dissoc",a)));d=d.call(k,a,c)}return d}var Xd={},Yd={};function Zd(a){if(B(B(a)?a.kb:a))a=a.state;else{var c;var d=Zd[s.call(k,a)];B(d)?c=d:(d=Zd._,B(d)?c=d:b(C.call(k,"IDeref.-deref",a)));a=c.call(k,a)}return a}var $d={};function ae(a){if(B(B(a)?a.B:a))a=a.c;else{var c;var d=ae[s.call(k,a)];B(d)?c=d:(d=ae._,B(d)?c=d:b(C.call(k,"IMeta.-meta",a)));a=c.call(k,a)}return a}
+function be(a,c){var d;if(B(B(a)?a.C:a))d=a.C(a,c);else{var e=be[s.call(k,a)];B(e)?d=e:(e=be._,B(e)?d=e:b(C.call(k,"IWithMeta.-with-meta",a)));d=d.call(k,a,c)}return d}
+var ce=function(){return function(a,c,d){switch(arguments.length){case 2:var e;if(B(B(a)?a.ba:a))e=a.ba(a,c);else{var f=ce[s.call(k,a)];B(f)?e=f:(f=ce._,B(f)?e=f:b(C.call(k,"IReduce.-reduce",a)));e=e.call(k,a,c)}return e;case 3:return B(B(a)?a.ba:a)?e=a.ba(a,c,d):(e=ce[s.call(k,a)],B(e)?f=e:(e=ce._,B(e)?f=e:b(C.call(k,"IReduce.-reduce",a))),e=f.call(k,a,c,d)),e}b("Invalid arity: "+arguments.length)}}();
+function de(a,c){var d;if(B(B(a)?a.j:a))d=a.j(a,c);else{var e=de[s.call(k,a)];B(e)?d=e:(e=de._,B(e)?d=e:b(C.call(k,"IEquiv.-equiv",a)));d=d.call(k,a,c)}return d}function ee(a){if(B(B(a)?a.p:a))a=a.p(a);else{var c;var d=ee[s.call(k,a)];B(d)?c=d:(d=ee._,B(d)?c=d:b(C.call(k,"IHash.-hash",a)));a=c.call(k,a)}return a}function fe(a){if(B(B(a)?a.k:a))a=a.k(a);else{var c;var d=fe[s.call(k,a)];B(d)?c=d:(d=fe._,B(d)?c=d:b(C.call(k,"ISeqable.-seq",a)));a=c.call(k,a)}return a}var ge={},he={};
+function ie(a,c){var d;if(B(B(a)?a.m:a))d=a.m(a,c);else{var e=ie[s.call(k,a)];B(e)?d=e:(e=ie._,B(e)?d=e:b(C.call(k,"IPrintable.-pr-seq",a)));d=d.call(k,a,c)}return d}function je(a,c,d){if(B(B(a)?a.Ta:a))a=a.Ta(a,c,d);else{var e;var f=je[s.call(k,a)];B(f)?e=f:(f=je._,B(f)?e=f:b(C.call(k,"IWatchable.-notify-watches",a)));a=e.call(k,a,c,d)}return a}
+function ke(a,c,d){if(B(B(a)?a.Sa:a))a=a.Sa(a,c,d);else{var e;var f=ke[s.call(k,a)];B(f)?e=f:(f=ke._,B(f)?e=f:b(C.call(k,"IWatchable.-add-watch",a)));a=e.call(k,a,c,d)}return a}function G(a,c){return de.call(k,a,c)}function I(a){return a===k}Function.prototype.q=i;Function.prototype.m=function(a){return J.call(k,"#<",K.call(k,a),">")};ee["null"]=ca(0);F["null"]=function(){return function(a,c,d){switch(arguments.length){case 2:return k;case 3:return d}b("Invalid arity: "+arguments.length)}}();
+Ud["null"]=function(a,c,d){return L.call(k,c,d)};Pd["null"]=function(a,c){return J.call(k,c)};ce["null"]=function(){return function(a,c,d){switch(arguments.length){case 2:return c.call(k);case 3:return d}b("Invalid arity: "+arguments.length)}}();he["null"]=i;ie["null"]=function(){return J.call(k,"nil")};Xd["null"]=i;D["null"]=ca(0);Qd["null"]=i;Rd["null"]=ca(k);Sd["null"]=function(){return J.call(k)};de["null"]=function(a,c){return I.call(k,c)};be["null"]=ca(k);$d["null"]=i;ae["null"]=ca(k);
+E["null"]=function(){return function(a,c,d){switch(arguments.length){case 2:return k;case 3:return d}b("Invalid arity: "+arguments.length)}}();Vd["null"]=i;Wd["null"]=ca(k);Date.prototype.j=function(a,c){return a.toString()===c.toString()};ee.number=ba();de.number=function(a,c){return a===c};ee["boolean"]=function(a){return a===i?1:0};ee["function"]=function(a){return ia.call(k,a)};
+var le=function(){return function(a,c,d,e){switch(arguments.length){case 2:var f;a:if(B(G.call(k,0,D.call(k,a))))f=c.call(k);else for(var h=E.call(k,a,0),j=1;;)if(B(j<D.call(k,a)))h=c.call(k,h,E.call(k,a,j)),j+=1;else{f=h;break a}return f;case 3:a:{f=d;for(j=0;;)if(B(j<D.call(k,a)))f=c.call(k,f,E.call(k,a,j)),j+=1;else{h=f;break a}}return h;case 4:a:{f=d;for(h=e;;)if(B(h<D.call(k,a)))f=c.call(k,f,E.call(k,a,h)),h+=1;else{j=f;break a}}return j}b("Invalid arity: "+arguments.length)}}();
+function me(a,c){this.r=a;this.L=c}o=me.prototype;o.p=function(a){return ne.call(k,a)};o.ba=function(){return function(a,c,d){switch(arguments.length){case 2:return le.call(k,this.r,c,this.r[this.L],this.L+1);case 3:return le.call(k,this.r,c,d,this.L)}b("Invalid arity: "+arguments.length)}}();o.t=function(a,c){return M.call(k,c,a)};o.j=function(a,c){return oe.call(k,a,c)};o.U=i;
+o.I=function(){return function(a,c,d){switch(arguments.length){case 2:var e=c+this.L;return B(e<this.r.length)?this.r[e]:k;case 3:return e=c+this.L,B(e<this.r.length)?this.r[e]:d}b("Invalid arity: "+arguments.length)}}();o.o=function(){return this.r.length-this.L};o.ca=i;o.S=function(){return this.r[this.L]};o.T=function(){return B(this.L+1<this.r.length)?new me(this.r,this.L+1):J.call(k)};o.k=ba();function pe(a,c){return B(G.call(k,0,a.length))?k:new me(a,c)}
+function N(a,c){return pe.call(k,a,c)}ce.array=function(){return function(a,c,d){switch(arguments.length){case 2:return le.call(k,a,c);case 3:return le.call(k,a,c,d)}b("Invalid arity: "+arguments.length)}}();F.array=function(){return function(a,c,d){switch(arguments.length){case 2:return a[c];case 3:return E.call(k,a,c,d)}b("Invalid arity: "+arguments.length)}}();
+E.array=function(){return function(a,c,d){switch(arguments.length){case 2:return B(c<a.length)?a[c]:k;case 3:return B(c<a.length)?a[c]:d}b("Invalid arity: "+arguments.length)}}();D.array=function(a){return a.length};fe.array=function(a){return N.call(k,a,0)};function O(a){return B(a)?fe.call(k,a):k}function P(a){a=O.call(k,a);return B(a)?Rd.call(k,a):k}function Q(a){return Sd.call(k,O.call(k,a))}function R(a){return B(a)?O.call(k,Q.call(k,a)):k}function qe(a){return P.call(k,R.call(k,a))}
+function re(a){return R.call(k,R.call(k,a))}function se(a){for(;;)if(B(R.call(k,a)))a=R.call(k,a);else return P.call(k,a)}D._=function(a){for(var a=O.call(k,a),c=0;;)if(B(a))a=R.call(k,a),c+=1;else return c};de._=function(a,c){return a===c};function S(a){return B(a)?m:i}
+var te=function(){var a=k,c=function(){function c(a,d,j){var l=k;t(j)&&(l=N(Array.prototype.slice.call(arguments,2),0));return e.call(this,a,d,l)}function e(c,d,e){for(;;)if(B(e))c=a.call(k,c,d),d=P.call(k,e),e=R.call(k,e);else return a.call(k,c,d)}c.b=2;c.a=function(a){var c=P(a),d=P(R(a)),a=Q(R(a));return e.call(this,c,d,a)};return c}(),a=function(a,e,f){switch(arguments.length){case 2:return Pd.call(k,a,e);default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=2;a.a=
+c.a;return a}();function ue(a){return D.call(k,a)}
+var T=function(){return function(a,c,d){switch(arguments.length){case 2:return E.call(k,a,Math.floor(c));case 3:return E.call(k,a,Math.floor(c),d)}b("Invalid arity: "+arguments.length)}}(),U=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,a,c);case 3:return F.call(k,a,c,d)}b("Invalid arity: "+arguments.length)}}(),ve=function(){var a=k,c=function(){function c(a,d,j,l){var q=k;t(l)&&(q=N(Array.prototype.slice.call(arguments,3),0));return e.call(this,a,d,j,q)}function e(c,
+d,e,l){for(;;)if(c=a.call(k,c,d,e),B(l))d=P.call(k,l),e=qe.call(k,l),l=re.call(k,l);else return c}c.b=3;c.a=function(a){var c=P(a),d=P(R(a)),l=P(R(R(a))),a=Q(R(R(a)));return e.call(this,c,d,l,a)};return c}(),a=function(a,e,f,h){switch(arguments.length){case 3:return Ud.call(k,a,e,f);default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=3;a.a=c.a;return a}(),we=function(){var a=k,c=function(){function c(a,d,j){var l=k;t(j)&&(l=N(Array.prototype.slice.call(arguments,2),0));
+return e.call(this,a,d,l)}function e(c,d,e){for(;;)if(c=a.call(k,c,d),B(e))d=P.call(k,e),e=R.call(k,e);else return c}c.b=2;c.a=function(a){var c=P(a),d=P(R(a)),a=Q(R(a));return e.call(this,c,d,a)};return c}(),a=function(a,e,f){switch(arguments.length){case 1:return a;case 2:return Wd.call(k,a,e);default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=2;a.a=c.a;return a}();function xe(a,c){return be.call(k,a,c)}
+function ye(a){var c;B(a)?(c=a.v,c=B(c)?S.call(k,a.hasOwnProperty("cljs$core$IMeta$")):c):c=a;c=B(c)?i:Md.call(k,$d,a);return B(c)?ae.call(k,a):k}function ze(a){return ee.call(k,a)}function Ae(a){return S.call(k,O.call(k,a))}function Be(a){if(B(I.call(k,a)))a=m;else{var c;B(a)?(c=a.lb,c=B(c)?S.call(k,a.hasOwnProperty("cljs$core$ISet$")):c):c=a;a=B(c)?i:Md.call(k,Xd,a)}return a}
+function Ce(a){var c;B(a)?(c=a.U,c=B(c)?S.call(k,a.hasOwnProperty("cljs$core$ISequential$")):c):c=a;return B(c)?i:Md.call(k,ge,a)}function De(a){if(B(I.call(k,a)))a=m;else{var c;B(a)?(c=a.Ra,c=B(c)?S.call(k,a.hasOwnProperty("cljs$core$IMap$")):c):c=a;a=B(c)?i:Md.call(k,Vd,a)}return a}function Ee(a){var c;B(a)?(c=a.mb,c=B(c)?S.call(k,a.hasOwnProperty("cljs$core$IVector$")):c):c=a;return B(c)?i:Md.call(k,Yd,a)}function Fe(){return{}}
+function Ge(a){var c=Od.call(k);Db.call(k,a,function(a,e){return c.push(e)});return c}function He(a,c){return delete a[c]}var Ie=Fe.call(k);function Je(a){if(B(I.call(k,a)))a=m;else{var c;B(a)?(c=a.ca,c=B(c)?S.call(k,a.hasOwnProperty("cljs$core$ISeq$")):c):c=a;a=B(c)?i:Md.call(k,Qd,a)}return a}function Ke(a){return B(a)?i:m}function Le(a){var c=x.call(k,a);return B(c)?S.call(k,function(){var c=G.call(k,a.charAt(0),"\ufdd0");return B(c)?c:G.call(k,a.charAt(0),"\ufdd1")}()):c}
+function Me(a){var c=x.call(k,a);return B(c)?G.call(k,a.charAt(0),"\ufdd0"):c}function Ne(a){var c=x.call(k,a);return B(c)?G.call(k,a.charAt(0),"\ufdd1"):c}function Oe(a,c){return B(F.call(k,a,c,Ie)===Ie)?m:i}
+var Pe=function(){return function(a,c,d){switch(arguments.length){case 2:return ce.call(k,c,a);case 3:return ce.call(k,d,a,c)}b("Invalid arity: "+arguments.length)}}(),Qe=function(){return function(a,c,d){switch(arguments.length){case 2:var e=O.call(k,c);return B(e)?Pe.call(k,a,P.call(k,e),R.call(k,e)):a.call(k);case 3:a:for(var f=c,h=O.call(k,d);;)if(B(h))f=a.call(k,f,P.call(k,h)),h=R.call(k,h);else{e=f;break a}return e}b("Invalid arity: "+arguments.length)}}();
+ce._=function(){return function(a,c,d){switch(arguments.length){case 2:return Qe.call(k,c,a);case 3:return Qe.call(k,c,d,a)}b("Invalid arity: "+arguments.length)}}();
+var Re=function(){var a=k,c=function(){function a(d,h,j){var l=k;t(j)&&(l=N(Array.prototype.slice.call(arguments,2),0));return c.call(this,d,h,l)}function c(a,d,e){for(;;)if(B(a<d))if(B(R.call(k,e)))a=d,d=P.call(k,e),e=R.call(k,e);else return d<P.call(k,e);else return m}a.b=2;a.a=function(a){var d=P(a),j=P(R(a)),a=Q(R(a));return c.call(this,d,j,a)};return a}(),a=function(a,e,f){switch(arguments.length){case 1:return i;case 2:return a<e;default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};
+a.b=2;a.a=c.a;return a}(),Se=function(){var a=k,c=function(){function a(d,h,j){var l=k;t(j)&&(l=N(Array.prototype.slice.call(arguments,2),0));return c.call(this,d,h,l)}function c(a,d,e){for(;;)if(B(a>d))if(B(R.call(k,e)))a=d,d=P.call(k,e),e=R.call(k,e);else return d>P.call(k,e);else return m}a.b=2;a.a=function(a){var d=P(a),j=P(R(a)),a=Q(R(a));return c.call(this,d,j,a)};return a}(),a=function(a,e,f){switch(arguments.length){case 1:return i;case 2:return a>e;default:return c.apply(this,arguments)}b("Invalid arity: "+
+arguments.length)};a.b=2;a.a=c.a;return a}();function Te(a,c){for(var d=c,e=O.call(k,a);;){var f=e;if(B(B(f)?0<d:f))d-=1,e=R.call(k,e);else return e}}E._=function(){return function(a,c,d){switch(arguments.length){case 2:var e;var f=Te.call(k,a,c);B(f)?e=P.call(k,f):b(Error("Index out of bounds"));return e;case 3:return e=Te.call(k,a,c),B(e)?P.call(k,e):d}b("Invalid arity: "+arguments.length)}}();
+var Ue=function(){var a=k,c=function(){function c(a,d){var j=k;t(d)&&(j=N(Array.prototype.slice.call(arguments,1),0));return e.call(this,a,j)}function e(c,d){return function(c,d){for(;;)if(B(d))var e=c.append(a.call(k,P.call(k,d))),f=R.call(k,d),c=e,d=f;else return a.call(k,c)}.call(k,new Pa(a.call(k,c)),d)}c.b=1;c.a=function(a){var c=P(a),a=Q(a);return e.call(this,c,a)};return c}(),a=function(a,e){switch(arguments.length){case 0:return"";case 1:return B(I.call(k,a))?"":B("\ufdd0'else")?a.toString():
+k;default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=1;a.a=c.a;return a}(),K=function(){var a=k,c=function(){function a(c,d){var h=k;t(d)&&(h=N(Array.prototype.slice.call(arguments,1),0));return V.call(k,Ue,c,h)}a.b=1;a.a=function(a){var c=P(a),a=Q(a);return V.call(k,Ue,c,a)};return a}(),a=function(a,e){switch(arguments.length){case 0:return"";case 1:return B(Ne.call(k,a))?a.substring(2,a.length):B(Me.call(k,a))?Ue.call(k,":",a.substring(2,a.length)):B(I.call(k,a))?
+"":B("\ufdd0'else")?a.toString():k;default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=1;a.a=c.a;return a}(),Ve=function(){return function(a,c,d){switch(arguments.length){case 2:return a.substring(c);case 3:return a.substring(c,d)}b("Invalid arity: "+arguments.length)}}();
+function oe(a,c){return Ke.call(k,B(Ce.call(k,c))?function(){for(var d=O.call(k,a),e=O.call(k,c);;){if(B(I.call(k,d)))return I.call(k,e);if(B(I.call(k,e)))return m;if(B(G.call(k,P.call(k,d),P.call(k,e))))d=R.call(k,d),e=R.call(k,e);else return B("\ufdd0'else")?m:k}}():k)}function We(a,c){return a^c+2654435769+(a<<6)+(a>>2)}function ne(a){return Pe.call(k,function(a,d){return We.call(k,a,ze.call(k,d))},ze.call(k,P.call(k,a)),R.call(k,a))}function Xe(a,c,d,e){this.c=a;this.oa=c;this.ja=d;this.w=e}
+o=Xe.prototype;o.p=function(a){return ne.call(k,a)};o.U=i;o.t=function(a,c){return new Xe(this.c,c,a,this.w+1)};o.k=ba();o.o=n("w");o.ca=i;o.S=n("oa");o.T=n("ja");o.j=function(a,c){return oe.call(k,a,c)};o.C=function(a,c){return new Xe(c,this.oa,this.ja,this.w)};o.v=i;o.B=n("c");function Ye(a){this.c=a}o=Ye.prototype;o.p=function(a){return ne.call(k,a)};o.U=i;o.t=function(a,c){return new Xe(this.c,c,k,1)};o.k=ca(k);o.o=ca(0);o.ca=i;o.S=ca(k);o.T=ca(k);o.j=function(a,c){return oe.call(k,a,c)};
+o.C=function(a,c){return new Ye(c)};o.v=i;o.B=n("c");var Ze=new Ye(k);function $e(a){return Pe.call(k,te,Ze,a)}var J=function(){function a(a){var d=k;t(a)&&(d=N(Array.prototype.slice.call(arguments,0),0));return Pe.call(k,te,Ze,$e.call(k,d))}a.b=0;a.a=function(a){a=O(a);return Pe.call(k,te,Ze,$e.call(k,a))};return a}();function af(a,c,d){this.c=a;this.oa=c;this.ja=d}o=af.prototype;o.k=ba();o.p=function(a){return ne.call(k,a)};o.j=function(a,c){return oe.call(k,a,c)};o.U=i;
+o.t=function(a,c){return new af(k,c,a)};o.ca=i;o.S=n("oa");o.T=function(){return B(I.call(k,this.ja))?Ze:this.ja};o.v=i;o.B=n("c");o.C=function(a,c){return new af(c,this.oa,this.ja)};function M(a,c){return new af(k,a,c)}ce.string=function(){return function(a,c,d){switch(arguments.length){case 2:return le.call(k,a,c);case 3:return le.call(k,a,c,d)}b("Invalid arity: "+arguments.length)}}();
+F.string=function(){return function(a,c,d){switch(arguments.length){case 2:return E.call(k,a,c);case 3:return E.call(k,a,c,d)}b("Invalid arity: "+arguments.length)}}();E.string=function(){return function(a,c,d){switch(arguments.length){case 2:return B(c<D.call(k,a))?a.charAt(c):k;case 3:return B(c<D.call(k,a))?a.charAt(c):d}b("Invalid arity: "+arguments.length)}}();D.string=function(a){return a.length};fe.string=function(a){return pe.call(k,a,0)};ee.string=function(a){return Ga.call(k,a)};
+String.prototype.call=function(){return function(a,c,d){switch(arguments.length){case 2:return U.call(k,c,this.toString());case 3:return U.call(k,c,this.toString(),d)}b("Invalid arity: "+arguments.length)}}();String.prototype.apply=function(a,c){return B(2>ue.call(k,c))?U.call(k,c[0],a):U.call(k,c[0],a,c[1])};function bf(a){var c=a.x;if(B(a.Ma))return c;a.x=c.call(k);a.Ma=i;return a.x}function W(a,c,d){this.c=a;this.Ma=c;this.x=d}o=W.prototype;o.k=function(a){return O.call(k,bf.call(k,a))};
+o.p=function(a){return ne.call(k,a)};o.j=function(a,c){return oe.call(k,a,c)};o.U=i;o.t=function(a,c){return M.call(k,c,a)};o.ca=i;o.S=function(a){return P.call(k,bf.call(k,a))};o.T=function(a){return Q.call(k,bf.call(k,a))};o.v=i;o.B=n("c");o.C=function(a,c){return new W(c,this.Ma,this.x)};function cf(a){for(var c=Od.call(k);;)if(B(O.call(k,a)))c.push(P.call(k,a)),a=R.call(k,a);else return c}
+function df(a,c){for(var d=a,e=c,f=0;;){var h;h=0<e;h=B(h)?O.call(k,d):h;if(B(h))d=R.call(k,d),e-=1,f+=1;else return f}}
+var ff=function ef(c){return B(I.call(k,c))?k:B(I.call(k,R.call(k,c)))?O.call(k,P.call(k,c)):B("\ufdd0'else")?M.call(k,P.call(k,c),ef.call(k,R.call(k,c))):k},gf=function(){function a(a,c){return new W(k,m,function(){var d=O.call(k,a);return B(d)?M.call(k,P.call(k,d),e.call(k,Q.call(k,d),c)):c})}function c(a){return new W(k,m,function(){return a})}function d(){return new W(k,m,ca(k))}var e=k,f=function(){function a(d,e,f){var h=k;t(f)&&(h=N(Array.prototype.slice.call(arguments,2),0));return c.call(this,
+d,e,h)}function c(a,d,f){return function u(a,c){return new W(k,m,function(){var d=O.call(k,a);return B(d)?M.call(k,P.call(k,d),u.call(k,Q.call(k,d),c)):B(c)?u.call(k,P.call(k,c),R.call(k,c)):k})}.call(k,e.call(k,a,d),f)}a.b=2;a.a=function(a){var d=P(a),e=P(R(a)),a=Q(R(a));return c.call(this,d,e,a)};return a}(),e=function(e,j,l){switch(arguments.length){case 0:return d.call(this);case 1:return c.call(this,e);case 2:return a.call(this,e,j);default:return f.apply(this,arguments)}b("Invalid arity: "+
+arguments.length)};e.b=2;e.a=f.a;return e}(),hf=function(){var a=k,c=function(){function a(d,h,j,l,q){var r=k;t(q)&&(r=N(Array.prototype.slice.call(arguments,4),0));return c.call(this,d,h,j,l,r)}function c(a,d,e,l,q){return M.call(k,a,M.call(k,d,M.call(k,e,M.call(k,l,ff.call(k,q)))))}a.b=4;a.a=function(a){var d=P(a),j=P(R(a)),l=P(R(R(a))),q=P(R(R(R(a)))),a=Q(R(R(R(a))));return c.call(this,d,j,l,q,a)};return a}(),a=function(a,e,f,h,j){switch(arguments.length){case 1:return O.call(k,a);case 2:return M.call(k,
+a,e);case 3:return M.call(k,a,M.call(k,e,f));case 4:return M.call(k,a,M.call(k,e,M.call(k,f,h)));default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=4;a.a=c.a;return a}(),V=function(){var a=k,c=function(){function a(d,h,j,l,q,r){var w=k;t(r)&&(w=N(Array.prototype.slice.call(arguments,5),0));return c.call(this,d,h,j,l,q,w)}function c(a,d,e,l,q,r){d=M.call(k,d,M.call(k,e,M.call(k,l,M.call(k,q,ff.call(k,r)))));e=a.b;return B(a.a)?B(df.call(k,d,e)<=e)?a.apply(a,cf.call(k,
+d)):a.a(d):a.apply(a,cf.call(k,d))}a.b=5;a.a=function(a){var d=P(a),j=P(R(a)),l=P(R(R(a))),q=P(R(R(R(a)))),r=P(R(R(R(R(a))))),a=Q(R(R(R(R(a)))));return c.call(this,d,j,l,q,r,a)};return a}(),a=function(a,e,f,h,j,l){switch(arguments.length){case 2:var q=a,r=e,w=q.b;return B(q.a)?B(df.call(k,r,w+1)<=w)?q.apply(q,cf.call(k,r)):q.a(r):q.apply(q,cf.call(k,r));case 3:return q=a,r=hf.call(k,e,f),w=q.b,B(q.a)?B(df.call(k,r,w)<=w)?q.apply(q,cf.call(k,r)):q.a(r):q.apply(q,cf.call(k,r));case 4:return q=a,r=hf.call(k,
+e,f,h),w=q.b,B(q.a)?B(df.call(k,r,w)<=w)?q.apply(q,cf.call(k,r)):q.a(r):q.apply(q,cf.call(k,r));case 5:return q=a,r=hf.call(k,e,f,h,j),w=q.b,B(q.a)?B(df.call(k,r,w)<=w)?q.apply(q,cf.call(k,r)):q.a(r):q.apply(q,cf.call(k,r));default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=5;a.a=c.a;return a}(),jf=function(){var a=k,c=function(){function a(c,d,h){var j=k;t(h)&&(j=N(Array.prototype.slice.call(arguments,2),0));return S.call(k,V.call(k,G,c,d,j))}a.b=2;a.a=function(a){var c=
+P(a),d=P(R(a)),a=Q(R(a));return S.call(k,V.call(k,G,c,d,a))};return a}(),a=function(a,e,f){switch(arguments.length){case 1:return m;case 2:return S.call(k,G.call(k,a,e));default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=2;a.a=c.a;return a}();function kf(a,c){for(;;){if(B(I.call(k,O.call(k,c))))return i;if(B(a.call(k,P.call(k,c))))var d=a,e=R.call(k,c),a=d,c=e;else return B("\ufdd0'else")?m:k}}
+function lf(a,c){for(;;)if(B(O.call(k,c))){var d=a.call(k,P.call(k,c));if(B(d))return d;var d=a,e=R.call(k,c),a=d,c=e}else return k}function mf(a){return a}
+var X=function(){function a(a,c,d,f){return new W(k,m,function(){var r=O.call(k,c),w=O.call(k,d),u=O.call(k,f);return B(B(r)?B(w)?u:w:r)?M.call(k,a.call(k,P.call(k,r),P.call(k,w),P.call(k,u)),e.call(k,a,Q.call(k,r),Q.call(k,w),Q.call(k,u))):k})}function c(a,c,d){return new W(k,m,function(){var f=O.call(k,c),r=O.call(k,d);return B(B(f)?r:f)?M.call(k,a.call(k,P.call(k,f),P.call(k,r)),e.call(k,a,Q.call(k,f),Q.call(k,r))):k})}function d(a,c){return new W(k,m,function(){var d=O.call(k,c);return B(d)?M.call(k,
+a.call(k,P.call(k,d)),e.call(k,a,Q.call(k,d))):k})}var e=k,f=function(){function a(d,e,f,h,u){var H=k;t(u)&&(H=N(Array.prototype.slice.call(arguments,4),0));return c.call(this,d,e,f,h,H)}function c(a,d,f,h,j){return e.call(k,function(c){return V.call(k,a,c)},function aa(a){return new W(k,m,function(){var c=e.call(k,O,a);return B(kf.call(k,mf,c))?M.call(k,e.call(k,P,c),aa.call(k,e.call(k,Q,c))):k})}.call(k,te.call(k,j,h,f,d)))}a.b=4;a.a=function(a){var d=P(a),e=P(R(a)),f=P(R(R(a))),h=P(R(R(R(a)))),
+a=Q(R(R(R(a))));return c.call(this,d,e,f,h,a)};return a}(),e=function(e,j,l,q,r){switch(arguments.length){case 2:return d.call(this,e,j);case 3:return c.call(this,e,j,l);case 4:return a.call(this,e,j,l,q);default:return f.apply(this,arguments)}b("Invalid arity: "+arguments.length)};e.b=4;e.a=f.a;return e}(),of=function nf(c,d){return new W(k,m,function(){if(B(0<c)){var e=O.call(k,d);return B(e)?M.call(k,P.call(k,e),nf.call(k,c-1,Q.call(k,e))):k}return k})};
+function pf(a,c){function d(a,c){for(;;){var d=O.call(k,c),j=0<a;if(B(B(j)?d:j))j=a-1,d=Q.call(k,d),a=j,c=d;else return d}}return new W(k,m,function(){return d.call(k,a,c)})}function qf(a,c){function d(a,c){for(;;){var d=O.call(k,c),j;j=d;j=B(j)?a.call(k,P.call(k,d)):j;if(B(j))j=a,d=Q.call(k,d),a=j,c=d;else return d}}return new W(k,m,function(){return d.call(k,a,c)})}
+var rf=function(){function a(a){return new W(k,m,function(){return M.call(k,a,c.call(k,a))})}var c=k;return c=function(d,e){switch(arguments.length){case 1:return a.call(this,d);case 2:return of.call(k,d,c.call(k,e))}b("Invalid arity: "+arguments.length)}}(),sf=function(){function a(a,d){return new W(k,m,function(){var h=O.call(k,a),j=O.call(k,d);return B(B(h)?j:h)?M.call(k,P.call(k,h),M.call(k,P.call(k,j),c.call(k,Q.call(k,h),Q.call(k,j)))):k})}var c=k,d=function(){function a(c,e,l){var q=k;t(l)&&
+(q=N(Array.prototype.slice.call(arguments,2),0));return d.call(this,c,e,q)}function d(a,e,f){return new W(k,m,function(){var d=X.call(k,O,te.call(k,f,e,a));return B(kf.call(k,mf,d))?gf.call(k,X.call(k,P,d),V.call(k,c,X.call(k,Q,d))):k})}a.b=2;a.a=function(a){var c=P(a),e=P(R(a)),a=Q(R(a));return d.call(this,c,e,a)};return a}(),c=function(c,f,h){switch(arguments.length){case 2:return a.call(this,c,f);default:return d.apply(this,arguments)}b("Invalid arity: "+arguments.length)};c.b=2;c.a=d.a;return c}();
+function tf(a,c){return pf.call(k,1,sf.call(k,rf.call(k,a),c))}function uf(a){return function d(a,f){return new W(k,m,function(){var h=O.call(k,a);return B(h)?M.call(k,P.call(k,h),d.call(k,Q.call(k,h),f)):B(O.call(k,f))?d.call(k,P.call(k,f),Q.call(k,f)):k})}.call(k,k,a)}
+var vf=function(){var a=k,c=function(){function a(c,d,h){var j=k;t(h)&&(j=N(Array.prototype.slice.call(arguments,2),0));return uf.call(k,V.call(k,X,c,d,j))}a.b=2;a.a=function(a){var c=P(a),d=P(R(a)),a=Q(R(a));return uf.call(k,V.call(k,X,c,d,a))};return a}(),a=function(a,e,f){switch(arguments.length){case 2:return uf.call(k,X.call(k,a,e));default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=2;a.a=c.a;return a}(),xf=function wf(c,d){return new W(k,m,function(){var e=O.call(k,
+d);if(B(e)){var f=P.call(k,e),e=Q.call(k,e);return B(c.call(k,f))?M.call(k,f,wf.call(k,c,e)):wf.call(k,c,e)}return k})};function yf(a,c){return Pe.call(k,Pd,a,c)}
+var zf=function(){function a(a,c,h,j){return new W(k,m,function(){var l=O.call(k,j);if(B(l)){var q=of.call(k,a,l);return B(G.call(k,a,ue.call(k,q)))?M.call(k,q,d.call(k,a,c,h,pf.call(k,c,l))):J.call(k,of.call(k,a,gf.call(k,q,h)))}return k})}function c(a,c,h){return new W(k,m,function(){var j=O.call(k,h);if(B(j)){var l=of.call(k,a,j);return B(G.call(k,a,ue.call(k,l)))?M.call(k,l,d.call(k,a,c,pf.call(k,c,j))):k}return k})}var d=k;return d=function(e,f,h,j){switch(arguments.length){case 2:return d.call(k,
+e,e,f);case 3:return c.call(this,e,f,h);case 4:return a.call(this,e,f,h,j)}b("Invalid arity: "+arguments.length)}}();function Af(a,c){this.c=a;this.l=c}o=Af.prototype;o.p=function(a){return ne.call(k,a)};o.R=function(){return function(a,c,d){switch(arguments.length){case 2:return E.call(k,a,c,k);case 3:return E.call(k,a,c,d)}b("Invalid arity: "+arguments.length)}}();o.ua=function(a,c,d){a=Nd.call(k,this.l);a[c]=d;return new Af(this.c,a)};
+o.call=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,this,c);case 3:return F.call(k,this,c,d)}b("Invalid arity: "+arguments.length)}}();o.U=i;o.t=function(a,c){var d=Nd.call(k,this.l);d.push(c);return new Af(this.c,d)};o.ba=function(){return function(a,c,d){switch(arguments.length){case 2:return le.call(k,this.l,c);case 3:return le.call(k,this.l,c,d)}b("Invalid arity: "+arguments.length)}}();
+o.k=function(){var a=this;return B(0<a.l.length)?function d(e){return new W(k,m,function(){return B(e<a.l.length)?M.call(k,a.l[e],d.call(k,e+1)):k})}.call(k,0):k};o.o=function(){return this.l.length};o.mb=i;o.j=function(a,c){return oe.call(k,a,c)};o.C=function(a,c){return new Af(c,this.l)};o.v=i;o.B=n("c");
+o.I=function(){return function(a,c,d){switch(arguments.length){case 2:var e=0<=c;return B(B(e)?c<this.l.length:e)?this.l[c]:k;case 3:return e=0<=c,B(B(e)?c<this.l.length:e)?this.l[c]:d}b("Invalid arity: "+arguments.length)}}();var Bf=new Af(k,Od.call(k));function Cf(a){return new Af(k,a)}function Df(a){return Pe.call(k,te,Bf,a)}var Ef=function(){function a(a){var d=k;t(a)&&(d=N(Array.prototype.slice.call(arguments,0),0));return Df.call(k,d)}a.b=0;a.a=function(a){a=O(a);return Df.call(k,a)};return a}();
+function Ff(){}Ff.prototype.j=ca(m);var Gf=new Ff;function Hf(a,c){return Ke.call(k,B(De.call(k,c))?B(G.call(k,ue.call(k,a),ue.call(k,c)))?kf.call(k,mf,X.call(k,function(a){return G.call(k,U.call(k,c,P.call(k,a),Gf),qe.call(k,a))},a)):k:k)}function If(a,c,d){for(var e=d.length,f=0;;)if(B(f<e)){if(B(G.call(k,c,d[f])))return f;f+=a}else return k}
+var Jf=function(){var a=k;return a=function(c,d,e,f){switch(arguments.length){case 2:return a.call(k,c,d,i,m);case 4:var h=x.call(k,c);return B(B(h)?d.hasOwnProperty(c):h)?e:f}b("Invalid arity: "+arguments.length)}}();function Kf(a,c,d){this.c=a;this.keys=c;this.N=d}o=Kf.prototype;o.p=function(a){return ne.call(k,a)};o.R=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,a,c,k);case 3:return Jf.call(k,c,this.N,this.N[c],d)}b("Invalid arity: "+arguments.length)}}();
+o.ua=function(a,c,d){if(B(x.call(k,c))){var a=Gb.call(k,this.N),e=a.hasOwnProperty(c);a[c]=d;if(B(e))return new Kf(this.c,this.keys,a);d=Nd.call(k,this.keys);d.push(c);return new Kf(this.c,d,a)}return xe.call(k,yf.call(k,L.call(k,c,d),O.call(k,a)),this.c)};o.Ca=function(a,c){return Jf.call(k,c,this.N)};o.call=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,this,c);case 3:return F.call(k,this,c,d)}b("Invalid arity: "+arguments.length)}}();
+o.t=function(a,c){return B(Ee.call(k,c))?Ud.call(k,a,E.call(k,c,0),E.call(k,c,1)):Pe.call(k,Pd,a,c)};o.k=function(){var a=this;return B(0<a.keys.length)?X.call(k,function(c){return Ef.call(k,c,a.N[c])},a.keys):k};o.o=function(){return this.keys.length};o.j=function(a,c){return Hf.call(k,a,c)};o.C=function(a,c){return new Kf(c,this.keys,this.N)};o.v=i;o.B=n("c");o.Ra=i;
+o.Da=function(a,c){var d=x.call(k,c);if(B(B(d)?this.N.hasOwnProperty(c):d)){var d=Nd.call(k,this.keys),e=Gb.call(k,this.N);d.splice(If.call(k,1,c,d),1);He.call(k,e,c);return new Kf(this.c,d,e)}return a};Od.call(k);function Lf(a,c){return new Kf(k,a,c)}function Mf(a,c,d){this.c=a;this.w=c;this.F=d}o=Mf.prototype;o.p=function(a){return ne.call(k,a)};
+o.R=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,a,c,k);case 3:var e=this.F[ze.call(k,c)],f=B(e)?If.call(k,2,c,e):k;return B(f)?e[f+1]:d}b("Invalid arity: "+arguments.length)}}();
+o.ua=function(a,c,d){var a=ze.call(k,c),e=this.F[a];if(B(e)){var e=Nd.call(k,e),f=Gb.call(k,this.F);f[a]=e;a=If.call(k,2,c,e);if(B(a))return e[a+1]=d,new Mf(this.c,this.w,f);e.push(c,d);return new Mf(this.c,this.w+1,f)}e=Gb.call(k,this.F);e[a]=Od.call(k,c,d);return new Mf(this.c,this.w+1,e)};o.Ca=function(a,c){var d=this.F[ze.call(k,c)],d=B(d)?If.call(k,2,c,d):k;return B(d)?i:m};
+o.call=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,this,c);case 3:return F.call(k,this,c,d)}b("Invalid arity: "+arguments.length)}}();o.t=function(a,c){return B(Ee.call(k,c))?Ud.call(k,a,E.call(k,c,0),E.call(k,c,1)):Pe.call(k,Pd,a,c)};o.k=function(){var a=this;if(B(0<a.w)){var c=Ge.call(k,a.F).sort();return vf.call(k,function(c){return X.call(k,Df,zf.call(k,2,a.F[c]))},c)}return k};o.o=n("w");o.j=function(a,c){return Hf.call(k,a,c)};
+o.C=function(a,c){return new Mf(c,this.w,this.F)};o.v=i;o.B=n("c");o.Ra=i;o.Da=function(a,c){var d=ze.call(k,c),e=this.F[d],f=B(e)?If.call(k,2,c,e):k;if(B(S.call(k,f)))return a;var h=Gb.call(k,this.F);B(3>e.length)?He.call(k,h,d):(e=Nd.call(k,e),e.splice(f,2),h[d]=e);return new Mf(this.c,this.w-1,h)};var Nf=new Mf(k,0,Fe.call(k));function Of(a,c){for(var d=a.length,e=0,f=Nf;;)if(B(e<d))var h=e+1,f=ve.call(k,f,a[e],c[e]),e=h;else return f}
+var L=function(){function a(a){var e=k;t(a)&&(e=N(Array.prototype.slice.call(arguments,0),0));return c.call(this,e)}function c(a){for(var a=O.call(k,a),c=Nf;;)if(B(a))var f=re.call(k,a),c=ve.call(k,c,P.call(k,a),qe.call(k,a)),a=f;else return c}a.b=0;a.a=function(a){a=O(a);return c.call(this,a)};return a}();function Pf(a){return O.call(k,X.call(k,P,a))}function Qf(a,c){this.c=a;this.va=c}o=Qf.prototype;o.p=function(a){return ne.call(k,a)};
+o.R=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,a,c,k);case 3:return B(Td.call(k,this.va,c))?c:d}b("Invalid arity: "+arguments.length)}}();o.call=function(){return function(a,c,d){switch(arguments.length){case 2:return F.call(k,this,c);case 3:return F.call(k,this,c,d)}b("Invalid arity: "+arguments.length)}}();o.t=function(a,c){return new Qf(this.c,ve.call(k,this.va,c,k))};o.k=function(){return Pf.call(k,this.va)};o.lb=i;
+o.o=function(a){return ue.call(k,O.call(k,a))};o.j=function(a,c){var d=Be.call(k,c);return B(d)?(d=G.call(k,ue.call(k,a),ue.call(k,c)),B(d)?kf.call(k,function(c){return Oe.call(k,a,c)},c):d):d};o.C=function(a,c){return new Qf(c,this.va)};o.v=i;o.B=n("c");var Rf=new Qf(k,L.call(k));function Y(a){for(var a=O.call(k,a),c=Rf;;)if(B(S.call(k,Ae.call(k,a))))var d=Q.call(k,a),c=te.call(k,c,P.call(k,a)),a=d;else return c}
+function Sf(a){if(B(Le.call(k,a)))return a;var c;c=Me.call(k,a);c=B(c)?c:Ne.call(k,a);if(B(c))return c=a.lastIndexOf("/"),B(0>c)?Ve.call(k,a,2):Ve.call(k,a,c+1);B("\ufdd0'else")&&b(Error(K.call(k,"Doesn't support name: ",a)));return k}function Tf(a){var c;c=Me.call(k,a);c=B(c)?c:Ne.call(k,a);if(B(c))return c=a.lastIndexOf("/"),B(-1<c)?Ve.call(k,a,2,c):k;b(Error(K.call(k,"Doesn't support namespace: ",a)))}
+var Vf=function Uf(c,d){return new W(k,m,function(){var e=O.call(k,d);return B(e)?B(c.call(k,P.call(k,e)))?M.call(k,P.call(k,e),Uf.call(k,c,Q.call(k,e))):k:k})};function Wf(a,c,d,e){this.c=a;this.start=c;this.end=d;this.step=e}o=Wf.prototype;o.p=function(a){return ne.call(k,a)};o.U=i;o.t=function(a,c){return M.call(k,c,a)};o.ba=function(){return function(a,c,d){switch(arguments.length){case 2:return le.call(k,a,c);case 3:return le.call(k,a,c,d)}b("Invalid arity: "+arguments.length)}}();
+o.k=function(a){return B((B(0<this.step)?Re:Se).call(k,this.start,this.end))?a:k};o.o=function(a){return B(S.call(k,fe.call(k,a)))?0:Math.ceil.call(k,(this.end-this.start)/this.step)};o.ca=i;o.S=n("start");o.T=function(a){return B(fe.call(k,a))?new Wf(this.c,this.start+this.step,this.end,this.step):J.call(k)};o.j=function(a,c){return oe.call(k,a,c)};o.C=function(a,c){return new Wf(c,this.start,this.end,this.step)};o.v=i;o.B=n("c");
+o.I=function(){return function(a,c,d){switch(arguments.length){case 2:var e;if(B(c<D.call(k,a)))e=this.start+c*this.step;else{var f;f=this.start>this.end;f=B(f)?G.call(k,this.step,0):f;B(f)?e=this.start:b(Error("Index out of bounds"))}return e;case 3:return B(c<D.call(k,a))?e=this.start+c*this.step:(e=this.start>this.end,e=B(e)?G.call(k,this.step,0):e,e=B(e)?this.start:d),e}b("Invalid arity: "+arguments.length)}}();
+var Xf=function(){var a=k;return a=function(c,d,e){switch(arguments.length){case 0:return a.call(k,0,Number.MAX_VALUE,1);case 1:return a.call(k,0,c,1);case 2:return a.call(k,c,d,1);case 3:return new Wf(k,c,d,e)}b("Invalid arity: "+arguments.length)}}();function Yf(a,c){var d=a.exec(c);return B(I.call(k,d))?k:B(G.call(k,ue.call(k,d),1))?P.call(k,d):Df.call(k,d)}function Zf(a,c,d,e,f,h){return gf.call(k,Cf([c]),uf.call(k,tf.call(k,Cf([d]),X.call(k,function(c){return a.call(k,c,f)},h))),Cf([e]))}
+var ag=function $f(c,d){return B(I.call(k,c))?J.call(k,"nil"):B(g===c)?J.call(k,"#<undefined>"):B("\ufdd0'else")?gf.call(k,B(function(){var e=U.call(k,d,"\ufdd0'meta");return B(e)?(B(c)?(e=c.v,e=B(e)?S.call(k,c.hasOwnProperty("cljs$core$IMeta$")):e):e=c,e=B(e)?i:Md.call(k,$d,c),B(e)?ye.call(k,c):e):e}())?gf.call(k,Cf(["^"]),$f.call(k,ye.call(k,c),d),Cf([" "])):k,B(function(){var d;B(c)?(d=c.q,d=B(d)?S.call(k,c.hasOwnProperty("cljs$core$IPrintable$")):d):d=c;return B(d)?i:Md.call(k,he,c)}())?ie.call(k,
+c,d):J.call(k,"#<",K.call(k,c),">")):k};function bg(a,c){var d=P.call(k,a),e=new Pa,f=O.call(k,a);if(B(f))for(var h=P.call(k,f);;){B(h===d)||e.append(" ");var j=O.call(k,ag.call(k,h,c));if(B(j))for(h=P.call(k,j);;)if(e.append(h),h=R.call(k,j),B(h))j=h,h=P.call(k,j);else break;f=R.call(k,f);if(B(f))h=f,f=P.call(k,h),j=h,h=f,f=j;else break}return K.call(k,e)}
+function cg(){return Lf(["\ufdd0'flush-on-newline","\ufdd0'readably","\ufdd0'meta","\ufdd0'dup"],{"\ufdd0'flush-on-newline":i,"\ufdd0'readably":i,"\ufdd0'meta":m,"\ufdd0'dup":m})}var dg=function(){function a(a){var d=k;t(a)&&(d=N(Array.prototype.slice.call(arguments,0),0));return bg.call(k,d,cg.call(k))}a.b=0;a.a=function(a){a=O(a);return bg.call(k,a,cg.call(k))};return a}();Mf.prototype.q=i;
+Mf.prototype.m=function(a,c){return Zf.call(k,function(a){return Zf.call(k,ag,""," ","",c,a)},"{",", ","}",c,a)};he.number=i;ie.number=function(a){return J.call(k,K.call(k,a))};me.prototype.q=i;me.prototype.m=function(a,c){return Zf.call(k,ag,"("," ",")",c,a)};W.prototype.q=i;W.prototype.m=function(a,c){return Zf.call(k,ag,"("," ",")",c,a)};he["boolean"]=i;ie["boolean"]=function(a){return J.call(k,K.call(k,a))};Qf.prototype.q=i;Qf.prototype.m=function(a,c){return Zf.call(k,ag,"#{"," ","}",c,a)};
+he.string=i;ie.string=function(a,c){return B(Me.call(k,a))?J.call(k,K.call(k,":",function(){var c=Tf.call(k,a);return B(c)?K.call(k,c,"/"):k}(),Sf.call(k,a))):B(Ne.call(k,a))?J.call(k,K.call(k,function(){var c=Tf.call(k,a);return B(c)?K.call(k,c,"/"):k}(),Sf.call(k,a))):B("\ufdd0'else")?J.call(k,B("\ufdd0'readably".call(k,c))?Ea.call(k,a):a):k};Af.prototype.q=i;Af.prototype.m=function(a,c){return Zf.call(k,ag,"["," ","]",c,a)};Xe.prototype.q=i;
+Xe.prototype.m=function(a,c){return Zf.call(k,ag,"("," ",")",c,a)};he.array=i;ie.array=function(a,c){return Zf.call(k,ag,"#<Array [",", ","]>",c,a)};Ye.prototype.q=i;Ye.prototype.m=function(){return J.call(k,"()")};af.prototype.q=i;af.prototype.m=function(a,c){return Zf.call(k,ag,"("," ",")",c,a)};Wf.prototype.q=i;Wf.prototype.m=function(a,c){return Zf.call(k,ag,"("," ",")",c,a)};Kf.prototype.q=i;
+Kf.prototype.m=function(a,c){return Zf.call(k,function(a){return Zf.call(k,ag,""," ","",c,a)},"{",", ","}",c,a)};function eg(a,c,d,e){this.state=a;this.c=c;this.Bb=d;this.Pa=e}o=eg.prototype;o.p=function(a){return ia.call(k,a)};o.Ta=function(a,c,d){var e=O.call(k,this.Pa);if(B(e)){var f=P.call(k,e);T.call(k,f,0,k);for(T.call(k,f,1,k);;){var h=f,f=T.call(k,h,0,k),h=T.call(k,h,1,k);h.call(k,f,a,c,d);e=R.call(k,e);if(B(e))f=e,e=P.call(k,f),h=f,f=e,e=h;else return k}}else return k};
+o.Sa=function(a,c,d){return a.Pa=ve.call(k,this.Pa,c,d)};o.q=i;o.m=function(a,c){return gf.call(k,Cf(["#<Atom: "]),ie.call(k,this.state,c),">")};o.v=i;o.B=n("c");o.kb=n("state");o.j=function(a,c){return a===c};
+var fg=function(){var a=k,c=function(){function a(d,h){var j=k;t(h)&&(j=N(Array.prototype.slice.call(arguments,1),0));return c.call(this,d,j)}function c(a,d){var e=B(Je.call(k,d))?V.call(k,L,d):d,l=U.call(k,e,"\ufdd0'validator"),e=U.call(k,e,"\ufdd0'meta");return new eg(a,e,l,k)}a.b=1;a.a=function(a){var d=P(a),a=Q(a);return c.call(this,d,a)};return a}(),a=function(a,e){switch(arguments.length){case 1:return new eg(a,k,k,k);default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};
+a.b=1;a.a=c.a;return a}();function gg(a,c){var d=a.Bb;B(d)&&!B(d.call(k,c))&&b(Error(K.call(k,"Assert failed: ","Validator rejected reference state","\n",dg.call(k,xe(J("\ufdd1'validate","\ufdd1'new-value"),L("\ufdd0'line",3061))))));d=a.state;a.state=c;je.call(k,a,d,c);return c}
+var hg=function(){var a=k,c=function(){function a(c,d,h,j,l,q){var r=k;t(q)&&(r=N(Array.prototype.slice.call(arguments,5),0));return gg.call(k,c,V.call(k,d,c.state,h,j,l,r))}a.b=5;a.a=function(a){var c=P(a),d=P(R(a)),j=P(R(R(a))),l=P(R(R(R(a)))),q=P(R(R(R(R(a))))),a=Q(R(R(R(R(a)))));return gg.call(k,c,V.call(k,d,c.state,j,l,q,a))};return a}(),a=function(a,e,f,h,j,l){switch(arguments.length){case 2:return gg.call(k,a,e.call(k,a.state));case 3:return gg.call(k,a,e.call(k,a.state,f));case 4:return gg.call(k,
+a,e.call(k,a.state,f,h));case 5:return gg.call(k,a,e.call(k,a.state,f,h,j));default:return c.apply(this,arguments)}b("Invalid arity: "+arguments.length)};a.b=5;a.a=c.a;return a}();function Z(a){return Zd.call(k,a)}fg.call(k,function(){return Lf(["\ufdd0'parents","\ufdd0'descendants","\ufdd0'ancestors"],{"\ufdd0'parents":Lf([],{}),"\ufdd0'descendants":Lf([],{}),"\ufdd0'ancestors":Lf([],{})})}.call(k));var ig=fg.call(k,Lf([],{})),jg=function(){var a=k;return a=function(c,d,e){switch(arguments.length){case 2:return a.call(k,k,c,d);case 3:var f=Lf(["\ufdd0'max-count","\ufdd0'event-pred","\ufdd0'reactor"],{"\ufdd0'max-count":c,"\ufdd0'event-pred":d,"\ufdd0'reactor":e});hg.call(k,ig,ve,f,0);return f}b("Invalid arity: "+arguments.length)}}();function kg(a){return hg.call(k,ig,we,a)}
+var lg=function(){function a(a,c){var f=xf.call(k,function(c){var e=T.call(k,c,0,k),e=B(Je.call(k,e))?V.call(k,L,e):e,e=U.call(k,e,"\ufdd0'event-pred");T.call(k,c,1,k);return e.call(k,a)},Z.call(k,ig)),h=O.call(k,f);if(B(h)){f=P.call(k,h);T.call(k,f,0,k);T.call(k,f,1,k);for(var j=h;;){var h=f,f=T.call(k,h,0,k),h=T.call(k,h,1,k),l=f,l=B(Je.call(k,l))?V.call(k,L,l):l,q=U.call(k,l,"\ufdd0'reactor"),r=U.call(k,l,"\ufdd0'max-count"),w=h+1;q.call(k,a,c);B(function(){var a=r;return B(a)?r<=w:a}())?kg.call(k,
+f):hg.call(k,ig,ve,f,w);f=R.call(k,j);if(B(f))h=f,f=P.call(k,h),j=h;else return k}}else return k}var c=k;return c=function(d,e){switch(arguments.length){case 1:return c.call(k,d,k);case 2:return a.call(this,d,e)}b("Invalid arity: "+arguments.length)}}();function mg(a){if(B(B(a)?a.Fa:a))a=a.Fa(a);else{var c;var d=mg[s.call(k,a)];B(d)?c=d:(d=mg._,B(d)?c=d:b(C.call(k,"DomContent.single-node",a)));a=c.call(k,a)}return a}function ng(a){return bd.call(k,Sf.call(k,a))}function og(a,c){return mg.call(k,a).getAttribute(Sf.call(k,c))}
+var pg=function(){function a(a,e){return B(e<a.length)?new W(k,m,function(){return M.call(k,a.item(e),c.call(k,a,e+1))}):k}var c=k;return c=function(d,e){switch(arguments.length){case 1:return c.call(k,d,0);case 2:return a.call(this,d,e)}b("Invalid arity: "+arguments.length)}}();function qg(a){return document.createElement(B(a)?B(Y(["td","th"]).call(k,a))?"tr":"table":"div")}function rg(a,c){return B(y)?(a.innerHTML=K.call(k,"<br>",c),a.removeChild(a.firstChild)):a.innerHTML=c}
+function sg(a,c){var d=B(G.call(k,c,"tr"))?P.call(k,cd.call(k,"tbody",k,a)):a,e=d.childNodes;return B(G.call(k,e.length,1))?d.removeChild(d.firstChild):e}function tg(a){var c=Yf.call(k,/^<(t(head|body|foot|[rhd]))/,a);T.call(k,c,0,k);var d=T.call(k,c,1,k);Te.call(k,c,2);c=qg.call(k,d);rg.call(k,c,a);return sg.call(k,c,d)}mg._=function(a){return P.call(k,a)};DocumentFragment.prototype.Fa=ba();Element.prototype.Fa=ba();mg.string=function(a){return mg.call(k,tg.call(k,a))};
+NodeList.prototype.k=function(a){return pg.call(k,a)};NodeList.prototype.I=function(){return function(a,c,d){switch(arguments.length){case 2:return a.item(c);case 3:return B(a.length<=c)?d:T.call(k,a,c)}b("Invalid arity: "+arguments.length)}}();NodeList.prototype.o=function(a){return a.length};
+if(B(window.Cb))StaticNodeList.prototype.k=function(a){return pg.call(k,a)},StaticNodeList.prototype.I=function(){return function(a,c,d){switch(arguments.length){case 2:return a.item(c);case 3:return B(a.length<=c)?d:T.call(k,a,c)}b("Invalid arity: "+arguments.length)}}(),StaticNodeList.prototype.o=function(a){return a.length};HTMLCollection.prototype.k=function(a){return pg.call(k,a)};
+HTMLCollection.prototype.I=function(){return function(a,c,d){switch(arguments.length){case 2:return a.item(c);case 3:return B(a.length<=c)?d:T.call(k,a,c)}b("Invalid arity: "+arguments.length)}}();HTMLCollection.prototype.o=function(a){return a.length};var ug={},vg=fg.call(k,Lf([],{})),wg=fg.call(k,k),xg=fg.call(k,m),yg=fg.call(k,k),zg=fg.call(k,k),Ag=function(){function a(a){var e=k;t(a)&&(e=N(Array.prototype.slice.call(arguments,0),0));return c.call(this,e)}function c(a){return Ed.call(k,"org_html_slideshow.main").info(V.call(k,dg,a))}a.b=0;a.a=function(a){a=O(a);return c.call(this,a)};return a}(),$=function(){return function(a,c,d){switch(arguments.length){case 1:return yb.call(k,cd.call(k,a));case 2:return yb.call(k,cd.call(k,a,c));case 3:return yb.call(k,
+cd.call(k,a,c,d))}b("Invalid arity: "+arguments.length)}}();function Bg(a){return a.parentNode.removeChild(a)}var Cg=function(){var a=k;return a=function(c,d){switch(arguments.length){case 1:return a.call(k,c,k);case 2:return P.call(k,$.call(k,"head",k,d)).appendChild(c)}b("Invalid arity: "+arguments.length)}}();function Dg(){return P.call(k,$.call(k,"body"))}function Eg(a){var c=a.firstChild;if(B(c))return c;c=a.nextSibling;if(B(c))return c;a=a.parentNode;return B(a)?a.nextSibling:k}
+function Fg(){return cc.call(k,window.location).ea}function Gg(a){var c=cc.call(k,window.location);Vb(c,a);return window.location=K.call(k,c)}function Hg(a){return function(c){B(c)&&(c.preventDefault(),c.stopPropagation());return lg.call(k,a,c)}}function Ig(a){return B(a)?nd.call(k,mg.call(k,a),i):k}function Jg(a){return B(a)?nd.call(k,mg.call(k,a),m):k}
+function Kg(a){return Y.call(k,X.call(k,function(a){return og.call(k,a,"href")},xf.call(k,function(c){var d=G.call(k,"stylesheet",og.call(k,c,"rel"));return B(d)?G.call(k,a,og.call(k,c,"media")):d},$.call(k,"link"))))}function Lg(a){var c=O.call(k,xf.call(k,function(c){var d=G.call(k,"stylesheet",og.call(k,c,"rel"));return B(d)?Oe.call(k,a,og.call(k,c,"href")):d},$.call(k,"link")));if(B(c))for(var d=P.call(k,c);;)if(Bg.call(k,d),d=R.call(k,c),B(d))c=d,d=P.call(k,c);else return k;else return k}
+var Mg=function(){function a(a,c){var f=O.call(k,a);if(B(f))for(var h=P.call(k,f);;)if(Cg.call(k,function(){var a=gd.call(k,"link");a.setAttribute("rel","stylesheet");a.setAttribute("type","text/css");a.setAttribute("href",h);return a}(),c),f=R.call(k,f),B(f))var j=f,h=f=P.call(k,j),f=j;else return k;else return k}var c=k;return c=function(d,e){switch(arguments.length){case 1:return c.call(k,d,k);case 2:return a.call(this,d,e)}b("Invalid arity: "+arguments.length)}}();
+function Ng(){return Df.call(k,X.call(k,function(a){return Lf(["\ufdd0'head-elem","\ufdd0'body-elem"],{"\ufdd0'head-elem":a.parentNode.parentNode,"\ufdd0'body-elem":P.call(k,$.call(k,"div",k,Og.call(k,a)))})},$.call(k,"span","fold")))}function Pg(a,c){if(B(od.call(k,c)))return nd.call(k,c,m),Zc.call(k,a,"unfolded"),Yc.call(k,a,"folded");nd.call(k,c,i);Zc.call(k,a,"folded");return Yc.call(k,a,"unfolded")}
+function Qg(a){a.preventDefault();var a=a.currentTarget,c=P.call(k,$.call(k,"div",k,Og.call(k,a)));return Pg.call(k,a,c)}
+function Rg(){var a=O.call(k,Ng.call(k));if(B(a)){var c=P.call(k,a),d=B(Je.call(k,c))?V.call(k,L,c):c;U.call(k,d,"\ufdd0'body-elem");for(U.call(k,d,"\ufdd0'head-elem");;)if(d=B(Je.call(k,c))?V.call(k,L,c):c,c=U.call(k,d,"\ufdd0'body-elem"),d=U.call(k,d,"\ufdd0'head-elem"),Pg.call(k,d,c),c=jd.call(k,' <a href="#" class="show-hide"><span>show/hide</span></a>'),d.appendChild(c),$.call(k,"a","show-hide",d),A.call(k,d,"click",Qg),a=R.call(k,a),B(a))c=a,a=P.call(k,c),d=c,c=a,a=d;else return k}else return k}
+function Sg(){return ld.call(k,bd.call(k,"c-panel"),"opacity",0.75)}function Tg(){return ld.call(k,bd.call(k,"c-panel"),"opacity",0)}
+function Ug(){Dg.call(k).appendChild(jd.call(k,'<div id="c-panel">\n<a id="c-toggle" href="#">\n <span class="label">Toggle slide-show mode</span>\n <span class="key">T</span>\n</a>\n<a id="c-first" href="#">\n <span class="label">First slide</span>\n <span class="key">Home</span>\n</a>\n<a id="c-prev" href="#">\n <span class="label">Previous slide</span>\n <span class="key">P</span>\n</a>\n<a id="c-next" href="#">\n <span class="label">Next slide</span>\n <span class="key">N</span>\n</a>\n<a id="c-last" href="#">\n <span class="label">Last slide</span>\n <span class="key">End</span>\n</a>\n<a id="c-presenter-window" href="#">\n <span class="label">Open presenter preview</span>\n</a>\n</div>'));var a=
+bd.call(k,"c-panel");lg.call(k,"\ufdd0'show-control-panel");ud.call(k,Hg.call(k,"\ufdd0'hide-control-panel"),3E3);A.call(k,a,"mouseover",Hg.call(k,"\ufdd0'show-control-panel"));A.call(k,a,"mouseout",Hg.call(k,"\ufdd0'hide-control-panel"));A.call(k,bd.call(k,"c-toggle"),"click",Hg.call(k,"\ufdd0'toggle-mode"));A.call(k,bd.call(k,"c-first"),"click",Hg.call(k,"\ufdd0'show-first-slide"));A.call(k,bd.call(k,"c-prev"),"click",Hg.call(k,"\ufdd0'show-prev-slide"));A.call(k,bd.call(k,"c-next"),"click",Hg.call(k,
+"\ufdd0'show-next-slide"));A.call(k,bd.call(k,"c-last"),"click",Hg.call(k,"\ufdd0'show-last-slide"));return A.call(k,bd.call(k,"c-presenter-window"),"click",Hg.call(k,"\ufdd0'show-presenter-window"))}function Og(a){for(;;){if(B(G.call(k,"DIV",a.nodeName)))return a;a=a.parentNode}}var Vg=Y.call(k,X.call(k,function(a){return K.call(k,"H",a)},Xf.call(k,1,9)));function Wg(a){for(;;){if(B(Oe.call(k,Vg,a.nodeName)))return a;a=Eg.call(k,a)}}
+function Xg(){var a=O.call(k,$.call(k,"span","tag"));if(B(a))for(var c=P.call(k,a);;){var d=Og.call(k,c),e=O.call(k,$.call(k,"span",k,c));if(B(e))for(c=P.call(k,e);;)if(Yc.call(k,d,Xc.call(k,c)),c=R.call(k,e),B(c))e=c,c=P.call(k,e);else break;a=R.call(k,a);if(B(a))d=a,c=a=P.call(k,d),a=d;else return k}else return k}
+function Yg(a){var a=a.cloneNode(i),c=O.call(k,$.call(k,"div",k,a));if(B(c))for(var d=P.call(k,c),e=c;;)if(B(function(){var a=S.call(k);return B(a)?lf.call(k,function(a){return function(c){return $c.call(k,a,K.call(k,"outline-",c))}}(d,e),Xf.call(k,1,9)):a}())&&Bg.call(k,d),c=R.call(k,e),B(c))var f=c,d=c=P.call(k,f),e=f;else break;return a}function Zg(a){a=P.call(k,xf.call(k,function(a){var d=G.call(k,"DIV",a.nodeName);return B(d)?$c.call(k,a,"notes"):d},a.children));return B(a)?kd.call(k,a):""}
+function $g(){return Df.call(k,X.call(k,function(a){return Lf(["\ufdd0'id","\ufdd0'html","\ufdd0'notes-html"],{"\ufdd0'id":Wg.call(k,a).id,"\ufdd0'html":kd.call(k,Yg.call(k,a)),"\ufdd0'notes-html":Zg.call(k,a)})},$.call(k,"div","slide")))}function ah(a){return lf.call(k,function(c){return B(G.call(k,a,"\ufdd0'id".call(k,c)))?c:k},Z.call(k,wg))}function bh(a){return qe.call(k,qf.call(k,function(c){return 0<ta.call(k,a,"\ufdd0'id".call(k,c))},Z.call(k,wg)))}
+function ch(){var a=Fg.call(k),c=ah.call(k,a);if(B(c))return c;c=O.call(k,a);a=B(c)?bh.call(k,a):c;return B(a)?a:P.call(k,Z.call(k,wg))}function dh(){return bh.call(k,"\ufdd0'id".call(k,ch.call(k)))}function eh(a){var c=B(Je.call(k,a))?V.call(k,L,a):a,a=U.call(k,c,"\ufdd0'html"),c=U.call(k,c,"\ufdd0'id");Gg.call(k,c);bd.call(k,"current-slide").innerHTML=a;return fh.call(k)}
+function gh(){Ag.call(k,xe(J("\ufdd1'enter-slideshow-mode"),L("\ufdd0'line",290)));Jg.call(k,ng.call(k,"preamble"));Jg.call(k,ng.call(k,"content"));Jg.call(k,ng.call(k,"postamble"));Lg.call(k,U.call(k,Z.call(k,vg),"screen"));Mg.call(k,U.call(k,Z.call(k,vg),"projection"));Ig.call(k,ng.call(k,"current-slide"));return eh.call(k,ch.call(k))}
+function hh(){Ag.call(k,xe(J("\ufdd1'leave-slideshow-mode"),L("\ufdd0'line",300)));Jg.call(k,ng.call(k,"current-slide"));Lg.call(k,U.call(k,Z.call(k,vg),"projection"));Mg.call(k,U.call(k,Z.call(k,vg),"screen"));Ig.call(k,ng.call(k,"preamble"));Ig.call(k,ng.call(k,"content"));Ig.call(k,ng.call(k,"postamble"));return bd.call(k,Fg.call(k)).scrollIntoView()}function ih(){return B(Z.call(k,xg))?gh.call(k):hh.call(k)}
+function jh(){Ag.call(k,xe(J("\ufdd1'toggle-mode"),L("\ufdd0'line",315)));return hg.call(k,xg,S)}(function(a,c,d){return ke.call(k,a,c,d)}).call(k,xg,"\ufdd0'change-mode",function(){return lg.call(k,"\ufdd0'change-mode")});function kh(){var a=ch.call(k),c=qe.call(k,qf.call(k,function(c){return jf.call(k,a,c)},Z.call(k,wg)));B(c)&&eh.call(k,c);return hg.call(k,zg,function(a){return B(I.call(k,a))?(new Date).getTime():a})}
+function lh(){var a=ch.call(k),c=se.call(k,Vf.call(k,function(c){return jf.call(k,a,c)},Z.call(k,wg)));return B(c)?eh.call(k,c):k}function mh(){return eh.call(k,P.call(k,Z.call(k,wg)))}function nh(){return eh.call(k,se.call(k,Z.call(k,wg)))}function oh(){Gg.call(k,"top");return ug.window.scrollTo(0,0)}var ph=Of([84,36],["\ufdd0'toggle-mode","\ufdd0'go-to-top"]),qh=Of([32,84,35,80,37,34,13,33,78,40,38,39,3,36],"\ufdd0'show-next-slide,\ufdd0'toggle-mode,\ufdd0'show-last-slide,\ufdd0'show-prev-slide,\ufdd0'show-prev-slide,\ufdd0'show-next-slide,\ufdd0'show-next-slide,\ufdd0'show-prev-slide,\ufdd0'show-next-slide,\ufdd0'show-next-slide,\ufdd0'show-prev-slide,\ufdd0'show-next-slide,\ufdd0'show-next-slide,\ufdd0'show-first-slide".split(","));
+function rh(a){var c=a.keyCode,d=B(Z.call(k,xg))?qh:ph,c=U.call(k,d,c);return B(c)?(lg.call(k,c),a.preventDefault(),a.stopPropagation()):k}function sh(a){return A.call(k,new Qc(a),"key",rh)}function th(){return B(Z.call(k,yg))?B(Z.call(k,yg).closed)?gg.call(k,yg,k):Z.call(k,yg):k}
+function uh(a){var c=new Date,d=c.getHours();return a.document.getElementById("presenter-clock-time").innerHTML=Ra.call(k,'<span>%d:%02d:%02d<span id="presenter-clock-time-ampm"> %s</span></span>',B(12<d)?d-12:d,c.getMinutes(),c.getSeconds(),B(12<=d)?"pm":"am")}function vh(){var a=(new Date).getTime()-Z.call(k,zg);return Ra.call(k,"%d:%02d:%02d",a/36E5,a/6E4%60,a/1E3%60)}function wh(a){return a.document.getElementById("presenter-elapsed-time").innerHTML=B(Z.call(k,zg))?vh.call(k):"0:00:00"}
+var yh=function xh(){var c=th.call(k);return B(c)?(uh.call(k,c),wh.call(k,c),window.setTimeout(xh,1E3)):k};function zh(){gg.call(k,zg,k);var a=th.call(k);return B(a)?wh.call(k,a):k}
+function fh(){var a=th.call(k);if(B(a)){var c=ch.call(k),d=B(Je.call(k,c))?V.call(k,L,c):c,c=U.call(k,d,"\ufdd0'notes-html"),d=U.call(k,d,"\ufdd0'html");a.document.getElementById("presenter-current-slide").innerHTML=d;a.document.getElementById("presenter-notes-container").innerHTML=c;return a.document.getElementById("presenter-next-slide").innerHTML="\ufdd0'html".call(k,dh.call(k))}return k}
+function Ah(){var a=th.call(k);if(B(a))return a.focus();gg.call(k,yg,Ld.call(k,"",Lf(["\ufdd0'target","\ufdd0'toolbar","\ufdd0'location","\ufdd0'statusbar","\ufdd0'menubar"],{"\ufdd0'target":"PRESENTERDISPLAY","\ufdd0'toolbar":m,"\ufdd0'location":m,"\ufdd0'statusbar":m,"\ufdd0'menubar":m}).N));a=Z.call(k,yg).document;a.write('\n<html>\n <head>\n </head>\n <body class="presenter-display">\n <div id="presenter-slide-preview">\n <div id="presenter-current-slide-container">\n <span class="presenter-label">Current Slide</span>\n <div id="presenter-current-slide">\n </div>\n </div>\n <div id="presenter-next-slide-container">\n <span class="presenter-label">Next Slide</span>\n <div id="presenter-next-slide">\n </div>\n </div>\n </div>\n <div id="presenter-notes-container"></div>\n <div id="presenter-times" class="presenter-label">\n <div id="presenter-elapsed-time-container">\n <span id="presenter-elapsed-time">0:00:00</span>\n <span id="presenter-elapsed-time-reset-container">\n <a href="#" id="presenter-elapsed-time-reset">reset</a>\n </span>\n </div>\n <div id="presenter-clock-time"><span></span></div>\n </div>\n </body>\n</html>\n');
+Mg.call(k,U.call(k,Z.call(k,vg),"common"),a);Mg.call(k,U.call(k,Z.call(k,vg),"projection"),a);Mg.call(k,U.call(k,Z.call(k,vg),"presenter"),a);sh.call(k,a);A.call(k,a.getElementById("presenter-elapsed-time-reset"),"click",Hg.call(k,"\ufdd0'reset-elapsed-time"));fh.call(k);return yh.call(k)}
+function Bh(){jg.call(k,Y(["\ufdd0'show-next-slide"]),function(){return kh.call(k)});jg.call(k,Y(["\ufdd0'show-prev-slide"]),function(){return lh.call(k)});jg.call(k,Y(["\ufdd0'show-first-slide"]),function(){return mh.call(k)});jg.call(k,Y(["\ufdd0'show-last-slide"]),function(){return nh.call(k)});jg.call(k,Y(["\ufdd0'toggle-mode"]),function(){return jh.call(k)});jg.call(k,Y(["\ufdd0'go-to-top"]),function(){return oh.call(k)});jg.call(k,Y(["\ufdd0'show-control-panel"]),function(){return Sg.call(k)});
+jg.call(k,Y(["\ufdd0'hide-control-panel"]),function(){return Tg.call(k)});jg.call(k,Y(["\ufdd0'change-mode"]),function(){return ih.call(k)});jg.call(k,Y(["\ufdd0'show-presenter-window"]),function(){return Ah.call(k)});return jg.call(k,Y(["\ufdd0'reset-elapsed-time"]),function(){return zh.call(k)})}function Ch(){return hg.call(k,vg,ve,"projection",Kg.call(k,"projection"),"screen",Kg.call(k,"screen"),"common",Kg.call(k,k),"presenter",Kg.call(k,"presenter"))}
+function Dh(){var a=O.call(k,$.call(k,"img"));if(B(a))for(var c=P.call(k,a);;)if(c=c.parentNode,B(G.call(k,"P",c.nodeName))&&Yc.call(k,c,"image"),c=R.call(k,a),B(c))a=c,c=P.call(k,a);else return k;else return k}
+function Eh(){var a=O.call(k,Xf.call(k,1,9));if(B(a))for(var c=P.call(k,a);;){var d=O.call(k,$.call(k,"div",K.call(k,"outline-text-",c)));if(B(d))for(c=P.call(k,d);;)if(Yc.call(k,c,"outline-text"),c=R.call(k,d),B(c))d=c,c=P.call(k,d);else break;a=R.call(k,a);if(B(a))c=a,a=P.call(k,c),d=c,c=a,a=d;else return k}else return k}
+(function(){var a=new Kd;if(i!=a.Xa){Jd();var c=Id,d=a.vb;if(!c.pa)c.pa=[];c.pa.push(d);a.Xa=i}Ag.call(k,"Application started");Ag.call(k,"Preparing document");Ch.call(k);Lg.call(k,U.call(k,Z.call(k,vg),"projection"));Lg.call(k,U.call(k,Z.call(k,vg),"presenter"));Dh.call(k);Xg.call(k);Eh.call(k);Rg.call(k);Dg.call(k).appendChild(jd.call(k,'<div id="current-slide"></div>'));Jg.call(k,ng.call(k,"current-slide"));gg.call(k,wg,$g.call(k));Ag.call(k,xe(J("\ufdd1'count","\ufdd1'slides"),L("\ufdd0'line",
+559)),ue.call(k,Z.call(k,wg)));Ag.call(k,"Installing key handler");Bh.call(k);Ug.call(k);return sh.call(k,ad.call(k))}).call(k);
\ No newline at end of file
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/presenter.css b/md/TechWorks/decks/oscon2012-clojure/slide-assets/presenter.css
new file mode 100644
index 0000000..7e7c5c6
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/presenter.css
@@ -0,0 +1,97 @@
+/* Org-HTML-Slideshow presenter styles.
+ *
+ * These styles will apply only to the presenter preview.
+ */
+
+body.presenter-display {
+ background-color: black;
+}
+
+.presenter-label {
+ color: white;
+ font-family: Helvetica, Arial, sans-serif;
+}
+
+#presenter-current-slide-container {
+ bottom: 200px;
+ height: 40%;
+ left: 1%;
+ overflow: hidden;
+ position: absolute;
+ top: 0;
+ vertical-align: top;
+ width: 50%;
+ zoom: 60%;
+}
+
+#presenter-next-slide-container {
+ height: 30%;
+ overflow: hidden;
+ position: absolute;
+ right: 1%;
+ top: 1%;
+ vertical-align: top;
+ width: 40%;
+ zoom: 50%;
+}
+
+#presenter-current-slide {
+ background: white;
+ height: 100%;
+ padding: 12pt;
+}
+
+#presenter-next-slide {
+ background: white;
+ height: 100%;
+ padding: 12pt;
+}
+
+#presenter-times {
+ bottom: 1%;
+ font-size: 2.5em;
+ position: absolute;
+ text-align: center;
+ height: 12%;
+ width: 98%;
+}
+
+#presenter-elapsed-time-container {
+ position: absolute;
+ left: 1%;
+ width: 45%;
+}
+
+#presenter-clock-time {
+ position: absolute;
+ right: 1%;
+ width: 45%;
+}
+
+#presenter-clock-time-ampm {
+ font-size: 0.5em;
+}
+
+#presenter-elapsed-time-reset-container {
+ font-size: 12pt;
+}
+
+a#presenter-elapsed-time-reset {
+ color: cyan;
+}
+
+#presenter-notes-container {
+ position: absolute;
+ overflow: auto;
+ top: 40%;
+ left: 10px;
+ height: 45%;
+ width: 98%;
+ font-size: 18pt;
+ color: white;
+}
+
+#presenter-notes-container h1,#presenter-notes-container h2,#presenter-notes-container h3,#presenter-notes-container h4,#presenter-notes-container h5,#presenter-notes-container h6,#presenter-notes-container h7,#presenter-notes-container h8 {
+ font-size: 12pt;
+ text-align: left;
+}
\ No newline at end of file
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/projection.css b/md/TechWorks/decks/oscon2012-clojure/slide-assets/projection.css
new file mode 100644
index 0000000..82fd772
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/projection.css
@@ -0,0 +1,120 @@
+/* Org-HTML-Slideshow projection styles.
+ *
+ * These styles will apply only to the slide-show view.
+ */
+
+/*
+ * dark blue: #3C5996
+ * light blue: #90B4FE
+ * light green: #91DC47
+ * dark green: #63B131
+ */
+
+@import url(http://fonts.googleapis.com/css?family=Ubuntu+Mono);
+@import url(http://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic,700italic);
+@import url(http://fonts.googleapis.com/css?family=Bitter:400,700);
+
+
+body {
+ margin: 18pt;
+ font-size: 24pt;
+ background-color: #DDE3F0;
+/* background-image: url("background.jpeg");*/
+ background-size: cover;
+ font-family: 'PT Sans', sans-serif;
+}
+
+.presenters {
+ text-align: right;
+ position: absolute;
+ bottom: 0;
+ right: 20px;
+}
+
+#clojure-logo {
+ width: 300px;
+ height: 300px;
+ margin: 0 auto;
+ display: block;
+}
+
+/* Use all headings as slide titles, regardless of level. */
+h1,h2,h3,h4,h5,h6,h7,h8 {
+ font-family: 'Bitter', serif;
+ font-size: 48pt;
+ margin: 18pt;
+ text-align: center;
+}
+
+h1 code, h2 code, h3 code, h4 code, h5 code, h6 code, h7 code, h8 code {
+ background-color: inherit;
+}
+
+ul {
+ padding-left: 0;
+}
+
+li {
+ margin: 12pt;
+ list-style: none;
+}
+
+li li {
+ margin-left: 2em;
+ list-style: disc;
+}
+
+/* Center embedded images. */
+p.image {
+ text-align: center;
+}
+
+/* Hide Org-Mode tags in slide-show view. */
+span.tag {
+ display: none;
+}
+
+/* Hide Org-Mode section numbers in slide-show view. */
+span.section-number-1,span.section-number-2,span.section-number-3,span.section-number-4,span.section-number-5,span.section-number-6,span.section-number-7,span.section-number-8 {
+ display: none;
+}
+
+.blue_background {
+ background: blue;
+ color: white;
+}
+
+.colorize-highlight {
+ color: blue;
+}
+
+code {
+ background-color: #eee;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ color: black;
+ font-family: 'Ubuntu Mono', sans-serif;
+ font-size: .9em;
+ padding: 2px 4px;
+}
+
+pre code {
+ display: block;
+ overflow: auto;
+}
+
+pre {
+ background-color: #eee;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+ -webkit-box-shadow: 1px 1px 1px #999;
+ box-shadow: 1px 1px 1px #999;
+ color: black;
+ font-family: 'Ubuntu Mono', sans-serif;
+ margin-bottom: 40px;
+ padding: 20px;
+ line-height: initial;
+ font-size: 22px;
+}
\ No newline at end of file
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/screen.css b/md/TechWorks/decks/oscon2012-clojure/slide-assets/screen.css
new file mode 100644
index 0000000..e69de29
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/structure-and-semantics.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/structure-and-semantics.svg
new file mode 100644
index 0000000..f3eb39d
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/structure-and-semantics.svg
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ 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"
+ width="892.59766"
+ height="451.45312"
+ id="svg3873"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="structure-and-semantics.svg">
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="417.34324"
+ inkscape:cy="232.48438"
+ inkscape:current-layer="layer1"
+ inkscape:document-units="px"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="1680"
+ inkscape:window-height="1002"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" />
+ <defs
+ id="defs3875">
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path4468"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path4450"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2LendQ"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2LendQ"
+ style="overflow:visible">
+ <path
+ id="path5265"
+ style="font-size:12px;fill:#63b132;fill-rule:evenodd;stroke:#63b132;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2LendQr"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2LendQr"
+ style="overflow:visible">
+ <path
+ id="path5335"
+ style="font-size:12px;fill:#5881d8;fill-rule:evenodd;stroke:#5881d8;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2LendQE"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2LendQE"
+ style="overflow:visible">
+ <path
+ id="path5338"
+ style="font-size:12px;fill:#5881d8;fill-rule:evenodd;stroke:#5881d8;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2LendQ4"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2LendQ4"
+ style="overflow:visible">
+ <path
+ id="path5341"
+ style="font-size:12px;fill:#5881d8;fill-rule:evenodd;stroke:#5881d8;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ </defs>
+ <metadata
+ id="metadata3878">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ transform="translate(-48.878906,-167.03125)">
+ <text
+ xml:space="preserve"
+ style="font-size:96px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Anonymous Pro;-inkscape-font-specification:Anonymous Pro"
+ x="332.5625"
+ y="410.53125"
+ id="text3881"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3883"
+ x="332.5625"
+ y="410.53125">(+ 3 4)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:48px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#63b132;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ x="196"
+ y="226"
+ id="text3889"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3891"
+ x="196"
+ y="226">List</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3893"
+ y="226"
+ x="370"
+ style="font-size:48px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#63b132;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ y="226"
+ x="370"
+ id="tspan3895"
+ sodipodi:role="line">Symbol</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:48px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#63b132;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ x="658"
+ y="226"
+ id="text3897"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3899"
+ x="658"
+ y="226">Numbers</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text4409"
+ y="586"
+ x="191.77734"
+ style="font-size:48px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#5881d8;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ y="586"
+ x="191.77734"
+ sodipodi:role="line"
+ id="tspan4421">Invocation</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:48px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#5881d8;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ x="390"
+ y="586"
+ id="text4413"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4415"
+ x="390"
+ y="586">Function</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text4417"
+ y="586"
+ x="658"
+ style="font-size:48px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#5881d8;fill-opacity:1;stroke:none;font-family:Helvetica,Arial,sans-serif;-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ y="586"
+ x="658"
+ id="tspan4419"
+ sodipodi:role="line">Arguments</tspan></text>
+ <path
+ style="fill:#63b132;fill-opacity:1;stroke:#63b132;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-mid:none;marker-end:url(#Arrow2LendQ)"
+ d="m 259,241 77,89"
+ id="path4442"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path5313"
+ d="m 433.81493,233 -25,90"
+ style="fill:#63b132;fill-opacity:1;stroke:#63b132;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-mid:none;marker-end:url(#Arrow2LendQ)" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path5317"
+ d="m 662.81493,236 -77,89"
+ style="fill:#63b132;fill-opacity:1;stroke:#63b132;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-mid:none;marker-end:url(#Arrow2LendQ)" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path5319"
+ d="m 263,525.09135 77,-89"
+ style="fill:#63b132;fill-opacity:1;stroke:#5881d8;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-mid:none;marker-end:url(#Arrow2LendQr)" />
+ <path
+ style="fill:#63b132;fill-opacity:1;stroke:#5881d8;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-mid:none;marker-end:url(#Arrow2LendQ4)"
+ d="m 437.81493,533.09135 -25,-90"
+ id="path5321"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:#63b132;fill-opacity:1;stroke:#5881d8;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-mid:none;marker-end:url(#Arrow2LendQE)"
+ d="m 666.81493,530.09135 -77,-89"
+ id="path5323"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
diff --git a/md/TechWorks/decks/oscon2012-clojure/slide-assets/traditional-evaluation.svg b/md/TechWorks/decks/oscon2012-clojure/slide-assets/traditional-evaluation.svg
new file mode 100644
index 0000000..c69eb6b
--- /dev/null
+++ b/md/TechWorks/decks/oscon2012-clojure/slide-assets/traditional-evaluation.svg
@@ -0,0 +1,420 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="762.20959"
+ height="338.28711"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="traditional-evaluation.svg">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3889">
+ <stop
+ style="stop-color:#dd83e2;stop-opacity:1;"
+ offset="0"
+ id="stop3891" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3893" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3881">
+ <stop
+ id="stop3883"
+ offset="0"
+ style="stop-color:#f2b840;stop-opacity:1;" />
+ <stop
+ id="stop3885"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3867">
+ <stop
+ style="stop-color:#fed990;stop-opacity:1;"
+ offset="0"
+ id="stop3869" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3871" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="TriangleOutL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutL"
+ style="overflow:visible">
+ <path
+ id="path3979"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3857"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3839"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 382.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="990 : 382.5 : 1"
+ inkscape:persp3d-origin="495 : 255 : 1"
+ id="perspective3888" />
+ <linearGradient
+ id="linearGradient3787">
+ <stop
+ id="stop3789"
+ offset="0"
+ style="stop-color:#91dc47;stop-opacity:1;" />
+ <stop
+ id="stop3791"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3765">
+ <stop
+ id="stop3767"
+ offset="0"
+ style="stop-color:#dcdcdc;stop-opacity:1;" />
+ <stop
+ id="stop3769"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3874"
+ gradientUnits="userSpaceOnUse"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3765"
+ id="linearGradient3909"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-79.002155,81.288185)"
+ x1="220.17732"
+ y1="551.9975"
+ x2="185.32698"
+ y2="406.91125" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="linearGradient3926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3867"
+ id="linearGradient3933"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient3947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4033"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3881"
+ id="linearGradient4064"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.72527472,12.192118,474.50919)"
+ x1="843.66382"
+ y1="447.39532"
+ x2="827.87561"
+ y2="340.10468" />
+ <inkscape:perspective
+ id="perspective21"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3867"
+ id="linearGradient3852"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-30.367596,0)"
+ x1="263.02637"
+ y1="508.26315"
+ x2="243.19038"
+ y2="392.0405" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.70710678"
+ inkscape:cx="475.66794"
+ inkscape:cy="-32.998004"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="in"
+ inkscape:window-width="1538"
+ inkscape:window-height="849"
+ inkscape:window-x="291"
+ inkscape:window-y="88"
+ inkscape:window-maximized="0"
+ fit-margin-top="18"
+ fit-margin-left="18"
+ fit-margin-right="18"
+ fit-margin-bottom="18" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-39.64899,-298.57677)">
+ <g
+ id="g3903"
+ transform="translate(-1.4658473,-155.21641)">
+ <rect
+ y="485.02948"
+ x="64.864838"
+ height="164.83743"
+ width="127.52402"
+ id="rect2987"
+ style="fill:url(#linearGradient3909);fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3771"
+ y="556.96301"
+ x="127.95782"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ xml:space="preserve"><tspan
+ y="556.96301"
+ x="127.95782"
+ id="tspan3773"
+ sodipodi:role="line">Source</tspan><tspan
+ id="tspan3775"
+ y="586.96301"
+ x="127.95782"
+ sodipodi:role="line">Code</tspan></text>
+ </g>
+ <g
+ id="g3252"
+ transform="translate(-148.49242,-581.24177)">
+ <path
+ inkscape:transform-center-x="-1.1598852"
+ sodipodi:type="star"
+ style="fill:#ffa7d8;fill-opacity:1;stroke:#000000;stroke-width:4.41909409;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3904"
+ sodipodi:sides="8"
+ sodipodi:cx="665.68964"
+ sodipodi:cy="90.775864"
+ sodipodi:r1="101.04758"
+ sodipodi:r2="70.720428"
+ sodipodi:arg1="0.84515599"
+ sodipodi:arg2="1.2357786"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 732.74628,166.36699 -43.80476,-8.80244 -29.28667,34.07852 -24.75039,-37.19891 -44.80595,3.38835 8.80244,-43.80477 -34.07852,-29.286667 37.19891,-24.750382 -3.38835,-44.805957 43.80477,8.80244 29.28667,-34.078521 24.75038,37.198913 44.80596,-3.38835 -8.80244,43.804767 34.07852,29.286671 -37.19892,24.750386 z"
+ transform="matrix(0.53156998,0.19407428,-0.19402176,0.53124187,521.7111,779.3226)"
+ inkscape:transform-center-y="-4.4649423" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ x="857.77246"
+ y="964.20227"
+ id="text3908"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="857.77246"
+ y="964.20227"
+ id="tspan3910">Effect</tspan></text>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 200.83767,430.40428 82.13796,100.98885"
+ id="path3831"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2.50000048;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
+ d="m 436.39702,568.74237 191.5247,0.67026"
+ id="path3812"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path3814"
+ d="m 708.28122,524.76311 0.0566,-95.37748"
+ style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <path
+ transform="matrix(0.7628205,0,0,0.65048544,153.54384,277.30748)"
+ d="m 358.44828,451.05295 c 0,34.67763 -42.57706,62.78941 -95.09852,62.78941 -52.52146,0 -95.09852,-28.11178 -95.09852,-62.78941 0,-34.67764 42.57706,-62.78941 95.09852,-62.78941 52.52146,0 95.09852,28.11177 95.09852,62.78941 z"
+ sodipodi:ry="62.78941"
+ sodipodi:rx="95.098518"
+ sodipodi:cy="451.05295"
+ sodipodi:cx="263.34976"
+ id="path3859"
+ style="fill:url(#linearGradient3852);fill-opacity:1;stroke:#000000;stroke-width:3.54903293;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ sodipodi:type="arc" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ x="353.77032"
+ y="577.33191"
+ id="text3861"
+ sodipodi:linespacing="125%"><tspan
+ id="tspan4001"
+ sodipodi:role="line"
+ x="353.77032"
+ y="577.33191">Compiler</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ x="300.53568"
+ y="466.39804"
+ id="text3958"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3960"
+ x="300.53568"
+ y="466.39804"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica">characters</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ x="514.14911"
+ y="558.72632"
+ id="text3968"
+ sodipodi:linespacing="125%"><tspan
+ id="tspan3972"
+ sodipodi:role="line"
+ x="514.14911"
+ y="558.72632"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica">bytecode</tspan></text>
+ <g
+ id="g4039"
+ transform="translate(-146.05403,-188.0904)">
+ <rect
+ rx="25.603449"
+ ry="25.603447"
+ y="720.73639"
+ x="783.95325"
+ height="80.467979"
+ width="140.20937"
+ id="rect4025"
+ style="fill:url(#linearGradient4064);fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica Bold"
+ x="709.80273"
+ y="579.22571"
+ id="text4035"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4037"
+ x="709.80273"
+ y="579.22571">JVM</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:'Helvetica','Arial','sans-serif';-inkscape-font-specification:Helvetica"
+ x="251.78104"
+ y="325.73691"
+ id="text3380"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3382"
+ x="251.78104"
+ y="325.73691">compilation unit = file or class</tspan></text>
+ </g>
+</svg>
diff --git a/md/TechWorks/demos/flapjax/Glass_TTY_VT220.ttf b/md/TechWorks/demos/flapjax/Glass_TTY_VT220.ttf
new file mode 100644
index 0000000..ed8fd85
Binary files /dev/null and b/md/TechWorks/demos/flapjax/Glass_TTY_VT220.ttf differ
diff --git a/md/TechWorks/demos/flapjax/cljs_flapjax_frp.pdf b/md/TechWorks/demos/flapjax/cljs_flapjax_frp.pdf
new file mode 100644
index 0000000..7c0dec3
Binary files /dev/null and b/md/TechWorks/demos/flapjax/cljs_flapjax_frp.pdf differ
diff --git a/md/TechWorks/demos/flapjax/demo.css b/md/TechWorks/demos/flapjax/demo.css
new file mode 100644
index 0000000..c161c3a
--- /dev/null
+++ b/md/TechWorks/demos/flapjax/demo.css
@@ -0,0 +1,50 @@
+/* Chunks borrowed from the awesome http://webcache.googleusercontent.com/search?q=cache:trtUaFrcxHIJ:https://challenge.synacor.com/+&cd=1&hl=en&ct=clnk&gl=us */
+
+@font-face {
+ font-family: term;
+ src: url("Glass_TTY_VT220.ttf") format("truetype");
+}
+
+body {
+ margin: 30px auto 0 auto;
+ background-color: #051005;
+ color: #0f0;
+ font-size: 30pt;
+ font-family: "term", monospace;
+ text-shadow: 0 0 0.4em #30bb30;
+ width: 800px;
+}
+
+h1 {
+ font-size: 100%;
+}
+
+h2 {
+ font-weight: normal;
+ font-size: 100%;
+ margin: 0;
+ display: inline;
+ color: #ffffff;
+ text-shadow:
+ 0 0 0.2em #ffffff,
+ 0 0 0.4em #ffffff,
+ 0 0 0.8em #ffffff,
+ 0 0 1.6em #ffffff;
+}
+
+input {
+ border: 0;
+ padding: 0;
+ margin: 0;
+ font-size: inherit;
+ font-family: inherit;
+ color: inherit;
+ background-color: transparent;
+}
+
+input.text {
+ width: 14em;
+ text-shadow:
+ 0 0 0.4em #30bb30,
+ 0 0 0.8em #30bb30;
+}
\ No newline at end of file
diff --git a/md/TechWorks/demos/flapjax/index.html b/md/TechWorks/demos/flapjax/index.html
new file mode 100644
index 0000000..269f674
--- /dev/null
+++ b/md/TechWorks/demos/flapjax/index.html
@@ -0,0 +1,24 @@
+<html>
+ <head>
+ <script type="text/javascript" src="http://www.flapjax-lang.org/download/flapjax-2.1.js"></script>
+ <script type="text/javascript" src="main.js"></script>
+ <link href="demo.css"/ media="screen" rel="stylesheet" type="text/css">
+ <title>Flapjax Demo</title>
+</style>
+</head>
+
+<body onload="alandipert.flapjax_demo.sum.calculate('result', 'n1', 'n2', 'n3')">
+ <h1>Flapjax Sum Demo</h1>
+ <!-- Inputs -->
+ <input type="text" id="n1" value="0"/>
+ <input type="text" id="n2" value="0"/>
+ <input type="text" id="n3" value="0"/>
+ <br/>
+ <h2>--------------------------------------</h2>
+ <br/>
+ <strong>=</strong>
+ <!-- Result -->
+ <span id="result"/>
+</body>
+
+</html>
diff --git a/md/TechWorks/demos/flapjax/main.js b/md/TechWorks/demos/flapjax/main.js
new file mode 100644
index 0000000..fcbf3b2
--- /dev/null
+++ b/md/TechWorks/demos/flapjax/main.js
@@ -0,0 +1,20887 @@
+var CLOSURE_NO_DEPS = true;
+var COMPILED = false;
+var goog = goog || {};
+goog.global = this;
+goog.DEBUG = true;
+goog.LOCALE = "en";
+goog.provide = function(name) {
+ if(!COMPILED) {
+ if(goog.isProvided_(name)) {
+ throw Error('Namespace "' + name + '" already declared.');
+ }
+ delete goog.implicitNamespaces_[name];
+ var namespace = name;
+ while(namespace = namespace.substring(0, namespace.lastIndexOf("."))) {
+ if(goog.getObjectByName(namespace)) {
+ break
+ }
+ goog.implicitNamespaces_[namespace] = true
+ }
+ }
+ goog.exportPath_(name)
+};
+goog.setTestOnly = function(opt_message) {
+ if(COMPILED && !goog.DEBUG) {
+ opt_message = opt_message || "";
+ throw Error("Importing test-only code into non-debug environment" + opt_message ? ": " + opt_message : ".");
+ }
+};
+if(!COMPILED) {
+ goog.isProvided_ = function(name) {
+ return!goog.implicitNamespaces_[name] && !!goog.getObjectByName(name)
+ };
+ goog.implicitNamespaces_ = {}
+}
+goog.exportPath_ = function(name, opt_object, opt_objectToExportTo) {
+ var parts = name.split(".");
+ var cur = opt_objectToExportTo || goog.global;
+ if(!(parts[0] in cur) && cur.execScript) {
+ cur.execScript("var " + parts[0])
+ }
+ for(var part;parts.length && (part = parts.shift());) {
+ if(!parts.length && goog.isDef(opt_object)) {
+ cur[part] = opt_object
+ }else {
+ if(cur[part]) {
+ cur = cur[part]
+ }else {
+ cur = cur[part] = {}
+ }
+ }
+ }
+};
+goog.getObjectByName = function(name, opt_obj) {
+ var parts = name.split(".");
+ var cur = opt_obj || goog.global;
+ for(var part;part = parts.shift();) {
+ if(goog.isDefAndNotNull(cur[part])) {
+ cur = cur[part]
+ }else {
+ return null
+ }
+ }
+ return cur
+};
+goog.globalize = function(obj, opt_global) {
+ var global = opt_global || goog.global;
+ for(var x in obj) {
+ global[x] = obj[x]
+ }
+};
+goog.addDependency = function(relPath, provides, requires) {
+ if(!COMPILED) {
+ var provide, require;
+ var path = relPath.replace(/\\/g, "/");
+ var deps = goog.dependencies_;
+ for(var i = 0;provide = provides[i];i++) {
+ deps.nameToPath[provide] = path;
+ if(!(path in deps.pathToNames)) {
+ deps.pathToNames[path] = {}
+ }
+ deps.pathToNames[path][provide] = true
+ }
+ for(var j = 0;require = requires[j];j++) {
+ if(!(path in deps.requires)) {
+ deps.requires[path] = {}
+ }
+ deps.requires[path][require] = true
+ }
+ }
+};
+goog.ENABLE_DEBUG_LOADER = true;
+goog.require = function(name) {
+ if(!COMPILED) {
+ if(goog.isProvided_(name)) {
+ return
+ }
+ if(goog.ENABLE_DEBUG_LOADER) {
+ var path = goog.getPathFromDeps_(name);
+ if(path) {
+ goog.included_[path] = true;
+ goog.writeScripts_();
+ return
+ }
+ }
+ var errorMessage = "goog.require could not find: " + name;
+ if(goog.global.console) {
+ goog.global.console["error"](errorMessage)
+ }
+ throw Error(errorMessage);
+ }
+};
+goog.basePath = "";
+goog.global.CLOSURE_BASE_PATH;
+goog.global.CLOSURE_NO_DEPS;
+goog.global.CLOSURE_IMPORT_SCRIPT;
+goog.nullFunction = function() {
+};
+goog.identityFunction = function(var_args) {
+ return arguments[0]
+};
+goog.abstractMethod = function() {
+ throw Error("unimplemented abstract method");
+};
+goog.addSingletonGetter = function(ctor) {
+ ctor.getInstance = function() {
+ return ctor.instance_ || (ctor.instance_ = new ctor)
+ }
+};
+if(!COMPILED && goog.ENABLE_DEBUG_LOADER) {
+ goog.included_ = {};
+ goog.dependencies_ = {pathToNames:{}, nameToPath:{}, requires:{}, visited:{}, written:{}};
+ goog.inHtmlDocument_ = function() {
+ var doc = goog.global.document;
+ return typeof doc != "undefined" && "write" in doc
+ };
+ goog.findBasePath_ = function() {
+ if(goog.global.CLOSURE_BASE_PATH) {
+ goog.basePath = goog.global.CLOSURE_BASE_PATH;
+ return
+ }else {
+ if(!goog.inHtmlDocument_()) {
+ return
+ }
+ }
+ var doc = goog.global.document;
+ var scripts = doc.getElementsByTagName("script");
+ for(var i = scripts.length - 1;i >= 0;--i) {
+ var src = scripts[i].src;
+ var qmark = src.lastIndexOf("?");
+ var l = qmark == -1 ? src.length : qmark;
+ if(src.substr(l - 7, 7) == "base.js") {
+ goog.basePath = src.substr(0, l - 7);
+ return
+ }
+ }
+ };
+ goog.importScript_ = function(src) {
+ var importScript = goog.global.CLOSURE_IMPORT_SCRIPT || goog.writeScriptTag_;
+ if(!goog.dependencies_.written[src] && importScript(src)) {
+ goog.dependencies_.written[src] = true
+ }
+ };
+ goog.writeScriptTag_ = function(src) {
+ if(goog.inHtmlDocument_()) {
+ var doc = goog.global.document;
+ doc.write('<script type="text/javascript" src="' + src + '"></' + "script>");
+ return true
+ }else {
+ return false
+ }
+ };
+ goog.writeScripts_ = function() {
+ var scripts = [];
+ var seenScript = {};
+ var deps = goog.dependencies_;
+ function visitNode(path) {
+ if(path in deps.written) {
+ return
+ }
+ if(path in deps.visited) {
+ if(!(path in seenScript)) {
+ seenScript[path] = true;
+ scripts.push(path)
+ }
+ return
+ }
+ deps.visited[path] = true;
+ if(path in deps.requires) {
+ for(var requireName in deps.requires[path]) {
+ if(!goog.isProvided_(requireName)) {
+ if(requireName in deps.nameToPath) {
+ visitNode(deps.nameToPath[requireName])
+ }else {
+ throw Error("Undefined nameToPath for " + requireName);
+ }
+ }
+ }
+ }
+ if(!(path in seenScript)) {
+ seenScript[path] = true;
+ scripts.push(path)
+ }
+ }
+ for(var path in goog.included_) {
+ if(!deps.written[path]) {
+ visitNode(path)
+ }
+ }
+ for(var i = 0;i < scripts.length;i++) {
+ if(scripts[i]) {
+ goog.importScript_(goog.basePath + scripts[i])
+ }else {
+ throw Error("Undefined script input");
+ }
+ }
+ };
+ goog.getPathFromDeps_ = function(rule) {
+ if(rule in goog.dependencies_.nameToPath) {
+ return goog.dependencies_.nameToPath[rule]
+ }else {
+ return null
+ }
+ };
+ goog.findBasePath_();
+ if(!goog.global.CLOSURE_NO_DEPS) {
+ goog.importScript_(goog.basePath + "deps.js")
+ }
+}
+goog.typeOf = function(value) {
+ var s = typeof value;
+ if(s == "object") {
+ if(value) {
+ if(value instanceof Array) {
+ return"array"
+ }else {
+ if(value instanceof Object) {
+ return s
+ }
+ }
+ var className = Object.prototype.toString.call(value);
+ if(className == "[object Window]") {
+ return"object"
+ }
+ if(className == "[object Array]" || typeof value.length == "number" && typeof value.splice != "undefined" && typeof value.propertyIsEnumerable != "undefined" && !value.propertyIsEnumerable("splice")) {
+ return"array"
+ }
+ if(className == "[object Function]" || typeof value.call != "undefined" && typeof value.propertyIsEnumerable != "undefined" && !value.propertyIsEnumerable("call")) {
+ return"function"
+ }
+ }else {
+ return"null"
+ }
+ }else {
+ if(s == "function" && typeof value.call == "undefined") {
+ return"object"
+ }
+ }
+ return s
+};
+goog.propertyIsEnumerableCustom_ = function(object, propName) {
+ if(propName in object) {
+ for(var key in object) {
+ if(key == propName && Object.prototype.hasOwnProperty.call(object, propName)) {
+ return true
+ }
+ }
+ }
+ return false
+};
+goog.propertyIsEnumerable_ = function(object, propName) {
+ if(object instanceof Object) {
+ return Object.prototype.propertyIsEnumerable.call(object, propName)
+ }else {
+ return goog.propertyIsEnumerableCustom_(object, propName)
+ }
+};
+goog.isDef = function(val) {
+ return val !== undefined
+};
+goog.isNull = function(val) {
+ return val === null
+};
+goog.isDefAndNotNull = function(val) {
+ return val != null
+};
+goog.isArray = function(val) {
+ return goog.typeOf(val) == "array"
+};
+goog.isArrayLike = function(val) {
+ var type = goog.typeOf(val);
+ return type == "array" || type == "object" && typeof val.length == "number"
+};
+goog.isDateLike = function(val) {
+ return goog.isObject(val) && typeof val.getFullYear == "function"
+};
+goog.isString = function(val) {
+ return typeof val == "string"
+};
+goog.isBoolean = function(val) {
+ return typeof val == "boolean"
+};
+goog.isNumber = function(val) {
+ return typeof val == "number"
+};
+goog.isFunction = function(val) {
+ return goog.typeOf(val) == "function"
+};
+goog.isObject = function(val) {
+ var type = goog.typeOf(val);
+ return type == "object" || type == "array" || type == "function"
+};
+goog.getUid = function(obj) {
+ return obj[goog.UID_PROPERTY_] || (obj[goog.UID_PROPERTY_] = ++goog.uidCounter_)
+};
+goog.removeUid = function(obj) {
+ if("removeAttribute" in obj) {
+ obj.removeAttribute(goog.UID_PROPERTY_)
+ }
+ try {
+ delete obj[goog.UID_PROPERTY_]
+ }catch(ex) {
+ }
+};
+goog.UID_PROPERTY_ = "closure_uid_" + Math.floor(Math.random() * 2147483648).toString(36);
+goog.uidCounter_ = 0;
+goog.getHashCode = goog.getUid;
+goog.removeHashCode = goog.removeUid;
+goog.cloneObject = function(obj) {
+ var type = goog.typeOf(obj);
+ if(type == "object" || type == "array") {
+ if(obj.clone) {
+ return obj.clone()
+ }
+ var clone = type == "array" ? [] : {};
+ for(var key in obj) {
+ clone[key] = goog.cloneObject(obj[key])
+ }
+ return clone
+ }
+ return obj
+};
+Object.prototype.clone;
+goog.bindNative_ = function(fn, selfObj, var_args) {
+ return fn.call.apply(fn.bind, arguments)
+};
+goog.bindJs_ = function(fn, selfObj, var_args) {
+ if(!fn) {
+ throw new Error;
+ }
+ if(arguments.length > 2) {
+ var boundArgs = Array.prototype.slice.call(arguments, 2);
+ return function() {
+ var newArgs = Array.prototype.slice.call(arguments);
+ Array.prototype.unshift.apply(newArgs, boundArgs);
+ return fn.apply(selfObj, newArgs)
+ }
+ }else {
+ return function() {
+ return fn.apply(selfObj, arguments)
+ }
+ }
+};
+goog.bind = function(fn, selfObj, var_args) {
+ if(Function.prototype.bind && Function.prototype.bind.toString().indexOf("native code") != -1) {
+ goog.bind = goog.bindNative_
+ }else {
+ goog.bind = goog.bindJs_
+ }
+ return goog.bind.apply(null, arguments)
+};
+goog.partial = function(fn, var_args) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ return function() {
+ var newArgs = Array.prototype.slice.call(arguments);
+ newArgs.unshift.apply(newArgs, args);
+ return fn.apply(this, newArgs)
+ }
+};
+goog.mixin = function(target, source) {
+ for(var x in source) {
+ target[x] = source[x]
+ }
+};
+goog.now = Date.now || function() {
+ return+new Date
+};
+goog.globalEval = function(script) {
+ if(goog.global.execScript) {
+ goog.global.execScript(script, "JavaScript")
+ }else {
+ if(goog.global.eval) {
+ if(goog.evalWorksForGlobals_ == null) {
+ goog.global.eval("var _et_ = 1;");
+ if(typeof goog.global["_et_"] != "undefined") {
+ delete goog.global["_et_"];
+ goog.evalWorksForGlobals_ = true
+ }else {
+ goog.evalWorksForGlobals_ = false
+ }
+ }
+ if(goog.evalWorksForGlobals_) {
+ goog.global.eval(script)
+ }else {
+ var doc = goog.global.document;
+ var scriptElt = doc.createElement("script");
+ scriptElt.type = "text/javascript";
+ scriptElt.defer = false;
+ scriptElt.appendChild(doc.createTextNode(script));
+ doc.body.appendChild(scriptElt);
+ doc.body.removeChild(scriptElt)
+ }
+ }else {
+ throw Error("goog.globalEval not available");
+ }
+ }
+};
+goog.evalWorksForGlobals_ = null;
+goog.cssNameMapping_;
+goog.cssNameMappingStyle_;
+goog.getCssName = function(className, opt_modifier) {
+ var getMapping = function(cssName) {
+ return goog.cssNameMapping_[cssName] || cssName
+ };
+ var renameByParts = function(cssName) {
+ var parts = cssName.split("-");
+ var mapped = [];
+ for(var i = 0;i < parts.length;i++) {
+ mapped.push(getMapping(parts[i]))
+ }
+ return mapped.join("-")
+ };
+ var rename;
+ if(goog.cssNameMapping_) {
+ rename = goog.cssNameMappingStyle_ == "BY_WHOLE" ? getMapping : renameByParts
+ }else {
+ rename = function(a) {
+ return a
+ }
+ }
+ if(opt_modifier) {
+ return className + "-" + rename(opt_modifier)
+ }else {
+ return rename(className)
+ }
+};
+goog.setCssNameMapping = function(mapping, opt_style) {
+ goog.cssNameMapping_ = mapping;
+ goog.cssNameMappingStyle_ = opt_style
+};
+goog.global.CLOSURE_CSS_NAME_MAPPING;
+if(!COMPILED && goog.global.CLOSURE_CSS_NAME_MAPPING) {
+ goog.cssNameMapping_ = goog.global.CLOSURE_CSS_NAME_MAPPING
+}
+goog.getMsg = function(str, opt_values) {
+ var values = opt_values || {};
+ for(var key in values) {
+ var value = ("" + values[key]).replace(/\$/g, "$$$$");
+ str = str.replace(new RegExp("\\{\\$" + key + "\\}", "gi"), value)
+ }
+ return str
+};
+goog.exportSymbol = function(publicPath, object, opt_objectToExportTo) {
+ goog.exportPath_(publicPath, object, opt_objectToExportTo)
+};
+goog.exportProperty = function(object, publicName, symbol) {
+ object[publicName] = symbol
+};
+goog.inherits = function(childCtor, parentCtor) {
+ function tempCtor() {
+ }
+ tempCtor.prototype = parentCtor.prototype;
+ childCtor.superClass_ = parentCtor.prototype;
+ childCtor.prototype = new tempCtor;
+ childCtor.prototype.constructor = childCtor
+};
+goog.base = function(me, opt_methodName, var_args) {
+ var caller = arguments.callee.caller;
+ if(caller.superClass_) {
+ return caller.superClass_.constructor.apply(me, Array.prototype.slice.call(arguments, 1))
+ }
+ var args = Array.prototype.slice.call(arguments, 2);
+ var foundCaller = false;
+ for(var ctor = me.constructor;ctor;ctor = ctor.superClass_ && ctor.superClass_.constructor) {
+ if(ctor.prototype[opt_methodName] === caller) {
+ foundCaller = true
+ }else {
+ if(foundCaller) {
+ return ctor.prototype[opt_methodName].apply(me, args)
+ }
+ }
+ }
+ if(me[opt_methodName] === caller) {
+ return me.constructor.prototype[opt_methodName].apply(me, args)
+ }else {
+ throw Error("goog.base called from a method of one name " + "to a method of a different name");
+ }
+};
+goog.scope = function(fn) {
+ fn.call(goog.global)
+};
+goog.provide("goog.debug.Error");
+goog.debug.Error = function(opt_msg) {
+ this.stack = (new Error).stack || "";
+ if(opt_msg) {
+ this.message = String(opt_msg)
+ }
+};
+goog.inherits(goog.debug.Error, Error);
+goog.debug.Error.prototype.name = "CustomError";
+goog.provide("goog.string");
+goog.provide("goog.string.Unicode");
+goog.string.Unicode = {NBSP:"\u00a0"};
+goog.string.startsWith = function(str, prefix) {
+ return str.lastIndexOf(prefix, 0) == 0
+};
+goog.string.endsWith = function(str, suffix) {
+ var l = str.length - suffix.length;
+ return l >= 0 && str.indexOf(suffix, l) == l
+};
+goog.string.caseInsensitiveStartsWith = function(str, prefix) {
+ return goog.string.caseInsensitiveCompare(prefix, str.substr(0, prefix.length)) == 0
+};
+goog.string.caseInsensitiveEndsWith = function(str, suffix) {
+ return goog.string.caseInsensitiveCompare(suffix, str.substr(str.length - suffix.length, suffix.length)) == 0
+};
+goog.string.subs = function(str, var_args) {
+ for(var i = 1;i < arguments.length;i++) {
+ var replacement = String(arguments[i]).replace(/\$/g, "$$$$");
+ str = str.replace(/\%s/, replacement)
+ }
+ return str
+};
+goog.string.collapseWhitespace = function(str) {
+ return str.replace(/[\s\xa0]+/g, " ").replace(/^\s+|\s+$/g, "")
+};
+goog.string.isEmpty = function(str) {
+ return/^[\s\xa0]*$/.test(str)
+};
+goog.string.isEmptySafe = function(str) {
+ return goog.string.isEmpty(goog.string.makeSafe(str))
+};
+goog.string.isBreakingWhitespace = function(str) {
+ return!/[^\t\n\r ]/.test(str)
+};
+goog.string.isAlpha = function(str) {
+ return!/[^a-zA-Z]/.test(str)
+};
+goog.string.isNumeric = function(str) {
+ return!/[^0-9]/.test(str)
+};
+goog.string.isAlphaNumeric = function(str) {
+ return!/[^a-zA-Z0-9]/.test(str)
+};
+goog.string.isSpace = function(ch) {
+ return ch == " "
+};
+goog.string.isUnicodeChar = function(ch) {
+ return ch.length == 1 && ch >= " " && ch <= "~" || ch >= "\u0080" && ch <= "\ufffd"
+};
+goog.string.stripNewlines = function(str) {
+ return str.replace(/(\r\n|\r|\n)+/g, " ")
+};
+goog.string.canonicalizeNewlines = function(str) {
+ return str.replace(/(\r\n|\r|\n)/g, "\n")
+};
+goog.string.normalizeWhitespace = function(str) {
+ return str.replace(/\xa0|\s/g, " ")
+};
+goog.string.normalizeSpaces = function(str) {
+ return str.replace(/\xa0|[ \t]+/g, " ")
+};
+goog.string.collapseBreakingSpaces = function(str) {
+ return str.replace(/[\t\r\n ]+/g, " ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g, "")
+};
+goog.string.trim = function(str) {
+ return str.replace(/^[\s\xa0]+|[\s\xa0]+$/g, "")
+};
+goog.string.trimLeft = function(str) {
+ return str.replace(/^[\s\xa0]+/, "")
+};
+goog.string.trimRight = function(str) {
+ return str.replace(/[\s\xa0]+$/, "")
+};
+goog.string.caseInsensitiveCompare = function(str1, str2) {
+ var test1 = String(str1).toLowerCase();
+ var test2 = String(str2).toLowerCase();
+ if(test1 < test2) {
+ return-1
+ }else {
+ if(test1 == test2) {
+ return 0
+ }else {
+ return 1
+ }
+ }
+};
+goog.string.numerateCompareRegExp_ = /(\.\d+)|(\d+)|(\D+)/g;
+goog.string.numerateCompare = function(str1, str2) {
+ if(str1 == str2) {
+ return 0
+ }
+ if(!str1) {
+ return-1
+ }
+ if(!str2) {
+ return 1
+ }
+ var tokens1 = str1.toLowerCase().match(goog.string.numerateCompareRegExp_);
+ var tokens2 = str2.toLowerCase().match(goog.string.numerateCompareRegExp_);
+ var count = Math.min(tokens1.length, tokens2.length);
+ for(var i = 0;i < count;i++) {
+ var a = tokens1[i];
+ var b = tokens2[i];
+ if(a != b) {
+ var num1 = parseInt(a, 10);
+ if(!isNaN(num1)) {
+ var num2 = parseInt(b, 10);
+ if(!isNaN(num2) && num1 - num2) {
+ return num1 - num2
+ }
+ }
+ return a < b ? -1 : 1
+ }
+ }
+ if(tokens1.length != tokens2.length) {
+ return tokens1.length - tokens2.length
+ }
+ return str1 < str2 ? -1 : 1
+};
+goog.string.encodeUriRegExp_ = /^[a-zA-Z0-9\-_.!~*'()]*$/;
+goog.string.urlEncode = function(str) {
+ str = String(str);
+ if(!goog.string.encodeUriRegExp_.test(str)) {
+ return encodeURIComponent(str)
+ }
+ return str
+};
+goog.string.urlDecode = function(str) {
+ return decodeURIComponent(str.replace(/\+/g, " "))
+};
+goog.string.newLineToBr = function(str, opt_xml) {
+ return str.replace(/(\r\n|\r|\n)/g, opt_xml ? "<br />" : "<br>")
+};
+goog.string.htmlEscape = function(str, opt_isLikelyToContainHtmlChars) {
+ if(opt_isLikelyToContainHtmlChars) {
+ return str.replace(goog.string.amperRe_, "&").replace(goog.string.ltRe_, "<").replace(goog.string.gtRe_, ">").replace(goog.string.quotRe_, """)
+ }else {
+ if(!goog.string.allRe_.test(str)) {
+ return str
+ }
+ if(str.indexOf("&") != -1) {
+ str = str.replace(goog.string.amperRe_, "&")
+ }
+ if(str.indexOf("<") != -1) {
+ str = str.replace(goog.string.ltRe_, "<")
+ }
+ if(str.indexOf(">") != -1) {
+ str = str.replace(goog.string.gtRe_, ">")
+ }
+ if(str.indexOf('"') != -1) {
+ str = str.replace(goog.string.quotRe_, """)
+ }
+ return str
+ }
+};
+goog.string.amperRe_ = /&/g;
+goog.string.ltRe_ = /</g;
+goog.string.gtRe_ = />/g;
+goog.string.quotRe_ = /\"/g;
+goog.string.allRe_ = /[&<>\"]/;
+goog.string.unescapeEntities = function(str) {
+ if(goog.string.contains(str, "&")) {
+ if("document" in goog.global) {
+ return goog.string.unescapeEntitiesUsingDom_(str)
+ }else {
+ return goog.string.unescapePureXmlEntities_(str)
+ }
+ }
+ return str
+};
+goog.string.unescapeEntitiesUsingDom_ = function(str) {
+ var seen = {"&":"&", "<":"<", ">":">", """:'"'};
+ var div = document.createElement("div");
+ return str.replace(goog.string.HTML_ENTITY_PATTERN_, function(s, entity) {
+ var value = seen[s];
+ if(value) {
+ return value
+ }
+ if(entity.charAt(0) == "#") {
+ var n = Number("0" + entity.substr(1));
+ if(!isNaN(n)) {
+ value = String.fromCharCode(n)
+ }
+ }
+ if(!value) {
+ div.innerHTML = s + " ";
+ value = div.firstChild.nodeValue.slice(0, -1)
+ }
+ return seen[s] = value
+ })
+};
+goog.string.unescapePureXmlEntities_ = function(str) {
+ return str.replace(/&([^;]+);/g, function(s, entity) {
+ switch(entity) {
+ case "amp":
+ return"&";
+ case "lt":
+ return"<";
+ case "gt":
+ return">";
+ case "quot":
+ return'"';
+ default:
+ if(entity.charAt(0) == "#") {
+ var n = Number("0" + entity.substr(1));
+ if(!isNaN(n)) {
+ return String.fromCharCode(n)
+ }
+ }
+ return s
+ }
+ })
+};
+goog.string.HTML_ENTITY_PATTERN_ = /&([^;\s<&]+);?/g;
+goog.string.whitespaceEscape = function(str, opt_xml) {
+ return goog.string.newLineToBr(str.replace(/ /g, "  "), opt_xml)
+};
+goog.string.stripQuotes = function(str, quoteChars) {
+ var length = quoteChars.length;
+ for(var i = 0;i < length;i++) {
+ var quoteChar = length == 1 ? quoteChars : quoteChars.charAt(i);
+ if(str.charAt(0) == quoteChar && str.charAt(str.length - 1) == quoteChar) {
+ return str.substring(1, str.length - 1)
+ }
+ }
+ return str
+};
+goog.string.truncate = function(str, chars, opt_protectEscapedCharacters) {
+ if(opt_protectEscapedCharacters) {
+ str = goog.string.unescapeEntities(str)
+ }
+ if(str.length > chars) {
+ str = str.substring(0, chars - 3) + "..."
+ }
+ if(opt_protectEscapedCharacters) {
+ str = goog.string.htmlEscape(str)
+ }
+ return str
+};
+goog.string.truncateMiddle = function(str, chars, opt_protectEscapedCharacters, opt_trailingChars) {
+ if(opt_protectEscapedCharacters) {
+ str = goog.string.unescapeEntities(str)
+ }
+ if(opt_trailingChars && str.length > chars) {
+ if(opt_trailingChars > chars) {
+ opt_trailingChars = chars
+ }
+ var endPoint = str.length - opt_trailingChars;
+ var startPoint = chars - opt_trailingChars;
+ str = str.substring(0, startPoint) + "..." + str.substring(endPoint)
+ }else {
+ if(str.length > chars) {
+ var half = Math.floor(chars / 2);
+ var endPos = str.length - half;
+ half += chars % 2;
+ str = str.substring(0, half) + "..." + str.substring(endPos)
+ }
+ }
+ if(opt_protectEscapedCharacters) {
+ str = goog.string.htmlEscape(str)
+ }
+ return str
+};
+goog.string.specialEscapeChars_ = {"\x00":"\\0", "\u0008":"\\b", "\u000c":"\\f", "\n":"\\n", "\r":"\\r", "\t":"\\t", "\x0B":"\\x0B", '"':'\\"', "\\":"\\\\"};
+goog.string.jsEscapeCache_ = {"'":"\\'"};
+goog.string.quote = function(s) {
+ s = String(s);
+ if(s.quote) {
+ return s.quote()
+ }else {
+ var sb = ['"'];
+ for(var i = 0;i < s.length;i++) {
+ var ch = s.charAt(i);
+ var cc = ch.charCodeAt(0);
+ sb[i + 1] = goog.string.specialEscapeChars_[ch] || (cc > 31 && cc < 127 ? ch : goog.string.escapeChar(ch))
+ }
+ sb.push('"');
+ return sb.join("")
+ }
+};
+goog.string.escapeString = function(str) {
+ var sb = [];
+ for(var i = 0;i < str.length;i++) {
+ sb[i] = goog.string.escapeChar(str.charAt(i))
+ }
+ return sb.join("")
+};
+goog.string.escapeChar = function(c) {
+ if(c in goog.string.jsEscapeCache_) {
+ return goog.string.jsEscapeCache_[c]
+ }
+ if(c in goog.string.specialEscapeChars_) {
+ return goog.string.jsEscapeCache_[c] = goog.string.specialEscapeChars_[c]
+ }
+ var rv = c;
+ var cc = c.charCodeAt(0);
+ if(cc > 31 && cc < 127) {
+ rv = c
+ }else {
+ if(cc < 256) {
+ rv = "\\x";
+ if(cc < 16 || cc > 256) {
+ rv += "0"
+ }
+ }else {
+ rv = "\\u";
+ if(cc < 4096) {
+ rv += "0"
+ }
+ }
+ rv += cc.toString(16).toUpperCase()
+ }
+ return goog.string.jsEscapeCache_[c] = rv
+};
+goog.string.toMap = function(s) {
+ var rv = {};
+ for(var i = 0;i < s.length;i++) {
+ rv[s.charAt(i)] = true
+ }
+ return rv
+};
+goog.string.contains = function(s, ss) {
+ return s.indexOf(ss) != -1
+};
+goog.string.removeAt = function(s, index, stringLength) {
+ var resultStr = s;
+ if(index >= 0 && index < s.length && stringLength > 0) {
+ resultStr = s.substr(0, index) + s.substr(index + stringLength, s.length - index - stringLength)
+ }
+ return resultStr
+};
+goog.string.remove = function(s, ss) {
+ var re = new RegExp(goog.string.regExpEscape(ss), "");
+ return s.replace(re, "")
+};
+goog.string.removeAll = function(s, ss) {
+ var re = new RegExp(goog.string.regExpEscape(ss), "g");
+ return s.replace(re, "")
+};
+goog.string.regExpEscape = function(s) {
+ return String(s).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08")
+};
+goog.string.repeat = function(string, length) {
+ return(new Array(length + 1)).join(string)
+};
+goog.string.padNumber = function(num, length, opt_precision) {
+ var s = goog.isDef(opt_precision) ? num.toFixed(opt_precision) : String(num);
+ var index = s.indexOf(".");
+ if(index == -1) {
+ index = s.length
+ }
+ return goog.string.repeat("0", Math.max(0, length - index)) + s
+};
+goog.string.makeSafe = function(obj) {
+ return obj == null ? "" : String(obj)
+};
+goog.string.buildString = function(var_args) {
+ return Array.prototype.join.call(arguments, "")
+};
+goog.string.getRandomString = function() {
+ var x = 2147483648;
+ return Math.floor(Math.random() * x).toString(36) + Math.abs(Math.floor(Math.random() * x) ^ goog.now()).toString(36)
+};
+goog.string.compareVersions = function(version1, version2) {
+ var order = 0;
+ var v1Subs = goog.string.trim(String(version1)).split(".");
+ var v2Subs = goog.string.trim(String(version2)).split(".");
+ var subCount = Math.max(v1Subs.length, v2Subs.length);
+ for(var subIdx = 0;order == 0 && subIdx < subCount;subIdx++) {
+ var v1Sub = v1Subs[subIdx] || "";
+ var v2Sub = v2Subs[subIdx] || "";
+ var v1CompParser = new RegExp("(\\d*)(\\D*)", "g");
+ var v2CompParser = new RegExp("(\\d*)(\\D*)", "g");
+ do {
+ var v1Comp = v1CompParser.exec(v1Sub) || ["", "", ""];
+ var v2Comp = v2CompParser.exec(v2Sub) || ["", "", ""];
+ if(v1Comp[0].length == 0 && v2Comp[0].length == 0) {
+ break
+ }
+ var v1CompNum = v1Comp[1].length == 0 ? 0 : parseInt(v1Comp[1], 10);
+ var v2CompNum = v2Comp[1].length == 0 ? 0 : parseInt(v2Comp[1], 10);
+ order = goog.string.compareElements_(v1CompNum, v2CompNum) || goog.string.compareElements_(v1Comp[2].length == 0, v2Comp[2].length == 0) || goog.string.compareElements_(v1Comp[2], v2Comp[2])
+ }while(order == 0)
+ }
+ return order
+};
+goog.string.compareElements_ = function(left, right) {
+ if(left < right) {
+ return-1
+ }else {
+ if(left > right) {
+ return 1
+ }
+ }
+ return 0
+};
+goog.string.HASHCODE_MAX_ = 4294967296;
+goog.string.hashCode = function(str) {
+ var result = 0;
+ for(var i = 0;i < str.length;++i) {
+ result = 31 * result + str.charCodeAt(i);
+ result %= goog.string.HASHCODE_MAX_
+ }
+ return result
+};
+goog.string.uniqueStringCounter_ = Math.random() * 2147483648 | 0;
+goog.string.createUniqueString = function() {
+ return"goog_" + goog.string.uniqueStringCounter_++
+};
+goog.string.toNumber = function(str) {
+ var num = Number(str);
+ if(num == 0 && goog.string.isEmpty(str)) {
+ return NaN
+ }
+ return num
+};
+goog.string.toCamelCaseCache_ = {};
+goog.string.toCamelCase = function(str) {
+ return goog.string.toCamelCaseCache_[str] || (goog.string.toCamelCaseCache_[str] = String(str).replace(/\-([a-z])/g, function(all, match) {
+ return match.toUpperCase()
+ }))
+};
+goog.string.toSelectorCaseCache_ = {};
+goog.string.toSelectorCase = function(str) {
+ return goog.string.toSelectorCaseCache_[str] || (goog.string.toSelectorCaseCache_[str] = String(str).replace(/([A-Z])/g, "-$1").toLowerCase())
+};
+goog.provide("goog.asserts");
+goog.provide("goog.asserts.AssertionError");
+goog.require("goog.debug.Error");
+goog.require("goog.string");
+goog.asserts.ENABLE_ASSERTS = goog.DEBUG;
+goog.asserts.AssertionError = function(messagePattern, messageArgs) {
+ messageArgs.unshift(messagePattern);
+ goog.debug.Error.call(this, goog.string.subs.apply(null, messageArgs));
+ messageArgs.shift();
+ this.messagePattern = messagePattern
+};
+goog.inherits(goog.asserts.AssertionError, goog.debug.Error);
+goog.asserts.AssertionError.prototype.name = "AssertionError";
+goog.asserts.doAssertFailure_ = function(defaultMessage, defaultArgs, givenMessage, givenArgs) {
+ var message = "Assertion failed";
+ if(givenMessage) {
+ message += ": " + givenMessage;
+ var args = givenArgs
+ }else {
+ if(defaultMessage) {
+ message += ": " + defaultMessage;
+ args = defaultArgs
+ }
+ }
+ throw new goog.asserts.AssertionError("" + message, args || []);
+};
+goog.asserts.assert = function(condition, opt_message, var_args) {
+ if(goog.asserts.ENABLE_ASSERTS && !condition) {
+ goog.asserts.doAssertFailure_("", null, opt_message, Array.prototype.slice.call(arguments, 2))
+ }
+ return condition
+};
+goog.asserts.fail = function(opt_message, var_args) {
+ if(goog.asserts.ENABLE_ASSERTS) {
+ throw new goog.asserts.AssertionError("Failure" + (opt_message ? ": " + opt_message : ""), Array.prototype.slice.call(arguments, 1));
+ }
+};
+goog.asserts.assertNumber = function(value, opt_message, var_args) {
+ if(goog.asserts.ENABLE_ASSERTS && !goog.isNumber(value)) {
+ goog.asserts.doAssertFailure_("Expected number but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2))
+ }
+ return value
+};
+goog.asserts.assertString = function(value, opt_message, var_args) {
+ if(goog.asserts.ENABLE_ASSERTS && !goog.isString(value)) {
+ goog.asserts.doAssertFailure_("Expected string but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2))
+ }
+ return value
+};
+goog.asserts.assertFunction = function(value, opt_message, var_args) {
+ if(goog.asserts.ENABLE_ASSERTS && !goog.isFunction(value)) {
+ goog.asserts.doAssertFailure_("Expected function but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2))
+ }
+ return value
+};
+goog.asserts.assertObject = function(value, opt_message, var_args) {
+ if(goog.asserts.ENABLE_ASSERTS && !goog.isObject(value)) {
+ goog.asserts.doAssertFailure_("Expected object but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2))
+ }
+ return value
+};
+goog.asserts.assertArray = function(value, opt_message, var_args) {
+ if(goog.asserts.ENABLE_ASSERTS && !goog.isArray(value)) {
+ goog.asserts.doAssertFailure_("Expected array but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2))
+ }
+ return value
+};
+goog.asserts.assertBoolean = function(value, opt_message, var_args) {
+ if(goog.asserts.ENABLE_ASSERTS && !goog.isBoolean(value)) {
+ goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2))
+ }
+ return value
+};
+goog.asserts.assertInstanceof = function(value, type, opt_message, var_args) {
+ if(goog.asserts.ENABLE_ASSERTS && !(value instanceof type)) {
+ goog.asserts.doAssertFailure_("instanceof check failed.", null, opt_message, Array.prototype.slice.call(arguments, 3))
+ }
+};
+goog.provide("goog.array");
+goog.provide("goog.array.ArrayLike");
+goog.require("goog.asserts");
+goog.NATIVE_ARRAY_PROTOTYPES = true;
+goog.array.ArrayLike;
+goog.array.peek = function(array) {
+ return array[array.length - 1]
+};
+goog.array.ARRAY_PROTOTYPE_ = Array.prototype;
+goog.array.indexOf = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.indexOf ? function(arr, obj, opt_fromIndex) {
+ goog.asserts.assert(arr.length != null);
+ return goog.array.ARRAY_PROTOTYPE_.indexOf.call(arr, obj, opt_fromIndex)
+} : function(arr, obj, opt_fromIndex) {
+ var fromIndex = opt_fromIndex == null ? 0 : opt_fromIndex < 0 ? Math.max(0, arr.length + opt_fromIndex) : opt_fromIndex;
+ if(goog.isString(arr)) {
+ if(!goog.isString(obj) || obj.length != 1) {
+ return-1
+ }
+ return arr.indexOf(obj, fromIndex)
+ }
+ for(var i = fromIndex;i < arr.length;i++) {
+ if(i in arr && arr[i] === obj) {
+ return i
+ }
+ }
+ return-1
+};
+goog.array.lastIndexOf = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.lastIndexOf ? function(arr, obj, opt_fromIndex) {
+ goog.asserts.assert(arr.length != null);
+ var fromIndex = opt_fromIndex == null ? arr.length - 1 : opt_fromIndex;
+ return goog.array.ARRAY_PROTOTYPE_.lastIndexOf.call(arr, obj, fromIndex)
+} : function(arr, obj, opt_fromIndex) {
+ var fromIndex = opt_fromIndex == null ? arr.length - 1 : opt_fromIndex;
+ if(fromIndex < 0) {
+ fromIndex = Math.max(0, arr.length + fromIndex)
+ }
+ if(goog.isString(arr)) {
+ if(!goog.isString(obj) || obj.length != 1) {
+ return-1
+ }
+ return arr.lastIndexOf(obj, fromIndex)
+ }
+ for(var i = fromIndex;i >= 0;i--) {
+ if(i in arr && arr[i] === obj) {
+ return i
+ }
+ }
+ return-1
+};
+goog.array.forEach = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.forEach ? function(arr, f, opt_obj) {
+ goog.asserts.assert(arr.length != null);
+ goog.array.ARRAY_PROTOTYPE_.forEach.call(arr, f, opt_obj)
+} : function(arr, f, opt_obj) {
+ var l = arr.length;
+ var arr2 = goog.isString(arr) ? arr.split("") : arr;
+ for(var i = 0;i < l;i++) {
+ if(i in arr2) {
+ f.call(opt_obj, arr2[i], i, arr)
+ }
+ }
+};
+goog.array.forEachRight = function(arr, f, opt_obj) {
+ var l = arr.length;
+ var arr2 = goog.isString(arr) ? arr.split("") : arr;
+ for(var i = l - 1;i >= 0;--i) {
+ if(i in arr2) {
+ f.call(opt_obj, arr2[i], i, arr)
+ }
+ }
+};
+goog.array.filter = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.filter ? function(arr, f, opt_obj) {
+ goog.asserts.assert(arr.length != null);
+ return goog.array.ARRAY_PROTOTYPE_.filter.call(arr, f, opt_obj)
+} : function(arr, f, opt_obj) {
+ var l = arr.length;
+ var res = [];
+ var resLength = 0;
+ var arr2 = goog.isString(arr) ? arr.split("") : arr;
+ for(var i = 0;i < l;i++) {
+ if(i in arr2) {
+ var val = arr2[i];
+ if(f.call(opt_obj, val, i, arr)) {
+ res[resLength++] = val
+ }
+ }
+ }
+ return res
+};
+goog.array.map = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.map ? function(arr, f, opt_obj) {
+ goog.asserts.assert(arr.length != null);
+ return goog.array.ARRAY_PROTOTYPE_.map.call(arr, f, opt_obj)
+} : function(arr, f, opt_obj) {
+ var l = arr.length;
+ var res = new Array(l);
+ var arr2 = goog.isString(arr) ? arr.split("") : arr;
+ for(var i = 0;i < l;i++) {
+ if(i in arr2) {
+ res[i] = f.call(opt_obj, arr2[i], i, arr)
+ }
+ }
+ return res
+};
+goog.array.reduce = function(arr, f, val, opt_obj) {
+ if(arr.reduce) {
+ if(opt_obj) {
+ return arr.reduce(goog.bind(f, opt_obj), val)
+ }else {
+ return arr.reduce(f, val)
+ }
+ }
+ var rval = val;
+ goog.array.forEach(arr, function(val, index) {
+ rval = f.call(opt_obj, rval, val, index, arr)
+ });
+ return rval
+};
+goog.array.reduceRight = function(arr, f, val, opt_obj) {
+ if(arr.reduceRight) {
+ if(opt_obj) {
+ return arr.reduceRight(goog.bind(f, opt_obj), val)
+ }else {
+ return arr.reduceRight(f, val)
+ }
+ }
+ var rval = val;
+ goog.array.forEachRight(arr, function(val, index) {
+ rval = f.call(opt_obj, rval, val, index, arr)
+ });
+ return rval
+};
+goog.array.some = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.some ? function(arr, f, opt_obj) {
+ goog.asserts.assert(arr.length != null);
+ return goog.array.ARRAY_PROTOTYPE_.some.call(arr, f, opt_obj)
+} : function(arr, f, opt_obj) {
+ var l = arr.length;
+ var arr2 = goog.isString(arr) ? arr.split("") : arr;
+ for(var i = 0;i < l;i++) {
+ if(i in arr2 && f.call(opt_obj, arr2[i], i, arr)) {
+ return true
+ }
+ }
+ return false
+};
+goog.array.every = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.every ? function(arr, f, opt_obj) {
+ goog.asserts.assert(arr.length != null);
+ return goog.array.ARRAY_PROTOTYPE_.every.call(arr, f, opt_obj)
+} : function(arr, f, opt_obj) {
+ var l = arr.length;
+ var arr2 = goog.isString(arr) ? arr.split("") : arr;
+ for(var i = 0;i < l;i++) {
+ if(i in arr2 && !f.call(opt_obj, arr2[i], i, arr)) {
+ return false
+ }
+ }
+ return true
+};
+goog.array.find = function(arr, f, opt_obj) {
+ var i = goog.array.findIndex(arr, f, opt_obj);
+ return i < 0 ? null : goog.isString(arr) ? arr.charAt(i) : arr[i]
+};
+goog.array.findIndex = function(arr, f, opt_obj) {
+ var l = arr.length;
+ var arr2 = goog.isString(arr) ? arr.split("") : arr;
+ for(var i = 0;i < l;i++) {
+ if(i in arr2 && f.call(opt_obj, arr2[i], i, arr)) {
+ return i
+ }
+ }
+ return-1
+};
+goog.array.findRight = function(arr, f, opt_obj) {
+ var i = goog.array.findIndexRight(arr, f, opt_obj);
+ return i < 0 ? null : goog.isString(arr) ? arr.charAt(i) : arr[i]
+};
+goog.array.findIndexRight = function(arr, f, opt_obj) {
+ var l = arr.length;
+ var arr2 = goog.isString(arr) ? arr.split("") : arr;
+ for(var i = l - 1;i >= 0;i--) {
+ if(i in arr2 && f.call(opt_obj, arr2[i], i, arr)) {
+ return i
+ }
+ }
+ return-1
+};
+goog.array.contains = function(arr, obj) {
+ return goog.array.indexOf(arr, obj) >= 0
+};
+goog.array.isEmpty = function(arr) {
+ return arr.length == 0
+};
+goog.array.clear = function(arr) {
+ if(!goog.isArray(arr)) {
+ for(var i = arr.length - 1;i >= 0;i--) {
+ delete arr[i]
+ }
+ }
+ arr.length = 0
+};
+goog.array.insert = function(arr, obj) {
+ if(!goog.array.contains(arr, obj)) {
+ arr.push(obj)
+ }
+};
+goog.array.insertAt = function(arr, obj, opt_i) {
+ goog.array.splice(arr, opt_i, 0, obj)
+};
+goog.array.insertArrayAt = function(arr, elementsToAdd, opt_i) {
+ goog.partial(goog.array.splice, arr, opt_i, 0).apply(null, elementsToAdd)
+};
+goog.array.insertBefore = function(arr, obj, opt_obj2) {
+ var i;
+ if(arguments.length == 2 || (i = goog.array.indexOf(arr, opt_obj2)) < 0) {
+ arr.push(obj)
+ }else {
+ goog.array.insertAt(arr, obj, i)
+ }
+};
+goog.array.remove = function(arr, obj) {
+ var i = goog.array.indexOf(arr, obj);
+ var rv;
+ if(rv = i >= 0) {
+ goog.array.removeAt(arr, i)
+ }
+ return rv
+};
+goog.array.removeAt = function(arr, i) {
+ goog.asserts.assert(arr.length != null);
+ return goog.array.ARRAY_PROTOTYPE_.splice.call(arr, i, 1).length == 1
+};
+goog.array.removeIf = function(arr, f, opt_obj) {
+ var i = goog.array.findIndex(arr, f, opt_obj);
+ if(i >= 0) {
+ goog.array.removeAt(arr, i);
+ return true
+ }
+ return false
+};
+goog.array.concat = function(var_args) {
+ return goog.array.ARRAY_PROTOTYPE_.concat.apply(goog.array.ARRAY_PROTOTYPE_, arguments)
+};
+goog.array.clone = function(arr) {
+ if(goog.isArray(arr)) {
+ return goog.array.concat(arr)
+ }else {
+ var rv = [];
+ for(var i = 0, len = arr.length;i < len;i++) {
+ rv[i] = arr[i]
+ }
+ return rv
+ }
+};
+goog.array.toArray = function(object) {
+ if(goog.isArray(object)) {
+ return goog.array.concat(object)
+ }
+ return goog.array.clone(object)
+};
+goog.array.extend = function(arr1, var_args) {
+ for(var i = 1;i < arguments.length;i++) {
+ var arr2 = arguments[i];
+ var isArrayLike;
+ if(goog.isArray(arr2) || (isArrayLike = goog.isArrayLike(arr2)) && arr2.hasOwnProperty("callee")) {
+ arr1.push.apply(arr1, arr2)
+ }else {
+ if(isArrayLike) {
+ var len1 = arr1.length;
+ var len2 = arr2.length;
+ for(var j = 0;j < len2;j++) {
+ arr1[len1 + j] = arr2[j]
+ }
+ }else {
+ arr1.push(arr2)
+ }
+ }
+ }
+};
+goog.array.splice = function(arr, index, howMany, var_args) {
+ goog.asserts.assert(arr.length != null);
+ return goog.array.ARRAY_PROTOTYPE_.splice.apply(arr, goog.array.slice(arguments, 1))
+};
+goog.array.slice = function(arr, start, opt_end) {
+ goog.asserts.assert(arr.length != null);
+ if(arguments.length <= 2) {
+ return goog.array.ARRAY_PROTOTYPE_.slice.call(arr, start)
+ }else {
+ return goog.array.ARRAY_PROTOTYPE_.slice.call(arr, start, opt_end)
+ }
+};
+goog.array.removeDuplicates = function(arr, opt_rv) {
+ var returnArray = opt_rv || arr;
+ var seen = {}, cursorInsert = 0, cursorRead = 0;
+ while(cursorRead < arr.length) {
+ var current = arr[cursorRead++];
+ var key = goog.isObject(current) ? "o" + goog.getUid(current) : (typeof current).charAt(0) + current;
+ if(!Object.prototype.hasOwnProperty.call(seen, key)) {
+ seen[key] = true;
+ returnArray[cursorInsert++] = current
+ }
+ }
+ returnArray.length = cursorInsert
+};
+goog.array.binarySearch = function(arr, target, opt_compareFn) {
+ return goog.array.binarySearch_(arr, opt_compareFn || goog.array.defaultCompare, false, target)
+};
+goog.array.binarySelect = function(arr, evaluator, opt_obj) {
+ return goog.array.binarySearch_(arr, evaluator, true, undefined, opt_obj)
+};
+goog.array.binarySearch_ = function(arr, compareFn, isEvaluator, opt_target, opt_selfObj) {
+ var left = 0;
+ var right = arr.length;
+ var found;
+ while(left < right) {
+ var middle = left + right >> 1;
+ var compareResult;
+ if(isEvaluator) {
+ compareResult = compareFn.call(opt_selfObj, arr[middle], middle, arr)
+ }else {
+ compareResult = compareFn(opt_target, arr[middle])
+ }
+ if(compareResult > 0) {
+ left = middle + 1
+ }else {
+ right = middle;
+ found = !compareResult
+ }
+ }
+ return found ? left : ~left
+};
+goog.array.sort = function(arr, opt_compareFn) {
+ goog.asserts.assert(arr.length != null);
+ goog.array.ARRAY_PROTOTYPE_.sort.call(arr, opt_compareFn || goog.array.defaultCompare)
+};
+goog.array.stableSort = function(arr, opt_compareFn) {
+ for(var i = 0;i < arr.length;i++) {
+ arr[i] = {index:i, value:arr[i]}
+ }
+ var valueCompareFn = opt_compareFn || goog.array.defaultCompare;
+ function stableCompareFn(obj1, obj2) {
+ return valueCompareFn(obj1.value, obj2.value) || obj1.index - obj2.index
+ }
+ goog.array.sort(arr, stableCompareFn);
+ for(var i = 0;i < arr.length;i++) {
+ arr[i] = arr[i].value
+ }
+};
+goog.array.sortObjectsByKey = function(arr, key, opt_compareFn) {
+ var compare = opt_compareFn || goog.array.defaultCompare;
+ goog.array.sort(arr, function(a, b) {
+ return compare(a[key], b[key])
+ })
+};
+goog.array.isSorted = function(arr, opt_compareFn, opt_strict) {
+ var compare = opt_compareFn || goog.array.defaultCompare;
+ for(var i = 1;i < arr.length;i++) {
+ var compareResult = compare(arr[i - 1], arr[i]);
+ if(compareResult > 0 || compareResult == 0 && opt_strict) {
+ return false
+ }
+ }
+ return true
+};
+goog.array.equals = function(arr1, arr2, opt_equalsFn) {
+ if(!goog.isArrayLike(arr1) || !goog.isArrayLike(arr2) || arr1.length != arr2.length) {
+ return false
+ }
+ var l = arr1.length;
+ var equalsFn = opt_equalsFn || goog.array.defaultCompareEquality;
+ for(var i = 0;i < l;i++) {
+ if(!equalsFn(arr1[i], arr2[i])) {
+ return false
+ }
+ }
+ return true
+};
+goog.array.compare = function(arr1, arr2, opt_equalsFn) {
+ return goog.array.equals(arr1, arr2, opt_equalsFn)
+};
+goog.array.compare3 = function(arr1, arr2, opt_compareFn) {
+ var compare = opt_compareFn || goog.array.defaultCompare;
+ var l = Math.min(arr1.length, arr2.length);
+ for(var i = 0;i < l;i++) {
+ var result = compare(arr1[i], arr2[i]);
+ if(result != 0) {
+ return result
+ }
+ }
+ return goog.array.defaultCompare(arr1.length, arr2.length)
+};
+goog.array.defaultCompare = function(a, b) {
+ return a > b ? 1 : a < b ? -1 : 0
+};
+goog.array.defaultCompareEquality = function(a, b) {
+ return a === b
+};
+goog.array.binaryInsert = function(array, value, opt_compareFn) {
+ var index = goog.array.binarySearch(array, value, opt_compareFn);
+ if(index < 0) {
+ goog.array.insertAt(array, value, -(index + 1));
+ return true
+ }
+ return false
+};
+goog.array.binaryRemove = function(array, value, opt_compareFn) {
+ var index = goog.array.binarySearch(array, value, opt_compareFn);
+ return index >= 0 ? goog.array.removeAt(array, index) : false
+};
+goog.array.bucket = function(array, sorter) {
+ var buckets = {};
+ for(var i = 0;i < array.length;i++) {
+ var value = array[i];
+ var key = sorter(value, i, array);
+ if(goog.isDef(key)) {
+ var bucket = buckets[key] || (buckets[key] = []);
+ bucket.push(value)
+ }
+ }
+ return buckets
+};
+goog.array.repeat = function(value, n) {
+ var array = [];
+ for(var i = 0;i < n;i++) {
+ array[i] = value
+ }
+ return array
+};
+goog.array.flatten = function(var_args) {
+ var result = [];
+ for(var i = 0;i < arguments.length;i++) {
+ var element = arguments[i];
+ if(goog.isArray(element)) {
+ result.push.apply(result, goog.array.flatten.apply(null, element))
+ }else {
+ result.push(element)
+ }
+ }
+ return result
+};
+goog.array.rotate = function(array, n) {
+ goog.asserts.assert(array.length != null);
+ if(array.length) {
+ n %= array.length;
+ if(n > 0) {
+ goog.array.ARRAY_PROTOTYPE_.unshift.apply(array, array.splice(-n, n))
+ }else {
+ if(n < 0) {
+ goog.array.ARRAY_PROTOTYPE_.push.apply(array, array.splice(0, -n))
+ }
+ }
+ }
+ return array
+};
+goog.array.zip = function(var_args) {
+ if(!arguments.length) {
+ return[]
+ }
+ var result = [];
+ for(var i = 0;true;i++) {
+ var value = [];
+ for(var j = 0;j < arguments.length;j++) {
+ var arr = arguments[j];
+ if(i >= arr.length) {
+ return result
+ }
+ value.push(arr[i])
+ }
+ result.push(value)
+ }
+};
+goog.array.shuffle = function(arr, opt_randFn) {
+ var randFn = opt_randFn || Math.random;
+ for(var i = arr.length - 1;i > 0;i--) {
+ var j = Math.floor(randFn() * (i + 1));
+ var tmp = arr[i];
+ arr[i] = arr[j];
+ arr[j] = tmp
+ }
+};
+goog.provide("goog.object");
+goog.object.forEach = function(obj, f, opt_obj) {
+ for(var key in obj) {
+ f.call(opt_obj, obj[key], key, obj)
+ }
+};
+goog.object.filter = function(obj, f, opt_obj) {
+ var res = {};
+ for(var key in obj) {
+ if(f.call(opt_obj, obj[key], key, obj)) {
+ res[key] = obj[key]
+ }
+ }
+ return res
+};
+goog.object.map = function(obj, f, opt_obj) {
+ var res = {};
+ for(var key in obj) {
+ res[key] = f.call(opt_obj, obj[key], key, obj)
+ }
+ return res
+};
+goog.object.some = function(obj, f, opt_obj) {
+ for(var key in obj) {
+ if(f.call(opt_obj, obj[key], key, obj)) {
+ return true
+ }
+ }
+ return false
+};
+goog.object.every = function(obj, f, opt_obj) {
+ for(var key in obj) {
+ if(!f.call(opt_obj, obj[key], key, obj)) {
+ return false
+ }
+ }
+ return true
+};
+goog.object.getCount = function(obj) {
+ var rv = 0;
+ for(var key in obj) {
+ rv++
+ }
+ return rv
+};
+goog.object.getAnyKey = function(obj) {
+ for(var key in obj) {
+ return key
+ }
+};
+goog.object.getAnyValue = function(obj) {
+ for(var key in obj) {
+ return obj[key]
+ }
+};
+goog.object.contains = function(obj, val) {
+ return goog.object.containsValue(obj, val)
+};
+goog.object.getValues = function(obj) {
+ var res = [];
+ var i = 0;
+ for(var key in obj) {
+ res[i++] = obj[key]
+ }
+ return res
+};
+goog.object.getKeys = function(obj) {
+ var res = [];
+ var i = 0;
+ for(var key in obj) {
+ res[i++] = key
+ }
+ return res
+};
+goog.object.getValueByKeys = function(obj, var_args) {
+ var isArrayLike = goog.isArrayLike(var_args);
+ var keys = isArrayLike ? var_args : arguments;
+ for(var i = isArrayLike ? 0 : 1;i < keys.length;i++) {
+ obj = obj[keys[i]];
+ if(!goog.isDef(obj)) {
+ break
+ }
+ }
+ return obj
+};
+goog.object.containsKey = function(obj, key) {
+ return key in obj
+};
+goog.object.containsValue = function(obj, val) {
+ for(var key in obj) {
+ if(obj[key] == val) {
+ return true
+ }
+ }
+ return false
+};
+goog.object.findKey = function(obj, f, opt_this) {
+ for(var key in obj) {
+ if(f.call(opt_this, obj[key], key, obj)) {
+ return key
+ }
+ }
+ return undefined
+};
+goog.object.findValue = function(obj, f, opt_this) {
+ var key = goog.object.findKey(obj, f, opt_this);
+ return key && obj[key]
+};
+goog.object.isEmpty = function(obj) {
+ for(var key in obj) {
+ return false
+ }
+ return true
+};
+goog.object.clear = function(obj) {
+ for(var i in obj) {
+ delete obj[i]
+ }
+};
+goog.object.remove = function(obj, key) {
+ var rv;
+ if(rv = key in obj) {
+ delete obj[key]
+ }
+ return rv
+};
+goog.object.add = function(obj, key, val) {
+ if(key in obj) {
+ throw Error('The object already contains the key "' + key + '"');
+ }
+ goog.object.set(obj, key, val)
+};
+goog.object.get = function(obj, key, opt_val) {
+ if(key in obj) {
+ return obj[key]
+ }
+ return opt_val
+};
+goog.object.set = function(obj, key, value) {
+ obj[key] = value
+};
+goog.object.setIfUndefined = function(obj, key, value) {
+ return key in obj ? obj[key] : obj[key] = value
+};
+goog.object.clone = function(obj) {
+ var res = {};
+ for(var key in obj) {
+ res[key] = obj[key]
+ }
+ return res
+};
+goog.object.unsafeClone = function(obj) {
+ var type = goog.typeOf(obj);
+ if(type == "object" || type == "array") {
+ if(obj.clone) {
+ return obj.clone()
+ }
+ var clone = type == "array" ? [] : {};
+ for(var key in obj) {
+ clone[key] = goog.object.unsafeClone(obj[key])
+ }
+ return clone
+ }
+ return obj
+};
+goog.object.transpose = function(obj) {
+ var transposed = {};
+ for(var key in obj) {
+ transposed[obj[key]] = key
+ }
+ return transposed
+};
+goog.object.PROTOTYPE_FIELDS_ = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"];
+goog.object.extend = function(target, var_args) {
+ var key, source;
+ for(var i = 1;i < arguments.length;i++) {
+ source = arguments[i];
+ for(key in source) {
+ target[key] = source[key]
+ }
+ for(var j = 0;j < goog.object.PROTOTYPE_FIELDS_.length;j++) {
+ key = goog.object.PROTOTYPE_FIELDS_[j];
+ if(Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key]
+ }
+ }
+ }
+};
+goog.object.create = function(var_args) {
+ var argLength = arguments.length;
+ if(argLength == 1 && goog.isArray(arguments[0])) {
+ return goog.object.create.apply(null, arguments[0])
+ }
+ if(argLength % 2) {
+ throw Error("Uneven number of arguments");
+ }
+ var rv = {};
+ for(var i = 0;i < argLength;i += 2) {
+ rv[arguments[i]] = arguments[i + 1]
+ }
+ return rv
+};
+goog.object.createSet = function(var_args) {
+ var argLength = arguments.length;
+ if(argLength == 1 && goog.isArray(arguments[0])) {
+ return goog.object.createSet.apply(null, arguments[0])
+ }
+ var rv = {};
+ for(var i = 0;i < argLength;i++) {
+ rv[arguments[i]] = true
+ }
+ return rv
+};
+goog.provide("goog.string.format");
+goog.require("goog.string");
+goog.string.format = function(formatString, var_args) {
+ var args = Array.prototype.slice.call(arguments);
+ var template = args.shift();
+ if(typeof template == "undefined") {
+ throw Error("[goog.string.format] Template required");
+ }
+ var formatRe = /%([0\-\ \+]*)(\d+)?(\.(\d+))?([%sfdiu])/g;
+ function replacerDemuxer(match, flags, width, dotp, precision, type, offset, wholeString) {
+ if(type == "%") {
+ return"%"
+ }
+ var value = args.shift();
+ if(typeof value == "undefined") {
+ throw Error("[goog.string.format] Not enough arguments");
+ }
+ arguments[0] = value;
+ return goog.string.format.demuxes_[type].apply(null, arguments)
+ }
+ return template.replace(formatRe, replacerDemuxer)
+};
+goog.string.format.demuxes_ = {};
+goog.string.format.demuxes_["s"] = function(value, flags, width, dotp, precision, type, offset, wholeString) {
+ var replacement = value;
+ if(isNaN(width) || width == "" || replacement.length >= width) {
+ return replacement
+ }
+ if(flags.indexOf("-", 0) > -1) {
+ replacement = replacement + goog.string.repeat(" ", width - replacement.length)
+ }else {
+ replacement = goog.string.repeat(" ", width - replacement.length) + replacement
+ }
+ return replacement
+};
+goog.string.format.demuxes_["f"] = function(value, flags, width, dotp, precision, type, offset, wholeString) {
+ var replacement = value.toString();
+ if(!(isNaN(precision) || precision == "")) {
+ replacement = value.toFixed(precision)
+ }
+ var sign;
+ if(value < 0) {
+ sign = "-"
+ }else {
+ if(flags.indexOf("+") >= 0) {
+ sign = "+"
+ }else {
+ if(flags.indexOf(" ") >= 0) {
+ sign = " "
+ }else {
+ sign = ""
+ }
+ }
+ }
+ if(value >= 0) {
+ replacement = sign + replacement
+ }
+ if(isNaN(width) || replacement.length >= width) {
+ return replacement
+ }
+ replacement = isNaN(precision) ? Math.abs(value).toString() : Math.abs(value).toFixed(precision);
+ var padCount = width - replacement.length - sign.length;
+ if(flags.indexOf("-", 0) >= 0) {
+ replacement = sign + replacement + goog.string.repeat(" ", padCount)
+ }else {
+ var paddingChar = flags.indexOf("0", 0) >= 0 ? "0" : " ";
+ replacement = sign + goog.string.repeat(paddingChar, padCount) + replacement
+ }
+ return replacement
+};
+goog.string.format.demuxes_["d"] = function(value, flags, width, dotp, precision, type, offset, wholeString) {
+ return goog.string.format.demuxes_["f"](parseInt(value, 10), flags, width, dotp, 0, type, offset, wholeString)
+};
+goog.string.format.demuxes_["i"] = goog.string.format.demuxes_["d"];
+goog.string.format.demuxes_["u"] = goog.string.format.demuxes_["d"];
+goog.provide("goog.userAgent.jscript");
+goog.require("goog.string");
+goog.userAgent.jscript.ASSUME_NO_JSCRIPT = false;
+goog.userAgent.jscript.init_ = function() {
+ var hasScriptEngine = "ScriptEngine" in goog.global;
+ goog.userAgent.jscript.DETECTED_HAS_JSCRIPT_ = hasScriptEngine && goog.global["ScriptEngine"]() == "JScript";
+ goog.userAgent.jscript.DETECTED_VERSION_ = goog.userAgent.jscript.DETECTED_HAS_JSCRIPT_ ? goog.global["ScriptEngineMajorVersion"]() + "." + goog.global["ScriptEngineMinorVersion"]() + "." + goog.global["ScriptEngineBuildVersion"]() : "0"
+};
+if(!goog.userAgent.jscript.ASSUME_NO_JSCRIPT) {
+ goog.userAgent.jscript.init_()
+}
+goog.userAgent.jscript.HAS_JSCRIPT = goog.userAgent.jscript.ASSUME_NO_JSCRIPT ? false : goog.userAgent.jscript.DETECTED_HAS_JSCRIPT_;
+goog.userAgent.jscript.VERSION = goog.userAgent.jscript.ASSUME_NO_JSCRIPT ? "0" : goog.userAgent.jscript.DETECTED_VERSION_;
+goog.userAgent.jscript.isVersion = function(version) {
+ return goog.string.compareVersions(goog.userAgent.jscript.VERSION, version) >= 0
+};
+goog.provide("goog.string.StringBuffer");
+goog.require("goog.userAgent.jscript");
+goog.string.StringBuffer = function(opt_a1, var_args) {
+ this.buffer_ = goog.userAgent.jscript.HAS_JSCRIPT ? [] : "";
+ if(opt_a1 != null) {
+ this.append.apply(this, arguments)
+ }
+};
+goog.string.StringBuffer.prototype.set = function(s) {
+ this.clear();
+ this.append(s)
+};
+if(goog.userAgent.jscript.HAS_JSCRIPT) {
+ goog.string.StringBuffer.prototype.bufferLength_ = 0;
+ goog.string.StringBuffer.prototype.append = function(a1, opt_a2, var_args) {
+ if(opt_a2 == null) {
+ this.buffer_[this.bufferLength_++] = a1
+ }else {
+ this.buffer_.push.apply(this.buffer_, arguments);
+ this.bufferLength_ = this.buffer_.length
+ }
+ return this
+ }
+}else {
+ goog.string.StringBuffer.prototype.append = function(a1, opt_a2, var_args) {
+ this.buffer_ += a1;
+ if(opt_a2 != null) {
+ for(var i = 1;i < arguments.length;i++) {
+ this.buffer_ += arguments[i]
+ }
+ }
+ return this
+ }
+}
+goog.string.StringBuffer.prototype.clear = function() {
+ if(goog.userAgent.jscript.HAS_JSCRIPT) {
+ this.buffer_.length = 0;
+ this.bufferLength_ = 0
+ }else {
+ this.buffer_ = ""
+ }
+};
+goog.string.StringBuffer.prototype.getLength = function() {
+ return this.toString().length
+};
+goog.string.StringBuffer.prototype.toString = function() {
+ if(goog.userAgent.jscript.HAS_JSCRIPT) {
+ var str = this.buffer_.join("");
+ this.clear();
+ if(str) {
+ this.append(str)
+ }
+ return str
+ }else {
+ return this.buffer_
+ }
+};
+goog.provide("cljs.core");
+goog.require("goog.array");
+goog.require("goog.object");
+goog.require("goog.string.format");
+goog.require("goog.string.StringBuffer");
+goog.require("goog.string");
+cljs.core._STAR_unchecked_if_STAR_ = false;
+cljs.core._STAR_print_fn_STAR_ = function _STAR_print_fn_STAR_(_) {
+ throw new Error("No *print-fn* fn set for evaluation environment");
+};
+cljs.core.truth_ = function truth_(x) {
+ return x != null && x !== false
+};
+cljs.core.identical_QMARK_ = function identical_QMARK_(x, y) {
+ return x === y
+};
+cljs.core.nil_QMARK_ = function nil_QMARK_(x) {
+ return x == null
+};
+cljs.core.not = function not(x) {
+ if(cljs.core.truth_(x)) {
+ return false
+ }else {
+ return true
+ }
+};
+cljs.core.type_satisfies_ = function type_satisfies_(p, x) {
+ var x__$1 = x == null ? null : x;
+ if(p[goog.typeOf(x__$1)]) {
+ return true
+ }else {
+ if(p["_"]) {
+ return true
+ }else {
+ if("\ufdd0'else") {
+ return false
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.is_proto_ = function is_proto_(x) {
+ return x.constructor.prototype === x
+};
+cljs.core._STAR_main_cli_fn_STAR_ = null;
+cljs.core.missing_protocol = function missing_protocol(proto, obj) {
+ return Error(["No protocol method ", proto, " defined for type ", goog.typeOf(obj), ": ", obj].join(""))
+};
+cljs.core.aclone = function aclone(array_like) {
+ return array_like.slice()
+};
+cljs.core.array = function array(var_args) {
+ return Array.prototype.slice.call(arguments)
+};
+cljs.core.make_array = function() {
+ var make_array = null;
+ var make_array__1 = function(size) {
+ return new Array(size)
+ };
+ var make_array__2 = function(type, size) {
+ return make_array.call(null, size)
+ };
+ make_array = function(type, size) {
+ switch(arguments.length) {
+ case 1:
+ return make_array__1.call(this, type);
+ case 2:
+ return make_array__2.call(this, type, size)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ make_array.cljs$lang$arity$1 = make_array__1;
+ make_array.cljs$lang$arity$2 = make_array__2;
+ return make_array
+}();
+cljs.core.aget = function() {
+ var aget = null;
+ var aget__2 = function(array, i) {
+ return array[i]
+ };
+ var aget__3 = function() {
+ var G__2821__delegate = function(array, i, idxs) {
+ return cljs.core.apply.call(null, aget, aget.call(null, array, i), idxs)
+ };
+ var G__2821 = function(array, i, var_args) {
+ var idxs = null;
+ if(goog.isDef(var_args)) {
+ idxs = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2821__delegate.call(this, array, i, idxs)
+ };
+ G__2821.cljs$lang$maxFixedArity = 2;
+ G__2821.cljs$lang$applyTo = function(arglist__2822) {
+ var array = cljs.core.first(arglist__2822);
+ var i = cljs.core.first(cljs.core.next(arglist__2822));
+ var idxs = cljs.core.rest(cljs.core.next(arglist__2822));
+ return G__2821__delegate(array, i, idxs)
+ };
+ G__2821.cljs$lang$arity$variadic = G__2821__delegate;
+ return G__2821
+ }();
+ aget = function(array, i, var_args) {
+ var idxs = var_args;
+ switch(arguments.length) {
+ case 2:
+ return aget__2.call(this, array, i);
+ default:
+ return aget__3.cljs$lang$arity$variadic(array, i, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ aget.cljs$lang$maxFixedArity = 2;
+ aget.cljs$lang$applyTo = aget__3.cljs$lang$applyTo;
+ aget.cljs$lang$arity$2 = aget__2;
+ aget.cljs$lang$arity$variadic = aget__3.cljs$lang$arity$variadic;
+ return aget
+}();
+cljs.core.aset = function aset(array, i, val) {
+ return array[i] = val
+};
+cljs.core.alength = function alength(array) {
+ return array.length
+};
+cljs.core.into_array = function() {
+ var into_array = null;
+ var into_array__1 = function(aseq) {
+ return into_array.call(null, null, aseq)
+ };
+ var into_array__2 = function(type, aseq) {
+ return cljs.core.reduce.call(null, function(a, x) {
+ a.push(x);
+ return a
+ }, [], aseq)
+ };
+ into_array = function(type, aseq) {
+ switch(arguments.length) {
+ case 1:
+ return into_array__1.call(this, type);
+ case 2:
+ return into_array__2.call(this, type, aseq)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ into_array.cljs$lang$arity$1 = into_array__1;
+ into_array.cljs$lang$arity$2 = into_array__2;
+ return into_array
+}();
+cljs.core.IFn = {};
+cljs.core._invoke = function() {
+ var _invoke = null;
+ var _invoke__1 = function(this$) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$1(this$)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$)
+ }
+ };
+ var _invoke__2 = function(this$, a) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$2(this$, a)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a)
+ }
+ };
+ var _invoke__3 = function(this$, a, b) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$3(this$, a, b)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b)
+ }
+ };
+ var _invoke__4 = function(this$, a, b, c) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$4
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$4(this$, a, b, c)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c)
+ }
+ };
+ var _invoke__5 = function(this$, a, b, c, d) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$5
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$5(this$, a, b, c, d)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d)
+ }
+ };
+ var _invoke__6 = function(this$, a, b, c, d, e) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$6
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$6(this$, a, b, c, d, e)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e)
+ }
+ };
+ var _invoke__7 = function(this$, a, b, c, d, e, f) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$7
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$7(this$, a, b, c, d, e, f)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e, f)
+ }
+ };
+ var _invoke__8 = function(this$, a, b, c, d, e, f, g) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$8
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$8(this$, a, b, c, d, e, f, g)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e, f, g)
+ }
+ };
+ var _invoke__9 = function(this$, a, b, c, d, e, f, g, h) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$9
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$9(this$, a, b, c, d, e, f, g, h)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e, f, g, h)
+ }
+ };
+ var _invoke__10 = function(this$, a, b, c, d, e, f, g, h, i) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$10
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$10(this$, a, b, c, d, e, f, g, h, i)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e, f, g, h, i)
+ }
+ };
+ var _invoke__11 = function(this$, a, b, c, d, e, f, g, h, i, j) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$11
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$11(this$, a, b, c, d, e, f, g, h, i, j)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e, f, g, h, i, j)
+ }
+ };
+ var _invoke__12 = function(this$, a, b, c, d, e, f, g, h, i, j, k) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$12
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$12(this$, a, b, c, d, e, f, g, h, i, j, k)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e, f, g, h, i, j, k)
+ }
+ };
+ var _invoke__13 = function(this$, a, b, c, d, e, f, g, h, i, j, k, l) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$13
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$13(this$, a, b, c, d, e, f, g, h, i, j, k, l)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e, f, g, h, i, j, k, l)
+ }
+ };
+ var _invoke__14 = function(this$, a, b, c, d, e, f, g, h, i, j, k, l, m) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$14
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$14(this$, a, b, c, d, e, f, g, h, i, j, k, l, m)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e, f, g, h, i, j, k, l, m)
+ }
+ };
+ var _invoke__15 = function(this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$15
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$15(this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
+ }
+ };
+ var _invoke__16 = function(this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$16
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$16(this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
+ }
+ };
+ var _invoke__17 = function(this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$17
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$17(this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)
+ }
+ };
+ var _invoke__18 = function(this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$18
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$18(this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)
+ }
+ };
+ var _invoke__19 = function(this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$19
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$19(this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s)
+ }
+ };
+ var _invoke__20 = function(this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s, t) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$20
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$20(this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s, t)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s, t)
+ }
+ };
+ var _invoke__21 = function(this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s, t, rest) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IFn$_invoke$arity$21
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IFn$_invoke$arity$21(this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s, t, rest)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._invoke[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._invoke["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IFn.-invoke", this$);
+ }
+ }
+ }().call(null, this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s, t, rest)
+ }
+ };
+ _invoke = function(this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s, t, rest) {
+ switch(arguments.length) {
+ case 1:
+ return _invoke__1.call(this, this$);
+ case 2:
+ return _invoke__2.call(this, this$, a);
+ case 3:
+ return _invoke__3.call(this, this$, a, b);
+ case 4:
+ return _invoke__4.call(this, this$, a, b, c);
+ case 5:
+ return _invoke__5.call(this, this$, a, b, c, d);
+ case 6:
+ return _invoke__6.call(this, this$, a, b, c, d, e);
+ case 7:
+ return _invoke__7.call(this, this$, a, b, c, d, e, f);
+ case 8:
+ return _invoke__8.call(this, this$, a, b, c, d, e, f, g);
+ case 9:
+ return _invoke__9.call(this, this$, a, b, c, d, e, f, g, h);
+ case 10:
+ return _invoke__10.call(this, this$, a, b, c, d, e, f, g, h, i);
+ case 11:
+ return _invoke__11.call(this, this$, a, b, c, d, e, f, g, h, i, j);
+ case 12:
+ return _invoke__12.call(this, this$, a, b, c, d, e, f, g, h, i, j, k);
+ case 13:
+ return _invoke__13.call(this, this$, a, b, c, d, e, f, g, h, i, j, k, l);
+ case 14:
+ return _invoke__14.call(this, this$, a, b, c, d, e, f, g, h, i, j, k, l, m);
+ case 15:
+ return _invoke__15.call(this, this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n);
+ case 16:
+ return _invoke__16.call(this, this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
+ case 17:
+ return _invoke__17.call(this, this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p);
+ case 18:
+ return _invoke__18.call(this, this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q);
+ case 19:
+ return _invoke__19.call(this, this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s);
+ case 20:
+ return _invoke__20.call(this, this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s, t);
+ case 21:
+ return _invoke__21.call(this, this$, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s, t, rest)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ _invoke.cljs$lang$arity$1 = _invoke__1;
+ _invoke.cljs$lang$arity$2 = _invoke__2;
+ _invoke.cljs$lang$arity$3 = _invoke__3;
+ _invoke.cljs$lang$arity$4 = _invoke__4;
+ _invoke.cljs$lang$arity$5 = _invoke__5;
+ _invoke.cljs$lang$arity$6 = _invoke__6;
+ _invoke.cljs$lang$arity$7 = _invoke__7;
+ _invoke.cljs$lang$arity$8 = _invoke__8;
+ _invoke.cljs$lang$arity$9 = _invoke__9;
+ _invoke.cljs$lang$arity$10 = _invoke__10;
+ _invoke.cljs$lang$arity$11 = _invoke__11;
+ _invoke.cljs$lang$arity$12 = _invoke__12;
+ _invoke.cljs$lang$arity$13 = _invoke__13;
+ _invoke.cljs$lang$arity$14 = _invoke__14;
+ _invoke.cljs$lang$arity$15 = _invoke__15;
+ _invoke.cljs$lang$arity$16 = _invoke__16;
+ _invoke.cljs$lang$arity$17 = _invoke__17;
+ _invoke.cljs$lang$arity$18 = _invoke__18;
+ _invoke.cljs$lang$arity$19 = _invoke__19;
+ _invoke.cljs$lang$arity$20 = _invoke__20;
+ _invoke.cljs$lang$arity$21 = _invoke__21;
+ return _invoke
+}();
+cljs.core.ICounted = {};
+cljs.core._count = function _count(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$ICounted$_count$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$ICounted$_count$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._count[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._count["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ICounted.-count", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core.IEmptyableCollection = {};
+cljs.core._empty = function _empty(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IEmptyableCollection$_empty$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IEmptyableCollection$_empty$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._empty[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._empty["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IEmptyableCollection.-empty", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core.ICollection = {};
+cljs.core._conj = function _conj(coll, o) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$ICollection$_conj$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$ICollection$_conj$arity$2(coll, o)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._conj[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._conj["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ICollection.-conj", coll);
+ }
+ }
+ }().call(null, coll, o)
+ }
+};
+cljs.core.IIndexed = {};
+cljs.core._nth = function() {
+ var _nth = null;
+ var _nth__2 = function(coll, n) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IIndexed$_nth$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IIndexed$_nth$arity$2(coll, n)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._nth[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._nth["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IIndexed.-nth", coll);
+ }
+ }
+ }().call(null, coll, n)
+ }
+ };
+ var _nth__3 = function(coll, n, not_found) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IIndexed$_nth$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IIndexed$_nth$arity$3(coll, n, not_found)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._nth[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._nth["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IIndexed.-nth", coll);
+ }
+ }
+ }().call(null, coll, n, not_found)
+ }
+ };
+ _nth = function(coll, n, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return _nth__2.call(this, coll, n);
+ case 3:
+ return _nth__3.call(this, coll, n, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ _nth.cljs$lang$arity$2 = _nth__2;
+ _nth.cljs$lang$arity$3 = _nth__3;
+ return _nth
+}();
+cljs.core.ASeq = {};
+cljs.core.ISeq = {};
+cljs.core._first = function _first(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$ISeq$_first$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$ISeq$_first$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._first[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._first["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ISeq.-first", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core._rest = function _rest(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$ISeq$_rest$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$ISeq$_rest$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._rest[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._rest["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ISeq.-rest", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core.INext = {};
+cljs.core._next = function _next(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$INext$_next$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$INext$_next$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._next[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._next["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "INext.-next", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core.ILookup = {};
+cljs.core._lookup = function() {
+ var _lookup = null;
+ var _lookup__2 = function(o, k) {
+ if(function() {
+ var and__3822__auto__ = o;
+ if(and__3822__auto__) {
+ return o.cljs$core$ILookup$_lookup$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return o.cljs$core$ILookup$_lookup$arity$2(o, k)
+ }else {
+ var x__2373__auto__ = o == null ? null : o;
+ return function() {
+ var or__3824__auto__ = cljs.core._lookup[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._lookup["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ILookup.-lookup", o);
+ }
+ }
+ }().call(null, o, k)
+ }
+ };
+ var _lookup__3 = function(o, k, not_found) {
+ if(function() {
+ var and__3822__auto__ = o;
+ if(and__3822__auto__) {
+ return o.cljs$core$ILookup$_lookup$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return o.cljs$core$ILookup$_lookup$arity$3(o, k, not_found)
+ }else {
+ var x__2373__auto__ = o == null ? null : o;
+ return function() {
+ var or__3824__auto__ = cljs.core._lookup[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._lookup["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ILookup.-lookup", o);
+ }
+ }
+ }().call(null, o, k, not_found)
+ }
+ };
+ _lookup = function(o, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return _lookup__2.call(this, o, k);
+ case 3:
+ return _lookup__3.call(this, o, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ _lookup.cljs$lang$arity$2 = _lookup__2;
+ _lookup.cljs$lang$arity$3 = _lookup__3;
+ return _lookup
+}();
+cljs.core.IAssociative = {};
+cljs.core._contains_key_QMARK_ = function _contains_key_QMARK_(coll, k) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IAssociative$_contains_key_QMARK_$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IAssociative$_contains_key_QMARK_$arity$2(coll, k)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._contains_key_QMARK_[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._contains_key_QMARK_["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IAssociative.-contains-key?", coll);
+ }
+ }
+ }().call(null, coll, k)
+ }
+};
+cljs.core._assoc = function _assoc(coll, k, v) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IAssociative$_assoc$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IAssociative$_assoc$arity$3(coll, k, v)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._assoc[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._assoc["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IAssociative.-assoc", coll);
+ }
+ }
+ }().call(null, coll, k, v)
+ }
+};
+cljs.core.IMap = {};
+cljs.core._dissoc = function _dissoc(coll, k) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IMap$_dissoc$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IMap$_dissoc$arity$2(coll, k)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._dissoc[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._dissoc["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IMap.-dissoc", coll);
+ }
+ }
+ }().call(null, coll, k)
+ }
+};
+cljs.core.IMapEntry = {};
+cljs.core._key = function _key(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IMapEntry$_key$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IMapEntry$_key$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._key[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._key["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IMapEntry.-key", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core._val = function _val(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IMapEntry$_val$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IMapEntry$_val$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._val[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._val["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IMapEntry.-val", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core.ISet = {};
+cljs.core._disjoin = function _disjoin(coll, v) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$ISet$_disjoin$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$ISet$_disjoin$arity$2(coll, v)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._disjoin[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._disjoin["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ISet.-disjoin", coll);
+ }
+ }
+ }().call(null, coll, v)
+ }
+};
+cljs.core.IStack = {};
+cljs.core._peek = function _peek(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IStack$_peek$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IStack$_peek$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._peek[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._peek["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IStack.-peek", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core._pop = function _pop(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IStack$_pop$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IStack$_pop$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._pop[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._pop["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IStack.-pop", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core.IVector = {};
+cljs.core._assoc_n = function _assoc_n(coll, n, val) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IVector$_assoc_n$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IVector$_assoc_n$arity$3(coll, n, val)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._assoc_n[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._assoc_n["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IVector.-assoc-n", coll);
+ }
+ }
+ }().call(null, coll, n, val)
+ }
+};
+cljs.core.IDeref = {};
+cljs.core._deref = function _deref(o) {
+ if(function() {
+ var and__3822__auto__ = o;
+ if(and__3822__auto__) {
+ return o.cljs$core$IDeref$_deref$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return o.cljs$core$IDeref$_deref$arity$1(o)
+ }else {
+ var x__2373__auto__ = o == null ? null : o;
+ return function() {
+ var or__3824__auto__ = cljs.core._deref[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._deref["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IDeref.-deref", o);
+ }
+ }
+ }().call(null, o)
+ }
+};
+cljs.core.IDerefWithTimeout = {};
+cljs.core._deref_with_timeout = function _deref_with_timeout(o, msec, timeout_val) {
+ if(function() {
+ var and__3822__auto__ = o;
+ if(and__3822__auto__) {
+ return o.cljs$core$IDerefWithTimeout$_deref_with_timeout$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return o.cljs$core$IDerefWithTimeout$_deref_with_timeout$arity$3(o, msec, timeout_val)
+ }else {
+ var x__2373__auto__ = o == null ? null : o;
+ return function() {
+ var or__3824__auto__ = cljs.core._deref_with_timeout[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._deref_with_timeout["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IDerefWithTimeout.-deref-with-timeout", o);
+ }
+ }
+ }().call(null, o, msec, timeout_val)
+ }
+};
+cljs.core.IMeta = {};
+cljs.core._meta = function _meta(o) {
+ if(function() {
+ var and__3822__auto__ = o;
+ if(and__3822__auto__) {
+ return o.cljs$core$IMeta$_meta$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return o.cljs$core$IMeta$_meta$arity$1(o)
+ }else {
+ var x__2373__auto__ = o == null ? null : o;
+ return function() {
+ var or__3824__auto__ = cljs.core._meta[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._meta["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IMeta.-meta", o);
+ }
+ }
+ }().call(null, o)
+ }
+};
+cljs.core.IWithMeta = {};
+cljs.core._with_meta = function _with_meta(o, meta) {
+ if(function() {
+ var and__3822__auto__ = o;
+ if(and__3822__auto__) {
+ return o.cljs$core$IWithMeta$_with_meta$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return o.cljs$core$IWithMeta$_with_meta$arity$2(o, meta)
+ }else {
+ var x__2373__auto__ = o == null ? null : o;
+ return function() {
+ var or__3824__auto__ = cljs.core._with_meta[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._with_meta["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IWithMeta.-with-meta", o);
+ }
+ }
+ }().call(null, o, meta)
+ }
+};
+cljs.core.IReduce = {};
+cljs.core._reduce = function() {
+ var _reduce = null;
+ var _reduce__2 = function(coll, f) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IReduce$_reduce$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IReduce$_reduce$arity$2(coll, f)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._reduce[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._reduce["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IReduce.-reduce", coll);
+ }
+ }
+ }().call(null, coll, f)
+ }
+ };
+ var _reduce__3 = function(coll, f, start) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IReduce$_reduce$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IReduce$_reduce$arity$3(coll, f, start)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._reduce[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._reduce["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IReduce.-reduce", coll);
+ }
+ }
+ }().call(null, coll, f, start)
+ }
+ };
+ _reduce = function(coll, f, start) {
+ switch(arguments.length) {
+ case 2:
+ return _reduce__2.call(this, coll, f);
+ case 3:
+ return _reduce__3.call(this, coll, f, start)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ _reduce.cljs$lang$arity$2 = _reduce__2;
+ _reduce.cljs$lang$arity$3 = _reduce__3;
+ return _reduce
+}();
+cljs.core.IKVReduce = {};
+cljs.core._kv_reduce = function _kv_reduce(coll, f, init) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IKVReduce$_kv_reduce$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IKVReduce$_kv_reduce$arity$3(coll, f, init)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._kv_reduce[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._kv_reduce["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IKVReduce.-kv-reduce", coll);
+ }
+ }
+ }().call(null, coll, f, init)
+ }
+};
+cljs.core.IEquiv = {};
+cljs.core._equiv = function _equiv(o, other) {
+ if(function() {
+ var and__3822__auto__ = o;
+ if(and__3822__auto__) {
+ return o.cljs$core$IEquiv$_equiv$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return o.cljs$core$IEquiv$_equiv$arity$2(o, other)
+ }else {
+ var x__2373__auto__ = o == null ? null : o;
+ return function() {
+ var or__3824__auto__ = cljs.core._equiv[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._equiv["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IEquiv.-equiv", o);
+ }
+ }
+ }().call(null, o, other)
+ }
+};
+cljs.core.IHash = {};
+cljs.core._hash = function _hash(o) {
+ if(function() {
+ var and__3822__auto__ = o;
+ if(and__3822__auto__) {
+ return o.cljs$core$IHash$_hash$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return o.cljs$core$IHash$_hash$arity$1(o)
+ }else {
+ var x__2373__auto__ = o == null ? null : o;
+ return function() {
+ var or__3824__auto__ = cljs.core._hash[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._hash["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IHash.-hash", o);
+ }
+ }
+ }().call(null, o)
+ }
+};
+cljs.core.ISeqable = {};
+cljs.core._seq = function _seq(o) {
+ if(function() {
+ var and__3822__auto__ = o;
+ if(and__3822__auto__) {
+ return o.cljs$core$ISeqable$_seq$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return o.cljs$core$ISeqable$_seq$arity$1(o)
+ }else {
+ var x__2373__auto__ = o == null ? null : o;
+ return function() {
+ var or__3824__auto__ = cljs.core._seq[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._seq["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ISeqable.-seq", o);
+ }
+ }
+ }().call(null, o)
+ }
+};
+cljs.core.ISequential = {};
+cljs.core.IList = {};
+cljs.core.IRecord = {};
+cljs.core.IReversible = {};
+cljs.core._rseq = function _rseq(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IReversible$_rseq$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IReversible$_rseq$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._rseq[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._rseq["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IReversible.-rseq", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core.ISorted = {};
+cljs.core._sorted_seq = function _sorted_seq(coll, ascending_QMARK_) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$ISorted$_sorted_seq$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$ISorted$_sorted_seq$arity$2(coll, ascending_QMARK_)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._sorted_seq[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._sorted_seq["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ISorted.-sorted-seq", coll);
+ }
+ }
+ }().call(null, coll, ascending_QMARK_)
+ }
+};
+cljs.core._sorted_seq_from = function _sorted_seq_from(coll, k, ascending_QMARK_) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$ISorted$_sorted_seq_from$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$ISorted$_sorted_seq_from$arity$3(coll, k, ascending_QMARK_)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._sorted_seq_from[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._sorted_seq_from["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ISorted.-sorted-seq-from", coll);
+ }
+ }
+ }().call(null, coll, k, ascending_QMARK_)
+ }
+};
+cljs.core._entry_key = function _entry_key(coll, entry) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$ISorted$_entry_key$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$ISorted$_entry_key$arity$2(coll, entry)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._entry_key[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._entry_key["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ISorted.-entry-key", coll);
+ }
+ }
+ }().call(null, coll, entry)
+ }
+};
+cljs.core._comparator = function _comparator(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$ISorted$_comparator$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$ISorted$_comparator$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._comparator[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._comparator["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ISorted.-comparator", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core.IPrintable = {};
+cljs.core._pr_seq = function _pr_seq(o, opts) {
+ if(function() {
+ var and__3822__auto__ = o;
+ if(and__3822__auto__) {
+ return o.cljs$core$IPrintable$_pr_seq$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return o.cljs$core$IPrintable$_pr_seq$arity$2(o, opts)
+ }else {
+ var x__2373__auto__ = o == null ? null : o;
+ return function() {
+ var or__3824__auto__ = cljs.core._pr_seq[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._pr_seq["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IPrintable.-pr-seq", o);
+ }
+ }
+ }().call(null, o, opts)
+ }
+};
+cljs.core.IWriter = {};
+cljs.core._write = function _write(writer, s) {
+ if(function() {
+ var and__3822__auto__ = writer;
+ if(and__3822__auto__) {
+ return writer.cljs$core$IWriter$_write$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return writer.cljs$core$IWriter$_write$arity$2(writer, s)
+ }else {
+ var x__2373__auto__ = writer == null ? null : writer;
+ return function() {
+ var or__3824__auto__ = cljs.core._write[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._write["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IWriter.-write", writer);
+ }
+ }
+ }().call(null, writer, s)
+ }
+};
+cljs.core._flush = function _flush(writer) {
+ if(function() {
+ var and__3822__auto__ = writer;
+ if(and__3822__auto__) {
+ return writer.cljs$core$IWriter$_flush$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return writer.cljs$core$IWriter$_flush$arity$1(writer)
+ }else {
+ var x__2373__auto__ = writer == null ? null : writer;
+ return function() {
+ var or__3824__auto__ = cljs.core._flush[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._flush["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IWriter.-flush", writer);
+ }
+ }
+ }().call(null, writer)
+ }
+};
+cljs.core.IPrintWithWriter = {};
+cljs.core._pr_writer = function _pr_writer(o, writer, opts) {
+ if(function() {
+ var and__3822__auto__ = o;
+ if(and__3822__auto__) {
+ return o.cljs$core$IPrintWithWriter$_pr_writer$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return o.cljs$core$IPrintWithWriter$_pr_writer$arity$3(o, writer, opts)
+ }else {
+ var x__2373__auto__ = o == null ? null : o;
+ return function() {
+ var or__3824__auto__ = cljs.core._pr_writer[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._pr_writer["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IPrintWithWriter.-pr-writer", o);
+ }
+ }
+ }().call(null, o, writer, opts)
+ }
+};
+cljs.core.IPending = {};
+cljs.core._realized_QMARK_ = function _realized_QMARK_(d) {
+ if(function() {
+ var and__3822__auto__ = d;
+ if(and__3822__auto__) {
+ return d.cljs$core$IPending$_realized_QMARK_$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return d.cljs$core$IPending$_realized_QMARK_$arity$1(d)
+ }else {
+ var x__2373__auto__ = d == null ? null : d;
+ return function() {
+ var or__3824__auto__ = cljs.core._realized_QMARK_[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._realized_QMARK_["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IPending.-realized?", d);
+ }
+ }
+ }().call(null, d)
+ }
+};
+cljs.core.IWatchable = {};
+cljs.core._notify_watches = function _notify_watches(this$, oldval, newval) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IWatchable$_notify_watches$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IWatchable$_notify_watches$arity$3(this$, oldval, newval)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._notify_watches[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._notify_watches["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IWatchable.-notify-watches", this$);
+ }
+ }
+ }().call(null, this$, oldval, newval)
+ }
+};
+cljs.core._add_watch = function _add_watch(this$, key, f) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IWatchable$_add_watch$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IWatchable$_add_watch$arity$3(this$, key, f)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._add_watch[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._add_watch["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IWatchable.-add-watch", this$);
+ }
+ }
+ }().call(null, this$, key, f)
+ }
+};
+cljs.core._remove_watch = function _remove_watch(this$, key) {
+ if(function() {
+ var and__3822__auto__ = this$;
+ if(and__3822__auto__) {
+ return this$.cljs$core$IWatchable$_remove_watch$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return this$.cljs$core$IWatchable$_remove_watch$arity$2(this$, key)
+ }else {
+ var x__2373__auto__ = this$ == null ? null : this$;
+ return function() {
+ var or__3824__auto__ = cljs.core._remove_watch[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._remove_watch["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IWatchable.-remove-watch", this$);
+ }
+ }
+ }().call(null, this$, key)
+ }
+};
+cljs.core.IEditableCollection = {};
+cljs.core._as_transient = function _as_transient(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IEditableCollection$_as_transient$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IEditableCollection$_as_transient$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._as_transient[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._as_transient["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IEditableCollection.-as-transient", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core.ITransientCollection = {};
+cljs.core._conj_BANG_ = function _conj_BANG_(tcoll, val) {
+ if(function() {
+ var and__3822__auto__ = tcoll;
+ if(and__3822__auto__) {
+ return tcoll.cljs$core$ITransientCollection$_conj_BANG_$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return tcoll.cljs$core$ITransientCollection$_conj_BANG_$arity$2(tcoll, val)
+ }else {
+ var x__2373__auto__ = tcoll == null ? null : tcoll;
+ return function() {
+ var or__3824__auto__ = cljs.core._conj_BANG_[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._conj_BANG_["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ITransientCollection.-conj!", tcoll);
+ }
+ }
+ }().call(null, tcoll, val)
+ }
+};
+cljs.core._persistent_BANG_ = function _persistent_BANG_(tcoll) {
+ if(function() {
+ var and__3822__auto__ = tcoll;
+ if(and__3822__auto__) {
+ return tcoll.cljs$core$ITransientCollection$_persistent_BANG_$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return tcoll.cljs$core$ITransientCollection$_persistent_BANG_$arity$1(tcoll)
+ }else {
+ var x__2373__auto__ = tcoll == null ? null : tcoll;
+ return function() {
+ var or__3824__auto__ = cljs.core._persistent_BANG_[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._persistent_BANG_["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ITransientCollection.-persistent!", tcoll);
+ }
+ }
+ }().call(null, tcoll)
+ }
+};
+cljs.core.ITransientAssociative = {};
+cljs.core._assoc_BANG_ = function _assoc_BANG_(tcoll, key, val) {
+ if(function() {
+ var and__3822__auto__ = tcoll;
+ if(and__3822__auto__) {
+ return tcoll.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return tcoll.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3(tcoll, key, val)
+ }else {
+ var x__2373__auto__ = tcoll == null ? null : tcoll;
+ return function() {
+ var or__3824__auto__ = cljs.core._assoc_BANG_[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._assoc_BANG_["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ITransientAssociative.-assoc!", tcoll);
+ }
+ }
+ }().call(null, tcoll, key, val)
+ }
+};
+cljs.core.ITransientMap = {};
+cljs.core._dissoc_BANG_ = function _dissoc_BANG_(tcoll, key) {
+ if(function() {
+ var and__3822__auto__ = tcoll;
+ if(and__3822__auto__) {
+ return tcoll.cljs$core$ITransientMap$_dissoc_BANG_$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return tcoll.cljs$core$ITransientMap$_dissoc_BANG_$arity$2(tcoll, key)
+ }else {
+ var x__2373__auto__ = tcoll == null ? null : tcoll;
+ return function() {
+ var or__3824__auto__ = cljs.core._dissoc_BANG_[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._dissoc_BANG_["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ITransientMap.-dissoc!", tcoll);
+ }
+ }
+ }().call(null, tcoll, key)
+ }
+};
+cljs.core.ITransientVector = {};
+cljs.core._assoc_n_BANG_ = function _assoc_n_BANG_(tcoll, n, val) {
+ if(function() {
+ var and__3822__auto__ = tcoll;
+ if(and__3822__auto__) {
+ return tcoll.cljs$core$ITransientVector$_assoc_n_BANG_$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return tcoll.cljs$core$ITransientVector$_assoc_n_BANG_$arity$3(tcoll, n, val)
+ }else {
+ var x__2373__auto__ = tcoll == null ? null : tcoll;
+ return function() {
+ var or__3824__auto__ = cljs.core._assoc_n_BANG_[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._assoc_n_BANG_["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ITransientVector.-assoc-n!", tcoll);
+ }
+ }
+ }().call(null, tcoll, n, val)
+ }
+};
+cljs.core._pop_BANG_ = function _pop_BANG_(tcoll) {
+ if(function() {
+ var and__3822__auto__ = tcoll;
+ if(and__3822__auto__) {
+ return tcoll.cljs$core$ITransientVector$_pop_BANG_$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return tcoll.cljs$core$ITransientVector$_pop_BANG_$arity$1(tcoll)
+ }else {
+ var x__2373__auto__ = tcoll == null ? null : tcoll;
+ return function() {
+ var or__3824__auto__ = cljs.core._pop_BANG_[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._pop_BANG_["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ITransientVector.-pop!", tcoll);
+ }
+ }
+ }().call(null, tcoll)
+ }
+};
+cljs.core.ITransientSet = {};
+cljs.core._disjoin_BANG_ = function _disjoin_BANG_(tcoll, v) {
+ if(function() {
+ var and__3822__auto__ = tcoll;
+ if(and__3822__auto__) {
+ return tcoll.cljs$core$ITransientSet$_disjoin_BANG_$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return tcoll.cljs$core$ITransientSet$_disjoin_BANG_$arity$2(tcoll, v)
+ }else {
+ var x__2373__auto__ = tcoll == null ? null : tcoll;
+ return function() {
+ var or__3824__auto__ = cljs.core._disjoin_BANG_[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._disjoin_BANG_["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "ITransientSet.-disjoin!", tcoll);
+ }
+ }
+ }().call(null, tcoll, v)
+ }
+};
+cljs.core.IComparable = {};
+cljs.core._compare = function _compare(x, y) {
+ if(function() {
+ var and__3822__auto__ = x;
+ if(and__3822__auto__) {
+ return x.cljs$core$IComparable$_compare$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return x.cljs$core$IComparable$_compare$arity$2(x, y)
+ }else {
+ var x__2373__auto__ = x == null ? null : x;
+ return function() {
+ var or__3824__auto__ = cljs.core._compare[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._compare["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IComparable.-compare", x);
+ }
+ }
+ }().call(null, x, y)
+ }
+};
+cljs.core.IChunk = {};
+cljs.core._drop_first = function _drop_first(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IChunk$_drop_first$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IChunk$_drop_first$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._drop_first[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._drop_first["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IChunk.-drop-first", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core.IChunkedSeq = {};
+cljs.core._chunked_first = function _chunked_first(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IChunkedSeq$_chunked_first$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IChunkedSeq$_chunked_first$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._chunked_first[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._chunked_first["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IChunkedSeq.-chunked-first", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core._chunked_rest = function _chunked_rest(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IChunkedSeq$_chunked_rest$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IChunkedSeq$_chunked_rest$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._chunked_rest[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._chunked_rest["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IChunkedSeq.-chunked-rest", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core.IChunkedNext = {};
+cljs.core._chunked_next = function _chunked_next(coll) {
+ if(function() {
+ var and__3822__auto__ = coll;
+ if(and__3822__auto__) {
+ return coll.cljs$core$IChunkedNext$_chunked_next$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IChunkedNext$_chunked_next$arity$1(coll)
+ }else {
+ var x__2373__auto__ = coll == null ? null : coll;
+ return function() {
+ var or__3824__auto__ = cljs.core._chunked_next[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._chunked_next["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IChunkedNext.-chunked-next", coll);
+ }
+ }
+ }().call(null, coll)
+ }
+};
+cljs.core.seq = function seq(coll) {
+ if(coll == null) {
+ return null
+ }else {
+ if(function() {
+ var G__2824 = coll;
+ if(G__2824) {
+ if(function() {
+ var or__3824__auto__ = G__2824.cljs$lang$protocol_mask$partition0$ & 32;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2824.cljs$core$ASeq$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2824.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ASeq, G__2824)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ASeq, G__2824)
+ }
+ }()) {
+ return coll
+ }else {
+ return cljs.core._seq.call(null, coll)
+ }
+ }
+};
+cljs.core.first = function first(coll) {
+ if(coll == null) {
+ return null
+ }else {
+ if(function() {
+ var G__2826 = coll;
+ if(G__2826) {
+ if(function() {
+ var or__3824__auto__ = G__2826.cljs$lang$protocol_mask$partition0$ & 64;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2826.cljs$core$ISeq$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2826.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ISeq, G__2826)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ISeq, G__2826)
+ }
+ }()) {
+ return cljs.core._first.call(null, coll)
+ }else {
+ var s = cljs.core.seq.call(null, coll);
+ if(s == null) {
+ return null
+ }else {
+ return cljs.core._first.call(null, s)
+ }
+ }
+ }
+};
+cljs.core.rest = function rest(coll) {
+ if(!(coll == null)) {
+ if(function() {
+ var G__2828 = coll;
+ if(G__2828) {
+ if(function() {
+ var or__3824__auto__ = G__2828.cljs$lang$protocol_mask$partition0$ & 64;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2828.cljs$core$ISeq$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2828.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ISeq, G__2828)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ISeq, G__2828)
+ }
+ }()) {
+ return cljs.core._rest.call(null, coll)
+ }else {
+ var s = cljs.core.seq.call(null, coll);
+ if(!(s == null)) {
+ return cljs.core._rest.call(null, s)
+ }else {
+ return cljs.core.List.EMPTY
+ }
+ }
+ }else {
+ return cljs.core.List.EMPTY
+ }
+};
+cljs.core.next = function next(coll) {
+ if(coll == null) {
+ return null
+ }else {
+ if(function() {
+ var G__2830 = coll;
+ if(G__2830) {
+ if(function() {
+ var or__3824__auto__ = G__2830.cljs$lang$protocol_mask$partition0$ & 128;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2830.cljs$core$INext$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2830.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.INext, G__2830)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.INext, G__2830)
+ }
+ }()) {
+ return cljs.core._next.call(null, coll)
+ }else {
+ return cljs.core.seq.call(null, cljs.core.rest.call(null, coll))
+ }
+ }
+};
+cljs.core._EQ_ = function() {
+ var _EQ_ = null;
+ var _EQ___1 = function(x) {
+ return true
+ };
+ var _EQ___2 = function(x, y) {
+ var or__3824__auto__ = x === y;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return cljs.core._equiv.call(null, x, y)
+ }
+ };
+ var _EQ___3 = function() {
+ var G__2831__delegate = function(x, y, more) {
+ while(true) {
+ if(cljs.core.truth_(_EQ_.call(null, x, y))) {
+ if(cljs.core.next.call(null, more)) {
+ var G__2832 = y;
+ var G__2833 = cljs.core.first.call(null, more);
+ var G__2834 = cljs.core.next.call(null, more);
+ x = G__2832;
+ y = G__2833;
+ more = G__2834;
+ continue
+ }else {
+ return _EQ_.call(null, y, cljs.core.first.call(null, more))
+ }
+ }else {
+ return false
+ }
+ break
+ }
+ };
+ var G__2831 = function(x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2831__delegate.call(this, x, y, more)
+ };
+ G__2831.cljs$lang$maxFixedArity = 2;
+ G__2831.cljs$lang$applyTo = function(arglist__2835) {
+ var x = cljs.core.first(arglist__2835);
+ var y = cljs.core.first(cljs.core.next(arglist__2835));
+ var more = cljs.core.rest(cljs.core.next(arglist__2835));
+ return G__2831__delegate(x, y, more)
+ };
+ G__2831.cljs$lang$arity$variadic = G__2831__delegate;
+ return G__2831
+ }();
+ _EQ_ = function(x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 1:
+ return _EQ___1.call(this, x);
+ case 2:
+ return _EQ___2.call(this, x, y);
+ default:
+ return _EQ___3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ _EQ_.cljs$lang$maxFixedArity = 2;
+ _EQ_.cljs$lang$applyTo = _EQ___3.cljs$lang$applyTo;
+ _EQ_.cljs$lang$arity$1 = _EQ___1;
+ _EQ_.cljs$lang$arity$2 = _EQ___2;
+ _EQ_.cljs$lang$arity$variadic = _EQ___3.cljs$lang$arity$variadic;
+ return _EQ_
+}();
+cljs.core.type = function type(x) {
+ if(x == null) {
+ return null
+ }else {
+ return x.constructor
+ }
+};
+cljs.core.instance_QMARK_ = function instance_QMARK_(t, o) {
+ return o instanceof t
+};
+cljs.core.IHash["null"] = true;
+cljs.core._hash["null"] = function(o) {
+ return 0
+};
+cljs.core.ILookup["null"] = true;
+cljs.core._lookup["null"] = function() {
+ var G__2836 = null;
+ var G__2836__2 = function(o, k) {
+ return null
+ };
+ var G__2836__3 = function(o, k, not_found) {
+ return not_found
+ };
+ G__2836 = function(o, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__2836__2.call(this, o, k);
+ case 3:
+ return G__2836__3.call(this, o, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__2836
+}();
+cljs.core.IAssociative["null"] = true;
+cljs.core._assoc["null"] = function(_, k, v) {
+ return cljs.core.hash_map.call(null, k, v)
+};
+cljs.core.INext["null"] = true;
+cljs.core._next["null"] = function(_) {
+ return null
+};
+cljs.core.IPrintWithWriter["null"] = true;
+cljs.core._pr_writer["null"] = function(o, writer, _) {
+ return cljs.core._write.call(null, writer, "nil")
+};
+cljs.core.ICollection["null"] = true;
+cljs.core._conj["null"] = function(_, o) {
+ return cljs.core.list.call(null, o)
+};
+cljs.core.IReduce["null"] = true;
+cljs.core._reduce["null"] = function() {
+ var G__2837 = null;
+ var G__2837__2 = function(_, f) {
+ return f.call(null)
+ };
+ var G__2837__3 = function(_, f, start) {
+ return start
+ };
+ G__2837 = function(_, f, start) {
+ switch(arguments.length) {
+ case 2:
+ return G__2837__2.call(this, _, f);
+ case 3:
+ return G__2837__3.call(this, _, f, start)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__2837
+}();
+cljs.core.IPrintable["null"] = true;
+cljs.core._pr_seq["null"] = function(o) {
+ return cljs.core.list.call(null, "nil")
+};
+cljs.core.ISet["null"] = true;
+cljs.core._disjoin["null"] = function(_, v) {
+ return null
+};
+cljs.core.ICounted["null"] = true;
+cljs.core._count["null"] = function(_) {
+ return 0
+};
+cljs.core.IStack["null"] = true;
+cljs.core._peek["null"] = function(_) {
+ return null
+};
+cljs.core._pop["null"] = function(_) {
+ return null
+};
+cljs.core.ISeq["null"] = true;
+cljs.core._first["null"] = function(_) {
+ return null
+};
+cljs.core._rest["null"] = function(_) {
+ return cljs.core.list.call(null)
+};
+cljs.core.IEquiv["null"] = true;
+cljs.core._equiv["null"] = function(_, o) {
+ return o == null
+};
+cljs.core.IWithMeta["null"] = true;
+cljs.core._with_meta["null"] = function(_, meta) {
+ return null
+};
+cljs.core.IMeta["null"] = true;
+cljs.core._meta["null"] = function(_) {
+ return null
+};
+cljs.core.IIndexed["null"] = true;
+cljs.core._nth["null"] = function() {
+ var G__2838 = null;
+ var G__2838__2 = function(_, n) {
+ return null
+ };
+ var G__2838__3 = function(_, n, not_found) {
+ return not_found
+ };
+ G__2838 = function(_, n, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__2838__2.call(this, _, n);
+ case 3:
+ return G__2838__3.call(this, _, n, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__2838
+}();
+cljs.core.IEmptyableCollection["null"] = true;
+cljs.core._empty["null"] = function(_) {
+ return null
+};
+cljs.core.IMap["null"] = true;
+cljs.core._dissoc["null"] = function(_, k) {
+ return null
+};
+Date.prototype.cljs$core$IEquiv$ = true;
+Date.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(o, other) {
+ var and__3822__auto__ = cljs.core.instance_QMARK_.call(null, Date, other);
+ if(and__3822__auto__) {
+ return o.toString() === other.toString()
+ }else {
+ return and__3822__auto__
+ }
+};
+cljs.core.IHash["number"] = true;
+cljs.core._hash["number"] = function(o) {
+ return o
+};
+cljs.core.IEquiv["number"] = true;
+cljs.core._equiv["number"] = function(x, o) {
+ return x === o
+};
+cljs.core.IHash["boolean"] = true;
+cljs.core._hash["boolean"] = function(o) {
+ if(o === true) {
+ return 1
+ }else {
+ return 0
+ }
+};
+cljs.core.IHash["_"] = true;
+cljs.core._hash["_"] = function(o) {
+ return goog.getUid(o)
+};
+cljs.core.inc = function inc(x) {
+ return x + 1
+};
+goog.provide("cljs.core.Reduced");
+cljs.core.Reduced = function(val) {
+ this.val = val;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 32768
+};
+cljs.core.Reduced.cljs$lang$type = true;
+cljs.core.Reduced.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/Reduced")
+};
+cljs.core.Reduced.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/Reduced")
+};
+cljs.core.Reduced.prototype.cljs$core$IDeref$_deref$arity$1 = function(o) {
+ var self__ = this;
+ return self__.val
+};
+cljs.core.Reduced;
+cljs.core.reduced = function reduced(x) {
+ return new cljs.core.Reduced(x)
+};
+cljs.core.reduced_QMARK_ = function reduced_QMARK_(r) {
+ return cljs.core.instance_QMARK_.call(null, cljs.core.Reduced, r)
+};
+cljs.core.ci_reduce = function() {
+ var ci_reduce = null;
+ var ci_reduce__2 = function(cicoll, f) {
+ var cnt = cljs.core._count.call(null, cicoll);
+ if(cnt === 0) {
+ return f.call(null)
+ }else {
+ var val = cljs.core._nth.call(null, cicoll, 0);
+ var n = 1;
+ while(true) {
+ if(n < cnt) {
+ var nval = f.call(null, val, cljs.core._nth.call(null, cicoll, n));
+ if(cljs.core.reduced_QMARK_.call(null, nval)) {
+ return cljs.core.deref.call(null, nval)
+ }else {
+ var G__2839 = nval;
+ var G__2840 = n + 1;
+ val = G__2839;
+ n = G__2840;
+ continue
+ }
+ }else {
+ return val
+ }
+ break
+ }
+ }
+ };
+ var ci_reduce__3 = function(cicoll, f, val) {
+ var cnt = cljs.core._count.call(null, cicoll);
+ var val__$1 = val;
+ var n = 0;
+ while(true) {
+ if(n < cnt) {
+ var nval = f.call(null, val__$1, cljs.core._nth.call(null, cicoll, n));
+ if(cljs.core.reduced_QMARK_.call(null, nval)) {
+ return cljs.core.deref.call(null, nval)
+ }else {
+ var G__2841 = nval;
+ var G__2842 = n + 1;
+ val__$1 = G__2841;
+ n = G__2842;
+ continue
+ }
+ }else {
+ return val__$1
+ }
+ break
+ }
+ };
+ var ci_reduce__4 = function(cicoll, f, val, idx) {
+ var cnt = cljs.core._count.call(null, cicoll);
+ var val__$1 = val;
+ var n = idx;
+ while(true) {
+ if(n < cnt) {
+ var nval = f.call(null, val__$1, cljs.core._nth.call(null, cicoll, n));
+ if(cljs.core.reduced_QMARK_.call(null, nval)) {
+ return cljs.core.deref.call(null, nval)
+ }else {
+ var G__2843 = nval;
+ var G__2844 = n + 1;
+ val__$1 = G__2843;
+ n = G__2844;
+ continue
+ }
+ }else {
+ return val__$1
+ }
+ break
+ }
+ };
+ ci_reduce = function(cicoll, f, val, idx) {
+ switch(arguments.length) {
+ case 2:
+ return ci_reduce__2.call(this, cicoll, f);
+ case 3:
+ return ci_reduce__3.call(this, cicoll, f, val);
+ case 4:
+ return ci_reduce__4.call(this, cicoll, f, val, idx)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ ci_reduce.cljs$lang$arity$2 = ci_reduce__2;
+ ci_reduce.cljs$lang$arity$3 = ci_reduce__3;
+ ci_reduce.cljs$lang$arity$4 = ci_reduce__4;
+ return ci_reduce
+}();
+cljs.core.array_reduce = function() {
+ var array_reduce = null;
+ var array_reduce__2 = function(arr, f) {
+ var cnt = arr.length;
+ if(arr.length === 0) {
+ return f.call(null)
+ }else {
+ var val = arr[0];
+ var n = 1;
+ while(true) {
+ if(n < cnt) {
+ var nval = f.call(null, val, arr[n]);
+ if(cljs.core.reduced_QMARK_.call(null, nval)) {
+ return cljs.core.deref.call(null, nval)
+ }else {
+ var G__2845 = nval;
+ var G__2846 = n + 1;
+ val = G__2845;
+ n = G__2846;
+ continue
+ }
+ }else {
+ return val
+ }
+ break
+ }
+ }
+ };
+ var array_reduce__3 = function(arr, f, val) {
+ var cnt = arr.length;
+ var val__$1 = val;
+ var n = 0;
+ while(true) {
+ if(n < cnt) {
+ var nval = f.call(null, val__$1, arr[n]);
+ if(cljs.core.reduced_QMARK_.call(null, nval)) {
+ return cljs.core.deref.call(null, nval)
+ }else {
+ var G__2847 = nval;
+ var G__2848 = n + 1;
+ val__$1 = G__2847;
+ n = G__2848;
+ continue
+ }
+ }else {
+ return val__$1
+ }
+ break
+ }
+ };
+ var array_reduce__4 = function(arr, f, val, idx) {
+ var cnt = arr.length;
+ var val__$1 = val;
+ var n = idx;
+ while(true) {
+ if(n < cnt) {
+ var nval = f.call(null, val__$1, arr[n]);
+ if(cljs.core.reduced_QMARK_.call(null, nval)) {
+ return cljs.core.deref.call(null, nval)
+ }else {
+ var G__2849 = nval;
+ var G__2850 = n + 1;
+ val__$1 = G__2849;
+ n = G__2850;
+ continue
+ }
+ }else {
+ return val__$1
+ }
+ break
+ }
+ };
+ array_reduce = function(arr, f, val, idx) {
+ switch(arguments.length) {
+ case 2:
+ return array_reduce__2.call(this, arr, f);
+ case 3:
+ return array_reduce__3.call(this, arr, f, val);
+ case 4:
+ return array_reduce__4.call(this, arr, f, val, idx)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ array_reduce.cljs$lang$arity$2 = array_reduce__2;
+ array_reduce.cljs$lang$arity$3 = array_reduce__3;
+ array_reduce.cljs$lang$arity$4 = array_reduce__4;
+ return array_reduce
+}();
+cljs.core.counted_QMARK_ = function counted_QMARK_(x) {
+ var G__2852 = x;
+ if(G__2852) {
+ if(function() {
+ var or__3824__auto__ = G__2852.cljs$lang$protocol_mask$partition0$ & 2;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2852.cljs$core$ICounted$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2852.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ICounted, G__2852)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ICounted, G__2852)
+ }
+};
+cljs.core.indexed_QMARK_ = function indexed_QMARK_(x) {
+ var G__2854 = x;
+ if(G__2854) {
+ if(function() {
+ var or__3824__auto__ = G__2854.cljs$lang$protocol_mask$partition0$ & 16;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2854.cljs$core$IIndexed$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2854.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IIndexed, G__2854)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IIndexed, G__2854)
+ }
+};
+goog.provide("cljs.core.IndexedSeq");
+cljs.core.IndexedSeq = function(a, i) {
+ this.a = a;
+ this.i = i;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 166199550
+};
+cljs.core.IndexedSeq.cljs$lang$type = true;
+cljs.core.IndexedSeq.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/IndexedSeq")
+};
+cljs.core.IndexedSeq.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/IndexedSeq")
+};
+cljs.core.IndexedSeq.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.hash_coll.call(null, coll)
+};
+cljs.core.IndexedSeq.prototype.cljs$core$INext$_next$arity$1 = function(_) {
+ var self__ = this;
+ if(self__.i + 1 < self__.a.length) {
+ return new cljs.core.IndexedSeq(self__.a, self__.i + 1)
+ }else {
+ return null
+ }
+};
+cljs.core.IndexedSeq.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ return cljs.core.cons.call(null, o, coll)
+};
+cljs.core.IndexedSeq.prototype.cljs$core$IReversible$_rseq$arity$1 = function(coll) {
+ var self__ = this;
+ var c = coll.cljs$core$ICounted$_count$arity$1(coll);
+ if(c > 0) {
+ return new cljs.core.RSeq(coll, c - 1, null)
+ }else {
+ return cljs.core.List.EMPTY
+ }
+};
+cljs.core.IndexedSeq.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.IndexedSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = function(coll, f) {
+ var self__ = this;
+ if(cljs.core.counted_QMARK_.call(null, self__.a)) {
+ return cljs.core.ci_reduce.call(null, self__.a, f, self__.a[self__.i], self__.i + 1)
+ }else {
+ return cljs.core.ci_reduce.call(null, coll, f, self__.a[self__.i], 0)
+ }
+};
+cljs.core.IndexedSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = function(coll, f, start) {
+ var self__ = this;
+ if(cljs.core.counted_QMARK_.call(null, self__.a)) {
+ return cljs.core.ci_reduce.call(null, self__.a, f, start, self__.i)
+ }else {
+ return cljs.core.ci_reduce.call(null, coll, f, start, 0)
+ }
+};
+cljs.core.IndexedSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = function(this$) {
+ var self__ = this;
+ return this$
+};
+cljs.core.IndexedSeq.prototype.cljs$core$ICounted$_count$arity$1 = function(_) {
+ var self__ = this;
+ return self__.a.length - self__.i
+};
+cljs.core.IndexedSeq.prototype.cljs$core$ISeq$_first$arity$1 = function(_) {
+ var self__ = this;
+ return self__.a[self__.i]
+};
+cljs.core.IndexedSeq.prototype.cljs$core$ISeq$_rest$arity$1 = function(_) {
+ var self__ = this;
+ if(self__.i + 1 < self__.a.length) {
+ return new cljs.core.IndexedSeq(self__.a, self__.i + 1)
+ }else {
+ return cljs.core.list.call(null)
+ }
+};
+cljs.core.IndexedSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.IndexedSeq.prototype.cljs$core$IIndexed$_nth$arity$2 = function(coll, n) {
+ var self__ = this;
+ var i__$1 = n + self__.i;
+ if(i__$1 < self__.a.length) {
+ return self__.a[i__$1]
+ }else {
+ return null
+ }
+};
+cljs.core.IndexedSeq.prototype.cljs$core$IIndexed$_nth$arity$3 = function(coll, n, not_found) {
+ var self__ = this;
+ var i__$1 = n + self__.i;
+ if(i__$1 < self__.a.length) {
+ return self__.a[i__$1]
+ }else {
+ return not_found
+ }
+};
+cljs.core.IndexedSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.List.EMPTY
+};
+cljs.core.IndexedSeq;
+cljs.core.prim_seq = function() {
+ var prim_seq = null;
+ var prim_seq__1 = function(prim) {
+ return prim_seq.call(null, prim, 0)
+ };
+ var prim_seq__2 = function(prim, i) {
+ if(i < prim.length) {
+ return new cljs.core.IndexedSeq(prim, i)
+ }else {
+ return null
+ }
+ };
+ prim_seq = function(prim, i) {
+ switch(arguments.length) {
+ case 1:
+ return prim_seq__1.call(this, prim);
+ case 2:
+ return prim_seq__2.call(this, prim, i)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ prim_seq.cljs$lang$arity$1 = prim_seq__1;
+ prim_seq.cljs$lang$arity$2 = prim_seq__2;
+ return prim_seq
+}();
+cljs.core.array_seq = function() {
+ var array_seq = null;
+ var array_seq__1 = function(array) {
+ return cljs.core.prim_seq.call(null, array, 0)
+ };
+ var array_seq__2 = function(array, i) {
+ return cljs.core.prim_seq.call(null, array, i)
+ };
+ array_seq = function(array, i) {
+ switch(arguments.length) {
+ case 1:
+ return array_seq__1.call(this, array);
+ case 2:
+ return array_seq__2.call(this, array, i)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ array_seq.cljs$lang$arity$1 = array_seq__1;
+ array_seq.cljs$lang$arity$2 = array_seq__2;
+ return array_seq
+}();
+cljs.core.IReduce["array"] = true;
+cljs.core._reduce["array"] = function() {
+ var G__2855 = null;
+ var G__2855__2 = function(array, f) {
+ return cljs.core.ci_reduce.call(null, array, f)
+ };
+ var G__2855__3 = function(array, f, start) {
+ return cljs.core.ci_reduce.call(null, array, f, start)
+ };
+ G__2855 = function(array, f, start) {
+ switch(arguments.length) {
+ case 2:
+ return G__2855__2.call(this, array, f);
+ case 3:
+ return G__2855__3.call(this, array, f, start)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__2855
+}();
+cljs.core.ILookup["array"] = true;
+cljs.core._lookup["array"] = function() {
+ var G__2856 = null;
+ var G__2856__2 = function(array, k) {
+ return array[k]
+ };
+ var G__2856__3 = function(array, k, not_found) {
+ return cljs.core._nth.call(null, array, k, not_found)
+ };
+ G__2856 = function(array, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__2856__2.call(this, array, k);
+ case 3:
+ return G__2856__3.call(this, array, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__2856
+}();
+cljs.core.IIndexed["array"] = true;
+cljs.core._nth["array"] = function() {
+ var G__2857 = null;
+ var G__2857__2 = function(array, n) {
+ if(n < array.length) {
+ return array[n]
+ }else {
+ return null
+ }
+ };
+ var G__2857__3 = function(array, n, not_found) {
+ if(n < array.length) {
+ return array[n]
+ }else {
+ return not_found
+ }
+ };
+ G__2857 = function(array, n, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__2857__2.call(this, array, n);
+ case 3:
+ return G__2857__3.call(this, array, n, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__2857
+}();
+cljs.core.ICounted["array"] = true;
+cljs.core._count["array"] = function(a) {
+ return a.length
+};
+cljs.core.ISeqable["array"] = true;
+cljs.core._seq["array"] = function(array) {
+ return cljs.core.array_seq.call(null, array, 0)
+};
+goog.provide("cljs.core.RSeq");
+cljs.core.RSeq = function(ci, i, meta) {
+ this.ci = ci;
+ this.i = i;
+ this.meta = meta;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 31850574
+};
+cljs.core.RSeq.cljs$lang$type = true;
+cljs.core.RSeq.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/RSeq")
+};
+cljs.core.RSeq.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/RSeq")
+};
+cljs.core.RSeq.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.hash_coll.call(null, coll)
+};
+cljs.core.RSeq.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ return cljs.core.cons.call(null, o, coll)
+};
+cljs.core.RSeq.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.RSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ return coll
+};
+cljs.core.RSeq.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.i + 1
+};
+cljs.core.RSeq.prototype.cljs$core$ISeq$_first$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core._nth.call(null, self__.ci, self__.i)
+};
+cljs.core.RSeq.prototype.cljs$core$ISeq$_rest$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.i > 0) {
+ return new cljs.core.RSeq(self__.ci, self__.i - 1, null)
+ }else {
+ return cljs.core.List.EMPTY
+ }
+};
+cljs.core.RSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.RSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, new_meta) {
+ var self__ = this;
+ return new cljs.core.RSeq(self__.ci, self__.i, new_meta)
+};
+cljs.core.RSeq.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.RSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.List.EMPTY, self__.meta)
+};
+cljs.core.RSeq;
+cljs.core.second = function second(coll) {
+ return cljs.core.first.call(null, cljs.core.next.call(null, coll))
+};
+cljs.core.ffirst = function ffirst(coll) {
+ return cljs.core.first.call(null, cljs.core.first.call(null, coll))
+};
+cljs.core.nfirst = function nfirst(coll) {
+ return cljs.core.next.call(null, cljs.core.first.call(null, coll))
+};
+cljs.core.fnext = function fnext(coll) {
+ return cljs.core.first.call(null, cljs.core.next.call(null, coll))
+};
+cljs.core.nnext = function nnext(coll) {
+ return cljs.core.next.call(null, cljs.core.next.call(null, coll))
+};
+cljs.core.last = function last(s) {
+ while(true) {
+ var sn = cljs.core.next.call(null, s);
+ if(!(sn == null)) {
+ var G__2858 = sn;
+ s = G__2858;
+ continue
+ }else {
+ return cljs.core.first.call(null, s)
+ }
+ break
+ }
+};
+cljs.core.IEquiv["_"] = true;
+cljs.core._equiv["_"] = function(x, o) {
+ return x === o
+};
+cljs.core.conj = function() {
+ var conj = null;
+ var conj__2 = function(coll, x) {
+ return cljs.core._conj.call(null, coll, x)
+ };
+ var conj__3 = function() {
+ var G__2859__delegate = function(coll, x, xs) {
+ while(true) {
+ if(cljs.core.truth_(xs)) {
+ var G__2860 = conj.call(null, coll, x);
+ var G__2861 = cljs.core.first.call(null, xs);
+ var G__2862 = cljs.core.next.call(null, xs);
+ coll = G__2860;
+ x = G__2861;
+ xs = G__2862;
+ continue
+ }else {
+ return conj.call(null, coll, x)
+ }
+ break
+ }
+ };
+ var G__2859 = function(coll, x, var_args) {
+ var xs = null;
+ if(goog.isDef(var_args)) {
+ xs = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2859__delegate.call(this, coll, x, xs)
+ };
+ G__2859.cljs$lang$maxFixedArity = 2;
+ G__2859.cljs$lang$applyTo = function(arglist__2863) {
+ var coll = cljs.core.first(arglist__2863);
+ var x = cljs.core.first(cljs.core.next(arglist__2863));
+ var xs = cljs.core.rest(cljs.core.next(arglist__2863));
+ return G__2859__delegate(coll, x, xs)
+ };
+ G__2859.cljs$lang$arity$variadic = G__2859__delegate;
+ return G__2859
+ }();
+ conj = function(coll, x, var_args) {
+ var xs = var_args;
+ switch(arguments.length) {
+ case 2:
+ return conj__2.call(this, coll, x);
+ default:
+ return conj__3.cljs$lang$arity$variadic(coll, x, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ conj.cljs$lang$maxFixedArity = 2;
+ conj.cljs$lang$applyTo = conj__3.cljs$lang$applyTo;
+ conj.cljs$lang$arity$2 = conj__2;
+ conj.cljs$lang$arity$variadic = conj__3.cljs$lang$arity$variadic;
+ return conj
+}();
+cljs.core.empty = function empty(coll) {
+ return cljs.core._empty.call(null, coll)
+};
+cljs.core.accumulating_seq_count = function accumulating_seq_count(coll) {
+ var s = cljs.core.seq.call(null, coll);
+ var acc = 0;
+ while(true) {
+ if(cljs.core.counted_QMARK_.call(null, s)) {
+ return acc + cljs.core._count.call(null, s)
+ }else {
+ var G__2864 = cljs.core.next.call(null, s);
+ var G__2865 = acc + 1;
+ s = G__2864;
+ acc = G__2865;
+ continue
+ }
+ break
+ }
+};
+cljs.core.count = function count(coll) {
+ if(cljs.core.counted_QMARK_.call(null, coll)) {
+ return cljs.core._count.call(null, coll)
+ }else {
+ return cljs.core.accumulating_seq_count.call(null, coll)
+ }
+};
+cljs.core.linear_traversal_nth = function() {
+ var linear_traversal_nth = null;
+ var linear_traversal_nth__2 = function(coll, n) {
+ while(true) {
+ if(coll == null) {
+ throw new Error("Index out of bounds");
+ }else {
+ if(n === 0) {
+ if(cljs.core.seq.call(null, coll)) {
+ return cljs.core.first.call(null, coll)
+ }else {
+ throw new Error("Index out of bounds");
+ }
+ }else {
+ if(cljs.core.indexed_QMARK_.call(null, coll)) {
+ return cljs.core._nth.call(null, coll, n)
+ }else {
+ if(cljs.core.seq.call(null, coll)) {
+ var G__2866 = cljs.core.next.call(null, coll);
+ var G__2867 = n - 1;
+ coll = G__2866;
+ n = G__2867;
+ continue
+ }else {
+ if("\ufdd0'else") {
+ throw new Error("Index out of bounds");
+ }else {
+ return null
+ }
+ }
+ }
+ }
+ }
+ break
+ }
+ };
+ var linear_traversal_nth__3 = function(coll, n, not_found) {
+ while(true) {
+ if(coll == null) {
+ return not_found
+ }else {
+ if(n === 0) {
+ if(cljs.core.seq.call(null, coll)) {
+ return cljs.core.first.call(null, coll)
+ }else {
+ return not_found
+ }
+ }else {
+ if(cljs.core.indexed_QMARK_.call(null, coll)) {
+ return cljs.core._nth.call(null, coll, n, not_found)
+ }else {
+ if(cljs.core.seq.call(null, coll)) {
+ var G__2868 = cljs.core.next.call(null, coll);
+ var G__2869 = n - 1;
+ var G__2870 = not_found;
+ coll = G__2868;
+ n = G__2869;
+ not_found = G__2870;
+ continue
+ }else {
+ if("\ufdd0'else") {
+ return not_found
+ }else {
+ return null
+ }
+ }
+ }
+ }
+ }
+ break
+ }
+ };
+ linear_traversal_nth = function(coll, n, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return linear_traversal_nth__2.call(this, coll, n);
+ case 3:
+ return linear_traversal_nth__3.call(this, coll, n, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ linear_traversal_nth.cljs$lang$arity$2 = linear_traversal_nth__2;
+ linear_traversal_nth.cljs$lang$arity$3 = linear_traversal_nth__3;
+ return linear_traversal_nth
+}();
+cljs.core.nth = function() {
+ var nth = null;
+ var nth__2 = function(coll, n) {
+ if(coll == null) {
+ return null
+ }else {
+ if(function() {
+ var G__2873 = coll;
+ if(G__2873) {
+ if(function() {
+ var or__3824__auto__ = G__2873.cljs$lang$protocol_mask$partition0$ & 16;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2873.cljs$core$IIndexed$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2873.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IIndexed, G__2873)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IIndexed, G__2873)
+ }
+ }()) {
+ return cljs.core._nth.call(null, coll, Math.floor(n))
+ }else {
+ return cljs.core.linear_traversal_nth.call(null, coll, Math.floor(n))
+ }
+ }
+ };
+ var nth__3 = function(coll, n, not_found) {
+ if(!(coll == null)) {
+ if(function() {
+ var G__2874 = coll;
+ if(G__2874) {
+ if(function() {
+ var or__3824__auto__ = G__2874.cljs$lang$protocol_mask$partition0$ & 16;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2874.cljs$core$IIndexed$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2874.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IIndexed, G__2874)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IIndexed, G__2874)
+ }
+ }()) {
+ return cljs.core._nth.call(null, coll, Math.floor(n), not_found)
+ }else {
+ return cljs.core.linear_traversal_nth.call(null, coll, Math.floor(n), not_found)
+ }
+ }else {
+ return not_found
+ }
+ };
+ nth = function(coll, n, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return nth__2.call(this, coll, n);
+ case 3:
+ return nth__3.call(this, coll, n, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ nth.cljs$lang$arity$2 = nth__2;
+ nth.cljs$lang$arity$3 = nth__3;
+ return nth
+}();
+cljs.core.get = function() {
+ var get = null;
+ var get__2 = function(o, k) {
+ return cljs.core._lookup.call(null, o, k)
+ };
+ var get__3 = function(o, k, not_found) {
+ return cljs.core._lookup.call(null, o, k, not_found)
+ };
+ get = function(o, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return get__2.call(this, o, k);
+ case 3:
+ return get__3.call(this, o, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ get.cljs$lang$arity$2 = get__2;
+ get.cljs$lang$arity$3 = get__3;
+ return get
+}();
+cljs.core.assoc = function() {
+ var assoc = null;
+ var assoc__3 = function(coll, k, v) {
+ return cljs.core._assoc.call(null, coll, k, v)
+ };
+ var assoc__4 = function() {
+ var G__2875__delegate = function(coll, k, v, kvs) {
+ while(true) {
+ var ret = assoc.call(null, coll, k, v);
+ if(cljs.core.truth_(kvs)) {
+ var G__2876 = ret;
+ var G__2877 = cljs.core.first.call(null, kvs);
+ var G__2878 = cljs.core.second.call(null, kvs);
+ var G__2879 = cljs.core.nnext.call(null, kvs);
+ coll = G__2876;
+ k = G__2877;
+ v = G__2878;
+ kvs = G__2879;
+ continue
+ }else {
+ return ret
+ }
+ break
+ }
+ };
+ var G__2875 = function(coll, k, v, var_args) {
+ var kvs = null;
+ if(goog.isDef(var_args)) {
+ kvs = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__2875__delegate.call(this, coll, k, v, kvs)
+ };
+ G__2875.cljs$lang$maxFixedArity = 3;
+ G__2875.cljs$lang$applyTo = function(arglist__2880) {
+ var coll = cljs.core.first(arglist__2880);
+ var k = cljs.core.first(cljs.core.next(arglist__2880));
+ var v = cljs.core.first(cljs.core.next(cljs.core.next(arglist__2880)));
+ var kvs = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__2880)));
+ return G__2875__delegate(coll, k, v, kvs)
+ };
+ G__2875.cljs$lang$arity$variadic = G__2875__delegate;
+ return G__2875
+ }();
+ assoc = function(coll, k, v, var_args) {
+ var kvs = var_args;
+ switch(arguments.length) {
+ case 3:
+ return assoc__3.call(this, coll, k, v);
+ default:
+ return assoc__4.cljs$lang$arity$variadic(coll, k, v, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ assoc.cljs$lang$maxFixedArity = 3;
+ assoc.cljs$lang$applyTo = assoc__4.cljs$lang$applyTo;
+ assoc.cljs$lang$arity$3 = assoc__3;
+ assoc.cljs$lang$arity$variadic = assoc__4.cljs$lang$arity$variadic;
+ return assoc
+}();
+cljs.core.dissoc = function() {
+ var dissoc = null;
+ var dissoc__1 = function(coll) {
+ return coll
+ };
+ var dissoc__2 = function(coll, k) {
+ return cljs.core._dissoc.call(null, coll, k)
+ };
+ var dissoc__3 = function() {
+ var G__2881__delegate = function(coll, k, ks) {
+ while(true) {
+ var ret = dissoc.call(null, coll, k);
+ if(cljs.core.truth_(ks)) {
+ var G__2882 = ret;
+ var G__2883 = cljs.core.first.call(null, ks);
+ var G__2884 = cljs.core.next.call(null, ks);
+ coll = G__2882;
+ k = G__2883;
+ ks = G__2884;
+ continue
+ }else {
+ return ret
+ }
+ break
+ }
+ };
+ var G__2881 = function(coll, k, var_args) {
+ var ks = null;
+ if(goog.isDef(var_args)) {
+ ks = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2881__delegate.call(this, coll, k, ks)
+ };
+ G__2881.cljs$lang$maxFixedArity = 2;
+ G__2881.cljs$lang$applyTo = function(arglist__2885) {
+ var coll = cljs.core.first(arglist__2885);
+ var k = cljs.core.first(cljs.core.next(arglist__2885));
+ var ks = cljs.core.rest(cljs.core.next(arglist__2885));
+ return G__2881__delegate(coll, k, ks)
+ };
+ G__2881.cljs$lang$arity$variadic = G__2881__delegate;
+ return G__2881
+ }();
+ dissoc = function(coll, k, var_args) {
+ var ks = var_args;
+ switch(arguments.length) {
+ case 1:
+ return dissoc__1.call(this, coll);
+ case 2:
+ return dissoc__2.call(this, coll, k);
+ default:
+ return dissoc__3.cljs$lang$arity$variadic(coll, k, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ dissoc.cljs$lang$maxFixedArity = 2;
+ dissoc.cljs$lang$applyTo = dissoc__3.cljs$lang$applyTo;
+ dissoc.cljs$lang$arity$1 = dissoc__1;
+ dissoc.cljs$lang$arity$2 = dissoc__2;
+ dissoc.cljs$lang$arity$variadic = dissoc__3.cljs$lang$arity$variadic;
+ return dissoc
+}();
+cljs.core.with_meta = function with_meta(o, meta) {
+ return cljs.core._with_meta.call(null, o, meta)
+};
+cljs.core.meta = function meta(o) {
+ if(function() {
+ var G__2887 = o;
+ if(G__2887) {
+ if(function() {
+ var or__3824__auto__ = G__2887.cljs$lang$protocol_mask$partition0$ & 131072;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2887.cljs$core$IMeta$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2887.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IMeta, G__2887)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IMeta, G__2887)
+ }
+ }()) {
+ return cljs.core._meta.call(null, o)
+ }else {
+ return null
+ }
+};
+cljs.core.peek = function peek(coll) {
+ return cljs.core._peek.call(null, coll)
+};
+cljs.core.pop = function pop(coll) {
+ return cljs.core._pop.call(null, coll)
+};
+cljs.core.disj = function() {
+ var disj = null;
+ var disj__1 = function(coll) {
+ return coll
+ };
+ var disj__2 = function(coll, k) {
+ return cljs.core._disjoin.call(null, coll, k)
+ };
+ var disj__3 = function() {
+ var G__2888__delegate = function(coll, k, ks) {
+ while(true) {
+ var ret = disj.call(null, coll, k);
+ if(cljs.core.truth_(ks)) {
+ var G__2889 = ret;
+ var G__2890 = cljs.core.first.call(null, ks);
+ var G__2891 = cljs.core.next.call(null, ks);
+ coll = G__2889;
+ k = G__2890;
+ ks = G__2891;
+ continue
+ }else {
+ return ret
+ }
+ break
+ }
+ };
+ var G__2888 = function(coll, k, var_args) {
+ var ks = null;
+ if(goog.isDef(var_args)) {
+ ks = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2888__delegate.call(this, coll, k, ks)
+ };
+ G__2888.cljs$lang$maxFixedArity = 2;
+ G__2888.cljs$lang$applyTo = function(arglist__2892) {
+ var coll = cljs.core.first(arglist__2892);
+ var k = cljs.core.first(cljs.core.next(arglist__2892));
+ var ks = cljs.core.rest(cljs.core.next(arglist__2892));
+ return G__2888__delegate(coll, k, ks)
+ };
+ G__2888.cljs$lang$arity$variadic = G__2888__delegate;
+ return G__2888
+ }();
+ disj = function(coll, k, var_args) {
+ var ks = var_args;
+ switch(arguments.length) {
+ case 1:
+ return disj__1.call(this, coll);
+ case 2:
+ return disj__2.call(this, coll, k);
+ default:
+ return disj__3.cljs$lang$arity$variadic(coll, k, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ disj.cljs$lang$maxFixedArity = 2;
+ disj.cljs$lang$applyTo = disj__3.cljs$lang$applyTo;
+ disj.cljs$lang$arity$1 = disj__1;
+ disj.cljs$lang$arity$2 = disj__2;
+ disj.cljs$lang$arity$variadic = disj__3.cljs$lang$arity$variadic;
+ return disj
+}();
+cljs.core.string_hash_cache = {};
+cljs.core.string_hash_cache_count = 0;
+cljs.core.add_to_string_hash_cache = function add_to_string_hash_cache(k) {
+ var h = goog.string.hashCode(k);
+ cljs.core.string_hash_cache[k] = h;
+ cljs.core.string_hash_cache_count = cljs.core.string_hash_cache_count + 1;
+ return h
+};
+cljs.core.check_string_hash_cache = function check_string_hash_cache(k) {
+ if(cljs.core.string_hash_cache_count > 255) {
+ cljs.core.string_hash_cache = {};
+ cljs.core.string_hash_cache_count = 0
+ }else {
+ }
+ var h = cljs.core.string_hash_cache[k];
+ if(!(h == null)) {
+ return h
+ }else {
+ return cljs.core.add_to_string_hash_cache.call(null, k)
+ }
+};
+cljs.core.hash = function() {
+ var hash = null;
+ var hash__1 = function(o) {
+ return hash.call(null, o, true)
+ };
+ var hash__2 = function(o, check_cache) {
+ if(function() {
+ var and__3822__auto__ = goog.isString(o);
+ if(and__3822__auto__) {
+ return check_cache
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return cljs.core.check_string_hash_cache.call(null, o)
+ }else {
+ return cljs.core._hash.call(null, o)
+ }
+ };
+ hash = function(o, check_cache) {
+ switch(arguments.length) {
+ case 1:
+ return hash__1.call(this, o);
+ case 2:
+ return hash__2.call(this, o, check_cache)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ hash.cljs$lang$arity$1 = hash__1;
+ hash.cljs$lang$arity$2 = hash__2;
+ return hash
+}();
+cljs.core.empty_QMARK_ = function empty_QMARK_(coll) {
+ var or__3824__auto__ = coll == null;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return cljs.core.not.call(null, cljs.core.seq.call(null, coll))
+ }
+};
+cljs.core.coll_QMARK_ = function coll_QMARK_(x) {
+ if(x == null) {
+ return false
+ }else {
+ var G__2894 = x;
+ if(G__2894) {
+ if(function() {
+ var or__3824__auto__ = G__2894.cljs$lang$protocol_mask$partition0$ & 8;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2894.cljs$core$ICollection$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2894.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ICollection, G__2894)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ICollection, G__2894)
+ }
+ }
+};
+cljs.core.set_QMARK_ = function set_QMARK_(x) {
+ if(x == null) {
+ return false
+ }else {
+ var G__2896 = x;
+ if(G__2896) {
+ if(function() {
+ var or__3824__auto__ = G__2896.cljs$lang$protocol_mask$partition0$ & 4096;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2896.cljs$core$ISet$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2896.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ISet, G__2896)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ISet, G__2896)
+ }
+ }
+};
+cljs.core.associative_QMARK_ = function associative_QMARK_(x) {
+ var G__2898 = x;
+ if(G__2898) {
+ if(function() {
+ var or__3824__auto__ = G__2898.cljs$lang$protocol_mask$partition0$ & 512;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2898.cljs$core$IAssociative$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2898.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IAssociative, G__2898)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IAssociative, G__2898)
+ }
+};
+cljs.core.sequential_QMARK_ = function sequential_QMARK_(x) {
+ var G__2900 = x;
+ if(G__2900) {
+ if(function() {
+ var or__3824__auto__ = G__2900.cljs$lang$protocol_mask$partition0$ & 16777216;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2900.cljs$core$ISequential$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2900.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ISequential, G__2900)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ISequential, G__2900)
+ }
+};
+cljs.core.reduceable_QMARK_ = function reduceable_QMARK_(x) {
+ var G__2902 = x;
+ if(G__2902) {
+ if(function() {
+ var or__3824__auto__ = G__2902.cljs$lang$protocol_mask$partition0$ & 524288;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2902.cljs$core$IReduce$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2902.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IReduce, G__2902)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IReduce, G__2902)
+ }
+};
+cljs.core.map_QMARK_ = function map_QMARK_(x) {
+ if(x == null) {
+ return false
+ }else {
+ var G__2904 = x;
+ if(G__2904) {
+ if(function() {
+ var or__3824__auto__ = G__2904.cljs$lang$protocol_mask$partition0$ & 1024;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2904.cljs$core$IMap$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2904.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IMap, G__2904)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IMap, G__2904)
+ }
+ }
+};
+cljs.core.vector_QMARK_ = function vector_QMARK_(x) {
+ var G__2906 = x;
+ if(G__2906) {
+ if(function() {
+ var or__3824__auto__ = G__2906.cljs$lang$protocol_mask$partition0$ & 16384;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2906.cljs$core$IVector$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2906.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IVector, G__2906)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IVector, G__2906)
+ }
+};
+cljs.core.chunked_seq_QMARK_ = function chunked_seq_QMARK_(x) {
+ var G__2908 = x;
+ if(G__2908) {
+ if(function() {
+ var or__3824__auto__ = G__2908.cljs$lang$protocol_mask$partition1$ & 512;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2908.cljs$core$IChunkedSeq$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2908.cljs$lang$protocol_mask$partition1$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IChunkedSeq, G__2908)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IChunkedSeq, G__2908)
+ }
+};
+cljs.core.js_obj = function() {
+ var js_obj = null;
+ var js_obj__0 = function() {
+ return{}
+ };
+ var js_obj__1 = function() {
+ var G__2909__delegate = function(keyvals) {
+ return cljs.core.apply.call(null, goog.object.create, keyvals)
+ };
+ var G__2909 = function(var_args) {
+ var keyvals = null;
+ if(goog.isDef(var_args)) {
+ keyvals = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return G__2909__delegate.call(this, keyvals)
+ };
+ G__2909.cljs$lang$maxFixedArity = 0;
+ G__2909.cljs$lang$applyTo = function(arglist__2910) {
+ var keyvals = cljs.core.seq(arglist__2910);
+ return G__2909__delegate(keyvals)
+ };
+ G__2909.cljs$lang$arity$variadic = G__2909__delegate;
+ return G__2909
+ }();
+ js_obj = function(var_args) {
+ var keyvals = var_args;
+ switch(arguments.length) {
+ case 0:
+ return js_obj__0.call(this);
+ default:
+ return js_obj__1.cljs$lang$arity$variadic(cljs.core.array_seq(arguments, 0))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ js_obj.cljs$lang$maxFixedArity = 0;
+ js_obj.cljs$lang$applyTo = js_obj__1.cljs$lang$applyTo;
+ js_obj.cljs$lang$arity$0 = js_obj__0;
+ js_obj.cljs$lang$arity$variadic = js_obj__1.cljs$lang$arity$variadic;
+ return js_obj
+}();
+cljs.core.js_keys = function js_keys(obj) {
+ var keys = [];
+ goog.object.forEach(obj, function(val, key, obj__$1) {
+ return keys.push(key)
+ });
+ return keys
+};
+cljs.core.js_delete = function js_delete(obj, key) {
+ return delete obj[key]
+};
+cljs.core.array_copy = function array_copy(from, i, to, j, len) {
+ var i__$1 = i;
+ var j__$1 = j;
+ var len__$1 = len;
+ while(true) {
+ if(len__$1 === 0) {
+ return to
+ }else {
+ to[j__$1] = from[i__$1];
+ var G__2911 = i__$1 + 1;
+ var G__2912 = j__$1 + 1;
+ var G__2913 = len__$1 - 1;
+ i__$1 = G__2911;
+ j__$1 = G__2912;
+ len__$1 = G__2913;
+ continue
+ }
+ break
+ }
+};
+cljs.core.array_copy_downward = function array_copy_downward(from, i, to, j, len) {
+ var i__$1 = i + (len - 1);
+ var j__$1 = j + (len - 1);
+ var len__$1 = len;
+ while(true) {
+ if(len__$1 === 0) {
+ return to
+ }else {
+ to[j__$1] = from[i__$1];
+ var G__2914 = i__$1 - 1;
+ var G__2915 = j__$1 - 1;
+ var G__2916 = len__$1 - 1;
+ i__$1 = G__2914;
+ j__$1 = G__2915;
+ len__$1 = G__2916;
+ continue
+ }
+ break
+ }
+};
+cljs.core.lookup_sentinel = {};
+cljs.core.false_QMARK_ = function false_QMARK_(x) {
+ return x === false
+};
+cljs.core.true_QMARK_ = function true_QMARK_(x) {
+ return x === true
+};
+cljs.core.undefined_QMARK_ = function undefined_QMARK_(x) {
+ return void 0 === x
+};
+cljs.core.seq_QMARK_ = function seq_QMARK_(s) {
+ if(s == null) {
+ return false
+ }else {
+ var G__2918 = s;
+ if(G__2918) {
+ if(function() {
+ var or__3824__auto__ = G__2918.cljs$lang$protocol_mask$partition0$ & 64;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2918.cljs$core$ISeq$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2918.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ISeq, G__2918)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ISeq, G__2918)
+ }
+ }
+};
+cljs.core.seqable_QMARK_ = function seqable_QMARK_(s) {
+ var G__2920 = s;
+ if(G__2920) {
+ if(function() {
+ var or__3824__auto__ = G__2920.cljs$lang$protocol_mask$partition0$ & 8388608;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2920.cljs$core$ISeqable$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2920.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ISeqable, G__2920)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ISeqable, G__2920)
+ }
+};
+cljs.core.boolean$ = function boolean$(x) {
+ if(cljs.core.truth_(x)) {
+ return true
+ }else {
+ return false
+ }
+};
+cljs.core.string_QMARK_ = function string_QMARK_(x) {
+ var and__3822__auto__ = goog.isString(x);
+ if(and__3822__auto__) {
+ return!function() {
+ var or__3824__auto__ = x.charAt(0) === "\ufdd0";
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return x.charAt(0) === "\ufdd1"
+ }
+ }()
+ }else {
+ return and__3822__auto__
+ }
+};
+cljs.core.keyword_QMARK_ = function keyword_QMARK_(x) {
+ var and__3822__auto__ = goog.isString(x);
+ if(and__3822__auto__) {
+ return x.charAt(0) === "\ufdd0"
+ }else {
+ return and__3822__auto__
+ }
+};
+cljs.core.symbol_QMARK_ = function symbol_QMARK_(x) {
+ var and__3822__auto__ = goog.isString(x);
+ if(and__3822__auto__) {
+ return x.charAt(0) === "\ufdd1"
+ }else {
+ return and__3822__auto__
+ }
+};
+cljs.core.number_QMARK_ = function number_QMARK_(n) {
+ return goog.isNumber(n)
+};
+cljs.core.fn_QMARK_ = function fn_QMARK_(f) {
+ return goog.isFunction(f)
+};
+cljs.core.ifn_QMARK_ = function ifn_QMARK_(f) {
+ var or__3824__auto__ = cljs.core.fn_QMARK_.call(null, f);
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var G__2922 = f;
+ if(G__2922) {
+ if(function() {
+ var or__3824__auto____$1 = G__2922.cljs$lang$protocol_mask$partition0$ & 1;
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ return G__2922.cljs$core$IFn$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2922.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IFn, G__2922)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IFn, G__2922)
+ }
+ }
+};
+cljs.core.integer_QMARK_ = function integer_QMARK_(n) {
+ var and__3822__auto__ = cljs.core.number_QMARK_.call(null, n);
+ if(and__3822__auto__) {
+ var and__3822__auto____$1 = !isNaN(n);
+ if(and__3822__auto____$1) {
+ var and__3822__auto____$2 = !(n === Infinity);
+ if(and__3822__auto____$2) {
+ return parseFloat(n) === parseInt(n, 10)
+ }else {
+ return and__3822__auto____$2
+ }
+ }else {
+ return and__3822__auto____$1
+ }
+ }else {
+ return and__3822__auto__
+ }
+};
+cljs.core.contains_QMARK_ = function contains_QMARK_(coll, v) {
+ if(cljs.core._lookup.call(null, coll, v, cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel) {
+ return false
+ }else {
+ return true
+ }
+};
+cljs.core.find = function find(coll, k) {
+ if(function() {
+ var and__3822__auto__ = !(coll == null);
+ if(and__3822__auto__) {
+ var and__3822__auto____$1 = cljs.core.associative_QMARK_.call(null, coll);
+ if(and__3822__auto____$1) {
+ return cljs.core.contains_QMARK_.call(null, coll, k)
+ }else {
+ return and__3822__auto____$1
+ }
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return cljs.core.PersistentVector.fromArray([k, cljs.core._lookup.call(null, coll, k)], true)
+ }else {
+ return null
+ }
+};
+cljs.core.distinct_QMARK_ = function() {
+ var distinct_QMARK_ = null;
+ var distinct_QMARK___1 = function(x) {
+ return true
+ };
+ var distinct_QMARK___2 = function(x, y) {
+ return!cljs.core._EQ_.call(null, x, y)
+ };
+ var distinct_QMARK___3 = function() {
+ var G__2923__delegate = function(x, y, more) {
+ if(!cljs.core._EQ_.call(null, x, y)) {
+ var s = cljs.core.PersistentHashSet.fromArray([y, x]);
+ var xs = more;
+ while(true) {
+ var x__$1 = cljs.core.first.call(null, xs);
+ var etc = cljs.core.next.call(null, xs);
+ if(cljs.core.truth_(xs)) {
+ if(cljs.core.contains_QMARK_.call(null, s, x__$1)) {
+ return false
+ }else {
+ var G__2924 = cljs.core.conj.call(null, s, x__$1);
+ var G__2925 = etc;
+ s = G__2924;
+ xs = G__2925;
+ continue
+ }
+ }else {
+ return true
+ }
+ break
+ }
+ }else {
+ return false
+ }
+ };
+ var G__2923 = function(x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2923__delegate.call(this, x, y, more)
+ };
+ G__2923.cljs$lang$maxFixedArity = 2;
+ G__2923.cljs$lang$applyTo = function(arglist__2926) {
+ var x = cljs.core.first(arglist__2926);
+ var y = cljs.core.first(cljs.core.next(arglist__2926));
+ var more = cljs.core.rest(cljs.core.next(arglist__2926));
+ return G__2923__delegate(x, y, more)
+ };
+ G__2923.cljs$lang$arity$variadic = G__2923__delegate;
+ return G__2923
+ }();
+ distinct_QMARK_ = function(x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 1:
+ return distinct_QMARK___1.call(this, x);
+ case 2:
+ return distinct_QMARK___2.call(this, x, y);
+ default:
+ return distinct_QMARK___3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ distinct_QMARK_.cljs$lang$maxFixedArity = 2;
+ distinct_QMARK_.cljs$lang$applyTo = distinct_QMARK___3.cljs$lang$applyTo;
+ distinct_QMARK_.cljs$lang$arity$1 = distinct_QMARK___1;
+ distinct_QMARK_.cljs$lang$arity$2 = distinct_QMARK___2;
+ distinct_QMARK_.cljs$lang$arity$variadic = distinct_QMARK___3.cljs$lang$arity$variadic;
+ return distinct_QMARK_
+}();
+cljs.core.compare = function compare(x, y) {
+ if(x === y) {
+ return 0
+ }else {
+ if(x == null) {
+ return-1
+ }else {
+ if(y == null) {
+ return 1
+ }else {
+ if(cljs.core.type.call(null, x) === cljs.core.type.call(null, y)) {
+ if(function() {
+ var G__2928 = x;
+ if(G__2928) {
+ if(function() {
+ var or__3824__auto__ = G__2928.cljs$lang$protocol_mask$partition1$ & 2048;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2928.cljs$core$IComparable$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2928.cljs$lang$protocol_mask$partition1$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IComparable, G__2928)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IComparable, G__2928)
+ }
+ }()) {
+ return cljs.core._compare.call(null, x, y)
+ }else {
+ return goog.array.defaultCompare(x, y)
+ }
+ }else {
+ if("\ufdd0'else") {
+ throw new Error("compare on non-nil objects of different types");
+ }else {
+ return null
+ }
+ }
+ }
+ }
+ }
+};
+cljs.core.compare_indexed = function() {
+ var compare_indexed = null;
+ var compare_indexed__2 = function(xs, ys) {
+ var xl = cljs.core.count.call(null, xs);
+ var yl = cljs.core.count.call(null, ys);
+ if(xl < yl) {
+ return-1
+ }else {
+ if(xl > yl) {
+ return 1
+ }else {
+ if("\ufdd0'else") {
+ return compare_indexed.call(null, xs, ys, xl, 0)
+ }else {
+ return null
+ }
+ }
+ }
+ };
+ var compare_indexed__4 = function(xs, ys, len, n) {
+ while(true) {
+ var d = cljs.core.compare.call(null, cljs.core.nth.call(null, xs, n), cljs.core.nth.call(null, ys, n));
+ if(function() {
+ var and__3822__auto__ = d === 0;
+ if(and__3822__auto__) {
+ return n + 1 < len
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ var G__2929 = xs;
+ var G__2930 = ys;
+ var G__2931 = len;
+ var G__2932 = n + 1;
+ xs = G__2929;
+ ys = G__2930;
+ len = G__2931;
+ n = G__2932;
+ continue
+ }else {
+ return d
+ }
+ break
+ }
+ };
+ compare_indexed = function(xs, ys, len, n) {
+ switch(arguments.length) {
+ case 2:
+ return compare_indexed__2.call(this, xs, ys);
+ case 4:
+ return compare_indexed__4.call(this, xs, ys, len, n)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ compare_indexed.cljs$lang$arity$2 = compare_indexed__2;
+ compare_indexed.cljs$lang$arity$4 = compare_indexed__4;
+ return compare_indexed
+}();
+cljs.core.fn__GT_comparator = function fn__GT_comparator(f) {
+ if(cljs.core._EQ_.call(null, f, cljs.core.compare)) {
+ return cljs.core.compare
+ }else {
+ return function(x, y) {
+ var r = f.call(null, x, y);
+ if(cljs.core.number_QMARK_.call(null, r)) {
+ return r
+ }else {
+ if(cljs.core.truth_(r)) {
+ return-1
+ }else {
+ if(cljs.core.truth_(f.call(null, y, x))) {
+ return 1
+ }else {
+ return 0
+ }
+ }
+ }
+ }
+ }
+};
+cljs.core.sort = function() {
+ var sort = null;
+ var sort__1 = function(coll) {
+ return sort.call(null, cljs.core.compare, coll)
+ };
+ var sort__2 = function(comp, coll) {
+ if(cljs.core.seq.call(null, coll)) {
+ var a = cljs.core.to_array.call(null, coll);
+ goog.array.stableSort(a, cljs.core.fn__GT_comparator.call(null, comp));
+ return cljs.core.seq.call(null, a)
+ }else {
+ return cljs.core.List.EMPTY
+ }
+ };
+ sort = function(comp, coll) {
+ switch(arguments.length) {
+ case 1:
+ return sort__1.call(this, comp);
+ case 2:
+ return sort__2.call(this, comp, coll)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ sort.cljs$lang$arity$1 = sort__1;
+ sort.cljs$lang$arity$2 = sort__2;
+ return sort
+}();
+cljs.core.sort_by = function() {
+ var sort_by = null;
+ var sort_by__2 = function(keyfn, coll) {
+ return sort_by.call(null, keyfn, cljs.core.compare, coll)
+ };
+ var sort_by__3 = function(keyfn, comp, coll) {
+ return cljs.core.sort.call(null, function(x, y) {
+ return cljs.core.fn__GT_comparator.call(null, comp).call(null, keyfn.call(null, x), keyfn.call(null, y))
+ }, coll)
+ };
+ sort_by = function(keyfn, comp, coll) {
+ switch(arguments.length) {
+ case 2:
+ return sort_by__2.call(this, keyfn, comp);
+ case 3:
+ return sort_by__3.call(this, keyfn, comp, coll)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ sort_by.cljs$lang$arity$2 = sort_by__2;
+ sort_by.cljs$lang$arity$3 = sort_by__3;
+ return sort_by
+}();
+cljs.core.seq_reduce = function() {
+ var seq_reduce = null;
+ var seq_reduce__2 = function(f, coll) {
+ var temp__3971__auto__ = cljs.core.seq.call(null, coll);
+ if(temp__3971__auto__) {
+ var s = temp__3971__auto__;
+ return cljs.core.reduce.call(null, f, cljs.core.first.call(null, s), cljs.core.next.call(null, s))
+ }else {
+ return f.call(null)
+ }
+ };
+ var seq_reduce__3 = function(f, val, coll) {
+ var val__$1 = val;
+ var coll__$1 = cljs.core.seq.call(null, coll);
+ while(true) {
+ if(coll__$1) {
+ var nval = f.call(null, val__$1, cljs.core.first.call(null, coll__$1));
+ if(cljs.core.reduced_QMARK_.call(null, nval)) {
+ return cljs.core.deref.call(null, nval)
+ }else {
+ var G__2933 = nval;
+ var G__2934 = cljs.core.next.call(null, coll__$1);
+ val__$1 = G__2933;
+ coll__$1 = G__2934;
+ continue
+ }
+ }else {
+ return val__$1
+ }
+ break
+ }
+ };
+ seq_reduce = function(f, val, coll) {
+ switch(arguments.length) {
+ case 2:
+ return seq_reduce__2.call(this, f, val);
+ case 3:
+ return seq_reduce__3.call(this, f, val, coll)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ seq_reduce.cljs$lang$arity$2 = seq_reduce__2;
+ seq_reduce.cljs$lang$arity$3 = seq_reduce__3;
+ return seq_reduce
+}();
+cljs.core.shuffle = function shuffle(coll) {
+ var a = cljs.core.to_array.call(null, coll);
+ goog.array.shuffle(a);
+ return cljs.core.vec.call(null, a)
+};
+cljs.core.reduce = function() {
+ var reduce = null;
+ var reduce__2 = function(f, coll) {
+ if(function() {
+ var G__2937 = coll;
+ if(G__2937) {
+ if(function() {
+ var or__3824__auto__ = G__2937.cljs$lang$protocol_mask$partition0$ & 524288;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2937.cljs$core$IReduce$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2937.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IReduce, G__2937)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IReduce, G__2937)
+ }
+ }()) {
+ return cljs.core._reduce.call(null, coll, f)
+ }else {
+ return cljs.core.seq_reduce.call(null, f, coll)
+ }
+ };
+ var reduce__3 = function(f, val, coll) {
+ if(function() {
+ var G__2938 = coll;
+ if(G__2938) {
+ if(function() {
+ var or__3824__auto__ = G__2938.cljs$lang$protocol_mask$partition0$ & 524288;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__2938.cljs$core$IReduce$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__2938.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IReduce, G__2938)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IReduce, G__2938)
+ }
+ }()) {
+ return cljs.core._reduce.call(null, coll, f, val)
+ }else {
+ return cljs.core.seq_reduce.call(null, f, val, coll)
+ }
+ };
+ reduce = function(f, val, coll) {
+ switch(arguments.length) {
+ case 2:
+ return reduce__2.call(this, f, val);
+ case 3:
+ return reduce__3.call(this, f, val, coll)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ reduce.cljs$lang$arity$2 = reduce__2;
+ reduce.cljs$lang$arity$3 = reduce__3;
+ return reduce
+}();
+cljs.core.reduce_kv = function reduce_kv(f, init, coll) {
+ return cljs.core._kv_reduce.call(null, coll, f, init)
+};
+cljs.core._PLUS_ = function() {
+ var _PLUS_ = null;
+ var _PLUS___0 = function() {
+ return 0
+ };
+ var _PLUS___1 = function(x) {
+ return x
+ };
+ var _PLUS___2 = function(x, y) {
+ return x + y
+ };
+ var _PLUS___3 = function() {
+ var G__2939__delegate = function(x, y, more) {
+ return cljs.core.reduce.call(null, _PLUS_, x + y, more)
+ };
+ var G__2939 = function(x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2939__delegate.call(this, x, y, more)
+ };
+ G__2939.cljs$lang$maxFixedArity = 2;
+ G__2939.cljs$lang$applyTo = function(arglist__2940) {
+ var x = cljs.core.first(arglist__2940);
+ var y = cljs.core.first(cljs.core.next(arglist__2940));
+ var more = cljs.core.rest(cljs.core.next(arglist__2940));
+ return G__2939__delegate(x, y, more)
+ };
+ G__2939.cljs$lang$arity$variadic = G__2939__delegate;
+ return G__2939
+ }();
+ _PLUS_ = function(x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 0:
+ return _PLUS___0.call(this);
+ case 1:
+ return _PLUS___1.call(this, x);
+ case 2:
+ return _PLUS___2.call(this, x, y);
+ default:
+ return _PLUS___3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ _PLUS_.cljs$lang$maxFixedArity = 2;
+ _PLUS_.cljs$lang$applyTo = _PLUS___3.cljs$lang$applyTo;
+ _PLUS_.cljs$lang$arity$0 = _PLUS___0;
+ _PLUS_.cljs$lang$arity$1 = _PLUS___1;
+ _PLUS_.cljs$lang$arity$2 = _PLUS___2;
+ _PLUS_.cljs$lang$arity$variadic = _PLUS___3.cljs$lang$arity$variadic;
+ return _PLUS_
+}();
+cljs.core._ = function() {
+ var _ = null;
+ var ___1 = function(x) {
+ return-x
+ };
+ var ___2 = function(x, y) {
+ return x - y
+ };
+ var ___3 = function() {
+ var G__2941__delegate = function(x, y, more) {
+ return cljs.core.reduce.call(null, _, x - y, more)
+ };
+ var G__2941 = function(x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2941__delegate.call(this, x, y, more)
+ };
+ G__2941.cljs$lang$maxFixedArity = 2;
+ G__2941.cljs$lang$applyTo = function(arglist__2942) {
+ var x = cljs.core.first(arglist__2942);
+ var y = cljs.core.first(cljs.core.next(arglist__2942));
+ var more = cljs.core.rest(cljs.core.next(arglist__2942));
+ return G__2941__delegate(x, y, more)
+ };
+ G__2941.cljs$lang$arity$variadic = G__2941__delegate;
+ return G__2941
+ }();
+ _ = function(x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 1:
+ return ___1.call(this, x);
+ case 2:
+ return ___2.call(this, x, y);
+ default:
+ return ___3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ _.cljs$lang$maxFixedArity = 2;
+ _.cljs$lang$applyTo = ___3.cljs$lang$applyTo;
+ _.cljs$lang$arity$1 = ___1;
+ _.cljs$lang$arity$2 = ___2;
+ _.cljs$lang$arity$variadic = ___3.cljs$lang$arity$variadic;
+ return _
+}();
+cljs.core._STAR_ = function() {
+ var _STAR_ = null;
+ var _STAR___0 = function() {
+ return 1
+ };
+ var _STAR___1 = function(x) {
+ return x
+ };
+ var _STAR___2 = function(x, y) {
+ return x * y
+ };
+ var _STAR___3 = function() {
+ var G__2943__delegate = function(x, y, more) {
+ return cljs.core.reduce.call(null, _STAR_, x * y, more)
+ };
+ var G__2943 = function(x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2943__delegate.call(this, x, y, more)
+ };
+ G__2943.cljs$lang$maxFixedArity = 2;
+ G__2943.cljs$lang$applyTo = function(arglist__2944) {
+ var x = cljs.core.first(arglist__2944);
+ var y = cljs.core.first(cljs.core.next(arglist__2944));
+ var more = cljs.core.rest(cljs.core.next(arglist__2944));
+ return G__2943__delegate(x, y, more)
+ };
+ G__2943.cljs$lang$arity$variadic = G__2943__delegate;
+ return G__2943
+ }();
+ _STAR_ = function(x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 0:
+ return _STAR___0.call(this);
+ case 1:
+ return _STAR___1.call(this, x);
+ case 2:
+ return _STAR___2.call(this, x, y);
+ default:
+ return _STAR___3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ _STAR_.cljs$lang$maxFixedArity = 2;
+ _STAR_.cljs$lang$applyTo = _STAR___3.cljs$lang$applyTo;
+ _STAR_.cljs$lang$arity$0 = _STAR___0;
+ _STAR_.cljs$lang$arity$1 = _STAR___1;
+ _STAR_.cljs$lang$arity$2 = _STAR___2;
+ _STAR_.cljs$lang$arity$variadic = _STAR___3.cljs$lang$arity$variadic;
+ return _STAR_
+}();
+cljs.core._SLASH_ = function() {
+ var _SLASH_ = null;
+ var _SLASH___1 = function(x) {
+ return _SLASH_.call(null, 1, x)
+ };
+ var _SLASH___2 = function(x, y) {
+ return x / y
+ };
+ var _SLASH___3 = function() {
+ var G__2945__delegate = function(x, y, more) {
+ return cljs.core.reduce.call(null, _SLASH_, _SLASH_.call(null, x, y), more)
+ };
+ var G__2945 = function(x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2945__delegate.call(this, x, y, more)
+ };
+ G__2945.cljs$lang$maxFixedArity = 2;
+ G__2945.cljs$lang$applyTo = function(arglist__2946) {
+ var x = cljs.core.first(arglist__2946);
+ var y = cljs.core.first(cljs.core.next(arglist__2946));
+ var more = cljs.core.rest(cljs.core.next(arglist__2946));
+ return G__2945__delegate(x, y, more)
+ };
+ G__2945.cljs$lang$arity$variadic = G__2945__delegate;
+ return G__2945
+ }();
+ _SLASH_ = function(x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 1:
+ return _SLASH___1.call(this, x);
+ case 2:
+ return _SLASH___2.call(this, x, y);
+ default:
+ return _SLASH___3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ _SLASH_.cljs$lang$maxFixedArity = 2;
+ _SLASH_.cljs$lang$applyTo = _SLASH___3.cljs$lang$applyTo;
+ _SLASH_.cljs$lang$arity$1 = _SLASH___1;
+ _SLASH_.cljs$lang$arity$2 = _SLASH___2;
+ _SLASH_.cljs$lang$arity$variadic = _SLASH___3.cljs$lang$arity$variadic;
+ return _SLASH_
+}();
+cljs.core._LT_ = function() {
+ var _LT_ = null;
+ var _LT___1 = function(x) {
+ return true
+ };
+ var _LT___2 = function(x, y) {
+ return x < y
+ };
+ var _LT___3 = function() {
+ var G__2947__delegate = function(x, y, more) {
+ while(true) {
+ if(x < y) {
+ if(cljs.core.next.call(null, more)) {
+ var G__2948 = y;
+ var G__2949 = cljs.core.first.call(null, more);
+ var G__2950 = cljs.core.next.call(null, more);
+ x = G__2948;
+ y = G__2949;
+ more = G__2950;
+ continue
+ }else {
+ return y < cljs.core.first.call(null, more)
+ }
+ }else {
+ return false
+ }
+ break
+ }
+ };
+ var G__2947 = function(x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2947__delegate.call(this, x, y, more)
+ };
+ G__2947.cljs$lang$maxFixedArity = 2;
+ G__2947.cljs$lang$applyTo = function(arglist__2951) {
+ var x = cljs.core.first(arglist__2951);
+ var y = cljs.core.first(cljs.core.next(arglist__2951));
+ var more = cljs.core.rest(cljs.core.next(arglist__2951));
+ return G__2947__delegate(x, y, more)
+ };
+ G__2947.cljs$lang$arity$variadic = G__2947__delegate;
+ return G__2947
+ }();
+ _LT_ = function(x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 1:
+ return _LT___1.call(this, x);
+ case 2:
+ return _LT___2.call(this, x, y);
+ default:
+ return _LT___3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ _LT_.cljs$lang$maxFixedArity = 2;
+ _LT_.cljs$lang$applyTo = _LT___3.cljs$lang$applyTo;
+ _LT_.cljs$lang$arity$1 = _LT___1;
+ _LT_.cljs$lang$arity$2 = _LT___2;
+ _LT_.cljs$lang$arity$variadic = _LT___3.cljs$lang$arity$variadic;
+ return _LT_
+}();
+cljs.core._LT__EQ_ = function() {
+ var _LT__EQ_ = null;
+ var _LT__EQ___1 = function(x) {
+ return true
+ };
+ var _LT__EQ___2 = function(x, y) {
+ return x <= y
+ };
+ var _LT__EQ___3 = function() {
+ var G__2952__delegate = function(x, y, more) {
+ while(true) {
+ if(x <= y) {
+ if(cljs.core.next.call(null, more)) {
+ var G__2953 = y;
+ var G__2954 = cljs.core.first.call(null, more);
+ var G__2955 = cljs.core.next.call(null, more);
+ x = G__2953;
+ y = G__2954;
+ more = G__2955;
+ continue
+ }else {
+ return y <= cljs.core.first.call(null, more)
+ }
+ }else {
+ return false
+ }
+ break
+ }
+ };
+ var G__2952 = function(x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2952__delegate.call(this, x, y, more)
+ };
+ G__2952.cljs$lang$maxFixedArity = 2;
+ G__2952.cljs$lang$applyTo = function(arglist__2956) {
+ var x = cljs.core.first(arglist__2956);
+ var y = cljs.core.first(cljs.core.next(arglist__2956));
+ var more = cljs.core.rest(cljs.core.next(arglist__2956));
+ return G__2952__delegate(x, y, more)
+ };
+ G__2952.cljs$lang$arity$variadic = G__2952__delegate;
+ return G__2952
+ }();
+ _LT__EQ_ = function(x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 1:
+ return _LT__EQ___1.call(this, x);
+ case 2:
+ return _LT__EQ___2.call(this, x, y);
+ default:
+ return _LT__EQ___3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ _LT__EQ_.cljs$lang$maxFixedArity = 2;
+ _LT__EQ_.cljs$lang$applyTo = _LT__EQ___3.cljs$lang$applyTo;
+ _LT__EQ_.cljs$lang$arity$1 = _LT__EQ___1;
+ _LT__EQ_.cljs$lang$arity$2 = _LT__EQ___2;
+ _LT__EQ_.cljs$lang$arity$variadic = _LT__EQ___3.cljs$lang$arity$variadic;
+ return _LT__EQ_
+}();
+cljs.core._GT_ = function() {
+ var _GT_ = null;
+ var _GT___1 = function(x) {
+ return true
+ };
+ var _GT___2 = function(x, y) {
+ return x > y
+ };
+ var _GT___3 = function() {
+ var G__2957__delegate = function(x, y, more) {
+ while(true) {
+ if(x > y) {
+ if(cljs.core.next.call(null, more)) {
+ var G__2958 = y;
+ var G__2959 = cljs.core.first.call(null, more);
+ var G__2960 = cljs.core.next.call(null, more);
+ x = G__2958;
+ y = G__2959;
+ more = G__2960;
+ continue
+ }else {
+ return y > cljs.core.first.call(null, more)
+ }
+ }else {
+ return false
+ }
+ break
+ }
+ };
+ var G__2957 = function(x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2957__delegate.call(this, x, y, more)
+ };
+ G__2957.cljs$lang$maxFixedArity = 2;
+ G__2957.cljs$lang$applyTo = function(arglist__2961) {
+ var x = cljs.core.first(arglist__2961);
+ var y = cljs.core.first(cljs.core.next(arglist__2961));
+ var more = cljs.core.rest(cljs.core.next(arglist__2961));
+ return G__2957__delegate(x, y, more)
+ };
+ G__2957.cljs$lang$arity$variadic = G__2957__delegate;
+ return G__2957
+ }();
+ _GT_ = function(x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 1:
+ return _GT___1.call(this, x);
+ case 2:
+ return _GT___2.call(this, x, y);
+ default:
+ return _GT___3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ _GT_.cljs$lang$maxFixedArity = 2;
+ _GT_.cljs$lang$applyTo = _GT___3.cljs$lang$applyTo;
+ _GT_.cljs$lang$arity$1 = _GT___1;
+ _GT_.cljs$lang$arity$2 = _GT___2;
+ _GT_.cljs$lang$arity$variadic = _GT___3.cljs$lang$arity$variadic;
+ return _GT_
+}();
+cljs.core._GT__EQ_ = function() {
+ var _GT__EQ_ = null;
+ var _GT__EQ___1 = function(x) {
+ return true
+ };
+ var _GT__EQ___2 = function(x, y) {
+ return x >= y
+ };
+ var _GT__EQ___3 = function() {
+ var G__2962__delegate = function(x, y, more) {
+ while(true) {
+ if(x >= y) {
+ if(cljs.core.next.call(null, more)) {
+ var G__2963 = y;
+ var G__2964 = cljs.core.first.call(null, more);
+ var G__2965 = cljs.core.next.call(null, more);
+ x = G__2963;
+ y = G__2964;
+ more = G__2965;
+ continue
+ }else {
+ return y >= cljs.core.first.call(null, more)
+ }
+ }else {
+ return false
+ }
+ break
+ }
+ };
+ var G__2962 = function(x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2962__delegate.call(this, x, y, more)
+ };
+ G__2962.cljs$lang$maxFixedArity = 2;
+ G__2962.cljs$lang$applyTo = function(arglist__2966) {
+ var x = cljs.core.first(arglist__2966);
+ var y = cljs.core.first(cljs.core.next(arglist__2966));
+ var more = cljs.core.rest(cljs.core.next(arglist__2966));
+ return G__2962__delegate(x, y, more)
+ };
+ G__2962.cljs$lang$arity$variadic = G__2962__delegate;
+ return G__2962
+ }();
+ _GT__EQ_ = function(x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 1:
+ return _GT__EQ___1.call(this, x);
+ case 2:
+ return _GT__EQ___2.call(this, x, y);
+ default:
+ return _GT__EQ___3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ _GT__EQ_.cljs$lang$maxFixedArity = 2;
+ _GT__EQ_.cljs$lang$applyTo = _GT__EQ___3.cljs$lang$applyTo;
+ _GT__EQ_.cljs$lang$arity$1 = _GT__EQ___1;
+ _GT__EQ_.cljs$lang$arity$2 = _GT__EQ___2;
+ _GT__EQ_.cljs$lang$arity$variadic = _GT__EQ___3.cljs$lang$arity$variadic;
+ return _GT__EQ_
+}();
+cljs.core.dec = function dec(x) {
+ return x - 1
+};
+cljs.core.max = function() {
+ var max = null;
+ var max__1 = function(x) {
+ return x
+ };
+ var max__2 = function(x, y) {
+ return x > y ? x : y
+ };
+ var max__3 = function() {
+ var G__2967__delegate = function(x, y, more) {
+ return cljs.core.reduce.call(null, max, x > y ? x : y, more)
+ };
+ var G__2967 = function(x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2967__delegate.call(this, x, y, more)
+ };
+ G__2967.cljs$lang$maxFixedArity = 2;
+ G__2967.cljs$lang$applyTo = function(arglist__2968) {
+ var x = cljs.core.first(arglist__2968);
+ var y = cljs.core.first(cljs.core.next(arglist__2968));
+ var more = cljs.core.rest(cljs.core.next(arglist__2968));
+ return G__2967__delegate(x, y, more)
+ };
+ G__2967.cljs$lang$arity$variadic = G__2967__delegate;
+ return G__2967
+ }();
+ max = function(x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 1:
+ return max__1.call(this, x);
+ case 2:
+ return max__2.call(this, x, y);
+ default:
+ return max__3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ max.cljs$lang$maxFixedArity = 2;
+ max.cljs$lang$applyTo = max__3.cljs$lang$applyTo;
+ max.cljs$lang$arity$1 = max__1;
+ max.cljs$lang$arity$2 = max__2;
+ max.cljs$lang$arity$variadic = max__3.cljs$lang$arity$variadic;
+ return max
+}();
+cljs.core.min = function() {
+ var min = null;
+ var min__1 = function(x) {
+ return x
+ };
+ var min__2 = function(x, y) {
+ return x < y ? x : y
+ };
+ var min__3 = function() {
+ var G__2969__delegate = function(x, y, more) {
+ return cljs.core.reduce.call(null, min, x < y ? x : y, more)
+ };
+ var G__2969 = function(x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2969__delegate.call(this, x, y, more)
+ };
+ G__2969.cljs$lang$maxFixedArity = 2;
+ G__2969.cljs$lang$applyTo = function(arglist__2970) {
+ var x = cljs.core.first(arglist__2970);
+ var y = cljs.core.first(cljs.core.next(arglist__2970));
+ var more = cljs.core.rest(cljs.core.next(arglist__2970));
+ return G__2969__delegate(x, y, more)
+ };
+ G__2969.cljs$lang$arity$variadic = G__2969__delegate;
+ return G__2969
+ }();
+ min = function(x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 1:
+ return min__1.call(this, x);
+ case 2:
+ return min__2.call(this, x, y);
+ default:
+ return min__3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ min.cljs$lang$maxFixedArity = 2;
+ min.cljs$lang$applyTo = min__3.cljs$lang$applyTo;
+ min.cljs$lang$arity$1 = min__1;
+ min.cljs$lang$arity$2 = min__2;
+ min.cljs$lang$arity$variadic = min__3.cljs$lang$arity$variadic;
+ return min
+}();
+cljs.core.fix = function fix(q) {
+ if(q >= 0) {
+ return Math.floor.call(null, q)
+ }else {
+ return Math.ceil.call(null, q)
+ }
+};
+cljs.core.int$ = function int$(x) {
+ return cljs.core.fix.call(null, x)
+};
+cljs.core.long$ = function long$(x) {
+ return cljs.core.fix.call(null, x)
+};
+cljs.core.mod = function mod(n, d) {
+ return n % d
+};
+cljs.core.quot = function quot(n, d) {
+ var rem = n % d;
+ return cljs.core.fix.call(null, (n - rem) / d)
+};
+cljs.core.rem = function rem(n, d) {
+ var q = cljs.core.quot.call(null, n, d);
+ return n - d * q
+};
+cljs.core.rand = function() {
+ var rand = null;
+ var rand__0 = function() {
+ return Math.random.call(null)
+ };
+ var rand__1 = function(n) {
+ return n * rand.call(null)
+ };
+ rand = function(n) {
+ switch(arguments.length) {
+ case 0:
+ return rand__0.call(this);
+ case 1:
+ return rand__1.call(this, n)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ rand.cljs$lang$arity$0 = rand__0;
+ rand.cljs$lang$arity$1 = rand__1;
+ return rand
+}();
+cljs.core.rand_int = function rand_int(n) {
+ return cljs.core.fix.call(null, cljs.core.rand.call(null, n))
+};
+cljs.core.bit_xor = function bit_xor(x, y) {
+ return x ^ y
+};
+cljs.core.bit_and = function bit_and(x, y) {
+ return x & y
+};
+cljs.core.bit_or = function bit_or(x, y) {
+ return x | y
+};
+cljs.core.bit_and_not = function bit_and_not(x, y) {
+ return x & ~y
+};
+cljs.core.bit_clear = function bit_clear(x, n) {
+ return x & ~(1 << n)
+};
+cljs.core.bit_flip = function bit_flip(x, n) {
+ return x ^ 1 << n
+};
+cljs.core.bit_not = function bit_not(x) {
+ return~x
+};
+cljs.core.bit_set = function bit_set(x, n) {
+ return x | 1 << n
+};
+cljs.core.bit_test = function bit_test(x, n) {
+ return(x & 1 << n) != 0
+};
+cljs.core.bit_shift_left = function bit_shift_left(x, n) {
+ return x << n
+};
+cljs.core.bit_shift_right = function bit_shift_right(x, n) {
+ return x >> n
+};
+cljs.core.bit_shift_right_zero_fill = function bit_shift_right_zero_fill(x, n) {
+ return x >>> n
+};
+cljs.core.bit_count = function bit_count(v) {
+ var v__$1 = v - (v >> 1 & 1431655765);
+ var v__$2 = (v__$1 & 858993459) + (v__$1 >> 2 & 858993459);
+ return(v__$2 + (v__$2 >> 4) & 252645135) * 16843009 >> 24
+};
+cljs.core._EQ__EQ_ = function() {
+ var _EQ__EQ_ = null;
+ var _EQ__EQ___1 = function(x) {
+ return true
+ };
+ var _EQ__EQ___2 = function(x, y) {
+ return cljs.core._equiv.call(null, x, y)
+ };
+ var _EQ__EQ___3 = function() {
+ var G__2971__delegate = function(x, y, more) {
+ while(true) {
+ if(cljs.core.truth_(_EQ__EQ_.call(null, x, y))) {
+ if(cljs.core.next.call(null, more)) {
+ var G__2972 = y;
+ var G__2973 = cljs.core.first.call(null, more);
+ var G__2974 = cljs.core.next.call(null, more);
+ x = G__2972;
+ y = G__2973;
+ more = G__2974;
+ continue
+ }else {
+ return _EQ__EQ_.call(null, y, cljs.core.first.call(null, more))
+ }
+ }else {
+ return false
+ }
+ break
+ }
+ };
+ var G__2971 = function(x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__2971__delegate.call(this, x, y, more)
+ };
+ G__2971.cljs$lang$maxFixedArity = 2;
+ G__2971.cljs$lang$applyTo = function(arglist__2975) {
+ var x = cljs.core.first(arglist__2975);
+ var y = cljs.core.first(cljs.core.next(arglist__2975));
+ var more = cljs.core.rest(cljs.core.next(arglist__2975));
+ return G__2971__delegate(x, y, more)
+ };
+ G__2971.cljs$lang$arity$variadic = G__2971__delegate;
+ return G__2971
+ }();
+ _EQ__EQ_ = function(x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 1:
+ return _EQ__EQ___1.call(this, x);
+ case 2:
+ return _EQ__EQ___2.call(this, x, y);
+ default:
+ return _EQ__EQ___3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ _EQ__EQ_.cljs$lang$maxFixedArity = 2;
+ _EQ__EQ_.cljs$lang$applyTo = _EQ__EQ___3.cljs$lang$applyTo;
+ _EQ__EQ_.cljs$lang$arity$1 = _EQ__EQ___1;
+ _EQ__EQ_.cljs$lang$arity$2 = _EQ__EQ___2;
+ _EQ__EQ_.cljs$lang$arity$variadic = _EQ__EQ___3.cljs$lang$arity$variadic;
+ return _EQ__EQ_
+}();
+cljs.core.pos_QMARK_ = function pos_QMARK_(n) {
+ return n > 0
+};
+cljs.core.zero_QMARK_ = function zero_QMARK_(n) {
+ return n === 0
+};
+cljs.core.neg_QMARK_ = function neg_QMARK_(x) {
+ return x < 0
+};
+cljs.core.nthnext = function nthnext(coll, n) {
+ var n__$1 = n;
+ var xs = cljs.core.seq.call(null, coll);
+ while(true) {
+ if(cljs.core.truth_(function() {
+ var and__3822__auto__ = xs;
+ if(and__3822__auto__) {
+ return n__$1 > 0
+ }else {
+ return and__3822__auto__
+ }
+ }())) {
+ var G__2976 = n__$1 - 1;
+ var G__2977 = cljs.core.next.call(null, xs);
+ n__$1 = G__2976;
+ xs = G__2977;
+ continue
+ }else {
+ return xs
+ }
+ break
+ }
+};
+cljs.core.str_STAR_ = function() {
+ var str_STAR_ = null;
+ var str_STAR___0 = function() {
+ return""
+ };
+ var str_STAR___1 = function(x) {
+ if(x == null) {
+ return""
+ }else {
+ if("\ufdd0'else") {
+ return x.toString()
+ }else {
+ return null
+ }
+ }
+ };
+ var str_STAR___2 = function() {
+ var G__2978__delegate = function(x, ys) {
+ return function(sb, more) {
+ while(true) {
+ if(cljs.core.truth_(more)) {
+ var G__2979 = sb.append(str_STAR_.call(null, cljs.core.first.call(null, more)));
+ var G__2980 = cljs.core.next.call(null, more);
+ sb = G__2979;
+ more = G__2980;
+ continue
+ }else {
+ return str_STAR_.call(null, sb)
+ }
+ break
+ }
+ }.call(null, new goog.string.StringBuffer(str_STAR_.call(null, x)), ys)
+ };
+ var G__2978 = function(x, var_args) {
+ var ys = null;
+ if(goog.isDef(var_args)) {
+ ys = cljs.core.array_seq(Array.prototype.slice.call(arguments, 1), 0)
+ }
+ return G__2978__delegate.call(this, x, ys)
+ };
+ G__2978.cljs$lang$maxFixedArity = 1;
+ G__2978.cljs$lang$applyTo = function(arglist__2981) {
+ var x = cljs.core.first(arglist__2981);
+ var ys = cljs.core.rest(arglist__2981);
+ return G__2978__delegate(x, ys)
+ };
+ G__2978.cljs$lang$arity$variadic = G__2978__delegate;
+ return G__2978
+ }();
+ str_STAR_ = function(x, var_args) {
+ var ys = var_args;
+ switch(arguments.length) {
+ case 0:
+ return str_STAR___0.call(this);
+ case 1:
+ return str_STAR___1.call(this, x);
+ default:
+ return str_STAR___2.cljs$lang$arity$variadic(x, cljs.core.array_seq(arguments, 1))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ str_STAR_.cljs$lang$maxFixedArity = 1;
+ str_STAR_.cljs$lang$applyTo = str_STAR___2.cljs$lang$applyTo;
+ str_STAR_.cljs$lang$arity$0 = str_STAR___0;
+ str_STAR_.cljs$lang$arity$1 = str_STAR___1;
+ str_STAR_.cljs$lang$arity$variadic = str_STAR___2.cljs$lang$arity$variadic;
+ return str_STAR_
+}();
+cljs.core.str = function() {
+ var str = null;
+ var str__0 = function() {
+ return""
+ };
+ var str__1 = function(x) {
+ if(cljs.core.symbol_QMARK_.call(null, x)) {
+ return x.substring(2, x.length)
+ }else {
+ if(cljs.core.keyword_QMARK_.call(null, x)) {
+ return cljs.core.str_STAR_.call(null, ":", x.substring(2, x.length))
+ }else {
+ if(x == null) {
+ return""
+ }else {
+ if("\ufdd0'else") {
+ return x.toString()
+ }else {
+ return null
+ }
+ }
+ }
+ }
+ };
+ var str__2 = function() {
+ var G__2982__delegate = function(x, ys) {
+ return function(sb, more) {
+ while(true) {
+ if(cljs.core.truth_(more)) {
+ var G__2983 = sb.append(str.call(null, cljs.core.first.call(null, more)));
+ var G__2984 = cljs.core.next.call(null, more);
+ sb = G__2983;
+ more = G__2984;
+ continue
+ }else {
+ return cljs.core.str_STAR_.call(null, sb)
+ }
+ break
+ }
+ }.call(null, new goog.string.StringBuffer(str.call(null, x)), ys)
+ };
+ var G__2982 = function(x, var_args) {
+ var ys = null;
+ if(goog.isDef(var_args)) {
+ ys = cljs.core.array_seq(Array.prototype.slice.call(arguments, 1), 0)
+ }
+ return G__2982__delegate.call(this, x, ys)
+ };
+ G__2982.cljs$lang$maxFixedArity = 1;
+ G__2982.cljs$lang$applyTo = function(arglist__2985) {
+ var x = cljs.core.first(arglist__2985);
+ var ys = cljs.core.rest(arglist__2985);
+ return G__2982__delegate(x, ys)
+ };
+ G__2982.cljs$lang$arity$variadic = G__2982__delegate;
+ return G__2982
+ }();
+ str = function(x, var_args) {
+ var ys = var_args;
+ switch(arguments.length) {
+ case 0:
+ return str__0.call(this);
+ case 1:
+ return str__1.call(this, x);
+ default:
+ return str__2.cljs$lang$arity$variadic(x, cljs.core.array_seq(arguments, 1))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ str.cljs$lang$maxFixedArity = 1;
+ str.cljs$lang$applyTo = str__2.cljs$lang$applyTo;
+ str.cljs$lang$arity$0 = str__0;
+ str.cljs$lang$arity$1 = str__1;
+ str.cljs$lang$arity$variadic = str__2.cljs$lang$arity$variadic;
+ return str
+}();
+cljs.core.subs = function() {
+ var subs = null;
+ var subs__2 = function(s, start) {
+ return s.substring(start)
+ };
+ var subs__3 = function(s, start, end) {
+ return s.substring(start, end)
+ };
+ subs = function(s, start, end) {
+ switch(arguments.length) {
+ case 2:
+ return subs__2.call(this, s, start);
+ case 3:
+ return subs__3.call(this, s, start, end)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ subs.cljs$lang$arity$2 = subs__2;
+ subs.cljs$lang$arity$3 = subs__3;
+ return subs
+}();
+cljs.core.format = function() {
+ var format__delegate = function(fmt, args) {
+ var args__$1 = cljs.core.map.call(null, function(x) {
+ if(function() {
+ var or__3824__auto__ = cljs.core.keyword_QMARK_.call(null, x);
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return cljs.core.symbol_QMARK_.call(null, x)
+ }
+ }()) {
+ return[cljs.core.str(x)].join("")
+ }else {
+ return x
+ }
+ }, args);
+ return cljs.core.apply.call(null, goog.string.format, fmt, args__$1)
+ };
+ var format = function(fmt, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 1), 0)
+ }
+ return format__delegate.call(this, fmt, args)
+ };
+ format.cljs$lang$maxFixedArity = 1;
+ format.cljs$lang$applyTo = function(arglist__2986) {
+ var fmt = cljs.core.first(arglist__2986);
+ var args = cljs.core.rest(arglist__2986);
+ return format__delegate(fmt, args)
+ };
+ format.cljs$lang$arity$variadic = format__delegate;
+ return format
+}();
+cljs.core.symbol = function() {
+ var symbol = null;
+ var symbol__1 = function(name) {
+ if(cljs.core.symbol_QMARK_.call(null, name)) {
+ return name
+ }else {
+ if(cljs.core.keyword_QMARK_.call(null, name)) {
+ return cljs.core.str_STAR_.call(null, "\ufdd1", "'", cljs.core.subs.call(null, name, 2))
+ }else {
+ if("\ufdd0'else") {
+ return cljs.core.str_STAR_.call(null, "\ufdd1", "'", name)
+ }else {
+ return null
+ }
+ }
+ }
+ };
+ var symbol__2 = function(ns, name) {
+ return symbol.call(null, cljs.core.str_STAR_.call(null, ns, "/", name))
+ };
+ symbol = function(ns, name) {
+ switch(arguments.length) {
+ case 1:
+ return symbol__1.call(this, ns);
+ case 2:
+ return symbol__2.call(this, ns, name)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ symbol.cljs$lang$arity$1 = symbol__1;
+ symbol.cljs$lang$arity$2 = symbol__2;
+ return symbol
+}();
+cljs.core.keyword = function() {
+ var keyword = null;
+ var keyword__1 = function(name) {
+ if(cljs.core.keyword_QMARK_.call(null, name)) {
+ return name
+ }else {
+ if(cljs.core.symbol_QMARK_.call(null, name)) {
+ return cljs.core.str_STAR_.call(null, "\ufdd0", "'", cljs.core.subs.call(null, name, 2))
+ }else {
+ if("\ufdd0'else") {
+ return cljs.core.str_STAR_.call(null, "\ufdd0", "'", name)
+ }else {
+ return null
+ }
+ }
+ }
+ };
+ var keyword__2 = function(ns, name) {
+ return keyword.call(null, cljs.core.str_STAR_.call(null, ns, "/", name))
+ };
+ keyword = function(ns, name) {
+ switch(arguments.length) {
+ case 1:
+ return keyword__1.call(this, ns);
+ case 2:
+ return keyword__2.call(this, ns, name)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ keyword.cljs$lang$arity$1 = keyword__1;
+ keyword.cljs$lang$arity$2 = keyword__2;
+ return keyword
+}();
+cljs.core.equiv_sequential = function equiv_sequential(x, y) {
+ return cljs.core.boolean$.call(null, cljs.core.sequential_QMARK_.call(null, y) ? function() {
+ var xs = cljs.core.seq.call(null, x);
+ var ys = cljs.core.seq.call(null, y);
+ while(true) {
+ if(xs == null) {
+ return ys == null
+ }else {
+ if(ys == null) {
+ return false
+ }else {
+ if(cljs.core._EQ_.call(null, cljs.core.first.call(null, xs), cljs.core.first.call(null, ys))) {
+ var G__2987 = cljs.core.next.call(null, xs);
+ var G__2988 = cljs.core.next.call(null, ys);
+ xs = G__2987;
+ ys = G__2988;
+ continue
+ }else {
+ if("\ufdd0'else") {
+ return false
+ }else {
+ return null
+ }
+ }
+ }
+ }
+ break
+ }
+ }() : null)
+};
+cljs.core.hash_combine = function hash_combine(seed, hash) {
+ return seed ^ hash + 2654435769 + (seed << 6) + (seed >> 2)
+};
+cljs.core.hash_coll = function hash_coll(coll) {
+ return cljs.core.reduce.call(null, function(p1__2989_SHARP_, p2__2990_SHARP_) {
+ return cljs.core.hash_combine.call(null, p1__2989_SHARP_, cljs.core.hash.call(null, p2__2990_SHARP_, false))
+ }, cljs.core.hash.call(null, cljs.core.first.call(null, coll), false), cljs.core.next.call(null, coll))
+};
+cljs.core.hash_imap = function hash_imap(m) {
+ var h = 0;
+ var s = cljs.core.seq.call(null, m);
+ while(true) {
+ if(s) {
+ var e = cljs.core.first.call(null, s);
+ var G__2991 = (h + (cljs.core.hash.call(null, cljs.core.key.call(null, e)) ^ cljs.core.hash.call(null, cljs.core.val.call(null, e)))) % 4503599627370496;
+ var G__2992 = cljs.core.next.call(null, s);
+ h = G__2991;
+ s = G__2992;
+ continue
+ }else {
+ return h
+ }
+ break
+ }
+};
+cljs.core.hash_iset = function hash_iset(s) {
+ var h = 0;
+ var s__$1 = cljs.core.seq.call(null, s);
+ while(true) {
+ if(s__$1) {
+ var e = cljs.core.first.call(null, s__$1);
+ var G__2993 = (h + cljs.core.hash.call(null, e)) % 4503599627370496;
+ var G__2994 = cljs.core.next.call(null, s__$1);
+ h = G__2993;
+ s__$1 = G__2994;
+ continue
+ }else {
+ return h
+ }
+ break
+ }
+};
+cljs.core.extend_object_BANG_ = function extend_object_BANG_(obj, fn_map) {
+ var G__2997 = cljs.core.seq.call(null, fn_map);
+ while(true) {
+ if(G__2997) {
+ var vec__2998 = cljs.core.first.call(null, G__2997);
+ var key_name = cljs.core.nth.call(null, vec__2998, 0, null);
+ var f = cljs.core.nth.call(null, vec__2998, 1, null);
+ var str_name = cljs.core.name.call(null, key_name);
+ obj[str_name] = f;
+ var G__2999 = cljs.core.next.call(null, G__2997);
+ G__2997 = G__2999;
+ continue
+ }else {
+ }
+ break
+ }
+ return obj
+};
+goog.provide("cljs.core.List");
+cljs.core.List = function(meta, first, rest, count, __hash) {
+ this.meta = meta;
+ this.first = first;
+ this.rest = rest;
+ this.count = count;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 65413358
+};
+cljs.core.List.cljs$lang$type = true;
+cljs.core.List.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/List")
+};
+cljs.core.List.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/List")
+};
+cljs.core.List.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.List.prototype.cljs$core$INext$_next$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.count === 1) {
+ return null
+ }else {
+ return self__.rest
+ }
+};
+cljs.core.List.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ return new cljs.core.List(self__.meta, o, coll, self__.count + 1, null)
+};
+cljs.core.List.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.List.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ return coll
+};
+cljs.core.List.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.count
+};
+cljs.core.List.prototype.cljs$core$IStack$_peek$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.first
+};
+cljs.core.List.prototype.cljs$core$IStack$_pop$arity$1 = function(coll) {
+ var self__ = this;
+ return coll.cljs$core$ISeq$_rest$arity$1(coll)
+};
+cljs.core.List.prototype.cljs$core$ISeq$_first$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.first
+};
+cljs.core.List.prototype.cljs$core$ISeq$_rest$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.count === 1) {
+ return cljs.core.List.EMPTY
+ }else {
+ return self__.rest
+ }
+};
+cljs.core.List.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.List.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.List(meta__$1, self__.first, self__.rest, self__.count, self__.__hash)
+};
+cljs.core.List.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.List.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.List.EMPTY
+};
+cljs.core.List;
+goog.provide("cljs.core.EmptyList");
+cljs.core.EmptyList = function(meta) {
+ this.meta = meta;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 65413326
+};
+cljs.core.EmptyList.cljs$lang$type = true;
+cljs.core.EmptyList.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/EmptyList")
+};
+cljs.core.EmptyList.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/EmptyList")
+};
+cljs.core.EmptyList.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ return 0
+};
+cljs.core.EmptyList.prototype.cljs$core$INext$_next$arity$1 = function(coll) {
+ var self__ = this;
+ return null
+};
+cljs.core.EmptyList.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ return new cljs.core.List(self__.meta, o, null, 1, null)
+};
+cljs.core.EmptyList.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.EmptyList.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ return null
+};
+cljs.core.EmptyList.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ return 0
+};
+cljs.core.EmptyList.prototype.cljs$core$IStack$_peek$arity$1 = function(coll) {
+ var self__ = this;
+ return null
+};
+cljs.core.EmptyList.prototype.cljs$core$IStack$_pop$arity$1 = function(coll) {
+ var self__ = this;
+ throw new Error("Can't pop empty list");
+};
+cljs.core.EmptyList.prototype.cljs$core$ISeq$_first$arity$1 = function(coll) {
+ var self__ = this;
+ return null
+};
+cljs.core.EmptyList.prototype.cljs$core$ISeq$_rest$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.List.EMPTY
+};
+cljs.core.EmptyList.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.EmptyList.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.EmptyList(meta__$1)
+};
+cljs.core.EmptyList.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.EmptyList.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return coll
+};
+cljs.core.EmptyList;
+cljs.core.List.EMPTY = new cljs.core.EmptyList(null);
+cljs.core.reversible_QMARK_ = function reversible_QMARK_(coll) {
+ var G__3001 = coll;
+ if(G__3001) {
+ if(function() {
+ var or__3824__auto__ = G__3001.cljs$lang$protocol_mask$partition0$ & 134217728;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__3001.cljs$core$IReversible$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__3001.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IReversible, G__3001)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IReversible, G__3001)
+ }
+};
+cljs.core.rseq = function rseq(coll) {
+ return cljs.core._rseq.call(null, coll)
+};
+cljs.core.reverse = function reverse(coll) {
+ if(cljs.core.reversible_QMARK_.call(null, coll)) {
+ return cljs.core.rseq.call(null, coll)
+ }else {
+ return cljs.core.reduce.call(null, cljs.core.conj, cljs.core.List.EMPTY, coll)
+ }
+};
+cljs.core.list = function() {
+ var list = null;
+ var list__0 = function() {
+ return cljs.core.List.EMPTY
+ };
+ var list__1 = function(x) {
+ return cljs.core.conj.call(null, cljs.core.List.EMPTY, x)
+ };
+ var list__2 = function(x, y) {
+ return cljs.core.conj.call(null, list.call(null, y), x)
+ };
+ var list__3 = function(x, y, z) {
+ return cljs.core.conj.call(null, list.call(null, y, z), x)
+ };
+ var list__4 = function() {
+ var G__3002__delegate = function(x, y, z, items) {
+ return cljs.core.conj.call(null, cljs.core.conj.call(null, cljs.core.conj.call(null, cljs.core.reduce.call(null, cljs.core.conj, cljs.core.List.EMPTY, cljs.core.reverse.call(null, items)), z), y), x)
+ };
+ var G__3002 = function(x, y, z, var_args) {
+ var items = null;
+ if(goog.isDef(var_args)) {
+ items = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3002__delegate.call(this, x, y, z, items)
+ };
+ G__3002.cljs$lang$maxFixedArity = 3;
+ G__3002.cljs$lang$applyTo = function(arglist__3003) {
+ var x = cljs.core.first(arglist__3003);
+ var y = cljs.core.first(cljs.core.next(arglist__3003));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3003)));
+ var items = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3003)));
+ return G__3002__delegate(x, y, z, items)
+ };
+ G__3002.cljs$lang$arity$variadic = G__3002__delegate;
+ return G__3002
+ }();
+ list = function(x, y, z, var_args) {
+ var items = var_args;
+ switch(arguments.length) {
+ case 0:
+ return list__0.call(this);
+ case 1:
+ return list__1.call(this, x);
+ case 2:
+ return list__2.call(this, x, y);
+ case 3:
+ return list__3.call(this, x, y, z);
+ default:
+ return list__4.cljs$lang$arity$variadic(x, y, z, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ list.cljs$lang$maxFixedArity = 3;
+ list.cljs$lang$applyTo = list__4.cljs$lang$applyTo;
+ list.cljs$lang$arity$0 = list__0;
+ list.cljs$lang$arity$1 = list__1;
+ list.cljs$lang$arity$2 = list__2;
+ list.cljs$lang$arity$3 = list__3;
+ list.cljs$lang$arity$variadic = list__4.cljs$lang$arity$variadic;
+ return list
+}();
+goog.provide("cljs.core.Cons");
+cljs.core.Cons = function(meta, first, rest, __hash) {
+ this.meta = meta;
+ this.first = first;
+ this.rest = rest;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 65405164
+};
+cljs.core.Cons.cljs$lang$type = true;
+cljs.core.Cons.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/Cons")
+};
+cljs.core.Cons.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/Cons")
+};
+cljs.core.Cons.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.Cons.prototype.cljs$core$INext$_next$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.rest == null) {
+ return null
+ }else {
+ return cljs.core._seq.call(null, self__.rest)
+ }
+};
+cljs.core.Cons.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ return new cljs.core.Cons(null, o, coll, self__.__hash)
+};
+cljs.core.Cons.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.Cons.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ return coll
+};
+cljs.core.Cons.prototype.cljs$core$ISeq$_first$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.first
+};
+cljs.core.Cons.prototype.cljs$core$ISeq$_rest$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.rest == null) {
+ return cljs.core.List.EMPTY
+ }else {
+ return self__.rest
+ }
+};
+cljs.core.Cons.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.Cons.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.Cons(meta__$1, self__.first, self__.rest, self__.__hash)
+};
+cljs.core.Cons.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.Cons.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.List.EMPTY, self__.meta)
+};
+cljs.core.Cons;
+cljs.core.cons = function cons(x, coll) {
+ if(function() {
+ var or__3824__auto__ = coll == null;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var G__3005 = coll;
+ if(G__3005) {
+ if(function() {
+ var or__3824__auto____$1 = G__3005.cljs$lang$protocol_mask$partition0$ & 64;
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ return G__3005.cljs$core$ISeq$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__3005.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ISeq, G__3005)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.ISeq, G__3005)
+ }
+ }
+ }()) {
+ return new cljs.core.Cons(null, x, coll, null)
+ }else {
+ return new cljs.core.Cons(null, x, cljs.core.seq.call(null, coll), null)
+ }
+};
+cljs.core.list_QMARK_ = function list_QMARK_(x) {
+ var G__3007 = x;
+ if(G__3007) {
+ if(function() {
+ var or__3824__auto__ = G__3007.cljs$lang$protocol_mask$partition0$ & 33554432;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__3007.cljs$core$IList$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__3007.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IList, G__3007)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IList, G__3007)
+ }
+};
+cljs.core.IReduce["string"] = true;
+cljs.core._reduce["string"] = function() {
+ var G__3008 = null;
+ var G__3008__2 = function(string, f) {
+ return cljs.core.ci_reduce.call(null, string, f)
+ };
+ var G__3008__3 = function(string, f, start) {
+ return cljs.core.ci_reduce.call(null, string, f, start)
+ };
+ G__3008 = function(string, f, start) {
+ switch(arguments.length) {
+ case 2:
+ return G__3008__2.call(this, string, f);
+ case 3:
+ return G__3008__3.call(this, string, f, start)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3008
+}();
+cljs.core.ILookup["string"] = true;
+cljs.core._lookup["string"] = function() {
+ var G__3009 = null;
+ var G__3009__2 = function(string, k) {
+ return cljs.core._nth.call(null, string, k)
+ };
+ var G__3009__3 = function(string, k, not_found) {
+ return cljs.core._nth.call(null, string, k, not_found)
+ };
+ G__3009 = function(string, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3009__2.call(this, string, k);
+ case 3:
+ return G__3009__3.call(this, string, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3009
+}();
+cljs.core.IIndexed["string"] = true;
+cljs.core._nth["string"] = function() {
+ var G__3010 = null;
+ var G__3010__2 = function(string, n) {
+ if(n < cljs.core._count.call(null, string)) {
+ return string.charAt(n)
+ }else {
+ return null
+ }
+ };
+ var G__3010__3 = function(string, n, not_found) {
+ if(n < cljs.core._count.call(null, string)) {
+ return string.charAt(n)
+ }else {
+ return not_found
+ }
+ };
+ G__3010 = function(string, n, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3010__2.call(this, string, n);
+ case 3:
+ return G__3010__3.call(this, string, n, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3010
+}();
+cljs.core.ICounted["string"] = true;
+cljs.core._count["string"] = function(s) {
+ return s.length
+};
+cljs.core.ISeqable["string"] = true;
+cljs.core._seq["string"] = function(string) {
+ return cljs.core.prim_seq.call(null, string, 0)
+};
+cljs.core.IHash["string"] = true;
+cljs.core._hash["string"] = function(o) {
+ return goog.string.hashCode(o)
+};
+goog.provide("cljs.core.Keyword");
+cljs.core.Keyword = function(k) {
+ this.k = k;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 1
+};
+cljs.core.Keyword.cljs$lang$type = true;
+cljs.core.Keyword.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/Keyword")
+};
+cljs.core.Keyword.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/Keyword")
+};
+cljs.core.Keyword.prototype.call = function() {
+ var G__3015 = null;
+ var G__3015__2 = function(this_sym3013, coll) {
+ var self__ = this;
+ var this_sym3013__$1 = this;
+ var _ = this_sym3013__$1;
+ if(coll == null) {
+ return null
+ }else {
+ var strobj = coll.strobj;
+ if(strobj == null) {
+ return cljs.core._lookup.call(null, coll, self__.k, null)
+ }else {
+ return strobj[self__.k]
+ }
+ }
+ };
+ var G__3015__3 = function(this_sym3014, coll, not_found) {
+ var self__ = this;
+ var this_sym3014__$1 = this;
+ var _ = this_sym3014__$1;
+ if(coll == null) {
+ return not_found
+ }else {
+ return cljs.core._lookup.call(null, coll, self__.k, not_found)
+ }
+ };
+ G__3015 = function(this_sym3014, coll, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3015__2.call(this, this_sym3014, coll);
+ case 3:
+ return G__3015__3.call(this, this_sym3014, coll, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3015
+}();
+cljs.core.Keyword.prototype.apply = function(this_sym3011, args3012) {
+ var self__ = this;
+ return this_sym3011.call.apply(this_sym3011, [this_sym3011].concat(args3012.slice()))
+};
+cljs.core.Keyword;
+String.prototype.cljs$core$IFn$ = true;
+String.prototype.call = function() {
+ var G__3020 = null;
+ var G__3020__2 = function(this_sym3018, coll) {
+ var this_sym3018__$1 = this;
+ var this$ = this_sym3018__$1;
+ return cljs.core._lookup.call(null, coll, this$.toString(), null)
+ };
+ var G__3020__3 = function(this_sym3019, coll, not_found) {
+ var this_sym3019__$1 = this;
+ var this$ = this_sym3019__$1;
+ return cljs.core._lookup.call(null, coll, this$.toString(), not_found)
+ };
+ G__3020 = function(this_sym3019, coll, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3020__2.call(this, this_sym3019, coll);
+ case 3:
+ return G__3020__3.call(this, this_sym3019, coll, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3020
+}();
+String.prototype.apply = function(this_sym3016, args3017) {
+ return this_sym3016.call.apply(this_sym3016, [this_sym3016].concat(args3017.slice()))
+};
+String.prototype.apply = function(s, args) {
+ if(cljs.core.count.call(null, args) < 2) {
+ return cljs.core._lookup.call(null, args[0], s, null)
+ }else {
+ return cljs.core._lookup.call(null, args[0], s, args[1])
+ }
+};
+cljs.core.lazy_seq_value = function lazy_seq_value(lazy_seq) {
+ var x = lazy_seq.x;
+ if(lazy_seq.realized) {
+ return x
+ }else {
+ lazy_seq.x = x.call(null);
+ lazy_seq.realized = true;
+ return lazy_seq.x
+ }
+};
+goog.provide("cljs.core.LazySeq");
+cljs.core.LazySeq = function(meta, realized, x, __hash) {
+ this.meta = meta;
+ this.realized = realized;
+ this.x = x;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 31850700
+};
+cljs.core.LazySeq.cljs$lang$type = true;
+cljs.core.LazySeq.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/LazySeq")
+};
+cljs.core.LazySeq.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/LazySeq")
+};
+cljs.core.LazySeq.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.LazySeq.prototype.cljs$core$INext$_next$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core._seq.call(null, coll.cljs$core$ISeq$_rest$arity$1(coll))
+};
+cljs.core.LazySeq.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ return cljs.core.cons.call(null, o, coll)
+};
+cljs.core.LazySeq.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.LazySeq.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.seq.call(null, cljs.core.lazy_seq_value.call(null, coll))
+};
+cljs.core.LazySeq.prototype.cljs$core$ISeq$_first$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.first.call(null, cljs.core.lazy_seq_value.call(null, coll))
+};
+cljs.core.LazySeq.prototype.cljs$core$ISeq$_rest$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.rest.call(null, cljs.core.lazy_seq_value.call(null, coll))
+};
+cljs.core.LazySeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.LazySeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.LazySeq(meta__$1, self__.realized, self__.x, self__.__hash)
+};
+cljs.core.LazySeq.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.LazySeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.List.EMPTY, self__.meta)
+};
+cljs.core.LazySeq;
+goog.provide("cljs.core.ChunkBuffer");
+cljs.core.ChunkBuffer = function(buf, end) {
+ this.buf = buf;
+ this.end = end;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 2
+};
+cljs.core.ChunkBuffer.cljs$lang$type = true;
+cljs.core.ChunkBuffer.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/ChunkBuffer")
+};
+cljs.core.ChunkBuffer.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/ChunkBuffer")
+};
+cljs.core.ChunkBuffer.prototype.cljs$core$ICounted$_count$arity$1 = function(_) {
+ var self__ = this;
+ return self__.end
+};
+cljs.core.ChunkBuffer.prototype.add = function(o) {
+ var self__ = this;
+ var _ = this;
+ self__.buf[self__.end] = o;
+ return self__.end = self__.end + 1
+};
+cljs.core.ChunkBuffer.prototype.chunk = function(o) {
+ var self__ = this;
+ var _ = this;
+ var ret = new cljs.core.ArrayChunk(self__.buf, 0, self__.end);
+ self__.buf = null;
+ return ret
+};
+cljs.core.ChunkBuffer;
+cljs.core.chunk_buffer = function chunk_buffer(capacity) {
+ return new cljs.core.ChunkBuffer(cljs.core.make_array.call(null, capacity), 0)
+};
+goog.provide("cljs.core.ArrayChunk");
+cljs.core.ArrayChunk = function(arr, off, end) {
+ this.arr = arr;
+ this.off = off;
+ this.end = end;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 524306
+};
+cljs.core.ArrayChunk.cljs$lang$type = true;
+cljs.core.ArrayChunk.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/ArrayChunk")
+};
+cljs.core.ArrayChunk.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/ArrayChunk")
+};
+cljs.core.ArrayChunk.prototype.cljs$core$IReduce$_reduce$arity$2 = function(coll, f) {
+ var self__ = this;
+ return cljs.core.array_reduce.call(null, self__.arr, f, self__.arr[self__.off], self__.off + 1)
+};
+cljs.core.ArrayChunk.prototype.cljs$core$IReduce$_reduce$arity$3 = function(coll, f, start) {
+ var self__ = this;
+ return cljs.core.array_reduce.call(null, self__.arr, f, start, self__.off)
+};
+cljs.core.ArrayChunk.prototype.cljs$core$IChunk$ = true;
+cljs.core.ArrayChunk.prototype.cljs$core$IChunk$_drop_first$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.off === self__.end) {
+ throw new Error("-drop-first of empty chunk");
+ }else {
+ return new cljs.core.ArrayChunk(self__.arr, self__.off + 1, self__.end)
+ }
+};
+cljs.core.ArrayChunk.prototype.cljs$core$IIndexed$_nth$arity$2 = function(coll, i) {
+ var self__ = this;
+ return self__.arr[self__.off + i]
+};
+cljs.core.ArrayChunk.prototype.cljs$core$IIndexed$_nth$arity$3 = function(coll, i, not_found) {
+ var self__ = this;
+ if(function() {
+ var and__3822__auto__ = i >= 0;
+ if(and__3822__auto__) {
+ return i < self__.end - self__.off
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return self__.arr[self__.off + i]
+ }else {
+ return not_found
+ }
+};
+cljs.core.ArrayChunk.prototype.cljs$core$ICounted$_count$arity$1 = function(_) {
+ var self__ = this;
+ return self__.end - self__.off
+};
+cljs.core.ArrayChunk;
+cljs.core.array_chunk = function() {
+ var array_chunk = null;
+ var array_chunk__1 = function(arr) {
+ return array_chunk.call(null, arr, 0, arr.length)
+ };
+ var array_chunk__2 = function(arr, off) {
+ return array_chunk.call(null, arr, off, arr.length)
+ };
+ var array_chunk__3 = function(arr, off, end) {
+ return new cljs.core.ArrayChunk(arr, off, end)
+ };
+ array_chunk = function(arr, off, end) {
+ switch(arguments.length) {
+ case 1:
+ return array_chunk__1.call(this, arr);
+ case 2:
+ return array_chunk__2.call(this, arr, off);
+ case 3:
+ return array_chunk__3.call(this, arr, off, end)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ array_chunk.cljs$lang$arity$1 = array_chunk__1;
+ array_chunk.cljs$lang$arity$2 = array_chunk__2;
+ array_chunk.cljs$lang$arity$3 = array_chunk__3;
+ return array_chunk
+}();
+goog.provide("cljs.core.ChunkedCons");
+cljs.core.ChunkedCons = function(chunk, more, meta, __hash) {
+ this.chunk = chunk;
+ this.more = more;
+ this.meta = meta;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition0$ = 31850604;
+ this.cljs$lang$protocol_mask$partition1$ = 1536
+};
+cljs.core.ChunkedCons.cljs$lang$type = true;
+cljs.core.ChunkedCons.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/ChunkedCons")
+};
+cljs.core.ChunkedCons.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/ChunkedCons")
+};
+cljs.core.ChunkedCons.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.ChunkedCons.prototype.cljs$core$ICollection$_conj$arity$2 = function(this$, o) {
+ var self__ = this;
+ return cljs.core.cons.call(null, o, this$)
+};
+cljs.core.ChunkedCons.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ return coll
+};
+cljs.core.ChunkedCons.prototype.cljs$core$ISeq$_first$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core._nth.call(null, self__.chunk, 0)
+};
+cljs.core.ChunkedCons.prototype.cljs$core$ISeq$_rest$arity$1 = function(coll) {
+ var self__ = this;
+ if(cljs.core._count.call(null, self__.chunk) > 1) {
+ return new cljs.core.ChunkedCons(cljs.core._drop_first.call(null, self__.chunk), self__.more, self__.meta, null)
+ }else {
+ if(self__.more == null) {
+ return cljs.core.List.EMPTY
+ }else {
+ return self__.more
+ }
+ }
+};
+cljs.core.ChunkedCons.prototype.cljs$core$IChunkedNext$_chunked_next$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.more == null) {
+ return null
+ }else {
+ return self__.more
+ }
+};
+cljs.core.ChunkedCons.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.ChunkedCons.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, m) {
+ var self__ = this;
+ return new cljs.core.ChunkedCons(self__.chunk, self__.more, m, self__.__hash)
+};
+cljs.core.ChunkedCons.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.ChunkedCons.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.List.EMPTY, self__.meta)
+};
+cljs.core.ChunkedCons.prototype.cljs$core$IChunkedSeq$_chunked_first$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.chunk
+};
+cljs.core.ChunkedCons.prototype.cljs$core$IChunkedSeq$_chunked_rest$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.more == null) {
+ return cljs.core.List.EMPTY
+ }else {
+ return self__.more
+ }
+};
+cljs.core.ChunkedCons;
+cljs.core.chunk_cons = function chunk_cons(chunk, rest) {
+ if(cljs.core._count.call(null, chunk) === 0) {
+ return rest
+ }else {
+ return new cljs.core.ChunkedCons(chunk, rest, null, null)
+ }
+};
+cljs.core.chunk_append = function chunk_append(b, x) {
+ return b.add(x)
+};
+cljs.core.chunk = function chunk(b) {
+ return b.chunk()
+};
+cljs.core.chunk_first = function chunk_first(s) {
+ return cljs.core._chunked_first.call(null, s)
+};
+cljs.core.chunk_rest = function chunk_rest(s) {
+ return cljs.core._chunked_rest.call(null, s)
+};
+cljs.core.chunk_next = function chunk_next(s) {
+ if(function() {
+ var G__3022 = s;
+ if(G__3022) {
+ if(function() {
+ var or__3824__auto__ = G__3022.cljs$lang$protocol_mask$partition1$ & 1024;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__3022.cljs$core$IChunkedNext$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__3022.cljs$lang$protocol_mask$partition1$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IChunkedNext, G__3022)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IChunkedNext, G__3022)
+ }
+ }()) {
+ return cljs.core._chunked_next.call(null, s)
+ }else {
+ return cljs.core.seq.call(null, cljs.core._chunked_rest.call(null, s))
+ }
+};
+cljs.core.to_array = function to_array(s) {
+ var ary = [];
+ var s__$1 = s;
+ while(true) {
+ if(cljs.core.seq.call(null, s__$1)) {
+ ary.push(cljs.core.first.call(null, s__$1));
+ var G__3023 = cljs.core.next.call(null, s__$1);
+ s__$1 = G__3023;
+ continue
+ }else {
+ return ary
+ }
+ break
+ }
+};
+cljs.core.to_array_2d = function to_array_2d(coll) {
+ var ret = cljs.core.make_array.call(null, cljs.core.count.call(null, coll));
+ var i = 0;
+ var xs = cljs.core.seq.call(null, coll);
+ while(true) {
+ if(xs) {
+ ret[i] = cljs.core.to_array.call(null, cljs.core.first.call(null, xs));
+ var G__3024 = i + 1;
+ var G__3025 = cljs.core.next.call(null, xs);
+ i = G__3024;
+ xs = G__3025;
+ continue
+ }else {
+ }
+ break
+ }
+ return ret
+};
+cljs.core.long_array = function() {
+ var long_array = null;
+ var long_array__1 = function(size_or_seq) {
+ if(cljs.core.number_QMARK_.call(null, size_or_seq)) {
+ return long_array.call(null, size_or_seq, null)
+ }else {
+ if(cljs.core.seq_QMARK_.call(null, size_or_seq)) {
+ return cljs.core.into_array.call(null, size_or_seq)
+ }else {
+ if("\ufdd0'else") {
+ throw new Error("long-array called with something other than size or ISeq");
+ }else {
+ return null
+ }
+ }
+ }
+ };
+ var long_array__2 = function(size, init_val_or_seq) {
+ var a = cljs.core.make_array.call(null, size);
+ if(cljs.core.seq_QMARK_.call(null, init_val_or_seq)) {
+ var s = cljs.core.seq.call(null, init_val_or_seq);
+ var i = 0;
+ var s__$1 = s;
+ while(true) {
+ if(cljs.core.truth_(function() {
+ var and__3822__auto__ = s__$1;
+ if(and__3822__auto__) {
+ return i < size
+ }else {
+ return and__3822__auto__
+ }
+ }())) {
+ a[i] = cljs.core.first.call(null, s__$1);
+ var G__3026 = i + 1;
+ var G__3027 = cljs.core.next.call(null, s__$1);
+ i = G__3026;
+ s__$1 = G__3027;
+ continue
+ }else {
+ return a
+ }
+ break
+ }
+ }else {
+ var n__2535__auto__ = size;
+ var i = 0;
+ while(true) {
+ if(i < n__2535__auto__) {
+ a[i] = init_val_or_seq;
+ var G__3028 = i + 1;
+ i = G__3028;
+ continue
+ }else {
+ }
+ break
+ }
+ return a
+ }
+ };
+ long_array = function(size, init_val_or_seq) {
+ switch(arguments.length) {
+ case 1:
+ return long_array__1.call(this, size);
+ case 2:
+ return long_array__2.call(this, size, init_val_or_seq)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ long_array.cljs$lang$arity$1 = long_array__1;
+ long_array.cljs$lang$arity$2 = long_array__2;
+ return long_array
+}();
+cljs.core.double_array = function() {
+ var double_array = null;
+ var double_array__1 = function(size_or_seq) {
+ if(cljs.core.number_QMARK_.call(null, size_or_seq)) {
+ return double_array.call(null, size_or_seq, null)
+ }else {
+ if(cljs.core.seq_QMARK_.call(null, size_or_seq)) {
+ return cljs.core.into_array.call(null, size_or_seq)
+ }else {
+ if("\ufdd0'else") {
+ throw new Error("double-array called with something other than size or ISeq");
+ }else {
+ return null
+ }
+ }
+ }
+ };
+ var double_array__2 = function(size, init_val_or_seq) {
+ var a = cljs.core.make_array.call(null, size);
+ if(cljs.core.seq_QMARK_.call(null, init_val_or_seq)) {
+ var s = cljs.core.seq.call(null, init_val_or_seq);
+ var i = 0;
+ var s__$1 = s;
+ while(true) {
+ if(cljs.core.truth_(function() {
+ var and__3822__auto__ = s__$1;
+ if(and__3822__auto__) {
+ return i < size
+ }else {
+ return and__3822__auto__
+ }
+ }())) {
+ a[i] = cljs.core.first.call(null, s__$1);
+ var G__3029 = i + 1;
+ var G__3030 = cljs.core.next.call(null, s__$1);
+ i = G__3029;
+ s__$1 = G__3030;
+ continue
+ }else {
+ return a
+ }
+ break
+ }
+ }else {
+ var n__2535__auto__ = size;
+ var i = 0;
+ while(true) {
+ if(i < n__2535__auto__) {
+ a[i] = init_val_or_seq;
+ var G__3031 = i + 1;
+ i = G__3031;
+ continue
+ }else {
+ }
+ break
+ }
+ return a
+ }
+ };
+ double_array = function(size, init_val_or_seq) {
+ switch(arguments.length) {
+ case 1:
+ return double_array__1.call(this, size);
+ case 2:
+ return double_array__2.call(this, size, init_val_or_seq)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ double_array.cljs$lang$arity$1 = double_array__1;
+ double_array.cljs$lang$arity$2 = double_array__2;
+ return double_array
+}();
+cljs.core.object_array = function() {
+ var object_array = null;
+ var object_array__1 = function(size_or_seq) {
+ if(cljs.core.number_QMARK_.call(null, size_or_seq)) {
+ return object_array.call(null, size_or_seq, null)
+ }else {
+ if(cljs.core.seq_QMARK_.call(null, size_or_seq)) {
+ return cljs.core.into_array.call(null, size_or_seq)
+ }else {
+ if("\ufdd0'else") {
+ throw new Error("object-array called with something other than size or ISeq");
+ }else {
+ return null
+ }
+ }
+ }
+ };
+ var object_array__2 = function(size, init_val_or_seq) {
+ var a = cljs.core.make_array.call(null, size);
+ if(cljs.core.seq_QMARK_.call(null, init_val_or_seq)) {
+ var s = cljs.core.seq.call(null, init_val_or_seq);
+ var i = 0;
+ var s__$1 = s;
+ while(true) {
+ if(cljs.core.truth_(function() {
+ var and__3822__auto__ = s__$1;
+ if(and__3822__auto__) {
+ return i < size
+ }else {
+ return and__3822__auto__
+ }
+ }())) {
+ a[i] = cljs.core.first.call(null, s__$1);
+ var G__3032 = i + 1;
+ var G__3033 = cljs.core.next.call(null, s__$1);
+ i = G__3032;
+ s__$1 = G__3033;
+ continue
+ }else {
+ return a
+ }
+ break
+ }
+ }else {
+ var n__2535__auto__ = size;
+ var i = 0;
+ while(true) {
+ if(i < n__2535__auto__) {
+ a[i] = init_val_or_seq;
+ var G__3034 = i + 1;
+ i = G__3034;
+ continue
+ }else {
+ }
+ break
+ }
+ return a
+ }
+ };
+ object_array = function(size, init_val_or_seq) {
+ switch(arguments.length) {
+ case 1:
+ return object_array__1.call(this, size);
+ case 2:
+ return object_array__2.call(this, size, init_val_or_seq)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ object_array.cljs$lang$arity$1 = object_array__1;
+ object_array.cljs$lang$arity$2 = object_array__2;
+ return object_array
+}();
+cljs.core.bounded_count = function bounded_count(s, n) {
+ if(cljs.core.counted_QMARK_.call(null, s)) {
+ return cljs.core.count.call(null, s)
+ }else {
+ var s__$1 = s;
+ var i = n;
+ var sum = 0;
+ while(true) {
+ if(cljs.core.truth_(function() {
+ var and__3822__auto__ = i > 0;
+ if(and__3822__auto__) {
+ return cljs.core.seq.call(null, s__$1)
+ }else {
+ return and__3822__auto__
+ }
+ }())) {
+ var G__3035 = cljs.core.next.call(null, s__$1);
+ var G__3036 = i - 1;
+ var G__3037 = sum + 1;
+ s__$1 = G__3035;
+ i = G__3036;
+ sum = G__3037;
+ continue
+ }else {
+ return sum
+ }
+ break
+ }
+ }
+};
+cljs.core.spread = function spread(arglist) {
+ if(arglist == null) {
+ return null
+ }else {
+ if(cljs.core.next.call(null, arglist) == null) {
+ return cljs.core.seq.call(null, cljs.core.first.call(null, arglist))
+ }else {
+ if("\ufdd0'else") {
+ return cljs.core.cons.call(null, cljs.core.first.call(null, arglist), spread.call(null, cljs.core.next.call(null, arglist)))
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.concat = function() {
+ var concat = null;
+ var concat__0 = function() {
+ return new cljs.core.LazySeq(null, false, function() {
+ return null
+ }, null)
+ };
+ var concat__1 = function(x) {
+ return new cljs.core.LazySeq(null, false, function() {
+ return x
+ }, null)
+ };
+ var concat__2 = function(x, y) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var s = cljs.core.seq.call(null, x);
+ if(s) {
+ if(cljs.core.chunked_seq_QMARK_.call(null, s)) {
+ return cljs.core.chunk_cons.call(null, cljs.core.chunk_first.call(null, s), concat.call(null, cljs.core.chunk_rest.call(null, s), y))
+ }else {
+ return cljs.core.cons.call(null, cljs.core.first.call(null, s), concat.call(null, cljs.core.rest.call(null, s), y))
+ }
+ }else {
+ return y
+ }
+ }, null)
+ };
+ var concat__3 = function() {
+ var G__3038__delegate = function(x, y, zs) {
+ var cat = function cat(xys, zs__$1) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var xys__$1 = cljs.core.seq.call(null, xys);
+ if(xys__$1) {
+ if(cljs.core.chunked_seq_QMARK_.call(null, xys__$1)) {
+ return cljs.core.chunk_cons.call(null, cljs.core.chunk_first.call(null, xys__$1), cat.call(null, cljs.core.chunk_rest.call(null, xys__$1), zs__$1))
+ }else {
+ return cljs.core.cons.call(null, cljs.core.first.call(null, xys__$1), cat.call(null, cljs.core.rest.call(null, xys__$1), zs__$1))
+ }
+ }else {
+ if(cljs.core.truth_(zs__$1)) {
+ return cat.call(null, cljs.core.first.call(null, zs__$1), cljs.core.next.call(null, zs__$1))
+ }else {
+ return null
+ }
+ }
+ }, null)
+ };
+ return cat.call(null, concat.call(null, x, y), zs)
+ };
+ var G__3038 = function(x, y, var_args) {
+ var zs = null;
+ if(goog.isDef(var_args)) {
+ zs = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__3038__delegate.call(this, x, y, zs)
+ };
+ G__3038.cljs$lang$maxFixedArity = 2;
+ G__3038.cljs$lang$applyTo = function(arglist__3039) {
+ var x = cljs.core.first(arglist__3039);
+ var y = cljs.core.first(cljs.core.next(arglist__3039));
+ var zs = cljs.core.rest(cljs.core.next(arglist__3039));
+ return G__3038__delegate(x, y, zs)
+ };
+ G__3038.cljs$lang$arity$variadic = G__3038__delegate;
+ return G__3038
+ }();
+ concat = function(x, y, var_args) {
+ var zs = var_args;
+ switch(arguments.length) {
+ case 0:
+ return concat__0.call(this);
+ case 1:
+ return concat__1.call(this, x);
+ case 2:
+ return concat__2.call(this, x, y);
+ default:
+ return concat__3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ concat.cljs$lang$maxFixedArity = 2;
+ concat.cljs$lang$applyTo = concat__3.cljs$lang$applyTo;
+ concat.cljs$lang$arity$0 = concat__0;
+ concat.cljs$lang$arity$1 = concat__1;
+ concat.cljs$lang$arity$2 = concat__2;
+ concat.cljs$lang$arity$variadic = concat__3.cljs$lang$arity$variadic;
+ return concat
+}();
+cljs.core.list_STAR_ = function() {
+ var list_STAR_ = null;
+ var list_STAR___1 = function(args) {
+ return cljs.core.seq.call(null, args)
+ };
+ var list_STAR___2 = function(a, args) {
+ return cljs.core.cons.call(null, a, args)
+ };
+ var list_STAR___3 = function(a, b, args) {
+ return cljs.core.cons.call(null, a, cljs.core.cons.call(null, b, args))
+ };
+ var list_STAR___4 = function(a, b, c, args) {
+ return cljs.core.cons.call(null, a, cljs.core.cons.call(null, b, cljs.core.cons.call(null, c, args)))
+ };
+ var list_STAR___5 = function() {
+ var G__3040__delegate = function(a, b, c, d, more) {
+ return cljs.core.cons.call(null, a, cljs.core.cons.call(null, b, cljs.core.cons.call(null, c, cljs.core.cons.call(null, d, cljs.core.spread.call(null, more)))))
+ };
+ var G__3040 = function(a, b, c, d, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 4), 0)
+ }
+ return G__3040__delegate.call(this, a, b, c, d, more)
+ };
+ G__3040.cljs$lang$maxFixedArity = 4;
+ G__3040.cljs$lang$applyTo = function(arglist__3041) {
+ var a = cljs.core.first(arglist__3041);
+ var b = cljs.core.first(cljs.core.next(arglist__3041));
+ var c = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3041)));
+ var d = cljs.core.first(cljs.core.next(cljs.core.next(cljs.core.next(arglist__3041))));
+ var more = cljs.core.rest(cljs.core.next(cljs.core.next(cljs.core.next(arglist__3041))));
+ return G__3040__delegate(a, b, c, d, more)
+ };
+ G__3040.cljs$lang$arity$variadic = G__3040__delegate;
+ return G__3040
+ }();
+ list_STAR_ = function(a, b, c, d, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 1:
+ return list_STAR___1.call(this, a);
+ case 2:
+ return list_STAR___2.call(this, a, b);
+ case 3:
+ return list_STAR___3.call(this, a, b, c);
+ case 4:
+ return list_STAR___4.call(this, a, b, c, d);
+ default:
+ return list_STAR___5.cljs$lang$arity$variadic(a, b, c, d, cljs.core.array_seq(arguments, 4))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ list_STAR_.cljs$lang$maxFixedArity = 4;
+ list_STAR_.cljs$lang$applyTo = list_STAR___5.cljs$lang$applyTo;
+ list_STAR_.cljs$lang$arity$1 = list_STAR___1;
+ list_STAR_.cljs$lang$arity$2 = list_STAR___2;
+ list_STAR_.cljs$lang$arity$3 = list_STAR___3;
+ list_STAR_.cljs$lang$arity$4 = list_STAR___4;
+ list_STAR_.cljs$lang$arity$variadic = list_STAR___5.cljs$lang$arity$variadic;
+ return list_STAR_
+}();
+cljs.core.transient$ = function transient$(coll) {
+ return cljs.core._as_transient.call(null, coll)
+};
+cljs.core.persistent_BANG_ = function persistent_BANG_(tcoll) {
+ return cljs.core._persistent_BANG_.call(null, tcoll)
+};
+cljs.core.conj_BANG_ = function conj_BANG_(tcoll, val) {
+ return cljs.core._conj_BANG_.call(null, tcoll, val)
+};
+cljs.core.assoc_BANG_ = function assoc_BANG_(tcoll, key, val) {
+ return cljs.core._assoc_BANG_.call(null, tcoll, key, val)
+};
+cljs.core.dissoc_BANG_ = function dissoc_BANG_(tcoll, key) {
+ return cljs.core._dissoc_BANG_.call(null, tcoll, key)
+};
+cljs.core.pop_BANG_ = function pop_BANG_(tcoll) {
+ return cljs.core._pop_BANG_.call(null, tcoll)
+};
+cljs.core.disj_BANG_ = function disj_BANG_(tcoll, val) {
+ return cljs.core._disjoin_BANG_.call(null, tcoll, val)
+};
+cljs.core.apply_to = function apply_to(f, argc, args) {
+ var args__$1 = cljs.core.seq.call(null, args);
+ if(argc === 0) {
+ return f.call(null)
+ }else {
+ var a = cljs.core._first.call(null, args__$1);
+ var args__$2 = cljs.core._rest.call(null, args__$1);
+ if(argc === 1) {
+ if(f.cljs$lang$arity$1) {
+ return f.cljs$lang$arity$1(a)
+ }else {
+ return f.call(null, a)
+ }
+ }else {
+ var b = cljs.core._first.call(null, args__$2);
+ var args__$3 = cljs.core._rest.call(null, args__$2);
+ if(argc === 2) {
+ if(f.cljs$lang$arity$2) {
+ return f.cljs$lang$arity$2(a, b)
+ }else {
+ return f.call(null, a, b)
+ }
+ }else {
+ var c = cljs.core._first.call(null, args__$3);
+ var args__$4 = cljs.core._rest.call(null, args__$3);
+ if(argc === 3) {
+ if(f.cljs$lang$arity$3) {
+ return f.cljs$lang$arity$3(a, b, c)
+ }else {
+ return f.call(null, a, b, c)
+ }
+ }else {
+ var d = cljs.core._first.call(null, args__$4);
+ var args__$5 = cljs.core._rest.call(null, args__$4);
+ if(argc === 4) {
+ if(f.cljs$lang$arity$4) {
+ return f.cljs$lang$arity$4(a, b, c, d)
+ }else {
+ return f.call(null, a, b, c, d)
+ }
+ }else {
+ var e = cljs.core._first.call(null, args__$5);
+ var args__$6 = cljs.core._rest.call(null, args__$5);
+ if(argc === 5) {
+ if(f.cljs$lang$arity$5) {
+ return f.cljs$lang$arity$5(a, b, c, d, e)
+ }else {
+ return f.call(null, a, b, c, d, e)
+ }
+ }else {
+ var f__$1 = cljs.core._first.call(null, args__$6);
+ var args__$7 = cljs.core._rest.call(null, args__$6);
+ if(argc === 6) {
+ if(f__$1.cljs$lang$arity$6) {
+ return f__$1.cljs$lang$arity$6(a, b, c, d, e, f__$1)
+ }else {
+ return f__$1.call(null, a, b, c, d, e, f__$1)
+ }
+ }else {
+ var g = cljs.core._first.call(null, args__$7);
+ var args__$8 = cljs.core._rest.call(null, args__$7);
+ if(argc === 7) {
+ if(f__$1.cljs$lang$arity$7) {
+ return f__$1.cljs$lang$arity$7(a, b, c, d, e, f__$1, g)
+ }else {
+ return f__$1.call(null, a, b, c, d, e, f__$1, g)
+ }
+ }else {
+ var h = cljs.core._first.call(null, args__$8);
+ var args__$9 = cljs.core._rest.call(null, args__$8);
+ if(argc === 8) {
+ if(f__$1.cljs$lang$arity$8) {
+ return f__$1.cljs$lang$arity$8(a, b, c, d, e, f__$1, g, h)
+ }else {
+ return f__$1.call(null, a, b, c, d, e, f__$1, g, h)
+ }
+ }else {
+ var i = cljs.core._first.call(null, args__$9);
+ var args__$10 = cljs.core._rest.call(null, args__$9);
+ if(argc === 9) {
+ if(f__$1.cljs$lang$arity$9) {
+ return f__$1.cljs$lang$arity$9(a, b, c, d, e, f__$1, g, h, i)
+ }else {
+ return f__$1.call(null, a, b, c, d, e, f__$1, g, h, i)
+ }
+ }else {
+ var j = cljs.core._first.call(null, args__$10);
+ var args__$11 = cljs.core._rest.call(null, args__$10);
+ if(argc === 10) {
+ if(f__$1.cljs$lang$arity$10) {
+ return f__$1.cljs$lang$arity$10(a, b, c, d, e, f__$1, g, h, i, j)
+ }else {
+ return f__$1.call(null, a, b, c, d, e, f__$1, g, h, i, j)
+ }
+ }else {
+ var k = cljs.core._first.call(null, args__$11);
+ var args__$12 = cljs.core._rest.call(null, args__$11);
+ if(argc === 11) {
+ if(f__$1.cljs$lang$arity$11) {
+ return f__$1.cljs$lang$arity$11(a, b, c, d, e, f__$1, g, h, i, j, k)
+ }else {
+ return f__$1.call(null, a, b, c, d, e, f__$1, g, h, i, j, k)
+ }
+ }else {
+ var l = cljs.core._first.call(null, args__$12);
+ var args__$13 = cljs.core._rest.call(null, args__$12);
+ if(argc === 12) {
+ if(f__$1.cljs$lang$arity$12) {
+ return f__$1.cljs$lang$arity$12(a, b, c, d, e, f__$1, g, h, i, j, k, l)
+ }else {
+ return f__$1.call(null, a, b, c, d, e, f__$1, g, h, i, j, k, l)
+ }
+ }else {
+ var m = cljs.core._first.call(null, args__$13);
+ var args__$14 = cljs.core._rest.call(null, args__$13);
+ if(argc === 13) {
+ if(f__$1.cljs$lang$arity$13) {
+ return f__$1.cljs$lang$arity$13(a, b, c, d, e, f__$1, g, h, i, j, k, l, m)
+ }else {
+ return f__$1.call(null, a, b, c, d, e, f__$1, g, h, i, j, k, l, m)
+ }
+ }else {
+ var n = cljs.core._first.call(null, args__$14);
+ var args__$15 = cljs.core._rest.call(null, args__$14);
+ if(argc === 14) {
+ if(f__$1.cljs$lang$arity$14) {
+ return f__$1.cljs$lang$arity$14(a, b, c, d, e, f__$1, g, h, i, j, k, l, m, n)
+ }else {
+ return f__$1.call(null, a, b, c, d, e, f__$1, g, h, i, j, k, l, m, n)
+ }
+ }else {
+ var o = cljs.core._first.call(null, args__$15);
+ var args__$16 = cljs.core._rest.call(null, args__$15);
+ if(argc === 15) {
+ if(f__$1.cljs$lang$arity$15) {
+ return f__$1.cljs$lang$arity$15(a, b, c, d, e, f__$1, g, h, i, j, k, l, m, n, o)
+ }else {
+ return f__$1.call(null, a, b, c, d, e, f__$1, g, h, i, j, k, l, m, n, o)
+ }
+ }else {
+ var p = cljs.core._first.call(null, args__$16);
+ var args__$17 = cljs.core._rest.call(null, args__$16);
+ if(argc === 16) {
+ if(f__$1.cljs$lang$arity$16) {
+ return f__$1.cljs$lang$arity$16(a, b, c, d, e, f__$1, g, h, i, j, k, l, m, n, o, p)
+ }else {
+ return f__$1.call(null, a, b, c, d, e, f__$1, g, h, i, j, k, l, m, n, o, p)
+ }
+ }else {
+ var q = cljs.core._first.call(null, args__$17);
+ var args__$18 = cljs.core._rest.call(null, args__$17);
+ if(argc === 17) {
+ if(f__$1.cljs$lang$arity$17) {
+ return f__$1.cljs$lang$arity$17(a, b, c, d, e, f__$1, g, h, i, j, k, l, m, n, o, p, q)
+ }else {
+ return f__$1.call(null, a, b, c, d, e, f__$1, g, h, i, j, k, l, m, n, o, p, q)
+ }
+ }else {
+ var r = cljs.core._first.call(null, args__$18);
+ var args__$19 = cljs.core._rest.call(null, args__$18);
+ if(argc === 18) {
+ if(f__$1.cljs$lang$arity$18) {
+ return f__$1.cljs$lang$arity$18(a, b, c, d, e, f__$1, g, h, i, j, k, l, m, n, o, p, q, r)
+ }else {
+ return f__$1.call(null, a, b, c, d, e, f__$1, g, h, i, j, k, l, m, n, o, p, q, r)
+ }
+ }else {
+ var s = cljs.core._first.call(null, args__$19);
+ var args__$20 = cljs.core._rest.call(null, args__$19);
+ if(argc === 19) {
+ if(f__$1.cljs$lang$arity$19) {
+ return f__$1.cljs$lang$arity$19(a, b, c, d, e, f__$1, g, h, i, j, k, l, m, n, o, p, q, r, s)
+ }else {
+ return f__$1.call(null, a, b, c, d, e, f__$1, g, h, i, j, k, l, m, n, o, p, q, r, s)
+ }
+ }else {
+ var t = cljs.core._first.call(null, args__$20);
+ var args__$21 = cljs.core._rest.call(null, args__$20);
+ if(argc === 20) {
+ if(f__$1.cljs$lang$arity$20) {
+ return f__$1.cljs$lang$arity$20(a, b, c, d, e, f__$1, g, h, i, j, k, l, m, n, o, p, q, r, s, t)
+ }else {
+ return f__$1.call(null, a, b, c, d, e, f__$1, g, h, i, j, k, l, m, n, o, p, q, r, s, t)
+ }
+ }else {
+ throw new Error("Only up to 20 arguments supported on functions");
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+};
+cljs.core.apply = function() {
+ var apply = null;
+ var apply__2 = function(f, args) {
+ var fixed_arity = f.cljs$lang$maxFixedArity;
+ if(f.cljs$lang$applyTo) {
+ var bc = cljs.core.bounded_count.call(null, args, fixed_arity + 1);
+ if(bc <= fixed_arity) {
+ return cljs.core.apply_to.call(null, f, bc, args)
+ }else {
+ return f.cljs$lang$applyTo(args)
+ }
+ }else {
+ return f.apply(f, cljs.core.to_array.call(null, args))
+ }
+ };
+ var apply__3 = function(f, x, args) {
+ var arglist = cljs.core.list_STAR_.call(null, x, args);
+ var fixed_arity = f.cljs$lang$maxFixedArity;
+ if(f.cljs$lang$applyTo) {
+ var bc = cljs.core.bounded_count.call(null, arglist, fixed_arity + 1);
+ if(bc <= fixed_arity) {
+ return cljs.core.apply_to.call(null, f, bc, arglist)
+ }else {
+ return f.cljs$lang$applyTo(arglist)
+ }
+ }else {
+ return f.apply(f, cljs.core.to_array.call(null, arglist))
+ }
+ };
+ var apply__4 = function(f, x, y, args) {
+ var arglist = cljs.core.list_STAR_.call(null, x, y, args);
+ var fixed_arity = f.cljs$lang$maxFixedArity;
+ if(f.cljs$lang$applyTo) {
+ var bc = cljs.core.bounded_count.call(null, arglist, fixed_arity + 1);
+ if(bc <= fixed_arity) {
+ return cljs.core.apply_to.call(null, f, bc, arglist)
+ }else {
+ return f.cljs$lang$applyTo(arglist)
+ }
+ }else {
+ return f.apply(f, cljs.core.to_array.call(null, arglist))
+ }
+ };
+ var apply__5 = function(f, x, y, z, args) {
+ var arglist = cljs.core.list_STAR_.call(null, x, y, z, args);
+ var fixed_arity = f.cljs$lang$maxFixedArity;
+ if(f.cljs$lang$applyTo) {
+ var bc = cljs.core.bounded_count.call(null, arglist, fixed_arity + 1);
+ if(bc <= fixed_arity) {
+ return cljs.core.apply_to.call(null, f, bc, arglist)
+ }else {
+ return f.cljs$lang$applyTo(arglist)
+ }
+ }else {
+ return f.apply(f, cljs.core.to_array.call(null, arglist))
+ }
+ };
+ var apply__6 = function() {
+ var G__3042__delegate = function(f, a, b, c, d, args) {
+ var arglist = cljs.core.cons.call(null, a, cljs.core.cons.call(null, b, cljs.core.cons.call(null, c, cljs.core.cons.call(null, d, cljs.core.spread.call(null, args)))));
+ var fixed_arity = f.cljs$lang$maxFixedArity;
+ if(f.cljs$lang$applyTo) {
+ var bc = cljs.core.bounded_count.call(null, arglist, fixed_arity + 1);
+ if(bc <= fixed_arity) {
+ return cljs.core.apply_to.call(null, f, bc, arglist)
+ }else {
+ return f.cljs$lang$applyTo(arglist)
+ }
+ }else {
+ return f.apply(f, cljs.core.to_array.call(null, arglist))
+ }
+ };
+ var G__3042 = function(f, a, b, c, d, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 5), 0)
+ }
+ return G__3042__delegate.call(this, f, a, b, c, d, args)
+ };
+ G__3042.cljs$lang$maxFixedArity = 5;
+ G__3042.cljs$lang$applyTo = function(arglist__3043) {
+ var f = cljs.core.first(arglist__3043);
+ var a = cljs.core.first(cljs.core.next(arglist__3043));
+ var b = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3043)));
+ var c = cljs.core.first(cljs.core.next(cljs.core.next(cljs.core.next(arglist__3043))));
+ var d = cljs.core.first(cljs.core.next(cljs.core.next(cljs.core.next(cljs.core.next(arglist__3043)))));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(cljs.core.next(cljs.core.next(arglist__3043)))));
+ return G__3042__delegate(f, a, b, c, d, args)
+ };
+ G__3042.cljs$lang$arity$variadic = G__3042__delegate;
+ return G__3042
+ }();
+ apply = function(f, a, b, c, d, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 2:
+ return apply__2.call(this, f, a);
+ case 3:
+ return apply__3.call(this, f, a, b);
+ case 4:
+ return apply__4.call(this, f, a, b, c);
+ case 5:
+ return apply__5.call(this, f, a, b, c, d);
+ default:
+ return apply__6.cljs$lang$arity$variadic(f, a, b, c, d, cljs.core.array_seq(arguments, 5))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ apply.cljs$lang$maxFixedArity = 5;
+ apply.cljs$lang$applyTo = apply__6.cljs$lang$applyTo;
+ apply.cljs$lang$arity$2 = apply__2;
+ apply.cljs$lang$arity$3 = apply__3;
+ apply.cljs$lang$arity$4 = apply__4;
+ apply.cljs$lang$arity$5 = apply__5;
+ apply.cljs$lang$arity$variadic = apply__6.cljs$lang$arity$variadic;
+ return apply
+}();
+cljs.core.vary_meta = function() {
+ var vary_meta__delegate = function(obj, f, args) {
+ return cljs.core.with_meta.call(null, obj, cljs.core.apply.call(null, f, cljs.core.meta.call(null, obj), args))
+ };
+ var vary_meta = function(obj, f, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return vary_meta__delegate.call(this, obj, f, args)
+ };
+ vary_meta.cljs$lang$maxFixedArity = 2;
+ vary_meta.cljs$lang$applyTo = function(arglist__3044) {
+ var obj = cljs.core.first(arglist__3044);
+ var f = cljs.core.first(cljs.core.next(arglist__3044));
+ var args = cljs.core.rest(cljs.core.next(arglist__3044));
+ return vary_meta__delegate(obj, f, args)
+ };
+ vary_meta.cljs$lang$arity$variadic = vary_meta__delegate;
+ return vary_meta
+}();
+cljs.core.not_EQ_ = function() {
+ var not_EQ_ = null;
+ var not_EQ___1 = function(x) {
+ return false
+ };
+ var not_EQ___2 = function(x, y) {
+ return!cljs.core._EQ_.call(null, x, y)
+ };
+ var not_EQ___3 = function() {
+ var G__3045__delegate = function(x, y, more) {
+ return cljs.core.not.call(null, cljs.core.apply.call(null, cljs.core._EQ_, x, y, more))
+ };
+ var G__3045 = function(x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__3045__delegate.call(this, x, y, more)
+ };
+ G__3045.cljs$lang$maxFixedArity = 2;
+ G__3045.cljs$lang$applyTo = function(arglist__3046) {
+ var x = cljs.core.first(arglist__3046);
+ var y = cljs.core.first(cljs.core.next(arglist__3046));
+ var more = cljs.core.rest(cljs.core.next(arglist__3046));
+ return G__3045__delegate(x, y, more)
+ };
+ G__3045.cljs$lang$arity$variadic = G__3045__delegate;
+ return G__3045
+ }();
+ not_EQ_ = function(x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 1:
+ return not_EQ___1.call(this, x);
+ case 2:
+ return not_EQ___2.call(this, x, y);
+ default:
+ return not_EQ___3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ not_EQ_.cljs$lang$maxFixedArity = 2;
+ not_EQ_.cljs$lang$applyTo = not_EQ___3.cljs$lang$applyTo;
+ not_EQ_.cljs$lang$arity$1 = not_EQ___1;
+ not_EQ_.cljs$lang$arity$2 = not_EQ___2;
+ not_EQ_.cljs$lang$arity$variadic = not_EQ___3.cljs$lang$arity$variadic;
+ return not_EQ_
+}();
+cljs.core.not_empty = function not_empty(coll) {
+ if(cljs.core.seq.call(null, coll)) {
+ return coll
+ }else {
+ return null
+ }
+};
+cljs.core.every_QMARK_ = function every_QMARK_(pred, coll) {
+ while(true) {
+ if(cljs.core.seq.call(null, coll) == null) {
+ return true
+ }else {
+ if(cljs.core.truth_(pred.call(null, cljs.core.first.call(null, coll)))) {
+ var G__3047 = pred;
+ var G__3048 = cljs.core.next.call(null, coll);
+ pred = G__3047;
+ coll = G__3048;
+ continue
+ }else {
+ if("\ufdd0'else") {
+ return false
+ }else {
+ return null
+ }
+ }
+ }
+ break
+ }
+};
+cljs.core.not_every_QMARK_ = function not_every_QMARK_(pred, coll) {
+ return!cljs.core.every_QMARK_.call(null, pred, coll)
+};
+cljs.core.some = function some(pred, coll) {
+ while(true) {
+ if(cljs.core.seq.call(null, coll)) {
+ var or__3824__auto__ = pred.call(null, cljs.core.first.call(null, coll));
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ var G__3049 = pred;
+ var G__3050 = cljs.core.next.call(null, coll);
+ pred = G__3049;
+ coll = G__3050;
+ continue
+ }
+ }else {
+ return null
+ }
+ break
+ }
+};
+cljs.core.not_any_QMARK_ = function not_any_QMARK_(pred, coll) {
+ return cljs.core.not.call(null, cljs.core.some.call(null, pred, coll))
+};
+cljs.core.even_QMARK_ = function even_QMARK_(n) {
+ if(cljs.core.integer_QMARK_.call(null, n)) {
+ return(n & 1) === 0
+ }else {
+ throw new Error([cljs.core.str("Argument must be an integer: "), cljs.core.str(n)].join(""));
+ }
+};
+cljs.core.odd_QMARK_ = function odd_QMARK_(n) {
+ return!cljs.core.even_QMARK_.call(null, n)
+};
+cljs.core.identity = function identity(x) {
+ return x
+};
+cljs.core.complement = function complement(f) {
+ return function() {
+ var G__3051 = null;
+ var G__3051__0 = function() {
+ return cljs.core.not.call(null, f.call(null))
+ };
+ var G__3051__1 = function(x) {
+ return cljs.core.not.call(null, f.call(null, x))
+ };
+ var G__3051__2 = function(x, y) {
+ return cljs.core.not.call(null, f.call(null, x, y))
+ };
+ var G__3051__3 = function() {
+ var G__3052__delegate = function(x, y, zs) {
+ return cljs.core.not.call(null, cljs.core.apply.call(null, f, x, y, zs))
+ };
+ var G__3052 = function(x, y, var_args) {
+ var zs = null;
+ if(goog.isDef(var_args)) {
+ zs = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__3052__delegate.call(this, x, y, zs)
+ };
+ G__3052.cljs$lang$maxFixedArity = 2;
+ G__3052.cljs$lang$applyTo = function(arglist__3053) {
+ var x = cljs.core.first(arglist__3053);
+ var y = cljs.core.first(cljs.core.next(arglist__3053));
+ var zs = cljs.core.rest(cljs.core.next(arglist__3053));
+ return G__3052__delegate(x, y, zs)
+ };
+ G__3052.cljs$lang$arity$variadic = G__3052__delegate;
+ return G__3052
+ }();
+ G__3051 = function(x, y, var_args) {
+ var zs = var_args;
+ switch(arguments.length) {
+ case 0:
+ return G__3051__0.call(this);
+ case 1:
+ return G__3051__1.call(this, x);
+ case 2:
+ return G__3051__2.call(this, x, y);
+ default:
+ return G__3051__3.cljs$lang$arity$variadic(x, y, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ G__3051.cljs$lang$maxFixedArity = 2;
+ G__3051.cljs$lang$applyTo = G__3051__3.cljs$lang$applyTo;
+ return G__3051
+ }()
+};
+cljs.core.constantly = function constantly(x) {
+ return function() {
+ var G__3054__delegate = function(args) {
+ return x
+ };
+ var G__3054 = function(var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return G__3054__delegate.call(this, args)
+ };
+ G__3054.cljs$lang$maxFixedArity = 0;
+ G__3054.cljs$lang$applyTo = function(arglist__3055) {
+ var args = cljs.core.seq(arglist__3055);
+ return G__3054__delegate(args)
+ };
+ G__3054.cljs$lang$arity$variadic = G__3054__delegate;
+ return G__3054
+ }()
+};
+cljs.core.comp = function() {
+ var comp = null;
+ var comp__0 = function() {
+ return cljs.core.identity
+ };
+ var comp__1 = function(f) {
+ return f
+ };
+ var comp__2 = function(f, g) {
+ return function() {
+ var G__3056 = null;
+ var G__3056__0 = function() {
+ return f.call(null, g.call(null))
+ };
+ var G__3056__1 = function(x) {
+ return f.call(null, g.call(null, x))
+ };
+ var G__3056__2 = function(x, y) {
+ return f.call(null, g.call(null, x, y))
+ };
+ var G__3056__3 = function(x, y, z) {
+ return f.call(null, g.call(null, x, y, z))
+ };
+ var G__3056__4 = function() {
+ var G__3057__delegate = function(x, y, z, args) {
+ return f.call(null, cljs.core.apply.call(null, g, x, y, z, args))
+ };
+ var G__3057 = function(x, y, z, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3057__delegate.call(this, x, y, z, args)
+ };
+ G__3057.cljs$lang$maxFixedArity = 3;
+ G__3057.cljs$lang$applyTo = function(arglist__3058) {
+ var x = cljs.core.first(arglist__3058);
+ var y = cljs.core.first(cljs.core.next(arglist__3058));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3058)));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3058)));
+ return G__3057__delegate(x, y, z, args)
+ };
+ G__3057.cljs$lang$arity$variadic = G__3057__delegate;
+ return G__3057
+ }();
+ G__3056 = function(x, y, z, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 0:
+ return G__3056__0.call(this);
+ case 1:
+ return G__3056__1.call(this, x);
+ case 2:
+ return G__3056__2.call(this, x, y);
+ case 3:
+ return G__3056__3.call(this, x, y, z);
+ default:
+ return G__3056__4.cljs$lang$arity$variadic(x, y, z, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ G__3056.cljs$lang$maxFixedArity = 3;
+ G__3056.cljs$lang$applyTo = G__3056__4.cljs$lang$applyTo;
+ return G__3056
+ }()
+ };
+ var comp__3 = function(f, g, h) {
+ return function() {
+ var G__3059 = null;
+ var G__3059__0 = function() {
+ return f.call(null, g.call(null, h.call(null)))
+ };
+ var G__3059__1 = function(x) {
+ return f.call(null, g.call(null, h.call(null, x)))
+ };
+ var G__3059__2 = function(x, y) {
+ return f.call(null, g.call(null, h.call(null, x, y)))
+ };
+ var G__3059__3 = function(x, y, z) {
+ return f.call(null, g.call(null, h.call(null, x, y, z)))
+ };
+ var G__3059__4 = function() {
+ var G__3060__delegate = function(x, y, z, args) {
+ return f.call(null, g.call(null, cljs.core.apply.call(null, h, x, y, z, args)))
+ };
+ var G__3060 = function(x, y, z, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3060__delegate.call(this, x, y, z, args)
+ };
+ G__3060.cljs$lang$maxFixedArity = 3;
+ G__3060.cljs$lang$applyTo = function(arglist__3061) {
+ var x = cljs.core.first(arglist__3061);
+ var y = cljs.core.first(cljs.core.next(arglist__3061));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3061)));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3061)));
+ return G__3060__delegate(x, y, z, args)
+ };
+ G__3060.cljs$lang$arity$variadic = G__3060__delegate;
+ return G__3060
+ }();
+ G__3059 = function(x, y, z, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 0:
+ return G__3059__0.call(this);
+ case 1:
+ return G__3059__1.call(this, x);
+ case 2:
+ return G__3059__2.call(this, x, y);
+ case 3:
+ return G__3059__3.call(this, x, y, z);
+ default:
+ return G__3059__4.cljs$lang$arity$variadic(x, y, z, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ G__3059.cljs$lang$maxFixedArity = 3;
+ G__3059.cljs$lang$applyTo = G__3059__4.cljs$lang$applyTo;
+ return G__3059
+ }()
+ };
+ var comp__4 = function() {
+ var G__3062__delegate = function(f1, f2, f3, fs) {
+ var fs__$1 = cljs.core.reverse.call(null, cljs.core.list_STAR_.call(null, f1, f2, f3, fs));
+ return function() {
+ var G__3063__delegate = function(args) {
+ var ret = cljs.core.apply.call(null, cljs.core.first.call(null, fs__$1), args);
+ var fs__$2 = cljs.core.next.call(null, fs__$1);
+ while(true) {
+ if(fs__$2) {
+ var G__3064 = cljs.core.first.call(null, fs__$2).call(null, ret);
+ var G__3065 = cljs.core.next.call(null, fs__$2);
+ ret = G__3064;
+ fs__$2 = G__3065;
+ continue
+ }else {
+ return ret
+ }
+ break
+ }
+ };
+ var G__3063 = function(var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return G__3063__delegate.call(this, args)
+ };
+ G__3063.cljs$lang$maxFixedArity = 0;
+ G__3063.cljs$lang$applyTo = function(arglist__3066) {
+ var args = cljs.core.seq(arglist__3066);
+ return G__3063__delegate(args)
+ };
+ G__3063.cljs$lang$arity$variadic = G__3063__delegate;
+ return G__3063
+ }()
+ };
+ var G__3062 = function(f1, f2, f3, var_args) {
+ var fs = null;
+ if(goog.isDef(var_args)) {
+ fs = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3062__delegate.call(this, f1, f2, f3, fs)
+ };
+ G__3062.cljs$lang$maxFixedArity = 3;
+ G__3062.cljs$lang$applyTo = function(arglist__3067) {
+ var f1 = cljs.core.first(arglist__3067);
+ var f2 = cljs.core.first(cljs.core.next(arglist__3067));
+ var f3 = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3067)));
+ var fs = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3067)));
+ return G__3062__delegate(f1, f2, f3, fs)
+ };
+ G__3062.cljs$lang$arity$variadic = G__3062__delegate;
+ return G__3062
+ }();
+ comp = function(f1, f2, f3, var_args) {
+ var fs = var_args;
+ switch(arguments.length) {
+ case 0:
+ return comp__0.call(this);
+ case 1:
+ return comp__1.call(this, f1);
+ case 2:
+ return comp__2.call(this, f1, f2);
+ case 3:
+ return comp__3.call(this, f1, f2, f3);
+ default:
+ return comp__4.cljs$lang$arity$variadic(f1, f2, f3, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ comp.cljs$lang$maxFixedArity = 3;
+ comp.cljs$lang$applyTo = comp__4.cljs$lang$applyTo;
+ comp.cljs$lang$arity$0 = comp__0;
+ comp.cljs$lang$arity$1 = comp__1;
+ comp.cljs$lang$arity$2 = comp__2;
+ comp.cljs$lang$arity$3 = comp__3;
+ comp.cljs$lang$arity$variadic = comp__4.cljs$lang$arity$variadic;
+ return comp
+}();
+cljs.core.partial = function() {
+ var partial = null;
+ var partial__2 = function(f, arg1) {
+ return function() {
+ var G__3068__delegate = function(args) {
+ return cljs.core.apply.call(null, f, arg1, args)
+ };
+ var G__3068 = function(var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return G__3068__delegate.call(this, args)
+ };
+ G__3068.cljs$lang$maxFixedArity = 0;
+ G__3068.cljs$lang$applyTo = function(arglist__3069) {
+ var args = cljs.core.seq(arglist__3069);
+ return G__3068__delegate(args)
+ };
+ G__3068.cljs$lang$arity$variadic = G__3068__delegate;
+ return G__3068
+ }()
+ };
+ var partial__3 = function(f, arg1, arg2) {
+ return function() {
+ var G__3070__delegate = function(args) {
+ return cljs.core.apply.call(null, f, arg1, arg2, args)
+ };
+ var G__3070 = function(var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return G__3070__delegate.call(this, args)
+ };
+ G__3070.cljs$lang$maxFixedArity = 0;
+ G__3070.cljs$lang$applyTo = function(arglist__3071) {
+ var args = cljs.core.seq(arglist__3071);
+ return G__3070__delegate(args)
+ };
+ G__3070.cljs$lang$arity$variadic = G__3070__delegate;
+ return G__3070
+ }()
+ };
+ var partial__4 = function(f, arg1, arg2, arg3) {
+ return function() {
+ var G__3072__delegate = function(args) {
+ return cljs.core.apply.call(null, f, arg1, arg2, arg3, args)
+ };
+ var G__3072 = function(var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return G__3072__delegate.call(this, args)
+ };
+ G__3072.cljs$lang$maxFixedArity = 0;
+ G__3072.cljs$lang$applyTo = function(arglist__3073) {
+ var args = cljs.core.seq(arglist__3073);
+ return G__3072__delegate(args)
+ };
+ G__3072.cljs$lang$arity$variadic = G__3072__delegate;
+ return G__3072
+ }()
+ };
+ var partial__5 = function() {
+ var G__3074__delegate = function(f, arg1, arg2, arg3, more) {
+ return function() {
+ var G__3075__delegate = function(args) {
+ return cljs.core.apply.call(null, f, arg1, arg2, arg3, cljs.core.concat.call(null, more, args))
+ };
+ var G__3075 = function(var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return G__3075__delegate.call(this, args)
+ };
+ G__3075.cljs$lang$maxFixedArity = 0;
+ G__3075.cljs$lang$applyTo = function(arglist__3076) {
+ var args = cljs.core.seq(arglist__3076);
+ return G__3075__delegate(args)
+ };
+ G__3075.cljs$lang$arity$variadic = G__3075__delegate;
+ return G__3075
+ }()
+ };
+ var G__3074 = function(f, arg1, arg2, arg3, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 4), 0)
+ }
+ return G__3074__delegate.call(this, f, arg1, arg2, arg3, more)
+ };
+ G__3074.cljs$lang$maxFixedArity = 4;
+ G__3074.cljs$lang$applyTo = function(arglist__3077) {
+ var f = cljs.core.first(arglist__3077);
+ var arg1 = cljs.core.first(cljs.core.next(arglist__3077));
+ var arg2 = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3077)));
+ var arg3 = cljs.core.first(cljs.core.next(cljs.core.next(cljs.core.next(arglist__3077))));
+ var more = cljs.core.rest(cljs.core.next(cljs.core.next(cljs.core.next(arglist__3077))));
+ return G__3074__delegate(f, arg1, arg2, arg3, more)
+ };
+ G__3074.cljs$lang$arity$variadic = G__3074__delegate;
+ return G__3074
+ }();
+ partial = function(f, arg1, arg2, arg3, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 2:
+ return partial__2.call(this, f, arg1);
+ case 3:
+ return partial__3.call(this, f, arg1, arg2);
+ case 4:
+ return partial__4.call(this, f, arg1, arg2, arg3);
+ default:
+ return partial__5.cljs$lang$arity$variadic(f, arg1, arg2, arg3, cljs.core.array_seq(arguments, 4))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ partial.cljs$lang$maxFixedArity = 4;
+ partial.cljs$lang$applyTo = partial__5.cljs$lang$applyTo;
+ partial.cljs$lang$arity$2 = partial__2;
+ partial.cljs$lang$arity$3 = partial__3;
+ partial.cljs$lang$arity$4 = partial__4;
+ partial.cljs$lang$arity$variadic = partial__5.cljs$lang$arity$variadic;
+ return partial
+}();
+cljs.core.fnil = function() {
+ var fnil = null;
+ var fnil__2 = function(f, x) {
+ return function() {
+ var G__3078 = null;
+ var G__3078__1 = function(a) {
+ return f.call(null, a == null ? x : a)
+ };
+ var G__3078__2 = function(a, b) {
+ return f.call(null, a == null ? x : a, b)
+ };
+ var G__3078__3 = function(a, b, c) {
+ return f.call(null, a == null ? x : a, b, c)
+ };
+ var G__3078__4 = function() {
+ var G__3079__delegate = function(a, b, c, ds) {
+ return cljs.core.apply.call(null, f, a == null ? x : a, b, c, ds)
+ };
+ var G__3079 = function(a, b, c, var_args) {
+ var ds = null;
+ if(goog.isDef(var_args)) {
+ ds = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3079__delegate.call(this, a, b, c, ds)
+ };
+ G__3079.cljs$lang$maxFixedArity = 3;
+ G__3079.cljs$lang$applyTo = function(arglist__3080) {
+ var a = cljs.core.first(arglist__3080);
+ var b = cljs.core.first(cljs.core.next(arglist__3080));
+ var c = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3080)));
+ var ds = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3080)));
+ return G__3079__delegate(a, b, c, ds)
+ };
+ G__3079.cljs$lang$arity$variadic = G__3079__delegate;
+ return G__3079
+ }();
+ G__3078 = function(a, b, c, var_args) {
+ var ds = var_args;
+ switch(arguments.length) {
+ case 1:
+ return G__3078__1.call(this, a);
+ case 2:
+ return G__3078__2.call(this, a, b);
+ case 3:
+ return G__3078__3.call(this, a, b, c);
+ default:
+ return G__3078__4.cljs$lang$arity$variadic(a, b, c, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ G__3078.cljs$lang$maxFixedArity = 3;
+ G__3078.cljs$lang$applyTo = G__3078__4.cljs$lang$applyTo;
+ return G__3078
+ }()
+ };
+ var fnil__3 = function(f, x, y) {
+ return function() {
+ var G__3081 = null;
+ var G__3081__2 = function(a, b) {
+ return f.call(null, a == null ? x : a, b == null ? y : b)
+ };
+ var G__3081__3 = function(a, b, c) {
+ return f.call(null, a == null ? x : a, b == null ? y : b, c)
+ };
+ var G__3081__4 = function() {
+ var G__3082__delegate = function(a, b, c, ds) {
+ return cljs.core.apply.call(null, f, a == null ? x : a, b == null ? y : b, c, ds)
+ };
+ var G__3082 = function(a, b, c, var_args) {
+ var ds = null;
+ if(goog.isDef(var_args)) {
+ ds = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3082__delegate.call(this, a, b, c, ds)
+ };
+ G__3082.cljs$lang$maxFixedArity = 3;
+ G__3082.cljs$lang$applyTo = function(arglist__3083) {
+ var a = cljs.core.first(arglist__3083);
+ var b = cljs.core.first(cljs.core.next(arglist__3083));
+ var c = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3083)));
+ var ds = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3083)));
+ return G__3082__delegate(a, b, c, ds)
+ };
+ G__3082.cljs$lang$arity$variadic = G__3082__delegate;
+ return G__3082
+ }();
+ G__3081 = function(a, b, c, var_args) {
+ var ds = var_args;
+ switch(arguments.length) {
+ case 2:
+ return G__3081__2.call(this, a, b);
+ case 3:
+ return G__3081__3.call(this, a, b, c);
+ default:
+ return G__3081__4.cljs$lang$arity$variadic(a, b, c, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ G__3081.cljs$lang$maxFixedArity = 3;
+ G__3081.cljs$lang$applyTo = G__3081__4.cljs$lang$applyTo;
+ return G__3081
+ }()
+ };
+ var fnil__4 = function(f, x, y, z) {
+ return function() {
+ var G__3084 = null;
+ var G__3084__2 = function(a, b) {
+ return f.call(null, a == null ? x : a, b == null ? y : b)
+ };
+ var G__3084__3 = function(a, b, c) {
+ return f.call(null, a == null ? x : a, b == null ? y : b, c == null ? z : c)
+ };
+ var G__3084__4 = function() {
+ var G__3085__delegate = function(a, b, c, ds) {
+ return cljs.core.apply.call(null, f, a == null ? x : a, b == null ? y : b, c == null ? z : c, ds)
+ };
+ var G__3085 = function(a, b, c, var_args) {
+ var ds = null;
+ if(goog.isDef(var_args)) {
+ ds = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3085__delegate.call(this, a, b, c, ds)
+ };
+ G__3085.cljs$lang$maxFixedArity = 3;
+ G__3085.cljs$lang$applyTo = function(arglist__3086) {
+ var a = cljs.core.first(arglist__3086);
+ var b = cljs.core.first(cljs.core.next(arglist__3086));
+ var c = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3086)));
+ var ds = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3086)));
+ return G__3085__delegate(a, b, c, ds)
+ };
+ G__3085.cljs$lang$arity$variadic = G__3085__delegate;
+ return G__3085
+ }();
+ G__3084 = function(a, b, c, var_args) {
+ var ds = var_args;
+ switch(arguments.length) {
+ case 2:
+ return G__3084__2.call(this, a, b);
+ case 3:
+ return G__3084__3.call(this, a, b, c);
+ default:
+ return G__3084__4.cljs$lang$arity$variadic(a, b, c, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ G__3084.cljs$lang$maxFixedArity = 3;
+ G__3084.cljs$lang$applyTo = G__3084__4.cljs$lang$applyTo;
+ return G__3084
+ }()
+ };
+ fnil = function(f, x, y, z) {
+ switch(arguments.length) {
+ case 2:
+ return fnil__2.call(this, f, x);
+ case 3:
+ return fnil__3.call(this, f, x, y);
+ case 4:
+ return fnil__4.call(this, f, x, y, z)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ fnil.cljs$lang$arity$2 = fnil__2;
+ fnil.cljs$lang$arity$3 = fnil__3;
+ fnil.cljs$lang$arity$4 = fnil__4;
+ return fnil
+}();
+cljs.core.map_indexed = function map_indexed(f, coll) {
+ var mapi = function mapi(idx, coll__$1) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var temp__3974__auto__ = cljs.core.seq.call(null, coll__$1);
+ if(temp__3974__auto__) {
+ var s = temp__3974__auto__;
+ if(cljs.core.chunked_seq_QMARK_.call(null, s)) {
+ var c = cljs.core.chunk_first.call(null, s);
+ var size = cljs.core.count.call(null, c);
+ var b = cljs.core.chunk_buffer.call(null, size);
+ var n__2535__auto__ = size;
+ var i = 0;
+ while(true) {
+ if(i < n__2535__auto__) {
+ cljs.core.chunk_append.call(null, b, f.call(null, idx + i, cljs.core._nth.call(null, c, i)));
+ var G__3087 = i + 1;
+ i = G__3087;
+ continue
+ }else {
+ }
+ break
+ }
+ return cljs.core.chunk_cons.call(null, cljs.core.chunk.call(null, b), mapi.call(null, idx + size, cljs.core.chunk_rest.call(null, s)))
+ }else {
+ return cljs.core.cons.call(null, f.call(null, idx, cljs.core.first.call(null, s)), mapi.call(null, idx + 1, cljs.core.rest.call(null, s)))
+ }
+ }else {
+ return null
+ }
+ }, null)
+ };
+ return mapi.call(null, 0, coll)
+};
+cljs.core.keep = function keep(f, coll) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var temp__3974__auto__ = cljs.core.seq.call(null, coll);
+ if(temp__3974__auto__) {
+ var s = temp__3974__auto__;
+ if(cljs.core.chunked_seq_QMARK_.call(null, s)) {
+ var c = cljs.core.chunk_first.call(null, s);
+ var size = cljs.core.count.call(null, c);
+ var b = cljs.core.chunk_buffer.call(null, size);
+ var n__2535__auto__ = size;
+ var i = 0;
+ while(true) {
+ if(i < n__2535__auto__) {
+ var x = f.call(null, cljs.core._nth.call(null, c, i));
+ if(x == null) {
+ }else {
+ cljs.core.chunk_append.call(null, b, x)
+ }
+ var G__3088 = i + 1;
+ i = G__3088;
+ continue
+ }else {
+ }
+ break
+ }
+ return cljs.core.chunk_cons.call(null, cljs.core.chunk.call(null, b), keep.call(null, f, cljs.core.chunk_rest.call(null, s)))
+ }else {
+ var x = f.call(null, cljs.core.first.call(null, s));
+ if(x == null) {
+ return keep.call(null, f, cljs.core.rest.call(null, s))
+ }else {
+ return cljs.core.cons.call(null, x, keep.call(null, f, cljs.core.rest.call(null, s)))
+ }
+ }
+ }else {
+ return null
+ }
+ }, null)
+};
+cljs.core.keep_indexed = function keep_indexed(f, coll) {
+ var keepi = function keepi(idx, coll__$1) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var temp__3974__auto__ = cljs.core.seq.call(null, coll__$1);
+ if(temp__3974__auto__) {
+ var s = temp__3974__auto__;
+ if(cljs.core.chunked_seq_QMARK_.call(null, s)) {
+ var c = cljs.core.chunk_first.call(null, s);
+ var size = cljs.core.count.call(null, c);
+ var b = cljs.core.chunk_buffer.call(null, size);
+ var n__2535__auto__ = size;
+ var i = 0;
+ while(true) {
+ if(i < n__2535__auto__) {
+ var x = f.call(null, idx + i, cljs.core._nth.call(null, c, i));
+ if(x == null) {
+ }else {
+ cljs.core.chunk_append.call(null, b, x)
+ }
+ var G__3095 = i + 1;
+ i = G__3095;
+ continue
+ }else {
+ }
+ break
+ }
+ return cljs.core.chunk_cons.call(null, cljs.core.chunk.call(null, b), keepi.call(null, idx + size, cljs.core.chunk_rest.call(null, s)))
+ }else {
+ var x = f.call(null, idx, cljs.core.first.call(null, s));
+ if(x == null) {
+ return keepi.call(null, idx + 1, cljs.core.rest.call(null, s))
+ }else {
+ return cljs.core.cons.call(null, x, keepi.call(null, idx + 1, cljs.core.rest.call(null, s)))
+ }
+ }
+ }else {
+ return null
+ }
+ }, null)
+ };
+ return keepi.call(null, 0, coll)
+};
+cljs.core.every_pred = function() {
+ var every_pred = null;
+ var every_pred__1 = function(p) {
+ return function() {
+ var ep1 = null;
+ var ep1__0 = function() {
+ return true
+ };
+ var ep1__1 = function(x) {
+ return cljs.core.boolean$.call(null, p.call(null, x))
+ };
+ var ep1__2 = function(x, y) {
+ return cljs.core.boolean$.call(null, function() {
+ var and__3822__auto__ = p.call(null, x);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ return p.call(null, y)
+ }else {
+ return and__3822__auto__
+ }
+ }())
+ };
+ var ep1__3 = function(x, y, z) {
+ return cljs.core.boolean$.call(null, function() {
+ var and__3822__auto__ = p.call(null, x);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ var and__3822__auto____$1 = p.call(null, y);
+ if(cljs.core.truth_(and__3822__auto____$1)) {
+ return p.call(null, z)
+ }else {
+ return and__3822__auto____$1
+ }
+ }else {
+ return and__3822__auto__
+ }
+ }())
+ };
+ var ep1__4 = function() {
+ var G__3102__delegate = function(x, y, z, args) {
+ return cljs.core.boolean$.call(null, function() {
+ var and__3822__auto__ = ep1.call(null, x, y, z);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ return cljs.core.every_QMARK_.call(null, p, args)
+ }else {
+ return and__3822__auto__
+ }
+ }())
+ };
+ var G__3102 = function(x, y, z, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3102__delegate.call(this, x, y, z, args)
+ };
+ G__3102.cljs$lang$maxFixedArity = 3;
+ G__3102.cljs$lang$applyTo = function(arglist__3103) {
+ var x = cljs.core.first(arglist__3103);
+ var y = cljs.core.first(cljs.core.next(arglist__3103));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3103)));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3103)));
+ return G__3102__delegate(x, y, z, args)
+ };
+ G__3102.cljs$lang$arity$variadic = G__3102__delegate;
+ return G__3102
+ }();
+ ep1 = function(x, y, z, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 0:
+ return ep1__0.call(this);
+ case 1:
+ return ep1__1.call(this, x);
+ case 2:
+ return ep1__2.call(this, x, y);
+ case 3:
+ return ep1__3.call(this, x, y, z);
+ default:
+ return ep1__4.cljs$lang$arity$variadic(x, y, z, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ ep1.cljs$lang$maxFixedArity = 3;
+ ep1.cljs$lang$applyTo = ep1__4.cljs$lang$applyTo;
+ ep1.cljs$lang$arity$0 = ep1__0;
+ ep1.cljs$lang$arity$1 = ep1__1;
+ ep1.cljs$lang$arity$2 = ep1__2;
+ ep1.cljs$lang$arity$3 = ep1__3;
+ ep1.cljs$lang$arity$variadic = ep1__4.cljs$lang$arity$variadic;
+ return ep1
+ }()
+ };
+ var every_pred__2 = function(p1, p2) {
+ return function() {
+ var ep2 = null;
+ var ep2__0 = function() {
+ return true
+ };
+ var ep2__1 = function(x) {
+ return cljs.core.boolean$.call(null, function() {
+ var and__3822__auto__ = p1.call(null, x);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ return p2.call(null, x)
+ }else {
+ return and__3822__auto__
+ }
+ }())
+ };
+ var ep2__2 = function(x, y) {
+ return cljs.core.boolean$.call(null, function() {
+ var and__3822__auto__ = p1.call(null, x);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ var and__3822__auto____$1 = p1.call(null, y);
+ if(cljs.core.truth_(and__3822__auto____$1)) {
+ var and__3822__auto____$2 = p2.call(null, x);
+ if(cljs.core.truth_(and__3822__auto____$2)) {
+ return p2.call(null, y)
+ }else {
+ return and__3822__auto____$2
+ }
+ }else {
+ return and__3822__auto____$1
+ }
+ }else {
+ return and__3822__auto__
+ }
+ }())
+ };
+ var ep2__3 = function(x, y, z) {
+ return cljs.core.boolean$.call(null, function() {
+ var and__3822__auto__ = p1.call(null, x);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ var and__3822__auto____$1 = p1.call(null, y);
+ if(cljs.core.truth_(and__3822__auto____$1)) {
+ var and__3822__auto____$2 = p1.call(null, z);
+ if(cljs.core.truth_(and__3822__auto____$2)) {
+ var and__3822__auto____$3 = p2.call(null, x);
+ if(cljs.core.truth_(and__3822__auto____$3)) {
+ var and__3822__auto____$4 = p2.call(null, y);
+ if(cljs.core.truth_(and__3822__auto____$4)) {
+ return p2.call(null, z)
+ }else {
+ return and__3822__auto____$4
+ }
+ }else {
+ return and__3822__auto____$3
+ }
+ }else {
+ return and__3822__auto____$2
+ }
+ }else {
+ return and__3822__auto____$1
+ }
+ }else {
+ return and__3822__auto__
+ }
+ }())
+ };
+ var ep2__4 = function() {
+ var G__3104__delegate = function(x, y, z, args) {
+ return cljs.core.boolean$.call(null, function() {
+ var and__3822__auto__ = ep2.call(null, x, y, z);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ return cljs.core.every_QMARK_.call(null, function(p1__3089_SHARP_) {
+ var and__3822__auto____$1 = p1.call(null, p1__3089_SHARP_);
+ if(cljs.core.truth_(and__3822__auto____$1)) {
+ return p2.call(null, p1__3089_SHARP_)
+ }else {
+ return and__3822__auto____$1
+ }
+ }, args)
+ }else {
+ return and__3822__auto__
+ }
+ }())
+ };
+ var G__3104 = function(x, y, z, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3104__delegate.call(this, x, y, z, args)
+ };
+ G__3104.cljs$lang$maxFixedArity = 3;
+ G__3104.cljs$lang$applyTo = function(arglist__3105) {
+ var x = cljs.core.first(arglist__3105);
+ var y = cljs.core.first(cljs.core.next(arglist__3105));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3105)));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3105)));
+ return G__3104__delegate(x, y, z, args)
+ };
+ G__3104.cljs$lang$arity$variadic = G__3104__delegate;
+ return G__3104
+ }();
+ ep2 = function(x, y, z, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 0:
+ return ep2__0.call(this);
+ case 1:
+ return ep2__1.call(this, x);
+ case 2:
+ return ep2__2.call(this, x, y);
+ case 3:
+ return ep2__3.call(this, x, y, z);
+ default:
+ return ep2__4.cljs$lang$arity$variadic(x, y, z, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ ep2.cljs$lang$maxFixedArity = 3;
+ ep2.cljs$lang$applyTo = ep2__4.cljs$lang$applyTo;
+ ep2.cljs$lang$arity$0 = ep2__0;
+ ep2.cljs$lang$arity$1 = ep2__1;
+ ep2.cljs$lang$arity$2 = ep2__2;
+ ep2.cljs$lang$arity$3 = ep2__3;
+ ep2.cljs$lang$arity$variadic = ep2__4.cljs$lang$arity$variadic;
+ return ep2
+ }()
+ };
+ var every_pred__3 = function(p1, p2, p3) {
+ return function() {
+ var ep3 = null;
+ var ep3__0 = function() {
+ return true
+ };
+ var ep3__1 = function(x) {
+ return cljs.core.boolean$.call(null, function() {
+ var and__3822__auto__ = p1.call(null, x);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ var and__3822__auto____$1 = p2.call(null, x);
+ if(cljs.core.truth_(and__3822__auto____$1)) {
+ return p3.call(null, x)
+ }else {
+ return and__3822__auto____$1
+ }
+ }else {
+ return and__3822__auto__
+ }
+ }())
+ };
+ var ep3__2 = function(x, y) {
+ return cljs.core.boolean$.call(null, function() {
+ var and__3822__auto__ = p1.call(null, x);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ var and__3822__auto____$1 = p2.call(null, x);
+ if(cljs.core.truth_(and__3822__auto____$1)) {
+ var and__3822__auto____$2 = p3.call(null, x);
+ if(cljs.core.truth_(and__3822__auto____$2)) {
+ var and__3822__auto____$3 = p1.call(null, y);
+ if(cljs.core.truth_(and__3822__auto____$3)) {
+ var and__3822__auto____$4 = p2.call(null, y);
+ if(cljs.core.truth_(and__3822__auto____$4)) {
+ return p3.call(null, y)
+ }else {
+ return and__3822__auto____$4
+ }
+ }else {
+ return and__3822__auto____$3
+ }
+ }else {
+ return and__3822__auto____$2
+ }
+ }else {
+ return and__3822__auto____$1
+ }
+ }else {
+ return and__3822__auto__
+ }
+ }())
+ };
+ var ep3__3 = function(x, y, z) {
+ return cljs.core.boolean$.call(null, function() {
+ var and__3822__auto__ = p1.call(null, x);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ var and__3822__auto____$1 = p2.call(null, x);
+ if(cljs.core.truth_(and__3822__auto____$1)) {
+ var and__3822__auto____$2 = p3.call(null, x);
+ if(cljs.core.truth_(and__3822__auto____$2)) {
+ var and__3822__auto____$3 = p1.call(null, y);
+ if(cljs.core.truth_(and__3822__auto____$3)) {
+ var and__3822__auto____$4 = p2.call(null, y);
+ if(cljs.core.truth_(and__3822__auto____$4)) {
+ var and__3822__auto____$5 = p3.call(null, y);
+ if(cljs.core.truth_(and__3822__auto____$5)) {
+ var and__3822__auto____$6 = p1.call(null, z);
+ if(cljs.core.truth_(and__3822__auto____$6)) {
+ var and__3822__auto____$7 = p2.call(null, z);
+ if(cljs.core.truth_(and__3822__auto____$7)) {
+ return p3.call(null, z)
+ }else {
+ return and__3822__auto____$7
+ }
+ }else {
+ return and__3822__auto____$6
+ }
+ }else {
+ return and__3822__auto____$5
+ }
+ }else {
+ return and__3822__auto____$4
+ }
+ }else {
+ return and__3822__auto____$3
+ }
+ }else {
+ return and__3822__auto____$2
+ }
+ }else {
+ return and__3822__auto____$1
+ }
+ }else {
+ return and__3822__auto__
+ }
+ }())
+ };
+ var ep3__4 = function() {
+ var G__3106__delegate = function(x, y, z, args) {
+ return cljs.core.boolean$.call(null, function() {
+ var and__3822__auto__ = ep3.call(null, x, y, z);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ return cljs.core.every_QMARK_.call(null, function(p1__3090_SHARP_) {
+ var and__3822__auto____$1 = p1.call(null, p1__3090_SHARP_);
+ if(cljs.core.truth_(and__3822__auto____$1)) {
+ var and__3822__auto____$2 = p2.call(null, p1__3090_SHARP_);
+ if(cljs.core.truth_(and__3822__auto____$2)) {
+ return p3.call(null, p1__3090_SHARP_)
+ }else {
+ return and__3822__auto____$2
+ }
+ }else {
+ return and__3822__auto____$1
+ }
+ }, args)
+ }else {
+ return and__3822__auto__
+ }
+ }())
+ };
+ var G__3106 = function(x, y, z, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3106__delegate.call(this, x, y, z, args)
+ };
+ G__3106.cljs$lang$maxFixedArity = 3;
+ G__3106.cljs$lang$applyTo = function(arglist__3107) {
+ var x = cljs.core.first(arglist__3107);
+ var y = cljs.core.first(cljs.core.next(arglist__3107));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3107)));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3107)));
+ return G__3106__delegate(x, y, z, args)
+ };
+ G__3106.cljs$lang$arity$variadic = G__3106__delegate;
+ return G__3106
+ }();
+ ep3 = function(x, y, z, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 0:
+ return ep3__0.call(this);
+ case 1:
+ return ep3__1.call(this, x);
+ case 2:
+ return ep3__2.call(this, x, y);
+ case 3:
+ return ep3__3.call(this, x, y, z);
+ default:
+ return ep3__4.cljs$lang$arity$variadic(x, y, z, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ ep3.cljs$lang$maxFixedArity = 3;
+ ep3.cljs$lang$applyTo = ep3__4.cljs$lang$applyTo;
+ ep3.cljs$lang$arity$0 = ep3__0;
+ ep3.cljs$lang$arity$1 = ep3__1;
+ ep3.cljs$lang$arity$2 = ep3__2;
+ ep3.cljs$lang$arity$3 = ep3__3;
+ ep3.cljs$lang$arity$variadic = ep3__4.cljs$lang$arity$variadic;
+ return ep3
+ }()
+ };
+ var every_pred__4 = function() {
+ var G__3108__delegate = function(p1, p2, p3, ps) {
+ var ps__$1 = cljs.core.list_STAR_.call(null, p1, p2, p3, ps);
+ return function() {
+ var epn = null;
+ var epn__0 = function() {
+ return true
+ };
+ var epn__1 = function(x) {
+ return cljs.core.every_QMARK_.call(null, function(p1__3091_SHARP_) {
+ return p1__3091_SHARP_.call(null, x)
+ }, ps__$1)
+ };
+ var epn__2 = function(x, y) {
+ return cljs.core.every_QMARK_.call(null, function(p1__3092_SHARP_) {
+ var and__3822__auto__ = p1__3092_SHARP_.call(null, x);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ return p1__3092_SHARP_.call(null, y)
+ }else {
+ return and__3822__auto__
+ }
+ }, ps__$1)
+ };
+ var epn__3 = function(x, y, z) {
+ return cljs.core.every_QMARK_.call(null, function(p1__3093_SHARP_) {
+ var and__3822__auto__ = p1__3093_SHARP_.call(null, x);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ var and__3822__auto____$1 = p1__3093_SHARP_.call(null, y);
+ if(cljs.core.truth_(and__3822__auto____$1)) {
+ return p1__3093_SHARP_.call(null, z)
+ }else {
+ return and__3822__auto____$1
+ }
+ }else {
+ return and__3822__auto__
+ }
+ }, ps__$1)
+ };
+ var epn__4 = function() {
+ var G__3109__delegate = function(x, y, z, args) {
+ return cljs.core.boolean$.call(null, function() {
+ var and__3822__auto__ = epn.call(null, x, y, z);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ return cljs.core.every_QMARK_.call(null, function(p1__3094_SHARP_) {
+ return cljs.core.every_QMARK_.call(null, p1__3094_SHARP_, args)
+ }, ps__$1)
+ }else {
+ return and__3822__auto__
+ }
+ }())
+ };
+ var G__3109 = function(x, y, z, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3109__delegate.call(this, x, y, z, args)
+ };
+ G__3109.cljs$lang$maxFixedArity = 3;
+ G__3109.cljs$lang$applyTo = function(arglist__3110) {
+ var x = cljs.core.first(arglist__3110);
+ var y = cljs.core.first(cljs.core.next(arglist__3110));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3110)));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3110)));
+ return G__3109__delegate(x, y, z, args)
+ };
+ G__3109.cljs$lang$arity$variadic = G__3109__delegate;
+ return G__3109
+ }();
+ epn = function(x, y, z, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 0:
+ return epn__0.call(this);
+ case 1:
+ return epn__1.call(this, x);
+ case 2:
+ return epn__2.call(this, x, y);
+ case 3:
+ return epn__3.call(this, x, y, z);
+ default:
+ return epn__4.cljs$lang$arity$variadic(x, y, z, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ epn.cljs$lang$maxFixedArity = 3;
+ epn.cljs$lang$applyTo = epn__4.cljs$lang$applyTo;
+ epn.cljs$lang$arity$0 = epn__0;
+ epn.cljs$lang$arity$1 = epn__1;
+ epn.cljs$lang$arity$2 = epn__2;
+ epn.cljs$lang$arity$3 = epn__3;
+ epn.cljs$lang$arity$variadic = epn__4.cljs$lang$arity$variadic;
+ return epn
+ }()
+ };
+ var G__3108 = function(p1, p2, p3, var_args) {
+ var ps = null;
+ if(goog.isDef(var_args)) {
+ ps = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3108__delegate.call(this, p1, p2, p3, ps)
+ };
+ G__3108.cljs$lang$maxFixedArity = 3;
+ G__3108.cljs$lang$applyTo = function(arglist__3111) {
+ var p1 = cljs.core.first(arglist__3111);
+ var p2 = cljs.core.first(cljs.core.next(arglist__3111));
+ var p3 = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3111)));
+ var ps = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3111)));
+ return G__3108__delegate(p1, p2, p3, ps)
+ };
+ G__3108.cljs$lang$arity$variadic = G__3108__delegate;
+ return G__3108
+ }();
+ every_pred = function(p1, p2, p3, var_args) {
+ var ps = var_args;
+ switch(arguments.length) {
+ case 1:
+ return every_pred__1.call(this, p1);
+ case 2:
+ return every_pred__2.call(this, p1, p2);
+ case 3:
+ return every_pred__3.call(this, p1, p2, p3);
+ default:
+ return every_pred__4.cljs$lang$arity$variadic(p1, p2, p3, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ every_pred.cljs$lang$maxFixedArity = 3;
+ every_pred.cljs$lang$applyTo = every_pred__4.cljs$lang$applyTo;
+ every_pred.cljs$lang$arity$1 = every_pred__1;
+ every_pred.cljs$lang$arity$2 = every_pred__2;
+ every_pred.cljs$lang$arity$3 = every_pred__3;
+ every_pred.cljs$lang$arity$variadic = every_pred__4.cljs$lang$arity$variadic;
+ return every_pred
+}();
+cljs.core.some_fn = function() {
+ var some_fn = null;
+ var some_fn__1 = function(p) {
+ return function() {
+ var sp1 = null;
+ var sp1__0 = function() {
+ return null
+ };
+ var sp1__1 = function(x) {
+ return p.call(null, x)
+ };
+ var sp1__2 = function(x, y) {
+ var or__3824__auto__ = p.call(null, x);
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ return p.call(null, y)
+ }
+ };
+ var sp1__3 = function(x, y, z) {
+ var or__3824__auto__ = p.call(null, x);
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = p.call(null, y);
+ if(cljs.core.truth_(or__3824__auto____$1)) {
+ return or__3824__auto____$1
+ }else {
+ return p.call(null, z)
+ }
+ }
+ };
+ var sp1__4 = function() {
+ var G__3113__delegate = function(x, y, z, args) {
+ var or__3824__auto__ = sp1.call(null, x, y, z);
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ return cljs.core.some.call(null, p, args)
+ }
+ };
+ var G__3113 = function(x, y, z, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3113__delegate.call(this, x, y, z, args)
+ };
+ G__3113.cljs$lang$maxFixedArity = 3;
+ G__3113.cljs$lang$applyTo = function(arglist__3114) {
+ var x = cljs.core.first(arglist__3114);
+ var y = cljs.core.first(cljs.core.next(arglist__3114));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3114)));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3114)));
+ return G__3113__delegate(x, y, z, args)
+ };
+ G__3113.cljs$lang$arity$variadic = G__3113__delegate;
+ return G__3113
+ }();
+ sp1 = function(x, y, z, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 0:
+ return sp1__0.call(this);
+ case 1:
+ return sp1__1.call(this, x);
+ case 2:
+ return sp1__2.call(this, x, y);
+ case 3:
+ return sp1__3.call(this, x, y, z);
+ default:
+ return sp1__4.cljs$lang$arity$variadic(x, y, z, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ sp1.cljs$lang$maxFixedArity = 3;
+ sp1.cljs$lang$applyTo = sp1__4.cljs$lang$applyTo;
+ sp1.cljs$lang$arity$0 = sp1__0;
+ sp1.cljs$lang$arity$1 = sp1__1;
+ sp1.cljs$lang$arity$2 = sp1__2;
+ sp1.cljs$lang$arity$3 = sp1__3;
+ sp1.cljs$lang$arity$variadic = sp1__4.cljs$lang$arity$variadic;
+ return sp1
+ }()
+ };
+ var some_fn__2 = function(p1, p2) {
+ return function() {
+ var sp2 = null;
+ var sp2__0 = function() {
+ return null
+ };
+ var sp2__1 = function(x) {
+ var or__3824__auto__ = p1.call(null, x);
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ return p2.call(null, x)
+ }
+ };
+ var sp2__2 = function(x, y) {
+ var or__3824__auto__ = p1.call(null, x);
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = p1.call(null, y);
+ if(cljs.core.truth_(or__3824__auto____$1)) {
+ return or__3824__auto____$1
+ }else {
+ var or__3824__auto____$2 = p2.call(null, x);
+ if(cljs.core.truth_(or__3824__auto____$2)) {
+ return or__3824__auto____$2
+ }else {
+ return p2.call(null, y)
+ }
+ }
+ }
+ };
+ var sp2__3 = function(x, y, z) {
+ var or__3824__auto__ = p1.call(null, x);
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = p1.call(null, y);
+ if(cljs.core.truth_(or__3824__auto____$1)) {
+ return or__3824__auto____$1
+ }else {
+ var or__3824__auto____$2 = p1.call(null, z);
+ if(cljs.core.truth_(or__3824__auto____$2)) {
+ return or__3824__auto____$2
+ }else {
+ var or__3824__auto____$3 = p2.call(null, x);
+ if(cljs.core.truth_(or__3824__auto____$3)) {
+ return or__3824__auto____$3
+ }else {
+ var or__3824__auto____$4 = p2.call(null, y);
+ if(cljs.core.truth_(or__3824__auto____$4)) {
+ return or__3824__auto____$4
+ }else {
+ return p2.call(null, z)
+ }
+ }
+ }
+ }
+ }
+ };
+ var sp2__4 = function() {
+ var G__3115__delegate = function(x, y, z, args) {
+ var or__3824__auto__ = sp2.call(null, x, y, z);
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ return cljs.core.some.call(null, function(p1__3096_SHARP_) {
+ var or__3824__auto____$1 = p1.call(null, p1__3096_SHARP_);
+ if(cljs.core.truth_(or__3824__auto____$1)) {
+ return or__3824__auto____$1
+ }else {
+ return p2.call(null, p1__3096_SHARP_)
+ }
+ }, args)
+ }
+ };
+ var G__3115 = function(x, y, z, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3115__delegate.call(this, x, y, z, args)
+ };
+ G__3115.cljs$lang$maxFixedArity = 3;
+ G__3115.cljs$lang$applyTo = function(arglist__3116) {
+ var x = cljs.core.first(arglist__3116);
+ var y = cljs.core.first(cljs.core.next(arglist__3116));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3116)));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3116)));
+ return G__3115__delegate(x, y, z, args)
+ };
+ G__3115.cljs$lang$arity$variadic = G__3115__delegate;
+ return G__3115
+ }();
+ sp2 = function(x, y, z, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 0:
+ return sp2__0.call(this);
+ case 1:
+ return sp2__1.call(this, x);
+ case 2:
+ return sp2__2.call(this, x, y);
+ case 3:
+ return sp2__3.call(this, x, y, z);
+ default:
+ return sp2__4.cljs$lang$arity$variadic(x, y, z, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ sp2.cljs$lang$maxFixedArity = 3;
+ sp2.cljs$lang$applyTo = sp2__4.cljs$lang$applyTo;
+ sp2.cljs$lang$arity$0 = sp2__0;
+ sp2.cljs$lang$arity$1 = sp2__1;
+ sp2.cljs$lang$arity$2 = sp2__2;
+ sp2.cljs$lang$arity$3 = sp2__3;
+ sp2.cljs$lang$arity$variadic = sp2__4.cljs$lang$arity$variadic;
+ return sp2
+ }()
+ };
+ var some_fn__3 = function(p1, p2, p3) {
+ return function() {
+ var sp3 = null;
+ var sp3__0 = function() {
+ return null
+ };
+ var sp3__1 = function(x) {
+ var or__3824__auto__ = p1.call(null, x);
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = p2.call(null, x);
+ if(cljs.core.truth_(or__3824__auto____$1)) {
+ return or__3824__auto____$1
+ }else {
+ return p3.call(null, x)
+ }
+ }
+ };
+ var sp3__2 = function(x, y) {
+ var or__3824__auto__ = p1.call(null, x);
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = p2.call(null, x);
+ if(cljs.core.truth_(or__3824__auto____$1)) {
+ return or__3824__auto____$1
+ }else {
+ var or__3824__auto____$2 = p3.call(null, x);
+ if(cljs.core.truth_(or__3824__auto____$2)) {
+ return or__3824__auto____$2
+ }else {
+ var or__3824__auto____$3 = p1.call(null, y);
+ if(cljs.core.truth_(or__3824__auto____$3)) {
+ return or__3824__auto____$3
+ }else {
+ var or__3824__auto____$4 = p2.call(null, y);
+ if(cljs.core.truth_(or__3824__auto____$4)) {
+ return or__3824__auto____$4
+ }else {
+ return p3.call(null, y)
+ }
+ }
+ }
+ }
+ }
+ };
+ var sp3__3 = function(x, y, z) {
+ var or__3824__auto__ = p1.call(null, x);
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = p2.call(null, x);
+ if(cljs.core.truth_(or__3824__auto____$1)) {
+ return or__3824__auto____$1
+ }else {
+ var or__3824__auto____$2 = p3.call(null, x);
+ if(cljs.core.truth_(or__3824__auto____$2)) {
+ return or__3824__auto____$2
+ }else {
+ var or__3824__auto____$3 = p1.call(null, y);
+ if(cljs.core.truth_(or__3824__auto____$3)) {
+ return or__3824__auto____$3
+ }else {
+ var or__3824__auto____$4 = p2.call(null, y);
+ if(cljs.core.truth_(or__3824__auto____$4)) {
+ return or__3824__auto____$4
+ }else {
+ var or__3824__auto____$5 = p3.call(null, y);
+ if(cljs.core.truth_(or__3824__auto____$5)) {
+ return or__3824__auto____$5
+ }else {
+ var or__3824__auto____$6 = p1.call(null, z);
+ if(cljs.core.truth_(or__3824__auto____$6)) {
+ return or__3824__auto____$6
+ }else {
+ var or__3824__auto____$7 = p2.call(null, z);
+ if(cljs.core.truth_(or__3824__auto____$7)) {
+ return or__3824__auto____$7
+ }else {
+ return p3.call(null, z)
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ };
+ var sp3__4 = function() {
+ var G__3117__delegate = function(x, y, z, args) {
+ var or__3824__auto__ = sp3.call(null, x, y, z);
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ return cljs.core.some.call(null, function(p1__3097_SHARP_) {
+ var or__3824__auto____$1 = p1.call(null, p1__3097_SHARP_);
+ if(cljs.core.truth_(or__3824__auto____$1)) {
+ return or__3824__auto____$1
+ }else {
+ var or__3824__auto____$2 = p2.call(null, p1__3097_SHARP_);
+ if(cljs.core.truth_(or__3824__auto____$2)) {
+ return or__3824__auto____$2
+ }else {
+ return p3.call(null, p1__3097_SHARP_)
+ }
+ }
+ }, args)
+ }
+ };
+ var G__3117 = function(x, y, z, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3117__delegate.call(this, x, y, z, args)
+ };
+ G__3117.cljs$lang$maxFixedArity = 3;
+ G__3117.cljs$lang$applyTo = function(arglist__3118) {
+ var x = cljs.core.first(arglist__3118);
+ var y = cljs.core.first(cljs.core.next(arglist__3118));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3118)));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3118)));
+ return G__3117__delegate(x, y, z, args)
+ };
+ G__3117.cljs$lang$arity$variadic = G__3117__delegate;
+ return G__3117
+ }();
+ sp3 = function(x, y, z, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 0:
+ return sp3__0.call(this);
+ case 1:
+ return sp3__1.call(this, x);
+ case 2:
+ return sp3__2.call(this, x, y);
+ case 3:
+ return sp3__3.call(this, x, y, z);
+ default:
+ return sp3__4.cljs$lang$arity$variadic(x, y, z, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ sp3.cljs$lang$maxFixedArity = 3;
+ sp3.cljs$lang$applyTo = sp3__4.cljs$lang$applyTo;
+ sp3.cljs$lang$arity$0 = sp3__0;
+ sp3.cljs$lang$arity$1 = sp3__1;
+ sp3.cljs$lang$arity$2 = sp3__2;
+ sp3.cljs$lang$arity$3 = sp3__3;
+ sp3.cljs$lang$arity$variadic = sp3__4.cljs$lang$arity$variadic;
+ return sp3
+ }()
+ };
+ var some_fn__4 = function() {
+ var G__3119__delegate = function(p1, p2, p3, ps) {
+ var ps__$1 = cljs.core.list_STAR_.call(null, p1, p2, p3, ps);
+ return function() {
+ var spn = null;
+ var spn__0 = function() {
+ return null
+ };
+ var spn__1 = function(x) {
+ return cljs.core.some.call(null, function(p1__3098_SHARP_) {
+ return p1__3098_SHARP_.call(null, x)
+ }, ps__$1)
+ };
+ var spn__2 = function(x, y) {
+ return cljs.core.some.call(null, function(p1__3099_SHARP_) {
+ var or__3824__auto__ = p1__3099_SHARP_.call(null, x);
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ return p1__3099_SHARP_.call(null, y)
+ }
+ }, ps__$1)
+ };
+ var spn__3 = function(x, y, z) {
+ return cljs.core.some.call(null, function(p1__3100_SHARP_) {
+ var or__3824__auto__ = p1__3100_SHARP_.call(null, x);
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = p1__3100_SHARP_.call(null, y);
+ if(cljs.core.truth_(or__3824__auto____$1)) {
+ return or__3824__auto____$1
+ }else {
+ return p1__3100_SHARP_.call(null, z)
+ }
+ }
+ }, ps__$1)
+ };
+ var spn__4 = function() {
+ var G__3120__delegate = function(x, y, z, args) {
+ var or__3824__auto__ = spn.call(null, x, y, z);
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ return cljs.core.some.call(null, function(p1__3101_SHARP_) {
+ return cljs.core.some.call(null, p1__3101_SHARP_, args)
+ }, ps__$1)
+ }
+ };
+ var G__3120 = function(x, y, z, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3120__delegate.call(this, x, y, z, args)
+ };
+ G__3120.cljs$lang$maxFixedArity = 3;
+ G__3120.cljs$lang$applyTo = function(arglist__3121) {
+ var x = cljs.core.first(arglist__3121);
+ var y = cljs.core.first(cljs.core.next(arglist__3121));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3121)));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3121)));
+ return G__3120__delegate(x, y, z, args)
+ };
+ G__3120.cljs$lang$arity$variadic = G__3120__delegate;
+ return G__3120
+ }();
+ spn = function(x, y, z, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 0:
+ return spn__0.call(this);
+ case 1:
+ return spn__1.call(this, x);
+ case 2:
+ return spn__2.call(this, x, y);
+ case 3:
+ return spn__3.call(this, x, y, z);
+ default:
+ return spn__4.cljs$lang$arity$variadic(x, y, z, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ spn.cljs$lang$maxFixedArity = 3;
+ spn.cljs$lang$applyTo = spn__4.cljs$lang$applyTo;
+ spn.cljs$lang$arity$0 = spn__0;
+ spn.cljs$lang$arity$1 = spn__1;
+ spn.cljs$lang$arity$2 = spn__2;
+ spn.cljs$lang$arity$3 = spn__3;
+ spn.cljs$lang$arity$variadic = spn__4.cljs$lang$arity$variadic;
+ return spn
+ }()
+ };
+ var G__3119 = function(p1, p2, p3, var_args) {
+ var ps = null;
+ if(goog.isDef(var_args)) {
+ ps = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3119__delegate.call(this, p1, p2, p3, ps)
+ };
+ G__3119.cljs$lang$maxFixedArity = 3;
+ G__3119.cljs$lang$applyTo = function(arglist__3122) {
+ var p1 = cljs.core.first(arglist__3122);
+ var p2 = cljs.core.first(cljs.core.next(arglist__3122));
+ var p3 = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3122)));
+ var ps = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3122)));
+ return G__3119__delegate(p1, p2, p3, ps)
+ };
+ G__3119.cljs$lang$arity$variadic = G__3119__delegate;
+ return G__3119
+ }();
+ some_fn = function(p1, p2, p3, var_args) {
+ var ps = var_args;
+ switch(arguments.length) {
+ case 1:
+ return some_fn__1.call(this, p1);
+ case 2:
+ return some_fn__2.call(this, p1, p2);
+ case 3:
+ return some_fn__3.call(this, p1, p2, p3);
+ default:
+ return some_fn__4.cljs$lang$arity$variadic(p1, p2, p3, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ some_fn.cljs$lang$maxFixedArity = 3;
+ some_fn.cljs$lang$applyTo = some_fn__4.cljs$lang$applyTo;
+ some_fn.cljs$lang$arity$1 = some_fn__1;
+ some_fn.cljs$lang$arity$2 = some_fn__2;
+ some_fn.cljs$lang$arity$3 = some_fn__3;
+ some_fn.cljs$lang$arity$variadic = some_fn__4.cljs$lang$arity$variadic;
+ return some_fn
+}();
+cljs.core.map = function() {
+ var map = null;
+ var map__2 = function(f, coll) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var temp__3974__auto__ = cljs.core.seq.call(null, coll);
+ if(temp__3974__auto__) {
+ var s = temp__3974__auto__;
+ if(cljs.core.chunked_seq_QMARK_.call(null, s)) {
+ var c = cljs.core.chunk_first.call(null, s);
+ var size = cljs.core.count.call(null, c);
+ var b = cljs.core.chunk_buffer.call(null, size);
+ var n__2535__auto__ = size;
+ var i = 0;
+ while(true) {
+ if(i < n__2535__auto__) {
+ cljs.core.chunk_append.call(null, b, f.call(null, cljs.core._nth.call(null, c, i)));
+ var G__3123 = i + 1;
+ i = G__3123;
+ continue
+ }else {
+ }
+ break
+ }
+ return cljs.core.chunk_cons.call(null, cljs.core.chunk.call(null, b), map.call(null, f, cljs.core.chunk_rest.call(null, s)))
+ }else {
+ return cljs.core.cons.call(null, f.call(null, cljs.core.first.call(null, s)), map.call(null, f, cljs.core.rest.call(null, s)))
+ }
+ }else {
+ return null
+ }
+ }, null)
+ };
+ var map__3 = function(f, c1, c2) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var s1 = cljs.core.seq.call(null, c1);
+ var s2 = cljs.core.seq.call(null, c2);
+ if(function() {
+ var and__3822__auto__ = s1;
+ if(and__3822__auto__) {
+ return s2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return cljs.core.cons.call(null, f.call(null, cljs.core.first.call(null, s1), cljs.core.first.call(null, s2)), map.call(null, f, cljs.core.rest.call(null, s1), cljs.core.rest.call(null, s2)))
+ }else {
+ return null
+ }
+ }, null)
+ };
+ var map__4 = function(f, c1, c2, c3) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var s1 = cljs.core.seq.call(null, c1);
+ var s2 = cljs.core.seq.call(null, c2);
+ var s3 = cljs.core.seq.call(null, c3);
+ if(function() {
+ var and__3822__auto__ = s1;
+ if(and__3822__auto__) {
+ var and__3822__auto____$1 = s2;
+ if(and__3822__auto____$1) {
+ return s3
+ }else {
+ return and__3822__auto____$1
+ }
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return cljs.core.cons.call(null, f.call(null, cljs.core.first.call(null, s1), cljs.core.first.call(null, s2), cljs.core.first.call(null, s3)), map.call(null, f, cljs.core.rest.call(null, s1), cljs.core.rest.call(null, s2), cljs.core.rest.call(null, s3)))
+ }else {
+ return null
+ }
+ }, null)
+ };
+ var map__5 = function() {
+ var G__3124__delegate = function(f, c1, c2, c3, colls) {
+ var step = function step(cs) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var ss = map.call(null, cljs.core.seq, cs);
+ if(cljs.core.every_QMARK_.call(null, cljs.core.identity, ss)) {
+ return cljs.core.cons.call(null, map.call(null, cljs.core.first, ss), step.call(null, map.call(null, cljs.core.rest, ss)))
+ }else {
+ return null
+ }
+ }, null)
+ };
+ return map.call(null, function(p1__3112_SHARP_) {
+ return cljs.core.apply.call(null, f, p1__3112_SHARP_)
+ }, step.call(null, cljs.core.conj.call(null, colls, c3, c2, c1)))
+ };
+ var G__3124 = function(f, c1, c2, c3, var_args) {
+ var colls = null;
+ if(goog.isDef(var_args)) {
+ colls = cljs.core.array_seq(Array.prototype.slice.call(arguments, 4), 0)
+ }
+ return G__3124__delegate.call(this, f, c1, c2, c3, colls)
+ };
+ G__3124.cljs$lang$maxFixedArity = 4;
+ G__3124.cljs$lang$applyTo = function(arglist__3125) {
+ var f = cljs.core.first(arglist__3125);
+ var c1 = cljs.core.first(cljs.core.next(arglist__3125));
+ var c2 = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3125)));
+ var c3 = cljs.core.first(cljs.core.next(cljs.core.next(cljs.core.next(arglist__3125))));
+ var colls = cljs.core.rest(cljs.core.next(cljs.core.next(cljs.core.next(arglist__3125))));
+ return G__3124__delegate(f, c1, c2, c3, colls)
+ };
+ G__3124.cljs$lang$arity$variadic = G__3124__delegate;
+ return G__3124
+ }();
+ map = function(f, c1, c2, c3, var_args) {
+ var colls = var_args;
+ switch(arguments.length) {
+ case 2:
+ return map__2.call(this, f, c1);
+ case 3:
+ return map__3.call(this, f, c1, c2);
+ case 4:
+ return map__4.call(this, f, c1, c2, c3);
+ default:
+ return map__5.cljs$lang$arity$variadic(f, c1, c2, c3, cljs.core.array_seq(arguments, 4))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ map.cljs$lang$maxFixedArity = 4;
+ map.cljs$lang$applyTo = map__5.cljs$lang$applyTo;
+ map.cljs$lang$arity$2 = map__2;
+ map.cljs$lang$arity$3 = map__3;
+ map.cljs$lang$arity$4 = map__4;
+ map.cljs$lang$arity$variadic = map__5.cljs$lang$arity$variadic;
+ return map
+}();
+cljs.core.take = function take(n, coll) {
+ return new cljs.core.LazySeq(null, false, function() {
+ if(n > 0) {
+ var temp__3974__auto__ = cljs.core.seq.call(null, coll);
+ if(temp__3974__auto__) {
+ var s = temp__3974__auto__;
+ return cljs.core.cons.call(null, cljs.core.first.call(null, s), take.call(null, n - 1, cljs.core.rest.call(null, s)))
+ }else {
+ return null
+ }
+ }else {
+ return null
+ }
+ }, null)
+};
+cljs.core.drop = function drop(n, coll) {
+ var step = function(n__$1, coll__$1) {
+ while(true) {
+ var s = cljs.core.seq.call(null, coll__$1);
+ if(cljs.core.truth_(function() {
+ var and__3822__auto__ = n__$1 > 0;
+ if(and__3822__auto__) {
+ return s
+ }else {
+ return and__3822__auto__
+ }
+ }())) {
+ var G__3126 = n__$1 - 1;
+ var G__3127 = cljs.core.rest.call(null, s);
+ n__$1 = G__3126;
+ coll__$1 = G__3127;
+ continue
+ }else {
+ return s
+ }
+ break
+ }
+ };
+ return new cljs.core.LazySeq(null, false, function() {
+ return step.call(null, n, coll)
+ }, null)
+};
+cljs.core.drop_last = function() {
+ var drop_last = null;
+ var drop_last__1 = function(s) {
+ return drop_last.call(null, 1, s)
+ };
+ var drop_last__2 = function(n, s) {
+ return cljs.core.map.call(null, function(x, _) {
+ return x
+ }, s, cljs.core.drop.call(null, n, s))
+ };
+ drop_last = function(n, s) {
+ switch(arguments.length) {
+ case 1:
+ return drop_last__1.call(this, n);
+ case 2:
+ return drop_last__2.call(this, n, s)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ drop_last.cljs$lang$arity$1 = drop_last__1;
+ drop_last.cljs$lang$arity$2 = drop_last__2;
+ return drop_last
+}();
+cljs.core.take_last = function take_last(n, coll) {
+ var s = cljs.core.seq.call(null, coll);
+ var lead = cljs.core.seq.call(null, cljs.core.drop.call(null, n, coll));
+ while(true) {
+ if(lead) {
+ var G__3128 = cljs.core.next.call(null, s);
+ var G__3129 = cljs.core.next.call(null, lead);
+ s = G__3128;
+ lead = G__3129;
+ continue
+ }else {
+ return s
+ }
+ break
+ }
+};
+cljs.core.drop_while = function drop_while(pred, coll) {
+ var step = function(pred__$1, coll__$1) {
+ while(true) {
+ var s = cljs.core.seq.call(null, coll__$1);
+ if(cljs.core.truth_(function() {
+ var and__3822__auto__ = s;
+ if(and__3822__auto__) {
+ return pred__$1.call(null, cljs.core.first.call(null, s))
+ }else {
+ return and__3822__auto__
+ }
+ }())) {
+ var G__3130 = pred__$1;
+ var G__3131 = cljs.core.rest.call(null, s);
+ pred__$1 = G__3130;
+ coll__$1 = G__3131;
+ continue
+ }else {
+ return s
+ }
+ break
+ }
+ };
+ return new cljs.core.LazySeq(null, false, function() {
+ return step.call(null, pred, coll)
+ }, null)
+};
+cljs.core.cycle = function cycle(coll) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var temp__3974__auto__ = cljs.core.seq.call(null, coll);
+ if(temp__3974__auto__) {
+ var s = temp__3974__auto__;
+ return cljs.core.concat.call(null, s, cycle.call(null, s))
+ }else {
+ return null
+ }
+ }, null)
+};
+cljs.core.split_at = function split_at(n, coll) {
+ return cljs.core.PersistentVector.fromArray([cljs.core.take.call(null, n, coll), cljs.core.drop.call(null, n, coll)], true)
+};
+cljs.core.repeat = function() {
+ var repeat = null;
+ var repeat__1 = function(x) {
+ return new cljs.core.LazySeq(null, false, function() {
+ return cljs.core.cons.call(null, x, repeat.call(null, x))
+ }, null)
+ };
+ var repeat__2 = function(n, x) {
+ return cljs.core.take.call(null, n, repeat.call(null, x))
+ };
+ repeat = function(n, x) {
+ switch(arguments.length) {
+ case 1:
+ return repeat__1.call(this, n);
+ case 2:
+ return repeat__2.call(this, n, x)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ repeat.cljs$lang$arity$1 = repeat__1;
+ repeat.cljs$lang$arity$2 = repeat__2;
+ return repeat
+}();
+cljs.core.replicate = function replicate(n, x) {
+ return cljs.core.take.call(null, n, cljs.core.repeat.call(null, x))
+};
+cljs.core.repeatedly = function() {
+ var repeatedly = null;
+ var repeatedly__1 = function(f) {
+ return new cljs.core.LazySeq(null, false, function() {
+ return cljs.core.cons.call(null, f.call(null), repeatedly.call(null, f))
+ }, null)
+ };
+ var repeatedly__2 = function(n, f) {
+ return cljs.core.take.call(null, n, repeatedly.call(null, f))
+ };
+ repeatedly = function(n, f) {
+ switch(arguments.length) {
+ case 1:
+ return repeatedly__1.call(this, n);
+ case 2:
+ return repeatedly__2.call(this, n, f)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ repeatedly.cljs$lang$arity$1 = repeatedly__1;
+ repeatedly.cljs$lang$arity$2 = repeatedly__2;
+ return repeatedly
+}();
+cljs.core.iterate = function iterate(f, x) {
+ return cljs.core.cons.call(null, x, new cljs.core.LazySeq(null, false, function() {
+ return iterate.call(null, f, f.call(null, x))
+ }, null))
+};
+cljs.core.interleave = function() {
+ var interleave = null;
+ var interleave__2 = function(c1, c2) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var s1 = cljs.core.seq.call(null, c1);
+ var s2 = cljs.core.seq.call(null, c2);
+ if(function() {
+ var and__3822__auto__ = s1;
+ if(and__3822__auto__) {
+ return s2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return cljs.core.cons.call(null, cljs.core.first.call(null, s1), cljs.core.cons.call(null, cljs.core.first.call(null, s2), interleave.call(null, cljs.core.rest.call(null, s1), cljs.core.rest.call(null, s2))))
+ }else {
+ return null
+ }
+ }, null)
+ };
+ var interleave__3 = function() {
+ var G__3132__delegate = function(c1, c2, colls) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var ss = cljs.core.map.call(null, cljs.core.seq, cljs.core.conj.call(null, colls, c2, c1));
+ if(cljs.core.every_QMARK_.call(null, cljs.core.identity, ss)) {
+ return cljs.core.concat.call(null, cljs.core.map.call(null, cljs.core.first, ss), cljs.core.apply.call(null, interleave, cljs.core.map.call(null, cljs.core.rest, ss)))
+ }else {
+ return null
+ }
+ }, null)
+ };
+ var G__3132 = function(c1, c2, var_args) {
+ var colls = null;
+ if(goog.isDef(var_args)) {
+ colls = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__3132__delegate.call(this, c1, c2, colls)
+ };
+ G__3132.cljs$lang$maxFixedArity = 2;
+ G__3132.cljs$lang$applyTo = function(arglist__3133) {
+ var c1 = cljs.core.first(arglist__3133);
+ var c2 = cljs.core.first(cljs.core.next(arglist__3133));
+ var colls = cljs.core.rest(cljs.core.next(arglist__3133));
+ return G__3132__delegate(c1, c2, colls)
+ };
+ G__3132.cljs$lang$arity$variadic = G__3132__delegate;
+ return G__3132
+ }();
+ interleave = function(c1, c2, var_args) {
+ var colls = var_args;
+ switch(arguments.length) {
+ case 2:
+ return interleave__2.call(this, c1, c2);
+ default:
+ return interleave__3.cljs$lang$arity$variadic(c1, c2, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ interleave.cljs$lang$maxFixedArity = 2;
+ interleave.cljs$lang$applyTo = interleave__3.cljs$lang$applyTo;
+ interleave.cljs$lang$arity$2 = interleave__2;
+ interleave.cljs$lang$arity$variadic = interleave__3.cljs$lang$arity$variadic;
+ return interleave
+}();
+cljs.core.interpose = function interpose(sep, coll) {
+ return cljs.core.drop.call(null, 1, cljs.core.interleave.call(null, cljs.core.repeat.call(null, sep), coll))
+};
+cljs.core.flatten1 = function flatten1(colls) {
+ var cat = function cat(coll, colls__$1) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var temp__3971__auto__ = cljs.core.seq.call(null, coll);
+ if(temp__3971__auto__) {
+ var coll__$1 = temp__3971__auto__;
+ return cljs.core.cons.call(null, cljs.core.first.call(null, coll__$1), cat.call(null, cljs.core.rest.call(null, coll__$1), colls__$1))
+ }else {
+ if(cljs.core.seq.call(null, colls__$1)) {
+ return cat.call(null, cljs.core.first.call(null, colls__$1), cljs.core.rest.call(null, colls__$1))
+ }else {
+ return null
+ }
+ }
+ }, null)
+ };
+ return cat.call(null, null, colls)
+};
+cljs.core.mapcat = function() {
+ var mapcat = null;
+ var mapcat__2 = function(f, coll) {
+ return cljs.core.flatten1.call(null, cljs.core.map.call(null, f, coll))
+ };
+ var mapcat__3 = function() {
+ var G__3134__delegate = function(f, coll, colls) {
+ return cljs.core.flatten1.call(null, cljs.core.apply.call(null, cljs.core.map, f, coll, colls))
+ };
+ var G__3134 = function(f, coll, var_args) {
+ var colls = null;
+ if(goog.isDef(var_args)) {
+ colls = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return G__3134__delegate.call(this, f, coll, colls)
+ };
+ G__3134.cljs$lang$maxFixedArity = 2;
+ G__3134.cljs$lang$applyTo = function(arglist__3135) {
+ var f = cljs.core.first(arglist__3135);
+ var coll = cljs.core.first(cljs.core.next(arglist__3135));
+ var colls = cljs.core.rest(cljs.core.next(arglist__3135));
+ return G__3134__delegate(f, coll, colls)
+ };
+ G__3134.cljs$lang$arity$variadic = G__3134__delegate;
+ return G__3134
+ }();
+ mapcat = function(f, coll, var_args) {
+ var colls = var_args;
+ switch(arguments.length) {
+ case 2:
+ return mapcat__2.call(this, f, coll);
+ default:
+ return mapcat__3.cljs$lang$arity$variadic(f, coll, cljs.core.array_seq(arguments, 2))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ mapcat.cljs$lang$maxFixedArity = 2;
+ mapcat.cljs$lang$applyTo = mapcat__3.cljs$lang$applyTo;
+ mapcat.cljs$lang$arity$2 = mapcat__2;
+ mapcat.cljs$lang$arity$variadic = mapcat__3.cljs$lang$arity$variadic;
+ return mapcat
+}();
+cljs.core.filter = function filter(pred, coll) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var temp__3974__auto__ = cljs.core.seq.call(null, coll);
+ if(temp__3974__auto__) {
+ var s = temp__3974__auto__;
+ if(cljs.core.chunked_seq_QMARK_.call(null, s)) {
+ var c = cljs.core.chunk_first.call(null, s);
+ var size = cljs.core.count.call(null, c);
+ var b = cljs.core.chunk_buffer.call(null, size);
+ var n__2535__auto__ = size;
+ var i = 0;
+ while(true) {
+ if(i < n__2535__auto__) {
+ if(cljs.core.truth_(pred.call(null, cljs.core._nth.call(null, c, i)))) {
+ cljs.core.chunk_append.call(null, b, cljs.core._nth.call(null, c, i))
+ }else {
+ }
+ var G__3136 = i + 1;
+ i = G__3136;
+ continue
+ }else {
+ }
+ break
+ }
+ return cljs.core.chunk_cons.call(null, cljs.core.chunk.call(null, b), filter.call(null, pred, cljs.core.chunk_rest.call(null, s)))
+ }else {
+ var f = cljs.core.first.call(null, s);
+ var r = cljs.core.rest.call(null, s);
+ if(cljs.core.truth_(pred.call(null, f))) {
+ return cljs.core.cons.call(null, f, filter.call(null, pred, r))
+ }else {
+ return filter.call(null, pred, r)
+ }
+ }
+ }else {
+ return null
+ }
+ }, null)
+};
+cljs.core.remove = function remove(pred, coll) {
+ return cljs.core.filter.call(null, cljs.core.complement.call(null, pred), coll)
+};
+cljs.core.tree_seq = function tree_seq(branch_QMARK_, children, root) {
+ var walk = function walk(node) {
+ return new cljs.core.LazySeq(null, false, function() {
+ return cljs.core.cons.call(null, node, cljs.core.truth_(branch_QMARK_.call(null, node)) ? cljs.core.mapcat.call(null, walk, children.call(null, node)) : null)
+ }, null)
+ };
+ return walk.call(null, root)
+};
+cljs.core.flatten = function flatten(x) {
+ return cljs.core.filter.call(null, function(p1__3137_SHARP_) {
+ return!cljs.core.sequential_QMARK_.call(null, p1__3137_SHARP_)
+ }, cljs.core.rest.call(null, cljs.core.tree_seq.call(null, cljs.core.sequential_QMARK_, cljs.core.seq, x)))
+};
+cljs.core.into = function into(to, from) {
+ if(function() {
+ var G__3139 = to;
+ if(G__3139) {
+ if(function() {
+ var or__3824__auto__ = G__3139.cljs$lang$protocol_mask$partition1$ & 4;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__3139.cljs$core$IEditableCollection$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__3139.cljs$lang$protocol_mask$partition1$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IEditableCollection, G__3139)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IEditableCollection, G__3139)
+ }
+ }()) {
+ return cljs.core.persistent_BANG_.call(null, cljs.core.reduce.call(null, cljs.core._conj_BANG_, cljs.core.transient$.call(null, to), from))
+ }else {
+ return cljs.core.reduce.call(null, cljs.core._conj, to, from)
+ }
+};
+cljs.core.mapv = function() {
+ var mapv = null;
+ var mapv__2 = function(f, coll) {
+ return cljs.core.persistent_BANG_.call(null, cljs.core.reduce.call(null, function(v, o) {
+ return cljs.core.conj_BANG_.call(null, v, f.call(null, o))
+ }, cljs.core.transient$.call(null, cljs.core.PersistentVector.EMPTY), coll))
+ };
+ var mapv__3 = function(f, c1, c2) {
+ return cljs.core.into.call(null, cljs.core.PersistentVector.EMPTY, cljs.core.map.call(null, f, c1, c2))
+ };
+ var mapv__4 = function(f, c1, c2, c3) {
+ return cljs.core.into.call(null, cljs.core.PersistentVector.EMPTY, cljs.core.map.call(null, f, c1, c2, c3))
+ };
+ var mapv__5 = function() {
+ var G__3140__delegate = function(f, c1, c2, c3, colls) {
+ return cljs.core.into.call(null, cljs.core.PersistentVector.EMPTY, cljs.core.apply.call(null, cljs.core.map, f, c1, c2, c3, colls))
+ };
+ var G__3140 = function(f, c1, c2, c3, var_args) {
+ var colls = null;
+ if(goog.isDef(var_args)) {
+ colls = cljs.core.array_seq(Array.prototype.slice.call(arguments, 4), 0)
+ }
+ return G__3140__delegate.call(this, f, c1, c2, c3, colls)
+ };
+ G__3140.cljs$lang$maxFixedArity = 4;
+ G__3140.cljs$lang$applyTo = function(arglist__3141) {
+ var f = cljs.core.first(arglist__3141);
+ var c1 = cljs.core.first(cljs.core.next(arglist__3141));
+ var c2 = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3141)));
+ var c3 = cljs.core.first(cljs.core.next(cljs.core.next(cljs.core.next(arglist__3141))));
+ var colls = cljs.core.rest(cljs.core.next(cljs.core.next(cljs.core.next(arglist__3141))));
+ return G__3140__delegate(f, c1, c2, c3, colls)
+ };
+ G__3140.cljs$lang$arity$variadic = G__3140__delegate;
+ return G__3140
+ }();
+ mapv = function(f, c1, c2, c3, var_args) {
+ var colls = var_args;
+ switch(arguments.length) {
+ case 2:
+ return mapv__2.call(this, f, c1);
+ case 3:
+ return mapv__3.call(this, f, c1, c2);
+ case 4:
+ return mapv__4.call(this, f, c1, c2, c3);
+ default:
+ return mapv__5.cljs$lang$arity$variadic(f, c1, c2, c3, cljs.core.array_seq(arguments, 4))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ mapv.cljs$lang$maxFixedArity = 4;
+ mapv.cljs$lang$applyTo = mapv__5.cljs$lang$applyTo;
+ mapv.cljs$lang$arity$2 = mapv__2;
+ mapv.cljs$lang$arity$3 = mapv__3;
+ mapv.cljs$lang$arity$4 = mapv__4;
+ mapv.cljs$lang$arity$variadic = mapv__5.cljs$lang$arity$variadic;
+ return mapv
+}();
+cljs.core.filterv = function filterv(pred, coll) {
+ return cljs.core.persistent_BANG_.call(null, cljs.core.reduce.call(null, function(v, o) {
+ if(cljs.core.truth_(pred.call(null, o))) {
+ return cljs.core.conj_BANG_.call(null, v, o)
+ }else {
+ return v
+ }
+ }, cljs.core.transient$.call(null, cljs.core.PersistentVector.EMPTY), coll))
+};
+cljs.core.partition = function() {
+ var partition = null;
+ var partition__2 = function(n, coll) {
+ return partition.call(null, n, n, coll)
+ };
+ var partition__3 = function(n, step, coll) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var temp__3974__auto__ = cljs.core.seq.call(null, coll);
+ if(temp__3974__auto__) {
+ var s = temp__3974__auto__;
+ var p = cljs.core.take.call(null, n, s);
+ if(n === cljs.core.count.call(null, p)) {
+ return cljs.core.cons.call(null, p, partition.call(null, n, step, cljs.core.drop.call(null, step, s)))
+ }else {
+ return null
+ }
+ }else {
+ return null
+ }
+ }, null)
+ };
+ var partition__4 = function(n, step, pad, coll) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var temp__3974__auto__ = cljs.core.seq.call(null, coll);
+ if(temp__3974__auto__) {
+ var s = temp__3974__auto__;
+ var p = cljs.core.take.call(null, n, s);
+ if(n === cljs.core.count.call(null, p)) {
+ return cljs.core.cons.call(null, p, partition.call(null, n, step, pad, cljs.core.drop.call(null, step, s)))
+ }else {
+ return cljs.core.list.call(null, cljs.core.take.call(null, n, cljs.core.concat.call(null, p, pad)))
+ }
+ }else {
+ return null
+ }
+ }, null)
+ };
+ partition = function(n, step, pad, coll) {
+ switch(arguments.length) {
+ case 2:
+ return partition__2.call(this, n, step);
+ case 3:
+ return partition__3.call(this, n, step, pad);
+ case 4:
+ return partition__4.call(this, n, step, pad, coll)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ partition.cljs$lang$arity$2 = partition__2;
+ partition.cljs$lang$arity$3 = partition__3;
+ partition.cljs$lang$arity$4 = partition__4;
+ return partition
+}();
+cljs.core.get_in = function() {
+ var get_in = null;
+ var get_in__2 = function(m, ks) {
+ return cljs.core.reduce.call(null, cljs.core.get, m, ks)
+ };
+ var get_in__3 = function(m, ks, not_found) {
+ var sentinel = cljs.core.lookup_sentinel;
+ var m__$1 = m;
+ var ks__$1 = cljs.core.seq.call(null, ks);
+ while(true) {
+ if(ks__$1) {
+ var m__$2 = cljs.core._lookup.call(null, m__$1, cljs.core.first.call(null, ks__$1), sentinel);
+ if(sentinel === m__$2) {
+ return not_found
+ }else {
+ var G__3142 = sentinel;
+ var G__3143 = m__$2;
+ var G__3144 = cljs.core.next.call(null, ks__$1);
+ sentinel = G__3142;
+ m__$1 = G__3143;
+ ks__$1 = G__3144;
+ continue
+ }
+ }else {
+ return m__$1
+ }
+ break
+ }
+ };
+ get_in = function(m, ks, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return get_in__2.call(this, m, ks);
+ case 3:
+ return get_in__3.call(this, m, ks, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ get_in.cljs$lang$arity$2 = get_in__2;
+ get_in.cljs$lang$arity$3 = get_in__3;
+ return get_in
+}();
+cljs.core.assoc_in = function assoc_in(m, p__3145, v) {
+ var vec__3147 = p__3145;
+ var k = cljs.core.nth.call(null, vec__3147, 0, null);
+ var ks = cljs.core.nthnext.call(null, vec__3147, 1);
+ if(cljs.core.truth_(ks)) {
+ return cljs.core.assoc.call(null, m, k, assoc_in.call(null, cljs.core._lookup.call(null, m, k, null), ks, v))
+ }else {
+ return cljs.core.assoc.call(null, m, k, v)
+ }
+};
+cljs.core.update_in = function() {
+ var update_in__delegate = function(m, p__3148, f, args) {
+ var vec__3150 = p__3148;
+ var k = cljs.core.nth.call(null, vec__3150, 0, null);
+ var ks = cljs.core.nthnext.call(null, vec__3150, 1);
+ if(cljs.core.truth_(ks)) {
+ return cljs.core.assoc.call(null, m, k, cljs.core.apply.call(null, update_in, cljs.core._lookup.call(null, m, k, null), ks, f, args))
+ }else {
+ return cljs.core.assoc.call(null, m, k, cljs.core.apply.call(null, f, cljs.core._lookup.call(null, m, k, null), args))
+ }
+ };
+ var update_in = function(m, p__3148, f, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return update_in__delegate.call(this, m, p__3148, f, args)
+ };
+ update_in.cljs$lang$maxFixedArity = 3;
+ update_in.cljs$lang$applyTo = function(arglist__3151) {
+ var m = cljs.core.first(arglist__3151);
+ var p__3148 = cljs.core.first(cljs.core.next(arglist__3151));
+ var f = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3151)));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3151)));
+ return update_in__delegate(m, p__3148, f, args)
+ };
+ update_in.cljs$lang$arity$variadic = update_in__delegate;
+ return update_in
+}();
+goog.provide("cljs.core.Vector");
+cljs.core.Vector = function(meta, array, __hash) {
+ this.meta = meta;
+ this.array = array;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 32400159
+};
+cljs.core.Vector.cljs$lang$type = true;
+cljs.core.Vector.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/Vector")
+};
+cljs.core.Vector.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/Vector")
+};
+cljs.core.Vector.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.Vector.prototype.cljs$core$ILookup$_lookup$arity$2 = function(coll, k) {
+ var self__ = this;
+ return coll.cljs$core$IIndexed$_nth$arity$3(coll, k, null)
+};
+cljs.core.Vector.prototype.cljs$core$ILookup$_lookup$arity$3 = function(coll, k, not_found) {
+ var self__ = this;
+ return coll.cljs$core$IIndexed$_nth$arity$3(coll, k, not_found)
+};
+cljs.core.Vector.prototype.cljs$core$IAssociative$_assoc$arity$3 = function(coll, k, v) {
+ var self__ = this;
+ var new_array = self__.array.slice();
+ new_array[k] = v;
+ return new cljs.core.Vector(self__.meta, new_array, null)
+};
+cljs.core.Vector.prototype.call = function() {
+ var G__3156 = null;
+ var G__3156__2 = function(this_sym3154, k) {
+ var self__ = this;
+ var this_sym3154__$1 = this;
+ var coll = this_sym3154__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$2(coll, k)
+ };
+ var G__3156__3 = function(this_sym3155, k, not_found) {
+ var self__ = this;
+ var this_sym3155__$1 = this;
+ var coll = this_sym3155__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, not_found)
+ };
+ G__3156 = function(this_sym3155, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3156__2.call(this, this_sym3155, k);
+ case 3:
+ return G__3156__3.call(this, this_sym3155, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3156
+}();
+cljs.core.Vector.prototype.apply = function(this_sym3152, args3153) {
+ var self__ = this;
+ return this_sym3152.call.apply(this_sym3152, [this_sym3152].concat(args3153.slice()))
+};
+cljs.core.Vector.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ var new_array = self__.array.slice();
+ new_array.push(o);
+ return new cljs.core.Vector(self__.meta, new_array, null)
+};
+cljs.core.Vector.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.Vector.prototype.cljs$core$IReduce$_reduce$arity$2 = function(v, f) {
+ var self__ = this;
+ return cljs.core.ci_reduce.call(null, self__.array, f)
+};
+cljs.core.Vector.prototype.cljs$core$IReduce$_reduce$arity$3 = function(v, f, start) {
+ var self__ = this;
+ return cljs.core.ci_reduce.call(null, self__.array, f, start)
+};
+cljs.core.Vector.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.array.length > 0) {
+ var vector_seq = function vector_seq(i) {
+ return new cljs.core.LazySeq(null, false, function() {
+ if(i < self__.array.length) {
+ return cljs.core.cons.call(null, self__.array[i], vector_seq.call(null, i + 1))
+ }else {
+ return null
+ }
+ }, null)
+ };
+ return vector_seq.call(null, 0)
+ }else {
+ return null
+ }
+};
+cljs.core.Vector.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.array.length
+};
+cljs.core.Vector.prototype.cljs$core$IStack$_peek$arity$1 = function(coll) {
+ var self__ = this;
+ var count = self__.array.length;
+ if(count > 0) {
+ return self__.array[count - 1]
+ }else {
+ return null
+ }
+};
+cljs.core.Vector.prototype.cljs$core$IStack$_pop$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.array.length > 0) {
+ var new_array = self__.array.slice();
+ new_array.pop();
+ return new cljs.core.Vector(self__.meta, new_array, null)
+ }else {
+ throw new Error("Can't pop empty vector");
+ }
+};
+cljs.core.Vector.prototype.cljs$core$IVector$_assoc_n$arity$3 = function(coll, n, val) {
+ var self__ = this;
+ return coll.cljs$core$IAssociative$_assoc$arity$3(coll, n, val)
+};
+cljs.core.Vector.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.Vector.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.Vector(meta__$1, self__.array, self__.__hash)
+};
+cljs.core.Vector.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.Vector.prototype.cljs$core$IIndexed$_nth$arity$2 = function(coll, n) {
+ var self__ = this;
+ if(function() {
+ var and__3822__auto__ = 0 <= n;
+ if(and__3822__auto__) {
+ return n < self__.array.length
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return self__.array[n]
+ }else {
+ return null
+ }
+};
+cljs.core.Vector.prototype.cljs$core$IIndexed$_nth$arity$3 = function(coll, n, not_found) {
+ var self__ = this;
+ if(function() {
+ var and__3822__auto__ = 0 <= n;
+ if(and__3822__auto__) {
+ return n < self__.array.length
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return self__.array[n]
+ }else {
+ return not_found
+ }
+};
+cljs.core.Vector.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.Vector.EMPTY, self__.meta)
+};
+cljs.core.Vector;
+cljs.core.Vector.EMPTY = new cljs.core.Vector(null, [], 0);
+cljs.core.Vector.fromArray = function(xs) {
+ return new cljs.core.Vector(null, xs, null)
+};
+goog.provide("cljs.core.VectorNode");
+cljs.core.VectorNode = function(edit, arr) {
+ this.edit = edit;
+ this.arr = arr
+};
+cljs.core.VectorNode.cljs$lang$type = true;
+cljs.core.VectorNode.cljs$lang$ctorPrSeq = function(this__2317__auto__) {
+ return cljs.core.list.call(null, "cljs.core/VectorNode")
+};
+cljs.core.VectorNode.cljs$lang$ctorPrWriter = function(this__2317__auto__, writer__2318__auto__) {
+ return cljs.core._write.call(null, writer__2318__auto__, "cljs.core/VectorNode")
+};
+cljs.core.VectorNode;
+cljs.core.pv_fresh_node = function pv_fresh_node(edit) {
+ return new cljs.core.VectorNode(edit, cljs.core.make_array.call(null, 32))
+};
+cljs.core.pv_aget = function pv_aget(node, idx) {
+ return node.arr[idx]
+};
+cljs.core.pv_aset = function pv_aset(node, idx, val) {
+ return node.arr[idx] = val
+};
+cljs.core.pv_clone_node = function pv_clone_node(node) {
+ return new cljs.core.VectorNode(node.edit, node.arr.slice())
+};
+cljs.core.tail_off = function tail_off(pv) {
+ var cnt = pv.cnt;
+ if(cnt < 32) {
+ return 0
+ }else {
+ return cnt - 1 >>> 5 << 5
+ }
+};
+cljs.core.new_path = function new_path(edit, level, node) {
+ var ll = level;
+ var ret = node;
+ while(true) {
+ if(ll === 0) {
+ return ret
+ }else {
+ var embed = ret;
+ var r = cljs.core.pv_fresh_node.call(null, edit);
+ var _ = cljs.core.pv_aset.call(null, r, 0, embed);
+ var G__3157 = ll - 5;
+ var G__3158 = r;
+ ll = G__3157;
+ ret = G__3158;
+ continue
+ }
+ break
+ }
+};
+cljs.core.push_tail = function push_tail(pv, level, parent, tailnode) {
+ var ret = cljs.core.pv_clone_node.call(null, parent);
+ var subidx = pv.cnt - 1 >>> level & 31;
+ if(5 === level) {
+ cljs.core.pv_aset.call(null, ret, subidx, tailnode);
+ return ret
+ }else {
+ var child = cljs.core.pv_aget.call(null, parent, subidx);
+ if(!(child == null)) {
+ var node_to_insert = push_tail.call(null, pv, level - 5, child, tailnode);
+ cljs.core.pv_aset.call(null, ret, subidx, node_to_insert);
+ return ret
+ }else {
+ var node_to_insert = cljs.core.new_path.call(null, null, level - 5, tailnode);
+ cljs.core.pv_aset.call(null, ret, subidx, node_to_insert);
+ return ret
+ }
+ }
+};
+cljs.core.array_for = function array_for(pv, i) {
+ if(function() {
+ var and__3822__auto__ = 0 <= i;
+ if(and__3822__auto__) {
+ return i < pv.cnt
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ if(i >= cljs.core.tail_off.call(null, pv)) {
+ return pv.tail
+ }else {
+ var node = pv.root;
+ var level = pv.shift;
+ while(true) {
+ if(level > 0) {
+ var G__3159 = cljs.core.pv_aget.call(null, node, i >>> level & 31);
+ var G__3160 = level - 5;
+ node = G__3159;
+ level = G__3160;
+ continue
+ }else {
+ return node.arr
+ }
+ break
+ }
+ }
+ }else {
+ throw new Error([cljs.core.str("No item "), cljs.core.str(i), cljs.core.str(" in vector of length "), cljs.core.str(pv.cnt)].join(""));
+ }
+};
+cljs.core.do_assoc = function do_assoc(pv, level, node, i, val) {
+ var ret = cljs.core.pv_clone_node.call(null, node);
+ if(level === 0) {
+ cljs.core.pv_aset.call(null, ret, i & 31, val);
+ return ret
+ }else {
+ var subidx = i >>> level & 31;
+ cljs.core.pv_aset.call(null, ret, subidx, do_assoc.call(null, pv, level - 5, cljs.core.pv_aget.call(null, node, subidx), i, val));
+ return ret
+ }
+};
+cljs.core.pop_tail = function pop_tail(pv, level, node) {
+ var subidx = pv.cnt - 2 >>> level & 31;
+ if(level > 5) {
+ var new_child = pop_tail.call(null, pv, level - 5, cljs.core.pv_aget.call(null, node, subidx));
+ if(function() {
+ var and__3822__auto__ = new_child == null;
+ if(and__3822__auto__) {
+ return subidx === 0
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return null
+ }else {
+ var ret = cljs.core.pv_clone_node.call(null, node);
+ cljs.core.pv_aset.call(null, ret, subidx, new_child);
+ return ret
+ }
+ }else {
+ if(subidx === 0) {
+ return null
+ }else {
+ if("\ufdd0'else") {
+ var ret = cljs.core.pv_clone_node.call(null, node);
+ cljs.core.pv_aset.call(null, ret, subidx, null);
+ return ret
+ }else {
+ return null
+ }
+ }
+ }
+};
+goog.provide("cljs.core.PersistentVector");
+cljs.core.PersistentVector = function(meta, cnt, shift, root, tail, __hash) {
+ this.meta = meta;
+ this.cnt = cnt;
+ this.shift = shift;
+ this.root = root;
+ this.tail = tail;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 4;
+ this.cljs$lang$protocol_mask$partition0$ = 167668511
+};
+cljs.core.PersistentVector.cljs$lang$type = true;
+cljs.core.PersistentVector.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/PersistentVector")
+};
+cljs.core.PersistentVector.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/PersistentVector")
+};
+cljs.core.PersistentVector.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = function(coll) {
+ var self__ = this;
+ return new cljs.core.TransientVector(self__.cnt, self__.shift, cljs.core.tv_editable_root.call(null, self__.root), cljs.core.tv_editable_tail.call(null, self__.tail))
+};
+cljs.core.PersistentVector.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.PersistentVector.prototype.cljs$core$ILookup$_lookup$arity$2 = function(coll, k) {
+ var self__ = this;
+ return coll.cljs$core$IIndexed$_nth$arity$3(coll, k, null)
+};
+cljs.core.PersistentVector.prototype.cljs$core$ILookup$_lookup$arity$3 = function(coll, k, not_found) {
+ var self__ = this;
+ return coll.cljs$core$IIndexed$_nth$arity$3(coll, k, not_found)
+};
+cljs.core.PersistentVector.prototype.cljs$core$IAssociative$_assoc$arity$3 = function(coll, k, v) {
+ var self__ = this;
+ if(function() {
+ var and__3822__auto__ = 0 <= k;
+ if(and__3822__auto__) {
+ return k < self__.cnt
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ if(cljs.core.tail_off.call(null, coll) <= k) {
+ var new_tail = self__.tail.slice();
+ new_tail[k & 31] = v;
+ return new cljs.core.PersistentVector(self__.meta, self__.cnt, self__.shift, self__.root, new_tail, null)
+ }else {
+ return new cljs.core.PersistentVector(self__.meta, self__.cnt, self__.shift, cljs.core.do_assoc.call(null, coll, self__.shift, self__.root, k, v), self__.tail, null)
+ }
+ }else {
+ if(k === self__.cnt) {
+ return coll.cljs$core$ICollection$_conj$arity$2(coll, v)
+ }else {
+ if("\ufdd0'else") {
+ throw new Error([cljs.core.str("Index "), cljs.core.str(k), cljs.core.str(" out of bounds [0,"), cljs.core.str(self__.cnt), cljs.core.str("]")].join(""));
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.PersistentVector.prototype.call = function() {
+ var G__3165 = null;
+ var G__3165__2 = function(this_sym3163, k) {
+ var self__ = this;
+ var this_sym3163__$1 = this;
+ var coll = this_sym3163__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$2(coll, k)
+ };
+ var G__3165__3 = function(this_sym3164, k, not_found) {
+ var self__ = this;
+ var this_sym3164__$1 = this;
+ var coll = this_sym3164__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, not_found)
+ };
+ G__3165 = function(this_sym3164, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3165__2.call(this, this_sym3164, k);
+ case 3:
+ return G__3165__3.call(this, this_sym3164, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3165
+}();
+cljs.core.PersistentVector.prototype.apply = function(this_sym3161, args3162) {
+ var self__ = this;
+ return this_sym3161.call.apply(this_sym3161, [this_sym3161].concat(args3162.slice()))
+};
+cljs.core.PersistentVector.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = function(v, f, init) {
+ var self__ = this;
+ var step_init = [0, init];
+ var i = 0;
+ while(true) {
+ if(i < self__.cnt) {
+ var arr = cljs.core.array_for.call(null, v, i);
+ var len = arr.length;
+ var init__$1 = function() {
+ var j = 0;
+ var init__$1 = step_init[1];
+ while(true) {
+ if(j < len) {
+ var init__$2 = f.call(null, init__$1, j + i, arr[j]);
+ if(cljs.core.reduced_QMARK_.call(null, init__$2)) {
+ return init__$2
+ }else {
+ var G__3166 = j + 1;
+ var G__3167 = init__$2;
+ j = G__3166;
+ init__$1 = G__3167;
+ continue
+ }
+ }else {
+ step_init[0] = len;
+ step_init[1] = init__$1;
+ return init__$1
+ }
+ break
+ }
+ }();
+ if(cljs.core.reduced_QMARK_.call(null, init__$1)) {
+ return cljs.core.deref.call(null, init__$1)
+ }else {
+ var G__3168 = i + step_init[0];
+ i = G__3168;
+ continue
+ }
+ }else {
+ return step_init[1]
+ }
+ break
+ }
+};
+cljs.core.PersistentVector.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ if(self__.cnt - cljs.core.tail_off.call(null, coll) < 32) {
+ var new_tail = self__.tail.slice();
+ new_tail.push(o);
+ return new cljs.core.PersistentVector(self__.meta, self__.cnt + 1, self__.shift, self__.root, new_tail, null)
+ }else {
+ var root_overflow_QMARK_ = self__.cnt >>> 5 > 1 << self__.shift;
+ var new_shift = root_overflow_QMARK_ ? self__.shift + 5 : self__.shift;
+ var new_root = root_overflow_QMARK_ ? function() {
+ var n_r = cljs.core.pv_fresh_node.call(null, null);
+ cljs.core.pv_aset.call(null, n_r, 0, self__.root);
+ cljs.core.pv_aset.call(null, n_r, 1, cljs.core.new_path.call(null, null, self__.shift, new cljs.core.VectorNode(null, self__.tail)));
+ return n_r
+ }() : cljs.core.push_tail.call(null, coll, self__.shift, self__.root, new cljs.core.VectorNode(null, self__.tail));
+ return new cljs.core.PersistentVector(self__.meta, self__.cnt + 1, new_shift, new_root, [o], null)
+ }
+};
+cljs.core.PersistentVector.prototype.cljs$core$IReversible$_rseq$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.cnt > 0) {
+ return new cljs.core.RSeq(coll, self__.cnt - 1, null)
+ }else {
+ return cljs.core.List.EMPTY
+ }
+};
+cljs.core.PersistentVector.prototype.cljs$core$IMapEntry$_key$arity$1 = function(coll) {
+ var self__ = this;
+ return coll.cljs$core$IIndexed$_nth$arity$2(coll, 0)
+};
+cljs.core.PersistentVector.prototype.cljs$core$IMapEntry$_val$arity$1 = function(coll) {
+ var self__ = this;
+ return coll.cljs$core$IIndexed$_nth$arity$2(coll, 1)
+};
+cljs.core.PersistentVector.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.PersistentVector.prototype.cljs$core$IReduce$_reduce$arity$2 = function(v, f) {
+ var self__ = this;
+ return cljs.core.ci_reduce.call(null, v, f)
+};
+cljs.core.PersistentVector.prototype.cljs$core$IReduce$_reduce$arity$3 = function(v, f, start) {
+ var self__ = this;
+ return cljs.core.ci_reduce.call(null, v, f, start)
+};
+cljs.core.PersistentVector.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.cnt === 0) {
+ return null
+ }else {
+ return cljs.core.chunked_seq.call(null, coll, 0, 0)
+ }
+};
+cljs.core.PersistentVector.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.cnt
+};
+cljs.core.PersistentVector.prototype.cljs$core$IStack$_peek$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.cnt > 0) {
+ return coll.cljs$core$IIndexed$_nth$arity$2(coll, self__.cnt - 1)
+ }else {
+ return null
+ }
+};
+cljs.core.PersistentVector.prototype.cljs$core$IStack$_pop$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.cnt === 0) {
+ throw new Error("Can't pop empty vector");
+ }else {
+ if(1 === self__.cnt) {
+ return cljs.core._with_meta.call(null, cljs.core.PersistentVector.EMPTY, self__.meta)
+ }else {
+ if(1 < self__.cnt - cljs.core.tail_off.call(null, coll)) {
+ return new cljs.core.PersistentVector(self__.meta, self__.cnt - 1, self__.shift, self__.root, self__.tail.slice(0, -1), null)
+ }else {
+ if("\ufdd0'else") {
+ var new_tail = cljs.core.array_for.call(null, coll, self__.cnt - 2);
+ var nr = cljs.core.pop_tail.call(null, coll, self__.shift, self__.root);
+ var new_root = nr == null ? cljs.core.PersistentVector.EMPTY_NODE : nr;
+ var cnt_1 = self__.cnt - 1;
+ if(function() {
+ var and__3822__auto__ = 5 < self__.shift;
+ if(and__3822__auto__) {
+ return cljs.core.pv_aget.call(null, new_root, 1) == null
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return new cljs.core.PersistentVector(self__.meta, cnt_1, self__.shift - 5, cljs.core.pv_aget.call(null, new_root, 0), new_tail, null)
+ }else {
+ return new cljs.core.PersistentVector(self__.meta, cnt_1, self__.shift, new_root, new_tail, null)
+ }
+ }else {
+ return null
+ }
+ }
+ }
+ }
+};
+cljs.core.PersistentVector.prototype.cljs$core$IVector$_assoc_n$arity$3 = function(coll, n, val) {
+ var self__ = this;
+ return coll.cljs$core$IAssociative$_assoc$arity$3(coll, n, val)
+};
+cljs.core.PersistentVector.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.PersistentVector.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.PersistentVector(meta__$1, self__.cnt, self__.shift, self__.root, self__.tail, self__.__hash)
+};
+cljs.core.PersistentVector.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.PersistentVector.prototype.cljs$core$IIndexed$_nth$arity$2 = function(coll, n) {
+ var self__ = this;
+ return cljs.core.array_for.call(null, coll, n)[n & 31]
+};
+cljs.core.PersistentVector.prototype.cljs$core$IIndexed$_nth$arity$3 = function(coll, n, not_found) {
+ var self__ = this;
+ if(function() {
+ var and__3822__auto__ = 0 <= n;
+ if(and__3822__auto__) {
+ return n < self__.cnt
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IIndexed$_nth$arity$2(coll, n)
+ }else {
+ return not_found
+ }
+};
+cljs.core.PersistentVector.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.PersistentVector.EMPTY, self__.meta)
+};
+cljs.core.PersistentVector;
+cljs.core.PersistentVector.EMPTY_NODE = cljs.core.pv_fresh_node.call(null, null);
+cljs.core.PersistentVector.EMPTY = new cljs.core.PersistentVector(null, 0, 5, cljs.core.PersistentVector.EMPTY_NODE, [], 0);
+cljs.core.PersistentVector.fromArray = function(xs, no_clone) {
+ var l = xs.length;
+ var xs__$1 = no_clone === true ? xs : xs.slice();
+ if(l < 32) {
+ return new cljs.core.PersistentVector(null, l, 5, cljs.core.PersistentVector.EMPTY_NODE, xs__$1, null)
+ }else {
+ var node = xs__$1.slice(0, 32);
+ var v = new cljs.core.PersistentVector(null, 32, 5, cljs.core.PersistentVector.EMPTY_NODE, node, null);
+ var i = 32;
+ var out = cljs.core._as_transient.call(null, v);
+ while(true) {
+ if(i < l) {
+ var G__3169 = i + 1;
+ var G__3170 = cljs.core.conj_BANG_.call(null, out, xs__$1[i]);
+ i = G__3169;
+ out = G__3170;
+ continue
+ }else {
+ return cljs.core.persistent_BANG_.call(null, out)
+ }
+ break
+ }
+ }
+};
+cljs.core.vec = function vec(coll) {
+ return cljs.core._persistent_BANG_.call(null, cljs.core.reduce.call(null, cljs.core._conj_BANG_, cljs.core._as_transient.call(null, cljs.core.PersistentVector.EMPTY), coll))
+};
+cljs.core.vector = function() {
+ var vector__delegate = function(args) {
+ return cljs.core.vec.call(null, args)
+ };
+ var vector = function(var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return vector__delegate.call(this, args)
+ };
+ vector.cljs$lang$maxFixedArity = 0;
+ vector.cljs$lang$applyTo = function(arglist__3171) {
+ var args = cljs.core.seq(arglist__3171);
+ return vector__delegate(args)
+ };
+ vector.cljs$lang$arity$variadic = vector__delegate;
+ return vector
+}();
+goog.provide("cljs.core.ChunkedSeq");
+cljs.core.ChunkedSeq = function(vec, node, i, off, meta, __hash) {
+ this.vec = vec;
+ this.node = node;
+ this.i = i;
+ this.off = off;
+ this.meta = meta;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition0$ = 31719660;
+ this.cljs$lang$protocol_mask$partition1$ = 1536
+};
+cljs.core.ChunkedSeq.cljs$lang$type = true;
+cljs.core.ChunkedSeq.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/ChunkedSeq")
+};
+cljs.core.ChunkedSeq.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/ChunkedSeq")
+};
+cljs.core.ChunkedSeq.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.ChunkedSeq.prototype.cljs$core$INext$_next$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.off + 1 < self__.node.length) {
+ var s = cljs.core.chunked_seq.call(null, self__.vec, self__.node, self__.i, self__.off + 1);
+ if(s == null) {
+ return null
+ }else {
+ return s
+ }
+ }else {
+ return coll.cljs$core$IChunkedNext$_chunked_next$arity$1(coll)
+ }
+};
+cljs.core.ChunkedSeq.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ return cljs.core.cons.call(null, o, coll)
+};
+cljs.core.ChunkedSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ return coll
+};
+cljs.core.ChunkedSeq.prototype.cljs$core$ISeq$_first$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.node[self__.off]
+};
+cljs.core.ChunkedSeq.prototype.cljs$core$ISeq$_rest$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.off + 1 < self__.node.length) {
+ var s = cljs.core.chunked_seq.call(null, self__.vec, self__.node, self__.i, self__.off + 1);
+ if(s == null) {
+ return cljs.core.List.EMPTY
+ }else {
+ return s
+ }
+ }else {
+ return coll.cljs$core$IChunkedSeq$_chunked_rest$arity$1(coll)
+ }
+};
+cljs.core.ChunkedSeq.prototype.cljs$core$IChunkedNext$_chunked_next$arity$1 = function(coll) {
+ var self__ = this;
+ var l = self__.node.length;
+ var s = self__.i + l < cljs.core._count.call(null, self__.vec) ? cljs.core.chunked_seq.call(null, self__.vec, self__.i + l, 0) : null;
+ if(s == null) {
+ return null
+ }else {
+ return s
+ }
+};
+cljs.core.ChunkedSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.ChunkedSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, m) {
+ var self__ = this;
+ return cljs.core.chunked_seq.call(null, self__.vec, self__.node, self__.i, self__.off, m)
+};
+cljs.core.ChunkedSeq.prototype.cljs$core$IWithMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.ChunkedSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.PersistentVector.EMPTY, self__.meta)
+};
+cljs.core.ChunkedSeq.prototype.cljs$core$IChunkedSeq$_chunked_first$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.array_chunk.call(null, self__.node, self__.off)
+};
+cljs.core.ChunkedSeq.prototype.cljs$core$IChunkedSeq$_chunked_rest$arity$1 = function(coll) {
+ var self__ = this;
+ var l = self__.node.length;
+ var s = self__.i + l < cljs.core._count.call(null, self__.vec) ? cljs.core.chunked_seq.call(null, self__.vec, self__.i + l, 0) : null;
+ if(s == null) {
+ return cljs.core.List.EMPTY
+ }else {
+ return s
+ }
+};
+cljs.core.ChunkedSeq;
+cljs.core.chunked_seq = function() {
+ var chunked_seq = null;
+ var chunked_seq__3 = function(vec, i, off) {
+ return chunked_seq.call(null, vec, cljs.core.array_for.call(null, vec, i), i, off, null)
+ };
+ var chunked_seq__4 = function(vec, node, i, off) {
+ return chunked_seq.call(null, vec, node, i, off, null)
+ };
+ var chunked_seq__5 = function(vec, node, i, off, meta) {
+ return new cljs.core.ChunkedSeq(vec, node, i, off, meta, null)
+ };
+ chunked_seq = function(vec, node, i, off, meta) {
+ switch(arguments.length) {
+ case 3:
+ return chunked_seq__3.call(this, vec, node, i);
+ case 4:
+ return chunked_seq__4.call(this, vec, node, i, off);
+ case 5:
+ return chunked_seq__5.call(this, vec, node, i, off, meta)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ chunked_seq.cljs$lang$arity$3 = chunked_seq__3;
+ chunked_seq.cljs$lang$arity$4 = chunked_seq__4;
+ chunked_seq.cljs$lang$arity$5 = chunked_seq__5;
+ return chunked_seq
+}();
+goog.provide("cljs.core.Subvec");
+cljs.core.Subvec = function(meta, v, start, end, __hash) {
+ this.meta = meta;
+ this.v = v;
+ this.start = start;
+ this.end = end;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 32400159
+};
+cljs.core.Subvec.cljs$lang$type = true;
+cljs.core.Subvec.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/Subvec")
+};
+cljs.core.Subvec.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/Subvec")
+};
+cljs.core.Subvec.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.Subvec.prototype.cljs$core$ILookup$_lookup$arity$2 = function(coll, k) {
+ var self__ = this;
+ return coll.cljs$core$IIndexed$_nth$arity$3(coll, k, null)
+};
+cljs.core.Subvec.prototype.cljs$core$ILookup$_lookup$arity$3 = function(coll, k, not_found) {
+ var self__ = this;
+ return coll.cljs$core$IIndexed$_nth$arity$3(coll, k, not_found)
+};
+cljs.core.Subvec.prototype.cljs$core$IAssociative$_assoc$arity$3 = function(coll, key, val) {
+ var self__ = this;
+ var v_pos = self__.start + key;
+ return new cljs.core.Subvec(self__.meta, cljs.core._assoc.call(null, self__.v, v_pos, val), self__.start, self__.end > v_pos + 1 ? self__.end : v_pos + 1, null)
+};
+cljs.core.Subvec.prototype.call = function() {
+ var G__3176 = null;
+ var G__3176__2 = function(this_sym3174, k) {
+ var self__ = this;
+ var this_sym3174__$1 = this;
+ var coll = this_sym3174__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$2(coll, k)
+ };
+ var G__3176__3 = function(this_sym3175, k, not_found) {
+ var self__ = this;
+ var this_sym3175__$1 = this;
+ var coll = this_sym3175__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, not_found)
+ };
+ G__3176 = function(this_sym3175, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3176__2.call(this, this_sym3175, k);
+ case 3:
+ return G__3176__3.call(this, this_sym3175, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3176
+}();
+cljs.core.Subvec.prototype.apply = function(this_sym3172, args3173) {
+ var self__ = this;
+ return this_sym3172.call.apply(this_sym3172, [this_sym3172].concat(args3173.slice()))
+};
+cljs.core.Subvec.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ return new cljs.core.Subvec(self__.meta, cljs.core._assoc_n.call(null, self__.v, self__.end, o), self__.start, self__.end + 1, null)
+};
+cljs.core.Subvec.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.Subvec.prototype.cljs$core$IReduce$_reduce$arity$2 = function(coll, f) {
+ var self__ = this;
+ return cljs.core.ci_reduce.call(null, coll, f)
+};
+cljs.core.Subvec.prototype.cljs$core$IReduce$_reduce$arity$3 = function(coll, f, start__$1) {
+ var self__ = this;
+ return cljs.core.ci_reduce.call(null, coll, f, start__$1)
+};
+cljs.core.Subvec.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ var subvec_seq = function subvec_seq(i) {
+ if(i === self__.end) {
+ return null
+ }else {
+ return cljs.core.cons.call(null, cljs.core._nth.call(null, self__.v, i), new cljs.core.LazySeq(null, false, function() {
+ return subvec_seq.call(null, i + 1)
+ }, null))
+ }
+ };
+ return subvec_seq.call(null, self__.start)
+};
+cljs.core.Subvec.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.end - self__.start
+};
+cljs.core.Subvec.prototype.cljs$core$IStack$_peek$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core._nth.call(null, self__.v, self__.end - 1)
+};
+cljs.core.Subvec.prototype.cljs$core$IStack$_pop$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.start === self__.end) {
+ throw new Error("Can't pop empty vector");
+ }else {
+ return new cljs.core.Subvec(self__.meta, self__.v, self__.start, self__.end - 1, null)
+ }
+};
+cljs.core.Subvec.prototype.cljs$core$IVector$_assoc_n$arity$3 = function(coll, n, val) {
+ var self__ = this;
+ return coll.cljs$core$IAssociative$_assoc$arity$3(coll, n, val)
+};
+cljs.core.Subvec.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.Subvec.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.Subvec(meta__$1, self__.v, self__.start, self__.end, self__.__hash)
+};
+cljs.core.Subvec.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.Subvec.prototype.cljs$core$IIndexed$_nth$arity$2 = function(coll, n) {
+ var self__ = this;
+ return cljs.core._nth.call(null, self__.v, self__.start + n)
+};
+cljs.core.Subvec.prototype.cljs$core$IIndexed$_nth$arity$3 = function(coll, n, not_found) {
+ var self__ = this;
+ return cljs.core._nth.call(null, self__.v, self__.start + n, not_found)
+};
+cljs.core.Subvec.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.Vector.EMPTY, self__.meta)
+};
+cljs.core.Subvec;
+cljs.core.subvec = function() {
+ var subvec = null;
+ var subvec__2 = function(v, start) {
+ return subvec.call(null, v, start, cljs.core.count.call(null, v))
+ };
+ var subvec__3 = function(v, start, end) {
+ return new cljs.core.Subvec(null, v, start, end, null)
+ };
+ subvec = function(v, start, end) {
+ switch(arguments.length) {
+ case 2:
+ return subvec__2.call(this, v, start);
+ case 3:
+ return subvec__3.call(this, v, start, end)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ subvec.cljs$lang$arity$2 = subvec__2;
+ subvec.cljs$lang$arity$3 = subvec__3;
+ return subvec
+}();
+cljs.core.tv_ensure_editable = function tv_ensure_editable(edit, node) {
+ if(edit === node.edit) {
+ return node
+ }else {
+ return new cljs.core.VectorNode(edit, node.arr.slice())
+ }
+};
+cljs.core.tv_editable_root = function tv_editable_root(node) {
+ return new cljs.core.VectorNode({}, node.arr.slice())
+};
+cljs.core.tv_editable_tail = function tv_editable_tail(tl) {
+ var ret = cljs.core.make_array.call(null, 32);
+ cljs.core.array_copy.call(null, tl, 0, ret, 0, tl.length);
+ return ret
+};
+cljs.core.tv_push_tail = function tv_push_tail(tv, level, parent, tail_node) {
+ var ret = cljs.core.tv_ensure_editable.call(null, tv.root.edit, parent);
+ var subidx = tv.cnt - 1 >>> level & 31;
+ cljs.core.pv_aset.call(null, ret, subidx, level === 5 ? tail_node : function() {
+ var child = cljs.core.pv_aget.call(null, ret, subidx);
+ if(!(child == null)) {
+ return tv_push_tail.call(null, tv, level - 5, child, tail_node)
+ }else {
+ return cljs.core.new_path.call(null, tv.root.edit, level - 5, tail_node)
+ }
+ }());
+ return ret
+};
+cljs.core.tv_pop_tail = function tv_pop_tail(tv, level, node) {
+ var node__$1 = cljs.core.tv_ensure_editable.call(null, tv.root.edit, node);
+ var subidx = tv.cnt - 2 >>> level & 31;
+ if(level > 5) {
+ var new_child = tv_pop_tail.call(null, tv, level - 5, cljs.core.pv_aget.call(null, node__$1, subidx));
+ if(function() {
+ var and__3822__auto__ = new_child == null;
+ if(and__3822__auto__) {
+ return subidx === 0
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return null
+ }else {
+ cljs.core.pv_aset.call(null, node__$1, subidx, new_child);
+ return node__$1
+ }
+ }else {
+ if(subidx === 0) {
+ return null
+ }else {
+ if("\ufdd0'else") {
+ cljs.core.pv_aset.call(null, node__$1, subidx, null);
+ return node__$1
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.editable_array_for = function editable_array_for(tv, i) {
+ if(function() {
+ var and__3822__auto__ = 0 <= i;
+ if(and__3822__auto__) {
+ return i < tv.cnt
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ if(i >= cljs.core.tail_off.call(null, tv)) {
+ return tv.tail
+ }else {
+ var root = tv.root;
+ var node = root;
+ var level = tv.shift;
+ while(true) {
+ if(level > 0) {
+ var G__3177 = cljs.core.tv_ensure_editable.call(null, root.edit, cljs.core.pv_aget.call(null, node, i >>> level & 31));
+ var G__3178 = level - 5;
+ node = G__3177;
+ level = G__3178;
+ continue
+ }else {
+ return node.arr
+ }
+ break
+ }
+ }
+ }else {
+ throw new Error([cljs.core.str("No item "), cljs.core.str(i), cljs.core.str(" in transient vector of length "), cljs.core.str(tv.cnt)].join(""));
+ }
+};
+goog.provide("cljs.core.TransientVector");
+cljs.core.TransientVector = function(cnt, shift, root, tail) {
+ this.cnt = cnt;
+ this.shift = shift;
+ this.root = root;
+ this.tail = tail;
+ this.cljs$lang$protocol_mask$partition0$ = 275;
+ this.cljs$lang$protocol_mask$partition1$ = 88
+};
+cljs.core.TransientVector.cljs$lang$type = true;
+cljs.core.TransientVector.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/TransientVector")
+};
+cljs.core.TransientVector.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/TransientVector")
+};
+cljs.core.TransientVector.prototype.call = function() {
+ var G__3183 = null;
+ var G__3183__2 = function(this_sym3181, k) {
+ var self__ = this;
+ var this_sym3181__$1 = this;
+ var coll = this_sym3181__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$2(coll, k)
+ };
+ var G__3183__3 = function(this_sym3182, k, not_found) {
+ var self__ = this;
+ var this_sym3182__$1 = this;
+ var coll = this_sym3182__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, not_found)
+ };
+ G__3183 = function(this_sym3182, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3183__2.call(this, this_sym3182, k);
+ case 3:
+ return G__3183__3.call(this, this_sym3182, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3183
+}();
+cljs.core.TransientVector.prototype.apply = function(this_sym3179, args3180) {
+ var self__ = this;
+ return this_sym3179.call.apply(this_sym3179, [this_sym3179].concat(args3180.slice()))
+};
+cljs.core.TransientVector.prototype.cljs$core$ILookup$_lookup$arity$2 = function(coll, k) {
+ var self__ = this;
+ return coll.cljs$core$IIndexed$_nth$arity$3(coll, k, null)
+};
+cljs.core.TransientVector.prototype.cljs$core$ILookup$_lookup$arity$3 = function(coll, k, not_found) {
+ var self__ = this;
+ return coll.cljs$core$IIndexed$_nth$arity$3(coll, k, not_found)
+};
+cljs.core.TransientVector.prototype.cljs$core$IIndexed$_nth$arity$2 = function(coll, n) {
+ var self__ = this;
+ if(self__.root.edit) {
+ return cljs.core.array_for.call(null, coll, n)[n & 31]
+ }else {
+ throw new Error("nth after persistent!");
+ }
+};
+cljs.core.TransientVector.prototype.cljs$core$IIndexed$_nth$arity$3 = function(coll, n, not_found) {
+ var self__ = this;
+ if(function() {
+ var and__3822__auto__ = 0 <= n;
+ if(and__3822__auto__) {
+ return n < self__.cnt
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll.cljs$core$IIndexed$_nth$arity$2(coll, n)
+ }else {
+ return not_found
+ }
+};
+cljs.core.TransientVector.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.root.edit) {
+ return self__.cnt
+ }else {
+ throw new Error("count after persistent!");
+ }
+};
+cljs.core.TransientVector.prototype.cljs$core$ITransientVector$_assoc_n_BANG_$arity$3 = function(tcoll, n, val) {
+ var self__ = this;
+ if(self__.root.edit) {
+ if(function() {
+ var and__3822__auto__ = 0 <= n;
+ if(and__3822__auto__) {
+ return n < self__.cnt
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ if(cljs.core.tail_off.call(null, tcoll) <= n) {
+ self__.tail[n & 31] = val;
+ return tcoll
+ }else {
+ var new_root = function go(level, node) {
+ var node__$1 = cljs.core.tv_ensure_editable.call(null, self__.root.edit, node);
+ if(level === 0) {
+ cljs.core.pv_aset.call(null, node__$1, n & 31, val);
+ return node__$1
+ }else {
+ var subidx = n >>> level & 31;
+ cljs.core.pv_aset.call(null, node__$1, subidx, go.call(null, level - 5, cljs.core.pv_aget.call(null, node__$1, subidx)));
+ return node__$1
+ }
+ }.call(null, self__.shift, self__.root);
+ self__.root = new_root;
+ return tcoll
+ }
+ }else {
+ if(n === self__.cnt) {
+ return tcoll.cljs$core$ITransientCollection$_conj_BANG_$arity$2(tcoll, val)
+ }else {
+ if("\ufdd0'else") {
+ throw new Error([cljs.core.str("Index "), cljs.core.str(n), cljs.core.str(" out of bounds for TransientVector of length"), cljs.core.str(self__.cnt)].join(""));
+ }else {
+ return null
+ }
+ }
+ }
+ }else {
+ throw new Error("assoc! after persistent!");
+ }
+};
+cljs.core.TransientVector.prototype.cljs$core$ITransientVector$_pop_BANG_$arity$1 = function(tcoll) {
+ var self__ = this;
+ if(self__.root.edit) {
+ if(self__.cnt === 0) {
+ throw new Error("Can't pop empty vector");
+ }else {
+ if(1 === self__.cnt) {
+ self__.cnt = 0;
+ return tcoll
+ }else {
+ if((self__.cnt - 1 & 31) > 0) {
+ self__.cnt = self__.cnt - 1;
+ return tcoll
+ }else {
+ if("\ufdd0'else") {
+ var new_tail = cljs.core.editable_array_for.call(null, tcoll, self__.cnt - 2);
+ var new_root = function() {
+ var nr = cljs.core.tv_pop_tail.call(null, tcoll, self__.shift, self__.root);
+ if(!(nr == null)) {
+ return nr
+ }else {
+ return new cljs.core.VectorNode(self__.root.edit, cljs.core.make_array.call(null, 32))
+ }
+ }();
+ if(function() {
+ var and__3822__auto__ = 5 < self__.shift;
+ if(and__3822__auto__) {
+ return cljs.core.pv_aget.call(null, new_root, 1) == null
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ var new_root__$1 = cljs.core.tv_ensure_editable.call(null, self__.root.edit, cljs.core.pv_aget.call(null, new_root, 0));
+ self__.root = new_root__$1;
+ self__.shift = self__.shift - 5;
+ self__.cnt = self__.cnt - 1;
+ self__.tail = new_tail;
+ return tcoll
+ }else {
+ self__.root = new_root;
+ self__.cnt = self__.cnt - 1;
+ self__.tail = new_tail;
+ return tcoll
+ }
+ }else {
+ return null
+ }
+ }
+ }
+ }
+ }else {
+ throw new Error("pop! after persistent!");
+ }
+};
+cljs.core.TransientVector.prototype.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3 = function(tcoll, key, val) {
+ var self__ = this;
+ return tcoll.cljs$core$ITransientVector$_assoc_n_BANG_$arity$3(tcoll, key, val)
+};
+cljs.core.TransientVector.prototype.cljs$core$ITransientCollection$_conj_BANG_$arity$2 = function(tcoll, o) {
+ var self__ = this;
+ if(self__.root.edit) {
+ if(self__.cnt - cljs.core.tail_off.call(null, tcoll) < 32) {
+ self__.tail[self__.cnt & 31] = o;
+ self__.cnt = self__.cnt + 1;
+ return tcoll
+ }else {
+ var tail_node = new cljs.core.VectorNode(self__.root.edit, self__.tail);
+ var new_tail = cljs.core.make_array.call(null, 32);
+ new_tail[0] = o;
+ self__.tail = new_tail;
+ if(self__.cnt >>> 5 > 1 << self__.shift) {
+ var new_root_array = cljs.core.make_array.call(null, 32);
+ var new_shift = self__.shift + 5;
+ new_root_array[0] = self__.root;
+ new_root_array[1] = cljs.core.new_path.call(null, self__.root.edit, self__.shift, tail_node);
+ self__.root = new cljs.core.VectorNode(self__.root.edit, new_root_array);
+ self__.shift = new_shift;
+ self__.cnt = self__.cnt + 1;
+ return tcoll
+ }else {
+ var new_root = cljs.core.tv_push_tail.call(null, tcoll, self__.shift, self__.root, tail_node);
+ self__.root = new_root;
+ self__.cnt = self__.cnt + 1;
+ return tcoll
+ }
+ }
+ }else {
+ throw new Error("conj! after persistent!");
+ }
+};
+cljs.core.TransientVector.prototype.cljs$core$ITransientCollection$_persistent_BANG_$arity$1 = function(tcoll) {
+ var self__ = this;
+ if(self__.root.edit) {
+ self__.root.edit = null;
+ var len = self__.cnt - cljs.core.tail_off.call(null, tcoll);
+ var trimmed_tail = cljs.core.make_array.call(null, len);
+ cljs.core.array_copy.call(null, self__.tail, 0, trimmed_tail, 0, len);
+ return new cljs.core.PersistentVector(null, self__.cnt, self__.shift, self__.root, trimmed_tail, null)
+ }else {
+ throw new Error("persistent! called twice");
+ }
+};
+cljs.core.TransientVector;
+goog.provide("cljs.core.PersistentQueueSeq");
+cljs.core.PersistentQueueSeq = function(meta, front, rear, __hash) {
+ this.meta = meta;
+ this.front = front;
+ this.rear = rear;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 31850572
+};
+cljs.core.PersistentQueueSeq.cljs$lang$type = true;
+cljs.core.PersistentQueueSeq.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/PersistentQueueSeq")
+};
+cljs.core.PersistentQueueSeq.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/PersistentQueueSeq")
+};
+cljs.core.PersistentQueueSeq.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.PersistentQueueSeq.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ return cljs.core.cons.call(null, o, coll)
+};
+cljs.core.PersistentQueueSeq.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.PersistentQueueSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ return coll
+};
+cljs.core.PersistentQueueSeq.prototype.cljs$core$ISeq$_first$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core._first.call(null, self__.front)
+};
+cljs.core.PersistentQueueSeq.prototype.cljs$core$ISeq$_rest$arity$1 = function(coll) {
+ var self__ = this;
+ var temp__3971__auto__ = cljs.core.next.call(null, self__.front);
+ if(temp__3971__auto__) {
+ var f1 = temp__3971__auto__;
+ return new cljs.core.PersistentQueueSeq(self__.meta, f1, self__.rear, null)
+ }else {
+ if(self__.rear == null) {
+ return coll.cljs$core$IEmptyableCollection$_empty$arity$1(coll)
+ }else {
+ return new cljs.core.PersistentQueueSeq(self__.meta, self__.rear, null, null)
+ }
+ }
+};
+cljs.core.PersistentQueueSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.PersistentQueueSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.PersistentQueueSeq(meta__$1, self__.front, self__.rear, self__.__hash)
+};
+cljs.core.PersistentQueueSeq.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.PersistentQueueSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.List.EMPTY, self__.meta)
+};
+cljs.core.PersistentQueueSeq;
+goog.provide("cljs.core.PersistentQueue");
+cljs.core.PersistentQueue = function(meta, count, front, rear, __hash) {
+ this.meta = meta;
+ this.count = count;
+ this.front = front;
+ this.rear = rear;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 31858766
+};
+cljs.core.PersistentQueue.cljs$lang$type = true;
+cljs.core.PersistentQueue.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/PersistentQueue")
+};
+cljs.core.PersistentQueue.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/PersistentQueue")
+};
+cljs.core.PersistentQueue.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.PersistentQueue.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ if(cljs.core.truth_(self__.front)) {
+ return new cljs.core.PersistentQueue(self__.meta, self__.count + 1, self__.front, cljs.core.conj.call(null, function() {
+ var or__3824__auto__ = self__.rear;
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ return cljs.core.PersistentVector.EMPTY
+ }
+ }(), o), null)
+ }else {
+ return new cljs.core.PersistentQueue(self__.meta, self__.count + 1, cljs.core.conj.call(null, self__.front, o), cljs.core.PersistentVector.EMPTY, null)
+ }
+};
+cljs.core.PersistentQueue.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.PersistentQueue.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ var rear__$1 = cljs.core.seq.call(null, self__.rear);
+ if(cljs.core.truth_(function() {
+ var or__3824__auto__ = self__.front;
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ return rear__$1
+ }
+ }())) {
+ return new cljs.core.PersistentQueueSeq(null, self__.front, cljs.core.seq.call(null, rear__$1), null)
+ }else {
+ return null
+ }
+};
+cljs.core.PersistentQueue.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.count
+};
+cljs.core.PersistentQueue.prototype.cljs$core$IStack$_peek$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core._first.call(null, self__.front)
+};
+cljs.core.PersistentQueue.prototype.cljs$core$IStack$_pop$arity$1 = function(coll) {
+ var self__ = this;
+ if(cljs.core.truth_(self__.front)) {
+ var temp__3971__auto__ = cljs.core.next.call(null, self__.front);
+ if(temp__3971__auto__) {
+ var f1 = temp__3971__auto__;
+ return new cljs.core.PersistentQueue(self__.meta, self__.count - 1, f1, self__.rear, null)
+ }else {
+ return new cljs.core.PersistentQueue(self__.meta, self__.count - 1, cljs.core.seq.call(null, self__.rear), cljs.core.PersistentVector.EMPTY, null)
+ }
+ }else {
+ return coll
+ }
+};
+cljs.core.PersistentQueue.prototype.cljs$core$ISeq$_first$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.first.call(null, self__.front)
+};
+cljs.core.PersistentQueue.prototype.cljs$core$ISeq$_rest$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.rest.call(null, cljs.core.seq.call(null, coll))
+};
+cljs.core.PersistentQueue.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.PersistentQueue.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.PersistentQueue(meta__$1, self__.count, self__.front, self__.rear, self__.__hash)
+};
+cljs.core.PersistentQueue.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.PersistentQueue.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.PersistentQueue.EMPTY
+};
+cljs.core.PersistentQueue;
+cljs.core.PersistentQueue.EMPTY = new cljs.core.PersistentQueue(null, 0, null, cljs.core.PersistentVector.EMPTY, 0);
+goog.provide("cljs.core.NeverEquiv");
+cljs.core.NeverEquiv = function() {
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 2097152
+};
+cljs.core.NeverEquiv.cljs$lang$type = true;
+cljs.core.NeverEquiv.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/NeverEquiv")
+};
+cljs.core.NeverEquiv.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/NeverEquiv")
+};
+cljs.core.NeverEquiv.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(o, other) {
+ var self__ = this;
+ return false
+};
+cljs.core.NeverEquiv;
+cljs.core.never_equiv = new cljs.core.NeverEquiv;
+cljs.core.equiv_map = function equiv_map(x, y) {
+ return cljs.core.boolean$.call(null, cljs.core.map_QMARK_.call(null, y) ? cljs.core.count.call(null, x) === cljs.core.count.call(null, y) ? cljs.core.every_QMARK_.call(null, cljs.core.identity, cljs.core.map.call(null, function(xkv) {
+ return cljs.core._EQ_.call(null, cljs.core._lookup.call(null, y, cljs.core.first.call(null, xkv), cljs.core.never_equiv), cljs.core.second.call(null, xkv))
+ }, x)) : null : null)
+};
+cljs.core.scan_array = function scan_array(incr, k, array) {
+ var len = array.length;
+ var i = 0;
+ while(true) {
+ if(i < len) {
+ if(k === array[i]) {
+ return i
+ }else {
+ var G__3184 = i + incr;
+ i = G__3184;
+ continue
+ }
+ }else {
+ return null
+ }
+ break
+ }
+};
+cljs.core.obj_map_compare_keys = function obj_map_compare_keys(a, b) {
+ var a__$1 = cljs.core.hash.call(null, a);
+ var b__$1 = cljs.core.hash.call(null, b);
+ if(a__$1 < b__$1) {
+ return-1
+ }else {
+ if(a__$1 > b__$1) {
+ return 1
+ }else {
+ if("\ufdd0'else") {
+ return 0
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.obj_map__GT_hash_map = function obj_map__GT_hash_map(m, k, v) {
+ var ks = m.keys;
+ var len = ks.length;
+ var so = m.strobj;
+ var out = cljs.core.with_meta.call(null, cljs.core.PersistentHashMap.EMPTY, cljs.core.meta.call(null, m));
+ var i = 0;
+ var out__$1 = cljs.core.transient$.call(null, out);
+ while(true) {
+ if(i < len) {
+ var k__$1 = ks[i];
+ var G__3185 = i + 1;
+ var G__3186 = cljs.core.assoc_BANG_.call(null, out__$1, k__$1, so[k__$1]);
+ i = G__3185;
+ out__$1 = G__3186;
+ continue
+ }else {
+ return cljs.core.persistent_BANG_.call(null, cljs.core.assoc_BANG_.call(null, out__$1, k, v))
+ }
+ break
+ }
+};
+cljs.core.obj_clone = function obj_clone(obj, ks) {
+ var new_obj = {};
+ var l = ks.length;
+ var i = 0;
+ while(true) {
+ if(i < l) {
+ var k = ks[i];
+ new_obj[k] = obj[k];
+ var G__3188 = i + 1;
+ i = G__3188;
+ continue
+ }else {
+ }
+ break
+ }
+ return new_obj
+};
+goog.provide("cljs.core.ObjMap");
+cljs.core.ObjMap = function(meta, keys, strobj, update_count, __hash) {
+ this.meta = meta;
+ this.keys = keys;
+ this.strobj = strobj;
+ this.update_count = update_count;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 4;
+ this.cljs$lang$protocol_mask$partition0$ = 15075087
+};
+cljs.core.ObjMap.cljs$lang$type = true;
+cljs.core.ObjMap.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/ObjMap")
+};
+cljs.core.ObjMap.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/ObjMap")
+};
+cljs.core.ObjMap.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.transient$.call(null, cljs.core.into.call(null, cljs.core.hash_map.call(null), coll))
+};
+cljs.core.ObjMap.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_imap.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.ObjMap.prototype.cljs$core$ILookup$_lookup$arity$2 = function(coll, k) {
+ var self__ = this;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, null)
+};
+cljs.core.ObjMap.prototype.cljs$core$ILookup$_lookup$arity$3 = function(coll, k, not_found) {
+ var self__ = this;
+ if(function() {
+ var and__3822__auto__ = goog.isString(k);
+ if(and__3822__auto__) {
+ return!(cljs.core.scan_array.call(null, 1, k, self__.keys) == null)
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return self__.strobj[k]
+ }else {
+ return not_found
+ }
+};
+cljs.core.ObjMap.prototype.cljs$core$IAssociative$_assoc$arity$3 = function(coll, k, v) {
+ var self__ = this;
+ if(goog.isString(k)) {
+ if(function() {
+ var or__3824__auto__ = self__.update_count > cljs.core.ObjMap.HASHMAP_THRESHOLD;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return self__.keys.length >= cljs.core.ObjMap.HASHMAP_THRESHOLD
+ }
+ }()) {
+ return cljs.core.obj_map__GT_hash_map.call(null, coll, k, v)
+ }else {
+ if(!(cljs.core.scan_array.call(null, 1, k, self__.keys) == null)) {
+ var new_strobj = cljs.core.obj_clone.call(null, self__.strobj, self__.keys);
+ new_strobj[k] = v;
+ return new cljs.core.ObjMap(self__.meta, self__.keys, new_strobj, self__.update_count + 1, null)
+ }else {
+ var new_strobj = cljs.core.obj_clone.call(null, self__.strobj, self__.keys);
+ var new_keys = self__.keys.slice();
+ new_strobj[k] = v;
+ new_keys.push(k);
+ return new cljs.core.ObjMap(self__.meta, new_keys, new_strobj, self__.update_count + 1, null)
+ }
+ }
+ }else {
+ return cljs.core.obj_map__GT_hash_map.call(null, coll, k, v)
+ }
+};
+cljs.core.ObjMap.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = function(coll, k) {
+ var self__ = this;
+ if(function() {
+ var and__3822__auto__ = goog.isString(k);
+ if(and__3822__auto__) {
+ return!(cljs.core.scan_array.call(null, 1, k, self__.keys) == null)
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return true
+ }else {
+ return false
+ }
+};
+cljs.core.ObjMap.prototype.call = function() {
+ var G__3193 = null;
+ var G__3193__2 = function(this_sym3191, k) {
+ var self__ = this;
+ var this_sym3191__$1 = this;
+ var coll = this_sym3191__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$2(coll, k)
+ };
+ var G__3193__3 = function(this_sym3192, k, not_found) {
+ var self__ = this;
+ var this_sym3192__$1 = this;
+ var coll = this_sym3192__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, not_found)
+ };
+ G__3193 = function(this_sym3192, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3193__2.call(this, this_sym3192, k);
+ case 3:
+ return G__3193__3.call(this, this_sym3192, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3193
+}();
+cljs.core.ObjMap.prototype.apply = function(this_sym3189, args3190) {
+ var self__ = this;
+ return this_sym3189.call.apply(this_sym3189, [this_sym3189].concat(args3190.slice()))
+};
+cljs.core.ObjMap.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, entry) {
+ var self__ = this;
+ if(cljs.core.vector_QMARK_.call(null, entry)) {
+ return coll.cljs$core$IAssociative$_assoc$arity$3(coll, cljs.core._nth.call(null, entry, 0), cljs.core._nth.call(null, entry, 1))
+ }else {
+ return cljs.core.reduce.call(null, cljs.core._conj, coll, entry)
+ }
+};
+cljs.core.ObjMap.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.ObjMap.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.keys.length > 0) {
+ return cljs.core.map.call(null, function(p1__3187_SHARP_) {
+ return cljs.core.vector.call(null, p1__3187_SHARP_, self__.strobj[p1__3187_SHARP_])
+ }, self__.keys.sort(cljs.core.obj_map_compare_keys))
+ }else {
+ return null
+ }
+};
+cljs.core.ObjMap.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.keys.length
+};
+cljs.core.ObjMap.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_map.call(null, coll, other)
+};
+cljs.core.ObjMap.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.ObjMap(meta__$1, self__.keys, self__.strobj, self__.update_count, self__.__hash)
+};
+cljs.core.ObjMap.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.ObjMap.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.ObjMap.EMPTY, self__.meta)
+};
+cljs.core.ObjMap.prototype.cljs$core$IMap$_dissoc$arity$2 = function(coll, k) {
+ var self__ = this;
+ if(function() {
+ var and__3822__auto__ = goog.isString(k);
+ if(and__3822__auto__) {
+ return!(cljs.core.scan_array.call(null, 1, k, self__.keys) == null)
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ var new_keys = self__.keys.slice();
+ var new_strobj = cljs.core.obj_clone.call(null, self__.strobj, self__.keys);
+ new_keys.splice(cljs.core.scan_array.call(null, 1, k, new_keys), 1);
+ cljs.core.js_delete.call(null, new_strobj, k);
+ return new cljs.core.ObjMap(self__.meta, new_keys, new_strobj, self__.update_count + 1, null)
+ }else {
+ return coll
+ }
+};
+cljs.core.ObjMap;
+cljs.core.ObjMap.EMPTY = new cljs.core.ObjMap(null, [], {}, 0, 0);
+cljs.core.ObjMap.HASHMAP_THRESHOLD = 32;
+cljs.core.ObjMap.fromObject = function(ks, obj) {
+ return new cljs.core.ObjMap(null, ks, obj, 0, null)
+};
+goog.provide("cljs.core.HashMap");
+cljs.core.HashMap = function(meta, count, hashobj, __hash) {
+ this.meta = meta;
+ this.count = count;
+ this.hashobj = hashobj;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 15075087
+};
+cljs.core.HashMap.cljs$lang$type = true;
+cljs.core.HashMap.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/HashMap")
+};
+cljs.core.HashMap.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/HashMap")
+};
+cljs.core.HashMap.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_imap.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.HashMap.prototype.cljs$core$ILookup$_lookup$arity$2 = function(coll, k) {
+ var self__ = this;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, null)
+};
+cljs.core.HashMap.prototype.cljs$core$ILookup$_lookup$arity$3 = function(coll, k, not_found) {
+ var self__ = this;
+ var bucket = self__.hashobj[cljs.core.hash.call(null, k)];
+ var i = cljs.core.truth_(bucket) ? cljs.core.scan_array.call(null, 2, k, bucket) : null;
+ if(cljs.core.truth_(i)) {
+ return bucket[i + 1]
+ }else {
+ return not_found
+ }
+};
+cljs.core.HashMap.prototype.cljs$core$IAssociative$_assoc$arity$3 = function(coll, k, v) {
+ var self__ = this;
+ var h = cljs.core.hash.call(null, k);
+ var bucket = self__.hashobj[h];
+ if(cljs.core.truth_(bucket)) {
+ var new_bucket = bucket.slice();
+ var new_hashobj = goog.object.clone(self__.hashobj);
+ new_hashobj[h] = new_bucket;
+ var temp__3971__auto__ = cljs.core.scan_array.call(null, 2, k, new_bucket);
+ if(cljs.core.truth_(temp__3971__auto__)) {
+ var i = temp__3971__auto__;
+ new_bucket[i + 1] = v;
+ return new cljs.core.HashMap(self__.meta, self__.count, new_hashobj, null)
+ }else {
+ new_bucket.push(k, v);
+ return new cljs.core.HashMap(self__.meta, self__.count + 1, new_hashobj, null)
+ }
+ }else {
+ var new_hashobj = goog.object.clone(self__.hashobj);
+ new_hashobj[h] = [k, v];
+ return new cljs.core.HashMap(self__.meta, self__.count + 1, new_hashobj, null)
+ }
+};
+cljs.core.HashMap.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = function(coll, k) {
+ var self__ = this;
+ var bucket = self__.hashobj[cljs.core.hash.call(null, k)];
+ var i = cljs.core.truth_(bucket) ? cljs.core.scan_array.call(null, 2, k, bucket) : null;
+ if(cljs.core.truth_(i)) {
+ return true
+ }else {
+ return false
+ }
+};
+cljs.core.HashMap.prototype.call = function() {
+ var G__3199 = null;
+ var G__3199__2 = function(this_sym3197, k) {
+ var self__ = this;
+ var this_sym3197__$1 = this;
+ var coll = this_sym3197__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$2(coll, k)
+ };
+ var G__3199__3 = function(this_sym3198, k, not_found) {
+ var self__ = this;
+ var this_sym3198__$1 = this;
+ var coll = this_sym3198__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, not_found)
+ };
+ G__3199 = function(this_sym3198, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3199__2.call(this, this_sym3198, k);
+ case 3:
+ return G__3199__3.call(this, this_sym3198, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3199
+}();
+cljs.core.HashMap.prototype.apply = function(this_sym3195, args3196) {
+ var self__ = this;
+ return this_sym3195.call.apply(this_sym3195, [this_sym3195].concat(args3196.slice()))
+};
+cljs.core.HashMap.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, entry) {
+ var self__ = this;
+ if(cljs.core.vector_QMARK_.call(null, entry)) {
+ return coll.cljs$core$IAssociative$_assoc$arity$3(coll, cljs.core._nth.call(null, entry, 0), cljs.core._nth.call(null, entry, 1))
+ }else {
+ return cljs.core.reduce.call(null, cljs.core._conj, coll, entry)
+ }
+};
+cljs.core.HashMap.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.HashMap.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.count > 0) {
+ var hashes = cljs.core.js_keys.call(null, self__.hashobj).sort();
+ return cljs.core.mapcat.call(null, function(p1__3194_SHARP_) {
+ return cljs.core.map.call(null, cljs.core.vec, cljs.core.partition.call(null, 2, self__.hashobj[p1__3194_SHARP_]))
+ }, hashes)
+ }else {
+ return null
+ }
+};
+cljs.core.HashMap.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.count
+};
+cljs.core.HashMap.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_map.call(null, coll, other)
+};
+cljs.core.HashMap.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.HashMap(meta__$1, self__.count, self__.hashobj, self__.__hash)
+};
+cljs.core.HashMap.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.HashMap.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.HashMap.EMPTY, self__.meta)
+};
+cljs.core.HashMap.prototype.cljs$core$IMap$_dissoc$arity$2 = function(coll, k) {
+ var self__ = this;
+ var h = cljs.core.hash.call(null, k);
+ var bucket = self__.hashobj[h];
+ var i = cljs.core.truth_(bucket) ? cljs.core.scan_array.call(null, 2, k, bucket) : null;
+ if(cljs.core.not.call(null, i)) {
+ return coll
+ }else {
+ var new_hashobj = goog.object.clone(self__.hashobj);
+ if(3 > bucket.length) {
+ cljs.core.js_delete.call(null, new_hashobj, h)
+ }else {
+ var new_bucket = bucket.slice();
+ new_bucket.splice(i, 2);
+ new_hashobj[h] = new_bucket
+ }
+ return new cljs.core.HashMap(self__.meta, self__.count - 1, new_hashobj, null)
+ }
+};
+cljs.core.HashMap;
+cljs.core.HashMap.EMPTY = new cljs.core.HashMap(null, 0, {}, 0);
+cljs.core.HashMap.fromArrays = function(ks, vs) {
+ var len = ks.length;
+ var i = 0;
+ var out = cljs.core.HashMap.EMPTY;
+ while(true) {
+ if(i < len) {
+ var G__3200 = i + 1;
+ var G__3201 = cljs.core.assoc.call(null, out, ks[i], vs[i]);
+ i = G__3200;
+ out = G__3201;
+ continue
+ }else {
+ return out
+ }
+ break
+ }
+};
+cljs.core.array_map_index_of = function array_map_index_of(m, k) {
+ var arr = m.arr;
+ var len = arr.length;
+ var i = 0;
+ while(true) {
+ if(len <= i) {
+ return-1
+ }else {
+ if(cljs.core._EQ_.call(null, arr[i], k)) {
+ return i
+ }else {
+ if("\ufdd0'else") {
+ var G__3202 = i + 2;
+ i = G__3202;
+ continue
+ }else {
+ return null
+ }
+ }
+ }
+ break
+ }
+};
+goog.provide("cljs.core.PersistentArrayMap");
+cljs.core.PersistentArrayMap = function(meta, cnt, arr, __hash) {
+ this.meta = meta;
+ this.cnt = cnt;
+ this.arr = arr;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 4;
+ this.cljs$lang$protocol_mask$partition0$ = 16123663
+};
+cljs.core.PersistentArrayMap.cljs$lang$type = true;
+cljs.core.PersistentArrayMap.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/PersistentArrayMap")
+};
+cljs.core.PersistentArrayMap.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/PersistentArrayMap")
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = function(coll) {
+ var self__ = this;
+ return new cljs.core.TransientArrayMap({}, self__.arr.length, self__.arr.slice())
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_imap.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$ILookup$_lookup$arity$2 = function(coll, k) {
+ var self__ = this;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, null)
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$ILookup$_lookup$arity$3 = function(coll, k, not_found) {
+ var self__ = this;
+ var idx = cljs.core.array_map_index_of.call(null, coll, k);
+ if(idx === -1) {
+ return not_found
+ }else {
+ return self__.arr[idx + 1]
+ }
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$IAssociative$_assoc$arity$3 = function(coll, k, v) {
+ var self__ = this;
+ var idx = cljs.core.array_map_index_of.call(null, coll, k);
+ if(idx === -1) {
+ if(self__.cnt < cljs.core.PersistentArrayMap.HASHMAP_THRESHOLD) {
+ return new cljs.core.PersistentArrayMap(self__.meta, self__.cnt + 1, function() {
+ var G__3205 = self__.arr.slice();
+ G__3205.push(k);
+ G__3205.push(v);
+ return G__3205
+ }(), null)
+ }else {
+ return cljs.core.persistent_BANG_.call(null, cljs.core.assoc_BANG_.call(null, cljs.core.transient$.call(null, cljs.core.into.call(null, cljs.core.PersistentHashMap.EMPTY, coll)), k, v))
+ }
+ }else {
+ if(v === self__.arr[idx + 1]) {
+ return coll
+ }else {
+ if("\ufdd0'else") {
+ return new cljs.core.PersistentArrayMap(self__.meta, self__.cnt, function() {
+ var G__3206 = self__.arr.slice();
+ G__3206[idx + 1] = v;
+ return G__3206
+ }(), null)
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = function(coll, k) {
+ var self__ = this;
+ return!(cljs.core.array_map_index_of.call(null, coll, k) === -1)
+};
+cljs.core.PersistentArrayMap.prototype.call = function() {
+ var G__3209 = null;
+ var G__3209__2 = function(this_sym3207, k) {
+ var self__ = this;
+ var this_sym3207__$1 = this;
+ var coll = this_sym3207__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$2(coll, k)
+ };
+ var G__3209__3 = function(this_sym3208, k, not_found) {
+ var self__ = this;
+ var this_sym3208__$1 = this;
+ var coll = this_sym3208__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, not_found)
+ };
+ G__3209 = function(this_sym3208, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3209__2.call(this, this_sym3208, k);
+ case 3:
+ return G__3209__3.call(this, this_sym3208, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3209
+}();
+cljs.core.PersistentArrayMap.prototype.apply = function(this_sym3203, args3204) {
+ var self__ = this;
+ return this_sym3203.call.apply(this_sym3203, [this_sym3203].concat(args3204.slice()))
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = function(coll, f, init) {
+ var self__ = this;
+ var len = self__.arr.length;
+ var i = 0;
+ var init__$1 = init;
+ while(true) {
+ if(i < len) {
+ var init__$2 = f.call(null, init__$1, self__.arr[i], self__.arr[i + 1]);
+ if(cljs.core.reduced_QMARK_.call(null, init__$2)) {
+ return cljs.core.deref.call(null, init__$2)
+ }else {
+ var G__3210 = i + 2;
+ var G__3211 = init__$2;
+ i = G__3210;
+ init__$1 = G__3211;
+ continue
+ }
+ }else {
+ return null
+ }
+ break
+ }
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, entry) {
+ var self__ = this;
+ if(cljs.core.vector_QMARK_.call(null, entry)) {
+ return coll.cljs$core$IAssociative$_assoc$arity$3(coll, cljs.core._nth.call(null, entry, 0), cljs.core._nth.call(null, entry, 1))
+ }else {
+ return cljs.core.reduce.call(null, cljs.core._conj, coll, entry)
+ }
+};
+cljs.core.PersistentArrayMap.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.cnt > 0) {
+ var len = self__.arr.length;
+ var array_map_seq = function array_map_seq(i) {
+ return new cljs.core.LazySeq(null, false, function() {
+ if(i < len) {
+ return cljs.core.cons.call(null, cljs.core.PersistentVector.fromArray([self__.arr[i], self__.arr[i + 1]], true), array_map_seq.call(null, i + 2))
+ }else {
+ return null
+ }
+ }, null)
+ };
+ return array_map_seq.call(null, 0)
+ }else {
+ return null
+ }
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.cnt
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_map.call(null, coll, other)
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.PersistentArrayMap(meta__$1, self__.cnt, self__.arr, self__.__hash)
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core._with_meta.call(null, cljs.core.PersistentArrayMap.EMPTY, self__.meta)
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$IMap$_dissoc$arity$2 = function(coll, k) {
+ var self__ = this;
+ var idx = cljs.core.array_map_index_of.call(null, coll, k);
+ if(idx >= 0) {
+ var len = self__.arr.length;
+ var new_len = len - 2;
+ if(new_len === 0) {
+ return coll.cljs$core$IEmptyableCollection$_empty$arity$1(coll)
+ }else {
+ var new_arr = cljs.core.make_array.call(null, new_len);
+ var s = 0;
+ var d = 0;
+ while(true) {
+ if(s >= len) {
+ return new cljs.core.PersistentArrayMap(self__.meta, self__.cnt - 1, new_arr, null)
+ }else {
+ if(cljs.core._EQ_.call(null, k, self__.arr[s])) {
+ var G__3212 = s + 2;
+ var G__3213 = d;
+ s = G__3212;
+ d = G__3213;
+ continue
+ }else {
+ if("\ufdd0'else") {
+ new_arr[d] = self__.arr[s];
+ new_arr[d + 1] = self__.arr[s + 1];
+ var G__3214 = s + 2;
+ var G__3215 = d + 2;
+ s = G__3214;
+ d = G__3215;
+ continue
+ }else {
+ return null
+ }
+ }
+ }
+ break
+ }
+ }
+ }else {
+ return coll
+ }
+};
+cljs.core.PersistentArrayMap;
+cljs.core.PersistentArrayMap.EMPTY = new cljs.core.PersistentArrayMap(null, 0, [], null);
+cljs.core.PersistentArrayMap.HASHMAP_THRESHOLD = 16;
+cljs.core.PersistentArrayMap.fromArrays = function(ks, vs) {
+ var len = cljs.core.count.call(null, ks);
+ var i = 0;
+ var out = cljs.core.transient$.call(null, cljs.core.PersistentArrayMap.EMPTY);
+ while(true) {
+ if(i < len) {
+ var G__3216 = i + 1;
+ var G__3217 = cljs.core.assoc_BANG_.call(null, out, ks[i], vs[i]);
+ i = G__3216;
+ out = G__3217;
+ continue
+ }else {
+ return cljs.core.persistent_BANG_.call(null, out)
+ }
+ break
+ }
+};
+goog.provide("cljs.core.TransientArrayMap");
+cljs.core.TransientArrayMap = function(editable_QMARK_, len, arr) {
+ this.editable_QMARK_ = editable_QMARK_;
+ this.len = len;
+ this.arr = arr;
+ this.cljs$lang$protocol_mask$partition1$ = 56;
+ this.cljs$lang$protocol_mask$partition0$ = 258
+};
+cljs.core.TransientArrayMap.cljs$lang$type = true;
+cljs.core.TransientArrayMap.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/TransientArrayMap")
+};
+cljs.core.TransientArrayMap.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/TransientArrayMap")
+};
+cljs.core.TransientArrayMap.prototype.cljs$core$ITransientMap$_dissoc_BANG_$arity$2 = function(tcoll, key) {
+ var self__ = this;
+ if(cljs.core.truth_(self__.editable_QMARK_)) {
+ var idx = cljs.core.array_map_index_of.call(null, tcoll, key);
+ if(idx >= 0) {
+ self__.arr[idx] = self__.arr[self__.len - 2];
+ self__.arr[idx + 1] = self__.arr[self__.len - 1];
+ var G__3218 = self__.arr;
+ G__3218.pop();
+ G__3218.pop();
+ G__3218;
+ self__.len = self__.len - 2
+ }else {
+ }
+ return tcoll
+ }else {
+ throw new Error("dissoc! after persistent!");
+ }
+};
+cljs.core.TransientArrayMap.prototype.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3 = function(tcoll, key, val) {
+ var self__ = this;
+ if(cljs.core.truth_(self__.editable_QMARK_)) {
+ var idx = cljs.core.array_map_index_of.call(null, tcoll, key);
+ if(idx === -1) {
+ if(self__.len + 2 <= 2 * cljs.core.PersistentArrayMap.HASHMAP_THRESHOLD) {
+ self__.len = self__.len + 2;
+ self__.arr.push(key);
+ self__.arr.push(val);
+ return tcoll
+ }else {
+ return cljs.core.assoc_BANG_.call(null, cljs.core.array__GT_transient_hash_map.call(null, self__.len, self__.arr), key, val)
+ }
+ }else {
+ if(val === self__.arr[idx + 1]) {
+ return tcoll
+ }else {
+ self__.arr[idx + 1] = val;
+ return tcoll
+ }
+ }
+ }else {
+ throw new Error("assoc! after persistent!");
+ }
+};
+cljs.core.TransientArrayMap.prototype.cljs$core$ITransientCollection$_conj_BANG_$arity$2 = function(tcoll, o) {
+ var self__ = this;
+ if(cljs.core.truth_(self__.editable_QMARK_)) {
+ if(function() {
+ var G__3219 = o;
+ if(G__3219) {
+ if(function() {
+ var or__3824__auto__ = G__3219.cljs$lang$protocol_mask$partition0$ & 2048;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__3219.cljs$core$IMapEntry$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__3219.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IMapEntry, G__3219)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IMapEntry, G__3219)
+ }
+ }()) {
+ return tcoll.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3(tcoll, cljs.core.key.call(null, o), cljs.core.val.call(null, o))
+ }else {
+ var es = cljs.core.seq.call(null, o);
+ var tcoll__$1 = tcoll;
+ while(true) {
+ var temp__3971__auto__ = cljs.core.first.call(null, es);
+ if(cljs.core.truth_(temp__3971__auto__)) {
+ var e = temp__3971__auto__;
+ var G__3220 = cljs.core.next.call(null, es);
+ var G__3221 = tcoll__$1.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3(tcoll__$1, cljs.core.key.call(null, e), cljs.core.val.call(null, e));
+ es = G__3220;
+ tcoll__$1 = G__3221;
+ continue
+ }else {
+ return tcoll__$1
+ }
+ break
+ }
+ }
+ }else {
+ throw new Error("conj! after persistent!");
+ }
+};
+cljs.core.TransientArrayMap.prototype.cljs$core$ITransientCollection$_persistent_BANG_$arity$1 = function(tcoll) {
+ var self__ = this;
+ if(cljs.core.truth_(self__.editable_QMARK_)) {
+ self__.editable_QMARK_ = false;
+ return new cljs.core.PersistentArrayMap(null, cljs.core.quot.call(null, self__.len, 2), self__.arr, null)
+ }else {
+ throw new Error("persistent! called twice");
+ }
+};
+cljs.core.TransientArrayMap.prototype.cljs$core$ILookup$_lookup$arity$2 = function(tcoll, k) {
+ var self__ = this;
+ return tcoll.cljs$core$ILookup$_lookup$arity$3(tcoll, k, null)
+};
+cljs.core.TransientArrayMap.prototype.cljs$core$ILookup$_lookup$arity$3 = function(tcoll, k, not_found) {
+ var self__ = this;
+ if(cljs.core.truth_(self__.editable_QMARK_)) {
+ var idx = cljs.core.array_map_index_of.call(null, tcoll, k);
+ if(idx === -1) {
+ return not_found
+ }else {
+ return self__.arr[idx + 1]
+ }
+ }else {
+ throw new Error("lookup after persistent!");
+ }
+};
+cljs.core.TransientArrayMap.prototype.cljs$core$ICounted$_count$arity$1 = function(tcoll) {
+ var self__ = this;
+ if(cljs.core.truth_(self__.editable_QMARK_)) {
+ return cljs.core.quot.call(null, self__.len, 2)
+ }else {
+ throw new Error("count after persistent!");
+ }
+};
+cljs.core.TransientArrayMap;
+cljs.core.array__GT_transient_hash_map = function array__GT_transient_hash_map(len, arr) {
+ var out = cljs.core.transient$.call(null, cljs.core.ObjMap.EMPTY);
+ var i = 0;
+ while(true) {
+ if(i < len) {
+ var G__3222 = cljs.core.assoc_BANG_.call(null, out, arr[i], arr[i + 1]);
+ var G__3223 = i + 2;
+ out = G__3222;
+ i = G__3223;
+ continue
+ }else {
+ return out
+ }
+ break
+ }
+};
+goog.provide("cljs.core.Box");
+cljs.core.Box = function(val) {
+ this.val = val
+};
+cljs.core.Box.cljs$lang$type = true;
+cljs.core.Box.cljs$lang$ctorPrSeq = function(this__2317__auto__) {
+ return cljs.core.list.call(null, "cljs.core/Box")
+};
+cljs.core.Box.cljs$lang$ctorPrWriter = function(this__2317__auto__, writer__2318__auto__) {
+ return cljs.core._write.call(null, writer__2318__auto__, "cljs.core/Box")
+};
+cljs.core.Box;
+cljs.core.key_test = function key_test(key, other) {
+ if(goog.isString(key)) {
+ return key === other
+ }else {
+ return cljs.core._EQ_.call(null, key, other)
+ }
+};
+cljs.core.mask = function mask(hash, shift) {
+ return hash >>> shift & 31
+};
+cljs.core.clone_and_set = function() {
+ var clone_and_set = null;
+ var clone_and_set__3 = function(arr, i, a) {
+ var G__3226 = arr.slice();
+ G__3226[i] = a;
+ return G__3226
+ };
+ var clone_and_set__5 = function(arr, i, a, j, b) {
+ var G__3227 = arr.slice();
+ G__3227[i] = a;
+ G__3227[j] = b;
+ return G__3227
+ };
+ clone_and_set = function(arr, i, a, j, b) {
+ switch(arguments.length) {
+ case 3:
+ return clone_and_set__3.call(this, arr, i, a);
+ case 5:
+ return clone_and_set__5.call(this, arr, i, a, j, b)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ clone_and_set.cljs$lang$arity$3 = clone_and_set__3;
+ clone_and_set.cljs$lang$arity$5 = clone_and_set__5;
+ return clone_and_set
+}();
+cljs.core.remove_pair = function remove_pair(arr, i) {
+ var new_arr = cljs.core.make_array.call(null, arr.length - 2);
+ cljs.core.array_copy.call(null, arr, 0, new_arr, 0, 2 * i);
+ cljs.core.array_copy.call(null, arr, 2 * (i + 1), new_arr, 2 * i, new_arr.length - 2 * i);
+ return new_arr
+};
+cljs.core.bitmap_indexed_node_index = function bitmap_indexed_node_index(bitmap, bit) {
+ return cljs.core.bit_count.call(null, bitmap & bit - 1)
+};
+cljs.core.bitpos = function bitpos(hash, shift) {
+ return 1 << (hash >>> shift & 31)
+};
+cljs.core.edit_and_set = function() {
+ var edit_and_set = null;
+ var edit_and_set__4 = function(inode, edit, i, a) {
+ var editable = inode.ensure_editable(edit);
+ editable.arr[i] = a;
+ return editable
+ };
+ var edit_and_set__6 = function(inode, edit, i, a, j, b) {
+ var editable = inode.ensure_editable(edit);
+ editable.arr[i] = a;
+ editable.arr[j] = b;
+ return editable
+ };
+ edit_and_set = function(inode, edit, i, a, j, b) {
+ switch(arguments.length) {
+ case 4:
+ return edit_and_set__4.call(this, inode, edit, i, a);
+ case 6:
+ return edit_and_set__6.call(this, inode, edit, i, a, j, b)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ edit_and_set.cljs$lang$arity$4 = edit_and_set__4;
+ edit_and_set.cljs$lang$arity$6 = edit_and_set__6;
+ return edit_and_set
+}();
+cljs.core.inode_kv_reduce = function inode_kv_reduce(arr, f, init) {
+ var len = arr.length;
+ var i = 0;
+ var init__$1 = init;
+ while(true) {
+ if(i < len) {
+ var init__$2 = function() {
+ var k = arr[i];
+ if(!(k == null)) {
+ return f.call(null, init__$1, k, arr[i + 1])
+ }else {
+ var node = arr[i + 1];
+ if(!(node == null)) {
+ return node.kv_reduce(f, init__$1)
+ }else {
+ return init__$1
+ }
+ }
+ }();
+ if(cljs.core.reduced_QMARK_.call(null, init__$2)) {
+ return cljs.core.deref.call(null, init__$2)
+ }else {
+ var G__3228 = i + 2;
+ var G__3229 = init__$2;
+ i = G__3228;
+ init__$1 = G__3229;
+ continue
+ }
+ }else {
+ return init__$1
+ }
+ break
+ }
+};
+goog.provide("cljs.core.BitmapIndexedNode");
+cljs.core.BitmapIndexedNode = function(edit, bitmap, arr) {
+ this.edit = edit;
+ this.bitmap = bitmap;
+ this.arr = arr
+};
+cljs.core.BitmapIndexedNode.cljs$lang$type = true;
+cljs.core.BitmapIndexedNode.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/BitmapIndexedNode")
+};
+cljs.core.BitmapIndexedNode.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/BitmapIndexedNode")
+};
+cljs.core.BitmapIndexedNode.prototype.edit_and_remove_pair = function(e, bit, i) {
+ var self__ = this;
+ var inode = this;
+ if(self__.bitmap === bit) {
+ return null
+ }else {
+ var editable = inode.ensure_editable(e);
+ var earr = editable.arr;
+ var len = earr.length;
+ editable.bitmap = bit ^ editable.bitmap;
+ cljs.core.array_copy.call(null, earr, 2 * (i + 1), earr, 2 * i, len - 2 * (i + 1));
+ earr[len - 2] = null;
+ earr[len - 1] = null;
+ return editable
+ }
+};
+cljs.core.BitmapIndexedNode.prototype.inode_assoc_BANG_ = function(edit__$1, shift, hash, key, val, added_leaf_QMARK_) {
+ var self__ = this;
+ var inode = this;
+ var bit = 1 << (hash >>> shift & 31);
+ var idx = cljs.core.bitmap_indexed_node_index.call(null, self__.bitmap, bit);
+ if((self__.bitmap & bit) === 0) {
+ var n = cljs.core.bit_count.call(null, self__.bitmap);
+ if(2 * n < self__.arr.length) {
+ var editable = inode.ensure_editable(edit__$1);
+ var earr = editable.arr;
+ added_leaf_QMARK_.val = true;
+ cljs.core.array_copy_downward.call(null, earr, 2 * idx, earr, 2 * (idx + 1), 2 * (n - idx));
+ earr[2 * idx] = key;
+ earr[2 * idx + 1] = val;
+ editable.bitmap = editable.bitmap | bit;
+ return editable
+ }else {
+ if(n >= 16) {
+ var nodes = cljs.core.make_array.call(null, 32);
+ var jdx = hash >>> shift & 31;
+ nodes[jdx] = cljs.core.BitmapIndexedNode.EMPTY.inode_assoc_BANG_(edit__$1, shift + 5, hash, key, val, added_leaf_QMARK_);
+ var i = 0;
+ var j = 0;
+ while(true) {
+ if(i < 32) {
+ if((self__.bitmap >>> i & 1) === 0) {
+ var G__3230 = i + 1;
+ var G__3231 = j;
+ i = G__3230;
+ j = G__3231;
+ continue
+ }else {
+ nodes[i] = !(self__.arr[j] == null) ? cljs.core.BitmapIndexedNode.EMPTY.inode_assoc_BANG_(edit__$1, shift + 5, cljs.core.hash.call(null, self__.arr[j]), self__.arr[j], self__.arr[j + 1], added_leaf_QMARK_) : self__.arr[j + 1];
+ var G__3232 = i + 1;
+ var G__3233 = j + 2;
+ i = G__3232;
+ j = G__3233;
+ continue
+ }
+ }else {
+ }
+ break
+ }
+ return new cljs.core.ArrayNode(edit__$1, n + 1, nodes)
+ }else {
+ if("\ufdd0'else") {
+ var new_arr = cljs.core.make_array.call(null, 2 * (n + 4));
+ cljs.core.array_copy.call(null, self__.arr, 0, new_arr, 0, 2 * idx);
+ new_arr[2 * idx] = key;
+ new_arr[2 * idx + 1] = val;
+ cljs.core.array_copy.call(null, self__.arr, 2 * idx, new_arr, 2 * (idx + 1), 2 * (n - idx));
+ added_leaf_QMARK_.val = true;
+ var editable = inode.ensure_editable(edit__$1);
+ editable.arr = new_arr;
+ editable.bitmap = editable.bitmap | bit;
+ return editable
+ }else {
+ return null
+ }
+ }
+ }
+ }else {
+ var key_or_nil = self__.arr[2 * idx];
+ var val_or_node = self__.arr[2 * idx + 1];
+ if(key_or_nil == null) {
+ var n = val_or_node.inode_assoc_BANG_(edit__$1, shift + 5, hash, key, val, added_leaf_QMARK_);
+ if(n === val_or_node) {
+ return inode
+ }else {
+ return cljs.core.edit_and_set.call(null, inode, edit__$1, 2 * idx + 1, n)
+ }
+ }else {
+ if(cljs.core.key_test.call(null, key, key_or_nil)) {
+ if(val === val_or_node) {
+ return inode
+ }else {
+ return cljs.core.edit_and_set.call(null, inode, edit__$1, 2 * idx + 1, val)
+ }
+ }else {
+ if("\ufdd0'else") {
+ added_leaf_QMARK_.val = true;
+ return cljs.core.edit_and_set.call(null, inode, edit__$1, 2 * idx, null, 2 * idx + 1, cljs.core.create_node.call(null, edit__$1, shift + 5, key_or_nil, val_or_node, hash, key, val))
+ }else {
+ return null
+ }
+ }
+ }
+ }
+};
+cljs.core.BitmapIndexedNode.prototype.inode_seq = function() {
+ var self__ = this;
+ var inode = this;
+ return cljs.core.create_inode_seq.call(null, self__.arr)
+};
+cljs.core.BitmapIndexedNode.prototype.inode_without_BANG_ = function(edit__$1, shift, hash, key, removed_leaf_QMARK_) {
+ var self__ = this;
+ var inode = this;
+ var bit = 1 << (hash >>> shift & 31);
+ if((self__.bitmap & bit) === 0) {
+ return inode
+ }else {
+ var idx = cljs.core.bitmap_indexed_node_index.call(null, self__.bitmap, bit);
+ var key_or_nil = self__.arr[2 * idx];
+ var val_or_node = self__.arr[2 * idx + 1];
+ if(key_or_nil == null) {
+ var n = val_or_node.inode_without_BANG_(edit__$1, shift + 5, hash, key, removed_leaf_QMARK_);
+ if(n === val_or_node) {
+ return inode
+ }else {
+ if(!(n == null)) {
+ return cljs.core.edit_and_set.call(null, inode, edit__$1, 2 * idx + 1, n)
+ }else {
+ if(self__.bitmap === bit) {
+ return null
+ }else {
+ if("\ufdd0'else") {
+ return inode.edit_and_remove_pair(edit__$1, bit, idx)
+ }else {
+ return null
+ }
+ }
+ }
+ }
+ }else {
+ if(cljs.core.key_test.call(null, key, key_or_nil)) {
+ removed_leaf_QMARK_[0] = true;
+ return inode.edit_and_remove_pair(edit__$1, bit, idx)
+ }else {
+ if("\ufdd0'else") {
+ return inode
+ }else {
+ return null
+ }
+ }
+ }
+ }
+};
+cljs.core.BitmapIndexedNode.prototype.ensure_editable = function(e) {
+ var self__ = this;
+ var inode = this;
+ if(e === self__.edit) {
+ return inode
+ }else {
+ var n = cljs.core.bit_count.call(null, self__.bitmap);
+ var new_arr = cljs.core.make_array.call(null, n < 0 ? 4 : 2 * (n + 1));
+ cljs.core.array_copy.call(null, self__.arr, 0, new_arr, 0, 2 * n);
+ return new cljs.core.BitmapIndexedNode(e, self__.bitmap, new_arr)
+ }
+};
+cljs.core.BitmapIndexedNode.prototype.kv_reduce = function(f, init) {
+ var self__ = this;
+ var inode = this;
+ return cljs.core.inode_kv_reduce.call(null, self__.arr, f, init)
+};
+cljs.core.BitmapIndexedNode.prototype.inode_find = function(shift, hash, key, not_found) {
+ var self__ = this;
+ var inode = this;
+ var bit = 1 << (hash >>> shift & 31);
+ if((self__.bitmap & bit) === 0) {
+ return not_found
+ }else {
+ var idx = cljs.core.bitmap_indexed_node_index.call(null, self__.bitmap, bit);
+ var key_or_nil = self__.arr[2 * idx];
+ var val_or_node = self__.arr[2 * idx + 1];
+ if(key_or_nil == null) {
+ return val_or_node.inode_find(shift + 5, hash, key, not_found)
+ }else {
+ if(cljs.core.key_test.call(null, key, key_or_nil)) {
+ return cljs.core.PersistentVector.fromArray([key_or_nil, val_or_node], true)
+ }else {
+ if("\ufdd0'else") {
+ return not_found
+ }else {
+ return null
+ }
+ }
+ }
+ }
+};
+cljs.core.BitmapIndexedNode.prototype.inode_without = function(shift, hash, key) {
+ var self__ = this;
+ var inode = this;
+ var bit = 1 << (hash >>> shift & 31);
+ if((self__.bitmap & bit) === 0) {
+ return inode
+ }else {
+ var idx = cljs.core.bitmap_indexed_node_index.call(null, self__.bitmap, bit);
+ var key_or_nil = self__.arr[2 * idx];
+ var val_or_node = self__.arr[2 * idx + 1];
+ if(key_or_nil == null) {
+ var n = val_or_node.inode_without(shift + 5, hash, key);
+ if(n === val_or_node) {
+ return inode
+ }else {
+ if(!(n == null)) {
+ return new cljs.core.BitmapIndexedNode(null, self__.bitmap, cljs.core.clone_and_set.call(null, self__.arr, 2 * idx + 1, n))
+ }else {
+ if(self__.bitmap === bit) {
+ return null
+ }else {
+ if("\ufdd0'else") {
+ return new cljs.core.BitmapIndexedNode(null, self__.bitmap ^ bit, cljs.core.remove_pair.call(null, self__.arr, idx))
+ }else {
+ return null
+ }
+ }
+ }
+ }
+ }else {
+ if(cljs.core.key_test.call(null, key, key_or_nil)) {
+ return new cljs.core.BitmapIndexedNode(null, self__.bitmap ^ bit, cljs.core.remove_pair.call(null, self__.arr, idx))
+ }else {
+ if("\ufdd0'else") {
+ return inode
+ }else {
+ return null
+ }
+ }
+ }
+ }
+};
+cljs.core.BitmapIndexedNode.prototype.inode_assoc = function(shift, hash, key, val, added_leaf_QMARK_) {
+ var self__ = this;
+ var inode = this;
+ var bit = 1 << (hash >>> shift & 31);
+ var idx = cljs.core.bitmap_indexed_node_index.call(null, self__.bitmap, bit);
+ if((self__.bitmap & bit) === 0) {
+ var n = cljs.core.bit_count.call(null, self__.bitmap);
+ if(n >= 16) {
+ var nodes = cljs.core.make_array.call(null, 32);
+ var jdx = hash >>> shift & 31;
+ nodes[jdx] = cljs.core.BitmapIndexedNode.EMPTY.inode_assoc(shift + 5, hash, key, val, added_leaf_QMARK_);
+ var i = 0;
+ var j = 0;
+ while(true) {
+ if(i < 32) {
+ if((self__.bitmap >>> i & 1) === 0) {
+ var G__3234 = i + 1;
+ var G__3235 = j;
+ i = G__3234;
+ j = G__3235;
+ continue
+ }else {
+ nodes[i] = !(self__.arr[j] == null) ? cljs.core.BitmapIndexedNode.EMPTY.inode_assoc(shift + 5, cljs.core.hash.call(null, self__.arr[j]), self__.arr[j], self__.arr[j + 1], added_leaf_QMARK_) : self__.arr[j + 1];
+ var G__3236 = i + 1;
+ var G__3237 = j + 2;
+ i = G__3236;
+ j = G__3237;
+ continue
+ }
+ }else {
+ }
+ break
+ }
+ return new cljs.core.ArrayNode(null, n + 1, nodes)
+ }else {
+ var new_arr = cljs.core.make_array.call(null, 2 * (n + 1));
+ cljs.core.array_copy.call(null, self__.arr, 0, new_arr, 0, 2 * idx);
+ new_arr[2 * idx] = key;
+ new_arr[2 * idx + 1] = val;
+ cljs.core.array_copy.call(null, self__.arr, 2 * idx, new_arr, 2 * (idx + 1), 2 * (n - idx));
+ added_leaf_QMARK_.val = true;
+ return new cljs.core.BitmapIndexedNode(null, self__.bitmap | bit, new_arr)
+ }
+ }else {
+ var key_or_nil = self__.arr[2 * idx];
+ var val_or_node = self__.arr[2 * idx + 1];
+ if(key_or_nil == null) {
+ var n = val_or_node.inode_assoc(shift + 5, hash, key, val, added_leaf_QMARK_);
+ if(n === val_or_node) {
+ return inode
+ }else {
+ return new cljs.core.BitmapIndexedNode(null, self__.bitmap, cljs.core.clone_and_set.call(null, self__.arr, 2 * idx + 1, n))
+ }
+ }else {
+ if(cljs.core.key_test.call(null, key, key_or_nil)) {
+ if(val === val_or_node) {
+ return inode
+ }else {
+ return new cljs.core.BitmapIndexedNode(null, self__.bitmap, cljs.core.clone_and_set.call(null, self__.arr, 2 * idx + 1, val))
+ }
+ }else {
+ if("\ufdd0'else") {
+ added_leaf_QMARK_.val = true;
+ return new cljs.core.BitmapIndexedNode(null, self__.bitmap, cljs.core.clone_and_set.call(null, self__.arr, 2 * idx, null, 2 * idx + 1, cljs.core.create_node.call(null, shift + 5, key_or_nil, val_or_node, hash, key, val)))
+ }else {
+ return null
+ }
+ }
+ }
+ }
+};
+cljs.core.BitmapIndexedNode.prototype.inode_lookup = function(shift, hash, key, not_found) {
+ var self__ = this;
+ var inode = this;
+ var bit = 1 << (hash >>> shift & 31);
+ if((self__.bitmap & bit) === 0) {
+ return not_found
+ }else {
+ var idx = cljs.core.bitmap_indexed_node_index.call(null, self__.bitmap, bit);
+ var key_or_nil = self__.arr[2 * idx];
+ var val_or_node = self__.arr[2 * idx + 1];
+ if(key_or_nil == null) {
+ return val_or_node.inode_lookup(shift + 5, hash, key, not_found)
+ }else {
+ if(cljs.core.key_test.call(null, key, key_or_nil)) {
+ return val_or_node
+ }else {
+ if("\ufdd0'else") {
+ return not_found
+ }else {
+ return null
+ }
+ }
+ }
+ }
+};
+cljs.core.BitmapIndexedNode;
+cljs.core.BitmapIndexedNode.EMPTY = new cljs.core.BitmapIndexedNode(null, 0, cljs.core.make_array.call(null, 0));
+cljs.core.pack_array_node = function pack_array_node(array_node, edit, idx) {
+ var arr = array_node.arr;
+ var len = 2 * (array_node.cnt - 1);
+ var new_arr = cljs.core.make_array.call(null, len);
+ var i = 0;
+ var j = 1;
+ var bitmap = 0;
+ while(true) {
+ if(i < len) {
+ if(function() {
+ var and__3822__auto__ = !(i === idx);
+ if(and__3822__auto__) {
+ return!(arr[i] == null)
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ new_arr[j] = arr[i];
+ var G__3238 = i + 1;
+ var G__3239 = j + 2;
+ var G__3240 = bitmap | 1 << i;
+ i = G__3238;
+ j = G__3239;
+ bitmap = G__3240;
+ continue
+ }else {
+ var G__3241 = i + 1;
+ var G__3242 = j;
+ var G__3243 = bitmap;
+ i = G__3241;
+ j = G__3242;
+ bitmap = G__3243;
+ continue
+ }
+ }else {
+ return new cljs.core.BitmapIndexedNode(edit, bitmap, new_arr)
+ }
+ break
+ }
+};
+goog.provide("cljs.core.ArrayNode");
+cljs.core.ArrayNode = function(edit, cnt, arr) {
+ this.edit = edit;
+ this.cnt = cnt;
+ this.arr = arr
+};
+cljs.core.ArrayNode.cljs$lang$type = true;
+cljs.core.ArrayNode.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/ArrayNode")
+};
+cljs.core.ArrayNode.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/ArrayNode")
+};
+cljs.core.ArrayNode.prototype.inode_assoc_BANG_ = function(edit__$1, shift, hash, key, val, added_leaf_QMARK_) {
+ var self__ = this;
+ var inode = this;
+ var idx = hash >>> shift & 31;
+ var node = self__.arr[idx];
+ if(node == null) {
+ var editable = cljs.core.edit_and_set.call(null, inode, edit__$1, idx, cljs.core.BitmapIndexedNode.EMPTY.inode_assoc_BANG_(edit__$1, shift + 5, hash, key, val, added_leaf_QMARK_));
+ editable.cnt = editable.cnt + 1;
+ return editable
+ }else {
+ var n = node.inode_assoc_BANG_(edit__$1, shift + 5, hash, key, val, added_leaf_QMARK_);
+ if(n === node) {
+ return inode
+ }else {
+ return cljs.core.edit_and_set.call(null, inode, edit__$1, idx, n)
+ }
+ }
+};
+cljs.core.ArrayNode.prototype.inode_seq = function() {
+ var self__ = this;
+ var inode = this;
+ return cljs.core.create_array_node_seq.call(null, self__.arr)
+};
+cljs.core.ArrayNode.prototype.inode_without_BANG_ = function(edit__$1, shift, hash, key, removed_leaf_QMARK_) {
+ var self__ = this;
+ var inode = this;
+ var idx = hash >>> shift & 31;
+ var node = self__.arr[idx];
+ if(node == null) {
+ return inode
+ }else {
+ var n = node.inode_without_BANG_(edit__$1, shift + 5, hash, key, removed_leaf_QMARK_);
+ if(n === node) {
+ return inode
+ }else {
+ if(n == null) {
+ if(self__.cnt <= 8) {
+ return cljs.core.pack_array_node.call(null, inode, edit__$1, idx)
+ }else {
+ var editable = cljs.core.edit_and_set.call(null, inode, edit__$1, idx, n);
+ editable.cnt = editable.cnt - 1;
+ return editable
+ }
+ }else {
+ if("\ufdd0'else") {
+ return cljs.core.edit_and_set.call(null, inode, edit__$1, idx, n)
+ }else {
+ return null
+ }
+ }
+ }
+ }
+};
+cljs.core.ArrayNode.prototype.ensure_editable = function(e) {
+ var self__ = this;
+ var inode = this;
+ if(e === self__.edit) {
+ return inode
+ }else {
+ return new cljs.core.ArrayNode(e, self__.cnt, self__.arr.slice())
+ }
+};
+cljs.core.ArrayNode.prototype.kv_reduce = function(f, init) {
+ var self__ = this;
+ var inode = this;
+ var len = self__.arr.length;
+ var i = 0;
+ var init__$1 = init;
+ while(true) {
+ if(i < len) {
+ var node = self__.arr[i];
+ if(!(node == null)) {
+ var init__$2 = node.kv_reduce(f, init__$1);
+ if(cljs.core.reduced_QMARK_.call(null, init__$2)) {
+ return cljs.core.deref.call(null, init__$2)
+ }else {
+ var G__3244 = i + 1;
+ var G__3245 = init__$2;
+ i = G__3244;
+ init__$1 = G__3245;
+ continue
+ }
+ }else {
+ return null
+ }
+ }else {
+ return init__$1
+ }
+ break
+ }
+};
+cljs.core.ArrayNode.prototype.inode_find = function(shift, hash, key, not_found) {
+ var self__ = this;
+ var inode = this;
+ var idx = hash >>> shift & 31;
+ var node = self__.arr[idx];
+ if(!(node == null)) {
+ return node.inode_find(shift + 5, hash, key, not_found)
+ }else {
+ return not_found
+ }
+};
+cljs.core.ArrayNode.prototype.inode_without = function(shift, hash, key) {
+ var self__ = this;
+ var inode = this;
+ var idx = hash >>> shift & 31;
+ var node = self__.arr[idx];
+ if(!(node == null)) {
+ var n = node.inode_without(shift + 5, hash, key);
+ if(n === node) {
+ return inode
+ }else {
+ if(n == null) {
+ if(self__.cnt <= 8) {
+ return cljs.core.pack_array_node.call(null, inode, null, idx)
+ }else {
+ return new cljs.core.ArrayNode(null, self__.cnt - 1, cljs.core.clone_and_set.call(null, self__.arr, idx, n))
+ }
+ }else {
+ if("\ufdd0'else") {
+ return new cljs.core.ArrayNode(null, self__.cnt, cljs.core.clone_and_set.call(null, self__.arr, idx, n))
+ }else {
+ return null
+ }
+ }
+ }
+ }else {
+ return inode
+ }
+};
+cljs.core.ArrayNode.prototype.inode_assoc = function(shift, hash, key, val, added_leaf_QMARK_) {
+ var self__ = this;
+ var inode = this;
+ var idx = hash >>> shift & 31;
+ var node = self__.arr[idx];
+ if(node == null) {
+ return new cljs.core.ArrayNode(null, self__.cnt + 1, cljs.core.clone_and_set.call(null, self__.arr, idx, cljs.core.BitmapIndexedNode.EMPTY.inode_assoc(shift + 5, hash, key, val, added_leaf_QMARK_)))
+ }else {
+ var n = node.inode_assoc(shift + 5, hash, key, val, added_leaf_QMARK_);
+ if(n === node) {
+ return inode
+ }else {
+ return new cljs.core.ArrayNode(null, self__.cnt, cljs.core.clone_and_set.call(null, self__.arr, idx, n))
+ }
+ }
+};
+cljs.core.ArrayNode.prototype.inode_lookup = function(shift, hash, key, not_found) {
+ var self__ = this;
+ var inode = this;
+ var idx = hash >>> shift & 31;
+ var node = self__.arr[idx];
+ if(!(node == null)) {
+ return node.inode_lookup(shift + 5, hash, key, not_found)
+ }else {
+ return not_found
+ }
+};
+cljs.core.ArrayNode;
+cljs.core.hash_collision_node_find_index = function hash_collision_node_find_index(arr, cnt, key) {
+ var lim = 2 * cnt;
+ var i = 0;
+ while(true) {
+ if(i < lim) {
+ if(cljs.core.key_test.call(null, key, arr[i])) {
+ return i
+ }else {
+ var G__3246 = i + 2;
+ i = G__3246;
+ continue
+ }
+ }else {
+ return-1
+ }
+ break
+ }
+};
+goog.provide("cljs.core.HashCollisionNode");
+cljs.core.HashCollisionNode = function(edit, collision_hash, cnt, arr) {
+ this.edit = edit;
+ this.collision_hash = collision_hash;
+ this.cnt = cnt;
+ this.arr = arr
+};
+cljs.core.HashCollisionNode.cljs$lang$type = true;
+cljs.core.HashCollisionNode.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/HashCollisionNode")
+};
+cljs.core.HashCollisionNode.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/HashCollisionNode")
+};
+cljs.core.HashCollisionNode.prototype.inode_assoc_BANG_ = function(edit__$1, shift, hash, key, val, added_leaf_QMARK_) {
+ var self__ = this;
+ var inode = this;
+ if(hash === self__.collision_hash) {
+ var idx = cljs.core.hash_collision_node_find_index.call(null, self__.arr, self__.cnt, key);
+ if(idx === -1) {
+ if(self__.arr.length > 2 * self__.cnt) {
+ var editable = cljs.core.edit_and_set.call(null, inode, edit__$1, 2 * self__.cnt, key, 2 * self__.cnt + 1, val);
+ added_leaf_QMARK_.val = true;
+ editable.cnt = editable.cnt + 1;
+ return editable
+ }else {
+ var len = self__.arr.length;
+ var new_arr = cljs.core.make_array.call(null, len + 2);
+ cljs.core.array_copy.call(null, self__.arr, 0, new_arr, 0, len);
+ new_arr[len] = key;
+ new_arr[len + 1] = val;
+ added_leaf_QMARK_.val = true;
+ return inode.ensure_editable_array(edit__$1, self__.cnt + 1, new_arr)
+ }
+ }else {
+ if(self__.arr[idx + 1] === val) {
+ return inode
+ }else {
+ return cljs.core.edit_and_set.call(null, inode, edit__$1, idx + 1, val)
+ }
+ }
+ }else {
+ return(new cljs.core.BitmapIndexedNode(edit__$1, 1 << (self__.collision_hash >>> shift & 31), [null, inode, null, null])).inode_assoc_BANG_(edit__$1, shift, hash, key, val, added_leaf_QMARK_)
+ }
+};
+cljs.core.HashCollisionNode.prototype.inode_seq = function() {
+ var self__ = this;
+ var inode = this;
+ return cljs.core.create_inode_seq.call(null, self__.arr)
+};
+cljs.core.HashCollisionNode.prototype.inode_without_BANG_ = function(edit__$1, shift, hash, key, removed_leaf_QMARK_) {
+ var self__ = this;
+ var inode = this;
+ var idx = cljs.core.hash_collision_node_find_index.call(null, self__.arr, self__.cnt, key);
+ if(idx === -1) {
+ return inode
+ }else {
+ removed_leaf_QMARK_[0] = true;
+ if(self__.cnt === 1) {
+ return null
+ }else {
+ var editable = inode.ensure_editable(edit__$1);
+ var earr = editable.arr;
+ earr[idx] = earr[2 * self__.cnt - 2];
+ earr[idx + 1] = earr[2 * self__.cnt - 1];
+ earr[2 * self__.cnt - 1] = null;
+ earr[2 * self__.cnt - 2] = null;
+ editable.cnt = editable.cnt - 1;
+ return editable
+ }
+ }
+};
+cljs.core.HashCollisionNode.prototype.ensure_editable = function(e) {
+ var self__ = this;
+ var inode = this;
+ if(e === self__.edit) {
+ return inode
+ }else {
+ var new_arr = cljs.core.make_array.call(null, 2 * (self__.cnt + 1));
+ cljs.core.array_copy.call(null, self__.arr, 0, new_arr, 0, 2 * self__.cnt);
+ return new cljs.core.HashCollisionNode(e, self__.collision_hash, self__.cnt, new_arr)
+ }
+};
+cljs.core.HashCollisionNode.prototype.kv_reduce = function(f, init) {
+ var self__ = this;
+ var inode = this;
+ return cljs.core.inode_kv_reduce.call(null, self__.arr, f, init)
+};
+cljs.core.HashCollisionNode.prototype.inode_find = function(shift, hash, key, not_found) {
+ var self__ = this;
+ var inode = this;
+ var idx = cljs.core.hash_collision_node_find_index.call(null, self__.arr, self__.cnt, key);
+ if(idx < 0) {
+ return not_found
+ }else {
+ if(cljs.core.key_test.call(null, key, self__.arr[idx])) {
+ return cljs.core.PersistentVector.fromArray([self__.arr[idx], self__.arr[idx + 1]], true)
+ }else {
+ if("\ufdd0'else") {
+ return not_found
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.HashCollisionNode.prototype.inode_without = function(shift, hash, key) {
+ var self__ = this;
+ var inode = this;
+ var idx = cljs.core.hash_collision_node_find_index.call(null, self__.arr, self__.cnt, key);
+ if(idx === -1) {
+ return inode
+ }else {
+ if(self__.cnt === 1) {
+ return null
+ }else {
+ if("\ufdd0'else") {
+ return new cljs.core.HashCollisionNode(null, self__.collision_hash, self__.cnt - 1, cljs.core.remove_pair.call(null, self__.arr, cljs.core.quot.call(null, idx, 2)))
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.HashCollisionNode.prototype.inode_assoc = function(shift, hash, key, val, added_leaf_QMARK_) {
+ var self__ = this;
+ var inode = this;
+ if(hash === self__.collision_hash) {
+ var idx = cljs.core.hash_collision_node_find_index.call(null, self__.arr, self__.cnt, key);
+ if(idx === -1) {
+ var len = self__.arr.length;
+ var new_arr = cljs.core.make_array.call(null, len + 2);
+ cljs.core.array_copy.call(null, self__.arr, 0, new_arr, 0, len);
+ new_arr[len] = key;
+ new_arr[len + 1] = val;
+ added_leaf_QMARK_.val = true;
+ return new cljs.core.HashCollisionNode(null, self__.collision_hash, self__.cnt + 1, new_arr)
+ }else {
+ if(cljs.core._EQ_.call(null, self__.arr[idx], val)) {
+ return inode
+ }else {
+ return new cljs.core.HashCollisionNode(null, self__.collision_hash, self__.cnt, cljs.core.clone_and_set.call(null, self__.arr, idx + 1, val))
+ }
+ }
+ }else {
+ return(new cljs.core.BitmapIndexedNode(null, 1 << (self__.collision_hash >>> shift & 31), [null, inode])).inode_assoc(shift, hash, key, val, added_leaf_QMARK_)
+ }
+};
+cljs.core.HashCollisionNode.prototype.inode_lookup = function(shift, hash, key, not_found) {
+ var self__ = this;
+ var inode = this;
+ var idx = cljs.core.hash_collision_node_find_index.call(null, self__.arr, self__.cnt, key);
+ if(idx < 0) {
+ return not_found
+ }else {
+ if(cljs.core.key_test.call(null, key, self__.arr[idx])) {
+ return self__.arr[idx + 1]
+ }else {
+ if("\ufdd0'else") {
+ return not_found
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.HashCollisionNode.prototype.ensure_editable_array = function(e, count, array) {
+ var self__ = this;
+ var inode = this;
+ if(e === self__.edit) {
+ self__.arr = array;
+ self__.cnt = count;
+ return inode
+ }else {
+ return new cljs.core.HashCollisionNode(self__.edit, self__.collision_hash, count, array)
+ }
+};
+cljs.core.HashCollisionNode;
+cljs.core.create_node = function() {
+ var create_node = null;
+ var create_node__6 = function(shift, key1, val1, key2hash, key2, val2) {
+ var key1hash = cljs.core.hash.call(null, key1);
+ if(key1hash === key2hash) {
+ return new cljs.core.HashCollisionNode(null, key1hash, 2, [key1, val1, key2, val2])
+ }else {
+ var added_leaf_QMARK_ = new cljs.core.Box(false);
+ return cljs.core.BitmapIndexedNode.EMPTY.inode_assoc(shift, key1hash, key1, val1, added_leaf_QMARK_).inode_assoc(shift, key2hash, key2, val2, added_leaf_QMARK_)
+ }
+ };
+ var create_node__7 = function(edit, shift, key1, val1, key2hash, key2, val2) {
+ var key1hash = cljs.core.hash.call(null, key1);
+ if(key1hash === key2hash) {
+ return new cljs.core.HashCollisionNode(null, key1hash, 2, [key1, val1, key2, val2])
+ }else {
+ var added_leaf_QMARK_ = new cljs.core.Box(false);
+ return cljs.core.BitmapIndexedNode.EMPTY.inode_assoc_BANG_(edit, shift, key1hash, key1, val1, added_leaf_QMARK_).inode_assoc_BANG_(edit, shift, key2hash, key2, val2, added_leaf_QMARK_)
+ }
+ };
+ create_node = function(edit, shift, key1, val1, key2hash, key2, val2) {
+ switch(arguments.length) {
+ case 6:
+ return create_node__6.call(this, edit, shift, key1, val1, key2hash, key2);
+ case 7:
+ return create_node__7.call(this, edit, shift, key1, val1, key2hash, key2, val2)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ create_node.cljs$lang$arity$6 = create_node__6;
+ create_node.cljs$lang$arity$7 = create_node__7;
+ return create_node
+}();
+goog.provide("cljs.core.NodeSeq");
+cljs.core.NodeSeq = function(meta, nodes, i, s, __hash) {
+ this.meta = meta;
+ this.nodes = nodes;
+ this.i = i;
+ this.s = s;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 31850572
+};
+cljs.core.NodeSeq.cljs$lang$type = true;
+cljs.core.NodeSeq.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/NodeSeq")
+};
+cljs.core.NodeSeq.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/NodeSeq")
+};
+cljs.core.NodeSeq.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.NodeSeq.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ return cljs.core.cons.call(null, o, coll)
+};
+cljs.core.NodeSeq.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.NodeSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = function(this$) {
+ var self__ = this;
+ return this$
+};
+cljs.core.NodeSeq.prototype.cljs$core$ISeq$_first$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.s == null) {
+ return cljs.core.PersistentVector.fromArray([self__.nodes[self__.i], self__.nodes[self__.i + 1]], true)
+ }else {
+ return cljs.core.first.call(null, self__.s)
+ }
+};
+cljs.core.NodeSeq.prototype.cljs$core$ISeq$_rest$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.s == null) {
+ return cljs.core.create_inode_seq.call(null, self__.nodes, self__.i + 2, null)
+ }else {
+ return cljs.core.create_inode_seq.call(null, self__.nodes, self__.i, cljs.core.next.call(null, self__.s))
+ }
+};
+cljs.core.NodeSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.NodeSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.NodeSeq(meta__$1, self__.nodes, self__.i, self__.s, self__.__hash)
+};
+cljs.core.NodeSeq.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.NodeSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.List.EMPTY, self__.meta)
+};
+cljs.core.NodeSeq;
+cljs.core.create_inode_seq = function() {
+ var create_inode_seq = null;
+ var create_inode_seq__1 = function(nodes) {
+ return create_inode_seq.call(null, nodes, 0, null)
+ };
+ var create_inode_seq__3 = function(nodes, i, s) {
+ if(s == null) {
+ var len = nodes.length;
+ var j = i;
+ while(true) {
+ if(j < len) {
+ if(!(nodes[j] == null)) {
+ return new cljs.core.NodeSeq(null, nodes, j, null, null)
+ }else {
+ var temp__3971__auto__ = nodes[j + 1];
+ if(cljs.core.truth_(temp__3971__auto__)) {
+ var node = temp__3971__auto__;
+ var temp__3971__auto____$1 = node.inode_seq();
+ if(cljs.core.truth_(temp__3971__auto____$1)) {
+ var node_seq = temp__3971__auto____$1;
+ return new cljs.core.NodeSeq(null, nodes, j + 2, node_seq, null)
+ }else {
+ var G__3247 = j + 2;
+ j = G__3247;
+ continue
+ }
+ }else {
+ var G__3248 = j + 2;
+ j = G__3248;
+ continue
+ }
+ }
+ }else {
+ return null
+ }
+ break
+ }
+ }else {
+ return new cljs.core.NodeSeq(null, nodes, i, s, null)
+ }
+ };
+ create_inode_seq = function(nodes, i, s) {
+ switch(arguments.length) {
+ case 1:
+ return create_inode_seq__1.call(this, nodes);
+ case 3:
+ return create_inode_seq__3.call(this, nodes, i, s)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ create_inode_seq.cljs$lang$arity$1 = create_inode_seq__1;
+ create_inode_seq.cljs$lang$arity$3 = create_inode_seq__3;
+ return create_inode_seq
+}();
+goog.provide("cljs.core.ArrayNodeSeq");
+cljs.core.ArrayNodeSeq = function(meta, nodes, i, s, __hash) {
+ this.meta = meta;
+ this.nodes = nodes;
+ this.i = i;
+ this.s = s;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 31850572
+};
+cljs.core.ArrayNodeSeq.cljs$lang$type = true;
+cljs.core.ArrayNodeSeq.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/ArrayNodeSeq")
+};
+cljs.core.ArrayNodeSeq.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/ArrayNodeSeq")
+};
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.ArrayNodeSeq.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ return cljs.core.cons.call(null, o, coll)
+};
+cljs.core.ArrayNodeSeq.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.ArrayNodeSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = function(this$) {
+ var self__ = this;
+ return this$
+};
+cljs.core.ArrayNodeSeq.prototype.cljs$core$ISeq$_first$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.first.call(null, self__.s)
+};
+cljs.core.ArrayNodeSeq.prototype.cljs$core$ISeq$_rest$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.create_array_node_seq.call(null, null, self__.nodes, self__.i, cljs.core.next.call(null, self__.s))
+};
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.ArrayNodeSeq(meta__$1, self__.nodes, self__.i, self__.s, self__.__hash)
+};
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.List.EMPTY, self__.meta)
+};
+cljs.core.ArrayNodeSeq;
+cljs.core.create_array_node_seq = function() {
+ var create_array_node_seq = null;
+ var create_array_node_seq__1 = function(nodes) {
+ return create_array_node_seq.call(null, null, nodes, 0, null)
+ };
+ var create_array_node_seq__4 = function(meta, nodes, i, s) {
+ if(s == null) {
+ var len = nodes.length;
+ var j = i;
+ while(true) {
+ if(j < len) {
+ var temp__3971__auto__ = nodes[j];
+ if(cljs.core.truth_(temp__3971__auto__)) {
+ var nj = temp__3971__auto__;
+ var temp__3971__auto____$1 = nj.inode_seq();
+ if(cljs.core.truth_(temp__3971__auto____$1)) {
+ var ns = temp__3971__auto____$1;
+ return new cljs.core.ArrayNodeSeq(meta, nodes, j + 1, ns, null)
+ }else {
+ var G__3249 = j + 1;
+ j = G__3249;
+ continue
+ }
+ }else {
+ var G__3250 = j + 1;
+ j = G__3250;
+ continue
+ }
+ }else {
+ return null
+ }
+ break
+ }
+ }else {
+ return new cljs.core.ArrayNodeSeq(meta, nodes, i, s, null)
+ }
+ };
+ create_array_node_seq = function(meta, nodes, i, s) {
+ switch(arguments.length) {
+ case 1:
+ return create_array_node_seq__1.call(this, meta);
+ case 4:
+ return create_array_node_seq__4.call(this, meta, nodes, i, s)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ create_array_node_seq.cljs$lang$arity$1 = create_array_node_seq__1;
+ create_array_node_seq.cljs$lang$arity$4 = create_array_node_seq__4;
+ return create_array_node_seq
+}();
+goog.provide("cljs.core.PersistentHashMap");
+cljs.core.PersistentHashMap = function(meta, cnt, root, has_nil_QMARK_, nil_val, __hash) {
+ this.meta = meta;
+ this.cnt = cnt;
+ this.root = root;
+ this.has_nil_QMARK_ = has_nil_QMARK_;
+ this.nil_val = nil_val;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 4;
+ this.cljs$lang$protocol_mask$partition0$ = 16123663
+};
+cljs.core.PersistentHashMap.cljs$lang$type = true;
+cljs.core.PersistentHashMap.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/PersistentHashMap")
+};
+cljs.core.PersistentHashMap.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/PersistentHashMap")
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = function(coll) {
+ var self__ = this;
+ return new cljs.core.TransientHashMap({}, self__.root, self__.cnt, self__.has_nil_QMARK_, self__.nil_val)
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_imap.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$ILookup$_lookup$arity$2 = function(coll, k) {
+ var self__ = this;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, null)
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$ILookup$_lookup$arity$3 = function(coll, k, not_found) {
+ var self__ = this;
+ if(k == null) {
+ if(self__.has_nil_QMARK_) {
+ return self__.nil_val
+ }else {
+ return not_found
+ }
+ }else {
+ if(self__.root == null) {
+ return not_found
+ }else {
+ if("\ufdd0'else") {
+ return self__.root.inode_lookup(0, cljs.core.hash.call(null, k), k, not_found)
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$IAssociative$_assoc$arity$3 = function(coll, k, v) {
+ var self__ = this;
+ if(k == null) {
+ if(function() {
+ var and__3822__auto__ = self__.has_nil_QMARK_;
+ if(and__3822__auto__) {
+ return v === self__.nil_val
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return coll
+ }else {
+ return new cljs.core.PersistentHashMap(self__.meta, self__.has_nil_QMARK_ ? self__.cnt : self__.cnt + 1, self__.root, true, v, null)
+ }
+ }else {
+ var added_leaf_QMARK_ = new cljs.core.Box(false);
+ var new_root = (self__.root == null ? cljs.core.BitmapIndexedNode.EMPTY : self__.root).inode_assoc(0, cljs.core.hash.call(null, k), k, v, added_leaf_QMARK_);
+ if(new_root === self__.root) {
+ return coll
+ }else {
+ return new cljs.core.PersistentHashMap(self__.meta, added_leaf_QMARK_.val ? self__.cnt + 1 : self__.cnt, new_root, self__.has_nil_QMARK_, self__.nil_val, null)
+ }
+ }
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = function(coll, k) {
+ var self__ = this;
+ if(k == null) {
+ return self__.has_nil_QMARK_
+ }else {
+ if(self__.root == null) {
+ return false
+ }else {
+ if("\ufdd0'else") {
+ return!(self__.root.inode_lookup(0, cljs.core.hash.call(null, k), k, cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel)
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.PersistentHashMap.prototype.call = function() {
+ var G__3255 = null;
+ var G__3255__2 = function(this_sym3253, k) {
+ var self__ = this;
+ var this_sym3253__$1 = this;
+ var coll = this_sym3253__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$2(coll, k)
+ };
+ var G__3255__3 = function(this_sym3254, k, not_found) {
+ var self__ = this;
+ var this_sym3254__$1 = this;
+ var coll = this_sym3254__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, not_found)
+ };
+ G__3255 = function(this_sym3254, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3255__2.call(this, this_sym3254, k);
+ case 3:
+ return G__3255__3.call(this, this_sym3254, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3255
+}();
+cljs.core.PersistentHashMap.prototype.apply = function(this_sym3251, args3252) {
+ var self__ = this;
+ return this_sym3251.call.apply(this_sym3251, [this_sym3251].concat(args3252.slice()))
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = function(coll, f, init) {
+ var self__ = this;
+ var init__$1 = self__.has_nil_QMARK_ ? f.call(null, init, null, self__.nil_val) : init;
+ if(cljs.core.reduced_QMARK_.call(null, init__$1)) {
+ return cljs.core.deref.call(null, init__$1)
+ }else {
+ if(!(self__.root == null)) {
+ return self__.root.kv_reduce(f, init__$1)
+ }else {
+ if("\ufdd0'else") {
+ return init__$1
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, entry) {
+ var self__ = this;
+ if(cljs.core.vector_QMARK_.call(null, entry)) {
+ return coll.cljs$core$IAssociative$_assoc$arity$3(coll, cljs.core._nth.call(null, entry, 0), cljs.core._nth.call(null, entry, 1))
+ }else {
+ return cljs.core.reduce.call(null, cljs.core._conj, coll, entry)
+ }
+};
+cljs.core.PersistentHashMap.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.cnt > 0) {
+ var s = !(self__.root == null) ? self__.root.inode_seq() : null;
+ if(self__.has_nil_QMARK_) {
+ return cljs.core.cons.call(null, cljs.core.PersistentVector.fromArray([null, self__.nil_val], true), s)
+ }else {
+ return s
+ }
+ }else {
+ return null
+ }
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.cnt
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_map.call(null, coll, other)
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.PersistentHashMap(meta__$1, self__.cnt, self__.root, self__.has_nil_QMARK_, self__.nil_val, self__.__hash)
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core._with_meta.call(null, cljs.core.PersistentHashMap.EMPTY, self__.meta)
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$IMap$_dissoc$arity$2 = function(coll, k) {
+ var self__ = this;
+ if(k == null) {
+ if(self__.has_nil_QMARK_) {
+ return new cljs.core.PersistentHashMap(self__.meta, self__.cnt - 1, self__.root, false, null, null)
+ }else {
+ return coll
+ }
+ }else {
+ if(self__.root == null) {
+ return coll
+ }else {
+ if("\ufdd0'else") {
+ var new_root = self__.root.inode_without(0, cljs.core.hash.call(null, k), k);
+ if(new_root === self__.root) {
+ return coll
+ }else {
+ return new cljs.core.PersistentHashMap(self__.meta, self__.cnt - 1, new_root, self__.has_nil_QMARK_, self__.nil_val, null)
+ }
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.PersistentHashMap;
+cljs.core.PersistentHashMap.EMPTY = new cljs.core.PersistentHashMap(null, 0, null, false, null, 0);
+cljs.core.PersistentHashMap.fromArrays = function(ks, vs) {
+ var len = ks.length;
+ var i = 0;
+ var out = cljs.core.transient$.call(null, cljs.core.PersistentHashMap.EMPTY);
+ while(true) {
+ if(i < len) {
+ var G__3256 = i + 1;
+ var G__3257 = cljs.core.assoc_BANG_.call(null, out, ks[i], vs[i]);
+ i = G__3256;
+ out = G__3257;
+ continue
+ }else {
+ return cljs.core.persistent_BANG_.call(null, out)
+ }
+ break
+ }
+};
+goog.provide("cljs.core.TransientHashMap");
+cljs.core.TransientHashMap = function(edit, root, count, has_nil_QMARK_, nil_val) {
+ this.edit = edit;
+ this.root = root;
+ this.count = count;
+ this.has_nil_QMARK_ = has_nil_QMARK_;
+ this.nil_val = nil_val;
+ this.cljs$lang$protocol_mask$partition1$ = 56;
+ this.cljs$lang$protocol_mask$partition0$ = 258
+};
+cljs.core.TransientHashMap.cljs$lang$type = true;
+cljs.core.TransientHashMap.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/TransientHashMap")
+};
+cljs.core.TransientHashMap.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/TransientHashMap")
+};
+cljs.core.TransientHashMap.prototype.cljs$core$ITransientMap$_dissoc_BANG_$arity$2 = function(tcoll, key) {
+ var self__ = this;
+ return tcoll.without_BANG_(key)
+};
+cljs.core.TransientHashMap.prototype.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3 = function(tcoll, key, val) {
+ var self__ = this;
+ return tcoll.assoc_BANG_(key, val)
+};
+cljs.core.TransientHashMap.prototype.cljs$core$ITransientCollection$_conj_BANG_$arity$2 = function(tcoll, val) {
+ var self__ = this;
+ return tcoll.conj_BANG_(val)
+};
+cljs.core.TransientHashMap.prototype.cljs$core$ITransientCollection$_persistent_BANG_$arity$1 = function(tcoll) {
+ var self__ = this;
+ return tcoll.persistent_BANG_()
+};
+cljs.core.TransientHashMap.prototype.cljs$core$ILookup$_lookup$arity$2 = function(tcoll, k) {
+ var self__ = this;
+ if(k == null) {
+ if(self__.has_nil_QMARK_) {
+ return self__.nil_val
+ }else {
+ return null
+ }
+ }else {
+ if(self__.root == null) {
+ return null
+ }else {
+ return self__.root.inode_lookup(0, cljs.core.hash.call(null, k), k)
+ }
+ }
+};
+cljs.core.TransientHashMap.prototype.cljs$core$ILookup$_lookup$arity$3 = function(tcoll, k, not_found) {
+ var self__ = this;
+ if(k == null) {
+ if(self__.has_nil_QMARK_) {
+ return self__.nil_val
+ }else {
+ return not_found
+ }
+ }else {
+ if(self__.root == null) {
+ return not_found
+ }else {
+ return self__.root.inode_lookup(0, cljs.core.hash.call(null, k), k, not_found)
+ }
+ }
+};
+cljs.core.TransientHashMap.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.edit) {
+ return self__.count
+ }else {
+ throw new Error("count after persistent!");
+ }
+};
+cljs.core.TransientHashMap.prototype.conj_BANG_ = function(o) {
+ var self__ = this;
+ var tcoll = this;
+ if(self__.edit) {
+ if(function() {
+ var G__3258 = o;
+ if(G__3258) {
+ if(function() {
+ var or__3824__auto__ = G__3258.cljs$lang$protocol_mask$partition0$ & 2048;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__3258.cljs$core$IMapEntry$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__3258.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IMapEntry, G__3258)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IMapEntry, G__3258)
+ }
+ }()) {
+ return tcoll.assoc_BANG_(cljs.core.key.call(null, o), cljs.core.val.call(null, o))
+ }else {
+ var es = cljs.core.seq.call(null, o);
+ var tcoll__$1 = tcoll;
+ while(true) {
+ var temp__3971__auto__ = cljs.core.first.call(null, es);
+ if(cljs.core.truth_(temp__3971__auto__)) {
+ var e = temp__3971__auto__;
+ var G__3259 = cljs.core.next.call(null, es);
+ var G__3260 = tcoll__$1.assoc_BANG_(cljs.core.key.call(null, e), cljs.core.val.call(null, e));
+ es = G__3259;
+ tcoll__$1 = G__3260;
+ continue
+ }else {
+ return tcoll__$1
+ }
+ break
+ }
+ }
+ }else {
+ throw new Error("conj! after persistent");
+ }
+};
+cljs.core.TransientHashMap.prototype.assoc_BANG_ = function(k, v) {
+ var self__ = this;
+ var tcoll = this;
+ if(self__.edit) {
+ if(k == null) {
+ if(self__.nil_val === v) {
+ }else {
+ self__.nil_val = v
+ }
+ if(self__.has_nil_QMARK_) {
+ }else {
+ self__.count = self__.count + 1;
+ self__.has_nil_QMARK_ = true
+ }
+ return tcoll
+ }else {
+ var added_leaf_QMARK_ = new cljs.core.Box(false);
+ var node = (self__.root == null ? cljs.core.BitmapIndexedNode.EMPTY : self__.root).inode_assoc_BANG_(self__.edit, 0, cljs.core.hash.call(null, k), k, v, added_leaf_QMARK_);
+ if(node === self__.root) {
+ }else {
+ self__.root = node
+ }
+ if(added_leaf_QMARK_.val) {
+ self__.count = self__.count + 1
+ }else {
+ }
+ return tcoll
+ }
+ }else {
+ throw new Error("assoc! after persistent!");
+ }
+};
+cljs.core.TransientHashMap.prototype.without_BANG_ = function(k) {
+ var self__ = this;
+ var tcoll = this;
+ if(self__.edit) {
+ if(k == null) {
+ if(self__.has_nil_QMARK_) {
+ self__.has_nil_QMARK_ = false;
+ self__.nil_val = null;
+ self__.count = self__.count - 1;
+ return tcoll
+ }else {
+ return tcoll
+ }
+ }else {
+ if(self__.root == null) {
+ return tcoll
+ }else {
+ var removed_leaf_QMARK_ = new cljs.core.Box(false);
+ var node = self__.root.inode_without_BANG_(self__.edit, 0, cljs.core.hash.call(null, k), k, removed_leaf_QMARK_);
+ if(node === self__.root) {
+ }else {
+ self__.root = node
+ }
+ if(cljs.core.truth_(removed_leaf_QMARK_[0])) {
+ self__.count = self__.count - 1
+ }else {
+ }
+ return tcoll
+ }
+ }
+ }else {
+ throw new Error("dissoc! after persistent!");
+ }
+};
+cljs.core.TransientHashMap.prototype.persistent_BANG_ = function() {
+ var self__ = this;
+ var tcoll = this;
+ if(self__.edit) {
+ self__.edit = null;
+ return new cljs.core.PersistentHashMap(null, self__.count, self__.root, self__.has_nil_QMARK_, self__.nil_val, null)
+ }else {
+ throw new Error("persistent! called twice");
+ }
+};
+cljs.core.TransientHashMap;
+cljs.core.tree_map_seq_push = function tree_map_seq_push(node, stack, ascending_QMARK_) {
+ var t = node;
+ var stack__$1 = stack;
+ while(true) {
+ if(!(t == null)) {
+ var G__3261 = ascending_QMARK_ ? t.left : t.right;
+ var G__3262 = cljs.core.conj.call(null, stack__$1, t);
+ t = G__3261;
+ stack__$1 = G__3262;
+ continue
+ }else {
+ return stack__$1
+ }
+ break
+ }
+};
+goog.provide("cljs.core.PersistentTreeMapSeq");
+cljs.core.PersistentTreeMapSeq = function(meta, stack, ascending_QMARK_, cnt, __hash) {
+ this.meta = meta;
+ this.stack = stack;
+ this.ascending_QMARK_ = ascending_QMARK_;
+ this.cnt = cnt;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 31850574
+};
+cljs.core.PersistentTreeMapSeq.cljs$lang$type = true;
+cljs.core.PersistentTreeMapSeq.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/PersistentTreeMapSeq")
+};
+cljs.core.PersistentTreeMapSeq.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/PersistentTreeMapSeq")
+};
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ return cljs.core.cons.call(null, o, coll)
+};
+cljs.core.PersistentTreeMapSeq.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = function(this$) {
+ var self__ = this;
+ return this$
+};
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.cnt < 0) {
+ return cljs.core.count.call(null, cljs.core.next.call(null, coll)) + 1
+ }else {
+ return self__.cnt
+ }
+};
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$ISeq$_first$arity$1 = function(this$) {
+ var self__ = this;
+ return cljs.core.peek.call(null, self__.stack)
+};
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$ISeq$_rest$arity$1 = function(this$) {
+ var self__ = this;
+ var t = cljs.core.first.call(null, self__.stack);
+ var next_stack = cljs.core.tree_map_seq_push.call(null, self__.ascending_QMARK_ ? t.right : t.left, cljs.core.next.call(null, self__.stack), self__.ascending_QMARK_);
+ if(!(next_stack == null)) {
+ return new cljs.core.PersistentTreeMapSeq(null, next_stack, self__.ascending_QMARK_, self__.cnt - 1, null)
+ }else {
+ return cljs.core.List.EMPTY
+ }
+};
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.PersistentTreeMapSeq(meta__$1, self__.stack, self__.ascending_QMARK_, self__.cnt, self__.__hash)
+};
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.List.EMPTY, self__.meta)
+};
+cljs.core.PersistentTreeMapSeq;
+cljs.core.create_tree_map_seq = function create_tree_map_seq(tree, ascending_QMARK_, cnt) {
+ return new cljs.core.PersistentTreeMapSeq(null, cljs.core.tree_map_seq_push.call(null, tree, null, ascending_QMARK_), ascending_QMARK_, cnt, null)
+};
+cljs.core.balance_left = function balance_left(key, val, ins, right) {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, ins)) {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, ins.left)) {
+ return new cljs.core.RedNode(ins.key, ins.val, ins.left.blacken(), new cljs.core.BlackNode(key, val, ins.right, right, null), null)
+ }else {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, ins.right)) {
+ return new cljs.core.RedNode(ins.right.key, ins.right.val, new cljs.core.BlackNode(ins.key, ins.val, ins.left, ins.right.left, null), new cljs.core.BlackNode(key, val, ins.right.right, right, null), null)
+ }else {
+ if("\ufdd0'else") {
+ return new cljs.core.BlackNode(key, val, ins, right, null)
+ }else {
+ return null
+ }
+ }
+ }
+ }else {
+ return new cljs.core.BlackNode(key, val, ins, right, null)
+ }
+};
+cljs.core.balance_right = function balance_right(key, val, left, ins) {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, ins)) {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, ins.right)) {
+ return new cljs.core.RedNode(ins.key, ins.val, new cljs.core.BlackNode(key, val, left, ins.left, null), ins.right.blacken(), null)
+ }else {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, ins.left)) {
+ return new cljs.core.RedNode(ins.left.key, ins.left.val, new cljs.core.BlackNode(key, val, left, ins.left.left, null), new cljs.core.BlackNode(ins.key, ins.val, ins.left.right, ins.right, null), null)
+ }else {
+ if("\ufdd0'else") {
+ return new cljs.core.BlackNode(key, val, left, ins, null)
+ }else {
+ return null
+ }
+ }
+ }
+ }else {
+ return new cljs.core.BlackNode(key, val, left, ins, null)
+ }
+};
+cljs.core.balance_left_del = function balance_left_del(key, val, del, right) {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, del)) {
+ return new cljs.core.RedNode(key, val, del.blacken(), right, null)
+ }else {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.BlackNode, right)) {
+ return cljs.core.balance_right.call(null, key, val, del, right.redden())
+ }else {
+ if(function() {
+ var and__3822__auto__ = cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, right);
+ if(and__3822__auto__) {
+ return cljs.core.instance_QMARK_.call(null, cljs.core.BlackNode, right.left)
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return new cljs.core.RedNode(right.left.key, right.left.val, new cljs.core.BlackNode(key, val, del, right.left.left, null), cljs.core.balance_right.call(null, right.key, right.val, right.left.right, right.right.redden()), null)
+ }else {
+ if("\ufdd0'else") {
+ throw new Error("red-black tree invariant violation");
+ }else {
+ return null
+ }
+ }
+ }
+ }
+};
+cljs.core.balance_right_del = function balance_right_del(key, val, left, del) {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, del)) {
+ return new cljs.core.RedNode(key, val, left, del.blacken(), null)
+ }else {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.BlackNode, left)) {
+ return cljs.core.balance_left.call(null, key, val, left.redden(), del)
+ }else {
+ if(function() {
+ var and__3822__auto__ = cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, left);
+ if(and__3822__auto__) {
+ return cljs.core.instance_QMARK_.call(null, cljs.core.BlackNode, left.right)
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return new cljs.core.RedNode(left.right.key, left.right.val, cljs.core.balance_left.call(null, left.key, left.val, left.left.redden(), left.right.left), new cljs.core.BlackNode(key, val, left.right.right, del, null), null)
+ }else {
+ if("\ufdd0'else") {
+ throw new Error("red-black tree invariant violation");
+ }else {
+ return null
+ }
+ }
+ }
+ }
+};
+cljs.core.tree_map_kv_reduce = function tree_map_kv_reduce(node, f, init) {
+ var init__$1 = f.call(null, init, node.key, node.val);
+ if(cljs.core.reduced_QMARK_.call(null, init__$1)) {
+ return cljs.core.deref.call(null, init__$1)
+ }else {
+ var init__$2 = !(node.left == null) ? tree_map_kv_reduce.call(null, node.left, f, init__$1) : init__$1;
+ if(cljs.core.reduced_QMARK_.call(null, init__$2)) {
+ return cljs.core.deref.call(null, init__$2)
+ }else {
+ var init__$3 = !(node.right == null) ? tree_map_kv_reduce.call(null, node.right, f, init__$2) : init__$2;
+ if(cljs.core.reduced_QMARK_.call(null, init__$3)) {
+ return cljs.core.deref.call(null, init__$3)
+ }else {
+ return init__$3
+ }
+ }
+ }
+};
+goog.provide("cljs.core.BlackNode");
+cljs.core.BlackNode = function(key, val, left, right, __hash) {
+ this.key = key;
+ this.val = val;
+ this.left = left;
+ this.right = right;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 32402207
+};
+cljs.core.BlackNode.cljs$lang$type = true;
+cljs.core.BlackNode.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/BlackNode")
+};
+cljs.core.BlackNode.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/BlackNode")
+};
+cljs.core.BlackNode.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.BlackNode.prototype.cljs$core$ILookup$_lookup$arity$2 = function(node, k) {
+ var self__ = this;
+ return node.cljs$core$IIndexed$_nth$arity$3(node, k, null)
+};
+cljs.core.BlackNode.prototype.cljs$core$ILookup$_lookup$arity$3 = function(node, k, not_found) {
+ var self__ = this;
+ return node.cljs$core$IIndexed$_nth$arity$3(node, k, not_found)
+};
+cljs.core.BlackNode.prototype.cljs$core$IAssociative$_assoc$arity$3 = function(node, k, v) {
+ var self__ = this;
+ return cljs.core.assoc.call(null, cljs.core.PersistentVector.fromArray([self__.key, self__.val], true), k, v)
+};
+cljs.core.BlackNode.prototype.call = function() {
+ var G__3267 = null;
+ var G__3267__2 = function(this_sym3265, k) {
+ var self__ = this;
+ var this_sym3265__$1 = this;
+ var node = this_sym3265__$1;
+ return node.cljs$core$ILookup$_lookup$arity$2(node, k)
+ };
+ var G__3267__3 = function(this_sym3266, k, not_found) {
+ var self__ = this;
+ var this_sym3266__$1 = this;
+ var node = this_sym3266__$1;
+ return node.cljs$core$ILookup$_lookup$arity$3(node, k, not_found)
+ };
+ G__3267 = function(this_sym3266, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3267__2.call(this, this_sym3266, k);
+ case 3:
+ return G__3267__3.call(this, this_sym3266, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3267
+}();
+cljs.core.BlackNode.prototype.apply = function(this_sym3263, args3264) {
+ var self__ = this;
+ return this_sym3263.call.apply(this_sym3263, [this_sym3263].concat(args3264.slice()))
+};
+cljs.core.BlackNode.prototype.cljs$core$ICollection$_conj$arity$2 = function(node, o) {
+ var self__ = this;
+ return cljs.core.PersistentVector.fromArray([self__.key, self__.val, o], true)
+};
+cljs.core.BlackNode.prototype.cljs$core$IMapEntry$_key$arity$1 = function(node) {
+ var self__ = this;
+ return self__.key
+};
+cljs.core.BlackNode.prototype.cljs$core$IMapEntry$_val$arity$1 = function(node) {
+ var self__ = this;
+ return self__.val
+};
+cljs.core.BlackNode.prototype.add_right = function(ins) {
+ var self__ = this;
+ var node = this;
+ return ins.balance_right(node)
+};
+cljs.core.BlackNode.prototype.redden = function() {
+ var self__ = this;
+ var node = this;
+ return new cljs.core.RedNode(self__.key, self__.val, self__.left, self__.right, null)
+};
+cljs.core.BlackNode.prototype.remove_right = function(del) {
+ var self__ = this;
+ var node = this;
+ return cljs.core.balance_right_del.call(null, self__.key, self__.val, self__.left, del)
+};
+cljs.core.BlackNode.prototype.replace = function(key__$1, val__$1, left__$1, right__$1) {
+ var self__ = this;
+ var node = this;
+ return new cljs.core.BlackNode(key__$1, val__$1, left__$1, right__$1, null)
+};
+cljs.core.BlackNode.prototype.kv_reduce = function(f, init) {
+ var self__ = this;
+ var node = this;
+ return cljs.core.tree_map_kv_reduce.call(null, node, f, init)
+};
+cljs.core.BlackNode.prototype.remove_left = function(del) {
+ var self__ = this;
+ var node = this;
+ return cljs.core.balance_left_del.call(null, self__.key, self__.val, del, self__.right)
+};
+cljs.core.BlackNode.prototype.add_left = function(ins) {
+ var self__ = this;
+ var node = this;
+ return ins.balance_left(node)
+};
+cljs.core.BlackNode.prototype.balance_left = function(parent) {
+ var self__ = this;
+ var node = this;
+ return new cljs.core.BlackNode(parent.key, parent.val, node, parent.right, null)
+};
+cljs.core.BlackNode.prototype.toString = function() {
+ var G__3268 = null;
+ var G__3268__0 = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+ };
+ G__3268 = function() {
+ switch(arguments.length) {
+ case 0:
+ return G__3268__0.call(this)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3268
+}();
+cljs.core.BlackNode.prototype.balance_right = function(parent) {
+ var self__ = this;
+ var node = this;
+ return new cljs.core.BlackNode(parent.key, parent.val, parent.left, node, null)
+};
+cljs.core.BlackNode.prototype.blacken = function() {
+ var self__ = this;
+ var node = this;
+ return node
+};
+cljs.core.BlackNode.prototype.cljs$core$IReduce$_reduce$arity$2 = function(node, f) {
+ var self__ = this;
+ return cljs.core.ci_reduce.call(null, node, f)
+};
+cljs.core.BlackNode.prototype.cljs$core$IReduce$_reduce$arity$3 = function(node, f, start) {
+ var self__ = this;
+ return cljs.core.ci_reduce.call(null, node, f, start)
+};
+cljs.core.BlackNode.prototype.cljs$core$ISeqable$_seq$arity$1 = function(node) {
+ var self__ = this;
+ return cljs.core.list.call(null, self__.key, self__.val)
+};
+cljs.core.BlackNode.prototype.cljs$core$ICounted$_count$arity$1 = function(node) {
+ var self__ = this;
+ return 2
+};
+cljs.core.BlackNode.prototype.cljs$core$IStack$_peek$arity$1 = function(node) {
+ var self__ = this;
+ return self__.val
+};
+cljs.core.BlackNode.prototype.cljs$core$IStack$_pop$arity$1 = function(node) {
+ var self__ = this;
+ return cljs.core.PersistentVector.fromArray([self__.key], true)
+};
+cljs.core.BlackNode.prototype.cljs$core$IVector$_assoc_n$arity$3 = function(node, n, v) {
+ var self__ = this;
+ return cljs.core._assoc_n.call(null, cljs.core.PersistentVector.fromArray([self__.key, self__.val], true), n, v)
+};
+cljs.core.BlackNode.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.BlackNode.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(node, meta) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.PersistentVector.fromArray([self__.key, self__.val], true), meta)
+};
+cljs.core.BlackNode.prototype.cljs$core$IMeta$_meta$arity$1 = function(node) {
+ var self__ = this;
+ return null
+};
+cljs.core.BlackNode.prototype.cljs$core$IIndexed$_nth$arity$2 = function(node, n) {
+ var self__ = this;
+ if(n === 0) {
+ return self__.key
+ }else {
+ if(n === 1) {
+ return self__.val
+ }else {
+ if("\ufdd0'else") {
+ return null
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.BlackNode.prototype.cljs$core$IIndexed$_nth$arity$3 = function(node, n, not_found) {
+ var self__ = this;
+ if(n === 0) {
+ return self__.key
+ }else {
+ if(n === 1) {
+ return self__.val
+ }else {
+ if("\ufdd0'else") {
+ return not_found
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.BlackNode.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(node) {
+ var self__ = this;
+ return cljs.core.PersistentVector.EMPTY
+};
+cljs.core.BlackNode;
+goog.provide("cljs.core.RedNode");
+cljs.core.RedNode = function(key, val, left, right, __hash) {
+ this.key = key;
+ this.val = val;
+ this.left = left;
+ this.right = right;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 32402207
+};
+cljs.core.RedNode.cljs$lang$type = true;
+cljs.core.RedNode.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/RedNode")
+};
+cljs.core.RedNode.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/RedNode")
+};
+cljs.core.RedNode.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.RedNode.prototype.cljs$core$ILookup$_lookup$arity$2 = function(node, k) {
+ var self__ = this;
+ return node.cljs$core$IIndexed$_nth$arity$3(node, k, null)
+};
+cljs.core.RedNode.prototype.cljs$core$ILookup$_lookup$arity$3 = function(node, k, not_found) {
+ var self__ = this;
+ return node.cljs$core$IIndexed$_nth$arity$3(node, k, not_found)
+};
+cljs.core.RedNode.prototype.cljs$core$IAssociative$_assoc$arity$3 = function(node, k, v) {
+ var self__ = this;
+ return cljs.core.assoc.call(null, cljs.core.PersistentVector.fromArray([self__.key, self__.val], true), k, v)
+};
+cljs.core.RedNode.prototype.call = function() {
+ var G__3273 = null;
+ var G__3273__2 = function(this_sym3271, k) {
+ var self__ = this;
+ var this_sym3271__$1 = this;
+ var node = this_sym3271__$1;
+ return node.cljs$core$ILookup$_lookup$arity$2(node, k)
+ };
+ var G__3273__3 = function(this_sym3272, k, not_found) {
+ var self__ = this;
+ var this_sym3272__$1 = this;
+ var node = this_sym3272__$1;
+ return node.cljs$core$ILookup$_lookup$arity$3(node, k, not_found)
+ };
+ G__3273 = function(this_sym3272, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3273__2.call(this, this_sym3272, k);
+ case 3:
+ return G__3273__3.call(this, this_sym3272, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3273
+}();
+cljs.core.RedNode.prototype.apply = function(this_sym3269, args3270) {
+ var self__ = this;
+ return this_sym3269.call.apply(this_sym3269, [this_sym3269].concat(args3270.slice()))
+};
+cljs.core.RedNode.prototype.cljs$core$ICollection$_conj$arity$2 = function(node, o) {
+ var self__ = this;
+ return cljs.core.PersistentVector.fromArray([self__.key, self__.val, o], true)
+};
+cljs.core.RedNode.prototype.cljs$core$IMapEntry$_key$arity$1 = function(node) {
+ var self__ = this;
+ return self__.key
+};
+cljs.core.RedNode.prototype.cljs$core$IMapEntry$_val$arity$1 = function(node) {
+ var self__ = this;
+ return self__.val
+};
+cljs.core.RedNode.prototype.add_right = function(ins) {
+ var self__ = this;
+ var node = this;
+ return new cljs.core.RedNode(self__.key, self__.val, self__.left, ins, null)
+};
+cljs.core.RedNode.prototype.redden = function() {
+ var self__ = this;
+ var node = this;
+ throw new Error("red-black tree invariant violation");
+};
+cljs.core.RedNode.prototype.remove_right = function(del) {
+ var self__ = this;
+ var node = this;
+ return new cljs.core.RedNode(self__.key, self__.val, self__.left, del, null)
+};
+cljs.core.RedNode.prototype.replace = function(key__$1, val__$1, left__$1, right__$1) {
+ var self__ = this;
+ var node = this;
+ return new cljs.core.RedNode(key__$1, val__$1, left__$1, right__$1, null)
+};
+cljs.core.RedNode.prototype.kv_reduce = function(f, init) {
+ var self__ = this;
+ var node = this;
+ return cljs.core.tree_map_kv_reduce.call(null, node, f, init)
+};
+cljs.core.RedNode.prototype.remove_left = function(del) {
+ var self__ = this;
+ var node = this;
+ return new cljs.core.RedNode(self__.key, self__.val, del, self__.right, null)
+};
+cljs.core.RedNode.prototype.add_left = function(ins) {
+ var self__ = this;
+ var node = this;
+ return new cljs.core.RedNode(self__.key, self__.val, ins, self__.right, null)
+};
+cljs.core.RedNode.prototype.balance_left = function(parent) {
+ var self__ = this;
+ var node = this;
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, self__.left)) {
+ return new cljs.core.RedNode(self__.key, self__.val, self__.left.blacken(), new cljs.core.BlackNode(parent.key, parent.val, self__.right, parent.right, null), null)
+ }else {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, self__.right)) {
+ return new cljs.core.RedNode(self__.right.key, self__.right.val, new cljs.core.BlackNode(self__.key, self__.val, self__.left, self__.right.left, null), new cljs.core.BlackNode(parent.key, parent.val, self__.right.right, parent.right, null), null)
+ }else {
+ if("\ufdd0'else") {
+ return new cljs.core.BlackNode(parent.key, parent.val, node, parent.right, null)
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.RedNode.prototype.toString = function() {
+ var G__3274 = null;
+ var G__3274__0 = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+ };
+ G__3274 = function() {
+ switch(arguments.length) {
+ case 0:
+ return G__3274__0.call(this)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3274
+}();
+cljs.core.RedNode.prototype.balance_right = function(parent) {
+ var self__ = this;
+ var node = this;
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, self__.right)) {
+ return new cljs.core.RedNode(self__.key, self__.val, new cljs.core.BlackNode(parent.key, parent.val, parent.left, self__.left, null), self__.right.blacken(), null)
+ }else {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, self__.left)) {
+ return new cljs.core.RedNode(self__.left.key, self__.left.val, new cljs.core.BlackNode(parent.key, parent.val, parent.left, self__.left.left, null), new cljs.core.BlackNode(self__.key, self__.val, self__.left.right, self__.right, null), null)
+ }else {
+ if("\ufdd0'else") {
+ return new cljs.core.BlackNode(parent.key, parent.val, parent.left, node, null)
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.RedNode.prototype.blacken = function() {
+ var self__ = this;
+ var node = this;
+ return new cljs.core.BlackNode(self__.key, self__.val, self__.left, self__.right, null)
+};
+cljs.core.RedNode.prototype.cljs$core$IReduce$_reduce$arity$2 = function(node, f) {
+ var self__ = this;
+ return cljs.core.ci_reduce.call(null, node, f)
+};
+cljs.core.RedNode.prototype.cljs$core$IReduce$_reduce$arity$3 = function(node, f, start) {
+ var self__ = this;
+ return cljs.core.ci_reduce.call(null, node, f, start)
+};
+cljs.core.RedNode.prototype.cljs$core$ISeqable$_seq$arity$1 = function(node) {
+ var self__ = this;
+ return cljs.core.list.call(null, self__.key, self__.val)
+};
+cljs.core.RedNode.prototype.cljs$core$ICounted$_count$arity$1 = function(node) {
+ var self__ = this;
+ return 2
+};
+cljs.core.RedNode.prototype.cljs$core$IStack$_peek$arity$1 = function(node) {
+ var self__ = this;
+ return self__.val
+};
+cljs.core.RedNode.prototype.cljs$core$IStack$_pop$arity$1 = function(node) {
+ var self__ = this;
+ return cljs.core.PersistentVector.fromArray([self__.key], true)
+};
+cljs.core.RedNode.prototype.cljs$core$IVector$_assoc_n$arity$3 = function(node, n, v) {
+ var self__ = this;
+ return cljs.core._assoc_n.call(null, cljs.core.PersistentVector.fromArray([self__.key, self__.val], true), n, v)
+};
+cljs.core.RedNode.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, coll, other)
+};
+cljs.core.RedNode.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(node, meta) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.PersistentVector.fromArray([self__.key, self__.val], true), meta)
+};
+cljs.core.RedNode.prototype.cljs$core$IMeta$_meta$arity$1 = function(node) {
+ var self__ = this;
+ return null
+};
+cljs.core.RedNode.prototype.cljs$core$IIndexed$_nth$arity$2 = function(node, n) {
+ var self__ = this;
+ if(n === 0) {
+ return self__.key
+ }else {
+ if(n === 1) {
+ return self__.val
+ }else {
+ if("\ufdd0'else") {
+ return null
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.RedNode.prototype.cljs$core$IIndexed$_nth$arity$3 = function(node, n, not_found) {
+ var self__ = this;
+ if(n === 0) {
+ return self__.key
+ }else {
+ if(n === 1) {
+ return self__.val
+ }else {
+ if("\ufdd0'else") {
+ return not_found
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.RedNode.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(node) {
+ var self__ = this;
+ return cljs.core.PersistentVector.EMPTY
+};
+cljs.core.RedNode;
+cljs.core.tree_map_add = function tree_map_add(comp, tree, k, v, found) {
+ if(tree == null) {
+ return new cljs.core.RedNode(k, v, null, null, null)
+ }else {
+ var c = comp.call(null, k, tree.key);
+ if(c === 0) {
+ found[0] = tree;
+ return null
+ }else {
+ if(c < 0) {
+ var ins = tree_map_add.call(null, comp, tree.left, k, v, found);
+ if(!(ins == null)) {
+ return tree.add_left(ins)
+ }else {
+ return null
+ }
+ }else {
+ if("\ufdd0'else") {
+ var ins = tree_map_add.call(null, comp, tree.right, k, v, found);
+ if(!(ins == null)) {
+ return tree.add_right(ins)
+ }else {
+ return null
+ }
+ }else {
+ return null
+ }
+ }
+ }
+ }
+};
+cljs.core.tree_map_append = function tree_map_append(left, right) {
+ if(left == null) {
+ return right
+ }else {
+ if(right == null) {
+ return left
+ }else {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, left)) {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, right)) {
+ var app = tree_map_append.call(null, left.right, right.left);
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, app)) {
+ return new cljs.core.RedNode(app.key, app.val, new cljs.core.RedNode(left.key, left.val, left.left, app.left, null), new cljs.core.RedNode(right.key, right.val, app.right, right.right, null), null)
+ }else {
+ return new cljs.core.RedNode(left.key, left.val, left.left, new cljs.core.RedNode(right.key, right.val, app, right.right, null), null)
+ }
+ }else {
+ return new cljs.core.RedNode(left.key, left.val, left.left, tree_map_append.call(null, left.right, right), null)
+ }
+ }else {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, right)) {
+ return new cljs.core.RedNode(right.key, right.val, tree_map_append.call(null, left, right.left), right.right, null)
+ }else {
+ if("\ufdd0'else") {
+ var app = tree_map_append.call(null, left.right, right.left);
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.RedNode, app)) {
+ return new cljs.core.RedNode(app.key, app.val, new cljs.core.BlackNode(left.key, left.val, left.left, app.left, null), new cljs.core.BlackNode(right.key, right.val, app.right, right.right, null), null)
+ }else {
+ return cljs.core.balance_left_del.call(null, left.key, left.val, left.left, new cljs.core.BlackNode(right.key, right.val, app, right.right, null))
+ }
+ }else {
+ return null
+ }
+ }
+ }
+ }
+ }
+};
+cljs.core.tree_map_remove = function tree_map_remove(comp, tree, k, found) {
+ if(!(tree == null)) {
+ var c = comp.call(null, k, tree.key);
+ if(c === 0) {
+ found[0] = tree;
+ return cljs.core.tree_map_append.call(null, tree.left, tree.right)
+ }else {
+ if(c < 0) {
+ var del = tree_map_remove.call(null, comp, tree.left, k, found);
+ if(function() {
+ var or__3824__auto__ = !(del == null);
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return!(found[0] == null)
+ }
+ }()) {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.BlackNode, tree.left)) {
+ return cljs.core.balance_left_del.call(null, tree.key, tree.val, del, tree.right)
+ }else {
+ return new cljs.core.RedNode(tree.key, tree.val, del, tree.right, null)
+ }
+ }else {
+ return null
+ }
+ }else {
+ if("\ufdd0'else") {
+ var del = tree_map_remove.call(null, comp, tree.right, k, found);
+ if(function() {
+ var or__3824__auto__ = !(del == null);
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return!(found[0] == null)
+ }
+ }()) {
+ if(cljs.core.instance_QMARK_.call(null, cljs.core.BlackNode, tree.right)) {
+ return cljs.core.balance_right_del.call(null, tree.key, tree.val, tree.left, del)
+ }else {
+ return new cljs.core.RedNode(tree.key, tree.val, tree.left, del, null)
+ }
+ }else {
+ return null
+ }
+ }else {
+ return null
+ }
+ }
+ }
+ }else {
+ return null
+ }
+};
+cljs.core.tree_map_replace = function tree_map_replace(comp, tree, k, v) {
+ var tk = tree.key;
+ var c = comp.call(null, k, tk);
+ if(c === 0) {
+ return tree.replace(tk, v, tree.left, tree.right)
+ }else {
+ if(c < 0) {
+ return tree.replace(tk, tree.val, tree_map_replace.call(null, comp, tree.left, k, v), tree.right)
+ }else {
+ if("\ufdd0'else") {
+ return tree.replace(tk, tree.val, tree.left, tree_map_replace.call(null, comp, tree.right, k, v))
+ }else {
+ return null
+ }
+ }
+ }
+};
+goog.provide("cljs.core.PersistentTreeMap");
+cljs.core.PersistentTreeMap = function(comp, tree, cnt, meta, __hash) {
+ this.comp = comp;
+ this.tree = tree;
+ this.cnt = cnt;
+ this.meta = meta;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 418776847
+};
+cljs.core.PersistentTreeMap.cljs$lang$type = true;
+cljs.core.PersistentTreeMap.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/PersistentTreeMap")
+};
+cljs.core.PersistentTreeMap.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/PersistentTreeMap")
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_imap.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$ILookup$_lookup$arity$2 = function(coll, k) {
+ var self__ = this;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, null)
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$ILookup$_lookup$arity$3 = function(coll, k, not_found) {
+ var self__ = this;
+ var n = coll.entry_at(k);
+ if(!(n == null)) {
+ return n.val
+ }else {
+ return not_found
+ }
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$IAssociative$_assoc$arity$3 = function(coll, k, v) {
+ var self__ = this;
+ var found = [null];
+ var t = cljs.core.tree_map_add.call(null, self__.comp, self__.tree, k, v, found);
+ if(t == null) {
+ var found_node = cljs.core.nth.call(null, found, 0);
+ if(cljs.core._EQ_.call(null, v, found_node.val)) {
+ return coll
+ }else {
+ return new cljs.core.PersistentTreeMap(self__.comp, cljs.core.tree_map_replace.call(null, self__.comp, self__.tree, k, v), self__.cnt, self__.meta, null)
+ }
+ }else {
+ return new cljs.core.PersistentTreeMap(self__.comp, t.blacken(), self__.cnt + 1, self__.meta, null)
+ }
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = function(coll, k) {
+ var self__ = this;
+ return!(coll.entry_at(k) == null)
+};
+cljs.core.PersistentTreeMap.prototype.call = function() {
+ var G__3279 = null;
+ var G__3279__2 = function(this_sym3277, k) {
+ var self__ = this;
+ var this_sym3277__$1 = this;
+ var coll = this_sym3277__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$2(coll, k)
+ };
+ var G__3279__3 = function(this_sym3278, k, not_found) {
+ var self__ = this;
+ var this_sym3278__$1 = this;
+ var coll = this_sym3278__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, not_found)
+ };
+ G__3279 = function(this_sym3278, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3279__2.call(this, this_sym3278, k);
+ case 3:
+ return G__3279__3.call(this, this_sym3278, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3279
+}();
+cljs.core.PersistentTreeMap.prototype.apply = function(this_sym3275, args3276) {
+ var self__ = this;
+ return this_sym3275.call.apply(this_sym3275, [this_sym3275].concat(args3276.slice()))
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = function(coll, f, init) {
+ var self__ = this;
+ if(!(self__.tree == null)) {
+ return cljs.core.tree_map_kv_reduce.call(null, self__.tree, f, init)
+ }else {
+ return init
+ }
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, entry) {
+ var self__ = this;
+ if(cljs.core.vector_QMARK_.call(null, entry)) {
+ return coll.cljs$core$IAssociative$_assoc$arity$3(coll, cljs.core._nth.call(null, entry, 0), cljs.core._nth.call(null, entry, 1))
+ }else {
+ return cljs.core.reduce.call(null, cljs.core._conj, coll, entry)
+ }
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$IReversible$_rseq$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.cnt > 0) {
+ return cljs.core.create_tree_map_seq.call(null, self__.tree, false, self__.cnt)
+ }else {
+ return null
+ }
+};
+cljs.core.PersistentTreeMap.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.PersistentTreeMap.prototype.entry_at = function(k) {
+ var self__ = this;
+ var coll = this;
+ var t = self__.tree;
+ while(true) {
+ if(!(t == null)) {
+ var c = self__.comp.call(null, k, t.key);
+ if(c === 0) {
+ return t
+ }else {
+ if(c < 0) {
+ var G__3280 = t.left;
+ t = G__3280;
+ continue
+ }else {
+ if("\ufdd0'else") {
+ var G__3281 = t.right;
+ t = G__3281;
+ continue
+ }else {
+ return null
+ }
+ }
+ }
+ }else {
+ return null
+ }
+ break
+ }
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$ISorted$_sorted_seq$arity$2 = function(coll, ascending_QMARK_) {
+ var self__ = this;
+ if(self__.cnt > 0) {
+ return cljs.core.create_tree_map_seq.call(null, self__.tree, ascending_QMARK_, self__.cnt)
+ }else {
+ return null
+ }
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$ISorted$_sorted_seq_from$arity$3 = function(coll, k, ascending_QMARK_) {
+ var self__ = this;
+ if(self__.cnt > 0) {
+ var stack = null;
+ var t = self__.tree;
+ while(true) {
+ if(!(t == null)) {
+ var c = self__.comp.call(null, k, t.key);
+ if(c === 0) {
+ return new cljs.core.PersistentTreeMapSeq(null, cljs.core.conj.call(null, stack, t), ascending_QMARK_, -1, null)
+ }else {
+ if(cljs.core.truth_(ascending_QMARK_)) {
+ if(c < 0) {
+ var G__3282 = cljs.core.conj.call(null, stack, t);
+ var G__3283 = t.left;
+ stack = G__3282;
+ t = G__3283;
+ continue
+ }else {
+ var G__3284 = stack;
+ var G__3285 = t.right;
+ stack = G__3284;
+ t = G__3285;
+ continue
+ }
+ }else {
+ if("\ufdd0'else") {
+ if(c > 0) {
+ var G__3286 = cljs.core.conj.call(null, stack, t);
+ var G__3287 = t.right;
+ stack = G__3286;
+ t = G__3287;
+ continue
+ }else {
+ var G__3288 = stack;
+ var G__3289 = t.left;
+ stack = G__3288;
+ t = G__3289;
+ continue
+ }
+ }else {
+ return null
+ }
+ }
+ }
+ }else {
+ if(stack == null) {
+ return null
+ }else {
+ return new cljs.core.PersistentTreeMapSeq(null, stack, ascending_QMARK_, -1, null)
+ }
+ }
+ break
+ }
+ }else {
+ return null
+ }
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$ISorted$_entry_key$arity$2 = function(coll, entry) {
+ var self__ = this;
+ return cljs.core.key.call(null, entry)
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$ISorted$_comparator$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.comp
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ if(self__.cnt > 0) {
+ return cljs.core.create_tree_map_seq.call(null, self__.tree, true, self__.cnt)
+ }else {
+ return null
+ }
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.cnt
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ return cljs.core.equiv_map.call(null, coll, other)
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.PersistentTreeMap(self__.comp, self__.tree, self__.cnt, meta__$1, self__.__hash)
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.PersistentTreeMap.EMPTY, self__.meta)
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$IMap$_dissoc$arity$2 = function(coll, k) {
+ var self__ = this;
+ var found = [null];
+ var t = cljs.core.tree_map_remove.call(null, self__.comp, self__.tree, k, found);
+ if(t == null) {
+ if(cljs.core.nth.call(null, found, 0) == null) {
+ return coll
+ }else {
+ return new cljs.core.PersistentTreeMap(self__.comp, null, 0, self__.meta, null)
+ }
+ }else {
+ return new cljs.core.PersistentTreeMap(self__.comp, t.blacken(), self__.cnt - 1, self__.meta, null)
+ }
+};
+cljs.core.PersistentTreeMap;
+cljs.core.PersistentTreeMap.EMPTY = new cljs.core.PersistentTreeMap(cljs.core.compare, null, 0, null, 0);
+cljs.core.hash_map = function() {
+ var hash_map__delegate = function(keyvals) {
+ var in$ = cljs.core.seq.call(null, keyvals);
+ var out = cljs.core.transient$.call(null, cljs.core.PersistentHashMap.EMPTY);
+ while(true) {
+ if(in$) {
+ var G__3290 = cljs.core.nnext.call(null, in$);
+ var G__3291 = cljs.core.assoc_BANG_.call(null, out, cljs.core.first.call(null, in$), cljs.core.second.call(null, in$));
+ in$ = G__3290;
+ out = G__3291;
+ continue
+ }else {
+ return cljs.core.persistent_BANG_.call(null, out)
+ }
+ break
+ }
+ };
+ var hash_map = function(var_args) {
+ var keyvals = null;
+ if(goog.isDef(var_args)) {
+ keyvals = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return hash_map__delegate.call(this, keyvals)
+ };
+ hash_map.cljs$lang$maxFixedArity = 0;
+ hash_map.cljs$lang$applyTo = function(arglist__3292) {
+ var keyvals = cljs.core.seq(arglist__3292);
+ return hash_map__delegate(keyvals)
+ };
+ hash_map.cljs$lang$arity$variadic = hash_map__delegate;
+ return hash_map
+}();
+cljs.core.array_map = function() {
+ var array_map__delegate = function(keyvals) {
+ return new cljs.core.PersistentArrayMap(null, cljs.core.quot.call(null, cljs.core.count.call(null, keyvals), 2), cljs.core.apply.call(null, cljs.core.array, keyvals), null)
+ };
+ var array_map = function(var_args) {
+ var keyvals = null;
+ if(goog.isDef(var_args)) {
+ keyvals = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return array_map__delegate.call(this, keyvals)
+ };
+ array_map.cljs$lang$maxFixedArity = 0;
+ array_map.cljs$lang$applyTo = function(arglist__3293) {
+ var keyvals = cljs.core.seq(arglist__3293);
+ return array_map__delegate(keyvals)
+ };
+ array_map.cljs$lang$arity$variadic = array_map__delegate;
+ return array_map
+}();
+cljs.core.obj_map = function() {
+ var obj_map__delegate = function(keyvals) {
+ var ks = [];
+ var obj = {};
+ var kvs = cljs.core.seq.call(null, keyvals);
+ while(true) {
+ if(kvs) {
+ ks.push(cljs.core.first.call(null, kvs));
+ obj[cljs.core.first.call(null, kvs)] = cljs.core.second.call(null, kvs);
+ var G__3294 = cljs.core.nnext.call(null, kvs);
+ kvs = G__3294;
+ continue
+ }else {
+ return cljs.core.ObjMap.fromObject.call(null, ks, obj)
+ }
+ break
+ }
+ };
+ var obj_map = function(var_args) {
+ var keyvals = null;
+ if(goog.isDef(var_args)) {
+ keyvals = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return obj_map__delegate.call(this, keyvals)
+ };
+ obj_map.cljs$lang$maxFixedArity = 0;
+ obj_map.cljs$lang$applyTo = function(arglist__3295) {
+ var keyvals = cljs.core.seq(arglist__3295);
+ return obj_map__delegate(keyvals)
+ };
+ obj_map.cljs$lang$arity$variadic = obj_map__delegate;
+ return obj_map
+}();
+cljs.core.sorted_map = function() {
+ var sorted_map__delegate = function(keyvals) {
+ var in$ = cljs.core.seq.call(null, keyvals);
+ var out = cljs.core.PersistentTreeMap.EMPTY;
+ while(true) {
+ if(in$) {
+ var G__3296 = cljs.core.nnext.call(null, in$);
+ var G__3297 = cljs.core.assoc.call(null, out, cljs.core.first.call(null, in$), cljs.core.second.call(null, in$));
+ in$ = G__3296;
+ out = G__3297;
+ continue
+ }else {
+ return out
+ }
+ break
+ }
+ };
+ var sorted_map = function(var_args) {
+ var keyvals = null;
+ if(goog.isDef(var_args)) {
+ keyvals = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return sorted_map__delegate.call(this, keyvals)
+ };
+ sorted_map.cljs$lang$maxFixedArity = 0;
+ sorted_map.cljs$lang$applyTo = function(arglist__3298) {
+ var keyvals = cljs.core.seq(arglist__3298);
+ return sorted_map__delegate(keyvals)
+ };
+ sorted_map.cljs$lang$arity$variadic = sorted_map__delegate;
+ return sorted_map
+}();
+cljs.core.sorted_map_by = function() {
+ var sorted_map_by__delegate = function(comparator, keyvals) {
+ var in$ = cljs.core.seq.call(null, keyvals);
+ var out = new cljs.core.PersistentTreeMap(cljs.core.fn__GT_comparator.call(null, comparator), null, 0, null, 0);
+ while(true) {
+ if(in$) {
+ var G__3299 = cljs.core.nnext.call(null, in$);
+ var G__3300 = cljs.core.assoc.call(null, out, cljs.core.first.call(null, in$), cljs.core.second.call(null, in$));
+ in$ = G__3299;
+ out = G__3300;
+ continue
+ }else {
+ return out
+ }
+ break
+ }
+ };
+ var sorted_map_by = function(comparator, var_args) {
+ var keyvals = null;
+ if(goog.isDef(var_args)) {
+ keyvals = cljs.core.array_seq(Array.prototype.slice.call(arguments, 1), 0)
+ }
+ return sorted_map_by__delegate.call(this, comparator, keyvals)
+ };
+ sorted_map_by.cljs$lang$maxFixedArity = 1;
+ sorted_map_by.cljs$lang$applyTo = function(arglist__3301) {
+ var comparator = cljs.core.first(arglist__3301);
+ var keyvals = cljs.core.rest(arglist__3301);
+ return sorted_map_by__delegate(comparator, keyvals)
+ };
+ sorted_map_by.cljs$lang$arity$variadic = sorted_map_by__delegate;
+ return sorted_map_by
+}();
+cljs.core.keys = function keys(hash_map) {
+ return cljs.core.seq.call(null, cljs.core.map.call(null, cljs.core.first, hash_map))
+};
+cljs.core.key = function key(map_entry) {
+ return cljs.core._key.call(null, map_entry)
+};
+cljs.core.vals = function vals(hash_map) {
+ return cljs.core.seq.call(null, cljs.core.map.call(null, cljs.core.second, hash_map))
+};
+cljs.core.val = function val(map_entry) {
+ return cljs.core._val.call(null, map_entry)
+};
+cljs.core.merge = function() {
+ var merge__delegate = function(maps) {
+ if(cljs.core.truth_(cljs.core.some.call(null, cljs.core.identity, maps))) {
+ return cljs.core.reduce.call(null, function(p1__3302_SHARP_, p2__3303_SHARP_) {
+ return cljs.core.conj.call(null, function() {
+ var or__3824__auto__ = p1__3302_SHARP_;
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ return cljs.core.ObjMap.EMPTY
+ }
+ }(), p2__3303_SHARP_)
+ }, maps)
+ }else {
+ return null
+ }
+ };
+ var merge = function(var_args) {
+ var maps = null;
+ if(goog.isDef(var_args)) {
+ maps = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return merge__delegate.call(this, maps)
+ };
+ merge.cljs$lang$maxFixedArity = 0;
+ merge.cljs$lang$applyTo = function(arglist__3304) {
+ var maps = cljs.core.seq(arglist__3304);
+ return merge__delegate(maps)
+ };
+ merge.cljs$lang$arity$variadic = merge__delegate;
+ return merge
+}();
+cljs.core.merge_with = function() {
+ var merge_with__delegate = function(f, maps) {
+ if(cljs.core.truth_(cljs.core.some.call(null, cljs.core.identity, maps))) {
+ var merge_entry = function(m, e) {
+ var k = cljs.core.first.call(null, e);
+ var v = cljs.core.second.call(null, e);
+ if(cljs.core.contains_QMARK_.call(null, m, k)) {
+ return cljs.core.assoc.call(null, m, k, f.call(null, cljs.core._lookup.call(null, m, k, null), v))
+ }else {
+ return cljs.core.assoc.call(null, m, k, v)
+ }
+ };
+ var merge2 = function(m1, m2) {
+ return cljs.core.reduce.call(null, merge_entry, function() {
+ var or__3824__auto__ = m1;
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ return cljs.core.ObjMap.EMPTY
+ }
+ }(), cljs.core.seq.call(null, m2))
+ };
+ return cljs.core.reduce.call(null, merge2, maps)
+ }else {
+ return null
+ }
+ };
+ var merge_with = function(f, var_args) {
+ var maps = null;
+ if(goog.isDef(var_args)) {
+ maps = cljs.core.array_seq(Array.prototype.slice.call(arguments, 1), 0)
+ }
+ return merge_with__delegate.call(this, f, maps)
+ };
+ merge_with.cljs$lang$maxFixedArity = 1;
+ merge_with.cljs$lang$applyTo = function(arglist__3305) {
+ var f = cljs.core.first(arglist__3305);
+ var maps = cljs.core.rest(arglist__3305);
+ return merge_with__delegate(f, maps)
+ };
+ merge_with.cljs$lang$arity$variadic = merge_with__delegate;
+ return merge_with
+}();
+cljs.core.select_keys = function select_keys(map, keyseq) {
+ var ret = cljs.core.ObjMap.EMPTY;
+ var keys = cljs.core.seq.call(null, keyseq);
+ while(true) {
+ if(keys) {
+ var key = cljs.core.first.call(null, keys);
+ var entry = cljs.core._lookup.call(null, map, key, "\ufdd0'cljs.core/not-found");
+ var G__3306 = cljs.core.not_EQ_.call(null, entry, "\ufdd0'cljs.core/not-found") ? cljs.core.assoc.call(null, ret, key, entry) : ret;
+ var G__3307 = cljs.core.next.call(null, keys);
+ ret = G__3306;
+ keys = G__3307;
+ continue
+ }else {
+ return ret
+ }
+ break
+ }
+};
+goog.provide("cljs.core.PersistentHashSet");
+cljs.core.PersistentHashSet = function(meta, hash_map, __hash) {
+ this.meta = meta;
+ this.hash_map = hash_map;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 4;
+ this.cljs$lang$protocol_mask$partition0$ = 15077647
+};
+cljs.core.PersistentHashSet.cljs$lang$type = true;
+cljs.core.PersistentHashSet.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/PersistentHashSet")
+};
+cljs.core.PersistentHashSet.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/PersistentHashSet")
+};
+cljs.core.PersistentHashSet.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = function(coll) {
+ var self__ = this;
+ return new cljs.core.TransientHashSet(cljs.core.transient$.call(null, self__.hash_map))
+};
+cljs.core.PersistentHashSet.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_iset.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.PersistentHashSet.prototype.cljs$core$ILookup$_lookup$arity$2 = function(coll, v) {
+ var self__ = this;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, v, null)
+};
+cljs.core.PersistentHashSet.prototype.cljs$core$ILookup$_lookup$arity$3 = function(coll, v, not_found) {
+ var self__ = this;
+ if(cljs.core.truth_(cljs.core._contains_key_QMARK_.call(null, self__.hash_map, v))) {
+ return v
+ }else {
+ return not_found
+ }
+};
+cljs.core.PersistentHashSet.prototype.call = function() {
+ var G__3313 = null;
+ var G__3313__2 = function(this_sym3311, k) {
+ var self__ = this;
+ var this_sym3311__$1 = this;
+ var coll = this_sym3311__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$2(coll, k)
+ };
+ var G__3313__3 = function(this_sym3312, k, not_found) {
+ var self__ = this;
+ var this_sym3312__$1 = this;
+ var coll = this_sym3312__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, not_found)
+ };
+ G__3313 = function(this_sym3312, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3313__2.call(this, this_sym3312, k);
+ case 3:
+ return G__3313__3.call(this, this_sym3312, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3313
+}();
+cljs.core.PersistentHashSet.prototype.apply = function(this_sym3309, args3310) {
+ var self__ = this;
+ return this_sym3309.call.apply(this_sym3309, [this_sym3309].concat(args3310.slice()))
+};
+cljs.core.PersistentHashSet.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ return new cljs.core.PersistentHashSet(self__.meta, cljs.core.assoc.call(null, self__.hash_map, o, null), null)
+};
+cljs.core.PersistentHashSet.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.PersistentHashSet.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.keys.call(null, self__.hash_map)
+};
+cljs.core.PersistentHashSet.prototype.cljs$core$ISet$_disjoin$arity$2 = function(coll, v) {
+ var self__ = this;
+ return new cljs.core.PersistentHashSet(self__.meta, cljs.core.dissoc.call(null, self__.hash_map, v), null)
+};
+cljs.core.PersistentHashSet.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.count.call(null, cljs.core.seq.call(null, coll))
+};
+cljs.core.PersistentHashSet.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ var and__3822__auto__ = cljs.core.set_QMARK_.call(null, other);
+ if(and__3822__auto__) {
+ var and__3822__auto____$1 = cljs.core.count.call(null, coll) === cljs.core.count.call(null, other);
+ if(and__3822__auto____$1) {
+ return cljs.core.every_QMARK_.call(null, function(p1__3308_SHARP_) {
+ return cljs.core.contains_QMARK_.call(null, coll, p1__3308_SHARP_)
+ }, other)
+ }else {
+ return and__3822__auto____$1
+ }
+ }else {
+ return and__3822__auto__
+ }
+};
+cljs.core.PersistentHashSet.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.PersistentHashSet(meta__$1, self__.hash_map, self__.__hash)
+};
+cljs.core.PersistentHashSet.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.PersistentHashSet.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.PersistentHashSet.EMPTY, self__.meta)
+};
+cljs.core.PersistentHashSet;
+cljs.core.PersistentHashSet.EMPTY = new cljs.core.PersistentHashSet(null, cljs.core.hash_map.call(null), 0);
+cljs.core.PersistentHashSet.fromArray = function(items) {
+ var len = cljs.core.count.call(null, items);
+ var i = 0;
+ var out = cljs.core.transient$.call(null, cljs.core.PersistentHashSet.EMPTY);
+ while(true) {
+ if(i < len) {
+ var G__3314 = i + 1;
+ var G__3315 = cljs.core.conj_BANG_.call(null, out, items[i]);
+ i = G__3314;
+ out = G__3315;
+ continue
+ }else {
+ return cljs.core.persistent_BANG_.call(null, out)
+ }
+ break
+ }
+};
+goog.provide("cljs.core.TransientHashSet");
+cljs.core.TransientHashSet = function(transient_map) {
+ this.transient_map = transient_map;
+ this.cljs$lang$protocol_mask$partition0$ = 259;
+ this.cljs$lang$protocol_mask$partition1$ = 136
+};
+cljs.core.TransientHashSet.cljs$lang$type = true;
+cljs.core.TransientHashSet.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/TransientHashSet")
+};
+cljs.core.TransientHashSet.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/TransientHashSet")
+};
+cljs.core.TransientHashSet.prototype.call = function() {
+ var G__3321 = null;
+ var G__3321__2 = function(this_sym3319, k) {
+ var self__ = this;
+ var this_sym3319__$1 = this;
+ var tcoll = this_sym3319__$1;
+ if(cljs.core._lookup.call(null, self__.transient_map, k, cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel) {
+ return null
+ }else {
+ return k
+ }
+ };
+ var G__3321__3 = function(this_sym3320, k, not_found) {
+ var self__ = this;
+ var this_sym3320__$1 = this;
+ var tcoll = this_sym3320__$1;
+ if(cljs.core._lookup.call(null, self__.transient_map, k, cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel) {
+ return not_found
+ }else {
+ return k
+ }
+ };
+ G__3321 = function(this_sym3320, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3321__2.call(this, this_sym3320, k);
+ case 3:
+ return G__3321__3.call(this, this_sym3320, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3321
+}();
+cljs.core.TransientHashSet.prototype.apply = function(this_sym3317, args3318) {
+ var self__ = this;
+ return this_sym3317.call.apply(this_sym3317, [this_sym3317].concat(args3318.slice()))
+};
+cljs.core.TransientHashSet.prototype.cljs$core$ILookup$_lookup$arity$2 = function(tcoll, v) {
+ var self__ = this;
+ return tcoll.cljs$core$ILookup$_lookup$arity$3(tcoll, v, null)
+};
+cljs.core.TransientHashSet.prototype.cljs$core$ILookup$_lookup$arity$3 = function(tcoll, v, not_found) {
+ var self__ = this;
+ if(cljs.core._lookup.call(null, self__.transient_map, v, cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel) {
+ return not_found
+ }else {
+ return v
+ }
+};
+cljs.core.TransientHashSet.prototype.cljs$core$ICounted$_count$arity$1 = function(tcoll) {
+ var self__ = this;
+ return cljs.core.count.call(null, self__.transient_map)
+};
+cljs.core.TransientHashSet.prototype.cljs$core$ITransientSet$_disjoin_BANG_$arity$2 = function(tcoll, v) {
+ var self__ = this;
+ self__.transient_map = cljs.core.dissoc_BANG_.call(null, self__.transient_map, v);
+ return tcoll
+};
+cljs.core.TransientHashSet.prototype.cljs$core$ITransientCollection$_conj_BANG_$arity$2 = function(tcoll, o) {
+ var self__ = this;
+ self__.transient_map = cljs.core.assoc_BANG_.call(null, self__.transient_map, o, null);
+ return tcoll
+};
+cljs.core.TransientHashSet.prototype.cljs$core$ITransientCollection$_persistent_BANG_$arity$1 = function(tcoll) {
+ var self__ = this;
+ return new cljs.core.PersistentHashSet(null, cljs.core.persistent_BANG_.call(null, self__.transient_map), null)
+};
+cljs.core.TransientHashSet;
+goog.provide("cljs.core.PersistentTreeSet");
+cljs.core.PersistentTreeSet = function(meta, tree_map, __hash) {
+ this.meta = meta;
+ this.tree_map = tree_map;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 417730831
+};
+cljs.core.PersistentTreeSet.cljs$lang$type = true;
+cljs.core.PersistentTreeSet.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/PersistentTreeSet")
+};
+cljs.core.PersistentTreeSet.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/PersistentTreeSet")
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$IHash$_hash$arity$1 = function(coll) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_iset.call(null, coll);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$ILookup$_lookup$arity$2 = function(coll, v) {
+ var self__ = this;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, v, null)
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$ILookup$_lookup$arity$3 = function(coll, v, not_found) {
+ var self__ = this;
+ var n = self__.tree_map.entry_at(v);
+ if(!(n == null)) {
+ return n.key
+ }else {
+ return not_found
+ }
+};
+cljs.core.PersistentTreeSet.prototype.call = function() {
+ var G__3326 = null;
+ var G__3326__2 = function(this_sym3324, k) {
+ var self__ = this;
+ var this_sym3324__$1 = this;
+ var coll = this_sym3324__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$2(coll, k)
+ };
+ var G__3326__3 = function(this_sym3325, k, not_found) {
+ var self__ = this;
+ var this_sym3325__$1 = this;
+ var coll = this_sym3325__$1;
+ return coll.cljs$core$ILookup$_lookup$arity$3(coll, k, not_found)
+ };
+ G__3326 = function(this_sym3325, k, not_found) {
+ switch(arguments.length) {
+ case 2:
+ return G__3326__2.call(this, this_sym3325, k);
+ case 3:
+ return G__3326__3.call(this, this_sym3325, k, not_found)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ return G__3326
+}();
+cljs.core.PersistentTreeSet.prototype.apply = function(this_sym3322, args3323) {
+ var self__ = this;
+ return this_sym3322.call.apply(this_sym3322, [this_sym3322].concat(args3323.slice()))
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$ICollection$_conj$arity$2 = function(coll, o) {
+ var self__ = this;
+ return new cljs.core.PersistentTreeSet(self__.meta, cljs.core.assoc.call(null, self__.tree_map, o, null), null)
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$IReversible$_rseq$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.map.call(null, cljs.core.key, cljs.core.rseq.call(null, self__.tree_map))
+};
+cljs.core.PersistentTreeSet.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$ISorted$_sorted_seq$arity$2 = function(coll, ascending_QMARK_) {
+ var self__ = this;
+ return cljs.core.map.call(null, cljs.core.key, cljs.core._sorted_seq.call(null, self__.tree_map, ascending_QMARK_))
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$ISorted$_sorted_seq_from$arity$3 = function(coll, k, ascending_QMARK_) {
+ var self__ = this;
+ return cljs.core.map.call(null, cljs.core.key, cljs.core._sorted_seq_from.call(null, self__.tree_map, k, ascending_QMARK_))
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$ISorted$_entry_key$arity$2 = function(coll, entry) {
+ var self__ = this;
+ return entry
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$ISorted$_comparator$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core._comparator.call(null, self__.tree_map)
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$ISeqable$_seq$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.keys.call(null, self__.tree_map)
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$ISet$_disjoin$arity$2 = function(coll, v) {
+ var self__ = this;
+ return new cljs.core.PersistentTreeSet(self__.meta, cljs.core.dissoc.call(null, self__.tree_map, v), null)
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$ICounted$_count$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.count.call(null, self__.tree_map)
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(coll, other) {
+ var self__ = this;
+ var and__3822__auto__ = cljs.core.set_QMARK_.call(null, other);
+ if(and__3822__auto__) {
+ var and__3822__auto____$1 = cljs.core.count.call(null, coll) === cljs.core.count.call(null, other);
+ if(and__3822__auto____$1) {
+ return cljs.core.every_QMARK_.call(null, function(p1__3316_SHARP_) {
+ return cljs.core.contains_QMARK_.call(null, coll, p1__3316_SHARP_)
+ }, other)
+ }else {
+ return and__3822__auto____$1
+ }
+ }else {
+ return and__3822__auto__
+ }
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(coll, meta__$1) {
+ var self__ = this;
+ return new cljs.core.PersistentTreeSet(meta__$1, self__.tree_map, self__.__hash)
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$IMeta$_meta$arity$1 = function(coll) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(coll) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.PersistentTreeSet.EMPTY, self__.meta)
+};
+cljs.core.PersistentTreeSet;
+cljs.core.PersistentTreeSet.EMPTY = new cljs.core.PersistentTreeSet(null, cljs.core.sorted_map.call(null), 0);
+cljs.core.hash_set = function() {
+ var hash_set = null;
+ var hash_set__0 = function() {
+ return cljs.core.PersistentHashSet.EMPTY
+ };
+ var hash_set__1 = function() {
+ var G__3327__delegate = function(keys) {
+ var in$ = cljs.core.seq.call(null, keys);
+ var out = cljs.core.transient$.call(null, cljs.core.PersistentHashSet.EMPTY);
+ while(true) {
+ if(cljs.core.seq.call(null, in$)) {
+ var G__3328 = cljs.core.next.call(null, in$);
+ var G__3329 = cljs.core.conj_BANG_.call(null, out, cljs.core.first.call(null, in$));
+ in$ = G__3328;
+ out = G__3329;
+ continue
+ }else {
+ return cljs.core.persistent_BANG_.call(null, out)
+ }
+ break
+ }
+ };
+ var G__3327 = function(var_args) {
+ var keys = null;
+ if(goog.isDef(var_args)) {
+ keys = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return G__3327__delegate.call(this, keys)
+ };
+ G__3327.cljs$lang$maxFixedArity = 0;
+ G__3327.cljs$lang$applyTo = function(arglist__3330) {
+ var keys = cljs.core.seq(arglist__3330);
+ return G__3327__delegate(keys)
+ };
+ G__3327.cljs$lang$arity$variadic = G__3327__delegate;
+ return G__3327
+ }();
+ hash_set = function(var_args) {
+ var keys = var_args;
+ switch(arguments.length) {
+ case 0:
+ return hash_set__0.call(this);
+ default:
+ return hash_set__1.cljs$lang$arity$variadic(cljs.core.array_seq(arguments, 0))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ hash_set.cljs$lang$maxFixedArity = 0;
+ hash_set.cljs$lang$applyTo = hash_set__1.cljs$lang$applyTo;
+ hash_set.cljs$lang$arity$0 = hash_set__0;
+ hash_set.cljs$lang$arity$variadic = hash_set__1.cljs$lang$arity$variadic;
+ return hash_set
+}();
+cljs.core.set = function set(coll) {
+ return cljs.core.apply.call(null, cljs.core.hash_set, coll)
+};
+cljs.core.sorted_set = function() {
+ var sorted_set__delegate = function(keys) {
+ return cljs.core.reduce.call(null, cljs.core._conj, cljs.core.PersistentTreeSet.EMPTY, keys)
+ };
+ var sorted_set = function(var_args) {
+ var keys = null;
+ if(goog.isDef(var_args)) {
+ keys = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return sorted_set__delegate.call(this, keys)
+ };
+ sorted_set.cljs$lang$maxFixedArity = 0;
+ sorted_set.cljs$lang$applyTo = function(arglist__3331) {
+ var keys = cljs.core.seq(arglist__3331);
+ return sorted_set__delegate(keys)
+ };
+ sorted_set.cljs$lang$arity$variadic = sorted_set__delegate;
+ return sorted_set
+}();
+cljs.core.sorted_set_by = function() {
+ var sorted_set_by__delegate = function(comparator, keys) {
+ return cljs.core.reduce.call(null, cljs.core._conj, new cljs.core.PersistentTreeSet(null, cljs.core.sorted_map_by.call(null, comparator), 0), keys)
+ };
+ var sorted_set_by = function(comparator, var_args) {
+ var keys = null;
+ if(goog.isDef(var_args)) {
+ keys = cljs.core.array_seq(Array.prototype.slice.call(arguments, 1), 0)
+ }
+ return sorted_set_by__delegate.call(this, comparator, keys)
+ };
+ sorted_set_by.cljs$lang$maxFixedArity = 1;
+ sorted_set_by.cljs$lang$applyTo = function(arglist__3333) {
+ var comparator = cljs.core.first(arglist__3333);
+ var keys = cljs.core.rest(arglist__3333);
+ return sorted_set_by__delegate(comparator, keys)
+ };
+ sorted_set_by.cljs$lang$arity$variadic = sorted_set_by__delegate;
+ return sorted_set_by
+}();
+cljs.core.replace = function replace(smap, coll) {
+ if(cljs.core.vector_QMARK_.call(null, coll)) {
+ var n = cljs.core.count.call(null, coll);
+ return cljs.core.reduce.call(null, function(v, i) {
+ var temp__3971__auto__ = cljs.core.find.call(null, smap, cljs.core.nth.call(null, v, i));
+ if(cljs.core.truth_(temp__3971__auto__)) {
+ var e = temp__3971__auto__;
+ return cljs.core.assoc.call(null, v, i, cljs.core.second.call(null, e))
+ }else {
+ return v
+ }
+ }, coll, cljs.core.take.call(null, n, cljs.core.iterate.call(null, cljs.core.inc, 0)))
+ }else {
+ return cljs.core.map.call(null, function(p1__3332_SHARP_) {
+ var temp__3971__auto__ = cljs.core.find.call(null, smap, p1__3332_SHARP_);
+ if(cljs.core.truth_(temp__3971__auto__)) {
+ var e = temp__3971__auto__;
+ return cljs.core.second.call(null, e)
+ }else {
+ return p1__3332_SHARP_
+ }
+ }, coll)
+ }
+};
+cljs.core.distinct = function distinct(coll) {
+ var step = function step(xs, seen) {
+ return new cljs.core.LazySeq(null, false, function() {
+ return function(p__3340, seen__$1) {
+ while(true) {
+ var vec__3341 = p__3340;
+ var f = cljs.core.nth.call(null, vec__3341, 0, null);
+ var xs__$1 = vec__3341;
+ var temp__3974__auto__ = cljs.core.seq.call(null, xs__$1);
+ if(temp__3974__auto__) {
+ var s = temp__3974__auto__;
+ if(cljs.core.contains_QMARK_.call(null, seen__$1, f)) {
+ var G__3342 = cljs.core.rest.call(null, s);
+ var G__3343 = seen__$1;
+ p__3340 = G__3342;
+ seen__$1 = G__3343;
+ continue
+ }else {
+ return cljs.core.cons.call(null, f, step.call(null, cljs.core.rest.call(null, s), cljs.core.conj.call(null, seen__$1, f)))
+ }
+ }else {
+ return null
+ }
+ break
+ }
+ }.call(null, xs, seen)
+ }, null)
+ };
+ return step.call(null, coll, cljs.core.PersistentHashSet.EMPTY)
+};
+cljs.core.butlast = function butlast(s) {
+ var ret = cljs.core.PersistentVector.EMPTY;
+ var s__$1 = s;
+ while(true) {
+ if(cljs.core.next.call(null, s__$1)) {
+ var G__3344 = cljs.core.conj.call(null, ret, cljs.core.first.call(null, s__$1));
+ var G__3345 = cljs.core.next.call(null, s__$1);
+ ret = G__3344;
+ s__$1 = G__3345;
+ continue
+ }else {
+ return cljs.core.seq.call(null, ret)
+ }
+ break
+ }
+};
+cljs.core.name = function name(x) {
+ if(cljs.core.string_QMARK_.call(null, x)) {
+ return x
+ }else {
+ if(function() {
+ var or__3824__auto__ = cljs.core.keyword_QMARK_.call(null, x);
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return cljs.core.symbol_QMARK_.call(null, x)
+ }
+ }()) {
+ var i = x.lastIndexOf("/");
+ if(i < 0) {
+ return cljs.core.subs.call(null, x, 2)
+ }else {
+ return cljs.core.subs.call(null, x, i + 1)
+ }
+ }else {
+ if("\ufdd0'else") {
+ throw new Error([cljs.core.str("Doesn't support name: "), cljs.core.str(x)].join(""));
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.namespace = function namespace(x) {
+ if(function() {
+ var or__3824__auto__ = cljs.core.keyword_QMARK_.call(null, x);
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return cljs.core.symbol_QMARK_.call(null, x)
+ }
+ }()) {
+ var i = x.lastIndexOf("/");
+ if(i > -1) {
+ return cljs.core.subs.call(null, x, 2, i)
+ }else {
+ return null
+ }
+ }else {
+ throw new Error([cljs.core.str("Doesn't support namespace: "), cljs.core.str(x)].join(""));
+ }
+};
+cljs.core.zipmap = function zipmap(keys, vals) {
+ var map = cljs.core.ObjMap.EMPTY;
+ var ks = cljs.core.seq.call(null, keys);
+ var vs = cljs.core.seq.call(null, vals);
+ while(true) {
+ if(function() {
+ var and__3822__auto__ = ks;
+ if(and__3822__auto__) {
+ return vs
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ var G__3348 = cljs.core.assoc.call(null, map, cljs.core.first.call(null, ks), cljs.core.first.call(null, vs));
+ var G__3349 = cljs.core.next.call(null, ks);
+ var G__3350 = cljs.core.next.call(null, vs);
+ map = G__3348;
+ ks = G__3349;
+ vs = G__3350;
+ continue
+ }else {
+ return map
+ }
+ break
+ }
+};
+cljs.core.max_key = function() {
+ var max_key = null;
+ var max_key__2 = function(k, x) {
+ return x
+ };
+ var max_key__3 = function(k, x, y) {
+ if(k.call(null, x) > k.call(null, y)) {
+ return x
+ }else {
+ return y
+ }
+ };
+ var max_key__4 = function() {
+ var G__3353__delegate = function(k, x, y, more) {
+ return cljs.core.reduce.call(null, function(p1__3346_SHARP_, p2__3347_SHARP_) {
+ return max_key.call(null, k, p1__3346_SHARP_, p2__3347_SHARP_)
+ }, max_key.call(null, k, x, y), more)
+ };
+ var G__3353 = function(k, x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3353__delegate.call(this, k, x, y, more)
+ };
+ G__3353.cljs$lang$maxFixedArity = 3;
+ G__3353.cljs$lang$applyTo = function(arglist__3354) {
+ var k = cljs.core.first(arglist__3354);
+ var x = cljs.core.first(cljs.core.next(arglist__3354));
+ var y = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3354)));
+ var more = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3354)));
+ return G__3353__delegate(k, x, y, more)
+ };
+ G__3353.cljs$lang$arity$variadic = G__3353__delegate;
+ return G__3353
+ }();
+ max_key = function(k, x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 2:
+ return max_key__2.call(this, k, x);
+ case 3:
+ return max_key__3.call(this, k, x, y);
+ default:
+ return max_key__4.cljs$lang$arity$variadic(k, x, y, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ max_key.cljs$lang$maxFixedArity = 3;
+ max_key.cljs$lang$applyTo = max_key__4.cljs$lang$applyTo;
+ max_key.cljs$lang$arity$2 = max_key__2;
+ max_key.cljs$lang$arity$3 = max_key__3;
+ max_key.cljs$lang$arity$variadic = max_key__4.cljs$lang$arity$variadic;
+ return max_key
+}();
+cljs.core.min_key = function() {
+ var min_key = null;
+ var min_key__2 = function(k, x) {
+ return x
+ };
+ var min_key__3 = function(k, x, y) {
+ if(k.call(null, x) < k.call(null, y)) {
+ return x
+ }else {
+ return y
+ }
+ };
+ var min_key__4 = function() {
+ var G__3355__delegate = function(k, x, y, more) {
+ return cljs.core.reduce.call(null, function(p1__3351_SHARP_, p2__3352_SHARP_) {
+ return min_key.call(null, k, p1__3351_SHARP_, p2__3352_SHARP_)
+ }, min_key.call(null, k, x, y), more)
+ };
+ var G__3355 = function(k, x, y, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3355__delegate.call(this, k, x, y, more)
+ };
+ G__3355.cljs$lang$maxFixedArity = 3;
+ G__3355.cljs$lang$applyTo = function(arglist__3356) {
+ var k = cljs.core.first(arglist__3356);
+ var x = cljs.core.first(cljs.core.next(arglist__3356));
+ var y = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3356)));
+ var more = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3356)));
+ return G__3355__delegate(k, x, y, more)
+ };
+ G__3355.cljs$lang$arity$variadic = G__3355__delegate;
+ return G__3355
+ }();
+ min_key = function(k, x, y, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 2:
+ return min_key__2.call(this, k, x);
+ case 3:
+ return min_key__3.call(this, k, x, y);
+ default:
+ return min_key__4.cljs$lang$arity$variadic(k, x, y, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ min_key.cljs$lang$maxFixedArity = 3;
+ min_key.cljs$lang$applyTo = min_key__4.cljs$lang$applyTo;
+ min_key.cljs$lang$arity$2 = min_key__2;
+ min_key.cljs$lang$arity$3 = min_key__3;
+ min_key.cljs$lang$arity$variadic = min_key__4.cljs$lang$arity$variadic;
+ return min_key
+}();
+cljs.core.partition_all = function() {
+ var partition_all = null;
+ var partition_all__2 = function(n, coll) {
+ return partition_all.call(null, n, n, coll)
+ };
+ var partition_all__3 = function(n, step, coll) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var temp__3974__auto__ = cljs.core.seq.call(null, coll);
+ if(temp__3974__auto__) {
+ var s = temp__3974__auto__;
+ return cljs.core.cons.call(null, cljs.core.take.call(null, n, s), partition_all.call(null, n, step, cljs.core.drop.call(null, step, s)))
+ }else {
+ return null
+ }
+ }, null)
+ };
+ partition_all = function(n, step, coll) {
+ switch(arguments.length) {
+ case 2:
+ return partition_all__2.call(this, n, step);
+ case 3:
+ return partition_all__3.call(this, n, step, coll)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ partition_all.cljs$lang$arity$2 = partition_all__2;
+ partition_all.cljs$lang$arity$3 = partition_all__3;
+ return partition_all
+}();
+cljs.core.take_while = function take_while(pred, coll) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var temp__3974__auto__ = cljs.core.seq.call(null, coll);
+ if(temp__3974__auto__) {
+ var s = temp__3974__auto__;
+ if(cljs.core.truth_(pred.call(null, cljs.core.first.call(null, s)))) {
+ return cljs.core.cons.call(null, cljs.core.first.call(null, s), take_while.call(null, pred, cljs.core.rest.call(null, s)))
+ }else {
+ return null
+ }
+ }else {
+ return null
+ }
+ }, null)
+};
+cljs.core.mk_bound_fn = function mk_bound_fn(sc, test, key) {
+ return function(e) {
+ var comp = cljs.core._comparator.call(null, sc);
+ return test.call(null, comp.call(null, cljs.core._entry_key.call(null, sc, e), key), 0)
+ }
+};
+cljs.core.subseq = function() {
+ var subseq = null;
+ var subseq__3 = function(sc, test, key) {
+ var include = cljs.core.mk_bound_fn.call(null, sc, test, key);
+ if(cljs.core.truth_(cljs.core.PersistentHashSet.fromArray([cljs.core._GT_, cljs.core._GT__EQ_]).call(null, test))) {
+ var temp__3974__auto__ = cljs.core._sorted_seq_from.call(null, sc, key, true);
+ if(cljs.core.truth_(temp__3974__auto__)) {
+ var vec__3359 = temp__3974__auto__;
+ var e = cljs.core.nth.call(null, vec__3359, 0, null);
+ var s = vec__3359;
+ if(cljs.core.truth_(include.call(null, e))) {
+ return s
+ }else {
+ return cljs.core.next.call(null, s)
+ }
+ }else {
+ return null
+ }
+ }else {
+ return cljs.core.take_while.call(null, include, cljs.core._sorted_seq.call(null, sc, true))
+ }
+ };
+ var subseq__5 = function(sc, start_test, start_key, end_test, end_key) {
+ var temp__3974__auto__ = cljs.core._sorted_seq_from.call(null, sc, start_key, true);
+ if(cljs.core.truth_(temp__3974__auto__)) {
+ var vec__3360 = temp__3974__auto__;
+ var e = cljs.core.nth.call(null, vec__3360, 0, null);
+ var s = vec__3360;
+ return cljs.core.take_while.call(null, cljs.core.mk_bound_fn.call(null, sc, end_test, end_key), cljs.core.truth_(cljs.core.mk_bound_fn.call(null, sc, start_test, start_key).call(null, e)) ? s : cljs.core.next.call(null, s))
+ }else {
+ return null
+ }
+ };
+ subseq = function(sc, start_test, start_key, end_test, end_key) {
+ switch(arguments.length) {
+ case 3:
+ return subseq__3.call(this, sc, start_test, start_key);
+ case 5:
+ return subseq__5.call(this, sc, start_test, start_key, end_test, end_key)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ subseq.cljs$lang$arity$3 = subseq__3;
+ subseq.cljs$lang$arity$5 = subseq__5;
+ return subseq
+}();
+cljs.core.rsubseq = function() {
+ var rsubseq = null;
+ var rsubseq__3 = function(sc, test, key) {
+ var include = cljs.core.mk_bound_fn.call(null, sc, test, key);
+ if(cljs.core.truth_(cljs.core.PersistentHashSet.fromArray([cljs.core._LT_, cljs.core._LT__EQ_]).call(null, test))) {
+ var temp__3974__auto__ = cljs.core._sorted_seq_from.call(null, sc, key, false);
+ if(cljs.core.truth_(temp__3974__auto__)) {
+ var vec__3363 = temp__3974__auto__;
+ var e = cljs.core.nth.call(null, vec__3363, 0, null);
+ var s = vec__3363;
+ if(cljs.core.truth_(include.call(null, e))) {
+ return s
+ }else {
+ return cljs.core.next.call(null, s)
+ }
+ }else {
+ return null
+ }
+ }else {
+ return cljs.core.take_while.call(null, include, cljs.core._sorted_seq.call(null, sc, false))
+ }
+ };
+ var rsubseq__5 = function(sc, start_test, start_key, end_test, end_key) {
+ var temp__3974__auto__ = cljs.core._sorted_seq_from.call(null, sc, end_key, false);
+ if(cljs.core.truth_(temp__3974__auto__)) {
+ var vec__3364 = temp__3974__auto__;
+ var e = cljs.core.nth.call(null, vec__3364, 0, null);
+ var s = vec__3364;
+ return cljs.core.take_while.call(null, cljs.core.mk_bound_fn.call(null, sc, start_test, start_key), cljs.core.truth_(cljs.core.mk_bound_fn.call(null, sc, end_test, end_key).call(null, e)) ? s : cljs.core.next.call(null, s))
+ }else {
+ return null
+ }
+ };
+ rsubseq = function(sc, start_test, start_key, end_test, end_key) {
+ switch(arguments.length) {
+ case 3:
+ return rsubseq__3.call(this, sc, start_test, start_key);
+ case 5:
+ return rsubseq__5.call(this, sc, start_test, start_key, end_test, end_key)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ rsubseq.cljs$lang$arity$3 = rsubseq__3;
+ rsubseq.cljs$lang$arity$5 = rsubseq__5;
+ return rsubseq
+}();
+goog.provide("cljs.core.Range");
+cljs.core.Range = function(meta, start, end, step, __hash) {
+ this.meta = meta;
+ this.start = start;
+ this.end = end;
+ this.step = step;
+ this.__hash = __hash;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 32375006
+};
+cljs.core.Range.cljs$lang$type = true;
+cljs.core.Range.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/Range")
+};
+cljs.core.Range.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/Range")
+};
+cljs.core.Range.prototype.cljs$core$IHash$_hash$arity$1 = function(rng) {
+ var self__ = this;
+ var h__2196__auto__ = self__.__hash;
+ if(!(h__2196__auto__ == null)) {
+ return h__2196__auto__
+ }else {
+ var h__2196__auto____$1 = cljs.core.hash_coll.call(null, rng);
+ self__.__hash = h__2196__auto____$1;
+ return h__2196__auto____$1
+ }
+};
+cljs.core.Range.prototype.cljs$core$INext$_next$arity$1 = function(rng) {
+ var self__ = this;
+ if(self__.step > 0) {
+ if(self__.start + self__.step < self__.end) {
+ return new cljs.core.Range(self__.meta, self__.start + self__.step, self__.end, self__.step, null)
+ }else {
+ return null
+ }
+ }else {
+ if(self__.start + self__.step > self__.end) {
+ return new cljs.core.Range(self__.meta, self__.start + self__.step, self__.end, self__.step, null)
+ }else {
+ return null
+ }
+ }
+};
+cljs.core.Range.prototype.cljs$core$ICollection$_conj$arity$2 = function(rng, o) {
+ var self__ = this;
+ return cljs.core.cons.call(null, o, rng)
+};
+cljs.core.Range.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.Range.prototype.cljs$core$IReduce$_reduce$arity$2 = function(rng, f) {
+ var self__ = this;
+ return cljs.core.ci_reduce.call(null, rng, f)
+};
+cljs.core.Range.prototype.cljs$core$IReduce$_reduce$arity$3 = function(rng, f, s) {
+ var self__ = this;
+ return cljs.core.ci_reduce.call(null, rng, f, s)
+};
+cljs.core.Range.prototype.cljs$core$ISeqable$_seq$arity$1 = function(rng) {
+ var self__ = this;
+ if(self__.step > 0) {
+ if(self__.start < self__.end) {
+ return rng
+ }else {
+ return null
+ }
+ }else {
+ if(self__.start > self__.end) {
+ return rng
+ }else {
+ return null
+ }
+ }
+};
+cljs.core.Range.prototype.cljs$core$ICounted$_count$arity$1 = function(rng) {
+ var self__ = this;
+ if(cljs.core.not.call(null, rng.cljs$core$ISeqable$_seq$arity$1(rng))) {
+ return 0
+ }else {
+ return Math.ceil((self__.end - self__.start) / self__.step)
+ }
+};
+cljs.core.Range.prototype.cljs$core$ISeq$_first$arity$1 = function(rng) {
+ var self__ = this;
+ return self__.start
+};
+cljs.core.Range.prototype.cljs$core$ISeq$_rest$arity$1 = function(rng) {
+ var self__ = this;
+ if(!(rng.cljs$core$ISeqable$_seq$arity$1(rng) == null)) {
+ return new cljs.core.Range(self__.meta, self__.start + self__.step, self__.end, self__.step, null)
+ }else {
+ return cljs.core.List.EMPTY
+ }
+};
+cljs.core.Range.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(rng, other) {
+ var self__ = this;
+ return cljs.core.equiv_sequential.call(null, rng, other)
+};
+cljs.core.Range.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = function(rng, meta__$1) {
+ var self__ = this;
+ return new cljs.core.Range(meta__$1, self__.start, self__.end, self__.step, self__.__hash)
+};
+cljs.core.Range.prototype.cljs$core$IMeta$_meta$arity$1 = function(rng) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.Range.prototype.cljs$core$IIndexed$_nth$arity$2 = function(rng, n) {
+ var self__ = this;
+ if(n < rng.cljs$core$ICounted$_count$arity$1(rng)) {
+ return self__.start + n * self__.step
+ }else {
+ if(function() {
+ var and__3822__auto__ = self__.start > self__.end;
+ if(and__3822__auto__) {
+ return self__.step === 0
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return self__.start
+ }else {
+ throw new Error("Index out of bounds");
+ }
+ }
+};
+cljs.core.Range.prototype.cljs$core$IIndexed$_nth$arity$3 = function(rng, n, not_found) {
+ var self__ = this;
+ if(n < rng.cljs$core$ICounted$_count$arity$1(rng)) {
+ return self__.start + n * self__.step
+ }else {
+ if(function() {
+ var and__3822__auto__ = self__.start > self__.end;
+ if(and__3822__auto__) {
+ return self__.step === 0
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return self__.start
+ }else {
+ return not_found
+ }
+ }
+};
+cljs.core.Range.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = function(rng) {
+ var self__ = this;
+ return cljs.core.with_meta.call(null, cljs.core.List.EMPTY, self__.meta)
+};
+cljs.core.Range;
+cljs.core.range = function() {
+ var range = null;
+ var range__0 = function() {
+ return range.call(null, 0, Number.MAX_VALUE, 1)
+ };
+ var range__1 = function(end) {
+ return range.call(null, 0, end, 1)
+ };
+ var range__2 = function(start, end) {
+ return range.call(null, start, end, 1)
+ };
+ var range__3 = function(start, end, step) {
+ return new cljs.core.Range(null, start, end, step, null)
+ };
+ range = function(start, end, step) {
+ switch(arguments.length) {
+ case 0:
+ return range__0.call(this);
+ case 1:
+ return range__1.call(this, start);
+ case 2:
+ return range__2.call(this, start, end);
+ case 3:
+ return range__3.call(this, start, end, step)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ range.cljs$lang$arity$0 = range__0;
+ range.cljs$lang$arity$1 = range__1;
+ range.cljs$lang$arity$2 = range__2;
+ range.cljs$lang$arity$3 = range__3;
+ return range
+}();
+cljs.core.take_nth = function take_nth(n, coll) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var temp__3974__auto__ = cljs.core.seq.call(null, coll);
+ if(temp__3974__auto__) {
+ var s = temp__3974__auto__;
+ return cljs.core.cons.call(null, cljs.core.first.call(null, s), take_nth.call(null, n, cljs.core.drop.call(null, n, s)))
+ }else {
+ return null
+ }
+ }, null)
+};
+cljs.core.split_with = function split_with(pred, coll) {
+ return cljs.core.PersistentVector.fromArray([cljs.core.take_while.call(null, pred, coll), cljs.core.drop_while.call(null, pred, coll)], true)
+};
+cljs.core.partition_by = function partition_by(f, coll) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var temp__3974__auto__ = cljs.core.seq.call(null, coll);
+ if(temp__3974__auto__) {
+ var s = temp__3974__auto__;
+ var fst = cljs.core.first.call(null, s);
+ var fv = f.call(null, fst);
+ var run = cljs.core.cons.call(null, fst, cljs.core.take_while.call(null, function(p1__3365_SHARP_) {
+ return cljs.core._EQ_.call(null, fv, f.call(null, p1__3365_SHARP_))
+ }, cljs.core.next.call(null, s)));
+ return cljs.core.cons.call(null, run, partition_by.call(null, f, cljs.core.seq.call(null, cljs.core.drop.call(null, cljs.core.count.call(null, run), s))))
+ }else {
+ return null
+ }
+ }, null)
+};
+cljs.core.frequencies = function frequencies(coll) {
+ return cljs.core.persistent_BANG_.call(null, cljs.core.reduce.call(null, function(counts, x) {
+ return cljs.core.assoc_BANG_.call(null, counts, x, cljs.core._lookup.call(null, counts, x, 0) + 1)
+ }, cljs.core.transient$.call(null, cljs.core.ObjMap.EMPTY), coll))
+};
+cljs.core.reductions = function() {
+ var reductions = null;
+ var reductions__2 = function(f, coll) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var temp__3971__auto__ = cljs.core.seq.call(null, coll);
+ if(temp__3971__auto__) {
+ var s = temp__3971__auto__;
+ return reductions.call(null, f, cljs.core.first.call(null, s), cljs.core.rest.call(null, s))
+ }else {
+ return cljs.core.list.call(null, f.call(null))
+ }
+ }, null)
+ };
+ var reductions__3 = function(f, init, coll) {
+ return cljs.core.cons.call(null, init, new cljs.core.LazySeq(null, false, function() {
+ var temp__3974__auto__ = cljs.core.seq.call(null, coll);
+ if(temp__3974__auto__) {
+ var s = temp__3974__auto__;
+ return reductions.call(null, f, f.call(null, init, cljs.core.first.call(null, s)), cljs.core.rest.call(null, s))
+ }else {
+ return null
+ }
+ }, null))
+ };
+ reductions = function(f, init, coll) {
+ switch(arguments.length) {
+ case 2:
+ return reductions__2.call(this, f, init);
+ case 3:
+ return reductions__3.call(this, f, init, coll)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ reductions.cljs$lang$arity$2 = reductions__2;
+ reductions.cljs$lang$arity$3 = reductions__3;
+ return reductions
+}();
+cljs.core.juxt = function() {
+ var juxt = null;
+ var juxt__1 = function(f) {
+ return function() {
+ var G__3376 = null;
+ var G__3376__0 = function() {
+ return cljs.core.vector.call(null, f.call(null))
+ };
+ var G__3376__1 = function(x) {
+ return cljs.core.vector.call(null, f.call(null, x))
+ };
+ var G__3376__2 = function(x, y) {
+ return cljs.core.vector.call(null, f.call(null, x, y))
+ };
+ var G__3376__3 = function(x, y, z) {
+ return cljs.core.vector.call(null, f.call(null, x, y, z))
+ };
+ var G__3376__4 = function() {
+ var G__3377__delegate = function(x, y, z, args) {
+ return cljs.core.vector.call(null, cljs.core.apply.call(null, f, x, y, z, args))
+ };
+ var G__3377 = function(x, y, z, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3377__delegate.call(this, x, y, z, args)
+ };
+ G__3377.cljs$lang$maxFixedArity = 3;
+ G__3377.cljs$lang$applyTo = function(arglist__3378) {
+ var x = cljs.core.first(arglist__3378);
+ var y = cljs.core.first(cljs.core.next(arglist__3378));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3378)));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3378)));
+ return G__3377__delegate(x, y, z, args)
+ };
+ G__3377.cljs$lang$arity$variadic = G__3377__delegate;
+ return G__3377
+ }();
+ G__3376 = function(x, y, z, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 0:
+ return G__3376__0.call(this);
+ case 1:
+ return G__3376__1.call(this, x);
+ case 2:
+ return G__3376__2.call(this, x, y);
+ case 3:
+ return G__3376__3.call(this, x, y, z);
+ default:
+ return G__3376__4.cljs$lang$arity$variadic(x, y, z, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ G__3376.cljs$lang$maxFixedArity = 3;
+ G__3376.cljs$lang$applyTo = G__3376__4.cljs$lang$applyTo;
+ return G__3376
+ }()
+ };
+ var juxt__2 = function(f, g) {
+ return function() {
+ var G__3379 = null;
+ var G__3379__0 = function() {
+ return cljs.core.vector.call(null, f.call(null), g.call(null))
+ };
+ var G__3379__1 = function(x) {
+ return cljs.core.vector.call(null, f.call(null, x), g.call(null, x))
+ };
+ var G__3379__2 = function(x, y) {
+ return cljs.core.vector.call(null, f.call(null, x, y), g.call(null, x, y))
+ };
+ var G__3379__3 = function(x, y, z) {
+ return cljs.core.vector.call(null, f.call(null, x, y, z), g.call(null, x, y, z))
+ };
+ var G__3379__4 = function() {
+ var G__3380__delegate = function(x, y, z, args) {
+ return cljs.core.vector.call(null, cljs.core.apply.call(null, f, x, y, z, args), cljs.core.apply.call(null, g, x, y, z, args))
+ };
+ var G__3380 = function(x, y, z, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3380__delegate.call(this, x, y, z, args)
+ };
+ G__3380.cljs$lang$maxFixedArity = 3;
+ G__3380.cljs$lang$applyTo = function(arglist__3381) {
+ var x = cljs.core.first(arglist__3381);
+ var y = cljs.core.first(cljs.core.next(arglist__3381));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3381)));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3381)));
+ return G__3380__delegate(x, y, z, args)
+ };
+ G__3380.cljs$lang$arity$variadic = G__3380__delegate;
+ return G__3380
+ }();
+ G__3379 = function(x, y, z, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 0:
+ return G__3379__0.call(this);
+ case 1:
+ return G__3379__1.call(this, x);
+ case 2:
+ return G__3379__2.call(this, x, y);
+ case 3:
+ return G__3379__3.call(this, x, y, z);
+ default:
+ return G__3379__4.cljs$lang$arity$variadic(x, y, z, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ G__3379.cljs$lang$maxFixedArity = 3;
+ G__3379.cljs$lang$applyTo = G__3379__4.cljs$lang$applyTo;
+ return G__3379
+ }()
+ };
+ var juxt__3 = function(f, g, h) {
+ return function() {
+ var G__3382 = null;
+ var G__3382__0 = function() {
+ return cljs.core.vector.call(null, f.call(null), g.call(null), h.call(null))
+ };
+ var G__3382__1 = function(x) {
+ return cljs.core.vector.call(null, f.call(null, x), g.call(null, x), h.call(null, x))
+ };
+ var G__3382__2 = function(x, y) {
+ return cljs.core.vector.call(null, f.call(null, x, y), g.call(null, x, y), h.call(null, x, y))
+ };
+ var G__3382__3 = function(x, y, z) {
+ return cljs.core.vector.call(null, f.call(null, x, y, z), g.call(null, x, y, z), h.call(null, x, y, z))
+ };
+ var G__3382__4 = function() {
+ var G__3383__delegate = function(x, y, z, args) {
+ return cljs.core.vector.call(null, cljs.core.apply.call(null, f, x, y, z, args), cljs.core.apply.call(null, g, x, y, z, args), cljs.core.apply.call(null, h, x, y, z, args))
+ };
+ var G__3383 = function(x, y, z, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3383__delegate.call(this, x, y, z, args)
+ };
+ G__3383.cljs$lang$maxFixedArity = 3;
+ G__3383.cljs$lang$applyTo = function(arglist__3384) {
+ var x = cljs.core.first(arglist__3384);
+ var y = cljs.core.first(cljs.core.next(arglist__3384));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3384)));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3384)));
+ return G__3383__delegate(x, y, z, args)
+ };
+ G__3383.cljs$lang$arity$variadic = G__3383__delegate;
+ return G__3383
+ }();
+ G__3382 = function(x, y, z, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 0:
+ return G__3382__0.call(this);
+ case 1:
+ return G__3382__1.call(this, x);
+ case 2:
+ return G__3382__2.call(this, x, y);
+ case 3:
+ return G__3382__3.call(this, x, y, z);
+ default:
+ return G__3382__4.cljs$lang$arity$variadic(x, y, z, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ G__3382.cljs$lang$maxFixedArity = 3;
+ G__3382.cljs$lang$applyTo = G__3382__4.cljs$lang$applyTo;
+ return G__3382
+ }()
+ };
+ var juxt__4 = function() {
+ var G__3385__delegate = function(f, g, h, fs) {
+ var fs__$1 = cljs.core.list_STAR_.call(null, f, g, h, fs);
+ return function() {
+ var G__3386 = null;
+ var G__3386__0 = function() {
+ return cljs.core.reduce.call(null, function(p1__3366_SHARP_, p2__3367_SHARP_) {
+ return cljs.core.conj.call(null, p1__3366_SHARP_, p2__3367_SHARP_.call(null))
+ }, cljs.core.PersistentVector.EMPTY, fs__$1)
+ };
+ var G__3386__1 = function(x) {
+ return cljs.core.reduce.call(null, function(p1__3368_SHARP_, p2__3369_SHARP_) {
+ return cljs.core.conj.call(null, p1__3368_SHARP_, p2__3369_SHARP_.call(null, x))
+ }, cljs.core.PersistentVector.EMPTY, fs__$1)
+ };
+ var G__3386__2 = function(x, y) {
+ return cljs.core.reduce.call(null, function(p1__3370_SHARP_, p2__3371_SHARP_) {
+ return cljs.core.conj.call(null, p1__3370_SHARP_, p2__3371_SHARP_.call(null, x, y))
+ }, cljs.core.PersistentVector.EMPTY, fs__$1)
+ };
+ var G__3386__3 = function(x, y, z) {
+ return cljs.core.reduce.call(null, function(p1__3372_SHARP_, p2__3373_SHARP_) {
+ return cljs.core.conj.call(null, p1__3372_SHARP_, p2__3373_SHARP_.call(null, x, y, z))
+ }, cljs.core.PersistentVector.EMPTY, fs__$1)
+ };
+ var G__3386__4 = function() {
+ var G__3387__delegate = function(x, y, z, args) {
+ return cljs.core.reduce.call(null, function(p1__3374_SHARP_, p2__3375_SHARP_) {
+ return cljs.core.conj.call(null, p1__3374_SHARP_, cljs.core.apply.call(null, p2__3375_SHARP_, x, y, z, args))
+ }, cljs.core.PersistentVector.EMPTY, fs__$1)
+ };
+ var G__3387 = function(x, y, z, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3387__delegate.call(this, x, y, z, args)
+ };
+ G__3387.cljs$lang$maxFixedArity = 3;
+ G__3387.cljs$lang$applyTo = function(arglist__3388) {
+ var x = cljs.core.first(arglist__3388);
+ var y = cljs.core.first(cljs.core.next(arglist__3388));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3388)));
+ var args = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3388)));
+ return G__3387__delegate(x, y, z, args)
+ };
+ G__3387.cljs$lang$arity$variadic = G__3387__delegate;
+ return G__3387
+ }();
+ G__3386 = function(x, y, z, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 0:
+ return G__3386__0.call(this);
+ case 1:
+ return G__3386__1.call(this, x);
+ case 2:
+ return G__3386__2.call(this, x, y);
+ case 3:
+ return G__3386__3.call(this, x, y, z);
+ default:
+ return G__3386__4.cljs$lang$arity$variadic(x, y, z, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ G__3386.cljs$lang$maxFixedArity = 3;
+ G__3386.cljs$lang$applyTo = G__3386__4.cljs$lang$applyTo;
+ return G__3386
+ }()
+ };
+ var G__3385 = function(f, g, h, var_args) {
+ var fs = null;
+ if(goog.isDef(var_args)) {
+ fs = cljs.core.array_seq(Array.prototype.slice.call(arguments, 3), 0)
+ }
+ return G__3385__delegate.call(this, f, g, h, fs)
+ };
+ G__3385.cljs$lang$maxFixedArity = 3;
+ G__3385.cljs$lang$applyTo = function(arglist__3389) {
+ var f = cljs.core.first(arglist__3389);
+ var g = cljs.core.first(cljs.core.next(arglist__3389));
+ var h = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3389)));
+ var fs = cljs.core.rest(cljs.core.next(cljs.core.next(arglist__3389)));
+ return G__3385__delegate(f, g, h, fs)
+ };
+ G__3385.cljs$lang$arity$variadic = G__3385__delegate;
+ return G__3385
+ }();
+ juxt = function(f, g, h, var_args) {
+ var fs = var_args;
+ switch(arguments.length) {
+ case 1:
+ return juxt__1.call(this, f);
+ case 2:
+ return juxt__2.call(this, f, g);
+ case 3:
+ return juxt__3.call(this, f, g, h);
+ default:
+ return juxt__4.cljs$lang$arity$variadic(f, g, h, cljs.core.array_seq(arguments, 3))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ juxt.cljs$lang$maxFixedArity = 3;
+ juxt.cljs$lang$applyTo = juxt__4.cljs$lang$applyTo;
+ juxt.cljs$lang$arity$1 = juxt__1;
+ juxt.cljs$lang$arity$2 = juxt__2;
+ juxt.cljs$lang$arity$3 = juxt__3;
+ juxt.cljs$lang$arity$variadic = juxt__4.cljs$lang$arity$variadic;
+ return juxt
+}();
+cljs.core.dorun = function() {
+ var dorun = null;
+ var dorun__1 = function(coll) {
+ while(true) {
+ if(cljs.core.seq.call(null, coll)) {
+ var G__3390 = cljs.core.next.call(null, coll);
+ coll = G__3390;
+ continue
+ }else {
+ return null
+ }
+ break
+ }
+ };
+ var dorun__2 = function(n, coll) {
+ while(true) {
+ if(cljs.core.truth_(function() {
+ var and__3822__auto__ = cljs.core.seq.call(null, coll);
+ if(and__3822__auto__) {
+ return n > 0
+ }else {
+ return and__3822__auto__
+ }
+ }())) {
+ var G__3391 = n - 1;
+ var G__3392 = cljs.core.next.call(null, coll);
+ n = G__3391;
+ coll = G__3392;
+ continue
+ }else {
+ return null
+ }
+ break
+ }
+ };
+ dorun = function(n, coll) {
+ switch(arguments.length) {
+ case 1:
+ return dorun__1.call(this, n);
+ case 2:
+ return dorun__2.call(this, n, coll)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ dorun.cljs$lang$arity$1 = dorun__1;
+ dorun.cljs$lang$arity$2 = dorun__2;
+ return dorun
+}();
+cljs.core.doall = function() {
+ var doall = null;
+ var doall__1 = function(coll) {
+ cljs.core.dorun.call(null, coll);
+ return coll
+ };
+ var doall__2 = function(n, coll) {
+ cljs.core.dorun.call(null, n, coll);
+ return coll
+ };
+ doall = function(n, coll) {
+ switch(arguments.length) {
+ case 1:
+ return doall__1.call(this, n);
+ case 2:
+ return doall__2.call(this, n, coll)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ doall.cljs$lang$arity$1 = doall__1;
+ doall.cljs$lang$arity$2 = doall__2;
+ return doall
+}();
+cljs.core.regexp_QMARK_ = function regexp_QMARK_(o) {
+ return o instanceof RegExp
+};
+cljs.core.re_matches = function re_matches(re, s) {
+ var matches = re.exec(s);
+ if(cljs.core._EQ_.call(null, cljs.core.first.call(null, matches), s)) {
+ if(cljs.core.count.call(null, matches) === 1) {
+ return cljs.core.first.call(null, matches)
+ }else {
+ return cljs.core.vec.call(null, matches)
+ }
+ }else {
+ return null
+ }
+};
+cljs.core.re_find = function re_find(re, s) {
+ var matches = re.exec(s);
+ if(matches == null) {
+ return null
+ }else {
+ if(cljs.core.count.call(null, matches) === 1) {
+ return cljs.core.first.call(null, matches)
+ }else {
+ return cljs.core.vec.call(null, matches)
+ }
+ }
+};
+cljs.core.re_seq = function re_seq(re, s) {
+ var match_data = cljs.core.re_find.call(null, re, s);
+ var match_idx = s.search(re);
+ var match_str = cljs.core.coll_QMARK_.call(null, match_data) ? cljs.core.first.call(null, match_data) : match_data;
+ var post_match = cljs.core.subs.call(null, s, match_idx + cljs.core.count.call(null, match_str));
+ if(cljs.core.truth_(match_data)) {
+ return new cljs.core.LazySeq(null, false, function() {
+ return cljs.core.cons.call(null, match_data, re_seq.call(null, re, post_match))
+ }, null)
+ }else {
+ return null
+ }
+};
+cljs.core.re_pattern = function re_pattern(s) {
+ var vec__3395 = cljs.core.re_find.call(null, /^(?:\(\?([idmsux]*)\))?(.*)/, s);
+ var _ = cljs.core.nth.call(null, vec__3395, 0, null);
+ var flags = cljs.core.nth.call(null, vec__3395, 1, null);
+ var pattern = cljs.core.nth.call(null, vec__3395, 2, null);
+ return new RegExp(pattern, flags)
+};
+cljs.core.pr_sequential = function pr_sequential(print_one, begin, sep, end, opts, coll) {
+ return cljs.core.concat.call(null, cljs.core.PersistentVector.fromArray([begin], true), cljs.core.flatten1.call(null, cljs.core.interpose.call(null, cljs.core.PersistentVector.fromArray([sep], true), cljs.core.map.call(null, function(p1__3393_SHARP_) {
+ return print_one.call(null, p1__3393_SHARP_, opts)
+ }, coll))), cljs.core.PersistentVector.fromArray([end], true))
+};
+cljs.core.pr_sequential_writer = function pr_sequential_writer(writer, print_one, begin, sep, end, opts, coll) {
+ cljs.core._write.call(null, writer, begin);
+ if(cljs.core.seq.call(null, coll)) {
+ print_one.call(null, cljs.core.first.call(null, coll), writer, opts)
+ }else {
+ }
+ var G__3397 = cljs.core.seq.call(null, cljs.core.next.call(null, coll));
+ while(true) {
+ if(G__3397) {
+ var o = cljs.core.first.call(null, G__3397);
+ cljs.core._write.call(null, writer, sep);
+ print_one.call(null, o, writer, opts);
+ var G__3398 = cljs.core.next.call(null, G__3397);
+ G__3397 = G__3398;
+ continue
+ }else {
+ }
+ break
+ }
+ return cljs.core._write.call(null, writer, end)
+};
+cljs.core.write_all = function() {
+ var write_all__delegate = function(writer, ss) {
+ var G__3400 = cljs.core.seq.call(null, ss);
+ while(true) {
+ if(G__3400) {
+ var s = cljs.core.first.call(null, G__3400);
+ cljs.core._write.call(null, writer, s);
+ var G__3401 = cljs.core.next.call(null, G__3400);
+ G__3400 = G__3401;
+ continue
+ }else {
+ return null
+ }
+ break
+ }
+ };
+ var write_all = function(writer, var_args) {
+ var ss = null;
+ if(goog.isDef(var_args)) {
+ ss = cljs.core.array_seq(Array.prototype.slice.call(arguments, 1), 0)
+ }
+ return write_all__delegate.call(this, writer, ss)
+ };
+ write_all.cljs$lang$maxFixedArity = 1;
+ write_all.cljs$lang$applyTo = function(arglist__3402) {
+ var writer = cljs.core.first(arglist__3402);
+ var ss = cljs.core.rest(arglist__3402);
+ return write_all__delegate(writer, ss)
+ };
+ write_all.cljs$lang$arity$variadic = write_all__delegate;
+ return write_all
+}();
+cljs.core.string_print = function string_print(x) {
+ cljs.core._STAR_print_fn_STAR_.call(null, x);
+ return null
+};
+cljs.core.flush = function flush() {
+ return null
+};
+goog.provide("cljs.core.StringBufferWriter");
+cljs.core.StringBufferWriter = function(sb) {
+ this.sb = sb;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 1073741824
+};
+cljs.core.StringBufferWriter.cljs$lang$type = true;
+cljs.core.StringBufferWriter.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/StringBufferWriter")
+};
+cljs.core.StringBufferWriter.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/StringBufferWriter")
+};
+cljs.core.StringBufferWriter.prototype.cljs$core$IWriter$_write$arity$2 = function(_, s) {
+ var self__ = this;
+ return self__.sb.append(s)
+};
+cljs.core.StringBufferWriter.prototype.cljs$core$IWriter$_flush$arity$1 = function(_) {
+ var self__ = this;
+ return null
+};
+cljs.core.StringBufferWriter;
+cljs.core.pr_seq = function pr_seq(obj, opts) {
+ if(obj == null) {
+ return cljs.core.list.call(null, "nil")
+ }else {
+ if(void 0 === obj) {
+ return cljs.core.list.call(null, "#<undefined>")
+ }else {
+ if("\ufdd0'else") {
+ return cljs.core.concat.call(null, cljs.core.truth_(function() {
+ var and__3822__auto__ = cljs.core._lookup.call(null, opts, "\ufdd0'meta", null);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ var and__3822__auto____$1 = function() {
+ var G__3405 = obj;
+ if(G__3405) {
+ if(function() {
+ var or__3824__auto__ = G__3405.cljs$lang$protocol_mask$partition0$ & 131072;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__3405.cljs$core$IMeta$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__3405.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IMeta, G__3405)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IMeta, G__3405)
+ }
+ }();
+ if(cljs.core.truth_(and__3822__auto____$1)) {
+ return cljs.core.meta.call(null, obj)
+ }else {
+ return and__3822__auto____$1
+ }
+ }else {
+ return and__3822__auto__
+ }
+ }()) ? cljs.core.concat.call(null, cljs.core.PersistentVector.fromArray(["^"], true), pr_seq.call(null, cljs.core.meta.call(null, obj), opts), cljs.core.PersistentVector.fromArray([" "], true)) : null, function() {
+ var and__3822__auto__ = !(obj == null);
+ if(and__3822__auto__) {
+ return obj.cljs$lang$type
+ }else {
+ return and__3822__auto__
+ }
+ }() ? obj.cljs$lang$ctorPrSeq(obj) : function() {
+ var G__3406 = obj;
+ if(G__3406) {
+ if(function() {
+ var or__3824__auto__ = G__3406.cljs$lang$protocol_mask$partition0$ & 536870912;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__3406.cljs$core$IPrintable$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__3406.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IPrintable, G__3406)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IPrintable, G__3406)
+ }
+ }() ? cljs.core._pr_seq.call(null, obj, opts) : cljs.core.truth_(cljs.core.regexp_QMARK_.call(null, obj)) ? cljs.core.list.call(null, '#"', obj.source, '"') : "\ufdd0'else" ? cljs.core.list.call(null, "#<", [cljs.core.str(obj)].join(""), ">") : null)
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.pr_writer = function pr_writer(obj, writer, opts) {
+ if(obj == null) {
+ return cljs.core._write.call(null, writer, "nil")
+ }else {
+ if(void 0 === obj) {
+ return cljs.core._write.call(null, writer, "#<undefined>")
+ }else {
+ if("\ufdd0'else") {
+ if(cljs.core.truth_(function() {
+ var and__3822__auto__ = cljs.core._lookup.call(null, opts, "\ufdd0'meta", null);
+ if(cljs.core.truth_(and__3822__auto__)) {
+ var and__3822__auto____$1 = function() {
+ var G__3410 = obj;
+ if(G__3410) {
+ if(function() {
+ var or__3824__auto__ = G__3410.cljs$lang$protocol_mask$partition0$ & 131072;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__3410.cljs$core$IMeta$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__3410.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IMeta, G__3410)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IMeta, G__3410)
+ }
+ }();
+ if(cljs.core.truth_(and__3822__auto____$1)) {
+ return cljs.core.meta.call(null, obj)
+ }else {
+ return and__3822__auto____$1
+ }
+ }else {
+ return and__3822__auto__
+ }
+ }())) {
+ cljs.core._write.call(null, writer, "^");
+ pr_writer.call(null, cljs.core.meta.call(null, obj), writer, opts);
+ cljs.core._write.call(null, writer, " ")
+ }else {
+ }
+ if(function() {
+ var and__3822__auto__ = !(obj == null);
+ if(and__3822__auto__) {
+ return obj.cljs$lang$type
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return obj.cljs$lang$ctorPrWriter(writer, opts)
+ }else {
+ if(function() {
+ var G__3411 = obj;
+ if(G__3411) {
+ if(function() {
+ var or__3824__auto__ = G__3411.cljs$lang$protocol_mask$partition0$ & 2147483648;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__3411.cljs$core$IPrintWithWriter$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__3411.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IPrintWithWriter, G__3411)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IPrintWithWriter, G__3411)
+ }
+ }()) {
+ return cljs.core._pr_writer.call(null, obj, writer, opts)
+ }else {
+ if(function() {
+ var G__3412 = obj;
+ if(G__3412) {
+ if(function() {
+ var or__3824__auto__ = G__3412.cljs$lang$protocol_mask$partition0$ & 536870912;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return G__3412.cljs$core$IPrintable$
+ }
+ }()) {
+ return true
+ }else {
+ if(!G__3412.cljs$lang$protocol_mask$partition0$) {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IPrintable, G__3412)
+ }else {
+ return false
+ }
+ }
+ }else {
+ return cljs.core.type_satisfies_.call(null, cljs.core.IPrintable, G__3412)
+ }
+ }()) {
+ return cljs.core.apply.call(null, cljs.core.write_all, writer, cljs.core._pr_seq.call(null, obj, opts))
+ }else {
+ if(cljs.core.truth_(cljs.core.regexp_QMARK_.call(null, obj))) {
+ return cljs.core.write_all.call(null, writer, '#"', obj.source, '"')
+ }else {
+ if("\ufdd0'else") {
+ return cljs.core.write_all.call(null, writer, "#<", [cljs.core.str(obj)].join(""), ">")
+ }else {
+ return null
+ }
+ }
+ }
+ }
+ }
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.pr_seq_writer = function pr_seq_writer(objs, writer, opts) {
+ cljs.core.pr_writer.call(null, cljs.core.first.call(null, objs), writer, opts);
+ var G__3414 = cljs.core.seq.call(null, cljs.core.next.call(null, objs));
+ while(true) {
+ if(G__3414) {
+ var obj = cljs.core.first.call(null, G__3414);
+ cljs.core._write.call(null, writer, " ");
+ cljs.core.pr_writer.call(null, obj, writer, opts);
+ var G__3415 = cljs.core.next.call(null, G__3414);
+ G__3414 = G__3415;
+ continue
+ }else {
+ return null
+ }
+ break
+ }
+};
+cljs.core.pr_sb_with_opts = function pr_sb_with_opts(objs, opts) {
+ var sb = new goog.string.StringBuffer;
+ var writer = new cljs.core.StringBufferWriter(sb);
+ cljs.core.pr_seq_writer.call(null, objs, writer, opts);
+ cljs.core._flush.call(null, writer);
+ return sb
+};
+cljs.core.pr_str_with_opts = function pr_str_with_opts(objs, opts) {
+ if(cljs.core.empty_QMARK_.call(null, objs)) {
+ return""
+ }else {
+ return[cljs.core.str(cljs.core.pr_sb_with_opts.call(null, objs, opts))].join("")
+ }
+};
+cljs.core.prn_str_with_opts = function prn_str_with_opts(objs, opts) {
+ if(cljs.core.empty_QMARK_.call(null, objs)) {
+ return"\n"
+ }else {
+ var sb = cljs.core.pr_sb_with_opts.call(null, objs, opts);
+ sb.append("\n");
+ return[cljs.core.str(sb)].join("")
+ }
+};
+cljs.core.pr_with_opts = function pr_with_opts(objs, opts) {
+ return cljs.core.string_print.call(null, cljs.core.pr_str_with_opts.call(null, objs, opts))
+};
+cljs.core.newline = function newline(opts) {
+ cljs.core.string_print.call(null, "\n");
+ if(cljs.core.truth_(cljs.core._lookup.call(null, opts, "\ufdd0'flush-on-newline", null))) {
+ return cljs.core.flush.call(null)
+ }else {
+ return null
+ }
+};
+cljs.core._STAR_flush_on_newline_STAR_ = true;
+cljs.core._STAR_print_readably_STAR_ = true;
+cljs.core._STAR_print_meta_STAR_ = false;
+cljs.core._STAR_print_dup_STAR_ = false;
+cljs.core.pr_opts = function pr_opts() {
+ return cljs.core.ObjMap.fromObject(["\ufdd0'flush-on-newline", "\ufdd0'readably", "\ufdd0'meta", "\ufdd0'dup"], {"\ufdd0'flush-on-newline":cljs.core._STAR_flush_on_newline_STAR_, "\ufdd0'readably":cljs.core._STAR_print_readably_STAR_, "\ufdd0'meta":cljs.core._STAR_print_meta_STAR_, "\ufdd0'dup":cljs.core._STAR_print_dup_STAR_})
+};
+cljs.core.pr_str = function() {
+ var pr_str__delegate = function(objs) {
+ return cljs.core.pr_str_with_opts.call(null, objs, cljs.core.pr_opts.call(null))
+ };
+ var pr_str = function(var_args) {
+ var objs = null;
+ if(goog.isDef(var_args)) {
+ objs = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return pr_str__delegate.call(this, objs)
+ };
+ pr_str.cljs$lang$maxFixedArity = 0;
+ pr_str.cljs$lang$applyTo = function(arglist__3416) {
+ var objs = cljs.core.seq(arglist__3416);
+ return pr_str__delegate(objs)
+ };
+ pr_str.cljs$lang$arity$variadic = pr_str__delegate;
+ return pr_str
+}();
+cljs.core.prn_str = function() {
+ var prn_str__delegate = function(objs) {
+ return cljs.core.prn_str_with_opts.call(null, objs, cljs.core.pr_opts.call(null))
+ };
+ var prn_str = function(var_args) {
+ var objs = null;
+ if(goog.isDef(var_args)) {
+ objs = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return prn_str__delegate.call(this, objs)
+ };
+ prn_str.cljs$lang$maxFixedArity = 0;
+ prn_str.cljs$lang$applyTo = function(arglist__3417) {
+ var objs = cljs.core.seq(arglist__3417);
+ return prn_str__delegate(objs)
+ };
+ prn_str.cljs$lang$arity$variadic = prn_str__delegate;
+ return prn_str
+}();
+cljs.core.pr = function() {
+ var pr__delegate = function(objs) {
+ return cljs.core.pr_with_opts.call(null, objs, cljs.core.pr_opts.call(null))
+ };
+ var pr = function(var_args) {
+ var objs = null;
+ if(goog.isDef(var_args)) {
+ objs = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return pr__delegate.call(this, objs)
+ };
+ pr.cljs$lang$maxFixedArity = 0;
+ pr.cljs$lang$applyTo = function(arglist__3418) {
+ var objs = cljs.core.seq(arglist__3418);
+ return pr__delegate(objs)
+ };
+ pr.cljs$lang$arity$variadic = pr__delegate;
+ return pr
+}();
+cljs.core.print = function() {
+ var cljs_core_print__delegate = function(objs) {
+ return cljs.core.pr_with_opts.call(null, objs, cljs.core.assoc.call(null, cljs.core.pr_opts.call(null), "\ufdd0'readably", false))
+ };
+ var cljs_core_print = function(var_args) {
+ var objs = null;
+ if(goog.isDef(var_args)) {
+ objs = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return cljs_core_print__delegate.call(this, objs)
+ };
+ cljs_core_print.cljs$lang$maxFixedArity = 0;
+ cljs_core_print.cljs$lang$applyTo = function(arglist__3419) {
+ var objs = cljs.core.seq(arglist__3419);
+ return cljs_core_print__delegate(objs)
+ };
+ cljs_core_print.cljs$lang$arity$variadic = cljs_core_print__delegate;
+ return cljs_core_print
+}();
+cljs.core.print_str = function() {
+ var print_str__delegate = function(objs) {
+ return cljs.core.pr_str_with_opts.call(null, objs, cljs.core.assoc.call(null, cljs.core.pr_opts.call(null), "\ufdd0'readably", false))
+ };
+ var print_str = function(var_args) {
+ var objs = null;
+ if(goog.isDef(var_args)) {
+ objs = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return print_str__delegate.call(this, objs)
+ };
+ print_str.cljs$lang$maxFixedArity = 0;
+ print_str.cljs$lang$applyTo = function(arglist__3420) {
+ var objs = cljs.core.seq(arglist__3420);
+ return print_str__delegate(objs)
+ };
+ print_str.cljs$lang$arity$variadic = print_str__delegate;
+ return print_str
+}();
+cljs.core.println = function() {
+ var println__delegate = function(objs) {
+ cljs.core.pr_with_opts.call(null, objs, cljs.core.assoc.call(null, cljs.core.pr_opts.call(null), "\ufdd0'readably", false));
+ return cljs.core.newline.call(null, cljs.core.pr_opts.call(null))
+ };
+ var println = function(var_args) {
+ var objs = null;
+ if(goog.isDef(var_args)) {
+ objs = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return println__delegate.call(this, objs)
+ };
+ println.cljs$lang$maxFixedArity = 0;
+ println.cljs$lang$applyTo = function(arglist__3421) {
+ var objs = cljs.core.seq(arglist__3421);
+ return println__delegate(objs)
+ };
+ println.cljs$lang$arity$variadic = println__delegate;
+ return println
+}();
+cljs.core.println_str = function() {
+ var println_str__delegate = function(objs) {
+ return cljs.core.prn_str_with_opts.call(null, objs, cljs.core.assoc.call(null, cljs.core.pr_opts.call(null), "\ufdd0'readably", false))
+ };
+ var println_str = function(var_args) {
+ var objs = null;
+ if(goog.isDef(var_args)) {
+ objs = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return println_str__delegate.call(this, objs)
+ };
+ println_str.cljs$lang$maxFixedArity = 0;
+ println_str.cljs$lang$applyTo = function(arglist__3422) {
+ var objs = cljs.core.seq(arglist__3422);
+ return println_str__delegate(objs)
+ };
+ println_str.cljs$lang$arity$variadic = println_str__delegate;
+ return println_str
+}();
+cljs.core.prn = function() {
+ var prn__delegate = function(objs) {
+ cljs.core.pr_with_opts.call(null, objs, cljs.core.pr_opts.call(null));
+ return cljs.core.newline.call(null, cljs.core.pr_opts.call(null))
+ };
+ var prn = function(var_args) {
+ var objs = null;
+ if(goog.isDef(var_args)) {
+ objs = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return prn__delegate.call(this, objs)
+ };
+ prn.cljs$lang$maxFixedArity = 0;
+ prn.cljs$lang$applyTo = function(arglist__3423) {
+ var objs = cljs.core.seq(arglist__3423);
+ return prn__delegate(objs)
+ };
+ prn.cljs$lang$arity$variadic = prn__delegate;
+ return prn
+}();
+cljs.core.printf = function() {
+ var printf__delegate = function(fmt, args) {
+ return cljs.core.print.call(null, cljs.core.apply.call(null, cljs.core.format, fmt, args))
+ };
+ var printf = function(fmt, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 1), 0)
+ }
+ return printf__delegate.call(this, fmt, args)
+ };
+ printf.cljs$lang$maxFixedArity = 1;
+ printf.cljs$lang$applyTo = function(arglist__3424) {
+ var fmt = cljs.core.first(arglist__3424);
+ var args = cljs.core.rest(arglist__3424);
+ return printf__delegate(fmt, args)
+ };
+ printf.cljs$lang$arity$variadic = printf__delegate;
+ return printf
+}();
+cljs.core.HashMap.prototype.cljs$core$IPrintable$ = true;
+cljs.core.HashMap.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ var pr_pair = function(keyval) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "", " ", "", opts, keyval)
+ };
+ return cljs.core.pr_sequential.call(null, pr_pair, "{", ", ", "}", opts, coll)
+};
+cljs.core.IPrintable["number"] = true;
+cljs.core._pr_seq["number"] = function(n, opts) {
+ return cljs.core.list.call(null, [cljs.core.str(n)].join(""))
+};
+cljs.core.IndexedSeq.prototype.cljs$core$IPrintable$ = true;
+cljs.core.IndexedSeq.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "(", " ", ")", opts, coll)
+};
+cljs.core.Subvec.prototype.cljs$core$IPrintable$ = true;
+cljs.core.Subvec.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "[", " ", "]", opts, coll)
+};
+cljs.core.ChunkedCons.prototype.cljs$core$IPrintable$ = true;
+cljs.core.ChunkedCons.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "(", " ", ")", opts, coll)
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$IPrintable$ = true;
+cljs.core.PersistentTreeMap.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ var pr_pair = function(keyval) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "", " ", "", opts, keyval)
+ };
+ return cljs.core.pr_sequential.call(null, pr_pair, "{", ", ", "}", opts, coll)
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$IPrintable$ = true;
+cljs.core.PersistentArrayMap.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ var pr_pair = function(keyval) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "", " ", "", opts, keyval)
+ };
+ return cljs.core.pr_sequential.call(null, pr_pair, "{", ", ", "}", opts, coll)
+};
+cljs.core.PersistentQueue.prototype.cljs$core$IPrintable$ = true;
+cljs.core.PersistentQueue.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "#queue [", " ", "]", opts, cljs.core.seq.call(null, coll))
+};
+cljs.core.LazySeq.prototype.cljs$core$IPrintable$ = true;
+cljs.core.LazySeq.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "(", " ", ")", opts, coll)
+};
+cljs.core.RSeq.prototype.cljs$core$IPrintable$ = true;
+cljs.core.RSeq.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "(", " ", ")", opts, coll)
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$IPrintable$ = true;
+cljs.core.PersistentTreeSet.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "#{", " ", "}", opts, coll)
+};
+cljs.core.IPrintable["boolean"] = true;
+cljs.core._pr_seq["boolean"] = function(bool, opts) {
+ return cljs.core.list.call(null, [cljs.core.str(bool)].join(""))
+};
+cljs.core.IPrintable["string"] = true;
+cljs.core._pr_seq["string"] = function(obj, opts) {
+ if(cljs.core.keyword_QMARK_.call(null, obj)) {
+ return cljs.core.list.call(null, [cljs.core.str(":"), cljs.core.str(function() {
+ var temp__3974__auto__ = cljs.core.namespace.call(null, obj);
+ if(cljs.core.truth_(temp__3974__auto__)) {
+ var nspc = temp__3974__auto__;
+ return[cljs.core.str(nspc), cljs.core.str("/")].join("")
+ }else {
+ return null
+ }
+ }()), cljs.core.str(cljs.core.name.call(null, obj))].join(""))
+ }else {
+ if(cljs.core.symbol_QMARK_.call(null, obj)) {
+ return cljs.core.list.call(null, [cljs.core.str(function() {
+ var temp__3974__auto__ = cljs.core.namespace.call(null, obj);
+ if(cljs.core.truth_(temp__3974__auto__)) {
+ var nspc = temp__3974__auto__;
+ return[cljs.core.str(nspc), cljs.core.str("/")].join("")
+ }else {
+ return null
+ }
+ }()), cljs.core.str(cljs.core.name.call(null, obj))].join(""))
+ }else {
+ if("\ufdd0'else") {
+ return cljs.core.list.call(null, cljs.core.truth_((new cljs.core.Keyword("\ufdd0'readably")).call(null, opts)) ? goog.string.quote(obj) : obj)
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.NodeSeq.prototype.cljs$core$IPrintable$ = true;
+cljs.core.NodeSeq.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "(", " ", ")", opts, coll)
+};
+cljs.core.RedNode.prototype.cljs$core$IPrintable$ = true;
+cljs.core.RedNode.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "[", " ", "]", opts, coll)
+};
+cljs.core.ChunkedSeq.prototype.cljs$core$IPrintable$ = true;
+cljs.core.ChunkedSeq.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "(", " ", ")", opts, coll)
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$IPrintable$ = true;
+cljs.core.PersistentHashMap.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ var pr_pair = function(keyval) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "", " ", "", opts, keyval)
+ };
+ return cljs.core.pr_sequential.call(null, pr_pair, "{", ", ", "}", opts, coll)
+};
+cljs.core.Vector.prototype.cljs$core$IPrintable$ = true;
+cljs.core.Vector.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "[", " ", "]", opts, coll)
+};
+cljs.core.PersistentHashSet.prototype.cljs$core$IPrintable$ = true;
+cljs.core.PersistentHashSet.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "#{", " ", "}", opts, coll)
+};
+cljs.core.PersistentVector.prototype.cljs$core$IPrintable$ = true;
+cljs.core.PersistentVector.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "[", " ", "]", opts, coll)
+};
+cljs.core.List.prototype.cljs$core$IPrintable$ = true;
+cljs.core.List.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "(", " ", ")", opts, coll)
+};
+cljs.core.IPrintable["array"] = true;
+cljs.core._pr_seq["array"] = function(a, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "#<Array [", ", ", "]>", opts, a)
+};
+cljs.core.IPrintable["function"] = true;
+cljs.core._pr_seq["function"] = function(this$) {
+ return cljs.core.list.call(null, "#<", [cljs.core.str(this$)].join(""), ">")
+};
+cljs.core.EmptyList.prototype.cljs$core$IPrintable$ = true;
+cljs.core.EmptyList.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.list.call(null, "()")
+};
+cljs.core.BlackNode.prototype.cljs$core$IPrintable$ = true;
+cljs.core.BlackNode.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "[", " ", "]", opts, coll)
+};
+Date.prototype.cljs$core$IPrintable$ = true;
+Date.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(d, _) {
+ var normalize = function(n, len) {
+ var ns = [cljs.core.str(n)].join("");
+ while(true) {
+ if(cljs.core.count.call(null, ns) < len) {
+ var G__3425 = [cljs.core.str("0"), cljs.core.str(ns)].join("");
+ ns = G__3425;
+ continue
+ }else {
+ return ns
+ }
+ break
+ }
+ };
+ return cljs.core.list.call(null, [cljs.core.str('#inst "'), cljs.core.str(d.getUTCFullYear()), cljs.core.str("-"), cljs.core.str(normalize.call(null, d.getUTCMonth() + 1, 2)), cljs.core.str("-"), cljs.core.str(normalize.call(null, d.getUTCDate(), 2)), cljs.core.str("T"), cljs.core.str(normalize.call(null, d.getUTCHours(), 2)), cljs.core.str(":"), cljs.core.str(normalize.call(null, d.getUTCMinutes(), 2)), cljs.core.str(":"), cljs.core.str(normalize.call(null, d.getUTCSeconds(), 2)), cljs.core.str("."),
+ cljs.core.str(normalize.call(null, d.getUTCMilliseconds(), 3)), cljs.core.str("-"), cljs.core.str('00:00"')].join(""))
+};
+cljs.core.Cons.prototype.cljs$core$IPrintable$ = true;
+cljs.core.Cons.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "(", " ", ")", opts, coll)
+};
+cljs.core.Range.prototype.cljs$core$IPrintable$ = true;
+cljs.core.Range.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "(", " ", ")", opts, coll)
+};
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IPrintable$ = true;
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "(", " ", ")", opts, coll)
+};
+cljs.core.ObjMap.prototype.cljs$core$IPrintable$ = true;
+cljs.core.ObjMap.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ var pr_pair = function(keyval) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "", " ", "", opts, keyval)
+ };
+ return cljs.core.pr_sequential.call(null, pr_pair, "{", ", ", "}", opts, coll)
+};
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IPrintable$ = true;
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(coll, opts) {
+ return cljs.core.pr_sequential.call(null, cljs.core.pr_seq, "(", " ", ")", opts, coll)
+};
+cljs.core.HashMap.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.HashMap.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ var pr_pair = function(keyval) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "", " ", "", opts, keyval)
+ };
+ return cljs.core.pr_sequential_writer.call(null, writer, pr_pair, "{", ", ", "}", opts, coll)
+};
+cljs.core.IPrintWithWriter["number"] = true;
+cljs.core._pr_writer["number"] = function(n, writer, opts) {
+ 1 / 0;
+ return cljs.core._write.call(null, writer, [cljs.core.str(n)].join(""))
+};
+cljs.core.IndexedSeq.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.IndexedSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "(", " ", ")", opts, coll)
+};
+cljs.core.Subvec.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.Subvec.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "[", " ", "]", opts, coll)
+};
+cljs.core.ChunkedCons.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.ChunkedCons.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "(", " ", ")", opts, coll)
+};
+cljs.core.PersistentTreeMap.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.PersistentTreeMap.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ var pr_pair = function(keyval) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "", " ", "", opts, keyval)
+ };
+ return cljs.core.pr_sequential_writer.call(null, writer, pr_pair, "{", ", ", "}", opts, coll)
+};
+cljs.core.PersistentArrayMap.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.PersistentArrayMap.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ var pr_pair = function(keyval) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "", " ", "", opts, keyval)
+ };
+ return cljs.core.pr_sequential_writer.call(null, writer, pr_pair, "{", ", ", "}", opts, coll)
+};
+cljs.core.PersistentQueue.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.PersistentQueue.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "#queue [", " ", "]", opts, cljs.core.seq.call(null, coll))
+};
+cljs.core.LazySeq.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.LazySeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "(", " ", ")", opts, coll)
+};
+cljs.core.RSeq.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.RSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "(", " ", ")", opts, coll)
+};
+cljs.core.PersistentTreeSet.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.PersistentTreeSet.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "#{", " ", "}", opts, coll)
+};
+cljs.core.IPrintWithWriter["boolean"] = true;
+cljs.core._pr_writer["boolean"] = function(bool, writer, opts) {
+ return cljs.core._write.call(null, writer, [cljs.core.str(bool)].join(""))
+};
+cljs.core.IPrintWithWriter["string"] = true;
+cljs.core._pr_writer["string"] = function(obj, writer, opts) {
+ if(cljs.core.keyword_QMARK_.call(null, obj)) {
+ cljs.core._write.call(null, writer, ":");
+ var temp__3974__auto__ = cljs.core.namespace.call(null, obj);
+ if(cljs.core.truth_(temp__3974__auto__)) {
+ var nspc = temp__3974__auto__;
+ cljs.core.write_all.call(null, writer, [cljs.core.str(nspc)].join(""), "/")
+ }else {
+ }
+ return cljs.core._write.call(null, writer, cljs.core.name.call(null, obj))
+ }else {
+ if(cljs.core.symbol_QMARK_.call(null, obj)) {
+ var temp__3974__auto__ = cljs.core.namespace.call(null, obj);
+ if(cljs.core.truth_(temp__3974__auto__)) {
+ var nspc = temp__3974__auto__;
+ cljs.core.write_all.call(null, writer, [cljs.core.str(nspc)].join(""), "/")
+ }else {
+ }
+ return cljs.core._write.call(null, writer, cljs.core.name.call(null, obj))
+ }else {
+ if("\ufdd0'else") {
+ if(cljs.core.truth_((new cljs.core.Keyword("\ufdd0'readably")).call(null, opts))) {
+ return cljs.core._write.call(null, writer, goog.string.quote(obj))
+ }else {
+ return cljs.core._write.call(null, writer, obj)
+ }
+ }else {
+ return null
+ }
+ }
+ }
+};
+cljs.core.NodeSeq.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.NodeSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "(", " ", ")", opts, coll)
+};
+cljs.core.RedNode.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.RedNode.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "[", " ", "]", opts, coll)
+};
+cljs.core.ChunkedSeq.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.ChunkedSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "(", " ", ")", opts, coll)
+};
+cljs.core.PersistentHashMap.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.PersistentHashMap.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ var pr_pair = function(keyval) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "", " ", "", opts, keyval)
+ };
+ return cljs.core.pr_sequential_writer.call(null, writer, pr_pair, "{", ", ", "}", opts, coll)
+};
+cljs.core.Vector.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.Vector.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "[", " ", "]", opts, coll)
+};
+cljs.core.PersistentHashSet.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.PersistentHashSet.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "#{", " ", "}", opts, coll)
+};
+cljs.core.PersistentVector.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.PersistentVector.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "[", " ", "]", opts, coll)
+};
+cljs.core.List.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.List.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "(", " ", ")", opts, coll)
+};
+cljs.core.IPrintWithWriter["array"] = true;
+cljs.core._pr_writer["array"] = function(a, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "#<Array [", ", ", "]>", opts, a)
+};
+cljs.core.IPrintWithWriter["function"] = true;
+cljs.core._pr_writer["function"] = function(this$, writer, _) {
+ return cljs.core.write_all.call(null, writer, "#<", [cljs.core.str(this$)].join(""), ">")
+};
+cljs.core.EmptyList.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.EmptyList.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core._write.call(null, writer, "()")
+};
+cljs.core.BlackNode.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.BlackNode.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "[", " ", "]", opts, coll)
+};
+Date.prototype.cljs$core$IPrintWithWriter$ = true;
+Date.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(d, writer, _) {
+ var normalize = function(n, len) {
+ var ns = [cljs.core.str(n)].join("");
+ while(true) {
+ if(cljs.core.count.call(null, ns) < len) {
+ var G__3426 = [cljs.core.str("0"), cljs.core.str(ns)].join("");
+ ns = G__3426;
+ continue
+ }else {
+ return ns
+ }
+ break
+ }
+ };
+ return cljs.core.write_all.call(null, writer, '#inst "', [cljs.core.str(d.getUTCFullYear())].join(""), "-", normalize.call(null, d.getUTCMonth() + 1, 2), "-", normalize.call(null, d.getUTCDate(), 2), "T", normalize.call(null, d.getUTCHours(), 2), ":", normalize.call(null, d.getUTCMinutes(), 2), ":", normalize.call(null, d.getUTCSeconds(), 2), ".", normalize.call(null, d.getUTCMilliseconds(), 3), "-", '00:00"')
+};
+cljs.core.Cons.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.Cons.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "(", " ", ")", opts, coll)
+};
+cljs.core.Range.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.Range.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "(", " ", ")", opts, coll)
+};
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.ArrayNodeSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "(", " ", ")", opts, coll)
+};
+cljs.core.ObjMap.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.ObjMap.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ var pr_pair = function(keyval) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "", " ", "", opts, keyval)
+ };
+ return cljs.core.pr_sequential_writer.call(null, writer, pr_pair, "{", ", ", "}", opts, coll)
+};
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IPrintWithWriter$ = true;
+cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(coll, writer, opts) {
+ return cljs.core.pr_sequential_writer.call(null, writer, cljs.core.pr_writer, "(", " ", ")", opts, coll)
+};
+cljs.core.PersistentVector.prototype.cljs$core$IComparable$ = true;
+cljs.core.PersistentVector.prototype.cljs$core$IComparable$_compare$arity$2 = function(x, y) {
+ return cljs.core.compare_indexed.call(null, x, y)
+};
+goog.provide("cljs.core.Atom");
+cljs.core.Atom = function(state, meta, validator, watches) {
+ this.state = state;
+ this.meta = meta;
+ this.validator = validator;
+ this.watches = watches;
+ this.cljs$lang$protocol_mask$partition0$ = 2690809856;
+ this.cljs$lang$protocol_mask$partition1$ = 2
+};
+cljs.core.Atom.cljs$lang$type = true;
+cljs.core.Atom.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/Atom")
+};
+cljs.core.Atom.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/Atom")
+};
+cljs.core.Atom.prototype.cljs$core$IHash$_hash$arity$1 = function(this$) {
+ var self__ = this;
+ return goog.getUid(this$)
+};
+cljs.core.Atom.prototype.cljs$core$IWatchable$_notify_watches$arity$3 = function(this$, oldval, newval) {
+ var self__ = this;
+ var G__3427 = cljs.core.seq.call(null, self__.watches);
+ while(true) {
+ if(G__3427) {
+ var vec__3428 = cljs.core.first.call(null, G__3427);
+ var key = cljs.core.nth.call(null, vec__3428, 0, null);
+ var f = cljs.core.nth.call(null, vec__3428, 1, null);
+ f.call(null, key, this$, oldval, newval);
+ var G__3429 = cljs.core.next.call(null, G__3427);
+ G__3427 = G__3429;
+ continue
+ }else {
+ return null
+ }
+ break
+ }
+};
+cljs.core.Atom.prototype.cljs$core$IWatchable$_add_watch$arity$3 = function(this$, key, f) {
+ var self__ = this;
+ return this$.watches = cljs.core.assoc.call(null, self__.watches, key, f)
+};
+cljs.core.Atom.prototype.cljs$core$IWatchable$_remove_watch$arity$2 = function(this$, key) {
+ var self__ = this;
+ return this$.watches = cljs.core.dissoc.call(null, self__.watches, key)
+};
+cljs.core.Atom.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(a, writer, opts) {
+ var self__ = this;
+ cljs.core._write.call(null, writer, "#<Atom: ");
+ cljs.core._pr_writer.call(null, self__.state, writer, opts);
+ return cljs.core._write.call(null, writer, ">")
+};
+cljs.core.Atom.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(a, opts) {
+ var self__ = this;
+ return cljs.core.concat.call(null, cljs.core.PersistentVector.fromArray(["#<Atom: "], true), cljs.core._pr_seq.call(null, self__.state, opts), ">")
+};
+cljs.core.Atom.prototype.cljs$core$IMeta$_meta$arity$1 = function(_) {
+ var self__ = this;
+ return self__.meta
+};
+cljs.core.Atom.prototype.cljs$core$IDeref$_deref$arity$1 = function(_) {
+ var self__ = this;
+ return self__.state
+};
+cljs.core.Atom.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(o, other) {
+ var self__ = this;
+ return o === other
+};
+cljs.core.Atom;
+cljs.core.atom = function() {
+ var atom = null;
+ var atom__1 = function(x) {
+ return new cljs.core.Atom(x, null, null, null)
+ };
+ var atom__2 = function() {
+ var G__3433__delegate = function(x, p__3430) {
+ var map__3432 = p__3430;
+ var map__3432__$1 = cljs.core.seq_QMARK_.call(null, map__3432) ? cljs.core.apply.call(null, cljs.core.hash_map, map__3432) : map__3432;
+ var validator = cljs.core._lookup.call(null, map__3432__$1, "\ufdd0'validator", null);
+ var meta = cljs.core._lookup.call(null, map__3432__$1, "\ufdd0'meta", null);
+ return new cljs.core.Atom(x, meta, validator, null)
+ };
+ var G__3433 = function(x, var_args) {
+ var p__3430 = null;
+ if(goog.isDef(var_args)) {
+ p__3430 = cljs.core.array_seq(Array.prototype.slice.call(arguments, 1), 0)
+ }
+ return G__3433__delegate.call(this, x, p__3430)
+ };
+ G__3433.cljs$lang$maxFixedArity = 1;
+ G__3433.cljs$lang$applyTo = function(arglist__3434) {
+ var x = cljs.core.first(arglist__3434);
+ var p__3430 = cljs.core.rest(arglist__3434);
+ return G__3433__delegate(x, p__3430)
+ };
+ G__3433.cljs$lang$arity$variadic = G__3433__delegate;
+ return G__3433
+ }();
+ atom = function(x, var_args) {
+ var p__3430 = var_args;
+ switch(arguments.length) {
+ case 1:
+ return atom__1.call(this, x);
+ default:
+ return atom__2.cljs$lang$arity$variadic(x, cljs.core.array_seq(arguments, 1))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ atom.cljs$lang$maxFixedArity = 1;
+ atom.cljs$lang$applyTo = atom__2.cljs$lang$applyTo;
+ atom.cljs$lang$arity$1 = atom__1;
+ atom.cljs$lang$arity$variadic = atom__2.cljs$lang$arity$variadic;
+ return atom
+}();
+cljs.core.reset_BANG_ = function reset_BANG_(a, new_value) {
+ var temp__3974__auto__ = a.validator;
+ if(cljs.core.truth_(temp__3974__auto__)) {
+ var validate = temp__3974__auto__;
+ if(cljs.core.truth_(validate.call(null, new_value))) {
+ }else {
+ throw new Error([cljs.core.str("Assert failed: "), cljs.core.str("Validator rejected reference state"), cljs.core.str("\n"), cljs.core.str(cljs.core.pr_str.call(null, cljs.core.with_meta(cljs.core.list("\ufdd1'validate", "\ufdd1'new-value"), cljs.core.hash_map("\ufdd0'line", 6685))))].join(""));
+ }
+ }else {
+ }
+ var old_value = a.state;
+ a.state = new_value;
+ cljs.core._notify_watches.call(null, a, old_value, new_value);
+ return new_value
+};
+cljs.core.swap_BANG_ = function() {
+ var swap_BANG_ = null;
+ var swap_BANG___2 = function(a, f) {
+ return cljs.core.reset_BANG_.call(null, a, f.call(null, a.state))
+ };
+ var swap_BANG___3 = function(a, f, x) {
+ return cljs.core.reset_BANG_.call(null, a, f.call(null, a.state, x))
+ };
+ var swap_BANG___4 = function(a, f, x, y) {
+ return cljs.core.reset_BANG_.call(null, a, f.call(null, a.state, x, y))
+ };
+ var swap_BANG___5 = function(a, f, x, y, z) {
+ return cljs.core.reset_BANG_.call(null, a, f.call(null, a.state, x, y, z))
+ };
+ var swap_BANG___6 = function() {
+ var G__3435__delegate = function(a, f, x, y, z, more) {
+ return cljs.core.reset_BANG_.call(null, a, cljs.core.apply.call(null, f, a.state, x, y, z, more))
+ };
+ var G__3435 = function(a, f, x, y, z, var_args) {
+ var more = null;
+ if(goog.isDef(var_args)) {
+ more = cljs.core.array_seq(Array.prototype.slice.call(arguments, 5), 0)
+ }
+ return G__3435__delegate.call(this, a, f, x, y, z, more)
+ };
+ G__3435.cljs$lang$maxFixedArity = 5;
+ G__3435.cljs$lang$applyTo = function(arglist__3436) {
+ var a = cljs.core.first(arglist__3436);
+ var f = cljs.core.first(cljs.core.next(arglist__3436));
+ var x = cljs.core.first(cljs.core.next(cljs.core.next(arglist__3436)));
+ var y = cljs.core.first(cljs.core.next(cljs.core.next(cljs.core.next(arglist__3436))));
+ var z = cljs.core.first(cljs.core.next(cljs.core.next(cljs.core.next(cljs.core.next(arglist__3436)))));
+ var more = cljs.core.rest(cljs.core.next(cljs.core.next(cljs.core.next(cljs.core.next(arglist__3436)))));
+ return G__3435__delegate(a, f, x, y, z, more)
+ };
+ G__3435.cljs$lang$arity$variadic = G__3435__delegate;
+ return G__3435
+ }();
+ swap_BANG_ = function(a, f, x, y, z, var_args) {
+ var more = var_args;
+ switch(arguments.length) {
+ case 2:
+ return swap_BANG___2.call(this, a, f);
+ case 3:
+ return swap_BANG___3.call(this, a, f, x);
+ case 4:
+ return swap_BANG___4.call(this, a, f, x, y);
+ case 5:
+ return swap_BANG___5.call(this, a, f, x, y, z);
+ default:
+ return swap_BANG___6.cljs$lang$arity$variadic(a, f, x, y, z, cljs.core.array_seq(arguments, 5))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ swap_BANG_.cljs$lang$maxFixedArity = 5;
+ swap_BANG_.cljs$lang$applyTo = swap_BANG___6.cljs$lang$applyTo;
+ swap_BANG_.cljs$lang$arity$2 = swap_BANG___2;
+ swap_BANG_.cljs$lang$arity$3 = swap_BANG___3;
+ swap_BANG_.cljs$lang$arity$4 = swap_BANG___4;
+ swap_BANG_.cljs$lang$arity$5 = swap_BANG___5;
+ swap_BANG_.cljs$lang$arity$variadic = swap_BANG___6.cljs$lang$arity$variadic;
+ return swap_BANG_
+}();
+cljs.core.compare_and_set_BANG_ = function compare_and_set_BANG_(a, oldval, newval) {
+ if(cljs.core._EQ_.call(null, a.state, oldval)) {
+ cljs.core.reset_BANG_.call(null, a, newval);
+ return true
+ }else {
+ return false
+ }
+};
+cljs.core.deref = function deref(o) {
+ return cljs.core._deref.call(null, o)
+};
+cljs.core.set_validator_BANG_ = function set_validator_BANG_(iref, val) {
+ return iref.validator = val
+};
+cljs.core.get_validator = function get_validator(iref) {
+ return iref.validator
+};
+cljs.core.alter_meta_BANG_ = function() {
+ var alter_meta_BANG___delegate = function(iref, f, args) {
+ return iref.meta = cljs.core.apply.call(null, f, iref.meta, args)
+ };
+ var alter_meta_BANG_ = function(iref, f, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 2), 0)
+ }
+ return alter_meta_BANG___delegate.call(this, iref, f, args)
+ };
+ alter_meta_BANG_.cljs$lang$maxFixedArity = 2;
+ alter_meta_BANG_.cljs$lang$applyTo = function(arglist__3437) {
+ var iref = cljs.core.first(arglist__3437);
+ var f = cljs.core.first(cljs.core.next(arglist__3437));
+ var args = cljs.core.rest(cljs.core.next(arglist__3437));
+ return alter_meta_BANG___delegate(iref, f, args)
+ };
+ alter_meta_BANG_.cljs$lang$arity$variadic = alter_meta_BANG___delegate;
+ return alter_meta_BANG_
+}();
+cljs.core.reset_meta_BANG_ = function reset_meta_BANG_(iref, m) {
+ return iref.meta = m
+};
+cljs.core.add_watch = function add_watch(iref, key, f) {
+ return cljs.core._add_watch.call(null, iref, key, f)
+};
+cljs.core.remove_watch = function remove_watch(iref, key) {
+ return cljs.core._remove_watch.call(null, iref, key)
+};
+cljs.core.gensym_counter = null;
+cljs.core.gensym = function() {
+ var gensym = null;
+ var gensym__0 = function() {
+ return gensym.call(null, "G__")
+ };
+ var gensym__1 = function(prefix_string) {
+ if(cljs.core.gensym_counter == null) {
+ cljs.core.gensym_counter = cljs.core.atom.call(null, 0)
+ }else {
+ }
+ return cljs.core.symbol.call(null, [cljs.core.str(prefix_string), cljs.core.str(cljs.core.swap_BANG_.call(null, cljs.core.gensym_counter, cljs.core.inc))].join(""))
+ };
+ gensym = function(prefix_string) {
+ switch(arguments.length) {
+ case 0:
+ return gensym__0.call(this);
+ case 1:
+ return gensym__1.call(this, prefix_string)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ gensym.cljs$lang$arity$0 = gensym__0;
+ gensym.cljs$lang$arity$1 = gensym__1;
+ return gensym
+}();
+cljs.core.fixture1 = 1;
+cljs.core.fixture2 = 2;
+goog.provide("cljs.core.Delay");
+cljs.core.Delay = function(state, f) {
+ this.state = state;
+ this.f = f;
+ this.cljs$lang$protocol_mask$partition1$ = 1;
+ this.cljs$lang$protocol_mask$partition0$ = 32768
+};
+cljs.core.Delay.cljs$lang$type = true;
+cljs.core.Delay.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/Delay")
+};
+cljs.core.Delay.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/Delay")
+};
+cljs.core.Delay.prototype.cljs$core$IPending$_realized_QMARK_$arity$1 = function(d) {
+ var self__ = this;
+ return(new cljs.core.Keyword("\ufdd0'done")).call(null, cljs.core.deref.call(null, self__.state))
+};
+cljs.core.Delay.prototype.cljs$core$IDeref$_deref$arity$1 = function(_) {
+ var self__ = this;
+ return(new cljs.core.Keyword("\ufdd0'value")).call(null, cljs.core.swap_BANG_.call(null, self__.state, function(p__3438) {
+ var map__3439 = p__3438;
+ var map__3439__$1 = cljs.core.seq_QMARK_.call(null, map__3439) ? cljs.core.apply.call(null, cljs.core.hash_map, map__3439) : map__3439;
+ var curr_state = map__3439__$1;
+ var done = cljs.core._lookup.call(null, map__3439__$1, "\ufdd0'done", null);
+ if(cljs.core.truth_(done)) {
+ return curr_state
+ }else {
+ return cljs.core.ObjMap.fromObject(["\ufdd0'done", "\ufdd0'value"], {"\ufdd0'done":true, "\ufdd0'value":self__.f.call(null)})
+ }
+ }))
+};
+cljs.core.Delay;
+cljs.core.delay_QMARK_ = function delay_QMARK_(x) {
+ return cljs.core.instance_QMARK_.call(null, cljs.core.Delay, x)
+};
+cljs.core.force = function force(x) {
+ if(cljs.core.delay_QMARK_.call(null, x)) {
+ return cljs.core.deref.call(null, x)
+ }else {
+ return x
+ }
+};
+cljs.core.realized_QMARK_ = function realized_QMARK_(d) {
+ return cljs.core._realized_QMARK_.call(null, d)
+};
+cljs.core.js__GT_clj = function() {
+ var js__GT_clj__delegate = function(x, options) {
+ var map__3445 = options;
+ var map__3445__$1 = cljs.core.seq_QMARK_.call(null, map__3445) ? cljs.core.apply.call(null, cljs.core.hash_map, map__3445) : map__3445;
+ var keywordize_keys = cljs.core._lookup.call(null, map__3445__$1, "\ufdd0'keywordize-keys", null);
+ var keyfn = cljs.core.truth_(keywordize_keys) ? cljs.core.keyword : cljs.core.str;
+ var f = function thisfn(x__$1) {
+ if(cljs.core.seq_QMARK_.call(null, x__$1)) {
+ return cljs.core.doall.call(null, cljs.core.map.call(null, thisfn, x__$1))
+ }else {
+ if(cljs.core.coll_QMARK_.call(null, x__$1)) {
+ return cljs.core.into.call(null, cljs.core.empty.call(null, x__$1), cljs.core.map.call(null, thisfn, x__$1))
+ }else {
+ if(cljs.core.truth_(goog.isArray(x__$1))) {
+ return cljs.core.vec.call(null, cljs.core.map.call(null, thisfn, x__$1))
+ }else {
+ if(cljs.core.type.call(null, x__$1) === Object) {
+ return cljs.core.into.call(null, cljs.core.ObjMap.EMPTY, function() {
+ var iter__2470__auto__ = function iter__3448(s__3449) {
+ return new cljs.core.LazySeq(null, false, function() {
+ var s__3449__$1 = s__3449;
+ while(true) {
+ if(cljs.core.seq.call(null, s__3449__$1)) {
+ var k = cljs.core.first.call(null, s__3449__$1);
+ return cljs.core.cons.call(null, cljs.core.PersistentVector.fromArray([keyfn.call(null, k), thisfn.call(null, x__$1[k])], true), iter__3448.call(null, cljs.core.rest.call(null, s__3449__$1)))
+ }else {
+ return null
+ }
+ break
+ }
+ }, null)
+ };
+ return iter__2470__auto__.call(null, cljs.core.js_keys.call(null, x__$1))
+ }())
+ }else {
+ if("\ufdd0'else") {
+ return x__$1
+ }else {
+ return null
+ }
+ }
+ }
+ }
+ }
+ };
+ return f.call(null, x)
+ };
+ var js__GT_clj = function(x, var_args) {
+ var options = null;
+ if(goog.isDef(var_args)) {
+ options = cljs.core.array_seq(Array.prototype.slice.call(arguments, 1), 0)
+ }
+ return js__GT_clj__delegate.call(this, x, options)
+ };
+ js__GT_clj.cljs$lang$maxFixedArity = 1;
+ js__GT_clj.cljs$lang$applyTo = function(arglist__3450) {
+ var x = cljs.core.first(arglist__3450);
+ var options = cljs.core.rest(arglist__3450);
+ return js__GT_clj__delegate(x, options)
+ };
+ js__GT_clj.cljs$lang$arity$variadic = js__GT_clj__delegate;
+ return js__GT_clj
+}();
+cljs.core.memoize = function memoize(f) {
+ var mem = cljs.core.atom.call(null, cljs.core.ObjMap.EMPTY);
+ return function() {
+ var G__3451__delegate = function(args) {
+ var temp__3971__auto__ = cljs.core._lookup.call(null, cljs.core.deref.call(null, mem), args, null);
+ if(cljs.core.truth_(temp__3971__auto__)) {
+ var v = temp__3971__auto__;
+ return v
+ }else {
+ var ret = cljs.core.apply.call(null, f, args);
+ cljs.core.swap_BANG_.call(null, mem, cljs.core.assoc, args, ret);
+ return ret
+ }
+ };
+ var G__3451 = function(var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return G__3451__delegate.call(this, args)
+ };
+ G__3451.cljs$lang$maxFixedArity = 0;
+ G__3451.cljs$lang$applyTo = function(arglist__3452) {
+ var args = cljs.core.seq(arglist__3452);
+ return G__3451__delegate(args)
+ };
+ G__3451.cljs$lang$arity$variadic = G__3451__delegate;
+ return G__3451
+ }()
+};
+cljs.core.trampoline = function() {
+ var trampoline = null;
+ var trampoline__1 = function(f) {
+ while(true) {
+ var ret = f.call(null);
+ if(cljs.core.fn_QMARK_.call(null, ret)) {
+ var G__3453 = ret;
+ f = G__3453;
+ continue
+ }else {
+ return ret
+ }
+ break
+ }
+ };
+ var trampoline__2 = function() {
+ var G__3454__delegate = function(f, args) {
+ return trampoline.call(null, function() {
+ return cljs.core.apply.call(null, f, args)
+ })
+ };
+ var G__3454 = function(f, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 1), 0)
+ }
+ return G__3454__delegate.call(this, f, args)
+ };
+ G__3454.cljs$lang$maxFixedArity = 1;
+ G__3454.cljs$lang$applyTo = function(arglist__3455) {
+ var f = cljs.core.first(arglist__3455);
+ var args = cljs.core.rest(arglist__3455);
+ return G__3454__delegate(f, args)
+ };
+ G__3454.cljs$lang$arity$variadic = G__3454__delegate;
+ return G__3454
+ }();
+ trampoline = function(f, var_args) {
+ var args = var_args;
+ switch(arguments.length) {
+ case 1:
+ return trampoline__1.call(this, f);
+ default:
+ return trampoline__2.cljs$lang$arity$variadic(f, cljs.core.array_seq(arguments, 1))
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ trampoline.cljs$lang$maxFixedArity = 1;
+ trampoline.cljs$lang$applyTo = trampoline__2.cljs$lang$applyTo;
+ trampoline.cljs$lang$arity$1 = trampoline__1;
+ trampoline.cljs$lang$arity$variadic = trampoline__2.cljs$lang$arity$variadic;
+ return trampoline
+}();
+cljs.core.rand = function() {
+ var rand = null;
+ var rand__0 = function() {
+ return rand.call(null, 1)
+ };
+ var rand__1 = function(n) {
+ return Math.random.call(null) * n
+ };
+ rand = function(n) {
+ switch(arguments.length) {
+ case 0:
+ return rand__0.call(this);
+ case 1:
+ return rand__1.call(this, n)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ rand.cljs$lang$arity$0 = rand__0;
+ rand.cljs$lang$arity$1 = rand__1;
+ return rand
+}();
+cljs.core.rand_int = function rand_int(n) {
+ return Math.floor.call(null, Math.random.call(null) * n)
+};
+cljs.core.rand_nth = function rand_nth(coll) {
+ return cljs.core.nth.call(null, coll, cljs.core.rand_int.call(null, cljs.core.count.call(null, coll)))
+};
+cljs.core.group_by = function group_by(f, coll) {
+ return cljs.core.reduce.call(null, function(ret, x) {
+ var k = f.call(null, x);
+ return cljs.core.assoc.call(null, ret, k, cljs.core.conj.call(null, cljs.core._lookup.call(null, ret, k, cljs.core.PersistentVector.EMPTY), x))
+ }, cljs.core.ObjMap.EMPTY, coll)
+};
+cljs.core.make_hierarchy = function make_hierarchy() {
+ return cljs.core.ObjMap.fromObject(["\ufdd0'parents", "\ufdd0'descendants", "\ufdd0'ancestors"], {"\ufdd0'parents":cljs.core.ObjMap.EMPTY, "\ufdd0'descendants":cljs.core.ObjMap.EMPTY, "\ufdd0'ancestors":cljs.core.ObjMap.EMPTY})
+};
+cljs.core.global_hierarchy = cljs.core.atom.call(null, cljs.core.make_hierarchy.call(null));
+cljs.core.isa_QMARK_ = function() {
+ var isa_QMARK_ = null;
+ var isa_QMARK___2 = function(child, parent) {
+ return isa_QMARK_.call(null, cljs.core.deref.call(null, cljs.core.global_hierarchy), child, parent)
+ };
+ var isa_QMARK___3 = function(h, child, parent) {
+ var or__3824__auto__ = cljs.core._EQ_.call(null, child, parent);
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core.contains_QMARK_.call(null, (new cljs.core.Keyword("\ufdd0'ancestors")).call(null, h).call(null, child), parent);
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ var and__3822__auto__ = cljs.core.vector_QMARK_.call(null, parent);
+ if(and__3822__auto__) {
+ var and__3822__auto____$1 = cljs.core.vector_QMARK_.call(null, child);
+ if(and__3822__auto____$1) {
+ var and__3822__auto____$2 = cljs.core.count.call(null, parent) === cljs.core.count.call(null, child);
+ if(and__3822__auto____$2) {
+ var ret = true;
+ var i = 0;
+ while(true) {
+ if(function() {
+ var or__3824__auto____$2 = cljs.core.not.call(null, ret);
+ if(or__3824__auto____$2) {
+ return or__3824__auto____$2
+ }else {
+ return i === cljs.core.count.call(null, parent)
+ }
+ }()) {
+ return ret
+ }else {
+ var G__3456 = isa_QMARK_.call(null, h, child.call(null, i), parent.call(null, i));
+ var G__3457 = i + 1;
+ ret = G__3456;
+ i = G__3457;
+ continue
+ }
+ break
+ }
+ }else {
+ return and__3822__auto____$2
+ }
+ }else {
+ return and__3822__auto____$1
+ }
+ }else {
+ return and__3822__auto__
+ }
+ }
+ }
+ };
+ isa_QMARK_ = function(h, child, parent) {
+ switch(arguments.length) {
+ case 2:
+ return isa_QMARK___2.call(this, h, child);
+ case 3:
+ return isa_QMARK___3.call(this, h, child, parent)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ isa_QMARK_.cljs$lang$arity$2 = isa_QMARK___2;
+ isa_QMARK_.cljs$lang$arity$3 = isa_QMARK___3;
+ return isa_QMARK_
+}();
+cljs.core.parents = function() {
+ var parents = null;
+ var parents__1 = function(tag) {
+ return parents.call(null, cljs.core.deref.call(null, cljs.core.global_hierarchy), tag)
+ };
+ var parents__2 = function(h, tag) {
+ return cljs.core.not_empty.call(null, cljs.core._lookup.call(null, (new cljs.core.Keyword("\ufdd0'parents")).call(null, h), tag, null))
+ };
+ parents = function(h, tag) {
+ switch(arguments.length) {
+ case 1:
+ return parents__1.call(this, h);
+ case 2:
+ return parents__2.call(this, h, tag)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ parents.cljs$lang$arity$1 = parents__1;
+ parents.cljs$lang$arity$2 = parents__2;
+ return parents
+}();
+cljs.core.ancestors = function() {
+ var ancestors = null;
+ var ancestors__1 = function(tag) {
+ return ancestors.call(null, cljs.core.deref.call(null, cljs.core.global_hierarchy), tag)
+ };
+ var ancestors__2 = function(h, tag) {
+ return cljs.core.not_empty.call(null, cljs.core._lookup.call(null, (new cljs.core.Keyword("\ufdd0'ancestors")).call(null, h), tag, null))
+ };
+ ancestors = function(h, tag) {
+ switch(arguments.length) {
+ case 1:
+ return ancestors__1.call(this, h);
+ case 2:
+ return ancestors__2.call(this, h, tag)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ ancestors.cljs$lang$arity$1 = ancestors__1;
+ ancestors.cljs$lang$arity$2 = ancestors__2;
+ return ancestors
+}();
+cljs.core.descendants = function() {
+ var descendants = null;
+ var descendants__1 = function(tag) {
+ return descendants.call(null, cljs.core.deref.call(null, cljs.core.global_hierarchy), tag)
+ };
+ var descendants__2 = function(h, tag) {
+ return cljs.core.not_empty.call(null, cljs.core._lookup.call(null, (new cljs.core.Keyword("\ufdd0'descendants")).call(null, h), tag, null))
+ };
+ descendants = function(h, tag) {
+ switch(arguments.length) {
+ case 1:
+ return descendants__1.call(this, h);
+ case 2:
+ return descendants__2.call(this, h, tag)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ descendants.cljs$lang$arity$1 = descendants__1;
+ descendants.cljs$lang$arity$2 = descendants__2;
+ return descendants
+}();
+cljs.core.derive = function() {
+ var derive = null;
+ var derive__2 = function(tag, parent) {
+ if(cljs.core.truth_(cljs.core.namespace.call(null, parent))) {
+ }else {
+ throw new Error([cljs.core.str("Assert failed: "), cljs.core.str(cljs.core.pr_str.call(null, cljs.core.with_meta(cljs.core.list("\ufdd1'namespace", "\ufdd1'parent"), cljs.core.hash_map("\ufdd0'line", 6969))))].join(""));
+ }
+ cljs.core.swap_BANG_.call(null, cljs.core.global_hierarchy, derive, tag, parent);
+ return null
+ };
+ var derive__3 = function(h, tag, parent) {
+ if(cljs.core.not_EQ_.call(null, tag, parent)) {
+ }else {
+ throw new Error([cljs.core.str("Assert failed: "), cljs.core.str(cljs.core.pr_str.call(null, cljs.core.with_meta(cljs.core.list("\ufdd1'not=", "\ufdd1'tag", "\ufdd1'parent"), cljs.core.hash_map("\ufdd0'line", 6973))))].join(""));
+ }
+ var tp = (new cljs.core.Keyword("\ufdd0'parents")).call(null, h);
+ var td = (new cljs.core.Keyword("\ufdd0'descendants")).call(null, h);
+ var ta = (new cljs.core.Keyword("\ufdd0'ancestors")).call(null, h);
+ var tf = function(m, source, sources, target, targets) {
+ return cljs.core.reduce.call(null, function(ret, k) {
+ return cljs.core.assoc.call(null, ret, k, cljs.core.reduce.call(null, cljs.core.conj, cljs.core._lookup.call(null, targets, k, cljs.core.PersistentHashSet.EMPTY), cljs.core.cons.call(null, target, targets.call(null, target))))
+ }, m, cljs.core.cons.call(null, source, sources.call(null, source)))
+ };
+ var or__3824__auto__ = cljs.core.contains_QMARK_.call(null, tp.call(null, tag), parent) ? null : function() {
+ if(cljs.core.contains_QMARK_.call(null, ta.call(null, tag), parent)) {
+ throw new Error([cljs.core.str(tag), cljs.core.str("already has"), cljs.core.str(parent), cljs.core.str("as ancestor")].join(""));
+ }else {
+ }
+ if(cljs.core.contains_QMARK_.call(null, ta.call(null, parent), tag)) {
+ throw new Error([cljs.core.str("Cyclic derivation:"), cljs.core.str(parent), cljs.core.str("has"), cljs.core.str(tag), cljs.core.str("as ancestor")].join(""));
+ }else {
+ }
+ return cljs.core.ObjMap.fromObject(["\ufdd0'parents", "\ufdd0'ancestors", "\ufdd0'descendants"], {"\ufdd0'parents":cljs.core.assoc.call(null, (new cljs.core.Keyword("\ufdd0'parents")).call(null, h), tag, cljs.core.conj.call(null, cljs.core._lookup.call(null, tp, tag, cljs.core.PersistentHashSet.EMPTY), parent)), "\ufdd0'ancestors":tf.call(null, (new cljs.core.Keyword("\ufdd0'ancestors")).call(null, h), tag, td, parent, ta), "\ufdd0'descendants":tf.call(null, (new cljs.core.Keyword("\ufdd0'descendants")).call(null,
+ h), parent, ta, tag, td)})
+ }();
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ return h
+ }
+ };
+ derive = function(h, tag, parent) {
+ switch(arguments.length) {
+ case 2:
+ return derive__2.call(this, h, tag);
+ case 3:
+ return derive__3.call(this, h, tag, parent)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ derive.cljs$lang$arity$2 = derive__2;
+ derive.cljs$lang$arity$3 = derive__3;
+ return derive
+}();
+cljs.core.underive = function() {
+ var underive = null;
+ var underive__2 = function(tag, parent) {
+ cljs.core.swap_BANG_.call(null, cljs.core.global_hierarchy, underive, tag, parent);
+ return null
+ };
+ var underive__3 = function(h, tag, parent) {
+ var parentMap = (new cljs.core.Keyword("\ufdd0'parents")).call(null, h);
+ var childsParents = cljs.core.truth_(parentMap.call(null, tag)) ? cljs.core.disj.call(null, parentMap.call(null, tag), parent) : cljs.core.PersistentHashSet.EMPTY;
+ var newParents = cljs.core.truth_(cljs.core.not_empty.call(null, childsParents)) ? cljs.core.assoc.call(null, parentMap, tag, childsParents) : cljs.core.dissoc.call(null, parentMap, tag);
+ var deriv_seq = cljs.core.flatten.call(null, cljs.core.map.call(null, function(p1__3458_SHARP_) {
+ return cljs.core.cons.call(null, cljs.core.first.call(null, p1__3458_SHARP_), cljs.core.interpose.call(null, cljs.core.first.call(null, p1__3458_SHARP_), cljs.core.second.call(null, p1__3458_SHARP_)))
+ }, cljs.core.seq.call(null, newParents)));
+ if(cljs.core.contains_QMARK_.call(null, parentMap.call(null, tag), parent)) {
+ return cljs.core.reduce.call(null, function(p1__3459_SHARP_, p2__3460_SHARP_) {
+ return cljs.core.apply.call(null, cljs.core.derive, p1__3459_SHARP_, p2__3460_SHARP_)
+ }, cljs.core.make_hierarchy.call(null), cljs.core.partition.call(null, 2, deriv_seq))
+ }else {
+ return h
+ }
+ };
+ underive = function(h, tag, parent) {
+ switch(arguments.length) {
+ case 2:
+ return underive__2.call(this, h, tag);
+ case 3:
+ return underive__3.call(this, h, tag, parent)
+ }
+ throw new Error("Invalid arity: " + arguments.length);
+ };
+ underive.cljs$lang$arity$2 = underive__2;
+ underive.cljs$lang$arity$3 = underive__3;
+ return underive
+}();
+cljs.core.reset_cache = function reset_cache(method_cache, method_table, cached_hierarchy, hierarchy) {
+ cljs.core.swap_BANG_.call(null, method_cache, function(_) {
+ return cljs.core.deref.call(null, method_table)
+ });
+ return cljs.core.swap_BANG_.call(null, cached_hierarchy, function(_) {
+ return cljs.core.deref.call(null, hierarchy)
+ })
+};
+cljs.core.prefers_STAR_ = function prefers_STAR_(x, y, prefer_table) {
+ var xprefs = cljs.core.deref.call(null, prefer_table).call(null, x);
+ var or__3824__auto__ = cljs.core.truth_(function() {
+ var and__3822__auto__ = xprefs;
+ if(cljs.core.truth_(and__3822__auto__)) {
+ return xprefs.call(null, y)
+ }else {
+ return and__3822__auto__
+ }
+ }()) ? true : null;
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = function() {
+ var ps = cljs.core.parents.call(null, y);
+ while(true) {
+ if(cljs.core.count.call(null, ps) > 0) {
+ if(cljs.core.truth_(prefers_STAR_.call(null, x, cljs.core.first.call(null, ps), prefer_table))) {
+ }else {
+ }
+ var G__3461 = cljs.core.rest.call(null, ps);
+ ps = G__3461;
+ continue
+ }else {
+ return null
+ }
+ break
+ }
+ }();
+ if(cljs.core.truth_(or__3824__auto____$1)) {
+ return or__3824__auto____$1
+ }else {
+ var or__3824__auto____$2 = function() {
+ var ps = cljs.core.parents.call(null, x);
+ while(true) {
+ if(cljs.core.count.call(null, ps) > 0) {
+ if(cljs.core.truth_(prefers_STAR_.call(null, cljs.core.first.call(null, ps), y, prefer_table))) {
+ }else {
+ }
+ var G__3462 = cljs.core.rest.call(null, ps);
+ ps = G__3462;
+ continue
+ }else {
+ return null
+ }
+ break
+ }
+ }();
+ if(cljs.core.truth_(or__3824__auto____$2)) {
+ return or__3824__auto____$2
+ }else {
+ return false
+ }
+ }
+ }
+};
+cljs.core.dominates = function dominates(x, y, prefer_table) {
+ var or__3824__auto__ = cljs.core.prefers_STAR_.call(null, x, y, prefer_table);
+ if(cljs.core.truth_(or__3824__auto__)) {
+ return or__3824__auto__
+ }else {
+ return cljs.core.isa_QMARK_.call(null, x, y)
+ }
+};
+cljs.core.find_and_cache_best_method = function find_and_cache_best_method(name, dispatch_val, hierarchy, method_table, prefer_table, method_cache, cached_hierarchy) {
+ var best_entry = cljs.core.reduce.call(null, function(be, p__3465) {
+ var vec__3466 = p__3465;
+ var k = cljs.core.nth.call(null, vec__3466, 0, null);
+ var _ = cljs.core.nth.call(null, vec__3466, 1, null);
+ var e = vec__3466;
+ if(cljs.core.isa_QMARK_.call(null, dispatch_val, k)) {
+ var be2 = cljs.core.truth_(function() {
+ var or__3824__auto__ = be == null;
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ return cljs.core.dominates.call(null, k, cljs.core.first.call(null, be), prefer_table)
+ }
+ }()) ? e : be;
+ if(cljs.core.truth_(cljs.core.dominates.call(null, cljs.core.first.call(null, be2), k, prefer_table))) {
+ }else {
+ throw new Error([cljs.core.str("Multiple methods in multimethod '"), cljs.core.str(name), cljs.core.str("' match dispatch value: "), cljs.core.str(dispatch_val), cljs.core.str(" -> "), cljs.core.str(k), cljs.core.str(" and "), cljs.core.str(cljs.core.first.call(null, be2)), cljs.core.str(", and neither is preferred")].join(""));
+ }
+ return be2
+ }else {
+ return be
+ }
+ }, null, cljs.core.deref.call(null, method_table));
+ if(cljs.core.truth_(best_entry)) {
+ if(cljs.core._EQ_.call(null, cljs.core.deref.call(null, cached_hierarchy), cljs.core.deref.call(null, hierarchy))) {
+ cljs.core.swap_BANG_.call(null, method_cache, cljs.core.assoc, dispatch_val, cljs.core.second.call(null, best_entry));
+ return cljs.core.second.call(null, best_entry)
+ }else {
+ cljs.core.reset_cache.call(null, method_cache, method_table, cached_hierarchy, hierarchy);
+ return find_and_cache_best_method.call(null, name, dispatch_val, hierarchy, method_table, prefer_table, method_cache, cached_hierarchy)
+ }
+ }else {
+ return null
+ }
+};
+cljs.core.IMultiFn = {};
+cljs.core._reset = function _reset(mf) {
+ if(function() {
+ var and__3822__auto__ = mf;
+ if(and__3822__auto__) {
+ return mf.cljs$core$IMultiFn$_reset$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return mf.cljs$core$IMultiFn$_reset$arity$1(mf)
+ }else {
+ var x__2373__auto__ = mf == null ? null : mf;
+ return function() {
+ var or__3824__auto__ = cljs.core._reset[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._reset["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IMultiFn.-reset", mf);
+ }
+ }
+ }().call(null, mf)
+ }
+};
+cljs.core._add_method = function _add_method(mf, dispatch_val, method) {
+ if(function() {
+ var and__3822__auto__ = mf;
+ if(and__3822__auto__) {
+ return mf.cljs$core$IMultiFn$_add_method$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return mf.cljs$core$IMultiFn$_add_method$arity$3(mf, dispatch_val, method)
+ }else {
+ var x__2373__auto__ = mf == null ? null : mf;
+ return function() {
+ var or__3824__auto__ = cljs.core._add_method[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._add_method["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IMultiFn.-add-method", mf);
+ }
+ }
+ }().call(null, mf, dispatch_val, method)
+ }
+};
+cljs.core._remove_method = function _remove_method(mf, dispatch_val) {
+ if(function() {
+ var and__3822__auto__ = mf;
+ if(and__3822__auto__) {
+ return mf.cljs$core$IMultiFn$_remove_method$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return mf.cljs$core$IMultiFn$_remove_method$arity$2(mf, dispatch_val)
+ }else {
+ var x__2373__auto__ = mf == null ? null : mf;
+ return function() {
+ var or__3824__auto__ = cljs.core._remove_method[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._remove_method["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IMultiFn.-remove-method", mf);
+ }
+ }
+ }().call(null, mf, dispatch_val)
+ }
+};
+cljs.core._prefer_method = function _prefer_method(mf, dispatch_val, dispatch_val_y) {
+ if(function() {
+ var and__3822__auto__ = mf;
+ if(and__3822__auto__) {
+ return mf.cljs$core$IMultiFn$_prefer_method$arity$3
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return mf.cljs$core$IMultiFn$_prefer_method$arity$3(mf, dispatch_val, dispatch_val_y)
+ }else {
+ var x__2373__auto__ = mf == null ? null : mf;
+ return function() {
+ var or__3824__auto__ = cljs.core._prefer_method[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._prefer_method["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IMultiFn.-prefer-method", mf);
+ }
+ }
+ }().call(null, mf, dispatch_val, dispatch_val_y)
+ }
+};
+cljs.core._get_method = function _get_method(mf, dispatch_val) {
+ if(function() {
+ var and__3822__auto__ = mf;
+ if(and__3822__auto__) {
+ return mf.cljs$core$IMultiFn$_get_method$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return mf.cljs$core$IMultiFn$_get_method$arity$2(mf, dispatch_val)
+ }else {
+ var x__2373__auto__ = mf == null ? null : mf;
+ return function() {
+ var or__3824__auto__ = cljs.core._get_method[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._get_method["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IMultiFn.-get-method", mf);
+ }
+ }
+ }().call(null, mf, dispatch_val)
+ }
+};
+cljs.core._methods = function _methods(mf) {
+ if(function() {
+ var and__3822__auto__ = mf;
+ if(and__3822__auto__) {
+ return mf.cljs$core$IMultiFn$_methods$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return mf.cljs$core$IMultiFn$_methods$arity$1(mf)
+ }else {
+ var x__2373__auto__ = mf == null ? null : mf;
+ return function() {
+ var or__3824__auto__ = cljs.core._methods[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._methods["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IMultiFn.-methods", mf);
+ }
+ }
+ }().call(null, mf)
+ }
+};
+cljs.core._prefers = function _prefers(mf) {
+ if(function() {
+ var and__3822__auto__ = mf;
+ if(and__3822__auto__) {
+ return mf.cljs$core$IMultiFn$_prefers$arity$1
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return mf.cljs$core$IMultiFn$_prefers$arity$1(mf)
+ }else {
+ var x__2373__auto__ = mf == null ? null : mf;
+ return function() {
+ var or__3824__auto__ = cljs.core._prefers[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._prefers["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IMultiFn.-prefers", mf);
+ }
+ }
+ }().call(null, mf)
+ }
+};
+cljs.core._dispatch = function _dispatch(mf, args) {
+ if(function() {
+ var and__3822__auto__ = mf;
+ if(and__3822__auto__) {
+ return mf.cljs$core$IMultiFn$_dispatch$arity$2
+ }else {
+ return and__3822__auto__
+ }
+ }()) {
+ return mf.cljs$core$IMultiFn$_dispatch$arity$2(mf, args)
+ }else {
+ var x__2373__auto__ = mf == null ? null : mf;
+ return function() {
+ var or__3824__auto__ = cljs.core._dispatch[goog.typeOf(x__2373__auto__)];
+ if(or__3824__auto__) {
+ return or__3824__auto__
+ }else {
+ var or__3824__auto____$1 = cljs.core._dispatch["_"];
+ if(or__3824__auto____$1) {
+ return or__3824__auto____$1
+ }else {
+ throw cljs.core.missing_protocol.call(null, "IMultiFn.-dispatch", mf);
+ }
+ }
+ }().call(null, mf, args)
+ }
+};
+cljs.core.do_dispatch = function do_dispatch(mf, dispatch_fn, args) {
+ var dispatch_val = cljs.core.apply.call(null, dispatch_fn, args);
+ var target_fn = cljs.core._get_method.call(null, mf, dispatch_val);
+ if(cljs.core.truth_(target_fn)) {
+ }else {
+ throw new Error([cljs.core.str("No method in multimethod '"), cljs.core.str(cljs.core.name), cljs.core.str("' for dispatch value: "), cljs.core.str(dispatch_val)].join(""));
+ }
+ return cljs.core.apply.call(null, target_fn, args)
+};
+goog.provide("cljs.core.MultiFn");
+cljs.core.MultiFn = function(name, dispatch_fn, default_dispatch_val, hierarchy, method_table, prefer_table, method_cache, cached_hierarchy) {
+ this.name = name;
+ this.dispatch_fn = dispatch_fn;
+ this.default_dispatch_val = default_dispatch_val;
+ this.hierarchy = hierarchy;
+ this.method_table = method_table;
+ this.prefer_table = prefer_table;
+ this.method_cache = method_cache;
+ this.cached_hierarchy = cached_hierarchy;
+ this.cljs$lang$protocol_mask$partition0$ = 4194304;
+ this.cljs$lang$protocol_mask$partition1$ = 256
+};
+cljs.core.MultiFn.cljs$lang$type = true;
+cljs.core.MultiFn.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/MultiFn")
+};
+cljs.core.MultiFn.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/MultiFn")
+};
+cljs.core.MultiFn.prototype.cljs$core$IHash$_hash$arity$1 = function(this$) {
+ var self__ = this;
+ return goog.getUid(this$)
+};
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_reset$arity$1 = function(mf) {
+ var self__ = this;
+ cljs.core.swap_BANG_.call(null, self__.method_table, function(mf__$1) {
+ return cljs.core.ObjMap.EMPTY
+ });
+ cljs.core.swap_BANG_.call(null, self__.method_cache, function(mf__$1) {
+ return cljs.core.ObjMap.EMPTY
+ });
+ cljs.core.swap_BANG_.call(null, self__.prefer_table, function(mf__$1) {
+ return cljs.core.ObjMap.EMPTY
+ });
+ cljs.core.swap_BANG_.call(null, self__.cached_hierarchy, function(mf__$1) {
+ return null
+ });
+ return mf
+};
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_add_method$arity$3 = function(mf, dispatch_val, method) {
+ var self__ = this;
+ cljs.core.swap_BANG_.call(null, self__.method_table, cljs.core.assoc, dispatch_val, method);
+ cljs.core.reset_cache.call(null, self__.method_cache, self__.method_table, self__.cached_hierarchy, self__.hierarchy);
+ return mf
+};
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_remove_method$arity$2 = function(mf, dispatch_val) {
+ var self__ = this;
+ cljs.core.swap_BANG_.call(null, self__.method_table, cljs.core.dissoc, dispatch_val);
+ cljs.core.reset_cache.call(null, self__.method_cache, self__.method_table, self__.cached_hierarchy, self__.hierarchy);
+ return mf
+};
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_get_method$arity$2 = function(mf, dispatch_val) {
+ var self__ = this;
+ if(cljs.core._EQ_.call(null, cljs.core.deref.call(null, self__.cached_hierarchy), cljs.core.deref.call(null, self__.hierarchy))) {
+ }else {
+ cljs.core.reset_cache.call(null, self__.method_cache, self__.method_table, self__.cached_hierarchy, self__.hierarchy)
+ }
+ var temp__3971__auto__ = cljs.core.deref.call(null, self__.method_cache).call(null, dispatch_val);
+ if(cljs.core.truth_(temp__3971__auto__)) {
+ var target_fn = temp__3971__auto__;
+ return target_fn
+ }else {
+ var temp__3971__auto____$1 = cljs.core.find_and_cache_best_method.call(null, self__.name, dispatch_val, self__.hierarchy, self__.method_table, self__.prefer_table, self__.method_cache, self__.cached_hierarchy);
+ if(cljs.core.truth_(temp__3971__auto____$1)) {
+ var target_fn = temp__3971__auto____$1;
+ return target_fn
+ }else {
+ return cljs.core.deref.call(null, self__.method_table).call(null, self__.default_dispatch_val)
+ }
+ }
+};
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_prefer_method$arity$3 = function(mf, dispatch_val_x, dispatch_val_y) {
+ var self__ = this;
+ if(cljs.core.truth_(cljs.core.prefers_STAR_.call(null, dispatch_val_x, dispatch_val_y, self__.prefer_table))) {
+ throw new Error([cljs.core.str("Preference conflict in multimethod '"), cljs.core.str(self__.name), cljs.core.str("': "), cljs.core.str(dispatch_val_y), cljs.core.str(" is already preferred to "), cljs.core.str(dispatch_val_x)].join(""));
+ }else {
+ }
+ cljs.core.swap_BANG_.call(null, self__.prefer_table, function(old) {
+ return cljs.core.assoc.call(null, old, dispatch_val_x, cljs.core.conj.call(null, cljs.core._lookup.call(null, old, dispatch_val_x, cljs.core.PersistentHashSet.EMPTY), dispatch_val_y))
+ });
+ return cljs.core.reset_cache.call(null, self__.method_cache, self__.method_table, self__.cached_hierarchy, self__.hierarchy)
+};
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_methods$arity$1 = function(mf) {
+ var self__ = this;
+ return cljs.core.deref.call(null, self__.method_table)
+};
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_prefers$arity$1 = function(mf) {
+ var self__ = this;
+ return cljs.core.deref.call(null, self__.prefer_table)
+};
+cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_dispatch$arity$2 = function(mf, args) {
+ var self__ = this;
+ return cljs.core.do_dispatch.call(null, mf, self__.dispatch_fn, args)
+};
+cljs.core.MultiFn;
+cljs.core.MultiFn.prototype.call = function() {
+ var G__3467__delegate = function(_, args) {
+ var self = this;
+ return cljs.core._dispatch.call(null, self, args)
+ };
+ var G__3467 = function(_, var_args) {
+ var args = null;
+ if(goog.isDef(var_args)) {
+ args = cljs.core.array_seq(Array.prototype.slice.call(arguments, 1), 0)
+ }
+ return G__3467__delegate.call(this, _, args)
+ };
+ G__3467.cljs$lang$maxFixedArity = 1;
+ G__3467.cljs$lang$applyTo = function(arglist__3468) {
+ var _ = cljs.core.first(arglist__3468);
+ var args = cljs.core.rest(arglist__3468);
+ return G__3467__delegate(_, args)
+ };
+ G__3467.cljs$lang$arity$variadic = G__3467__delegate;
+ return G__3467
+}();
+cljs.core.MultiFn.prototype.apply = function(_, args) {
+ var self = this;
+ return cljs.core._dispatch.call(null, self, args)
+};
+cljs.core.remove_all_methods = function remove_all_methods(multifn) {
+ return cljs.core._reset.call(null, multifn)
+};
+cljs.core.remove_method = function remove_method(multifn, dispatch_val) {
+ return cljs.core._remove_method.call(null, multifn, dispatch_val)
+};
+cljs.core.prefer_method = function prefer_method(multifn, dispatch_val_x, dispatch_val_y) {
+ return cljs.core._prefer_method.call(null, multifn, dispatch_val_x, dispatch_val_y)
+};
+cljs.core.methods$ = function methods$(multifn) {
+ return cljs.core._methods.call(null, multifn)
+};
+cljs.core.get_method = function get_method(multifn, dispatch_val) {
+ return cljs.core._get_method.call(null, multifn, dispatch_val)
+};
+cljs.core.prefers = function prefers(multifn) {
+ return cljs.core._prefers.call(null, multifn)
+};
+goog.provide("cljs.core.UUID");
+cljs.core.UUID = function(uuid) {
+ this.uuid = uuid;
+ this.cljs$lang$protocol_mask$partition1$ = 0;
+ this.cljs$lang$protocol_mask$partition0$ = 2690646016
+};
+cljs.core.UUID.cljs$lang$type = true;
+cljs.core.UUID.cljs$lang$ctorPrSeq = function(this__2315__auto__) {
+ return cljs.core.list.call(null, "cljs.core/UUID")
+};
+cljs.core.UUID.cljs$lang$ctorPrWriter = function(this__2315__auto__, writer__2316__auto__) {
+ return cljs.core._write.call(null, writer__2316__auto__, "cljs.core/UUID")
+};
+cljs.core.UUID.prototype.cljs$core$IHash$_hash$arity$1 = function(this$) {
+ var self__ = this;
+ return goog.string.hashCode(cljs.core.pr_str.call(null, this$))
+};
+cljs.core.UUID.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = function(_, writer, ___$1) {
+ var self__ = this;
+ return cljs.core._write.call(null, writer, [cljs.core.str('#uuid "'), cljs.core.str(self__.uuid), cljs.core.str('"')].join(""))
+};
+cljs.core.UUID.prototype.cljs$core$IPrintable$_pr_seq$arity$2 = function(_, ___$1) {
+ var self__ = this;
+ return cljs.core.list.call(null, [cljs.core.str('#uuid "'), cljs.core.str(self__.uuid), cljs.core.str('"')].join(""))
+};
+cljs.core.UUID.prototype.cljs$core$IEquiv$_equiv$arity$2 = function(_, other) {
+ var self__ = this;
+ var and__3822__auto__ = cljs.core.instance_QMARK_.call(null, cljs.core.UUID, other);
+ if(and__3822__auto__) {
+ return self__.uuid === other.uuid
+ }else {
+ return and__3822__auto__
+ }
+};
+cljs.core.UUID.prototype.toString = function() {
+ var self__ = this;
+ var this$ = this;
+ return cljs.core.pr_str.call(null, this$)
+};
+cljs.core.UUID;
+goog.provide("alandipert.flapjax_demo.sum");
+goog.require("cljs.core");
+goog.require("flapjax");
+alandipert.flapjax_demo.sum.parse_float = function parse_float(s, default$) {
+ var n = parseFloat(s);
+ if(cljs.core.truth_(isNaN(n))) {
+ return default$
+ }else {
+ return n
+ }
+};
+alandipert.flapjax_demo.sum.extractNumberE = function extractNumberE(id, default$) {
+ return flapjax.mapE.call(null, function(p1__3790_SHARP_) {
+ return alandipert.flapjax_demo.sum.parse_float.call(null, p1__3790_SHARP_, default$)
+ }, flapjax.extractValueE.call(null, id))
+};
+alandipert.flapjax_demo.sum.extractNumberB = function extractNumberB(id, default$) {
+ return flapjax.startsWith.call(null, alandipert.flapjax_demo.sum.extractNumberE.call(null, id, default$), default$)
+};
+alandipert.flapjax_demo.sum.sumB = function() {
+ var sumB__delegate = function(behaviors) {
+ return cljs.core.apply.call(null, flapjax.liftB, function() {
+ var G__3793__delegate = function(rest__3791_SHARP_) {
+ return cljs.core.apply.call(null, cljs.core._PLUS_, rest__3791_SHARP_)
+ };
+ var G__3793 = function(var_args) {
+ var rest__3791_SHARP_ = null;
+ if(goog.isDef(var_args)) {
+ rest__3791_SHARP_ = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return G__3793__delegate.call(this, rest__3791_SHARP_)
+ };
+ G__3793.cljs$lang$maxFixedArity = 0;
+ G__3793.cljs$lang$applyTo = function(arglist__3794) {
+ var rest__3791_SHARP_ = cljs.core.seq(arglist__3794);
+ return G__3793__delegate(rest__3791_SHARP_)
+ };
+ G__3793.cljs$lang$arity$variadic = G__3793__delegate;
+ return G__3793
+ }(), behaviors)
+ };
+ var sumB = function(var_args) {
+ var behaviors = null;
+ if(goog.isDef(var_args)) {
+ behaviors = cljs.core.array_seq(Array.prototype.slice.call(arguments, 0), 0)
+ }
+ return sumB__delegate.call(this, behaviors)
+ };
+ sumB.cljs$lang$maxFixedArity = 0;
+ sumB.cljs$lang$applyTo = function(arglist__3795) {
+ var behaviors = cljs.core.seq(arglist__3795);
+ return sumB__delegate(behaviors)
+ };
+ sumB.cljs$lang$arity$variadic = sumB__delegate;
+ return sumB
+}();
+alandipert.flapjax_demo.sum.calculate = function() {
+ var calculate__delegate = function(target_id, source_ids) {
+ var arguments = cljs.core.map.call(null, function(p1__3792_SHARP_) {
+ return alandipert.flapjax_demo.sum.extractNumberB.call(null, p1__3792_SHARP_, 0)
+ }, source_ids);
+ var results = cljs.core.apply.call(null, alandipert.flapjax_demo.sum.sumB, arguments);
+ return flapjax.insertValueB.call(null, results, target_id, "innerHTML")
+ };
+ var calculate = function(target_id, var_args) {
+ var source_ids = null;
+ if(goog.isDef(var_args)) {
+ source_ids = cljs.core.array_seq(Array.prototype.slice.call(arguments, 1), 0)
+ }
+ return calculate__delegate.call(this, target_id, source_ids)
+ };
+ calculate.cljs$lang$maxFixedArity = 1;
+ calculate.cljs$lang$applyTo = function(arglist__3796) {
+ var target_id = cljs.core.first(arglist__3796);
+ var source_ids = cljs.core.rest(arglist__3796);
+ return calculate__delegate(target_id, source_ids)
+ };
+ calculate.cljs$lang$arity$variadic = calculate__delegate;
+ return calculate
+}();
diff --git a/md/TechWorks/gitrubytesting-presentation-84744ec.tar.gz b/md/TechWorks/gitrubytesting-presentation-84744ec.tar.gz
new file mode 100644
index 0000000..8249b6f
Binary files /dev/null and b/md/TechWorks/gitrubytesting-presentation-84744ec.tar.gz differ
diff --git a/md/TechWorks/scala-presentation-82e2d00.tar.gz b/md/TechWorks/scala-presentation-82e2d00.tar.gz
new file mode 100644
index 0000000..4346e64
Binary files /dev/null and b/md/TechWorks/scala-presentation-82e2d00.tar.gz differ
diff --git a/md/TechWorks/triclojure-hoplon-deck-7afa060.tar.gz b/md/TechWorks/triclojure-hoplon-deck-7afa060.tar.gz
new file mode 100644
index 0000000..6260209
Binary files /dev/null and b/md/TechWorks/triclojure-hoplon-deck-7afa060.tar.gz differ
diff --git a/md/TechWorksArchive.md b/md/TechWorksArchive.md
index 70a646f..1d2381d 100644
--- a/md/TechWorksArchive.md
+++ b/md/TechWorksArchive.md
@@ -6,6 +6,7 @@ Downloads and recordings from [TechWorks](./TechWorks.md). Some original event p
| Work | Read |
|:-----|:-----|
+| Foreword to Clojure for the Brave and True | [Local copy](./TechWorks/ClojureBraveTrueForeword.html) |
| OCRUG interview | [Local copy](./TechWorks/OCRUGInterview.html) |
| My workstation OS: NetBSD | [Local copy](./TechWorks/MyWorkstationOSNetBSD.html) |
| Shiny Server (Pro) 1.5.6 | [Local copy](./TechWorks/ShinyServer156.html) |
@@ -21,7 +22,12 @@ Downloads and recordings from [TechWorks](./TechWorks.md). Some original event p
| Load testing Shiny | [Webinar page](./TechWorks/2018-09-06-load-testing-shiny-archive.html) |
| Boot Can Build It | [Slides](./TechWorks/2015-04-20_ClojureWestBoot.pdf) |
| FRP in ClojureScript with Javelin | [Slides](./TechWorks/Dipert-FRP_in_ClojureScript_with_Javelin.pdf) |
+| An Introduction to Raspberry Pi | [Slides](./TechWorks/2013-01-10_RaspberryPi.pdf) |
| Programming with Values in Clojure | [Slides](./TechWorks/Dipert-ProgrammingWithValues.pdf) |
+| Computing with Clojure | [Slides](./TechWorks/decks/oscon2012-clojure/index.html) |
+| Your Own Compiler in 20 Minutes | [Slides](./TechWorks/decks/barcamp-2012/index.html) |
+| Managing Code and Quality with Git and Testing | [Slides](./TechWorks/decks/gitrubytesting/index.html) |
+| Scala, a Scalable Language | [Slides](./TechWorks/2009-09-03-Scala-a-Scalable-Language.pdf) |
## Recordings
@@ -36,6 +42,7 @@ These are the best available copies from the original hosts. Captions are includ
| Uberlisp lightning talk | [Video](./TechWorks/media/video/tSw3x0rVh88.mp4) | [English](./TechWorks/media/video/tSw3x0rVh88.en.vtt) |
| Web Programming with Hoplon | [Video](./TechWorks/media/video/wVXjExRiFy0.mp4) | [English](./TechWorks/media/video/wVXjExRiFy0.en.vtt) |
| Flapjax lightning talk | [Video](./TechWorks/media/video/xaxF5RDdVRE.mp4) | [English](./TechWorks/media/video/xaxF5RDdVRE.en.vtt) |
+| An Introduction to Raspberry Pi | [Video](https://www.youtube.com/watch?v=fDjpAHbB-Mg) | [English](https://www.youtube.com/watch?v=fDjpAHbB-Mg) |
| FRP in ClojureScript with Javelin | [Video](./TechWorks/media/video/infoq-frp-javelin.mp4), [audio](./TechWorks/media/audio/infoq-frp-javelin.mp3), [slides](./TechWorks/Dipert-FRP_in_ClojureScript_with_Javelin.pdf) | Not published |
| Programming with Values in Clojure | [Video](./TechWorks/media/video/infoq-programming-with-values.mp4), [audio](./TechWorks/media/audio/infoq-programming-with-values.mp3), [slides](./TechWorks/Dipert-ProgrammingWithValues.pdf) | Not published |
@@ -60,11 +67,16 @@ These are the best available copies from the original hosts. Captions are includ
| Project | Repository | Download |
|:--------|:-----------|:---------|
| BarCamp JSONScript | [GitHub](https://github.com/alandipert/barcamp2012-jsonscript) | [Snapshot](./TechWorks/barcamp2012-jsonscript-7e4dcf7.tar.gz) |
+| BerryCam | [GitHub](https://github.com/alandipert/berrycam) | [Snapshot](./TechWorks/berrycam-d24a0c8.tar.gz) |
+| ClojureBridge curriculum | [GitHub](https://github.com/ClojureBridge/curriculum) | [Snapshot](./TechWorks/clojurebridge-curriculum-c8605f6.tar.gz) |
| Fast Shiny | [GitHub](https://github.com/alandipert/fast-shiny) | [Snapshot](./TechWorks/fast-shiny-da0ea10.tar.gz) |
| Flapjax demo | [GitHub](https://github.com/alandipert/flapjax-demo) | [Snapshot](./TechWorks/flapjax-demo-b719782.tar.gz) |
+| Git and Ruby testing presentation | [GitHub](https://github.com/alandipert/gitrubytesting-presentation) | [Snapshot](./TechWorks/gitrubytesting-presentation-84744ec.tar.gz) |
| Gherkin | [GitHub](https://github.com/alandipert/gherkin) | [Snapshot](./TechWorks/gherkin-76dc034.tar.gz) |
| OCRUG 2018 presentation | [GitHub](https://github.com/alandipert/ocrug-2018-11-27) | [Snapshot](./TechWorks/ocrug-2018-11-27-71dd0b1.tar.gz) |
| OSCON Clojure workshop | [GitHub](https://github.com/alandipert/oscon2012-clojure) | [Snapshot](./TechWorks/oscon2012-clojure-5ac233f.tar.gz) |
+| Scala presentation | [GitHub](https://github.com/alandipert/scala-presentation) | [Snapshot](./TechWorks/scala-presentation-82e2d00.tar.gz) |
+| TriClojure Hoplon deck | [GitHub](https://github.com/alandipert/triclojure-hoplon-deck) | [Snapshot](./TechWorks/triclojure-hoplon-deck-7afa060.tar.gz) |
| Wombat | [GitHub](https://github.com/alandipert/wombat) | [Snapshot](./TechWorks/wombat-dbd34f4.tar.gz) |
Original event pages and host links remain on [TechWorks](./TechWorks.md).