aboutsummaryrefslogtreecommitdiff
path: root/mkclick.pl
diff options
context:
space:
mode:
Diffstat (limited to 'mkclick.pl')
-rwxr-xr-xmkclick.pl663
1 files changed, 663 insertions, 0 deletions
diff --git a/mkclick.pl b/mkclick.pl
new file mode 100755
index 0000000..292ec8d
--- /dev/null
+++ b/mkclick.pl
@@ -0,0 +1,663 @@
+#!/usr/bin/perl
+
+# mkclick.pl, click track generator.
+# No external modules, binaries, or data files, we just need perl 5.x.
+
+use bytes;
+use warnings;
+
+# These 3 are hard-coded constants (could be changed if you really want to)
+$samprate = 48000;
+$defaultduration = 600;
+$defaultfile = "klik.wav";
+
+$defaultmin = $defaultduration / 60;
+
+$self = $0;
+$self =~ s,.*/,,;
+
+# this script contains the click sound as a hexdump of a 16-bit mono 48k wav,
+# so we don't depend on any external files.
+while(<DATA>) {
+ chomp;
+ $click .= pack("H*", $_);
+}
+
+# number of samples (NOT bytes!) in the click sound. If the tempo is above ~305,
+# this gets reassigned to whatever size we trim the click sound to.
+$clicksamp = length($click) / 2;
+
+sub usage {
+ warn $self . ": " . $_[0] . "\n\n" if $_[0];
+ warn <<EOF;
+$self, 20131119 B. Watson <yalhcru\@gmail.com>
+
+Generates a click track of a given tempo and duration.
+Licensed under the WTFPL.
+
+Usage: $self [tempo] <[duration]>
+
+tempo is in beats per minute (floating point).
+
+duration is seconds, default $defaultduration (aka $defaultmin minutes).
+
+Output is written to $defaultfile if standard output is a tty, or
+to standard output if it's not a tty (e.g. if it's redirected or piped).
+
+Output is a mono 48k signed 16-bit .wav file, ready to be imported into
+ardour (for example). Note to ardour 2.x users: don't name a track "click"
+or you won't be able to load your session next time you start ardour!
+
+There is no time signature because there are no accents. The output is just
+a series of identical clicks, which you can think of as 3/4, 4/4, or
+whatever your song is in.
+
+The click sound came from the "GMKit" drum sample set distributed with
+the Hydrogen drum machine. If you've never used Hydrogen, check it out at
+http://www.hydrogen-music.org
+EOF
+ exit 1;
+}
+
+my ($bpm, $duration, $timesig) = @ARGV;
+usage() unless $bpm && ($bpm =~ /^[.\d]+$/);
+$duration = $defaultduration unless $duration;
+
+# $period is in samples, not bytes
+$period = $samprate * 60 / $bpm;
+
+# if the tempo is so fast that each beat is shorter than the length of the
+# click sound, we cut off the end of the click sound. This works OK for any
+# sane tempo someone might actually be able to play at.
+if($period < $clicksamp) {
+ $click = substr($click, 0, $period);
+ $clicksamp = $period / 2;
+}
+
+if(-t STDOUT) {
+ $outfile = $defaultfile;
+ warn "$self: writing click track to $defaultfile\n";
+} else {
+ warn "$self: writing click track to standard output\n";
+}
+
+$limit = $duration * $samprate;
+
+$next = $period;
+$pos = 0;
+$outsamp = 0;
+
+# An earlier version of this script used to open a pipe to sox and write
+# raw samples to it. Now the output gets built up in a string in memory,
+# which means we don't depend on sox being present, plus it turns out to
+# be faster (unless you run out of memory, but 10 minutes of audio is less
+# than 60 megabytes, shouldn't be a problem for anyone able to run perl 5.x).
+$output = "";
+
+# The loop below could probably be more elegant, but it works as is.
+# No interpolation is done, the clicks start on an even sample boundary,
+# so we keep track of where we are and where we should be in the output
+# stream, to minimize jitter. Result is that every click is either on time
+# or less than 1/48000 sec early (a robot drummer might notice that
+# amount of jitter but no human will).
+# The results were tested by importing into ardour and listening to the
+# imported audio mixed with ardour's built-in click (well, beep) track.
+while($next <= $limit) {
+ my $silence = (int($next) - int($pos)) - $clicksamp;
+ $output .= $click;
+ $outsamp += $clicksamp;
+ $output .= +(chr(0).chr(0)) x $silence;
+ $outsamp += $silence;
+ $pos = $next;
+ $next += $period;
+}
+
+if($outfile) {
+ open OUT, ">$outfile" or die "$self: can't create $outfile: $@\n";
+ select(OUT);
+}
+
+# print RIFF header with correct length, followed by the output samples.
+# If you really want to know how the fmt chunk is defined, go look up
+# the wav file spec on wikipedia or something.
+print "RIFF" .
+ pack("V*", length($output) + 0x24) . # riff data length
+ "WAVE" . # yes, it's a wav file
+ "fmt " . # format chunk follows:
+ pack("H*", "100000000100010080bb00000077010002001000") . # means '48k mono signed 16-bit', honest
+ "data" . # data chunk contains the samples...
+ pack("V*", length($output)) . # ...and is this long.
+ $output; # rest of the file is the actual samples
+
+exit 0;
+
+# The data after __END__ came from:
+# flac --decode /usr/share/hydrogen/data/drumkits/GMkit/stick_Woody.flac -c > click.wav
+# sox click.wav -r 48000 click.raw tempo 1.5
+# perl -Mbytes -e 'undef $/; $a=<>; $b=unpack("H*", $a); $b=~s,(.{72}),\1\n,g; print $b' < click.raw
+
+# Without the 'tempo 1.5', max bpm would be limited to 205. With it, max bpm
+# is around 300, and the sped-up click samples still sound good to me (and if
+# the max is exceeded, chopping off the end of the click *still* sounds OK).
+
+__END__
+2700f6ffc4ffe40060ff0ef989f3b2f9180d7b1b5314ebfa53db53c106bf9addd6032017
+4418e312e31337213a37c44243302dffbdc33a9ebaac03f1812bb5311e1d5307ebf184d9
+49d95ff5bf0741ed15b7f3a04eb88fda3edec9db70f371f344d251cdcededaeca5fbf0f1
+d9e720e85cf071f13accfcc705dccfeb071d0541723e852b80034fe0d3d6ebf3282c3128
+e7ff9dded4e0f9fac5f11af53cbf97c348242cde66bc8d09741bb2394526110a5d16ba23
+f33f6e161fe7208e389ec630e20435f83619840e6e119b0963228c207b360518ac3ca83b
+2ee1dc137ee9091c7b5e17287d3c67212d1db10f28087b194126314f635086481e34e135
+c23af62e5a1eb3fbcbe1cace78e37e092c36a2590f5e944d2d26a50538f628ffb10aa00b
+9efaccded3e4e709d83bd45c555e83523b430b33a230ea3f23475f41c33710328f377042
+8f47dc3bad238d0afbee46d4f2c7e2cbabcac4be25bd91c3f1cd74e0f2f0c3f507eeebe9
+98f52e075b108d0b9cfdcbeb56dd7dde8beda0f82ef81cf681f971fa47f4e1f14bfacf0a
+541e8e298a21410720e17bb8ffa145ab3dc431da5ce948ef4fef27ee83f3d106ab1bd225
+7521e90ff3fd51f3c6f06cf91e0deb1fb424bf1a7a090df906ebf0e25de68af1df000a12
+cc1dd81dd80efef387dc96d87aeae20402199f204e1b9810700643fe3bfafcf85efb0dfe
+76f869ebafe0d1deabe1c1e51de94ce898e8cbed71f54500e60d601b1425372c543ade4d
+94577e4f2237eb19bb017becd5de02dc5edcf5d729cd49c827cfa1dc30ebebf161f02eea
+dde043d626cb3ac455c5bccef4db4fe514e9fbe6c3dee7d4c8ce6dcfaed6ffdf75e506e9
+8deff1f7a3fc41fcb5fdcb03ed0ee91b5027db32ac383d379b2fb32291179d0db8057c02
+84fd05f0e1d7d4bf81b919c700daebe198de08d3debfa8b4c5bab2cf32e6a1ebc0e4a4e0
+dde021e064e4b3f183fe0607310e3c17cd1fc2207d1bea156b10ed0a0805c9ff08004406
+300d61118415ef1b1f270130fd2d721fd10087e025cbcdc091bdf5bb1ac2a7ca5cd288dc
+f8e782f38af4dced4fe9cde8e7ec88f473ff800be6149c16011443147017f419ed152b0b
+ebfffcf933fcde029b0bc41ca52f783688359733e8338b377b382b327027661c2d122c0d
+010fb50f230a500076f4bfe9cedfbcd4fecb40c6efc18ac4eece80d58cd619d6a7d634dc
+17e40ff23e090224bd3c5852795f6c5d7754f2424f29a8139b0000f100ebe1ee81f624fd
+5d023f072a0c0a0ee309e8fcefebc7e0c4e137ef85ffb80dbe1b0123461cf30937f585e7
+2ee04fd945d087c627bf07ba92b971c18dcfe8ddcfe89eef1df356f79c015a128720f626
+dd25461c9010c00833074d0cdb12eb156e13c40eac0d4e112c18b31e591f6417d508def9
+c0f048eb77e6c9e73cef61f68ffac2fad4f843f8c2fca7068011ef17d812270324ee83d9
+fdcfd7d24ed9efdd83e25ae8f4f13c036a19732de336793bd343234a874a234303356e23
+42102701fefb06005e074c0d8610ea13c313620c0507cc0952124e1af81ace13bd0862fd
+93f67ff7e9fa9bfa56f685f14df242fb57072e12d4179012020501f96ef270ed7ee842e7
+92ebf5f2f5fa5202ec07de0aa50dc512d816de188d1af01c4c1fc31e9a1bfe17d5168315
+3611ff0879f981e566d295c72fc6f0c556c63acc35d9e4e7f0f3aafc3afee2f942f6b0f5
+47f774fb9302240af80c5009ab018df8fef2f6f2faf3cff35bf1ddeb9aea85f158fab503
+8e0ea4195d241d2b7629a61c620a63fd98faad026c0d010f11040ff23fe102d665d6e2e3
+b6f3ebfa3bf9a4f953fddffa51f635f80601720bb90eff0b770dbd138215a00f3b094009
+eb0bbb0a770a340b6805befbb4f2bfea7ae6a9e731ea3be9ebe7bdecebf553fff20a2c17
+901e3b20a422b4259520a516560f880c2b0c360b950deb10860dd807cd04d30402098d07
+dbf8cae6a9de34e12be860f40b02bc077505f5037007940da214a2198e1c2b1cb315f908
+43fbacf535f7e8f949f7e9ee00e4acda6ddb6ce578f56b0243088713a41fe020a21b9d17
+87140f0dc20151f958f82cfea104df08630a24003ee97cd30fcaffc9fccbbcd061da72ec
+6c035d1869267b2adb2b5828601bfa0c5007400b1e0e7f0fcd0fbc0960024efdf5f50aec
+c2e1ebd51dd262dccdea37fb140c2e14bd1037063bfc0ef9fbfcc804b90c470f330b1c0a
+2111791a95206f21c121e01d1510950328fca1f59fee4be7bfe5c2ebccf85c0e91247b2f
+0c2fb228b01e6613ba0c660dbf0f971399132608e2f9f1f0d1ed43ed3cee68ecd6e5d6df
+90d9a0d8f8ddefe00ee163e317ec29fa4208e40f7714de188f21833184382f3701398339
+5933112aa122ab17050b3a049dff0ff981f56df7e1f304e3dbce22c8c6cf1adde7e77ce8
+19e85aef10f7b8faf3fb4000ab07470c211172190b1d911278fd8bea25e353e944f311fa
+e400a607d10de60c0703f9fa44f820f983fd6106970ebf114f10b5028cefcae759e9e9ed
+49f23df232ed3fe8ebe93beedfeec3e956df9ad71bd44bd4cbd97ddcefddece9eeffb212
+cf19591bb71b4816680bf102d6fdb2f75bf236f05af001f5e30131103d137b0b7605c506
+ea0404f96aee0becb3ec57ee9bef95eed9ec3df1b5fcbb0368038cfcbbf21ff091f2d0f9
+5403bc0080f01edff5d786d87adc0de64cf276002710d51aea1de41d381e0f1f031a0d0d
+c6079607b7fab8eb06eb5ff249f80eff8f07690dab10f9126f109c098c0682051d0289ff
+6e018d053e034cf813ebeee4f6ea0bf556fbadff00038906b207a4fc6bedeeeab5f2e1fb
+a7010e06cd11001ff81c5f0e980064f652f196f1fef402fd4f074a11601ca62b8737cd30
+b51f85126a08a4fdbdf064e7c3e342e410eacdf409014709e00e3513ab12fb09c8fd22fa
+04fe15018902310849109a0cfafd3bf5ebfabd05eb0721041003670527075903f6fdb6fc
+dbf9b8f417f4a8fad70273058006df0ada1545238129952867208a133a036cf35bee19f0
+f5f24ff8a4fe2002ad010500f8ff0701bbfde6f13fe47fdf17e442edb8f6f801560f6017
+5c1883156014d4109e07a1ffc3f8def401f0c5e82ae65ae414e245e580f28203ab0be50b
+6a10d61618122b073102a307a40d960500f380e755edeefa8b0275fc06f14ce9e1e195e2
+b2eec1fd0605a6fd60efa3eb1afa280ef71d7b23801d3111c5040205db109c1cd61e2417
+170bc0fea7f95df7a4ef2ee5a3e1c0eadaf79100a50325ff66f4afef0af577fbf800f501
+acfa90f18eee1af45bfdcb030508bc11861e02244023881d2315bd1143131a15b112ee12
+ba184b16740a1dfef0f9e2ff020344fda3f781f52cf0f8e8bbead8f7ff03240473f8fce9
+07e4d5e5aeeb74f71405cc0a150510fe3f00ef08d80d5e0bac07b006d6072808d9045700
+dbfce7fb04017c0ad6109a0eb006c6027703c8fd00f2f8ea5dea3eecd4edfded3eebd6ea
+a6f632045b07dd05aa058707560a221080121e0768f8a8f58afcfa03ae08530c04114111
+e5096d0334087b17df1f0918290bf3ffe5f18be7f3e8b1ef73f8b0ffd201e9057c0e8211
+810c770a6e0b100aa90804063202b1fd30f318eaddebfdef69ee8ce88aeb6dfcb80b530e
+fc045ffcfafac1fb1d01a009b00e3011e113de15ef158f13dd107611c81094089bf886e6
+c5e1beed25fbd9ff98f660e6bbdebcdf3fe4cfea0af1d3f732002f06e605720038fecb05
+f613a523502a4c1f550d5b03ba033d095d0b6c0a700beb07a200c8fee0ff61f9feefe6f2
+b2f96ff522e967e4b2f18f042c0d030bf204adfe65fce9feba00aa03400322f513e61fe9
+8ff98f065a08d0094c1116114a088d038702bbfc46f44ef4fafe0a0a9a0c7e05bbf7afec
+afe740ea26f82907de0f960ea5048efcadf85af6c6f281f5c2004b067c0534087c0ec510
+1a0cf60091f531f457fb1904310a820d150d4404f2f8c0f6bffe3207c306310046fc4afb
+9ffa52fdc9055e0f5b14e6161714b40701ffdc00a3034d04e401f9fae5f646f870f921f6
+2cee32e99eed96f78e010a0bd41297110906fffe6e07ba13a9134e0b4a085d0ac1114c1e
+2a22b81ce5132b0ad004ca0069fc52f636ee8ee635e163e3e4e5eae48fed95ff6c0ffb18
+0f171309eafe8cfdf1faa3f50cee69eab1f4e60160fef6ec03e43ce952f3ff004e0cb511
+1f136e0efd079c050f051503b805e70daa122012ff0e1d087cff2bfb74f42dea66e95bf1
+fbf787faabf9f5f42df2eef1e7eeaeeaa1e7f3e73dee4cfbd80975188923ec2345207820
+0b27ad2bfa21d10617e739d878dcb3e852f218f881f72aeeebe94df13300c10fc318fc1a
+7419f9150e0c0ef9c8ea0bef9401ef15491d3f168e0fd21044140f12e30c7d0610fb62ef
+efee16f852fad7f2adedfbefd8f974083e11af10040e4d0e190f330e220d6a0696fa41f1
+0aeed7f1b2f8a0fd63fc9df979f939fadafcab01ff076e0b460d2411fd1305102e04d9fc
+ad00c7082f0ced07bf0031fd34007204c8017cf789f126f6c7fb94fb4af72ff2c2ef47f5
+a2fc06fd57fb04fc05fd8cfc50fba2f7abf469fc450d721a9c19940c66ff26f958f69bf2
+8ced99ec54f2e0fba909bf0fbd062cff8802e00d2b167d10d60580fe12f415ea3eeb4bf2
+67f5d7f5f7f777fa2efc6503a00e6310b8048ef6cbef36f061f69cff51097f100e0b2dfc
+14f147f154fc6604ed04aa051b079e04c8fec2fdbc02a4067e065704730107fed6fa04f7
+d5f6defdcc058b080b05dbff60fe14ff90fe36fdaefedd03cb06f302d3fc98fe3207660a
+26081e0465010d05d00424feecfbd701c40e721c1325e521ca15680e970c2a0b7009c406
+4a0105fcb3f8d5f5d4f86d007c0298fddcf8e2f9c3ff3d037202090144002202ec03c706
+0f0c450ca0077e0365036f0434037803b404c9026efd44f9a5f8c1fbbd026909420e7511
+1d11ef0c4107db018afa75f22cef56f3fcfa70012b070e079cfd51f27be9ece67aeba4f0
+98f2edef32ed49f037f82fff34ffc4fa4bf5f8efcded4af189fbdb059b0af80b820b380a
+0c0804029bf67aed10f0fbfba9066e0c7112b113260bdd02c7fe7efa18f893f81df5bbee
+9fed6af2cef8dcfd43ff45fad2f278ee8bf011f99ffe72fe2e007c07650bc806e6023002
+9c02a7016000e5000efd24f7baf5e5f95400d204c307ef0c1d141914ec0e460e76135215
+010b2a039807660ffd141d13f506a2f682ebe7e4bee1cbe2d1e2c0e3e1e601eb0df222fb
+5706d512a9187f114a0641017a00f7fefffd3e007704810d4f171c1d6720ce1a150fb207
+120978112114ab0831f983f293f1e7ed27ec23f44efd6afdb4f66bef1eef4ff34af3dff0
+85f12bf401f8dffc00fcd6f553f22ff520fc98fdf1f757f6e0fc5f07a311ca13a10e5608
+9402ce020807490af70b7609c8049101f4ff88008e058d0a0808e90093f806ef90e91ce9
+3ae901ea6dee32f73aff0002ac02270693083d01b7f450f241fee50c3716731949100bfd
+50f1a3f346fb2803be0823070d0299029b052d040d04f40aeb12b6103603cbf840f83dfa
+13fb74ffa9083a0c7d04c2f59be790e1e8e08ce460ef00fcc3022602dc008c06e0114b17
+eb141d17311c7b160607cdfb77fe9a07e30551faa8f38ff650fb8ffcddfe0d0413096f07
+4901ae00f5012901d7feb1fc3d016409350c960af10b050ba5ffa9f585f304f45af96503
+ef0bd10bb0031cf987f133f3b3f90ffefefd97fd6c021608a80d2815b31cbd1fba1a1f10
+5301a2f4aaf34afc410412051100abf566e9fbe377e530ed72f723faa4f72ff77af87ef7
+abf3f6f285f8c1fd0fff2803a609a10cf8078cfecdfa7afb68fc29fdd1f9c5f57bf667f8
+27f9c3f7a4f456f797feb603c205d0073e0e04144210580503002102a6045c04c100b4fe
+d9fcb6f8dcf6c9f82efc5b015f08e3093e03cefa01f97eff3c08830bb20350f822f329f4
+9ef6d1f9f5feaafff9fbdafa88fc6afb92f7b2f7f9fb6a04d90f1c14250e400482fc08fa
+73fca8010304b00334036d02ea04f8065f07d9049cfb75f8d8fd77febffa2ffa86fd8103
+490a5d0c6c053cfb00f6eef3bcf6ce00bd09d709ec01b1fafbf90f012f0c6211450f6b0d
+dc0c1e0a9306ee04a905ac04b503e404ef017dfd71f9fff405f3fff4b0faf4fef4026507
+bf05a5fc4bf28fea62e53bebe7f97404e007ed028cfb52fa6cfa27f463eb93e91dedcdec
+81eceff31dfc8b019006ec0b9212e2166b186316fe10ab0bbd07a009730dec0d250e850b
+5205cffef9f647f1faf244f9c7fb22fba0fee500f1fdf1f81ff544f382ecb0e5bee592e9
+02f112f849f491e8dbeb81ff3f0fae12c50c6e0a290f49123e11330d7305a0fc33f999fc
+1c079315831cc8122c0275fba2fd6a03a30bc5131816b110aa0bf608aa032ffc18f833f8
+94f713f5cef492f852fc15ff0efef5f869f512f035ece7f016f6b9f610fb68044b07ff04
+13070608c1052f097c0f15134e1559123509d3fe09f977fb8000b802710242ffb2f941f7
+3afa0efdeffbf6f933fc86ff21ffb7fc3afc650066056005f6fec4f678f3aaf628f8d2f2
+49efb9f05df514fab7faecf932fae6fe460459038101ff02dd0283fe98fb5dffd506db0a
+d80b190b660460fb0ff77ff9a7fff6040b083909fd0bd30d3c05bbf5abee19f58afcd0f9
+e0f12aee4df243ff980d240e9902a4fa4ffa40ffbf060e0b740aff063a03ad031d098c0b
+8c0646fff7fbe8fe01059a09ee084502a0fbf9f786f40cf3c5f41ef91601fc08f60b7f07
+cbfc57f480f402f8abf91efc59ff4d00acff3bfe9bf92ef71cfb9bfe0103030a8d0f1613
+f81307149d15751784176f126e05a3f8eaf40ff85afa8bf54af0edf025f401f7b8f906fe
+ee01fe039f026dfdabf546eef9ed74f390f7eaf688f647fc30040e09480d2f10730a3c02
+aaffcffdeef8c4f3daf4fafa87fc35fa30fdf5045f0afb0c4c1161134e0e75070f03d004
+80092409990455fc4bf270ee4ef5e7ff8f06030479f9adf69ffc8cfffffdf3fa74f962fb
+dcffc201fffd1df97cf9f6fda602f505b40595073b0f2b13180d1401a1f67df318f774f9
+b6f523f3b9f771fdddff150322099b0be608c40723076a04480431064604cd0292056304
+e9fd6df817f814fcbcfff7035a08aa07a203180078fbb5f7d0f9a5013d087c053dfd84f7
+2af677f96efe3205f70d5110e40808feecf6f9f673fc79013a01d5fc5bf7fbf13aef92f3
+60fd4f064a0c7c0e260e060c87075b04f7ffe3f843f7a2fc28034606510665045e00d3fc
+7df9fdf57ef255ed12ea29ec7ff45500eb075d0aa60bb10923038afd3efc50fdeefe6100
+f601a4039602b5fd6bfb65feb1feddfa10fb08ffb4ffd5fe24013f066e0a540677fd1ffb
+27fd08007304c005db01a4fbaaf5f5f2e7f611feae0156028a048308e6095f0710029ffc
+4cfbcefb81fc4400a6047107c508f0047b00ab03e307aa0440fe03fe7b036706b4035bff
+31fef7fddafaa5f788fba003a5052a038eff3afbfff858fab7fdd90034057d0634fe22f2
+78ee2ef708069612b313d1096200dcfe1604b107150477fbc9f7b0ff0c09c70a4707c804
+ad035902f803dc02a1fcf5f78ef602f60ef5a3fa4b04cd05a2017cff04fe2ffbc9f880f7
+78faffff57016dffacfd09fe96fe26fd03fcd9fc35ffe100fa011304ab051805bd036d02
+2c0013fdd3fa3ffcbb00ad046604f3fec6fa81fd2b06be0b3505fcfa59f813fa8ffc8701
+d705f0032ffe12fb29fa02f8bdf719febb07fb0ae505e7ff6effe30409092a0714020cfe
+8efce6fb2afcf1fde600a9036c04310247fe02fe9d012803b1ffb3faddf836f752f4adf7
+b002d50cfb0d7e083c07ca09a707440009fa62f847f739f893fe190688096f0632ff4ef9
+0df80dfa78fd0401530355021effe8fed7fde8fae4feb6060e095e06000233fe7bfe6e03
+e106f80190fbfdfde406df0ee10ff509050276fd3cfe80ff70fd81fbc3fd6002d106f206
+380056f741f245f48cfcfe065b0c6408b6fee6f669f6cffbc402a20669057702f0016e03
+0704720156fcf6f999fc6400060020fd8bfc98fcbafb63fa82f868f776fa440095028102
+3c050a0ac20bb9074c01360035051909cb084605a6012401f4030c05d30163fd82f877f5
+93f77fffc505880283fb47f730f783f849f709f84afed402ee01d9fd6bf86ef919ff65fd
+8ef803fb9703090a0a09a503dbff66feedfb33f98bf97afd72037b09d70d850d3208a203
+4e026501e800d602ee053b0498fd4cfa32fb35fd430077018afe8ef82df509f99201010c
+82133311ae063bfb7df4b1f5a6fa00fda1ff5d03a1042205a00411016afa54f41df49cf7
+78fd0a05340742022efddafc1dfffa00dcff97fc0cfd85ff9dff33fe4afb46f7a0f6bffd
+c208200ebd08f8fd2cf904fd8300b9fe30fdf9fd3bfcbdf8f8f8bcfa71fbc6ffb206460c
+600e7a0ada02dcfc18ffc30690077301c8fcb9fa96f9b1f8f1f6d9f6d5f946fcdafc72fc
+defc32ff6200e2ff6803380b530ddb0580fdbffb2ffeedfe63fd3cfc10fea603eb082908
+4101defd3b028f055606af067f03a9fe7afc56fe6b029206c5088508a408bf082206f301
+220040fe4bf85af4c0f590f689f786fee90548065003160174ffc8fdfcfb86fc9d003005
+9908d60a2609030326ff13026905e80222fe1dfbb5f9defad9fbedf805f69ff82afe26fe
+48fa5bfae5fc81fd48fcadfc15fe9afd4efd4ffe4901ac05d505de031f040c0384011f01
+d601c0033704fe03070248fe0cfe5001cb02770042fd55fc79fe3e001101e40108fe35f6
+59f08bf38400fe0b890ca80375fdb6fd7afdc6fb32f94ef6d2f245f01cf500fe4301c600
+6d0191034f08dc0b640afa064c06a408c70a760ce20b52072d0139fcc1fa74fccbfe1d00
+a001d700c8fb12f886f8defbeffe0aff7afd91fcdbfbf2fabcfd0903f706cc08e807d006
+1606db043602b4fdc2fb53fc49fcf8fc3cfdfafa4cfa1efea9036f0737078e05bf051d07
+88080f09990835081707610379ffc9fcbef9adf8a7fad2fd86010b05f005e9019cfbc6f6
+def51ffbac02f00668075104a0002f0119044f04a601e8fde8f899f45ef540fa83fd72fe
+ccffa7001a01ce023604ed0379035b0381011000b2007fffe5ff0807540d490943ffb0f9
+84f9bcfb0eff92029805c50421ffd2f920f99ffbd4fc1cfcbdfb29fa89f8a3fb0a00d8fe
+8cfa5cfa24ff8707400e870b8b0378fd66f9b4f85afd1402960034fa3ff73afc6b01f102
+da022e018dff7cfd7bfb0dfc8bff5c03b5045004c60464075d087206a6043304bd04a302
+80fec4fd0a02aa06e30410fe2efbedfe19020d029101beff0efcf3f90afdc1015c0091fb
+88fb46fec4002b02f5fe65fa06f9cdfadbfe6e0333060c04a1fe2cfb6dfbfafbf6f8bdf7
+b6fce602d206aa07ba0699035bfd0afa3cfbf6fdea0043020901c9fd96fc60fed4004701
+0dfe3cfc26fe0102f2061b0baa0bff06d701900146043f05ff0381011ffd97f829f5faf3
+b0f7defd4b0033fea2fa5df708f83cfd6a01560010fd1afdebfd2afc21f968f7c1f9ccfd
+73012903cfff59fb4cf923f9c0fda0050f09dc061904f0022c036003b002760353043802
+61ff63fedbfefbffc2019a010fff35fea5ffb2ffdcfac8f698f853fb00fdeffd42fda1fa
+05f8b7f7e8f80ffb7afc4bfcf4fab3fa49fc67fe1a038f063c059d035403ee0264038e04
+0c03cf0079004301c604a808d8094d09d2075d07b50706069501fcfb8ff8faf89dfb38fd
+26fdcffd0dff75005a027a03b0012cfd37fa63fa9dfca4ff78ffa9fb46f912fa6afb38fd
+4401ef05e507e706e3042502bcfe27fc6afb2afc3efd79feb8ff86fe91fb70fb22fe7300
+3d0212040a069b08cd086b05c70371059006f905f005130726063d007ff92af8c5f998fa
+bdfa43fabff935fa28fcf9fb63f87bf6fff839fef9027805ab06fc08eb0a210a3a08b805
+1b0242fe7cfc8bfdd2fef2fdb6fb45f9f9f7d0fab5ff560203029d0136039703a3018cff
+70feccfd50fdc6fdb7fd90fc50fd54016305e6063d06f803a701e3ff5ffdaefb6efcb8fd
+8ffe5ffe35fddefc74fe9201700372034c040406290639049e003efb4ef84bfba9ff9cff
+4ffc79fad6fa0cfde30064037102620060019703970359043906720596039602a8ffa3fb
+56fa94fa5dfb15fe1101af02170471054705c60264ff5bfd76fc15fce9fb4ffbb4fb6ffd
+e9fd11fda0fd48ff84001f01fb002e001bfe71fc39fd03ff7f00f601f303e1055f062404
+2e018c00c5006000f4ff98ff0bff40ff90004d01f601bf0287026601bfffcbfefffe8cff
+fafe4afdcefc1afd30fdbffd10ffb8005a00befdc4fb8afc3d002203b702f3005bfe52fb
+4dfbe3fed701b1020b03af0270013d00070097007f01ef02f6034e049f0326020b01aeff
+ccfe22ff66ff0dff13fecdfc5afc9ffc4dfcf8fbfcfb43fb62fadcfa85fc22fe92ffd400
+65015b01eb01e4022703310299ff1afddffb43fc28fed4fff900aa00f5fe86feb6ffbc00
+eb0060002e00c601f9020702e60012017d0106011d016201970028ff27fda4fb25fbb0fb
+68fd47ff92003201070185fff7fd07ff210279044d047b02bc001dff5dfeb9ffdc01a802
+e701880079ff18ff68ff3b00c30067014e02ab02ce024b024101e300ab00beffa8fe38fe
+05ff0e01fc026403fd01b6ff10feacfd26fe37ff55009900b1fff7fd7afc1bfcb0fc1efd
+cafcfcfc43ff38023a03d502e9016a0042ff75ffe600d1012701baff19ff2bffe9fe94fe
+6bfeccfe97ff8c004a01e50021004b00be00ee00a601f9014d016900e4fe4dfd50fc38fc
+b5fc58fc91fb1afb1ffb7bfbc3fb5cfcddfc0dfd90fd66fe50ff170007019e016b010301
+4500a1ff77ffacff1d018f03de04a003100151ff73ffa2007c013b0282026a01acff91fe
+06ff6d006101a4016d011a01d3002900ddfe7afdd3fc1efd30fe1bfff3fee9fd93fcc3fb
+cbfb1afcb4fc6bfe63006901420204035003d402a4011d018801390254025901fbff70ff
+a200f202c60486056b054c048302e200a8ff03fffafe51ffa3ffcbffb4ff94ff20007300
+a4ff74fec7fd4ffeb1fec2fd43fd67fd1cfd66fc67fba4fa48faa5faf0fb5bfd3afebdfe
+f1fe41fe2ffd60fcd5fbeafbbffcd9fe9a0124036503ae036604b6045f04bd032003af02
+1e02a60178014a01a70060ff10fe08fd52fc1ffcc0fcfbfd9afe3bfeabfd79fd95fdc0fd
+f9fd34fe7efedefe01ffccfe89fe75fe01ff9c006b02d502d501cbff7afd05fc8cfbf6fb
+0afdbcfe4c003e0102029202cd02e20239038103a3031e034c021a020302ab0212039802
+12022d016d00ffffe5ffcbffffff8f01ad033505660515045502f7000500f2ffaeff7ffe
+0afe67fe9ffe85fe72fec9fecffef2fd10fdb4fcd2fc23fd48fdb0fd51fe09ff9aff9fff
+9bff04008f00c8001a015001ad01a3025b03380499041b047a034002220176004a009800
+08010d025f0219024e021b025b011c00fffe3bfe5ffd79fc92fbbbfbc8fcc6fd62fe45fe
+aefd91fcacfb1ffb5cfabffa57fc0ffe84ffecff6effc4fe53fedefe5400050274030604
+0104bb03d402f301a1013a0180004400ba00eb00c300e9001e018f00b4ff30ffcbfe89fe
+62fe04fe8cfd5afdf8fcd7fc79fda9fd81fda4fd08fef5fef0ff4d006b006d00e7ffb8fe
+a8fd65fdc9fdf3fe47005601b901a20006ffe6fd4cfe3200fd01c0027802e80110016700
+40005900210105026c02b701070018ff16ff61ff6e00ba01b401480015ffacfe8efe00ff
+c4ff6700170181017101f600cdff43fe3cfd5efd85fe8aff97ff2fffdbfe1afebffd33ff
+fa009b010f01ccff31ffddff43019802f402510216026d02dd0258030f0317029b0065ff
+31ff01ffd3fe46ff64008c018401d4ff47fe42fea4fefbfedefe1cfebcfd82fdc9fdb6fe
+08ffb7fe17fec4fd58fe25ffe2fed2fd95fd3dfeacff5b0114021d02fa01eb01ad016b01
+9201bc01ad01f800080059ff39ffc4ffcbff4bff40ff65ff8cff9fff17ffc4fe09ffc2fe
+0cfed8fda9fe1100090191019e01da00acffa3fe01fea4fd4cfdbafc41fc92fc22fd05fe
+92ffec00b90174019f0037003500c9003801300140014401d5003100b3ff82ffe7ffbd00
+c4011a027f011b011201ae008dff21fefffc6ffc5bfc6efcbffc5ffdd9fe4d01ed020b03
+7a023501eaff34ff31ff1900c400e6001a014c0194017901680012ff83fef8fe32006301
+88015c010302980233020b01b0ff11ff54ffd8fffeff72ff99fee8fd4afd05fd46fdd2fd
+9bfec2fedcfdb2fc3ffcd0fccefdb8fe35ff53ff42ffbaff1c0178026603a1036603f402
+110254014c01d201bd01460041fe1cfd8dfdd0fe3d0073019d0127011901130110014d01
+2a01ab0099ff4cfe85fdcafc89fcf6fcf9fd28ff8fff04006600070002ff75fd79fc7afc
+0efdc3fd80fe61ff90006d0280048705dc0460030a020a012b008affe8ffaf00eb00bc00
+68002e00deff52ff08ff6aff06009b006c013c028002c70176005cff76feddfd22fe96fe
+7efe47fe00fe7dfdc5fc7ffcd4fceefcc2fc60fc63fc7cfd15ff570097008e00ed002a01
+67010e026b0209023e01c6ff6bfe2cfeeafe010059006500ca00410193015401c6003400
+e2ffb1ff55ff8bff3100a90002013d01070149004dffe6feeaff1d01580109017d00eaff
+36ff8afe3dfe8cfe79ff8100f600c200e50033010101430053ffd0fe90fedcfe29ff2dff
+81ff97ffe2ffbf0056010201c6ff4afe83fd09fe46ff6700be00f1007501a601be015001
+ab008900d600c4014602f1011501dfff50ff78ffc9ff0c002a00feff9fffaaff96ff96fe
+7efdf5fcfcfca1fd1dfe09fec4fdc3fd75fe16ff37ff0dff4bfe4ffd00fd7ffd40fe17ff
+bcffe9ff2a00ca00730101029702900228011fffdffd02fe03ff5800b901a102f802e302
+34022a0175003e001a00dcffb3ffcaff22009d00db00c400a70031005affebfe04ff44ff
+69ff8bffb4ffb7fff5fffcfffafef2fdd8fd42fe9cfe97fe89fec8fe6bff6e003601f600
+f4ff71ff8aff0b001001c001c901000257027a02e10294034c0458044d03d901190002fe
+effb5ffa0efafffa79fc89fdbbfd64fd44fd0dfe50ff7d0056018d012e012c0059ffb2ff
+92003a012c01830089ff25fed7fc93fcb1fd2bff2e00690099ffadfe5ffeccfef8ff5001
+2e0225029d017101b8017c0246035903de0239023802f402b903be037702e000aaff0bff
+b4febcfda5fc24fc45fcb6fce9fca7fc5bfc8efc6cfdd6fe3a003d01ba01540193003c00
+f2ff68ffd8febcfe6fff6e003a0176013701ea00e7003101fe002b0043ffe7fe87ffb500
+da010a025e01c70069009d001f01ee00f9ffa6fee5fd51fe16fff7ff0701020176ffbdfd
+cdfcbcfc91fd5ffe7efe3ffecbfda3fde8fd55fe00ffc2fff1ff03ffaafd20fdd3fd29ff
+720082012b0234029a019800d5ffb7ff8bff11ff75fefafde8fd32fe46ff8c004601a201
+f001830209038003c603b9031303a601450055ff10ff22ff1affaafe11fe24fe08fe46fd
+30fc8ffb58fc92fd74fecbfec5fe59ff5200ce00ab005e0088003601be01ba012601efff
+cbfe9cfe0dff9dffd4ffcfff0b001c00040024006200d700880110026202bf0217033c03
+e802de0168004effabfe70fe76fe8cfe88ff1801900248038602c4008afeddfc46fc78fc
+30fd40feb4ff16014402c4025d02d2014b012901b2012f023102ae01870074ff1aff71ff
+6b007701e201ce01f60148028a029302c401ff00a4007f00c8009c0032001b00f8fff7ff
+f5ff97ffdefe63fea0fefbfef8fe5afe9bfd43fd79fd72fe66ff16008c00db0029012a01
+71011402a902da029f022d02a2017d0174016c01e40054ff15fec7fd12fed3fed0ff5800
+34000a0017005200ab00f500f000a400650094001c01b2012f02220263012200cbfecafd
+8bfd1ffeb7febcfe2bfe8efd79fdf9fda4fe16ff69ff0100160111028d026a021802b001
+0001c800a4006d004800b4ff37ffedfe7efe02fee8fd75fe87ff8d000c0106016f00a2ff
+bdfe32fe75fefcfe88fff7ff490058007c0032010902b802b702ca019f008fffa3fee1fd
+2afda8fcf6fce6fdc4fe41ff56ff2efff3fee9fe3aff0d001801a901bd01ca01ce018901
+eb00e8ffdefe41fe10fe4afec5fe59ffe6ff35000f008affeefed9fed0ff1c012402f102
+3b030103bf02a4026d02240269011300dcfee4fd4dfdf2fc58fc00fc35fcd4fcf4fd20ff
+ebff8a00ee001e017f0107025d023802e6017b01a3000d0021004f00260099ffd3fe0ffe
+c6fd05fe79fe04ff66ffa0fff5ff3d007e00c000cd00e40012010801ee00dd009f001f00
+41ff6cfe03feeafd2ffe8cfe11ffdcffa90039014e015601740186015901d900350053ff
+dffe36ff2000f400fa0090006b00fa0072017601ea00f4ffc2ff56005d015302d102e902
+6d02b401b900c7ff4dff15ffc9fe36fe74fdc6fc9cfc07fdcffdbcfebbff9f007a016a02
+fd023e039c02000153ff04febbfd04fe62fed5fe29ff70ffacff4300ec0064019d013401
+7e00ecfff5ff870008012c01d80071001e00e3ffa9ff59ff3bfff6fe7bfe63febdfe40ff
+7eff35ff8ffed8fda8fd4ffe68ff6a00e1009a00fcff8fff99ff1400730053005c00f200
+b7011e02b101d90072009b00e900f300a50064006e00d8006f01ca01b40166011d01ac00
+6a0069002d0065ff0efee3fc7ffc18fd2ffe16ff9cff4cff88fe0cfee4fdeafd1afe85fe
+d2feeefe1aff60fffdfff4000a02e80212039302a5017a0099ff2cff28ff8aff4c004101
+ea012102dc015e0115010e014f0135019900feff5cffebfef3fe40ffb2ff0a0000001100
+47004c00180057ff3afe6afd47fd8efdedfdeffd98fdb3fd4efe79ffd800d6017902db02
+1d030403ad02e501180102014501af01b6015e010501be00de005301da0130022e02c401
+5401e8005500a7ffbafe09feb3fdc5fd35fe7efeecfe6fffaaffb9ff96ff6dff3fff14ff
+3cffbaff900049016e013801c9008900ea009c012a024602f7018c012501c1009200a200
+d90036014c01f4006400d1ff89ff9bffe3ff1a00e1ff62fffefe98fe4dfe52fe75fef1fe
+85ffc9ffacff61ff64ff92ffacff8bff55ff43ff52ffa2ffffff6900e4002001df005d00
+ecffccff3600bc0043019801b701bb014301ee0020017e015e019e00a6ffe3feecfe4dff
+9fffeefff8ffb4ff32ffb0fe86feddfe43ff63ff4affebfed8fe47ffebff760079004300
+19000e0043006e0089009a00b200f4006701fa0101024301310074ff87ff08006b006e00
+3c0041005a004900130084fff4feb6febffe3affcfff46005300d9ff2bff87fe4dfe61fe
+a7fe00ff48ff77ff52ff44ff7effeeff620036006effc7fe94fe78fe96fe0cff71ffd9ff
+44006a0054001e00e2ffe6ff2f006d0076006e00b80021015a015701d1002a00e1ffc8ff
+9dff56ff55ffcbff6100aa004d006eff86fe08fe15fe73fecffee7feeffe7dff4a009d00
+560095ff49ffcaff8800300146011b010001e700d500cf0031018c01b901bd0171012e01
+8700b1ff1fffdffe4fff19000f01ec013b020202ae018e019f01e901c601f900eeff1cff
+f6fe27ff35ff04ffa8fe5efe5bfe97fef3fe52ff64ff4fff33ff47ffceffa8006b017401
+2c011a015301b201d201ad01f600fdff77ff6fffefffbc002c011301e600b20096007e00
+57007f00bb00e900e300b5008b006100580061008d0090002f007dffbffe63fe5ffe84fe
+befe03ff59ffa9ffa9ff59ff02ffe8fe3bff94ffb6ffb8ffcfff4700f5006e0147019500
+c5ff4eff90ff4800f100030144000bffd1fd13fd30fdfffd18ff3d002301ae01e101d101
+b90188011e01720097ffcbfe5dfe89fed7fee8fe00ff21ff78fff1ff25001400e1ff0700
+8600d400ab00d2ffb8fef3fdd7fd74fe5cff5200e800fb00da009c008a0089006900f6ff
+25ff89fe48fe4dfe7ffe9efecafe43ff010097008400d2ff3cff58ff0e00fc00a701e201
+ff0126026e0297025502ff01b9016001ef009600d800ae019e020e03b102f20103013a00
+94ffc7fe11fe80fd78fdf1fda2feb2ff8e00fb000901d900bd009f0077002900ceffa0ff
+a4ff3c004001e701e7016301dd00f1004f0187017401f8008a005a00460047000600c6ff
+d6ff03005800a100c300c800a9008a004d00e8ff84ff53ff67ff68ff33ffc1fe5bfe63fe
+c0fe4bffbbffd9ffd7ffd4ffb5ff77ff20ffc4fe75fe54fe96fe27ffcbff5600c5001901
+3d014f015b017401b501a9015b01d400e9ff26ffa7fe9dfe12ff66ffcfff5800a500a100
+4000beff61ff60ff75ff45ffcffe2bfe0dfeb4fed1ffff007201050113003cff22ffb9ff
+9d0049019c01a3015f01e0000e001eff39fe7afd45fd7afd11fef8fe7affb0ffd8ffe0ff
+01000a0005000900e7fffaff4b00bf002d01400106018400c4ff09ffb5feebfe7dff2c00
+87006e002700150052009c00c4007e00dcff25ffa8febdfe3affecffa700fe00ee00c400
+9f008f007b004d0036006100b600f300e70096002f00f7ff16008a00180154013301f100
+bb00ae00d100ed00bb006600f2ff6bffeafe4cfeb4fd28fdd4fcf7fc89fd77fe77ff6700
+01011601cc003000a2ff8cffe5ffb000960107021702d60169013b015101680130019a00
+0200bbffd6ff4d00bf00eb00e2006f00a6ffdffe64fe58feb9fe5effc9ffe9ffadff37ff
+f6fed9feaafe2bfe6efdecfc08fdaffdbafeefffd1004d013601c6009d00a800ee001701
+d300990068006300b70012016801ac01a9015501ce00570039007e00d600040122012a01
+dd003e006affdefeddfe34ffc7ff2b0055004d00f3ff77ffd1fe72febdfe5aff08007300
+6400370047007a00a000ab00ac00c80006011d010901d700900070006300580057005f00
+b1000d010101c700a700cb0036019a017a01910058ff85fe57fee3fec7ff97005701ce01
+e401d00181013a0106019100050083ff35ff27ff3aff71ffc7ff4100b00010012401bc00
+4b00f3ffd7ffe7ffddffb9ff75ff78ffecff490055002b00060031009900db00b7008200
+6c007700a100ab00ac00a6006400abffacfe34fe77fe6eff920038013f01c60058003200
+430056002700b9ff42fffcfec7fe8ffe7efec6fe5aff2300e6005f018d01600105019200
+31002e004e005e0051004a006500a900c90079000e00c0ff9bff83ff60ff4aff49ff63ff
+99ffb9ffb8ffb5ffa9ffbefffdff36007400a300ab00ae00a0006e0041000300d7fff3ff
+210047002c00c0ff76ff5fff76ffbbfff4ff5700cb000a010501bf0082008700ff00af01
+24022b02ad011d01c900ba00d700ea00e600ba00a500b500e70031013601eb005f00c9ff
+7cff44ffe4fe7cfe5bfee5fef5ffe4004401f4005c00f9fff2ff5700b200af0063000b00
+fbff3900ae00f400fc00d8006000dcff44ffe7fe03ff64fff1ff89003501b301e301a501
+f4003a00b7ff9effbbffe3ff07002d0050006400a500e100fa00d50069001900dcff95ff
+18ff79fe15fe04fe5afee0fe37ff73ff95ff8cff67ff2bff01ff1cff88fff4ff36005c00
+6c0079007b007b00700066007800a000a2005e00feffafffa9ffc7ffbcff5dffddfe91fe
+83feecfe8fff1700680063001f0092ffd0fe18feaefdc6fd49fef5fe56ff6dff95ffd8ff
+1f003a001900fcffdeffb7ff80ff41ff44ffb5ffa6008601bf016101af001300beffc7ff
+00004e00a600ee002c012501ef00b800ba00f900350146011201ce0077002100bcff46ff
+0dff06ff38ff65ff81ffa3ffb3ffbcffaaffafffb1ff87ff5aff32ff5bffc5ff4700fa00
+9201d6019601e5002c00baffc9ff4300c600fc00e000a4007000680064003b00c6ff33ff
+05ff4bffdbff7f00f8001001c700340071ffcbfe6cfe71febffe36ffcbff5200a800d800
+f800f400d5006f00eaffc0fff5ff6900c700b2005c0044008a00fa0060016e013d01fd00
+a70056001f001c0049008800a800ac00ab00a30087004500fbffabff6fff79ff99ffd4ff
+05001e006100b100e800da0079000000a3ff71ff79ffb7ff0f006b00b000c5008c000f00
+91ff3dff26ff54ffb1fff9ff260052008900cb00ee001a01590176017b013601ba004400
+dbff9cff6fff4eff25ffc9fe8cfe84fec5fe5fff0300b9003c0141010b01aa003c00deff
+8dff4aff35ff4eff6fffaeffe9ff230063007a0068003800250032005f00950080005500
+38006500dd00260134010101a20058002200e2ffa9ff55ff00ffe3fed3fef5fe41ff89ff
+d9ff0f0015000100f7fffaff1c0049008400d00002011701d4004400beff92ffb7ff0f00
+720079005b002300e0ffcaffc4ffd0ffdefff4ff0f0019000400faff0800070015001a00
+19000500c1ff76ff4fff7affeeff4e0059002d00feff06005a00ad00eb00fc00e200dd00
+f000fd00fd00ed00c5007b0041003d0060009600ac0092008a009f00ba009e002800a0ff
+39ff08ff11ff40ff8cffe3ff2a005f007d009900c900d0009e004e00d9ff82ff78ff95ff
+c6ffeefff8ff1a006300a400d200ea00f30008010601ce006400d6ff5aff24ff25ff40ff
+61ff7cffa3ffd5fff4fff5ffe3fff0ff0a0008000900edffc9ffdcff0800350058004e00
+080096ff39ff39ff77ffc2fff4ff0a006100d3002a0129019500e6ff79ffa5ff4000c700
+d6004f00bbff59ff3fff48ff44ff42ff34ff4bff67ff66ff66ff71ff8dffafff07009c00
+2101530110017e000000e8ff23007b00c200d800e300f700f700e400b7006b0046004b00
+56005100ffff95ff4aff5fffe2ff7000d900e300b900a800ad00ad006f00070098ff59ff
+57ff80ffd5ff150028000500e7ff050033003800daff49ffecfefdfe87ff5300ef002901
+2601160122014c016b014601f1006b00c3ff40ffd4feacfec1fe28fff1ff8f00d300b000
+6600290014001500d8ff99ff91ffdbff4a0079003c00b3ff53ff58ffbbff14001600d3ff
+89ff80ffb6fffdff0800eeffbbff88ff76ff69ff85ff9fffc9ff20007200b600e000fd00
+fc00da007c00020097ff46ff45ff68ff93ffdbff2d005400530051005d008a00a6008200
+44003f009f002b017b014801af000f009dff61ff58ff45ff1bfffefefdfe2fff7bffd6ff
+28004d004c0037002b003e007d00b100a600650024001d00470077009700ae00d8000a01
+ff009c00020086ff7cffc3ff32007b00730060005a009000d70004011501f200a4001700
+8fff42ff4cffb7ff23006a0059001d00ecffacff82ff69ff5eff5aff52ff3fff18ff10ff
+2aff75ffdeff3a008b00ac00a4008e008400af00eb000c01dd007b004500390043003a00
+16000f002a00540052001b00f1fff2ff2c0076009b00930082005b0026000100c3ff95ff
+80ff6dff72ff87ffb5fffeff39003d00f8ff91ff44ff2fff50ff89ffbefff1ff1a004e00
+8000bb00fb0011010201b5004200e2ffb6ffc8ff09004f006a006d004f002a001b002300
+20000e00fefff0ff0c0035004d004100f9ff98ff3fff1bff21ff35ff47ff45ff5bff8cff
+ddff370068004e00f9ffaaff81ff9ffff2ff40008000950096009b009c00a800b500c000
+dc001501540173015301ec0081004d0052007e00a800a8008a006d0045001900fefff2ff
+e8ffd0ffafff9fffa8ffbbffc8ffd3ffdffffdff16001500fdffdfffd1ffcfffd6ffe3ff
+f5ff170046005a0053004d004d00540067009000c100fd002a012401e50081002200d4ff
+a6ff9effbcfff3ff23005100690076008a008a0075004300feffa1ff35ffdcfeb9fee6fe
+38ff7fffabffcfffd8ffccffc2ffa8ffaeffc6ffd3ffc8ffa5ffb0fffeff6700b200b900
+83004c0031001900f8ffcdffb5ffbeffedff32005700600046001600f5ffd9ffc6ffc5ff
+c8ffc9ffd9ffeefffdff0100ecffcfffbdffafffa1ff94ff7fff75ff79ff84ffb6fff9ff
+310052004a0035001200f2fff0fffbff13002a00330041004f005d0072006e005b003500
+0b00e9ffbfffbaffc7ffdbfffeff10001800feffdfffcbffbdffd6ffffff2a004c005d00
+5900480035001a000300f5fff0ffeffff4ffefffeafff0fff9ff0c001a0026003a004000
+3d003c0037002a001d000b00fdff07001c002d003d00450045004a004a0043002c000000
+d7ffb1ff92ff90ff99ffa6ffbdffe4ff120049008000aa00d700ea00eb00d9009d005f00
+2300fafff3fffcff10002a003d0043004b004b0043005400720068003b000200cfffbfff
+c6ffd3ffd1ffccffd2ffc6ffb6ffa7ff98ff9dffb1ffb1ffa2ff97ff96ffadffc9ffddff
+e6ffe1ffe1ffeeff0e002900310033002b001700090008000700f5ffd8ffcbffc4ffcdff
+e1ffe9fff4ffffff0a001c0025001900fbffc8ffa1ff93ff92ffb1ffc9ffd7ffe6ffd7ff
+c8ffc1ffc3ffd2ffd8ffd9ffc6ffa2ff8aff88ff9bffc1fffeff1700180019000c000000
+dcffa9ff8cff8dffa3ffc3ffdcfffeff2b00480074008b008a0083006e0066004c003200
+24000100e8fff7ff1500320054005b0058005b005400420037003b0038002a000b00f9ff
+f7ff01000f00f6ffe5ffecffffff0400e4ffc5ffaaffa3ffc0ffe0ffebffe7ffebff0b00
+500085009b009a0089007d006c005f004e004600500060006f0063004500250008000600
+1700240037002d00f5ffc1ff98ff84ff87ff99ffa6ffa7ffb4ffb8ffbfffdcfffaff1300
+1700fcffe5ffe8ffe8fff7fffaffeaffdeffc8ffcfffdefff5ff0f001d003f005b007900
+7c006b005f00420028000400f7fff7fffeff1e002a0029000b00ebffd1ffa2ff88ff89ff
+aefff6ff3b0045002400f6ffc8ffc6ffc6ffddfff7fffcff150012000300f3ffe7fffaff
+0700fbffd1ff97ff69ff6dff84ffa9ffd6ffedff120029002a001900fcffebffd7ffe9ff
+020015002d00280028002a0027001b000800fcffecffddffd6ffd7ffd8ffd8fff1ff0a00
+08000900f9fff5ff1000270022000700f0ffe7ff040017000800e6ffacff88ff85ff9aff
+bcffdaffecffe3ffd1ffc8ffdafffaff160029001e00f7ffcfffc5ffc7ffcbffddffeaff
+fcff2d0058006a0060002c00edffb6ffa9ffc4ffe2fffdff0900060009000700fafffaff
+e4ffcaffc2ffaeffa3ff90ff87ff97ffb9ffe6fff8fff9ffefffddffcdffc7ffc2ffb5ff
+b7ffcdfff9ff2a0053007600880081007900750064004c001e00efffd8ffe6ff07001600
+0f00ebffaeff88ff85ff89ff9dffbfffecff190038003c002100f8ffd0ffc0ffafffa9ff
+bfffdfff0f0028002a001b00feffecffe4fffaff110021002600160019002c0048005800
+73008a0088008c0083007200650055005d006a006a006a005c0043000e00d6ffbdffb8ff
+d8ff05001b0017001900180009000900f5ffd1ffbdffb5ffbbffd1ffeeff0f003c005800
+680079008400980093008100730068006c006700580048003b002b0028002a0027003200
+3b0034002300160006000a00180018001a000b000900f9ffddffd3ffc4ffc9ffb0ff72ff
+47ff42ff6cffa3ffe6ff060008000300f3fffdff09001900280029002900280033004300
+50005d0051002e0014000700080017001900170019001400280044004900470032001400
+0900070016001b000300daffa7ff8cff82ff91ffaaffa7ffa6ffa9ffb3ffe0ff03000900
+0a0004001500320057007e008b0077003e001a000d000500100025001f00fdfff8fff8ff
+0c002a0028002b001a0020003800360042004700310026001300f6fff8ff060015001b00
+0d000000eeffe7ffe8ffebfffafff7ffe7ffd9ffc8ffd1ffe7ffe7fff1fff9fffbff0e00
+190017000800070017001800180019001300f9ffdfffd6ffdaffeafff8ff07000a00fbff
+edffddffd3ffe1ffe9ffe9ffe6ffebfff8fff9fff8ffebffe5ffeaffe5ffeaffe0ffd4ff
+d9ffd6ffdaffe7ffe9ffe6fff5ff0400110023002a0025000e00f4ffe7ffeafff7ff0700
+0a00fbfff9fff0ffe5ffeaffe6ffe9ffe7ffe8ffe8ffe8fff6fff9fff8fff1ffdcffdbff
+f3ff10002e003800280019000a00050015001a00190014000100f4ffe4ffd4ffd8ffe7ff
+060016002300380030002900230014000000e5ffd4ffc9ffd3fff4ff11001d000d000500
+0f001c003000370028001700fbffe7ffe8fff1ff0400100021002b0027002a0027002a00
+28001a000c00f2ffdaffd5ffdaffd3ffe2fffafff9fff7ffeaffd8ffc9ffc5ffc9ffc6ff
+cdffe4ff020022003c0037001600fbffe9ffe5fffcff1f002e002000170018001a002b00
+28000a00ecffceffb9ffb6ffbdffd5fff6ff0e001b0015000800f8ffe9ffe9ffd3ffb8ff
+b7ffb7ffb7ffb9ffb5ffbaffc7ffd9ffe6ffe8fff3ff02001c002e002100120007000800
+090007001900180024003800360044004400330022000100e4ffd7ffd7ffd6ffe5ffe0ff
+c9ffc9ffc4ffd0ffd5ffc4ffc9ffc6ffd8fff7ff0600210036003a0038003a0035002400
+14000700070009001300330046004c0043002c000700daffc6ffc7ffd9fff7ff16002600
+34003e002c002c001d000100f4ffe8ffe9ffe8ff050019001500250022000e000200f2ff
+e6ffeaffe7ffe9fff6ff050023002c0029001d00f6ffe1ffd5ffd8ffecfff7fff9fff7ff
+f7ff0200120023002c00240012000800080009001800280036003c0036003e0028001100
+feffe3ffebfff9ff070018000c00fafff9ffefffe5ffe9ffe8ffe8ffe8ffe8fff9ff1600
+350054005e004700240010000100f9ff0d001800170019000900fbfff6fffafff7ffffff
+0c000200f6ffe2ffc6ffb7ffb7ffd0fff1ff0d002c0046004300350020000300f7ffe8ff
+e7ffeaffd9ffd7ffd8ffd5ffd9ffd2ffc4ffcaffd9ffe8fff7ff06001600180021003400
+40004d0041001f000500e4ffd9ffd6ffd5fff0ff03001b002e00270027001000f1ffd5ff
+b4ffaaff97ff95ff98ff8fffafffdaff130041004d005800490037001e00fafff8fff7ff
+01000c000100f3ffe4ffedff0900190027002b00280021000600e7ffc9ffaeffa7ffa6ff
+bcffd7ffe7fff6fff7ff04000700160034003b0032001000f4ffe9ffd6ffe6ff03000800
+120019001d002d00240013000700e4ffd9ffe5ffe9fff3fffafffeff13001a0016001c00
+140009000600fbffe9ffe7fff4fff8ff00000a0009000500f4ffd1ffb8ffb6ffb7ffc1ff
+ddffffff0d000000f2ffe4ffedfff7fffaff0800fafff6fff8ff08003000400050005c00
+5600460025000800eaffcaffc4ffd2ffdaffd3ffdfffeaffe7ffe9ffe7ffe9fff8fffaff
+f6ff0400090006000b000100f7fff9ff0d001700180028001e00090008000a000000f7ff
+f8fff9ff0c001a0018000a00f9ffecffe5fff1ff00000f001b0014000500f7fff8fff9ff
+f8fff9fff8fff6ffffff0c0004000d001b002c0027000900fbffdcffd6ffd1ffc0ffd3ff
+d5ffddffe9ffe9ffe7ffd7ffe6fff7fff9ffefffdcffd5ffdcffeefffafff6ffe5ffd7ff
+c8ffc7ffd2ffecff0d00240028000900f7fff7fffbff07000900faffe7ffffff14002300
+2000f6ffe4ffd4ffdaffe8ffe8ffe9ffd9ffd6ffd5ffe1ffeaffecfffbfff5fff9fff7ff
+f7ff09000800080008000700090006000c001d002b0028002a0019000800090003001d00
+330041004b004800480034001600f8ffeaffdaffd4ffe3ffefff03000b00230022000600
+f5ffd8ffd6ffd7ffefff05001800390036003c00340029002800180029001d0008000900
+0400180035003500260029002800290039003a002e001100f9fffaffefffe8ffe5ffd2ff
+c6ffdbff07002800380030001300f3ffe5ffe9ffe8ffe8ffeafffaff0900080016001900
+170018001e003500350024001200f2ffd6ffc7ffc8ffc6ffcfffedff03000c000100f8ff
+f7fffbff0700fafff6fffbffeaffe7ffe9ffe5fff2ff130030003700280017000a00f8ff
+f8fff9fff6ff020007000d0019001a002a00290018000b00f8fff8fff1ffdbffd9ffd0ff
+caffdbffecfff7fff9ff05000b00fbffefffdcffdafff6ff120034004c005a0058003b00
+2a001b0020003600390036001c000200f5fffaff080009000900fcffeeffdbffddfff0ff
+02001e0012000800f6ffd7ffe6fff5ff10002500320037001d001a00140007000800f7ff
+e9ffe8ffe7fff2ff040009000700090007000b001a0029002a001a001700170021002e00
+20001400feffe3ffd5ffc7ffc7ffd5ffe5fff4ff03000f00220027000d00f2ffe7ffe9ff
+f8ff09000800060013001b0011000000f4ffe0ffd9ffe9fff9ff060009000800ffffecff
+e6ffeaffe6ffecffe3ffd7ffd6ffc8ffc6ffc7ffd3ffd8ffdeffedffe3ffeffff8fffaff
+080008000700140028001f000e00fffff9fff2ffe8ffe6ffebff06001900330033000d00
+0000edffebff020006000b000400fafff6ffebffe6ffeaffe9ffdfffd4ffddffeefffbff
+0b00070009000900f8ff040007001100150003000b0005000c0018001800180016002600
+290030003d00310027002a0027002b003900390039002e0026002d001e00180014000400
+0a000600f8ff0800090006000b00fbfffafff0ffe8ffe4ffd4ffd7ffd8ffe7ff06001500
+25002d001e001200f9ffe4ffe9ffe9fffbff080008000a00fafff9ffedffecff03000800
+070009000500f8ff0700190016001a001000fcfff8fff3ffe4ffecfffafff7fff9fff8ff
+eaffe6ffeaffe6ffeaffe1ffd4ffd9ffd5ffd9ffd6ffd7ffd7ffd6ffe4fff0ff0a002000
+310039003d00480039001700fcffe9ffe6fff3fff8fffeff0a000b001e002a0029002800
+2900280029002a0027002f001b0006000500f7fff7fffafff6fffafff8ffedffe6ffe9ff
+e8ffe7ffeaffe5ffecfff7fff9ff0600090010002500290023000f0008000500f6fff9ff
+f8fff7ff0700080010001e000d000a000200faff0900080018001a0015001c000b000800
+07000a000300f5fffafff7fff8fff8fff8fff8fff7fff9fff7fffafff2ffe6ffe9ffe8ff
+e8ffe8fff6ff0700060013001b0015001e002c00250016000700f8ffe9ffe6fff5fff8ff
+00000e0002001200130007000700f9fff7ffebffe5ffeaffe5fff2fff9fff8fff8fff8ff
+f8fff9fff8fff7fff9ffecffe7ffeaffe7ffe9ffe7ffe9ffe8ffe7ffe8fff6ff08000700
+13001b0015001c00110008000600f7fff8fff9fff8fff8fff6fffafff0ffe3ffeffffaff
+f8fff9fff9fff8fff8fff7ff030013001a0012000000f7fff8fff8fff8fff8fff7fff9ff
+f7fff9fff7fff9fff7fffcff0b0006000a000700f9fff9ffeafff1ff0000190030002100
+14000300f7fff8fff8fff7fff8fff7fff7fffbfff0ffe6ffe7ffebfff9ff0a000700f9ff
+03000b00070008000b000100f9fff4ffe8ffe6ffeafff5ff0800080007000c00fefff8ff
+f2ffe7ffe9ffe9fff8ff08000700080007000a00fffff6fff9fffafff6ffe7ffe9ffe9ff
+e7ffeaffe6fff1ff02000800080006000c001800190016000b00f8fffaffedffe6ffebff
+e6ffecffe5ffecfff7fffaff07000a0007000800090007000a000100f8fff7fff9fff6ff
+f9ff0600080012001b0016001500fefff9fff4ffe7ffe8ffe9fff5fffafff6fff9fff8ff
+f6ffffff0a000700080009000600190018000a000a00fdfff8fff6ffffff06000c001800
+0800060009000900fefff4fffcfff4ff000008000a000500f8ff080008000800fdfff5ff
+fbfff6fff8fffbff0c0005000a00180018001a000a0011001c0015001b0016001b001400
+07000800090008000800090006000a0007000e001a00160019001700180018000a000800
+fefff5fff9fff7fffafff5ffe6ffe9ffe7ffe8fff4ff0300160016002200250014001a00
+170018001700180019000a0008000900070008000900070009000600f7ffe7ffe7fff6ff
+f8ff02000c000600090008000800070007000900f9fff6fffaffecffe7ffe9ffe8ffe7ff
+e8ffe8ffe9fff9fff8fff6ff0700070012001b0017001a00170019001800190018000b00
+fbfff6ff040007000f001b0018001500060009000900f8fff8fff8fff8fffaffefffe6ff
+e8ffe8ffe7ffe9fff8fff9fff6ff060008000f0025002b00260012000600f6fff9ff0900
+0700160018001900100004000c0005000d0018001900170009000800fcfff6fff9fff9ff
+f3ffe6ffe8ffe8ffe8ffe8fff6fffafff5ff0500080008000300f0ffe7ffe8ffe9fff8ff
+0900070014001a0015001c000c00