commit e4c3e2e1f445b1635f257e98cd756465ed388755 Author: Daniel Schubert Date: Wed Feb 1 23:20:47 2017 +0100 prooduction version 1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fa3b424 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*zip +*bak +*old +/file/* + diff --git a/VinylDownload.class.php b/VinylDownload.class.php new file mode 100644 index 0000000..3698292 --- /dev/null +++ b/VinylDownload.class.php @@ -0,0 +1,404 @@ +database ); + if (!$db) die ($error); + return $db; + } + + public function query_code($code) { + $db = $this->db_connect(); + + $c = SQLite3::escapeString ( $code ) ; + $q = "SELECT * FROM '" . self::TABLE . "' WHERE code='" . $c . "'" ; + + $result = @$db->query( $q ); + $row = @$result->fetchArray(); + + $db->close(); + + // row == false when no row was found + return $row; + } + + + private function increase_count_in_db() { + $db = @$this->db_connect(); + $db->exec( "UPDATE '" . self::TABLE . "' SET count = count + 1 WHERE code='" . $this->code . "'" ); + $db->close(); + } + + public function reached_max_dl( $count ) { + $max = false; + $count += 1; + + if ( $count > self::MAXDOWNLOADS ) $max = true; + + return $max; + } + + + public function gen_response( $c , $f ){ + + $this->code = $c; + $content = "Code ungültig oder abgelaufen."; + + // row == false when no row was found + if ( $row = $this->query_code($this->code) ) { + // max count not reached + if ( false === $this->reached_max_dl( $row['count'] ) ) { + $content =' + +
+

+ + + +

+
+ + + '; + } + } + + return $content; + } + + + public function dl_trigger($format) { + // Start Download + switch ($format) { + case 'mp3': + $file = $this->mp3_file; + $filename = 'Rainer_von_Vielen-Überall_Chaos_2017-MP3.zip'; + break; + case 'wav': + $file = $this->wav_file; + $filename = 'Rainer_von_Vielen-Überall_Chaos_2017-WAV.zip'; + break; + } + + $this->downloader( $file, $filename ); + $this->increase_count_in_db(); + } + + + private function downloader( $file, $filename ){ + // Force the browser to start the download automatically + + // Variables: + // $file = real name of actual download file on the server + // $filename = new name of local download file - this is what the visitor's file will actually be called when he/she saves it + + ob_start(); + + $mm_type='application/zip'; + + header("Content-Type: ".$mm_type); + header('Content-Disposition: attachment; filename="'.$filename.'"'); + header("Content-Description: File Transfer"); + header("Content-Length: " .(string)(filesize($file)) ); + header("Cache-Control: public, must-revalidate"); + header("Pragma: public"); + header("Content-Transfer-Encoding: binary\n"); + + ob_end_clean(); + readfile($file); + } + + +/* +* Nicht benoetigt:: +*/ + + private function downloader_large_file( $filePath ) + { + if(!empty($filePath)){ + + $fileInfo = pathinfo($filePath); + $fileName = $fileInfo['basename']; + $fileExtnesion = $fileInfo['extension']; + $default_contentType = "application/octet-stream"; + $content_types_list = $this->mimeTypes(); + + // to find and use specific content type, check out this IANA page : http://www.iana.org/assignments/media-types/media-types.xhtml + + if (array_key_exists($fileExtnesion, $content_types_list)) { + $contentType = $content_types_list[$fileExtnesion]; + } else { + $contentType = $default_contentType; + } + + if (file_exists($filePath)) { + $size = filesize($filePath); + $offset = 0; + $length = $size; + //HEADERS FOR PARTIAL DOWNLOAD FACILITY BEGINS + + if ( isset( $_SERVER['HTTP_RANGE'] ) ) { + preg_match('/bytes=(\d+)-(\d+)?/', $_SERVER['HTTP_RANGE'], $matches); + $offset = intval($matches[1]); + $length = intval($matches[2]) - $offset; + $fhandle = fopen($filePath, 'r'); + fseek($fhandle, $offset); // seek to the requested offset, this is 0 if it's not a partial content request + $data = fread($fhandle, $length); + fclose($fhandle); + header('HTTP/1.1 206 Partial Content'); + header('Content-Range: bytes ' . $offset . '-' . ($offset + $length) . '/' . $size); + }//HEADERS FOR PARTIAL DOWNLOAD FACILITY BEGINS + + //USUAL HEADERS FOR DOWNLOAD + header("Content-Disposition: attachment;filename=".$fileName); + header('Content-Type: '.$contentType); + header("Accept-Ranges: bytes"); + header("Pragma: public"); + header("Expires: -1"); + header("Cache-Control: no-cache"); + header("Cache-Control: public, must-revalidate, post-check=0, pre-check=0"); + header("Content-Length: ".filesize($filePath)); + + $chunksize = 8 * (1024 * 1024); //8MB (highest possible fread length) + + if ($size > $chunksize){ + $handle = fopen($_FILES["file"]["tmp_name"], 'rb'); + $buffer = ''; + while (!feof($handle) && (connection_status() === CONNECTION_NORMAL)) + { + $buffer = fread($handle, $chunksize); + print $buffer; + ob_flush(); + flush(); + } + if(connection_status() !== CONNECTION_NORMAL){ + echo "Connection aborted"; + } + fclose($handle); + + } else { + ob_clean(); + flush(); + readfile($filePath); + } + + } else { + echo 'File does not exist!'; + } + + } else { + echo 'There is no file to download!'; + } + } + + + /* Function to get correct MIME type for download */ + private function mimeTypes( $defaultType = null ) + { + /* Just add any required MIME type if you are going to download something not listed here.*/ + $mime_types = array("323" => "text/h323", + "acx" => "application/internet-property-stream", + "ai" => "application/postscript", + "aif" => "audio/x-aiff", + "aifc" => "audio/x-aiff", + "aiff" => "audio/x-aiff", + "asf" => "video/x-ms-asf", + "asr" => "video/x-ms-asf", + "asx" => "video/x-ms-asf", + "au" => "audio/basic", + "avi" => "video/x-msvideo", + "axs" => "application/olescript", + "bas" => "text/plain", + "bcpio" => "application/x-bcpio", + "bin" => "application/octet-stream", + "bmp" => "image/bmp", + "c" => "text/plain", + "cat" => "application/vnd.ms-pkiseccat", + "cdf" => "application/x-cdf", + "cer" => "application/x-x509-ca-cert", + "class" => "application/octet-stream", + "clp" => "application/x-msclip", + "cmx" => "image/x-cmx", + "cod" => "image/cis-cod", + "cpio" => "application/x-cpio", + "crd" => "application/x-mscardfile", + "crl" => "application/pkix-crl", + "crt" => "application/x-x509-ca-cert", + "csh" => "application/x-csh", + "css" => "text/css", + "dcr" => "application/x-director", + "der" => "application/x-x509-ca-cert", + "dir" => "application/x-director", + "dll" => "application/x-msdownload", + "dms" => "application/octet-stream", + "doc" => "application/msword", + "dot" => "application/msword", + "dvi" => "application/x-dvi", + "dxr" => "application/x-director", + "eps" => "application/postscript", + "etx" => "text/x-setext", + "evy" => "application/envoy", + "exe" => "application/octet-stream", + "fif" => "application/fractals", + "flr" => "x-world/x-vrml", + "gif" => "image/gif", + "gtar" => "application/x-gtar", + "gz" => "application/x-gzip", + "h" => "text/plain", + "hdf" => "application/x-hdf", + "hlp" => "application/winhlp", + "hqx" => "application/mac-binhex40", + "hta" => "application/hta", + "htc" => "text/x-component", + "htm" => "text/html", + "html" => "text/html", + "htt" => "text/webviewhtml", + "ico" => "image/x-icon", + "ief" => "image/ief", + "iii" => "application/x-iphone", + "ins" => "application/x-internet-signup", + "isp" => "application/x-internet-signup", + "jfif" => "image/pipeg", + "jpe" => "image/jpeg", + "jpeg" => "image/jpeg", + "jpg" => "image/jpeg", + "js" => "application/x-javascript", + "latex" => "application/x-latex", + "lha" => "application/octet-stream", + "lsf" => "video/x-la-asf", + "lsx" => "video/x-la-asf", + "lzh" => "application/octet-stream", + "m13" => "application/x-msmediaview", + "m14" => "application/x-msmediaview", + "m3u" => "audio/x-mpegurl", + "man" => "application/x-troff-man", + "mdb" => "application/x-msaccess", + "me" => "application/x-troff-me", + "mht" => "message/rfc822", + "mhtml" => "message/rfc822", + "mid" => "audio/mid", + "mny" => "application/x-msmoney", + "mov" => "video/quicktime", + "movie" => "video/x-sgi-movie", + "mp2" => "video/mpeg", + "mp3" => "audio/mpeg", + "mpa" => "video/mpeg", + "mpe" => "video/mpeg", + "mpeg" => "video/mpeg", + "mpg" => "video/mpeg", + "mpp" => "application/vnd.ms-project", + "mpv2" => "video/mpeg", + "ms" => "application/x-troff-ms", + "mvb" => "application/x-msmediaview", + "nws" => "message/rfc822", + "oda" => "application/oda", + "p10" => "application/pkcs10", + "p12" => "application/x-pkcs12", + "p7b" => "application/x-pkcs7-certificates", + "p7c" => "application/x-pkcs7-mime", + "p7m" => "application/x-pkcs7-mime", + "p7r" => "application/x-pkcs7-certreqresp", + "p7s" => "application/x-pkcs7-signature", + "pbm" => "image/x-portable-bitmap", + "pdf" => "application/pdf", + "pfx" => "application/x-pkcs12", + "pgm" => "image/x-portable-graymap", + "pko" => "application/ynd.ms-pkipko", + "pma" => "application/x-perfmon", + "pmc" => "application/x-perfmon", + "pml" => "application/x-perfmon", + "pmr" => "application/x-perfmon", + "pmw" => "application/x-perfmon", + "pnm" => "image/x-portable-anymap", + "pot" => "application/vnd.ms-powerpoint", + "ppm" => "image/x-portable-pixmap", + "pps" => "application/vnd.ms-powerpoint", + "ppt" => "application/vnd.ms-powerpoint", + "prf" => "application/pics-rules", + "ps" => "application/postscript", + "pub" => "application/x-mspublisher", + "qt" => "video/quicktime", + "ra" => "audio/x-pn-realaudio", + "ram" => "audio/x-pn-realaudio", + "ras" => "image/x-cmu-raster", + "rgb" => "image/x-rgb", + "rmi" => "audio/mid", + "roff" => "application/x-troff", + "rtf" => "application/rtf", + "rtx" => "text/richtext", + "scd" => "application/x-msschedule", + "sct" => "text/scriptlet", + "setpay" => "application/set-payment-initiation", + "setreg" => "application/set-registration-initiation", + "sh" => "application/x-sh", + "shar" => "application/x-shar", + "sit" => "application/x-stuffit", + "snd" => "audio/basic", + "spc" => "application/x-pkcs7-certificates", + "spl" => "application/futuresplash", + "src" => "application/x-wais-source", + "sst" => "application/vnd.ms-pkicertstore", + "stl" => "application/vnd.ms-pkistl", + "stm" => "text/html", + "svg" => "image/svg+xml", + "sv4cpio" => "application/x-sv4cpio", + "sv4crc" => "application/x-sv4crc", + "t" => "application/x-troff", + "tar" => "application/x-tar", + "tcl" => "application/x-tcl", + "tex" => "application/x-tex", + "texi" => "application/x-texinfo", + "texinfo" => "application/x-texinfo", + "tgz" => "application/x-compressed", + "tif" => "image/tiff", + "tiff" => "image/tiff", + "tr" => "application/x-troff", + "trm" => "application/x-msterminal", + "tsv" => "text/tab-separated-values", + "txt" => "text/plain", + "uls" => "text/iuls", + "ustar" => "application/x-ustar", + "vcf" => "text/x-vcard", + "vrml" => "x-world/x-vrml", + "wav" => "audio/x-wav", + "wcm" => "application/vnd.ms-works", + "wdb" => "application/vnd.ms-works", + "wks" => "application/vnd.ms-works", + "wmf" => "application/x-msmetafile", + "wps" => "application/vnd.ms-works", + "wri" => "application/x-mswrite", + "wrl" => "x-world/x-vrml", + "wrz" => "x-world/x-vrml", + "xaf" => "x-world/x-vrml", + "xbm" => "image/x-xbitmap", + "xla" => "application/vnd.ms-excel", + "xlc" => "application/vnd.ms-excel", + "xlm" => "application/vnd.ms-excel", + "xls" => "application/vnd.ms-excel", + "xlt" => "application/vnd.ms-excel", + "xlw" => "application/vnd.ms-excel", + "xof" => "x-world/x-vrml", + "xpm" => "image/x-xpixmap", + "xwd" => "image/x-xwindowdump", + "z" => "application/x-compress", + "rar" => "application/x-rar-compressed", + "zip" => "application/zip"); + return $mime_types; + } +} + + +?> diff --git a/code-gen.rb b/code-gen.rb new file mode 100644 index 0000000..7d04fb3 --- /dev/null +++ b/code-gen.rb @@ -0,0 +1,66 @@ + +def generate_codes(length, count) + codes = Array.[] + + for i in 1..count do + codes.push([*('a'..'z'),*('0'..'9'),*('A'..'Z')].shuffle[0,length].join) + end + + return codes +end + + +def make_codes_uniq(count,codes, length) + codes.uniq! + if codes.count < count + puts "dup\n" + puts codes.count + count = count - codes.count + c = generate_codes(length, count) + + c.each{|elem| codes.push(elem)} + + make_codes_uniq(count, codes, length) + else + return codes + end +end + +def write_out(codes) + ## write the codes to csv and txt files + ["txt", "csv"].each do |f| + of = File.open("unique-codes." + f , "w") + out = Array.[] + + case f + when "txt" + codes.each {|c| out.push(c.chomp)} + when "csv" + ## creates line suited for the rvv-dl application database + id = 0 + codes.each {|c| + out.push("\"#{id}\";\"" + c.chomp + "\";\"\";\"\";\"" + Time.now.inspect + "\";\"" + Time.now.inspect + "\"" ) + id += 1 + } + end + + out.each { |l| of.puts l } + of.close + end +end + +def build_files() + ## how long shall the codes be + length = 8 + + ## how many codes do we need? + count = 1000 + + codes = generate_codes(length, count) + + ## make shure the codes are unique + codes = make_codes_uniq(count, codes, length) + write_out(codes) +end + +build_files() diff --git a/includes/js/ajax.js b/includes/js/ajax.js new file mode 100644 index 0000000..19497de --- /dev/null +++ b/includes/js/ajax.js @@ -0,0 +1,29 @@ +jQuery(document).ready(function($) { + + // Code submission + jQuery('#code_form').submit(function(e) { + e.preventDefault(); // this disables the submit button so the user stays on the page + + // Validation + if ( code.length < 8 ) { + jQuery('#resp').html('Code ist zu kurz!'); + } else { + + data = {'code' : $('input[name=code]').val(), + 'action' : 'submit_code', + 'format' : $('select[name=format]').val() + }; + + // ajax call + $.ajax({ + type: "POST", + dataType: "json", + url: frontendajax.ajaxurl, + data: data}) + .done(function(msg){ + jQuery('#resp').html(msg.resp); + }) + .fail( function(eins) { console.log("Fehler", eins);}); + } + }); +}); diff --git a/includes/options.php b/includes/options.php new file mode 100644 index 0000000..dec9612 --- /dev/null +++ b/includes/options.php @@ -0,0 +1,140 @@ +options = get_option( 'dlt_downloader' ); + ?> +
+

My Settings

+
+ +
+ Coded by Daniel Schubert www.schubertdaniel.de +
+ ', + isset( $this->options['downloader_zip_file'] ) ? esc_attr( $this->options['downloader_zip_file']) : '' + ); + } + + + public function downloader_sqlite_database_callback() + { + printf( + '', + isset( $this->options['downloader_sqlite_database'] ) ? esc_attr( $this->options['downloader_sqlite_database']) : '' + ); + } +} + +if( is_admin() ) + $dlt_downloader_settings_page = new DltDownloaderSettingsPage(); diff --git a/unique-codes.csv b/unique-codes.csv new file mode 100644 index 0000000..cc20759 --- /dev/null +++ b/unique-codes.csv @@ -0,0 +1,1000 @@ +0,CMXjyOp7,0 +1,EFGeqVO8,0 +2,Ke5iVkgI,0 +3,Kejus1t0,0 +4,fE0exnyw,0 +5,6YOPfxNJ,0 +6,H0tL1Moh,0 +7,s0TGjh24,0 +8,jsaFXn6d,0 +9,HCY6GrdW,0 +10,taUoGmZ8,0 +11,mjdWQDp9,0 +12,VrIElJNa,0 +13,cD2EwaQ8,0 +14,J8Kijsq0,0 +15,OCLa4MTm,0 +16,UirGoy7X,0 +17,hU71saDb,0 +18,QLSoMH20,0 +19,vxmaFzXg,0 +20,eAqYkupL,0 +21,1c3yXTCo,0 +22,U3PcMtjv,0 +23,m5AuOXZr,0 +24,1CfdvSYu,0 +25,DMLFPZGj,0 +26,ghjpS8LF,0 +27,ij0ts2gF,0 +28,07hRxjPY,0 +29,ZgOiaPxl,0 +30,6RePcMvD,0 +31,r729SMRt,0 +32,BaJUKV5L,0 +33,38hpyEtq,0 +34,BgZtjk2E,0 +35,DWLfr2Vm,0 +36,leExUGZu,0 +37,C506Knru,0 +38,6R5vU0iO,0 +39,ZYrfye1l,0 +40,kNGBRAzU,0 +41,AnORWPsi,0 +42,aG7oEsF4,0 +43,8SlR0vd3,0 +44,vmbB3dUw,0 +45,r3ycn2hB,0 +46,m6cBRnCT,0 +47,PB70keqT,0 +48,RMkiFd2C,0 +49,QrWgcbqR,0 +50,GQSN6hdn,0 +51,03F7bnpV,0 +52,vMFpVD09,0 +53,aAlZ24mq,0 +54,9Rjm7HLn,0 +55,waCgLZUc,0 +56,ixNPnJ1s,0 +57,qtyBSdKf,0 +58,G4oFbKDs,0 +59,WIqmCbw1,0 +60,gLjCZP5b,0 +61,07TMEqNL,0 +62,PgIBXN04,0 +63,wusJtn0d,0 +64,qnzObEpd,0 +65,ImzVJQvs,0 +66,50PeBOd7,0 +67,ozE87a0e,0 +68,j5yEw0UD,0 +69,Vmnf3Q6P,0 +70,EpncTOZ6,0 +71,xd2PhrOT,0 +72,iupRXmwv,0 +73,ZHnYi37A,0 +74,dAmjNnPt,0 +75,aWIGzh0Y,0 +76,Cda4ZYn6,0 +77,C0uH6Swi,0 +78,UmWx1ACu,0 +79,htyESX5F,0 +80,Bcxn0ZAH,0 +81,u2Cg1eiM,0 +82,2zmuWv3T,0 +83,Qehd6olp,0 +84,xKYGsajk,0 +85,3Q5psrkA,0 +86,txecomT1,0 +87,7lNAmCEr,0 +88,45OrhDl9,0 +89,YDUm3E85,0 +90,EKsyxIOB,0 +91,KkbSRUWn,0 +92,J4n5xdUF,0 +93,czWsBZD6,0 +94,W0eHxLfM,0 +95,OrZeuFMx,0 +96,rPWpkK20,0 +97,967P54Dn,0 +98,Lt8Bly1u,0 +99,kPvtAKHG,0 +100,9BRzEcYQ,0 +101,mVuXki1o,0 +102,eyNr5TuP,0 +103,NZpPexjq,0 +104,lPGayovL,0 +105,RzrPFh6m,0 +106,njoFKViJ,0 +107,SqmIsnP6,0 +108,QNMym1Je,0 +109,QsKwpexT,0 +110,dvOb5PIy,0 +111,khuj4piH,0 +112,Qz3wtslU,0 +113,42VuQpFa,0 +114,ma9Ce2hH,0 +115,pX6K1Ex5,0 +116,hX4AszP3,0 +117,oXK3a6ys,0 +118,IEu6Q9Fh,0 +119,TxXacumP,0 +120,hEDzUrBf,0 +121,Zb17CEnO,0 +122,vwM5EnzX,0 +123,Ucvy51AM,0 +124,wu3JWEsx,0 +125,saBPELO8,0 +126,nPg6sOim,0 +127,W4XUqlDb,0 +128,Ys045FyT,0 +129,AB0MZ6C8,0 +130,xJA15hjO,0 +131,rLNn0U6d,0 +132,wIX8SRhO,0 +133,X3musJTA,0 +134,UKz2pf5W,0 +135,vCJOqrz1,0 +136,bh1pPXkS,0 +137,PMsJEG8W,0 +138,VdR9BApr,0 +139,5eUC0wyM,0 +140,29JqWUhr,0 +141,r421iOeg,0 +142,eVpz2ZEk,0 +143,KHWPa0on,0 +144,7XoaG2PZ,0 +145,vnsSF4K2,0 +146,kQqLH7fG,0 +147,MpFAPUeY,0 +148,0jtwVFUJ,0 +149,7S4iyatE,0 +150,aHnwzBNv,0 +151,xQ2SVCcn,0 +152,knhMSbx9,0 +153,JIY9KRGy,0 +154,L3qZz0PI,0 +155,Ym6B1G8R,0 +156,k8nifx3I,0 +157,lPqzLGpk,0 +158,wf4ZqA8U,0 +159,jAU6HwPp,0 +160,OLXesCAP,0 +161,8tLNz0eJ,0 +162,xGO62B9Y,0 +163,PZLUIz38,0 +164,X0i5RbkA,0 +165,wTJynChc,0 +166,SlfFH8Yp,0 +167,lKxnY76M,0 +168,xt7PZ9ID,0 +169,2zWKBenI,0 +170,MotDE5q3,0 +171,ICnhoQ6F,0 +172,Z8gRqASV,0 +173,QX3764Ut,0 +174,y4F0hxPm,0 +175,7aVjiFNk,0 +176,ayGKTcRg,0 +177,OAxKl5hQ,0 +178,p0Z8jFYB,0 +179,WQdLPXGJ,0 +180,5Onepuoa,0 +181,750J4hiB,0 +182,SYUwbA8v,0 +183,Xzkbdnt1,0 +184,5VlprmYD,0 +185,3N8rdjM1,0 +186,0qJmvMNQ,0 +187,6b8BjyU0,0 +188,Z91UTv4O,0 +189,TZxtrBOG,0 +190,36xMwaUo,0 +191,SbuYMw4p,0 +192,zp0bBr7P,0 +193,D9LNjy8P,0 +194,n50zPpam,0 +195,6DAHCYyv,0 +196,N92Cf8vw,0 +197,QRbO6Zlk,0 +198,x0QapXBO,0 +199,W2fbyU8K,0 +200,Qd4xtJIe,0 +201,5CNE3wlX,0 +202,lNQaJzvr,0 +203,TjLFhtMS,0 +204,WmrXqyae,0 +205,PAuCoyhD,0 +206,cPHvrtAD,0 +207,wgn9xhBs,0 +208,LyQaDrqK,0 +209,QNkxrd3b,0 +210,C8IjGET7,0 +211,eQEXZIMu,0 +212,iuD4MAon,0 +213,btuWQNxY,0 +214,jo2UiH1D,0 +215,JRKXbpg9,0 +216,fule8bEw,0 +217,7UKLxndB,0 +218,ryZf39tF,0 +219,YIDS1hBP,0 +220,tR03BuZI,0 +221,Rkvou0tP,0 +222,qBFh6xRH,0 +223,g8zBM1mf,0 +224,p38GtFI7,0 +225,l6PakAte,0 +226,o2XOEZRF,0 +227,8IxtOZzN,0 +228,lQzRYgIb,0 +229,vlCWMqb6,0 +230,r49ZXujn,0 +231,BEjTzs2V,0 +232,AyZMnDWl,0 +233,YP0d8ysr,0 +234,3SZ4Ej2y,0 +235,57PvezAn,0 +236,SEfNIoaV,0 +237,ibNL5MBX,0 +238,wP2cJ759,0 +239,GMQJKhxI,0 +240,j53wyboP,0 +241,ygs6BXQ8,0 +242,dSz0NJUH,0 +243,4Me5AVd1,0 +244,A2znqdlE,0 +245,bnWHDp9j,0 +246,Fo3Juf4d,0 +247,oMsA182h,0 +248,uepwALZs,0 +249,v64Wh3ZH,0 +250,RksTpPBK,0 +251,OfSsPUEb,0 +252,8i3VYxMd,0 +253,IiV0oJqF,0 +254,xWy105Nt,0 +255,lB85qkf3,0 +256,zTVwgAOu,0 +257,ijHNoBcb,0 +258,sMkjS2aR,0 +259,zlMyOnW6,0 +260,6cnITWBU,0 +261,BukLiDt9,0 +262,ap0KXHM1,0 +263,47zMiZGq,0 +264,48Q9rCon,0 +265,gRH9P4au,0 +266,QXxDj0za,0 +267,rY1sPbIW,0 +268,JG4EdKWB,0 +269,Dbol5ayR,0 +270,GZIRTVgx,0 +271,ApJvIbzW,0 +272,GYCiq52R,0 +273,niS3WUZT,0 +274,127IBEpY,0 +275,ECZbRa4W,0 +276,soMkpiaj,0 +277,v5fQPzaU,0 +278,ReSPzcsk,0 +279,lXCkTB75,0 +280,3dAQTjUw,0 +281,cvK39uWq,0 +282,Ms51QCYb,0 +283,QIYK4DRu,0 +284,BMQyj9ke,0 +285,jkBsDbX4,0 +286,WpY1ljti,0 +287,H2AtOnq9,0 +288,g5u7q49v,0 +289,ThE69jQt,0 +290,A1TO45N3,0 +291,bfpjMAOL,0 +292,bqR9vEjX,0 +293,4GOzIW2x,0 +294,kJc6OQRi,0 +295,ykgpd6P2,0 +296,Z8KmVEvR,0 +297,7DYxt8Al,0 +298,WP9rdZkc,0 +299,oyFn8hAO,0 +300,qQnhztFS,0 +301,KlYieFHf,0 +302,6pcydmAw,0 +303,M83QkSws,0 +304,edrEoc79,0 +305,r2LshXwY,0 +306,6D8qok5r,0 +307,kSj3cIbt,0 +308,zrAyIu80,0 +309,NH7Cg4os,0 +310,xEzsVNO1,0 +311,p6yQzLUN,0 +312,2hsPIAnR,0 +313,n1d0NI89,0 +314,e9SQaFAO,0 +315,OrHRuCxk,0 +316,fi25TExP,0 +317,GV0OHojl,0 +318,pIUT9sbe,0 +319,e9qT0lWk,0 +320,MiSzJg6k,0 +321,eBtlAN3G,0 +322,ZTA5Rdt4,0 +323,Xiodm4Qr,0 +324,jmWxtA0X,0 +325,Awp87Hy3,0 +326,CnWetYym,0 +327,hcjxLumk,0 +328,ugIRyiCc,0 +329,9IbRXY7N,0 +330,FxX4js7K,0 +331,hjboTeLR,0 +332,OHRxwWsM,0 +333,VUzBWrcH,0 +334,79LZa8FD,0 +335,7Hm8MZrb,0 +336,gak5oPYh,0 +337,xW0i3HdR,0 +338,gylSGh54,0 +339,qFCba1o3,0 +340,JV2t9Ika,0 +341,7c6dgA3u,0 +342,ts34LBbm,0 +343,T9fsv1V5,0 +344,OLDchf0s,0 +345,I1NG2SUO,0 +346,xBFqy7pN,0 +347,k7zYXAEl,0 +348,ZYHq4CPu,0 +349,7mdkMqPz,0 +350,iOHo3Jxs,0 +351,T9o3swJI,0 +352,WjFMAvfV,0 +353,msIZ2Mqe,0 +354,3sGvJ7ma,0 +355,REWDdmSl,0 +356,H8fwZXm2,0 +357,hcYy2wMG,0 +358,IiuzrYDo,0 +359,jpVi1hBz,0 +360,Tj2sclvF,0 +361,S3uh4dn6,0 +362,fXrJacFV,0 +363,46Kq7RQa,0 +364,HhsV0alZ,0 +365,ZvYAx1Kz,0 +366,KN6fuvE9,0 +367,EaOQFceW,0 +368,EIDl62VF,0 +369,uIXDSKWL,0 +370,HvLDVwJA,0 +371,8t9zbOEN,0 +372,BOsHcUmp,0 +373,dtbM6P25,0 +374,LBe7Ghpv,0 +375,oV4UJRSY,0 +376,MhTEXUYI,0 +377,sHjLKxFk,0 +378,LMp5BeSQ,0 +379,RuB5IPXM,0 +380,pKQPdusv,0 +381,TQpC5kKB,0 +382,eU2SFvCl,0 +383,cYrSXLmf,0 +384,T3zJL0u2,0 +385,Oszl2HbW,0 +386,Zha3pEJk,0 +387,fOsehUui,0 +388,hnfTXrIP,0 +389,CsXOmkNj,0 +390,TXCAYJFg,0 +391,UnPGqZpo,0 +392,WOyx7tPL,0 +393,smGr0Kf9,0 +394,wGOXvQax,0 +395,Z9IHYgAk,0 +396,d5VYJunl,0 +397,Fic60gXj,0 +398,Kqpflmcv,0 +399,T09i2RB5,0 +400,wl7nyJNz,0 +401,XBWrIOpR,0 +402,OHtJVuAg,0 +403,4Z7FsQ9l,0 +404,9zDCcH83,0 +405,dOV84jEB,0 +406,9zSC1YkZ,0 +407,bg43Ucyo,0 +408,e50hOasZ,0 +409,8tc9AfRw,0 +410,pYSJ6M4K,0 +411,PCdkR6iZ,0 +412,fEMhwqtz,0 +413,6r9pGMzC,0 +414,gacWHbRT,0 +415,7Fo34tX0,0 +416,gzSAfR0v,0 +417,F2MPsnvL,0 +418,YltQ6E3L,0 +419,iphHg8sK,0 +420,FAXVgeP9,0 +421,VciN8QYF,0 +422,7VFfOYT3,0 +423,4ATQ1iY5,0 +424,9xmqdsKr,0 +425,w5rdcl2V,0 +426,XH3YolgK,0 +427,No52vT0l,0 +428,BXfY12m4,0 +429,4wJaU9uk,0 +430,blPJtQL0,0 +431,cNn4oa5P,0 +432,k8TzGMQp,0 +433,P0HeMJRn,0 +434,HBgm0x1C,0 +435,UlGi4g8N,0 +436,Efgsmx1O,0 +437,a8yBdT3z,0 +438,MZ0LfqJa,0 +439,m7sQtBdL,0 +440,0AVhzUbD,0 +441,XUMulCHF,0 +442,0mxoGYK5,0 +443,Efcr3hRW,0 +444,iuqMdYAf,0 +445,MixhFv6T,0 +446,iZCWnTG6,0 +447,uaepXk4l,0 +448,OQrF1Daw,0 +449,8Oblw0ja,0 +450,A7dy8jno,0 +451,3QraXxlI,0 +452,JtXCMN0p,0 +453,mEXLdCh6,0 +454,fstVSrbF,0 +455,RTzw2sij,0 +456,dRjyVYpN,0 +457,6OeAUb7Q,0 +458,A2gRbzim,0 +459,5IiKCg1U,0 +460,N4ZTC0l5,0 +461,pYfoZ4yn,0 +462,1Jez4aj3,0 +463,DQgJVtKh,0 +464,IDpmyjTv,0 +465,gUo5dJfc,0 +466,MmzWEI7e,0 +467,ar142zFq,0 +468,3H8zvlR9,0 +469,eyjawBhU,0 +470,J4FIYk5i,0 +471,pXsUwmag,0 +472,ERkQDBc4,0 +473,rMAfShje,0 +474,OvjAIbYS,0 +475,aNPi4prJ,0 +476,3xHwLYnS,0 +477,35bhKpTH,0 +478,1KyW2dj9,0 +479,cr6gZlhG,0 +480,uVFTbrdm,0 +481,A5hSzaOm,0 +482,apCBUFPv,0 +483,ZN3Rm0ax,0 +484,2VOleuTy,0 +485,CcLYAki0,0 +486,SO4Yk93D,0 +487,k9KwDIHT,0 +488,hRgpNIz7,0 +489,5ZXDyQlm,0 +490,Mp2VCASm,0 +491,zD9UKZ6v,0 +492,soWNOuVS,0 +493,sOl47F9L,0 +494,ZO5XrJaT,0 +495,nKAuj9lF,0 +496,oT7HABMR,0 +497,8kLPabT5,0 +498,G2FuUAn4,0 +499,dINWO0L7,0 +500,MdwePgz9,0 +501,aUKNL7mu,0 +502,caRpCVkj,0 +503,zqVhFJjn,0 +504,m3FTWYeC,0 +505,KpvbqIRf,0 +506,LXAlj3oF,0 +507,IQR9kUJC,0 +508,dIXvBLMS,0 +509,Pz6widY2,0 +510,RLOjagSQ,0 +511,hk4Yq7Nl,0 +512,DmsKc07z,0 +513,Gt80hIAy,0 +514,YxFQwbsD,0 +515,9wNbHLyp,0 +516,V8FyPpqN,0 +517,UZufDe9x,0 +518,Rhn2ipUN,0 +519,iqOxfbPQ,0 +520,XwLesjc9,0 +521,76gqlrsb,0 +522,OwbCVBgJ,0 +523,enyx3jaG,0 +524,o83vKnk7,0 +525,tL7d36eb,0 +526,BpszPO6k,0 +527,peU7Cbc9,0 +528,1kWahs8n,0 +529,cfiyFU8N,0 +530,wrd7Dj9N,0 +531,sctxDZ3O,0 +532,BoD1qwyQ,0 +533,7ClPQE9H,0 +534,fnlYwPCH,0 +535,UC34vwEu,0 +536,8UBCxzks,0 +537,nwbG71tc,0 +538,DNm9gErn,0 +539,KH9WaBwl,0 +540,oIpseyln,0 +541,Z2XNLo4Y,0 +542,OLqvX5NE,0 +543,7HhFZsKU,0 +544,hZMdi4On,0 +545,WdRvpxA6,0 +546,k2OXUzsn,0 +547,4ULrFAH3,0 +548,gr7eui9O,0 +549,WrKzC5tJ,0 +550,sjtQ5CKS,0 +551,J7xPSg1G,0 +552,X0MaCNV9,0 +553,kqODHvws,0 +554,CAN4IKnk,0 +555,O52TNHao,0 +556,fvpdcDWa,0 +557,xwlNOTjD,0 +558,GNwYg0cr,0 +559,JgWuolN7,0 +560,Wapvjur3,0 +561,mMdsRyt1,0 +562,64ZpcC5R,0 +563,icC8QTUt,0 +564,qTIrktW8,0 +565,QkE5Yxvt,0 +566,4RJAvSFU,0 +567,2Ctp0Vcw,0 +568,tnyrWYh7,0 +569,x2GcNUOm,0 +570,BDJIisoR,0 +571,aWf3MJXD,0 +572,SoPm9j4D,0 +573,8ELwACfU,0 +574,4vgFOda8,0 +575,rboZB0S8,0 +576,v2cpF7nl,0 +577,qbtnHg0T,0 +578,bNTiG9WD,0 +579,hFPcAQYI,0 +580,MytXSLWf,0 +581,4wrkBPEO,0 +582,zRMULar4,0 +583,UIXrwGES,0 +584,LVPSRZi9,0 +585,NGnF8i1Q,0 +586,YwujiXzJ,0 +587,vp1BUoGi,0 +588,c25UxkA7,0 +589,XzUKOFos,0 +590,zISZPk9u,0 +591,R2Fz6esc,0 +592,xHzIVemf,0 +593,HMIwkdSX,0 +594,CzXL1R0i,0 +595,P92DpCoO,0 +596,rYogPy09,0 +597,HQcmTG7U,0 +598,sxamYP1u,0 +599,Ot1qdIwa,0 +600,mHaTVQYx,0 +601,6ckY1nQ0,0 +602,EJTFfdow,0 +603,Qyt4vTS6,0 +604,vnyoMCcT,0 +605,ML3BI8qO,0 +606,HTNJfFYi,0 +607,Py0zQlmA,0 +608,2JW5SAfC,0 +609,ZjPwDiQ8,0 +610,0sOEktCN,0 +611,gXJwmrsy,0 +612,7YyWkMQj,0 +613,Ty4kKrmD,0 +614,4ChUH6L3,0 +615,wUC0Imhu,0 +616,NarKx8d6,0 +617,TVYJDAdQ,0 +618,KBD2Gaws,0 +619,poxG8DN2,0 +620,1aqKFoLp,0 +621,YVuegbPR,0 +622,6F03BC1z,0 +623,hSF3Z2BI,0 +624,CqyplNPr,0 +625,JRV4Mc92,0 +626,pZOcjRCu,0 +627,oe2I9lMv,0 +628,EUyDjw4g,0 +629,Ju1kNnGL,0 +630,uiEZXdGC,0 +631,3ZcFusgI,0 +632,xNr97MSA,0 +633,qYDaxdUF,0 +634,vQSZxe9P,0 +635,YIn5QeaH,0 +636,GHl5YuUC,0 +637,w81JqKBM,0 +638,fKevi8pz,0 +639,fy4DBNQg,0 +640,xT7FA6dg,0 +641,gfIo5MkC,0 +642,ZseJBWcS,0 +643,vrEweARJ,0 +644,GIgWzvc7,0 +645,snguBtdO,0 +646,kDpJUqQW,0 +647,JQMCosq8,0 +648,j59zoLtZ,0 +649,Lb2zTlke,0 +650,3GW6I5a9,0 +651,JqKGQ7Y0,0 +652,gyDVcJOu,0 +653,2bItNvY4,0 +654,dHnkpzam,0 +655,dpa4LSRg,0 +656,FlKosxyt,0 +657,eLsmvFbZ,0 +658,DXwCRrxc,0 +659,Ih7rS2k1,0 +660,Uv3P6lOC,0 +661,xv12gAQi,0 +662,8BPtk72T,0 +663,Y0rSL3UJ,0 +664,TJU1spyB,0 +665,Cbe9A3TW,0 +666,6yPQqbs5,0 +667,1z2Fr3kj,0 +668,wyvCYJ9G,0 +669,IAKR1sgP,0 +670,2qoyzYMS,0 +671,HGOKmSj8,0 +672,szwHftWP,0 +673,WTBl1qSV,0 +674,DvzPp50c,0 +675,YHLd8X5f,0 +676,A1DcbotS,0 +677,MKCo6sOe,0 +678,BhnS0Hx5,0 +679,3NmxDaO9,0 +680,9n8zOcbj,0 +681,cWBPVink,0 +682,hLNBcos5,0 +683,Huo6YVDS,0 +684,I5q1H8hn,0 +685,TaZyGo56,0 +686,QlcyMfj6,0 +687,U4fkYeLi,0 +688,ox27NF9q,0 +689,fpjxug49,0 +690,OgfeKm72,0 +691,qZnNLBIE,0 +692,DpY59qXK,0 +693,4uB9lpdP,0 +694,Q4qUaNCL,0 +695,Ecx2ML1g,0 +696,EksJuVow,0 +697,E8JxGzre,0 +698,BEsLhA5Z,0 +699,u4firnEA,0 +700,Rt5pewJn,0 +701,RpWxSBYX,0 +702,uES421AV,0 +703,34k2UQZH,0 +704,PT9pjCNB,0 +705,2KkQLphW,0 +706,YAQo1aWL,0 +707,Pum7OWzU,0 +708,PSxo9av0,0 +709,ol9rnML6,0 +710,PSAt26eq,0 +711,UgRkPY46,0 +712,NVCyJ6Tq,0 +713,1cWYzfyB,0 +714,81tIFUbh,0 +715,ATVksdf8,0 +716,EwHXGIYb,0 +717,MzvIbTdF,0 +718,LJQ45pql,0 +719,lsgJdObD,0 +720,VNogipvn,0 +721,wIfEtGPD,0 +722,HlmMNfFb,0 +723,DPxbic45,0 +724,zBHqJekP,0 +725,Px6zhvpY,0 +726,uiOzZ6Em,0 +727,1AHQUlht,0 +728,uIKTx97d,0 +729,vYbwU2eX,0 +730,n1KHgyqa,0 +731,4vhmuFIT,0 +732,ulj2dXcC,0 +733,GPrKelVb,0 +734,B4UizfL1,0 +735,yVI36vEz,0 +736,U5WpF7Lm,0 +737,W4pghOl5,0 +738,7artWiGn,0 +739,73igkmbN,0 +740,LVGI7uma,0 +741,ALXvf0mQ,0 +742,NPZKz1k4,0 +743,xzZLNoKV,0 +744,MSscrARN,0 +745,NjUhxqFP,0 +746,Wd0DXhH6,0 +747,8YG1d4rO,0 +748,VS9JobQe,0 +749,8SwK5ha9,0 +750,d07OYQh8,0 +751,kOYmwSIv,0 +752,lJ7ShPqN,0 +753,GzMAJQ6R,0 +754,MhnHlT6X,0 +755,CYRZm1QV,0 +756,Zu9fO6m5,0 +757,PZKq5OW3,0 +758,4IVCsBAi,0 +759,lnYB05wR,0 +760,LJ508hAD,0 +761,MrnLRBSo,0 +762,iVtNUIXA,0 +763,i3CTdZbJ,0 +764,DxnR0KTd,0 +765,Mcyb9ZTj,0 +766,PeynspAC,0 +767,vksA5U2y,0 +768,EyWdg25R,0 +769,20ZhI83G,0 +770,FwNjhu80,0 +771,6dr7zBGs,0 +772,3qtJM17C,0 +773,kjSHXl9p,0 +774,xtMNmwT2,0 +775,qaUKZ8y6,0 +776,m6TsJ1Wp,0 +777,5o8TzPhD,0 +778,kcfrbswM,0 +779,rJ2et7m5,0 +780,JPrc4oy3,0 +781,38gihOVw,0 +782,tZ5EKruF,0 +783,vVJikMKU,0 +784,cmjOLYHG,0 +785,JPNFiKHX,0 +786,alsUNoWu,0 +787,X7wk1NJO,0 +788,mg4bMrtG,0 +789,qHreJyDS,0 +790,Lxa3vzfl,0 +791,fs3DBCAj,0 +792,o7QC6y52,0 +793,6RuLwBYg,0 +794,YdHsi1NR,0 +795,qkabGNms,0 +796,ryGp0Dxb,0 +797,cYkFUeig,0 +798,vFErQYKs,0 +799,fSKJ8ApU,0 +800,LVm56Rdt,0 +801,PF5Za6Oz,0 +802,7ZOw02nd,0 +803,AMVpnQtb,0 +804,XHGgyurV,0 +805,gUqfArY9,0 +806,Sd1sfaPx,0 +807,GL0RVBwu,0 +808,BM5sCpnH,0 +809,gtFdA8ok,0 +810,4RWrSC2G,0 +811,7wvDiYd3,0 +812,Bq52t0W6,0 +813,shYPJaVF,0 +814,41py9aq7,0 +815,G47Cp091,0 +816,v30SVU87,0 +817,7DPNyVxI,0 +818,Fw4N6Z9Q,0 +819,xiogyYeU,0 +820,Jse90fLo,0 +821,JhjnNQBr,0 +822,U0mZocn8,0 +823,PkbDTRpw,0 +824,RY7zaPG6,0 +825,czpLABPG,0 +826,RotCBOXE,0 +827,ZV7swB0h,0 +828,p139QrtX,0 +829,sZo7BfNE,0 +830,LisZOEkT,0 +831,Jp4Ogky9,0 +832,6jlYV3rU,0 +833,R6YM5bvO,0 +834,rknaLICQ,0 +835,TKuawY6B,0 +836,CfGE8Xlw,0 +837,UDdw1KHY,0 +838,hHPe2Xbl,0 +839,VY1a7uiM,0 +840,BVSioRF1,0 +841,0lctQHJY,0 +842,rhuC9mfR,0 +843,Y27pWI1r,0 +844,zJidf0Gp,0 +845,L7edDAq4,0 +846,Nq7E02Md,0 +847,3GBVC590,0 +848,ryJIBmlZ,0 +849,JFdtD90v,0 +850,RcaMQb8N,0 +851,SxKa3p5B,0 +852,PBAzSYcn,0 +853,QwDSXEPM,0 +854,J6y4Euaw,0 +855,9JjpKmXQ,0 +856,oKDj5EV0,0 +857,ujBVlQi2,0 +858,mDr71oqa,0 +859,4W9b6pzj,0 +860,pi7ocC9b,0 +861,u4MkwNbI,0 +862,cQeW05dO,0 +863,0xHXkTLC,0 +864,jr0HqpLu,0 +865,6zx7850m,0 +866,aS9TtcI5,0 +867,VGbSpqa7,0 +868,xlM4aI1A,0 +869,P6jVE3ei,0 +870,iRMWuOG3,0 +871,yQTp8FuE,0 +872,Xrvs1e3m,0 +873,HOCkdb1t,0 +874,czTNk16S,0 +875,H4wOgj9Y,0 +876,mKMxAWbF,0 +877,h1SITNrx,0 +878,V1OBFUrS,0 +879,YizHqE21,0 +880,kd7RKImG,0 +881,FX8E7TO9,0 +882,txq2w37h,0 +883,MxIZVSou,0 +884,IuaibrED,0 +885,m5UlpX2W,0 +886,xH5pPs1I,0 +887,2HR4h0Nv,0 +888,tCo8T1BI,0 +889,cFuoe92T,0 +890,o4O3ZM5a,0 +891,Ruto18Kc,0 +892,nKPQ5Bg7,0 +893,WHCDxPyl,0 +894,UXDBslFR,0 +895,8dRfFzkZ,0 +896,FjtCJG0I,0 +897,0pE3Pfo5,0 +898,DiaPwxgX,0 +899,0JOsXBEi,0 +900,1GNdr5CV,0 +901,KFPSBIlT,0 +902,T2Z18LoV,0 +903,RE8PJBCY,0 +904,DimeZ0zv,0 +905,qlA52BOT,0 +906,uFWIxGOv,0 +907,GLcKi0D2,0 +908,1uKAblrz,0 +909,10nedJlQ,0 +910,vVUkmpwy,0 +911,gFaV5z8e,0 +912,pb87A2vk,0 +913,QXtE8Ce6,0 +914,2onY017G,0 +915,YUtOgzjT,0 +916,9wbligyH,0 +917,BuVNntQm,0 +918,wFMnxvsb,0 +919,Qpnh6C2G,0 +920,BLvekCOz,0 +921,gIL9b1pY,0 +922,dzOiNpjX,0 +923,d0254Oc3,0 +924,gb4QJneL,0 +925,M87Bj4sT,0 +926,wgcBCrYv,0 +927,4bq1GdFU,0 +928,mxonsurl,0 +929,wyagIuJQ,0 +930,AQN51SW9,0 +931,pLdQs564,0 +932,obQe906O,0 +933,lGwCnMpF,0 +934,iR8yZ4XW,0 +935,d4izhKcA,0 +936,AvK3sjTZ,0 +937,ivIlW3d1,0 +938,ysmbnBJP,0 +939,gvbHqhjr,0 +940,HONuejTE,0 +941,GfegJUvA,0 +942,oXhnJ2KQ,0 +943,LnNOD7s8,0 +944,YIZ7R2nO,0 +945,4VyfnmcF,0 +946,3PXtDF9b,0 +947,IbqCFPsg,0 +948,FewAanBl,0 +949,O9tUb6YF,0 +950,oKOde9L5,0 +951,K6BvRe9q,0 +952,DISvlX1H,0 +953,rKo0gOSb,0 +954,ywraD0Ks,0 +955,sElWXP8z,0 +956,ugf0kcOW,0 +957,vQlpFwBx,0 +958,AG7imoIJ,0 +959,KCip3dgo,0 +960,zTPsIvXu,0 +961,1zF3tAIj,0 +962,0R8qAt1O,0 +963,LloCmZjb,0 +964,lgHsJuTG,0 +965,oTykU3X2,0 +966,mX6jqPLO,0 +967,0GTpRcfz,0 +968,vUKyo7t3,0 +969,bQJinc1A,0 +970,KxhPl2f8,0 +971,AJqzxc8P,0 +972,5E8VMwgj,0 +973,RQG3VJTS,0 +974,Z9Q5DK3r,0 +975,h6IPMviY,0 +976,KrYEAaC1,0 +977,kUwtRlvh,0 +978,mS7ay4X1,0 +979,yLAEwOQj,0 +980,JgIbRQE7,0 +981,SHlJk6YT,0 +982,IMTF2sVq,0 +983,cqwTupzW,0 +984,Cky6fRdM,0 +985,TpQABjgD,0 +986,2dIvGqr8,0 +987,MbVYWutE,0 +988,YwUdX3oq,0 +989,YRmedNI9,0 +990,R8TolJy2,0 +991,Gt4QHwS5,0 +992,iE6hpncf,0 +993,MxS73f9k,0 +994,mn1DVj2u,0 +995,HderK4Li,0 +996,GbN5TMyY,0 +997,B1IzOSmb,0 +998,qg2wt3bl,0 +999,MhzO3S79,0 diff --git a/unique-codes.ods b/unique-codes.ods new file mode 100644 index 0000000..7f060fe Binary files /dev/null and b/unique-codes.ods differ diff --git a/unique-codes.txt b/unique-codes.txt new file mode 100644 index 0000000..86041ef --- /dev/null +++ b/unique-codes.txt @@ -0,0 +1,1000 @@ +CMXjyOp7 +EFGeqVO8 +Ke5iVkgI +Kejus1t0 +fE0exnyw +6YOPfxNJ +H0tL1Moh +s0TGjh24 +jsaFXn6d +HCY6GrdW +taUoGmZ8 +mjdWQDp9 +VrIElJNa +cD2EwaQ8 +J8Kijsq0 +OCLa4MTm +UirGoy7X +hU71saDb +QLSoMH20 +vxmaFzXg +eAqYkupL +1c3yXTCo +U3PcMtjv +m5AuOXZr +1CfdvSYu +DMLFPZGj +ghjpS8LF +ij0ts2gF +07hRxjPY +ZgOiaPxl +6RePcMvD +r729SMRt +BaJUKV5L +38hpyEtq +BgZtjk2E +DWLfr2Vm +leExUGZu +C506Knru +6R5vU0iO +ZYrfye1l +kNGBRAzU +AnORWPsi +aG7oEsF4 +8SlR0vd3 +vmbB3dUw +r3ycn2hB +m6cBRnCT +PB70keqT +RMkiFd2C +QrWgcbqR +GQSN6hdn +03F7bnpV +vMFpVD09 +aAlZ24mq +9Rjm7HLn +waCgLZUc +ixNPnJ1s +qtyBSdKf +G4oFbKDs +WIqmCbw1 +gLjCZP5b +07TMEqNL +PgIBXN04 +wusJtn0d +qnzObEpd +ImzVJQvs +50PeBOd7 +ozE87a0e +j5yEw0UD +Vmnf3Q6P +EpncTOZ6 +xd2PhrOT +iupRXmwv +ZHnYi37A +dAmjNnPt +aWIGzh0Y +Cda4ZYn6 +C0uH6Swi +UmWx1ACu +htyESX5F +Bcxn0ZAH +u2Cg1eiM +2zmuWv3T +Qehd6olp +xKYGsajk +3Q5psrkA +txecomT1 +7lNAmCEr +45OrhDl9 +YDUm3E85 +EKsyxIOB +KkbSRUWn +J4n5xdUF +czWsBZD6 +W0eHxLfM +OrZeuFMx +rPWpkK20 +967P54Dn +Lt8Bly1u +kPvtAKHG +9BRzEcYQ +mVuXki1o +eyNr5TuP +NZpPexjq +lPGayovL +RzrPFh6m +njoFKViJ +SqmIsnP6 +QNMym1Je +QsKwpexT +dvOb5PIy +khuj4piH +Qz3wtslU +42VuQpFa +ma9Ce2hH +pX6K1Ex5 +hX4AszP3 +oXK3a6ys +IEu6Q9Fh +TxXacumP +hEDzUrBf +Zb17CEnO +vwM5EnzX +Ucvy51AM +wu3JWEsx +saBPELO8 +nPg6sOim +W4XUqlDb +Ys045FyT +AB0MZ6C8 +xJA15hjO +rLNn0U6d +wIX8SRhO +X3musJTA +UKz2pf5W +vCJOqrz1 +bh1pPXkS +PMsJEG8W +VdR9BApr +5eUC0wyM +29JqWUhr +r421iOeg +eVpz2ZEk +KHWPa0on +7XoaG2PZ +vnsSF4K2 +kQqLH7fG +MpFAPUeY +0jtwVFUJ +7S4iyatE +aHnwzBNv +xQ2SVCcn +knhMSbx9 +JIY9KRGy +L3qZz0PI +Ym6B1G8R +k8nifx3I +lPqzLGpk +wf4ZqA8U +jAU6HwPp +OLXesCAP +8tLNz0eJ +xGO62B9Y +PZLUIz38 +X0i5RbkA +wTJynChc +SlfFH8Yp +lKxnY76M +xt7PZ9ID +2zWKBenI +MotDE5q3 +ICnhoQ6F +Z8gRqASV +QX3764Ut +y4F0hxPm +7aVjiFNk +ayGKTcRg +OAxKl5hQ +p0Z8jFYB +WQdLPXGJ +5Onepuoa +750J4hiB +SYUwbA8v +Xzkbdnt1 +5VlprmYD +3N8rdjM1 +0qJmvMNQ +6b8BjyU0 +Z91UTv4O +TZxtrBOG +36xMwaUo +SbuYMw4p +zp0bBr7P +D9LNjy8P +n50zPpam +6DAHCYyv +N92Cf8vw +QRbO6Zlk +x0QapXBO +W2fbyU8K +Qd4xtJIe +5CNE3wlX +lNQaJzvr +TjLFhtMS +WmrXqyae +PAuCoyhD +cPHvrtAD +wgn9xhBs +LyQaDrqK +QNkxrd3b +C8IjGET7 +eQEXZIMu +iuD4MAon +btuWQNxY +jo2UiH1D +JRKXbpg9 +fule8bEw +7UKLxndB +ryZf39tF +YIDS1hBP +tR03BuZI +Rkvou0tP +qBFh6xRH +g8zBM1mf +p38GtFI7 +l6PakAte +o2XOEZRF +8IxtOZzN +lQzRYgIb +vlCWMqb6 +r49ZXujn +BEjTzs2V +AyZMnDWl +YP0d8ysr +3SZ4Ej2y +57PvezAn +SEfNIoaV +ibNL5MBX +wP2cJ759 +GMQJKhxI +j53wyboP +ygs6BXQ8 +dSz0NJUH +4Me5AVd1 +A2znqdlE +bnWHDp9j +Fo3Juf4d +oMsA182h +uepwALZs +v64Wh3ZH +RksTpPBK +OfSsPUEb +8i3VYxMd +IiV0oJqF +xWy105Nt +lB85qkf3 +zTVwgAOu +ijHNoBcb +sMkjS2aR +zlMyOnW6 +6cnITWBU +BukLiDt9 +ap0KXHM1 +47zMiZGq +48Q9rCon +gRH9P4au +QXxDj0za +rY1sPbIW +JG4EdKWB +Dbol5ayR +GZIRTVgx +ApJvIbzW +GYCiq52R +niS3WUZT +127IBEpY +ECZbRa4W +soMkpiaj +v5fQPzaU +ReSPzcsk +lXCkTB75 +3dAQTjUw +cvK39uWq +Ms51QCYb +QIYK4DRu +BMQyj9ke +jkBsDbX4 +WpY1ljti +H2AtOnq9 +g5u7q49v +ThE69jQt +A1TO45N3 +bfpjMAOL +bqR9vEjX +4GOzIW2x +kJc6OQRi +ykgpd6P2 +Z8KmVEvR +7DYxt8Al +WP9rdZkc +oyFn8hAO +qQnhztFS +KlYieFHf +6pcydmAw +M83QkSws +edrEoc79 +r2LshXwY +6D8qok5r +kSj3cIbt +zrAyIu80 +NH7Cg4os +xEzsVNO1 +p6yQzLUN +2hsPIAnR +n1d0NI89 +e9SQaFAO +OrHRuCxk +fi25TExP +GV0OHojl +pIUT9sbe +e9qT0lWk +MiSzJg6k +eBtlAN3G +ZTA5Rdt4 +Xiodm4Qr +jmWxtA0X +Awp87Hy3 +CnWetYym +hcjxLumk +ugIRyiCc +9IbRXY7N +FxX4js7K +hjboTeLR +OHRxwWsM +VUzBWrcH +79LZa8FD +7Hm8MZrb +gak5oPYh +xW0i3HdR +gylSGh54 +qFCba1o3 +JV2t9Ika +7c6dgA3u +ts34LBbm +T9fsv1V5 +OLDchf0s +I1NG2SUO +xBFqy7pN +k7zYXAEl +ZYHq4CPu +7mdkMqPz +iOHo3Jxs +T9o3swJI +WjFMAvfV +msIZ2Mqe +3sGvJ7ma +REWDdmSl +H8fwZXm2 +hcYy2wMG +IiuzrYDo +jpVi1hBz +Tj2sclvF +S3uh4dn6 +fXrJacFV +46Kq7RQa +HhsV0alZ +ZvYAx1Kz +KN6fuvE9 +EaOQFceW +EIDl62VF +uIXDSKWL +HvLDVwJA +8t9zbOEN +BOsHcUmp +dtbM6P25 +LBe7Ghpv +oV4UJRSY +MhTEXUYI +sHjLKxFk +LMp5BeSQ +RuB5IPXM +pKQPdusv +TQpC5kKB +eU2SFvCl +cYrSXLmf +T3zJL0u2 +Oszl2HbW +Zha3pEJk +fOsehUui +hnfTXrIP +CsXOmkNj +TXCAYJFg +UnPGqZpo +WOyx7tPL +smGr0Kf9 +wGOXvQax +Z9IHYgAk +d5VYJunl +Fic60gXj +Kqpflmcv +T09i2RB5 +wl7nyJNz +XBWrIOpR +OHtJVuAg +4Z7FsQ9l +9zDCcH83 +dOV84jEB +9zSC1YkZ +bg43Ucyo +e50hOasZ +8tc9AfRw +pYSJ6M4K +PCdkR6iZ +fEMhwqtz +6r9pGMzC +gacWHbRT +7Fo34tX0 +gzSAfR0v +F2MPsnvL +YltQ6E3L +iphHg8sK +FAXVgeP9 +VciN8QYF +7VFfOYT3 +4ATQ1iY5 +9xmqdsKr +w5rdcl2V +XH3YolgK +No52vT0l +BXfY12m4 +4wJaU9uk +blPJtQL0 +cNn4oa5P +k8TzGMQp +P0HeMJRn +HBgm0x1C +UlGi4g8N +Efgsmx1O +a8yBdT3z +MZ0LfqJa +m7sQtBdL +0AVhzUbD +XUMulCHF +0mxoGYK5 +Efcr3hRW +iuqMdYAf +MixhFv6T +iZCWnTG6 +uaepXk4l +OQrF1Daw +8Oblw0ja +A7dy8jno +3QraXxlI +JtXCMN0p +mEXLdCh6 +fstVSrbF +RTzw2sij +dRjyVYpN +6OeAUb7Q +A2gRbzim +5IiKCg1U +N4ZTC0l5 +pYfoZ4yn +1Jez4aj3 +DQgJVtKh +IDpmyjTv +gUo5dJfc +MmzWEI7e +ar142zFq +3H8zvlR9 +eyjawBhU +J4FIYk5i +pXsUwmag +ERkQDBc4 +rMAfShje +OvjAIbYS +aNPi4prJ +3xHwLYnS +35bhKpTH +1KyW2dj9 +cr6gZlhG +uVFTbrdm +A5hSzaOm +apCBUFPv +ZN3Rm0ax +2VOleuTy +CcLYAki0 +SO4Yk93D +k9KwDIHT +hRgpNIz7 +5ZXDyQlm +Mp2VCASm +zD9UKZ6v +soWNOuVS +sOl47F9L +ZO5XrJaT +nKAuj9lF +oT7HABMR +8kLPabT5 +G2FuUAn4 +dINWO0L7 +MdwePgz9 +aUKNL7mu +caRpCVkj +zqVhFJjn +m3FTWYeC +KpvbqIRf +LXAlj3oF +IQR9kUJC +dIXvBLMS +Pz6widY2 +RLOjagSQ +hk4Yq7Nl +DmsKc07z +Gt80hIAy +YxFQwbsD +9wNbHLyp +V8FyPpqN +UZufDe9x +Rhn2ipUN +iqOxfbPQ +XwLesjc9 +76gqlrsb +OwbCVBgJ +enyx3jaG +o83vKnk7 +tL7d36eb +BpszPO6k +peU7Cbc9 +1kWahs8n +cfiyFU8N +wrd7Dj9N +sctxDZ3O +BoD1qwyQ +7ClPQE9H +fnlYwPCH +UC34vwEu +8UBCxzks +nwbG71tc +DNm9gErn +KH9WaBwl +oIpseyln +Z2XNLo4Y +OLqvX5NE +7HhFZsKU +hZMdi4On +WdRvpxA6 +k2OXUzsn +4ULrFAH3 +gr7eui9O +WrKzC5tJ +sjtQ5CKS +J7xPSg1G +X0MaCNV9 +kqODHvws +CAN4IKnk +O52TNHao +fvpdcDWa +xwlNOTjD +GNwYg0cr +JgWuolN7 +Wapvjur3 +mMdsRyt1 +64ZpcC5R +icC8QTUt +qTIrktW8 +QkE5Yxvt +4RJAvSFU +2Ctp0Vcw +tnyrWYh7 +x2GcNUOm +BDJIisoR +aWf3MJXD +SoPm9j4D +8ELwACfU +4vgFOda8 +rboZB0S8 +v2cpF7nl +qbtnHg0T +bNTiG9WD +hFPcAQYI +MytXSLWf +4wrkBPEO +zRMULar4 +UIXrwGES +LVPSRZi9 +NGnF8i1Q +YwujiXzJ +vp1BUoGi +c25UxkA7 +XzUKOFos +zISZPk9u +R2Fz6esc +xHzIVemf +HMIwkdSX +CzXL1R0i +P92DpCoO +rYogPy09 +HQcmTG7U +sxamYP1u +Ot1qdIwa +mHaTVQYx +6ckY1nQ0 +EJTFfdow +Qyt4vTS6 +vnyoMCcT +ML3BI8qO +HTNJfFYi +Py0zQlmA +2JW5SAfC +ZjPwDiQ8 +0sOEktCN +gXJwmrsy +7YyWkMQj +Ty4kKrmD +4ChUH6L3 +wUC0Imhu +NarKx8d6 +TVYJDAdQ +KBD2Gaws +poxG8DN2 +1aqKFoLp +YVuegbPR +6F03BC1z +hSF3Z2BI +CqyplNPr +JRV4Mc92 +pZOcjRCu +oe2I9lMv +EUyDjw4g +Ju1kNnGL +uiEZXdGC +3ZcFusgI +xNr97MSA +qYDaxdUF +vQSZxe9P +YIn5QeaH +GHl5YuUC +w81JqKBM +fKevi8pz +fy4DBNQg +xT7FA6dg +gfIo5MkC +ZseJBWcS +vrEweARJ +GIgWzvc7 +snguBtdO +kDpJUqQW +JQMCosq8 +j59zoLtZ +Lb2zTlke +3GW6I5a9 +JqKGQ7Y0 +gyDVcJOu +2bItNvY4 +dHnkpzam +dpa4LSRg +FlKosxyt +eLsmvFbZ +DXwCRrxc +Ih7rS2k1 +Uv3P6lOC +xv12gAQi +8BPtk72T +Y0rSL3UJ +TJU1spyB +Cbe9A3TW +6yPQqbs5 +1z2Fr3kj +wyvCYJ9G +IAKR1sgP +2qoyzYMS +HGOKmSj8 +szwHftWP +WTBl1qSV +DvzPp50c +YHLd8X5f +A1DcbotS +MKCo6sOe +BhnS0Hx5 +3NmxDaO9 +9n8zOcbj +cWBPVink +hLNBcos5 +Huo6YVDS +I5q1H8hn +TaZyGo56 +QlcyMfj6 +U4fkYeLi +ox27NF9q +fpjxug49 +OgfeKm72 +qZnNLBIE +DpY59qXK +4uB9lpdP +Q4qUaNCL +Ecx2ML1g +EksJuVow +E8JxGzre +BEsLhA5Z +u4firnEA +Rt5pewJn +RpWxSBYX +uES421AV +34k2UQZH +PT9pjCNB +2KkQLphW +YAQo1aWL +Pum7OWzU +PSxo9av0 +ol9rnML6 +PSAt26eq +UgRkPY46 +NVCyJ6Tq +1cWYzfyB +81tIFUbh +ATVksdf8 +EwHXGIYb +MzvIbTdF +LJQ45pql +lsgJdObD +VNogipvn +wIfEtGPD +HlmMNfFb +DPxbic45 +zBHqJekP +Px6zhvpY +uiOzZ6Em +1AHQUlht +uIKTx97d +vYbwU2eX +n1KHgyqa +4vhmuFIT +ulj2dXcC +GPrKelVb +B4UizfL1 +yVI36vEz +U5WpF7Lm +W4pghOl5 +7artWiGn +73igkmbN +LVGI7uma +ALXvf0mQ +NPZKz1k4 +xzZLNoKV +MSscrARN +NjUhxqFP +Wd0DXhH6 +8YG1d4rO +VS9JobQe +8SwK5ha9 +d07OYQh8 +kOYmwSIv +lJ7ShPqN +GzMAJQ6R +MhnHlT6X +CYRZm1QV +Zu9fO6m5 +PZKq5OW3 +4IVCsBAi +lnYB05wR +LJ508hAD +MrnLRBSo +iVtNUIXA +i3CTdZbJ +DxnR0KTd +Mcyb9ZTj +PeynspAC +vksA5U2y +EyWdg25R +20ZhI83G +FwNjhu80 +6dr7zBGs +3qtJM17C +kjSHXl9p +xtMNmwT2 +qaUKZ8y6 +m6TsJ1Wp +5o8TzPhD +kcfrbswM +rJ2et7m5 +JPrc4oy3 +38gihOVw +tZ5EKruF +vVJikMKU +cmjOLYHG +JPNFiKHX +alsUNoWu +X7wk1NJO +mg4bMrtG +qHreJyDS +Lxa3vzfl +fs3DBCAj +o7QC6y52 +6RuLwBYg +YdHsi1NR +qkabGNms +ryGp0Dxb +cYkFUeig +vFErQYKs +fSKJ8ApU +LVm56Rdt +PF5Za6Oz +7ZOw02nd +AMVpnQtb +XHGgyurV +gUqfArY9 +Sd1sfaPx +GL0RVBwu +BM5sCpnH +gtFdA8ok +4RWrSC2G +7wvDiYd3 +Bq52t0W6 +shYPJaVF +41py9aq7 +G47Cp091 +v30SVU87 +7DPNyVxI +Fw4N6Z9Q +xiogyYeU +Jse90fLo +JhjnNQBr +U0mZocn8 +PkbDTRpw +RY7zaPG6 +czpLABPG +RotCBOXE +ZV7swB0h +p139QrtX +sZo7BfNE +LisZOEkT +Jp4Ogky9 +6jlYV3rU +R6YM5bvO +rknaLICQ +TKuawY6B +CfGE8Xlw +UDdw1KHY +hHPe2Xbl +VY1a7uiM +BVSioRF1 +0lctQHJY +rhuC9mfR +Y27pWI1r +zJidf0Gp +L7edDAq4 +Nq7E02Md +3GBVC590 +ryJIBmlZ +JFdtD90v +RcaMQb8N +SxKa3p5B +PBAzSYcn +QwDSXEPM +J6y4Euaw +9JjpKmXQ +oKDj5EV0 +ujBVlQi2 +mDr71oqa +4W9b6pzj +pi7ocC9b +u4MkwNbI +cQeW05dO +0xHXkTLC +jr0HqpLu +6zx7850m +aS9TtcI5 +VGbSpqa7 +xlM4aI1A +P6jVE3ei +iRMWuOG3 +yQTp8FuE +Xrvs1e3m +HOCkdb1t +czTNk16S +H4wOgj9Y +mKMxAWbF +h1SITNrx +V1OBFUrS +YizHqE21 +kd7RKImG +FX8E7TO9 +txq2w37h +MxIZVSou +IuaibrED +m5UlpX2W +xH5pPs1I +2HR4h0Nv +tCo8T1BI +cFuoe92T +o4O3ZM5a +Ruto18Kc +nKPQ5Bg7 +WHCDxPyl +UXDBslFR +8dRfFzkZ +FjtCJG0I +0pE3Pfo5 +DiaPwxgX +0JOsXBEi +1GNdr5CV +KFPSBIlT +T2Z18LoV +RE8PJBCY +DimeZ0zv +qlA52BOT +uFWIxGOv +GLcKi0D2 +1uKAblrz +10nedJlQ +vVUkmpwy +gFaV5z8e +pb87A2vk +QXtE8Ce6 +2onY017G +YUtOgzjT +9wbligyH +BuVNntQm +wFMnxvsb +Qpnh6C2G +BLvekCOz +gIL9b1pY +dzOiNpjX +d0254Oc3 +gb4QJneL +M87Bj4sT +wgcBCrYv +4bq1GdFU +mxonsurl +wyagIuJQ +AQN51SW9 +pLdQs564 +obQe906O +lGwCnMpF +iR8yZ4XW +d4izhKcA +AvK3sjTZ +ivIlW3d1 +ysmbnBJP +gvbHqhjr +HONuejTE +GfegJUvA +oXhnJ2KQ +LnNOD7s8 +YIZ7R2nO +4VyfnmcF +3PXtDF9b +IbqCFPsg +FewAanBl +O9tUb6YF +oKOde9L5 +K6BvRe9q +DISvlX1H +rKo0gOSb +ywraD0Ks +sElWXP8z +ugf0kcOW +vQlpFwBx +AG7imoIJ +KCip3dgo +zTPsIvXu +1zF3tAIj +0R8qAt1O +LloCmZjb +lgHsJuTG +oTykU3X2 +mX6jqPLO +0GTpRcfz +vUKyo7t3 +bQJinc1A +KxhPl2f8 +AJqzxc8P +5E8VMwgj +RQG3VJTS +Z9Q5DK3r +h6IPMviY +KrYEAaC1 +kUwtRlvh +mS7ay4X1 +yLAEwOQj +JgIbRQE7 +SHlJk6YT +IMTF2sVq +cqwTupzW +Cky6fRdM +TpQABjgD +2dIvGqr8 +MbVYWutE +YwUdX3oq +YRmedNI9 +R8TolJy2 +Gt4QHwS5 +iE6hpncf +MxS73f9k +mn1DVj2u +HderK4Li +GbN5TMyY +B1IzOSmb +qg2wt3bl +MhzO3S79 diff --git a/vinyl-downloader.php b/vinyl-downloader.php new file mode 100644 index 0000000..188bed9 --- /dev/null +++ b/vinyl-downloader.php @@ -0,0 +1,56 @@ + +Version: 0.8 +Author URI: http://www.schubertdaniel.de +*/ + +include_once(ABSPATH.'wp-admin/includes/plugin.php'); +require_once(__DIR__ . '/VinylDownload.class.php'); + +/* include settings page for admin */ +if (is_admin()) + require_once(__DIR__ . '/includes/options.php'); + + /* + * ajax callback + */ + +function submit_code() { + $d = new VinylDownload; + //$d->database = $this->options['downloader_sqlite_database'] + //$d->file = $this->options['downloader_zip_file'] + + if (!empty($_POST)) { + + /* TODO : validation */ + $code = $_POST['code']; + $format = $_POST['format']; + + $d->database = ( ABSPATH . 'db/vinyl-dl-codes.sqlite' ); + + $resp = $d->gen_response($code, $format); + + } else { + $code = null; + $resp = 'POST leer'; + } + + echo json_encode(array('code' => $code, 'resp' => $resp )); + wp_die(); +} + + +add_action('wp_ajax_nopriv_submit_code', 'submit_code'); +add_action('wp_ajax_submit_code', 'submit_code'); +wp_enqueue_script( 'ajax_submit_code', + plugins_url('includes/js/ajax.js', __FILE__ ), + array( 'jquery' ) + ); +wp_localize_script( 'ajax_submit_code', + 'frontendajax', + array('ajaxurl' => admin_url( 'admin-ajax.php')) + );