From: "Florian Aßmann" Date: 2007-06-27T00:58:48+09:00 Subject: [QUIZ][SOLUTION] LSRC Name Picker (#129) --------------090300050108040203090808 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi, my minimalistic approach uses the main.rb as data storage with the __END__ keyword. So I don't need any 3rd party libs doing the persistence stuff for me. I also tried to build a GUI but shattered a whole day on wxRuby. Features: * persitence + test suite * multiple picks > ruby main.rb --pick 2 * eats everything, not just names, just needs TSV with header (see example.tsv) * no sql, no extra files * reads Tab-Separated-Values from stdin or file > cat example.tsv | ruby main.rb --list unlucky > ruby main.rb --list unlucky --from example.tsv * ... What so ever, have a try... :D Cheers Florian --------------090300050108040203090808 Content-Type: application/x-ruby; name="lucky_filter.rb" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="lucky_filter.rb" IyAoYykgQ29weXJpZ2h0IDIwMDcgRmxvcmlhbiBBw59tYW5uLiBBbGwgUmlnaHRzIFJlc2Vy dmVkLgoKbW9kdWxlIE5hbWVQaWNrZXIKICBjbGFzcyBMdWNreUZpbHRlcgogICAgcmVxdWly ZSAnZGlnZXN0L3NoYTEnCiAgICByZXF1aXJlICd0aHJlYWQnCgogICAgRU9EID0gREFUQS5w b3MKCiAgICBhdHRyX3JlYWRlciA6YXR0cmlidXRlcywgOmF0dGVuZGVlcwoKICAgIGRlZiBp bml0aWFsaXplIGxpc3QKICAgICAgQGF0dHJpYnV0ZXMgPSBsaXN0LnNoaWZ0Lm1hcCB7IHxh fCBhLnN0cmlwIH0KCiAgICAgIEBhdHRlbmRlZXMgPSBIYXNoLm5ldwogICAgICBsaXN0LmVh Y2ggZG8gfHJvd3wKICAgICAgICBuZXh0IGlmIHJvdy50b19zLmVtcHR5PwoKICAgICAgICBr ZXkgPSBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KCByb3cudG9fcyApCiAgICAgICAgQGF0dGVu ZGVlc1sga2V5IF0gPSByb3cubWFwIHsgfHZhbHVlfCB2YWx1ZS5zdHJpcCB9CiAgICAgIGVu ZAoKICAgICAgQHVubHVja3kgPSBAYXR0ZW5kZWVzLmtleXMgLSBEQVRBLnJlYWRsaW5lcy5t YXAgeyB8cm93fCByb3cuc3RyaXAgfQogICAgZW5kCgogICAgZGVmIHBpY2tfZm9yIHJlY2ll dmVyCiAgICAgIEB1bmx1Y2t5LmVtcHR5PyBhbmQKICAgICAgcmFpc2UgSW5kZXhFcnJvciwg J0hvd2x5IGNvdywgeW91IGdvdCAxMDAlIGx1Y2t5IGF0dGVuZGVlcyEnCgogICAgICBzeW5j aHJvbml6ZWQgZG8KICAgICAgICBsdWtlID0gQHVubHVja3kuYXQgcmFuZCggQHVubHVja3ku c2l6ZSApCgogICAgICAgIGRlbGl2ZXJlZF90bz8gcmVjaWV2ZXIsIGx1a2UgYW5kIGJlZ2lu CiAgICAgICAgICBGaWxlLm9wZW4gREFUQS5wYXRoLCAnYScgIGRvIHxmaWxlfAogICAgICAg ICAgICBmaWxlLmZsb2NrIEZpbGU6OkxPQ0tfRVgKICAgICAgICAgICAgZmlsZS5wdXRzIGx1 a2UKICAgICAgICAgICAgZmlsZS5mbG9jayBGaWxlOjpMT0NLX1VOCiAgICAgICAgICBlbmQK ICAgICAgICAgIEB1bmx1Y2t5IC09IFsgbHVrZSBdCiAgICAgICAgZW5kCgogICAgICBlbmQK ICAgIGVuZAoKICAgIGRlZiBsdWNreQogICAgICBAYXR0ZW5kZWVzLmluamVjdCBBcnJheS5u ZXcgZG8gfHNlbGVjdGlvbiwgYXR0ZW5kZWV8CiAgICAgICAgdW5sZXNzIEB1bmx1Y2t5Lmlu Y2x1ZGU/IGF0dGVuZGVlLmZpcnN0CiAgICAgICAgICBzZWxlY3Rpb24gKyBbIEhhc2hbICpA YXR0cmlidXRlcy56aXAoIGF0dGVuZGVlLmxhc3QgKS5mbGF0dGVuIF0gXQogICAgICAgIGVs c2UKICAgICAgICAgIHNlbGVjdGlvbgogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAog ICAgZGVmIHVubHVja3kKICAgICAgQGF0dGVuZGVlcy5pbmplY3QgQXJyYXkubmV3IGRvIHxz ZWxlY3Rpb24sIGF0dGVuZGVlfAogICAgICAgIGlmIEB1bmx1Y2t5LmluY2x1ZGU/IGF0dGVu ZGVlLmZpcnN0CiAgICAgICAgICBzZWxlY3Rpb24gKyBbIEhhc2hbICpAYXR0cmlidXRlcy56 aXAoIGF0dGVuZGVlLmxhc3QgKS5mbGF0dGVuIF0gXQogICAgICAgIGVsc2UKICAgICAgICAg IHNlbGVjdGlvbgogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAogICAgZGVmIGFsbAog ICAgICBsdWNreSArIHVubHVja3kKICAgIGVuZAoKICAgIHByb3RlY3RlZAogICAgZGVmIGRl bGl2ZXJlZF90bz8gcmVjaWV2ZXIsIGx1a2UKICAgICAgcmVjaWV2ZXIucmVjaWV2ZWQ/IEhh c2hbICpAYXR0cmlidXRlcy56aXAoIEBhdHRlbmRlZXNbIGx1a2UgXSApLmZsYXR0ZW4gXQog ICAgZW5kCiAgICBkZWYgcmVzZXQhCiAgICAgIHN5bmNocm9uaXplZCBkbwoKICAgICAgICBG aWxlLnRydW5jYXRlIERBVEEucGF0aCwgRU9EICMgVE9ETzogd3JpdGUgZmFsbGJhY2sKICAg ICAgICBAdW5sdWNreSA9IEBhdHRlbmRlZXMua2V5cwoKICAgICAgZW5kCiAgICBlbmQKCiAg ICBkZWYgc3luY2hyb25pemVkICZibG9jawogICAgICAoIEBtdXRleCB8fD0gTXV0ZXgubmV3 ICkuc3luY2hyb25pemUgeyBibG9ja1tdIH0KICAgIGVuZAoKICBlbmQKZW5k --------------090300050108040203090808 Content-Type: application/x-ruby; name="main.rb" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="main.rb" IyAoYykgQ29weXJpZ2h0IDIwMDcgRmxvcmlhbiBBw59tYW5uLiBBbGwgUmlnaHRzIFJlc2Vy dmVkLgojCiMgVXNlZCByZWNvcmRzIGFyZSBzdG9yZWQgYXQgdGhlIGJvdHRvbSBvZiB0aGlz IGZpbGUKIyBUaGlzIGZpbGUgaXMgd3JpdHRlbiBmb3IgdGhlIHJ1YnlxdWl6IGxzcmMKIwoj IHNlZSBydWJ5IG1haW4ucmIgLS1oZWxwIGZvciBjb21tYW5kIGxpbmUgb3B0aW9ucwojCiMg Q2hlZXJzCiMgRmxvcmlhbgoKUlVCWV9CSU4gPSAnL3Vzci9iaW4vZW52IHJ1YnknICMgY2hh bmdlIHRoaXMgdG8gcnVuIHRoZSB0ZXN0IHN1aXRlCgptb2R1bGUgTmFtZVBpY2tlcgogIFVT RSA9ICdMb25lU3RhciBSdWJ5Q29uZicKICByZXF1aXJlICdjb250cm9sbGVyJwplbmQKCk5h bWVQaWNrZXI6OkNvbnRyb2xsZXIubmV3KCBBUkdWICkucnVuCgpfX0VORF9fCg== --------------090300050108040203090808 Content-Type: application/x-ruby; name="test_suite.rb" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="test_suite.rb" IyAoYykgQ29weXJpZ2h0IDIwMDcgRmxvcmlhbiBBw59tYW5uLiBBbGwgUmlnaHRzIFJlc2Vy dmVkLgoKcmVxdWlyZSAndGVzdC91bml0JwoKbW9kdWxlIE5hbWVQaWNrZXIKICBVU0UgPSAn VGVzdCcKZW5kCgpjbGFzcyBMdWNreUZpbHRlcl9UZXN0IDwgVGVzdDo6VW5pdDo6VGVzdENh c2UKICByZXF1aXJlICdsdWNreV9maWx0ZXInCgogIGRlZiBzZXR1cAoKICAgIEBsZiA9IE5h bWVQaWNrZXI6Okx1Y2t5RmlsdGVyLm5ldyBBcnJheVsKICAgICAgWyAnTmFtZScsICdDb21w YW55JyBdLAogICAgICBbICdGbG9yaWFuIEFzc21hbm4nLCAnT25pdmVyc3VzIE1lZGlhJyBd LAogICAgICBbICdCaWxsIEdhdGVzJywgJ01pY3Jvc29mdCcgXSwKICAgICAgWyAnU3RldmUg Sm9icycsICdBcHBsZScgXQogICAgXQoKICAgIEBjb250cm9sbGVyID0gT2JqZWN0Lm5ldwog ICAgZGVmIEBjb250cm9sbGVyLm1ldGhvZF9taXNzaW5nIG1ldGhvZF9zeW0sICphcmdzCiAg ICAgICggQG1pc3NlZCB8fD0gSGFzaC5uZXcgKVsgbWV0aG9kX3N5bSBdID0gYXJncwogICAg ZW5kCgogIGVuZAogIGRlZiB0ZWFyZG93bgogICAgQGxmLnNlbmQgOnJlc2V0IQogIGVuZAoK ICBkZWYgdGVzdF9waWNrX2ZvcgogICAgaGlzdG9yeSA9IEFycmF5Lm5ldwoKICAgIEBsZi5w aWNrX2ZvciBAY29udHJvbGxlcgogICAgbWlzc2VkID0gQGNvbnRyb2xsZXIuaW5zdGFuY2Vf dmFyaWFibGVfZ2V0KCA6QG1pc3NlZCApCiAgICBhc3NlcnRfaW5zdGFuY2Vfb2YgQXJyYXks IGN1ciA9IG1pc3NlZFsgOnJlY2lldmVkPyBdLAogICAgJ1Nob3VsZCBiZSBhbiBpbnN0YW5j ZSBvZiBBcnJheS4nCiAgICBhc3NlcnRfaW5zdGFuY2Vfb2YgSGFzaCwgY3VyLmZpcnN0LAog ICAgJ1Nob3VsZCBiZSBhbiBpbnN0YW5jZSBvZiBIYXNoLicKICAgIGFzc2VydCAhIGhpc3Rv cnkuaW5jbHVkZT8oIGN1ci5maXJzdCApLAogICAgJ1Nob3VsZCBub3QgYWxyZWFkeSBiZSBw aWNrZWQuJwogICAgaGlzdG9yeSA8PCBjdXIuZmlyc3QKCiAgICBAbGYucGlja19mb3IgQGNv bnRyb2xsZXIKICAgIGFzc2VydF9pbnN0YW5jZV9vZiBBcnJheSwgY3VyID0gbWlzc2VkWyA6 cmVjaWV2ZWQ/IF0sCiAgICAnU2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIEFycmF5LicKICAg IGFzc2VydF9pbnN0YW5jZV9vZiBIYXNoLCBjdXIuZmlyc3QsCiAgICAnU2hvdWxkIGJlIGFu IGluc3RhbmNlIG9mIEhhc2guJwogICAgYXNzZXJ0ICEgaGlzdG9yeS5pbmNsdWRlPyggY3Vy LmZpcnN0ICksCiAgICAnU2hvdWxkIG5vdCBhbHJlYWR5IGJlIHBpY2tlZC4nCiAgICBoaXN0 b3J5IDw8IGN1ci5maXJzdAoKICAgIEBsZi5waWNrX2ZvciBAY29udHJvbGxlcgogICAgYXNz ZXJ0X2luc3RhbmNlX29mIEFycmF5LCBjdXIgPSBtaXNzZWRbIDpyZWNpZXZlZD8gXSwKICAg ICdTaG91bGQgYmUgYW4gaW5zdGFuY2Ugb2YgQXJyYXkuJwogICAgYXNzZXJ0X2luc3RhbmNl X29mIEhhc2gsIGN1ci5maXJzdCwKICAgICdTaG91bGQgYmUgYW4gaW5zdGFuY2Ugb2YgSGFz aC4nCiAgICBhc3NlcnQgISBoaXN0b3J5LmluY2x1ZGU/KCBjdXIuZmlyc3QgKSwKICAgICdT aG91bGQgbm90IGFscmVhZHkgYmUgcGlja2VkLicKCiAgICBhc3NlcnRfcmFpc2VzIEluZGV4 RXJyb3IsICdObyByZWNvcmQgc2hvdWxkIGJlIGxlZnQuJyBkbwogICAgICBAbGYucGlja19m b3IgQGNvbnRyb2xsZXIKICAgIGVuZAogIGVuZAogIGRlZiB0ZXN0X2x1Y2t5CiAgICBhc3Nl cnRfaW5zdGFuY2Vfb2YgQXJyYXksIHdpbm5lcnMgPSBAbGYubHVja3ksCiAgICAnQGxmLmx1 Y2t5IHNob3VsZCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgQXJyYXkuJwogICAgYXNzZXJ0IHdp bm5lcnMuZW1wdHk/LAogICAgJ0BsZi5sdWNreSBzaG91bGQgYmUgZW1wdHkuJwoKICAgIEBs Zi5waWNrX2ZvciBAY29udHJvbGxlcgogICAgYXNzZXJ0X2luc3RhbmNlX29mIEFycmF5LCB3 aW5uZXJzID0gQGxmLmx1Y2t5LAogICAgJ0BsZi5sdWNreSBzaG91bGQgcmV0dXJuIGFuIGlu c3RhbmNlIG9mIEFycmF5LicKICAgIGFzc2VydF9lcXVhbCAxLCB3aW5uZXJzLnNpemUsCiAg ICAnQGxmLmx1Y2t5IHNob3VsZCBiZSBncm93biBieSAxLicKICBlbmQKICBkZWYgdGVzdF91 bmx1Y2t5CiAgICBhc3NlcnRfaW5zdGFuY2Vfb2YgQXJyYXksIGxvb3NlcnMgPSBAbGYudW5s dWNreSwKICAgICdAbGYudW5sdWNreSBzaG91bGQgcmV0dXJuIGFuIGluc3RhbmNlIG9mIEFy cmF5LicKICAgIGFzc2VydF9lcXVhbCAzLCBsb29zZXJzLnNpemUsCiAgICAnQGxmLnVubHVj a3kgc2hvdWxkIGhhdmUgaXRzIG9yaWdpbmFsIHNpemUgb2YgMy4nCgogICAgQGxmLnBpY2tf Zm9yIEBjb250cm9sbGVyCiAgICBhc3NlcnRfaW5zdGFuY2Vfb2YgQXJyYXksIGxvb3NlcnMg PSBAbGYudW5sdWNreSwKICAgICdAbGYudW5sdWNreSBzaG91bGQgcmV0dXJuIGFuIGluc3Rh bmNlIG9mIEFycmF5LicKICAgIGFzc2VydF9lcXVhbCAyLCBsb29zZXJzLnNpemUsCiAgICAn QGxmLnVubHVja3kgc2hvdWxkIGJlIHNocmlua2VkIGJ5IDEuJwogIGVuZAogIGRlZiB0ZXN0 X2RlbGl2ZXJlZF90bz8KICAgIGxvb3NlcnMgPSBAbGYuaW5zdGFuY2VfdmFyaWFibGVfZ2V0 IDpAdW5sdWNreQoKICAgIGFzc2VydCBAbGYuc2VuZCggOmRlbGl2ZXJlZF90bz8sIEBjb250 cm9sbGVyLCBsb29zZXJzLmZpcnN0ICksCiAgICAnU2hvdWxkIHJldHVybiB0aGUgcmVzdWx0 IG9mIEBjb250cm9sbGVyLnJlY2lldmVkPycKICAgIG1pc3NlZCA9IEBjb250cm9sbGVyLmlu c3RhbmNlX3ZhcmlhYmxlX2dldCA6QG1pc3NlZAoKICAgIGFzc2VydF9pbnN0YW5jZV9vZiBI YXNoLCBsYXN0ID0gbWlzc2VkWyA6cmVjaWV2ZWQ/IF0uZmlyc3QsCiAgICAnU2hvdWxkIGJl IGluc3RhbmNlIG9mIEhhc2ggZm9yIGF0dGVuZGVlLicKICAgIGFzc2VydCBAbGYuc2VuZCgg OmRlbGl2ZXJlZF90bz8sIEBjb250cm9sbGVyLCBsb29zZXJzLmxhc3QgKSwKICAgICdTaG91 bGQgcmV0dXJuIHRoZSByZXN1bHQgb2YgQGNvbnRyb2xsZXIucmVjaWV2ZWQ/JwogICAgYXNz ZXJ0X25vdF9lcXVhbCBsYXN0LCBtaXNzZWRbIDpyZWNpZXZlZD8gXS5maXJzdCwKICAgICdT aG91bGQgbm90IGJlIHRoZSBsYXN0IGRlbGl2ZXJlZCB2YWx1ZS4nCiAgZW5kCiAgZGVmIHRl c3RfcmVzZXQhCiAgICBhc3NlcnRfZXF1YWwgTmFtZVBpY2tlcjo6THVja3lGaWx0ZXI6OkVP RCwgRmlsZS5zaXplKCBEQVRBLnBhdGggKSwKICAgICdTaG91bGQgbm90IGhhdmUgYXR0YWNo ZWQgZGF0YS4nCiAgICBhc3NlcnQgQGxmLmx1Y2t5LmVtcHR5PywKICAgICdTaG91bGQgaGF2 ZSBubyB3aW5uZXJzLicKCiAgICBAbGYucGlja19mb3IgQGNvbnRyb2xsZXIKICAgIGFzc2Vy dF9ub3RfZXF1YWwgTmFtZVBpY2tlcjo6THVja3lGaWx0ZXI6OkVPRCwgRmlsZS5zaXplKCBE QVRBLnBhdGggKSwKICAgICdTaG91bGQgaGF2ZSBhdHRhY2hlZCBkYXRhLicKICAgIGFzc2Vy dF9lcXVhbCAxLCBAbGYubHVja3kuc2l6ZSwKICAgICdTaG91bGQgaGF2ZSAxIHdpbm5lci4n CgogICAgQGxmLnNlbmQgOnJlc2V0IQogICAgYXNzZXJ0X2VxdWFsIE5hbWVQaWNrZXI6Okx1 Y2t5RmlsdGVyOjpFT0QsIEZpbGUuc2l6ZSggREFUQS5wYXRoICksCiAgICAnU2hvdWxkIG5v dCBoYXZlIGF0dGFjaGVkIGRhdGEuJwogICAgYXNzZXJ0IEBsZi5sdWNreS5lbXB0eT8sCiAg ICAnU2hvdWxkIGhhdmUgbm8gd2lubmVycy4nCiAgZW5kCgogIGRlZiB0ZXN0X2luaXRpYWxp emUKICAgIGFzc2VydF9pbnN0YW5jZV9vZiBBcnJheSwgQGxmLmluc3RhbmNlX3ZhcmlhYmxl X2dldCggOkBhdHRyaWJ1dGVzICksCiAgICAnQGF0dHJpYnV0ZXMgc2hvdWxkIGJlIGFuIGlu c3RhbmNlIG9mIEFycmF5JwogICAgYXNzZXJ0X2luc3RhbmNlX29mIEhhc2gsIEBsZi5pbnN0 YW5jZV92YXJpYWJsZV9nZXQoIDpAYXR0ZW5kZWVzICksCiAgICAnQGF0dGVuZGVlcyBzaG91 bGQgYmUgYW4gaW5zdGFuY2Ugb2YgSGFzaCcKICAgIGFzc2VydF9pbnN0YW5jZV9vZiBBcnJh eSwgQGxmLmluc3RhbmNlX3ZhcmlhYmxlX2dldCggOkB1bmx1Y2t5ICksCiAgICAnQHVubHVj a3kgc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIEFycmF5JwogIGVuZAoKZW5kCgpyZXF1aXJl ICd0ZXN0L3VuaXQvdWkvY29uc29sZS90ZXN0cnVubmVyJwpUZXN0OjpVbml0OjpVSTo6Q29u c29sZTo6VGVzdFJ1bm5lci5uZXcgTHVja3lGaWx0ZXJfVGVzdAoKX19FTkRfXwo= --------------090300050108040203090808 Content-Type: application/x-ruby; name="view.rb" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="view.rb" IyAoYykgQ29weXJpZ2h0IDIwMDcgRmxvcmlhbiBBw59tYW5uLiBBbGwgUmlnaHRzIFJlc2Vy dmVkLgoKbW9kdWxlIE5hbWVQaWNrZXIKICBjbGFzcyBWaWV3CgogICAgT1VUUFVUID0gU1RE T1VUCgogICAgZGVmIGluaXRpYWxpemUgb3V0cHV0ID0gbmlsCiAgICAgIEBvdXRwdXQgPSBv dXRwdXQgfHwgT1VUUFVUCiAgICBlbmQKCiAgICBkZWYgcmVuZGVyIGRhdGEKICAgICAgaWYg ZGF0YS5pbnN0YW5jZV9vZj8gSGFzaAogICAgICAgIEBvdXRwdXQucHV0cyAnfn4nICogOAog ICAgICAgIGRhdGEuZWFjaCB7IHxrZXksIHZhbHVlfCByZW5kZXIgIiN7IGtleSB9OiAjeyB2 YWx1ZSB9IiB9CiAgICAgIGVsc2lmIGRhdGEuaW5zdGFuY2Vfb2Y/IEFycmF5CiAgICAgICAg ZGF0YS5lYWNoIHsgfGVsZW18IHJlbmRlciBlbGVtIH0KICAgICAgZWxzZQogICAgICAgIEBv dXRwdXQucHV0cyBkYXRhLmluc3BlY3QKICAgICAgZW5kCiAgICBlbmQKCiAgZW5kCmVuZA== --------------090300050108040203090808 Content-Type: application/x-ruby; name="controller.rb" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="controller.rb" bW9kdWxlIE5hbWVQaWNrZXIKICBjbGFzcyBDb250cm9sbGVyCiAgICByZXF1aXJlICdsdWNr eV9maWx0ZXInCiAgICByZXF1aXJlICd2aWV3JwogICAgcmVxdWlyZSAnb3B0cGFyc2UnCiAg ICByZXF1aXJlICdjc3YnCiAgCiAgICBQSUNLICA9IDpwaWNrCiAgICBQSUNLUyAgID0gMQog ICAgU09VUkNFICA9IFNURElOCgogICAgZGVmIGluaXRpYWxpemUgYXJncwogICAgICBPcHRp b25QYXJzZXIubmV3IGRvIHxvcHRzfAogICAgICAgIG9wdHMuYmFubmVyID0gIlVzYWdlOiAj eyAkMCB9IFtPUFRJT05TXSIgKwogICAgICAgICIgKGRlZmF1bHQ6IC0tI3sgUElDSyB9ICN7 IFBJQ0tTIH0gLS1mcm9tICN7IFNPVVJDRSB9KSIKCiAgICAgICAgb3B0cy5zZXBhcmF0b3Ig Ik9wdGlvbnM6IgoKICAgICAgICBvcHRzLm9uICctLWZyb20gZmlsZScsIFN0cmluZywKICAg ICAgICAnUmVhZCBDU1YgZnJvbSBmaWxlIChkZWZhdWx0OiBTVERJTiknIGRvIHxmaWxlfAog ICAgICAgICAgYmVnaW4KICAgICAgICAgICAgQHNvdXJjZSA9IEZpbGUub3BlbiBmaWxlLCAn cicKCiAgICAgICAgICByZXNjdWUgRXJybm86OkVOT0VOVAogICAgICAgICAgICBhYm9ydCAi U291cmNlIGZpbGUgI3sgZmlsZSB9IGNvdWxkbid0IGJlIHJlYWQsIHNlZSAtLWhlbHAuIgoK ICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAgICAgIG9wdHMub24gJy0tbGlzdCBbQ09M TEVDVElPTl0nLCBbIDphbGwsIDpsdWNreSwgOnVubHVja3kgXSwKICAgICAgICAnTGlzdCAo YWxsLCBsdWNreSBvciB1bmx1Y2t5KScgZG8gfGxpc3R8CiAgICAgICAgICBAYWN0aW9uLCBA YXJnID0gY2FzZSBsaXN0CiAgICAgICAgICB3aGVuIDpsdWNreSB0aGVuIFsgOmxpc3QsIDps dWNreSBdCiAgICAgICAgICB3aGVuIDp1bmx1Y2t5IHRoZW4gWyA6bGlzdCwgOnVubHVja3kg XQogICAgICAgICAgZWxzZSBbIDpsaXN0LCA6YWxsIF0KICAgICAgICAgIGVuZAogICAgICAg IGVuZAogICAgICAgIG9wdHMub24gJy0tcGljayBOJywgSW50ZWdlciwKICAgICAgICAnUGlj ayBOIChkZWZhdWx0OiAxKSBsdWNreSBhdHRlbmRlZXMnIGRvIHxufAogICAgICAgICAgQGFj dGlvbiwgQGFyZyA9IDpwaWNrLCBuCiAgICAgICAgZW5kCgogICAgICAgIG9wdHMub25fdGFp bCAnLS10ZXN0JywgJ1J1biB0ZXN0cycgZG8KICAgICAgICAgIHN5c3RlbSAiI3sgUlVCWV9C SU4gfSAtdiB0ZXN0X3N1aXRlLnJiIiBhbmQgZXhpdCBvcgogICAgICAgICAgYWJvcnQgIiN7 IFJVQllfQklOIH0gY291bGQgbm90IGJlIGZvdW5kLiIKCiAgICAgICAgZW5kCiAgICAgICAg b3B0cy5vbl90YWlsICctLWhlbHAnLCAnU2hvd3MgdGhpcyBtZXNzYWdlJyBkbwogICAgICAg ICAgYWJvcnQgb3B0cy50b19zCgogICAgICAgIGVuZAogICAgICBlbmQucGFyc2UgYXJncwoK ICAgICAgQGZpbHRlciA9IEx1Y2t5RmlsdGVyLm5ldyBDU1Y6OlJlYWRlci5jcmVhdGUoIEBz b3VyY2UgfHwgU09VUkNFLCAiXHQiICkKICAgICAgQHZpZXcgPSBWaWV3Lm5ldwogICAgZW5k CiAgCiAgICBkZWYgcmVjaWV2ZWQ/IGRhdGFzZXQKICAgICAgYmVnaW4KICAgICAgICBAdmll dy5yZW5kZXIgZGF0YXNldAoKICAgICAgcmVzY3VlID0+IGVycm9yCiAgICAgICAgd2FybiAn Q291bGQgbm90IHJlbmRlciBkYXRhc2V0LicgKyBlcnJvci50b19zCiAgICAgICAgcmV0dXJu IGZhbHNlCgogICAgICBlbmQKICAgIGVuZAoKICAgIGRlZiBydW4KICAgICAgc2VuZCggQGFj dGlvbiB8fCBQSUNLLCBAYXJnIHx8IFBJQ0tTKQogICAgZW5kCgogICAgcHJvdGVjdGVkCiAg ICBkZWYgcGljayBhbW91bnQKICAgICAgYmVnaW4KICAgICAgICAoIDEgLi4gYW1vdW50ICku ZWFjaCB7IHxpbmRleHwgQGZpbHRlci5waWNrX2ZvciBzZWxmIH0KCiAgICAgIHJlc2N1ZSA9 PiBlcnJvcgogICAgICAgIHB1dHMgZXJyb3IudG9fcwoKICAgICAgZW5kCiAgICBlbmQKCiAg ICBkZWYgbGlzdCBncm91cAogICAgICBAdmlldy5yZW5kZXIgQGZpbHRlci5zZW5kKCBncm91 cCApCiAgICBlbmQKCiAgZW5kCmVuZAo= --------------090300050108040203090808 Content-Type: text/tab-separated-values; name="example.tsv" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline; filename="example.tsv" Name Company Hobbies Florian A=C3=9Fmann Oniversus Media World Domination, RubyQuiz Bill Gates Microsoft World Domination Steve Jobs Apple World Domination --------------090300050108040203090808--