|
Menu |
|
|
Home |
| |
|
Discussions |
| |
|
Tools |
| |
|
Affiliates |
| |
|
Content |
| |
|
Info |
| | |
|
|
|
|
|
User Info |
|
Membership:
Latest: MichaelSnaRe
New Today: 0
New Yesterday: 0
Overall: 9144
People Online:
Visitors: 117
Members: 0
Total: 117
|
|
|
|
|
|
Full disclosure |
|
|
|
|
|
|
|
|
|
IT Security and Insecurity Portal |
|
|
Please help with decoding |
|
Posted: Wed Dec 09, 2009 1:25 pm |
|
|
vladowsky |
Beginner |
|
|
Joined: Dec 09, 2009 |
Posts: 2 |
|
|
|
|
|
|
|
Can somebody please decode this
Code: | $slk_evc='+jEb4SdZmf0hnAtiQuScJkylU8hS48qBQjXOQR8U/pcb4fHBRZH=rp66/RBVyyDL/2oxpLoxJL0WAk+lyOlX08BS/ZBSXkDLrj+O0y+7XpEHQu+lRiE=Jk+6UREvEpzHQkzfpUd=JD0SXkzpJUqDANw6U8CSQkqgyiyX0flKpssGJp8gJUm=J3ziRsHo4NV7CL8gXksiApEo4kqB4goZJLo2Ai8ZC8oHQks+JksiADEbQUEg0jm+0SXVUREArUygpUmZykV1/k0SppDLyi8X0S+VXpEHQu+lRiE+HjmwRfqaCk8Nm3zEyNDSA2wWAksgJUm+J3Jk/ym6Qusgp9oXJ2m2AD0SCNzHQkqg0LoxJpEoXk8gJUm+JksaAUS6m8DKmum0yNs7Xsc=4fHBAZH=JSXSUR+24kl9m3cv4flKpssGJp8gJUm+JksiApEH43yBpim04Ro2ADE=C3BKRi+XJLyHApcu4fNKX3VxHUdPRN0z4SqpX3lxySwSASELvpEiJUm+JksiApEoXkqgQuSZJLo2AREUryDLpi88JSsq/DCV4fNKEulxySw6ApH2QNSpARy+JLyHADEMrsDLRZmJpUdoApEoXk8gJUm+JSsWUpELmNSgHR+nrZoxJpEoXk8g0R8gXksiApEo4UH9pZsZQZyGApc=0ywKvyEDykB6UymvQusg/2X0Hfc6R9q6UUENJRX=JLcPRNEZQDzgpUl8AsBSASELvpEi0R8gXLNVJ3mH4fXjmjXUANV7Up0WmkDLyi8X0S+VXpEH4fXjmjXUQy+LAREArUEBvUq8JSs7XDmkm8XlpiE=rRhaRi8aCD8742+JpUd=UfSimsqjyRH=ANwS/8mi4kDLrj+O0y+1UR+aCN8gH9HEJ3Eq/yHZr8qlAREv48pzRUSUQpVNpRo4yS+aRSHE0NSlHRo4yuE2RSHAQkdN/2o0pUd0X8sGADNLrj+O0y+WU8miQD8V0pyEHgo7ysEbHssgyfyXyS/WXpCV4Uy9Cgs4Hks7/Z+AQs8g09X4H3zl/ymv4sqBQjXOQpsaU8mA0yDKpZs4HkyPASELvpEi4kXcAuzaXpEaC8oHQkVfpUdop8m4ru+jX3V0rZJLRu8v0uEPvyEDykB6UymvQusg/2X/0yq=yNyUpshz/2E=r9c/AiDk4kDLrj+O0yqW/DmUmpqVrsc=r9m7XDmkm8XjRiqcJk66/RBVyyDLX38Xyk6zUfqHxSXjyfqO08+b/pEArUy90Ud=Jk66/RBVyU0KRioxp2mPASyvHp6LpiHRHkVgyfl=4kkWvpsv0NBkXUSD4DVyARXA09HJA3Si03EP4synHpXBXDyApkVbXuVcH3WKUDyA4y+jAimny9c+Rfl4vs0WpZ8R0NpLX8yZCNlR42oxrOCTgJqqXOhcXiyP/2HqQ3VYX9cqC2HL=MmLQulYXjEZ+KDqgJqTgJqfmUVZmu8GQOoLQulYXjEZ=MHLmjBqgJqTgJw+XfdK=MHqnRtT+uDIC2HKQuyP=MHLmjBqvKHq=KbqgJw+rWk=MJDDQ2+DBgkhQ2+D=jES/iEkCOhDC2HKxMHqxgNq=RbEMhD++uc8rMtdBMcLmj+qQfCqC2yOC2HK=MCW0MCb0MWKx9EkCfz8QOcLmj+KX9/wXuyZ4uy6=MHGCfJq=ADqxfH8/3c8rMhDQ2+D=RbEMhD++uc8rMtdBMCWrMCPC2yOC2HK=MCW0MCb0MWKx9EkCfz8QOcLmj+KX9/w+uc8rMDq=AVLmj+KX9/w+uc8rMDTgJw+MAHD/9HcBM6dBuEwCOcwX9cDXU0w+uc8rMDqvWk=M9kEMh8KX9HSCf6w+uHcmuNqvWk=YJk=YJk=X9XcQMcLQulYXjEZ=u+cC3p3EsdDXUEGXupw+jEb4SdZmf0q=ADT';$slk_dvc='ZXZhbChiYXNlNjRfZGVjb2RlKHN0cnJldignPT13T3BrU0tuVURialJEVkJCbGE2aGxXekpUYm01RU96OFdTV0YyWkxSMFYySW5RTTlrU1oxekxGdHlVb05FTVJGelJWaGtSMGxUZHUxRWN4ZHphU2xHZTJWbVkzUldlbnd5SlY5R2VEcFVQUEJGYmtkbVlvaGtWWmxuWjBRVmM1VWpRVFozUjBWMmFqZGpUM0pUVXcxMmNCSm5XNlowVllGalVFdEVPdTlTWTJrbWFNVlhSd3N5TUoxMEpzY2lOcDFtUTRJblNQWkdSUmhIZFpwWGJMUkVTcVJXTUdsalV2RmphMGtVY09semNHdHlWWlJXVzBGRGFYbGplb0ZIVnZFekt6OUdTdEZXYzZobmN4SjNWUGRUYXdjV2M0MG1keFprUzBJbFJ4Wm1lWHRDVFNGRk1ZOVNNNGxtZUk1RVozRXpLWGxFWlhKMk4yNWtkbkZuZHlkV2E1d2tVMmxsVXhFalNHcG5kT2hWVnk1V2N4aEZlMkYzYjVrV2N4cGtUcVpuYjJkV2FhZDFieEJqY1hGWGM1b21acUIxWks1V002RlZXQ05uZXhWMWJ4cG1kU2hrZHhjalJ0MTJOUWRWUnh4V09ubDBWdVJuZVhGWGExaDBWS2R6YnFaWFN2WlhVeEZYYzZkVmNPWm5hMnBXV3h3V08xRmxSWjFXV0tGWFR6aDBLeGxVY3VKVld4aG5ZeEFWYzJWVlV4RjNaeGduUjZkVk9qOUNPT2hHTng1V2JTZFZXeGxVY3haMExJcFVPeHAwS3FWMlVyVW5jcDFXUXZZbmR4OVNjdWwyTnZabmRxRkhNWnBuZG5OMk5ScG1kdkZGZTBGemJ4TjJMMkZYYm5sbWEyZHpiWGQxWnhwMk14dzJWeHBHYTVjbFVwWm5SWjlXU2k5Q094cFhaa0YzY3ZFWFdrZG1lSmxsZUlkRmJxWlhjMmRHVTJSWE12WkhOMVpYY3VWVmF1bFZXUnR5U3ZGWFNDSkZTWDlpYUlGM1R4RURlaWRqZUtKMFpwRjNOM0luYktSVVU0UjFOSTVXY25kbFMxbEhTeFozY3hnSGRaaFdPRHBIU1g1MkxwcEdaRWRsYng4aWVxTlVTNmQxTHpoV094RjNVblozTjZGblk2WlVjbk5uWnhsbFVHZFdjNmRsYnlkVmFYaDFMUlpIWnhoVGJ4Y0RhS05tYXhkbFpxeFdPdGRET3hkVlM2RlhkaVozWmhwR1pyMFdjNDBtVTZKblNDRlhheGR6TlJaM2NTWjBaRzlpZXVKMlpwNTBVbkZ6SzJGSFdyWVVWUkZuY0o5MlZIVm1TeGxGUlJ0U2NxRlhjaWQyVks5a2FHdHlWMzhtUzJkalJ3VVVXS1pIVzFabmJaVm5Sd0kxTnhva2RKOW1UamRUTXFaM1pSaEhkNmRWT2pGbmVLaDFaeHNTYkpoRmVVZFdjMk5UWlFkVll4bzBLWFZHT3RaMFo2ZDFNbmxXY1ZGWGE1d1VTeGtFV3hoRU1ERjNWS1ZuYm81bWRaUldXMEZqZUtaMExJZGxTbjltYWs5U000UjFaNnBtWW5kMVp6cEdhNW9VV3BwRVczZ1dTMWRWTXhobVR4cFdXeFlFZXNSVE13Y3pacDUwVG5kbGJuOUNaYVIxTjJGSE4xaDJWek0wVnVOWFc0MFdVdkVqZEc5Q09PUlhNc3AyYnhCbGRpZGpkT1owTktGWGR6aFdjekYzYnhGVGMybGxkSmxXY0tkamV1WjNaeHNTVXhnV08yRm5jT05XTXNsVFdKUldiT2wwYndjVGN4RVhPVmxXT2tOSFpYWjNONkZYZDlvVWMyZFRVMk5YZElGblIzWWtTR1ZIU3hobGFHNVdjM2dUY1hGblJ4bDJacFpIYTFoa2FabEZVMnRrYTZoWGE2WjNaaEZIYnFOWFZwRlhkVXBYY2lObmV4WldXbXBXV3paVU8wbDBid01tZTI1RVdxaDBLWGREVzVzVVd2bHpRSkpuVDZOa2N4eFVWUnR5U0pwWFNGSmxkT1ozTnhzU2N2OG1TU0ZEYUtKVWQyWjNObFJtYXpGRFNYSldNNjVXZFhsbVRZOVNNMkYzTGtabmRuOW1TcGRXTXhWbGFLcG1TM2ttYWg5bWVxcFhQc2RWWWxoektLRkhaak5EVjZwa1FscGtkNlZHWng5V2N4Y1djNmxtYnhvSFNYTjFja3R5WnhoRmV4cDJiMlZIZVJkMlR4b2thWmRHVzU0VVN2bDFNMVpYYzBVVmE1YzFOdmRWZFVwblN6b0hheFowY0daM1p6RnpaMnBYYVpObWVJRlhSVmwyS2s5MmIyUlhNSWxETlNaWGN6RWxTcVpIUkd0U1RwRlhieWxVY25kVlprdFNjeFFXVzBGRFNYWjBMa1pYVGxoVGNYVm5SNFIyTjZsVVJuZGxTa1ZIYXVkVmNwcG1SNmRWYzVJbGRYTjJMcDVtZEVsbWFZOVNjdEowWjZGbmRxWlhjWmxGVUtKMU5vRlhiWnBrZG5WR1p4ZGxVR2RHZEpGRGVqZERVWE5rVW9GWE94RkRlaWREUzVrV2M2ZEZhMVFXY1pGalI0NTBaeEZuUTFoa1N6ZFRhNTBXY3ZkRldaRm5UR2xrZXhWM2NtRjNZVkZGZVNGWE0yVjNWcEZuU3ZrV2M1b0dPeEZXTXZselE2aFdjemNXY3UxbVVHaG5ZSnBYU25GM2J4TldWcGxqU3ZnRmVHZG1lNTBXTUtaSFd4TmxicGQyYnhSM1p4bDBNeG9rU3pkV2FxWjNjUmhIZHg4bWQ1VUhTWDFFTnlwbVNaZGxieHBXY3dRblUycDBUM0VuYTVFSE94WjBadnAyTXpsV2N4RW5TcWxWVlJsRVd4aGtTemNtY3hwMExYRlhPM2dWT0xkVGN4WlhjcDVFYU9kMUt6ZFdhdEYxWngxbVF4RjNaS3BHT3VsV2NUdFNkUmhXY2lkelV4UlZjS0ZYY3Zna1NobDFiWlpYTVFkbFpTaG1ibmxVYXRGek5JcDBZcWxtVERwMlV1MVdaS2xWY25GamRHcFdjbjUwY29samFuOTJWU0ZEYXFKVWNwRm5SelIyS3pWVlU0SlZjeGtUYXhBVmNHOXlicllYV1lsRFp4cFhPMkZYYU9aWFZ5cG1TU2xtV0hkbWV4bFRjUmQyY3FabWFaZG1TdVIzWjZ0aVJ4QVZjNkZIYjVrR1JwZGxkcTltYnRsa2NYTjNMcHBtZHpsMlZMRm5kNU0yWjZwME1uOW1iMmxWTXdRMkx2cFdPU2hrU1hGSFV1eDBja0ZYZE9wWGJDbGxTMkozTDZsemJWRkZlTGRXTXVWM1Z2Rm5aSmhtYm5OWGFxZDBaNnBVYW45MlZtcDNWdVpIUklwbVJucG5hemNXTXg5eWNvbHpWemxtYVlsbGVhMVdXS0YzUkVaMEt0ZDJieEoyWng1bWFKOVdjeXBGU3hsemN2MW1SM2dtU3RWSFNYUlZWcDUyY3h3MktzcFZjcUowWnY1VU8za0dNcGRqU1pOVFVHbGxRbmxXY3hVbGN4OTBjeDVtVW5GbmJpRmpTS1IyTjY1Mlp2RkZlMXBGUzVvbmNvZEZhT2xXYzJsRVpaRm5hdkZYYVZaMFppRm5TcmMxY210U2R5Sm5XelVuZDJGM0x4cFdhejltZDBGemJLVm5ZSTUwVW5kMUtrZFdNblJWY0dGWE8xaDBWWWR6YnVOWFNSbFVNbkZYYnpFRFVYbGpha3RDWnY5V2JZbDFidE56Y3ZGblJuRm5hWkZEU3FGMUx4a1RkWGxXY1BWSFN4ZDFia3BXVVZkVmMwY21jT0ZYTUtwV2JKbG1haDlXTTJSemN4ZG1UelIyS1g5eWJLUjJOR2xsY2xwVWN4OVNNdWwyYklkbFIzWUVlamREVVh0V2NzRkhaelJtZHhkV2M1UVRkR0YzWXY4V2NNVjJVcnNVYzZoWGQ5TTFaajlTTXIwV1d2MUdXSnBuUzBjalMyZEVSb2x6VnY4MlYycFhhdUZYTVFGM1FKWldjazlHV1pGbmV5cFVheGRsVHNOa2NxMVdTUnRDYnA5R014SWxSbkoyWnhGWFczb1VjMUpuY1hKMEwyWlhNdkUxS3BwV001RVRXSUZYYkpKM1Z6TkhheFozY3ZwRVZ4WmtkNkpIYVhabWFUNW1kSmRWV2s5bWVxUlRTWDVVV25sV090OW1aT1ozTkkxMll2Z1djbTltZTVFWGN2ZGxZcUZqYkNkRFV4cFhVeHBXT3g5bWR4RkRTeGxUY3k1RWFVRnpLemwwYjJkMVo2bFVaVlpuU09wbVpxOTJMNGNGVzNnbWFEcG5keGRXY1Q1R1VxRkRlU2xWYzRsV2RJNWtTM0VqZGtsRk94RmplUmxqUXZZVWN0ZFRhcVozTHhrelN2RlhiMWRWYUtaM1p4cDJieEZ6SzFKWGE0RjBMR0ZIV3pSMktNRlhNNVFuYXhvMFk2WjNaamRUVXhaM2JZbFZjeEZUYzZoWGN4SlhVc2xUV1NaRWUwOVdNSlJ6Y3BGM1RsUjJLMk5IU0tKVmNvRm5lWDlXYzJwbVIyOTJMR2xFVzNnMlZDbGtjWE5YTUtGbmRuQlZiMnBXY3hsalVvRkhWVmxtYXRSVWFYVjNWNnBtZFNablNQZG1lNW8wYlk1Mk15SjNWQ0ZEVXhoMUw2bFRjcTkyVjJwWFU1TW1lSTVrU2xoVmI1TTNiWEpWU3g1MFlxRjNWeTUwYngxV1NSbGpVcUZuYXRkalNLOWlhMkZYV3hCbFNTRkRhWDFXVjJaWFZ4OUdNcGQyYnFkVk14azFZSkozVlA5MlV1ZDJjcFpYTW5GVGMwSUZhWHQyWnZGbmRTbFdjWHBXYzRaa2F4RjNZcWhrYXZkbVNaRm5leXBVYlpwVWNOZFdhd0FWV3hnblV4OUdNdGRXYXg5a2FtbFRjdkZEZXo0bVJ4Sm5lb0ZuZXpZbmIyZDJieGRWU3ZsRk5KRm5UelZWYTVvMk52Rm5ZeGhtUzFkVk14ZDBiWDUyVjNFelpHRm5SdUpVU3ZGSFdxaFdPa2QyVTVRV2N2cDBZdllVYzZkMVV1WjNjWTUyTVg5V2Mwb0hTS0YyY2t0Q1puQlZiMmRXTVpOVGRvRm5adkZYY3ZOblI0UjJOeEJqYTFoMFZzOVNNeGxUV2tsVk02SlhPeXBIYXhwbmFJcEdUM0VGZUxkV2NxbGpVMnBrU3Y4V2N0OUNacUoxTjZwMVFKbG1kbjlpYzVvRVJSbERkeEVEZTJsVWFPaDFjbzUyWnhRbWJ4b1hVNU1UVklkRmJEbG1iemxFV254MlY2RlhPU2hXY3FwR1N4MW1hUWRsVTNvSGVwRm5leEpYWjRFM2N2Z1Vjem9sZHdRWGQyNTBheHdXT1hsVU01Z2xhMjUwWW5GMVpzTjBWdVpuVXBaM1Z2cG5hQk5YYXhkMWNHdENaSkZGZWlwM1ZaRjNjdkZYTW5GVmN6SmxkdUoxTnZwa1E2Wm5TeTVVYXhaWFNtZEdaVkozVnRWbmR4VlZWWHRTV0psV2MxbFdNMk5qVTJGSGRxWlhjUGxGVUsxRVZ4QWphejlXY0c5U01yRTNiSWRsWTNvM0syRmpTS2hWZG9GWE8zZ2pXTEZUY1hsMlp4cDBZM0V6S005U1U0dGthdnAyTXhGblR0TkhTeHBVU201a1kzb25XMUptZHhWWGNLRjNWcUZUU1lkamR1Sm5ZMjVrU3ZjbGIyTlhhMkZ6WjZkRk4xaFdjMFVWYXh4VWNUTkdaSnBYYzZKR1NLTlhaWTEyY2xoamFHZERhcjBXVm9GM1FaaG1hdlJVVUpoVmNHaG5ZeG9rVEdWSFN3RTNaWGxGZFo5V2M1VUhTWE56WnhzaWRWRlZPc2xXTXRKMFpwNVVidjhtYTVjalNLMVVVSXRpWXZZVWN4OFNheHgwTHZwV1l4RWpTMmQyYnhoMU52dGlkeGhWT05wRlNYWjNaeTVVVFhsV2MyRkRTYUZXU3hra2U5TTFaMGRqZTVFM1pRcEVXWnBuU3pVbVMyZHpMWEYzVmxGelppbDFiWE56Wnhwa1psWm1iMmxGWlpOalR2bHpRNlozVktkVGN1TlhTcHBFVm5GVGI2ZDFiS05uYW9salN2Z3pWTkZGYXFKWGN4RW5kdkVuYXpSVWEyRnpOSXBrWXhBVmNrcG1aNVkzY2taWGN4WW5UNUUzVk90Mlp4c3liWkZEZVNwV010WjBMR2RXY3Foa2F2bEVadEoxTjI1VU92Z1djb1ZEYXhGSFJSbEVXeGgwVnBkbWNYWjJjNDRXY3pGVE9rRlhjT1JUZElGSGI5UW1idEoxVnVGelp4RlhkaVowWmpkV1VxTjNMWWhYZE9GRE0wZGpTMlowY281bVNuRnpaeHAzVkpKVVNwRkhXbkpYYzJOblpyWVhTeGxqZHhKblRhVm5kdU5uYUs1Mk1YcEhlMGNEYk9aM054c1NjeEJWYkdkbWVYbFRjNkZIYnZFWGNYbFZNd0lWTXZwa2QxWm5TREpGYXFselp4a3pTM0VqZHRGM1ZPRjNMeHNDVFNsV2JHZFdjdEYwY3ZGWGNuRm5hdk5uUnJJV01vZGxZSjlXY2tOSGFxbFdjdmRGZEo5V1dDcEhTWHBrYWtGSFp2Um1keGNXTXhSVGRvRkhXbkZuYjJKbFI0Vm5UNmhuZVhGblRqZFRNclFXWlRkbVkzb1hPamxsUzJWM0x4RjNieFkwWjBsVk1xSldkMmQyVGxoektubFVNNTBrV0dGM1FKbG1UeDl5VnVOWFM0b0dXbkZUYkNkV2NPcDFaeHBXV25CbFcyZFdNWkpVYzZGSFpuRm5hdlZWYXhKMk52cGtkM0ExVmpkVGE1YzFaUkJUVHVoMFY1VW5SeDVVVlh0eWNFbFdiMXAxYnFSemN4WlhZeHdXY0twR1VLWjBaNmRWVjRsV2NZOXlWeFozWnhjbVlaOW1iMEZqU09OWFpZdHlaSmRWV3pvMWI1WTBMMmRsU2xSbWJabEZPcWRVY3hobmVYcFhjdm9HYTVZWFZSdGlSNkpuYXlWR1V4cFhkb2xUV0VsMlYwZFdjdU5rWUlkMVRuSm5iMmxVYTJGbmE2cGtRcWQxWmpkV2N1bGxVcEZYWXFGVGJHOUNheEYzTnBsRFpKUldjMmRXTXdnVFNwWlhNbFJXY3ZkV001UVhXeDRXYm45MlZzRmpTcVpYU1JsRFp2OVdjR3AyVk9OM0xYNTJjbmgxS09sMGI0bFRjeEVIWmxSMkt0TkhaeFozWnZGSE56RlRjc0ZuU3FsMmN2RjNNYVpYVzNjMmJPOTBaeXBXT3hkVld4cFdjeGxXY3BaWFRVRnpLdlZsUjV3bVR2cG1Sdmd6VnpkMmJ4bFZNWWRtWTNnMlYyVmxSeDUwWnhwV1d4WVVPMGxsZXFwbllJZFZSMVprZDI5V2F0SldXSXBFTjFaM1Z6RTFVdTFtVXBaWGNucFhjNUVYY25sek54c1NiSlIyVjE1VU13Y1RkR0ZIYU9GVmNuSmxSbkZqZVJsMU1uOTJWeWxHYnFaWFNwcEdkcWhVTzZKblJ4TldNS3BtZFNkbGJ6NFVNSkYwTFlkMlkzOFdjWGxFWktoVld2WjNNWnBrZEg5V2N4ZFZjdmRGZDNFVGJqbGtjWE5WTUtwbWR4aFZTU3BuY0taWGNwNWthdklYYzJsRVdKTmpUeHBtZVhGVGMwY1RhNTAyTktkbFJacFhTaWxVTXhKWFZ5cDJZSjlXYlJwWGF1VjNWeHAwVW5sbWJubGtaSlJXV3hsRE5TaDJWT1ZuUnI4V1ZwcDFWdkZETTRrMFZPRjJMUkZYV2xoalNTZGplWGx6YzZGblpKaG1iS1ZuZHVKbGF4QWpjWDkyVnlSVFV4ZDFMazFtZHFGWGNwVkhTWHAwTng1bWRTRjFaVWQyYnFWRmV4cGtUeG8wS0tWbVNLMVVVb0ZuZG5GVGMyZFdVcWxXY3hjV2NFZEZlR2RXYXhOMGJ2QnpadlFtV0xkalI1a21VR0ZYVHlsbWFNOVNNNXNVU3gwMk1TWm5TT2R6YnhkMU5RWm5SM2dtV0NGWGF4UjFOdnR5Y3g5MlZ4Rm5lSmwxTks1a2NVOTJLbjltWm5SbWF4NVVPbnBYY3lsbVNxMVdXeGdIZHZGVFMwTVhheFJtYWt0U2JFaFVjMTVVY1psVldLWm5SelpVYmpWSFN4VlhVb2xVTTNBMVZQOVNVdWRXU2twbFRxOW1TQ3AyVkt4V1VzbGpkSlJtYnhsMGJ3UTNaeGRHZHZFbmFNZFdNcllVU3ZwRU56RlhjT2RXY3FsbGF2Wm5ZM0VUYmpkMmJPdFdabXBXT25GVE9McG1kNVFqVTJkVmN4TmxidFZWYWFGMmI2RjNRSmxXY0twR091eDBaUUZuWTM4V1NCOWlSeFZWTXZsemJ2WUVNU2xVY3dvbWVJRkhXdmsyS1hGWGN1Um5hSXBVYW5GVGNWcG1TeDEyY2twbVlxRlRidGREVXhsemNrdGlhSlIyVjFGbFJaMVdXS0ZYVG5GVmNwOUdTMkoyTnZwa1lubG1UQk5uUjJkVlNrcFdVcWhVYzBFRFVPcFhVeDVXYkpGekt4cFdNMkowWng1VWNuRm5hdkpWYUtoMU5vcFZkaVpuZFJWblJxTldjdlpuWTNFWFcxSm1kblowTnBsRFpuQjFWa3BtZHhsV2N4cGtTMzhtYnpsVWN1RjNMeGtFTlZaM1Z4ZFdjcUJWWjRvV2RPOVdPMnBtZXgxMGNJdHlidmdVYzFwRlNaSlVTdkYzY3ZCbGJuZFdVNTRVY0lGWGJTaDJWS2QyYnhaM2NrWjNSeEZYU0dkV2NLbHpjR3RpUzNvVWJOUmxlcUoyYzZGM1JTWm5hWlJVVW5GVGNJZDFZNmgwVlA5U011ZFdjNG9GYnVwblNqcG1jTzFrY1J0eWMzZ2phaDlXTXROVFpUZEdkbFIyS1hWMVZaUjNOb3BrUWxwVWN5VkdPeEZYY3ZaSGRxRkRNWnBuZE9wVWNzRlhjcWhGZXhGM2I1VUhleHBVT25GbmJ0Tm5aNTBVYTZwV1F6ZGxTaFZHWnIwbVVwZEZaMzhHZWk5aWR4MTBOUlozVlNaRU1ZbGxSS0pVU3hwMFRxWmtibmRET2FkVlZwcFVRcWQxWnpWR09xbFZXUVpuVHZGSGUyRjNWS1IzTHhwR1R2Z2xiekluY3RKWFpLWkhXM0VsZHpsVk01SVdTdkJqZTlBMVZtOVNVeFJXU3ZaSGRaOW1TcFZIU1hOV01zbFRXdmttV2hsMGJ3QVZTeHBrVHpSMktYTjNiS2gxTm9wbFFuOVdjSFJFU3hGWE1HbGpSM1lITXpJR1NPcFVaWXRpZEpsbVdVZFdjeGxUY3A1RVZWZGxiemwwVloxVWF4MG1SdlkyVjJOSGE1b1dWUmhYZFJaVVdwTjNieGhHTlJ0eWNFRjFaeHBYYXVaVU1RRm5jMVlXYzVNM1Z1Um5leXBVYXhGMVoxZFdVcllIUnBwbVRKcFhTbWwwYnhkbGFJcDJjWmxXYzFKbmNyTXpjcFpuVDNFM0trUlVhdGQxTnhsRmJscGtTQjlTVXFsVFNYbFZjeGcwVjBjbWVYVm5jeUZYYko5MlZMcFdjd29XU3hGSFozb1hPdEZEWlpSWE1vZGxRbHBVY3hFM1V1cEVSWDVHWlpGWFd0RkRVWE56TW9GWGNKOVdjeG9YVTJablVJZEZidmttYU1sVlVuNTBaeEFUWnpGVGMycEdTcWx6TlFkbFl4Wm5UMmQyYng1VWNUNTJjcUZUU2twWFU0MTJadmRsY3pZWGM1YzJieFprZVJGWGF4TTFabzVVTXI4V00yNVdjdm9IZUNWSFNLWjNMeHNpYXg5V2NrZERhS05UY3BGWE16aFdja2xWTTRKVmN4WW5ZMVpuU3Q5U00yZDJicDFXY3Y5V082Sm5keGx6THA1V2J2a21hWGxrZUpoemNwRkhOeEJsYno5R1pYVkhWeGxGZFZaWGNzOWllNU0yY3ZablkzRVhTR2REVVh0MlpYNVdjWmhqZHhGRFNLRmthWGQyVFZKbmFabFVVclExTHhaM01TaDJWemRUYTVvVVdRZGxZMzhtZDBNWGF4NTBMeHBXYVZkbGJTcG1lYUYwWnlGSGF6aDBLeE5YTTRORFZJWjNRSkYzVnk1VU1yMEdSMjVXY25GamRpOUNaS1ozY0d0aVNsaGpTa2REYVhKMFp2RjNadkVsYnBkMmJ0RlZXMjVXV245V2NtVkdPcWx6TGtwbFR4aFdjNmhYY1hWbGFLcFdiRWhVYlhkV2NxWjBMNEVIZHpabWFRVlhheEptZXlwRU4zb2tkTmRUTTJOV01HZEdkWkZqYWpkRFVYeFdOSXRpZHhSV1d6b2xkS0YwTG9GbmVhWm5ienAyVTRSMlp4cDJNU1pYY3hOSFN4cFVjUXBrVTZKWFMyOWlSeHBYWmtGSFQzODJWaXBtZTQxV01RZDFUdm9YT245V001UW1heEVYT25GWGNWbEZTcTFXVlJ0eVJ2Rm5kelUyVW5SM2MyRlhjcXAwWXpRbGV0SjBaNkYzUnZkVmN2OW1SNVlYV3ZsbGR4QVZjS1ZtWnhSV1N4bFZjcWhXY3pNWE14Wm1lWDVtZFNoVWJpZFdjcVpYY3hwVU96WjBLeGRHT3FaVVM2bGtZWk5WY09WbmR4OTJadlpuWTNvbmI2Sm1kT1pVWlkxbWR6OW1kMEZYTVhsbVVvZDFVM0V6S3RGalI0UjJaeEZuUTFoMFZPcEdTeGxWVzQwbWRuRlRXcGxsU3hWM052NUdVekZuYlNkV011bFZTWHBFWnhwMEt4bDBicUZqZVhsVE9uZGxUajlpY3ExV1NSaFhjdkZUYkdwV2NuTjJaUnBXT0VaWFd6UWxlcklXVjJablRuRmxhdjlDU3RGVmNHWm5kSmxtVFlkV2F4WlhTbWxrVTZKM1ZwZFdjSzFFTng1V2JKUm1kT3BtZUpGamF4WjNWcVptYU1sRlV0VlhVR2xsY2xwa2RtOVdNcncwYkdoSFZ2RWpiNWNXYVgxMmNJdHlWdmxXYmlWMVY1a2pVMmRGYnhvVWNaSmxSblJYU3ZsRk5KcFhjMGRXY3V4MGJrZFZUUlpuVGlwSGF4eFdWWHR5YnZZVVNZRm5kdWxWZElGSFdsUldjeDlDWjJaWGNJRm5keEZuU0ZkemJxcFVTWDUyTU9GWFN6RVhNeEoyWnZwR1RaOW1TMmQyYktKV1ZHRlhNMWhVY1psVmN1aDFMdjVtUTNBMVZEVjJVdUZYY1lobllWZGxUQnBXYU9GekxwRm5kbmhqV0g5MmJ3Y2pVMmRtWXFoV09YTlhhS2gxTklaSE5acGtkeDhTVXJrMmJHQmpVeDhtUzVFalNPTlVNeDBXY25GRE1OUkZTWGx6WnhFSGF6WW5iemRET2FkMWJ4MG1laVozVno5U01yUUdSUnRpUko5MlZpTlhheFowY0cxR1RTaDBWMGR6YlgxMlp2ZEZaMWgwS1hsRlp1UlhjMkZITlNaM1ZzVmxjeDEyY2taM1J2cEhlemNXY3hGbmEycFdPM0FsYVlsMWJhRmtheEVuWnZGWGNubDBiMkZ6TklCalJuOVdjbzlTVXhSMlpRMW1ZM1lYYzVJbGRYeFdVS3BtZEpGRmVzbFdjdHBYUFFkMVluRnpLa0ZIVUtabmVwcFZicXBYYzZWSFNxOW1VSXBrZEVGbFNwZFdhWDkwTlJGM1pKbFdiMEZ6YnhOMkxrNWtjWHBrYU1sMFZ1RlhTNmhuUXg5V2MwOWllNW8yY0lwVVR5bG1XRzlpZDJoVmNUNW1TdllFZUxsVmNKTldTdmRGYlVsV09YTlhVNFJYTTI1MFl4cG5TelZWVXIwV1NSdHlTbjlHZXBWbGRuOWthMnAyYzM4V2NpZGplWGxUWktaM1J2RmxiS04zYlhKbWF2cGtkbmRsUzFsbmRyRVhTdkZYY1ZGbGRwRlhjSzUyWnhzU1dWbFdiaHBtZXFOVVN2Rm5kbkZuYVFWV01ySVdjb2RsWUpGWGM2Rm5TcU4zWnYxV1VaWm5ieUpHU09KMFpSRlhjeEZYV3o0bWV4Vm5jb2RWYnhwVWN0SlZVNFJtYXZCamNYZDFaNVVtWnhkVlNrMW1kM1lVV3RsbFN4cDNOcHR5Y1NoMFZpRm5lWEoyWlhwRVdsaHpLWEZIWlpSWE02RlhieGxtZEhkVE1yMEdScHAxVko5R01uVkhTT1J6THhwMmNsQmxkaWRqZWFKa2E2RjNadkUxS0tGM2J4UlhTeGxWYjZoMFZCVkhTclEyYm01RVd4WlhPamRtZUs1Mlp4c1NiSmhGZVVkMmJxWjBMbTUwTG45bWFROXlieFowTjZkVmRVQlZjVTlpZTU4V2RwcDBSeGdXUzNra2N4Wldkb2x6WnZGRmV4cFhVcjBXZDJGbmVsUm1iemxVYUs1a2E2RjNNbkYzWmpkV2E1MFdjdnBFWjNZRU1tZGpTeGRrVW9sVFduOTJWR2REUzJsMlpwNUVXcWhsYm5kbVN1RmplcHBVYlNoMFZqTkhacWwxY2twMFNKRlRielVHYk9aM042bHpWbkJsYVNkRGF0bGphNkZYVHpoamJaOW1SNVFYY3hjbFkxaGtUa0ZqU3FaWFN4a1RUUmhrU3RWblJ4TldWcDVXYnZFMUtzbDJiNE5UTXNkVll6Wm5hTWREWlpSM042aG5kVlpuZFlGblN4RjNjdlpIZHg4bVN0cEhTTzkwTFhwbWR6bFdjSHBHYUtWSGVwWkhhVkpYY1pkR08yNWthdkZYT3hkbFRQOWllNWNGUnBGWGRPcFhjaWxsUzJWM0xwRjNjRUZWT0dkRGFxWlhNS3BrU3hwVWNrRjNicUZtYXZsVGF4Rm5TalZWYXh4a1VwcDJWbkZqZDBVbGRubFRWcHAyVHZaV09pRkRhS1YzVnZablJ2RWpiUUZEU3haVVdJWm5keEFWY3I5U1V0bFRNa2xWTTZGbGQwSUZhWHAwTnZwbVNKaHpWMmQyYnFSVFYyNVVPM0VsYU1GSFpqUjNaNnRTYnpsbWR4VUdXcjhXVnAxMlY2SlhTMGRXY0tObGFtbHpaeGdqZDBGM2J4bFRkSWQxY3ZFMUt6ZHpiYWRsYXhGblExWlhjWE5IYTVvMGNJZGxkM0VuYjNvV2N4WjNjbzVHVVNaVVNZRm5SS3AzVnlkMVVxWldja3BHV3JFV012cGtSdllVY09kemJxMVdNSWRsVHZGWGJ6Y1djeEZXWjRzU2J4QlZjMVJWTXdJM1Y2RlhWeHBYT3A5eWJ0ZGxhNmxVY245V2NyVm1aeFozY3ZablJ4WmtkdEpsUnhORE55cEdaU2xtYUdwMmJ3Y1Rkb0ZuZHFoa2E1a1VheGgxWjYxMk1acGtkMTlTY3UxV1N2ZFZNdjhHTTNra2NYdDJaeFkzVnY5bWRpZGpSeGwyWnBaM1lsaGphMmR6YnFGV2N4a1ViNlowWms5U1VxOVdTazFtVW45Mkt6VWxkMkYzY29GSFpTaFVjMXBGU1oxV01RRm5aU2hVT1hkMlV3SVZjdkYzTVZoV2MxcEZiNU1YV3hjbVRKRlhTQk4zVktaWFZSRkhaeE5GZTFKbmNKVkZleEZYY25GVmNLVlZVNHRVVzZkbFFKOVdjeTUwVnVkMkxtdENkNkZsZDFKSFN4UlRWeUZIVHpobGJ4Y1djSkptVTJwMFRxWm5hekZET3FKMlo2ZFZRcXBYYzY5eVZ4Wm5hdnBXVXY4bWJsZG1jeFoyY0lGSFp4OVdiaWxGUzVJbmVvRlhjM2ttYWtKVlVueDJWdmhuUnZZblQ1OFNNcmNsVXBwRVczbzNWdFZsUnhobVRSRlhXeDhtZGlkamVLbDJadjVrZFZsV08yOVdhdEZqZXBwVWFTaDJWREZUY3UxMmNtZFdkT3BIZTZkVmNPWjNMeHBHVW5CMVZHbGxldFZuWW9GbmRxaFdjUHAyYlhKV2N2bGtZbmRsU3k1VU1yYzFjWDVHZDZkVk90VkhhWHgyTUlGbmRKaFRjczVVTXRSemN4NWtkdjhtYXpOSFN4SldjMjVrUVNaWGNzOVNVck1HUlJoM1NxRlhjNjFqU0t4MlpwbHpWekZWT1NGSGFYcEhleEVIYURsbWJ6bDBWWlJXYzZGWE94Rm5kdmNUTXJvV01JRkhXM2drYWo5Q2F4WldjeHBXV0VGVk96RWxkd2tsZTI1MFUxaGtibmRXVW50VWNJRlhPU1ozVmpkV2F1MVdWUmhIYnA5V1dDZDJiSzlrYTQ0V2F4cGtieGtrZWExMlp2Wm5jbFpXT2pKRlNYRnpMeDVtUm5KWGNqOVNhd2MyWktsRmR4RnpWMElsZFhOMU54NVdiRUYxS1NGWGN4SlVkb0ZYY3ZFVmNaRkhPMlZYVUdsMVl6RlZjbUYzYndrMmN4QWpVcXBuVzZkVmNLaDFMcEZuZHZGektpRm5keGxUYzZGbmM5Z1RjdGxFWmpOalR4WUhOemxXY1hwR2E1YzFOdkZuWW5wbmFDcDJieFJXY0twbWQxWjBaaUZYTTRWbllJNTBhM0VUYjJGWFU0WlhjMjVVYVNoMlZZZFdhcVpIUnBGWGRPRm5hMkpsZEtGM054NFdPcUJsU2tkVE1aRmthNkZYZHZFMUt4UlVhMlpYTTZsa1p4Rm5TUDlTVXFsVFN2RlhjeFpYYzVJbGRYNVdWUnR5Y0psbWFHZDJicWxUZDJwa1lxWm1hUU4zYlhKMk42cFdkOW9VYzJObmRyTTJMR0JqVUpGbmJaRkRVeFIzWnlGSFpaaFRiMEZIU0taa2FwNUVOdjhXY3RWbVNaUjNieDFtUjFablM1OFNhNUVYWjRjbFJaRm5UR2RXYTJkekxSdHlWekZETVNGWGN3TXpWdkZIV3hvVWM1a0ZPWEpWVnBGWGJubG1kNmRtZXF4RVJSbDBNT0ZuYTZkMVZLTm1hb2xqU1pCMVZHbGxlWE56WnZaSGJ2RVhjWDlTTXdRV014a2xZeG9rVERsRVN1ZFdNWWxEWnhnMFYyZDJWbjkwWlh0U2JKZGxieDlXTXdnVFNSZDJWcVIySzJGSFVYVkhWeEF6WnFGbmQzOHlWcXhVVnAxMlZaOVdXNmRWYVhWVWNzbHpaSmRsYjBwWGE1TWplR0YzTURsbWFrbFZVbnQwYnhaWE8xWm5UUHBtZHFsamFSdGlSNkpuYTJkV014ZEVSMkZYY25GelpHRm5SNE5XU3lkMWEzRWxhNWNEVzRabmF2bERObHBrVDZkbFNxMVdNMmxWY0pGWGNCcDJWbmxUY0t0aWFscDBZeGtVY09KVWN2Rm5UelozS3pGM2IyUlhjNnAyWUpsbVRCVkhTNWNXU3YxV2N4OVdjQnAyVk9Oelp4NW1kU2hrZE9wMmJaSjJaNnBrZHpoV09rUkVTeFZuVDZkMU16RlhjblZtWjVvMk52cDBWbnBYU1pGRFV4VlVNVDUyWlpoRmUybDBieGwyWnhwVVR6Z2thWmRXVXJjMUx4bGtReEZuZHhObmRxTlhaNEVuZG5wbmIwTVhhMngyTlIxR1RsRlRPaWxrZVhOa1UyZDJheHBVY2tkV001czBOeHNpZDFoVWNvTjBWcndrVXBwbVJ4OVdjME1YTXhselp2cEdVeE0xWmlkamVhSlVkMkZIWnZJWE94cFhhdGRsZXlwa1F4b2tUbVZuZHhSMmJrcFdVbkZqZERkRFUyTmpZSXBHVG5oamFYbGtleFYzVlhwa1kzRXpLeEZYTUpOamN5cFZhVmhXY2tWR094RjNadmRGZHhwbmFpVkhTT04xTHBGM1Z6RlhXekVsZEtOMkw0NGtjREpuYUtkVE1ueFdheHAyTTFaWGN0Rm5TclEyTDRZblkzOG1TMFVsUnhWM0xwRkhaeDlXYzBkVGNaMVdTcGRGV3h3V09uZDJiMlpYU3hsVGIxWlhjS0ZIYjVZWFNZdENadjhHZTZKbWRYWjNjSXBHVXZSV2MxNWtlNWtUV0tGSFd2RW5hTUpGUzJGVE1JQmpZbjltVHlkbFN4bFRXa2xWY3hZWGN0Rm5leFoyY0twV2JKRlZPU2xrZXhWM1ZYZDJMcWhXT0s5eWJYVkhWeEFqWjNNVmNuRmpTcU5XY3hrRGR4RVhXdGREVXhOVU14MFdPcWhqZDBGWE14bDJaWGRHTmxoamFrbFZjWlIzYnhGblExaDJWMk5IU3hwMk5RcFVUUlpVV3BWRmF4ZDJjSTVXYXhGelowZFdNNU1tZTJwRWJVbFdPbmRtU1pOVFVJbHpNVlpVY1RwbWR1TjNaNEUzVnY4V2MwTVhNeFJtYW1wMmJ6UldjMmRtZXhKa2FwRkhXdkVYY1hOWE1uWm5lcHBVZFg5bVRQRmpTeFozY2twMVNxRnpLMWhYYTJwWGNUNW1kSmxXYzJsVWM0bFRNUWRWT3FoamJ6Rm5TS0oxTjZwVVFxbG1keWRXVXhOM2JJRlhNeGgwVjJkV2NLWjBacEJqZFpoVGJpRjNiMkowTElkbGUwSW5hTWRUYVhkVlN4a1VhekZuU3ZVVmF4OTBMeDVXTW45bWRCOUNheE5VTXh0eVl4ODJWaWxVY3VOallJNVViM2tXT1hkV01yWVVjb2xqZG5wblNEVmxjeGxWV1JoSFd2b1hjQ1ZIU0tOMk52cDJjbDlXY0dsbGV0bG1Vb0ZYY2xoVGNYTlhjdUpWV3hFM1k2Wm5UNU1uUjJaWGNwWkhkM0VuVENwbWNPbFRNVDVXYkpGeksybDBiNGx6Wng1MGExaG1iejlDVzRGamVSNW1SSkZuZFVWR1pxbDJOeGxsVXhvbld6VUhTeGhsYWtGM1paaDFLeEZIYUtKWFN5cEViMEluYVpwR1VLdFVTeGwwTW5wM1Z6OVNhd0FWY0tGWFRSRlRXNGtsUzJ4MmM0NFdieEZ6WmlGM2JaSlVkMmRtU3paM0t4OVdhcVpuZXBGSE54Sm5Ucjl5YnFsRlJwcDBSbkZYYkRkRFV4UldWWDVHVWxwa2FrZG1leFozYzZGM1F2bFdjWlZWYWFkVlZSbGxkMVozWmhkMmI1b1VjVGQyUzNnV095bFVhMnRtYUlwR1RTaGthaEZYYzRsVGN4NUVacVowS3RsRVc0SldNb3BrUlZoV2NtcG1TeE5XU3hrRVpuRkhNWmxVYVhwVVprNTJaSjltZHhGbmRPWjNadnAwVm5wbmF0OVNhcUZXY3gwbVJucG5Ta3BtZHFsMWI0RVhkeUozVmpOWE14ZHpic0YzWTM4MlZHRkRTSlpVTUs1a2N5RmxhMmRXVW5KbGFHWlhheHBuU3VWblJya1ZNSzFHYlhGRE0zSWxSeFJYVlJGM1Z4aFZTemMxYjRGVVdURkhiUk5WY2FWRmFuOWlhR3RpUVZobVR6TVVVdHRXZElkVlRVaFVPMmxVYTJoME52bHpZMWhrU085V2M1UVRXcDVFTnZFamQ1a1VRQzltYW90Q1V4WjBaV3BHVVo5V1drNUVUekYwS3pkR1puZENLeVJuYzBOSEtsUjJialZHWmZSak5sTlhZaWhDYmhaWFonKSkpOw==';$slk_file=__FILE__;eval(base64_decode($slk_dvc));
return;?>
UlQwNzMxMjAwOTE3NDE1Mv5F3lCI9ut2fPtuOecFr4AsX81b2BD3+770zkV3TXcpWqrl4SrqiG+QMxzAIHQ9jRVgquBkNkZUzT3bLrgJM7d8Yq0msoENLBShS5W1w9CU/RGMtgReEajaJrrRaveiOdYQ06kDV77PhDtiOpe674PB1TWKNtRRfM8b5zOSbCAA4sZZ1MfUmXCTCZaPrcJyslDFBlC+OR2tlbSTPauRnqg57Zyjq36wBok62trnG//nrasmHAFJfGLrIVqxUsb92oIDwyuSsxEtYTWyB3X5pcaJgzeS87PfTPUfTPHO8esGEnK/tc/7+hNizNfZqg3vdTE+XSw80WOinybBQsvBLwQfY1Eui2o3VmKKUH8dJY6tD+qOGeCciCl9Sl9U4EIET70wDfIcZaWRfYhuO16obuNUZIHgfbDJeqvvyPL1jOufckbaiA1fydJVjv90mr8yYHxBsnOxmBL3oTKHy3sK10qV7vYT29PkdVfNB8t2pn/PxMBJdnuUoYaoC80N4E+epdzq7mvJx50tYTUxDCQBKYCvhnETEmqDY/kVPQax7EmzKVivpVicsMF3JC1K6PB/5v4U6x9e/2C+7+xck9Dsr3jC2iFK7McFFHx5szV76UEeoyqiwipL9It7lJyZcZyRR2+cxEXmZxl4yI2xcfNBOUZ3Nm6RJ59UU/ot4y4HPjhBa1okTFqLt7oUurWZRLazuuitzGHmzoGzZZ/IIJoKNytliPA7ZfD8RiJHaQjPEMP6DTtdqztj09a5JP3bQEJjUUde8PE897iSrLPI7Pq1yI4b5pQWiZZVhg/THAUkxTfw2P7b1uVatwP56fg/j4zs1bldtLAF5hXTaTRm8UFTtRRnQEQi3LRDkDL+6tMe8T0pKFa0spzsr8RO57ZSq8iC8k6Tav8KTT6MSxcG8+MWqhJi4ItqjVMwvY+oLkBRrLqF8wx/QN0uzJcpBjKZygxuacrBOv9vlTfszspurfRMEcwrSYjZSCeTpuYN6CBHzq+24ys7R0JQEA/le7nyty/43e1PWC4CAxdIGDZhrApvtb0W16at4IcAFjTHarnA/H4CxcB2Fdtcgdrt7X4wfETcDBsNlYIgEDoMZsIn678tCLAtvugMzEALo7gUp5/0btVW7mkSGQsGMulusnFDzO1+te6Brtehi/2xY6vAuOMqxDm31kG9X0ZhQNrgklt9aGwPFlPoV0NAPA0iwNQhkq7VDMJ8909npRkLAYO8y9ccEPPRKo9mxS5fYc+9G/edkynnkCkOm6nzA5e6ocVFPYr+LLyvio4jtrOQLqOeuIOo8/dLRfDlEfUjmMv+GAFCBanAkhzuUokks7cgRkbD5MmMHkCU0CRA3n3+YLacmy8dVaV4AmGJBLjU1AMrfwmSXLWfRSZjAfDvy6wK5Q3BrqDFLrVgwSm2Xvt8xGHiTqYsbbVlcJ3AI3T1I4fhQbCmmXlFxSfUP7DAWtmErUZXkkgxVORdAm/BSAiPlIWX6Zaau5OZI3JAEZIxPpax+Jk2yG0SwYjuht/vBxgPsIYGcnf2d8J0zfaXEYkTTPMFCglx9c5eqLThl9I6wlSu7XEj4TChCcdhDUqkGUu4q5AlW3YpO9nBcrmlK1/Ab9soFyCDiuvDKEC8p7zmBy0MnUS9wEujT+q6r7T80TvyKVHZm2FyVSz//IPXe34DYXYHEr7HQc3JSCg66Yawv6m3/jvqOYY5t6Wr0wvUiH0xMow090C2DNSqQXqpH6Fcim+giNvXFMjEluYCMflY13RHxC7HxrKM60pz5hAFQjYYWJ4+3Pi9nrZGZ47j9WOLHncpi2bKgje1MDq5QSBEPLr2lSiwJ5qN33Up/djr5whe7nkJtiV+8WoCX7hX/p1lOAZPyuc2OfS9z6vEFC3X52uvhaYqWOhCywZ/J/aes51zhyJVlOR/XBMQigRzo3blH3rueil6UbJfq+9smUgewSuKglaAwzEOZofjzLgDFc41onzafTy95IDz2FlkzlAMkCpJT+YnAlb+J4WqMaL2sCb1hZz1mcxatCyrdM5vQxoS9ykhn5ApKy+P9PikGZmvALvTIeoQO4vwq7/z7o+WZut9gEwu8YmAXTVK2HsS/N05KXp9AH0kimAbnO9MUVK5+J7gEQq4ZPpMXnxoW4eqLXFIDQh6ABAtvwWLDKPlMO8iDGgZBDaLhY4LuvYDyiqr4NOSE8kYktUln1wyNyb4jE6X+9n0v6MEE92c1xYqVfGA+yYoenVYInPPeoRREgQfcDoWYTwa0CeBQvCeJ+91+9NI/3KkdpuCd3FDWk3G4PmHsKC44OOaMavReMzNaHZES/TUgkS58+zFnE+JWt9TiXSyamH17L8AeV7vJm1grF7myeOtNBDJSp8lIJ/OYoz3sKMF4FpbsMe0rKcq1D81B/yqJkoRVmjPD+LOqjZYSsy8FhFBc29MjN07HSRYJ0op+Md8Ge7ujmmzcOFGsQNk3H6KPgc9R/EGpuJXzhSY/a5CXQICEAk/cE2dusGfbwMnLl+wJ0VJeT50sxsyqRPbd+/4JYFG5ZT5P//8uduQDTZNEzZG+9QMXmpoE9j1S5d1ftvQpmaQHkDT8owSE2NA8vK95vX7iPzDyrw7avxCbBVQByYGftpsBMUvsb16rzQ/j0i0IQ9w2LLJE527tUn4kY0Q7gfH3h2jDe9gFtQSOOBAV6ArTVT72EIaAraTTRzlzmOnlhw9O53hzmdjz5dqyavl2WohTA3Ji8m9CioFIlMp68xoMs/ZxM9T63bMBo8BVHr23ygbBDyQuA3dt0Fn0BDvmiwpib/MrHKtAfTXqD0oDnKNaWBtjgXEGjkB2553PaMB1VWfm2x/ytcpnpLZc5mSh6A+eG9YzwkkYoCmwofQulfyioH0V7Jsf2IyDNgAq5nQ2sIBWGqovKsxX1k9IMUQ8W39c5OVlqy3pDHXJPpRcH+JKgPZTFuR+YLfTFgjC9LH6+Qa3vgQoHNkvAjAQsqf27W014ZxPdq3HbHXkfz1kBZUOwK0d5J+DfQ4b0m60OBc5cMH7Rc3H6l3G/hdVdjd98QlDmPr+X7pzaSIhVFj2Q4pj53t3G9uVbTBHi9L1v7os8t/Z11q22G3h2YcLc4cHlHLKFxuyesuZrM1x+jk8oClKukATq7TfGd+wvJCGFXlam1fUogXeL1z6lrMHdkhnCfj8xNq6XMQhad61jeewEGAZQlzOOuEAWvMtjW5qMRjOjpLr0TPePZi47YRmeR6lB2TBNWzQP/MeqCtpAaOha9AJqYvdPoQPcb4U6bBJpTyDfoL90tbmN6Tql1wxKRcxbfnW9axqKSS4I0/W5elzVrzcmmiLLvgasmfix/iEAMcy9W1RV8gn0z7jT1HcEo7mYA5b2LkUfePnMhQL7EAa28cIU+Cpt9Nwacn1qY3/6OCo50qv6mrTbIi1+5Wc6FPVpRC5FaYJmugPTeVuTb7cZHdMHWZ0fpMnoEvnV5wV4rrKYTTiJ316LiRpxejNgWU/zds5xrMGMwnsvQj/vDcBJ6OxO2+gUmLy33FsD4rAU/1y9wkcIHC+AsGt46xCiY3tI4lY6fsBn1uYHH6sfXoDJMjTwNUqiv9YZtKOeYoOgp5M0uyc/UdkvK/+ZAf7O6SISU8HQxJYLJ8yhh3fIEple+74BufEiOiMeqhiCAyLwFAL/zmgHc170/70BYkjjwypmgyU0KTZ93P5T8PRnw1/vvy1nVSPpV/s49SzZc7Jml8P3maN3TrzV/0O8r0tr/EOS62mg4xQibjFQNeyo6gkJqRQDoupJFshzvr1mveeXSy62qNfxdOpoRgwAhMFvcIsScLdqTBCE/dDCLc2Gcb4E0OUPEbnxpbnvjEuTqp5PR8Z6kSJ/cJfHw0DCQW0CmtrvvlDkSTQPEp0+6pKTmB/Rkm5pv8zFojkQkOVe7D7/ZaAg/+/jphaT9ByrCvz14x8/FdL2PpZjbHjevevorjHX34ZpVlyVntpi6enK6qZoD8TPWvFI4ylyG9LTOJJWJwTzGzKySkPGEARpMudG3ckGBNi3lFhjHxNm3krI4jIMQJzIc6cVMSkbAGgYRKhMab99+xcsbp0s32cSyp9Ww7FPCZjjinCHw3pHs6YloijgvRbgQFUVEr32Ory6p4lvPZQjnlLQKDcTLW9D2vAiLAieWI6tDK6703/XQPfIRosAJJubxQ4nDUPU7iQE3d3uLXI7trHgcJxcGd9mNleeuBupQwwH3cFBKV3Mcc9zwuyykKzerjV9IIUuipYpHqZTdmS9IZL9mStyYMRPcHHYqKQ//XkNI/Tv/Z74RJMbBfudSl4J3l71BH5G1iv/u7ZQzak54lm7TnZfOw4N/yOrfU0jGe6oQdF7rF2nTsl03RPMmSNl6NYMtCCtP9ZmOuGwjDuSxvIETLRBPwEj690B5ynqRxdIKFTqPtqqlD83VXmrAT0GcpzvU+D4RV9CoazdcIxWE+RN6pZgHKhu5e5BeaJ3zxllOzvYgefsrVzHSu1q8J96b4NfbX+2ERX+VT5ocDpGiuWCppUuecpoiBbMRIMHa5ql8tyx0z7Ctncgp3zyAuEt9elrsR0hdlip1xQlWqopU8JR5ZQkYGaX9Phg6jN73p1D6pIriQ88d1J4G5s9qhwnK2sDY0r0EGSBqthsf7FmuxR1ihU0hPu+dAij/g43XsyYsIBU0Dy+ofesNk6IY/QbXTUi0Fkz88SB6Bm4k3OPBupFImoRw2/v01ewx3nBJCC305eYH1yNGjIuh1Hn1Y8WJFXZ7KMNi2XqFaEgv+BoVQ1qYcCLWi0fuHwBwRdMdVOxFqBV7aY8xHMkQz2nmbQlEOmELmC1ewLxRAjEOM4s7omgfLSzPSO3XfvCIXJfn8F0Vlv628vtJFD9Hg5Z5KK7oFHbq9B9719J9TDLunhQSfH0oOYheVyDM5NamzgfxR4hxqx5pMMxsAeT5S713m4l/H4o5A5aBN1mt8mMbdvORhE3NSDGxl036tfRNi42Kt0NOV/8QC2pKX7CeBZHxXIx3W0+anesGYoLafn3tXtwHyJbqMSc59G+YbeqKMl9K380TX2xJgjCX5UuVM7nlu0sy3VmRY3iavCn3rrOG+Ru9yhLa0qHvXJihBhbpvmDfZlsFCGr+V2+mp1kToeR73TLDg2HKIXasgS8wnjVN9HTb5SyXuiAlT/MSok+SijPVPg9LeN36RNp2b9kjQU7qFdb2jz/GBtjI8Z50MeNfcamg1CPQw0qDG7Um3LBs0ZswU5kof9iAidPJ6hpvggrDsLwgR8SKgv3q/dZmkaIAL+pu2LW+zrhdV0lI6Ukgq53wj6PxrRdeqO0m8cv4OTPft6A0Y8k35k39stGsMMtJ/XTyT+sPTbSOQzMv+Ft4YjmOWBxSmLpLPAp2qFsz+qbv9PRFAa/7GIb5/2tmd6gmHVgta3AzOryb59LRoClWOrxrkrCIZvkIY+7TRQz8EgPfAh/9sbh4tXn2+65sehEvsINs+eqzTC2IZ81FuM6mcHCWGNx0D6qrCDtKktiglXuxRdVQs+0W0vHzmCYbyUfBbw5FluwHsnq/FdpNJtljz//x4QlonYjeHsmPIp5tfZru4SG/Pub4vU7BpMFZSdqpp7VuqfyuLUVVeNwgkvziDvpJ/JrTbE9DMmYB0pW84A5i8NBis04Hq84RpmSRFgTCA7NLmc/t8jjHHwV8IYrq1dtncVjN0DAAvbnwHjmCSVLe9X5ClnLC21V0CaOf2Yxvb4f3HEuiGpELOL2M6ACwwH25E9BRKN/Ankq7wGejCm2X1mut1ZYXjbV8zRKzm2CGHw0Kz98jBsQZyDGeyEPumgoLz6lnMYuxfNvnWS86KOouisoo7bEOW+P0FB3tpfleJlQsrMWP32nb/8Tk3LDQegTsFcjcT/VbQL+8RVrzZqv11ifO1MgwyvGOxxwiG2yHGfcpM6f7D3WoAJ8bEUv9N2zViw/jBTUYXkQGrlIGTUHAHmV4vhK8D4C8+oypiTMZgm68Q9UvrJL0nU/ozcB161GEFw4uq16bhypvxE6kTMxNg6ox89l0vJcamjjz6yDLiRzIe02nbDn/9CtDUs4UpoN9cpj5mgxNsSLIYKrQ6DmP/kUEWNhnuxzMcg8xnd1QJPrQnh36gpw997o8v+SeDOATBBO05VCBzEdRG4uAWraoiT3LksWwpfn3wlBOvzDgIs6jop3F4bEUK7Sok6WpYxtoOJgBdhtXZzVW02om4SL5pTlkUCqT0iw9L1O2LIn7jyiZ5EJlzLY0XPg+RtPLJhrELF7kvmjxZtTSsJpH3cmfgvzTiIguT0B6w5kXNP5KGYjaw4UmwKh6KEnB3ZWcSHVrAnidnej/ZLU2V5GMsuqEEzV4ZpZwSwEv8Dtjps45ErfMg/0PPcYaEX9B54Jh79gckY5Fnv+cqmKPBTL5JZ1m9L5QQOcPT2wi4dFXL+qIiL+a3kPXiRQApnpcPZ0NvX8b9vA7YCiGCxpMpJcIbcGStpiPlZTh90FovCm+iooYtCKs7J3kziyj+Ne95/Zik4nynpGWEYaAexZiz54IHRPJNjEOJ5CCxTVHOwd+z6Vxs+ErWD++msrCjO4qg1E/duWwyuBRV5g5trgcQzEz1YhS9BEEqx0aANeKHU0YBsrrTyJ0GmI3ZsDZlB8nMwAGsuXECBr65T8wsv6I3BveQOqipTbGV5TysP/PhkMDOD7D+6qJXrzByJHqhgWAm31cTbAr7auz+y+KD46yQgMToqz7KwQLa5BhTx+PwlUDuN4PjG188id3vulOnCMnLCJAFFWKLeqKC0CJwBZnIUfpM6gh9WzFhJPX7cjydqVRhfx8heUjSHpzsbyNzZdq+Pk9sQzW0RDHRn+icV1FRJ24xvIfq1rST9+4lsAMFmgVIXqsOP6b/GxnMevPd7wAC1Xd72oDvoRWkzW1ygWew4l83EfgI904UmjkuFfLiPpMCpmYYBdOosC1/6d5AF28HeMynR+o180vD2EpbQKPTSp7WhcWkfGZD7syX+KhUW9OM8HZx5RUKpcPYVGFGJ7pA3Hh/oHkxZ5DHe66AxZNLt9iD7Ev/+65eqBtuOTQXkymK9pi12ty+RrTWmeUJwD1SguoMGmF/D2VA+i8/a+i6Kc4gkqc20OBNA2npAKwPtI0LzlgB/QYjsWPEc0bMXiGIMrwA7O0SGbMAGskQii79B82uTooRC0j8fM5sJH1lsEO38cywDPTRLRKs9dmJ6zpfHd2J7SY0JvU7AlHx8u9r+g4H5OQgS/bfQBYlMa0Cmyz9oJcHHSBqbgib9J7BpwpCjezHH28GZNMJnG8tZPhYpwekLvCuFMI28sqr6bfd/DuND6O5A5A+L3xW5C3JnC1Z314a+YsYl7eFqLKjs7AwdEIKGDOE+ZVEHJBXaxfZqWbALLaiUCfrmkJKVmWbuSLKhbsduamFGTScRWWmKzxH6BFo9JHoZQ65Y9pBdrPzwK72Ac840OKAV9TXyxCBedKRl+Ym8lSpGtHRygmoEVjDgN32uU83LtKv/bNhe9MSzk5KfphE8fFT71kSJRiFM3Xd3ywQ46Vndv0IqQq5w3F9fA1m6soWNcXtthrXP37qKx6e+JMncSrsrzMqby34P0UUD7PzjJrj96UOXPc/JiWCOXaBQDyIhh6+JQM1JwhlrI5Khl2wE1I/weEtbeF3fY9yDsM9rUcaRzpcGl3dsJaL9kL3Y/pZ+dKa/qiu09dISQ66efQYcb4Df1g4D34LpmjK8UVxG5WHWaACsuw7elPR0UraUtNjJRAbWF5dkhwkboe/qtBs7VkXHE1b3S4maFYHCbiWX0YwfPudNKJa5YJxEPeXIol7Azpi/X4M1gqP2cgU3+4nXYcO7bJzqQaFSRw6cGT+6+pQ719of3enKEpNoeK9jara52d3O66ss08DDyIgzPchmtRV1MAWvCs3SEZGf3+oaCwtI4BaP5rN/ru6hMpjiXsR46emXOhrKE0GDBuC4ZEaDxeqiBbzFrA7QeecPfna0D8g2ki73kT6E/o43IfD1zHJJOuvuXANir0vggLm1v9aN5XF2GbuBn72erK5kWdFGAB9JYHbMWrJjLJjY/ghKao/N5JIvi9WckJeoTIGidK86qmmqyGraQJ7GcCnzqAnqzS36+3rMOOwFwGRXIWV17HOnecRcoA0iw0Xu3OdDiY3WfDDBDD1pSs23bRFPI4PIWTtGQX2cHjylrCn2g85GJYG9WiX/E+04bslU62Y5go/+vv3qhWymRt3L8kKXQDOLV27rurBgPcBksM2che+U4oBN4JNu7WnVt0ZcnwMc4o4NCvFZCOuQPlfiilhA0xbEYO63oUEidR3GvZs14LTmqCHjOeiR4TnC+kdnAtb2x1j8YW0rRGXNdvGoDu65gCFlW7P8zl3IPvlPqufW6pw8UhgFzOQ5qkBhqdRsRYJmY7Y8u7U4JC/4IEgi1UG6raz36hIMTkr5YrNMaeYbTVFklBzfTDqi1SG1BDl4TrUSynfYqimxIpkyhSEzARRZDfnOUUeVYl7g9shEj/kVDXr0K/qxBcx9gF3Lgl4I+ojfVUriOAOA63saqYoJTKit73KO70Gr1P2hEgZqZEQh+X2hP2XbYPmXOre7BCjcA9Q4BLhuswsciK8U9JCtpPZRqLpYvmeKUZiBw8nkXuhmsvVqHf4VKf1FFRu6rxistR73E4k1v0gc/3ETAF5vXorpKS/HxPq713YtLBz1jvGw/AUZSpoLE9C/K2TRoG20Nc16hmgkcOirhOM9pTvVYpT6645/Ro+4+Dt+p0wvv/RWSSBSUSRODx7o7bPCdNJi4KTKWnTvm8MccvgMLHmIb5Xg5KYPB1Vcwgd2E4fygtKsLYfv5HktiezFwlZWgwYUtF6BOeXESjFikpMfqrUxFYrjCzrbzqQRfC5+q/yZxDiDR9ELHlF6b6BKjzLWLBHNSIdkORo1hcsziUY4nq4sHjF6hFOH8Vk3tKlQvSn4SmQ0+eaMbiA/n12E2XHWQzK+M9GoY9x8j0ua5e5EIKyWcKvTiP4YM4uzSfLBEkbPFUCubvoMp2FrjzujFyWlKr4eB0BtpJo+Cc4WABVW9bzLpYai0gZ7WoJsCCeD4hlRDOVAdQnvz1mrSgtiM9KF77LjU/7Tipr8Vx85N5r9GahatpHx2jJ4zFfWFymK8SUiNXDLkt6QFzwH8yiyFMJp/VgqKUJAlN7y2/3x04rLHbTKSOJNM1Q97bo3OY1R8pdTojSgPcxsuyHk7FZ7m2T/KDqIatJFm0MzzoChDpir1u6nbWtbh40hW3yKteHlt6coCrAOULM+9N/6YuyJwGCT5qv7YWAq6sE+3TTs9oAe/XC/0uRCY6o8j1fbOX6sefzIwl5LLy/XkkaK/jjCpva6wrnSagROxgAqfBzMVRrAxCzhD/UqG5LzMCcC0Yg7eEGy39LyL+CckkgAV7VQ/rkCQYY9WM0Nc8KS/LLTZn8D9Xkx7gQ+AvDY/HTs1thaaH1AgZ//mKqM3lQLVxyjE5v8nLli/S7QInWHnrV6pEHUJqW2GZEtMFXKk2/UjQxE1/pAjJKt9aJ04ZWz17U15fhac5XluzSRkXvzOjhLs4ja3vyZAZeNBt6YjBlqmZMbV6KgSSxg1Ib5D3g2Cy7/BWcuYDD30+UZOWlOmWW1ONqeIUAjoryztT/iVkEAgjyRiMXXcmYwhFCulL1Dc7oQofh/7mVmf5bnJyfi1y2Mt2OsgCCF7jQJ8rAyVlv7ohbXwAWgyhpwF09lwzNPaVWEhirQ8BflVkiBjqfEZm0XsIqHP5PEHzA0EHhA8nl9owchpARTIlqTHb4aGiaZnuDg8zdISTY1zEbw/Ur0xHd9vOpbwmeSBhUUlgR5lzNvrKHxssvr/pAa44Nz5TBSjrC/9hmBglJgOeoY01duf3qTgciO/MpezyeF6eWV0Ky32EbXz5dSsjioFnzPk1IWn2CRjuJGzTfW1yqj0lJWHMe1jMIP02dTnDOtN94yzIGypF+QlCJ5LKARlW+ITcKd9CCyME1Y4S7BxKvBYHGsv8jxPd76hpzj/sQNdiqRdabksrgPOaTrayLvRAuNcrzeXOeAPWoek0KnNjNXxUP0AaD83FtuJN+YAaH/iqcgDqjZ/vwUGP05/vPSt7EpxjA8Be6p/xq4Rq50yKxns9GdXrAGEbOJNjQyHuAFy5uUrTbfCSk6YKyMT5gRbvoRlBLOiVmMn4Rx54FUWYRjCmMETr7FMAj7P8F2ZIpoVkChFrrGizy2w5xXppqvdapeLb5iEcXZVBXJtGWoJK4AGoGD3S0wX4vskqQ2Lthc8/OJtt4bhsVpR/2X1S1dzcN2P+hCGkylOKNsA5M7VS7HfRzlbJUQGMeVobEWHRy4MtgPmHeAc1f3YziPIPqqveAeHqvJs3gwxVpbrxlPar803mGyo4PVeiwcKc26pKHsk/q/Vx6WXuAGDaqlq5g6QNlW5U8H3zNbe85cj9aFAy3PPYewQbveMGzi4aJwtiKAFylpLPSBSCftKVFyVZEzUbA92CwD5V0VasAahhAfll/x16VX7m159fejAq9fFu/h4kPg/32o3zTwJB63hQx5IgQWYLWnpExAZcIWF/8hEK9hOF9Pch7nwzA4878BwqWOblQWXwuIPAB/km7xcQa3xgUHFDgHrZyxtp0cPqFhXI2dx7DjJwEYq49VK6+az/1ejIHb6JvbbX5ccemcDNC3Vnt1XPzq+nXb/vOesYNX8N8FWGG1TjN7D7sr8MKCn3y5ME1dh5opYk/8YSYwIxGkKe8H1WGmZ9E+6K+wuIit6x6os83kGerdKrM1fulyT4zrR8qtgA6vA+i4WhBWmGx+8wUlHfDzh50v6bcvQy1cLmnsyRcGfSWy1UZsYu2wlkbxFtnqdOG4LZerWDLJrgVmeb4Lg4y/VAxlrmsJxRcdvjX7tzpArWXRx3LrdAKniJJLwnlSJWiqj0RunjsthxS6rTsoqaaQq5Yq6EaiEEIl7ugmnl8YHnsOwVWxNivSGmJx97FyPGdpwJm7NexKpwdba71nqm2udNLO62GHgQFzkVrPf4PvWKuvZJX28NrcjhS4aciBfrEv10checmzjm1myxqj3nI2Hi3jera8KKopDstds1lrGMk7C3xuKAIcQywsY9+2mFJ1l45YRauQ1gmNTzqbtE2OWDjr2Chwxcf+OoHHLHNyNIVIY/c5wHxmSIAeFIGe+sni9w9uV62OvqEHsG3vGHmzLpvYHOqdOwOewB1GjIYTktcZNnHzPD34ThOVg/eItTe6AUH+HTcTTwuCSjfAmhj/n+r5ensWg/0cFmDIpbntPYBaao3a/3gnshVQSy8uS9LLGIhSo5BjLE7VRohkCDG4RRNvlVJgt272x55zXlZlqIrRzpgGL+F/pEKgl/8Ua5CeoTldRz0K9rSEIZRZuCLc7jx3qrudpPnYwAyEgskLTgfK1kFJC7+k9RhGM5Ja3Jn/MJyjdNttRFxLnXLfg2LeHyAzKt1wCcLkTqb2gY7ymxO/RyUD6P6BVS2EK47rg5DCwKz5yfbGccvDQTHtXVzbEbfF7jAfurM3uM8w2fNNrhVcGxwvFIMF/pJgIDtjGP7gKhPDN8JAW/PPrCdNAyw5jL8qrrlyogLIjKJ0V9LqHJ3TOhW5EgLVdRlBY8oyR9lMf20BrNx4yS2fSy25kBfrTAtHVPGjUbh/vhxfc4wnRvPhLh4iItAYmgP3NYfwi78pcrorBAYLWL6OMfW7UCv6C/5P+IIpcAE5iMBIZxxijbI1YlwFWUMRlEBq9Wr0qN/YOP2e6JkVo2EKYXF5XL4gq3FFYn8ISsxTrkle5298mcSi6COOeZYLCFLPHgFsYhztPpYXys+G13kX/sjFKntb5M8NkYB+gCJjo1qdOAvJ4LsVX1mBCpqkk2ZQv3DK87sUuK+QM3xojpJJU8bq69R+L67Nvkva4lrLMzz0PXOb+T1jh9XYPIgjspO0YjUWEtYuRKKBTxP7+LWjdwto+7pQGeSNpjYlNFwy4v/VEWnoKhoTihCzQglSLIuM67TJbANDLJxLfppOO11DjdoW8W9npwZyzGtbx3PefaZ0XeLGl91lmF5i7L4+AAhvUU2qdkBZQcaWc7Pd4lNnEUeZuv7phPX7yfPGeQlFaUNzQy9bJxrgOYMuCXY5vZC4uMFed/0voSB4r0qWMOkMMrZmV0QbptSF2q0YjVh6MlCzXbc3Ul9EAwf+wdvf4tgIYXOoxbHXgTaTzRHJlxVryCWgeW6g36ckuqV0zYjGnaKmCKBdKq0a4+tTEKvp4AXPAeSxC2JUKoQdlWyPUDYRM3OxbBIdcSoQn7vNctsqerpCOH2EXcsnKW3V+dx0KwP6UHVjd7zKhm1PMUHEMTYOzlaMPm7p3RsMsZn83B5GYe6rvsvYlp21m86EqdQEBujyY7f7VHCsWB0Kky0wpsmrWtXZ28cQd+B1ryu1yoYePX+wxPsAR/KmTrMFiqx3A/Ll1Fu3BjTtKHFXgX/4C1EvXZJjve8OpPXKldpy5rJDNXOoxujx35Bj3O0R0Nx6vp1weXfSlVOszQZTvAPKVeAeRG3XRaA2KfLnAsMsmWLZnsWWHHwg3kw168trBnqX063TgQnZz0iv5X5/S7qKF+MyAm1FenqjqxopjINngTRammIcc6YKWz6AzRH1GxCp6icScdhDwxgWntTbEBRA5Yuj5W3EFnLgLmxGh5JSYok0Ir78XrSff3qlsk2MtQMqD5f2jRcqdgOUkpon/9v4WtKzQWYkVhcT6Yrym5BPIwVlfIMgdEm8zoTtfhJab6acfR55UMBFMHFPwdwhQ3kEB5k0POKkyKf7y5wJM0yCaSw/YCfDNjZWiiL3VVljKXL6aTLQo1XVgp8Up9a6kbRch/P9z3n5h0Wf7Zw6AAgPyncTEkaiVPwIV2dGhCj+ru+r91jIvaeXGmz5SsoEPiOesc5emIsQCs9wv0qgnNGGMhINkKYtGHk9It38Tbjj+lceApBGpun0KeJgbEfeW5PFVXGYlDDL4l/PFZuqXmc5WQbz70enUurp41QHm+FcA8b3qD4Mtb1Ts8m3fgTUJ6kSmSkS3i+2N3Sr9C1EhJoMKnHW4u9wE6tcF2fMyLcUQYVKEB+wVasepDZiGo/V5Zi4GBDsgT0Zv3nkTfg7YLU7R6Jjksgi1AaOrQDCXy8TfQbGRvbdA99cJPfm0SdosqszY9cEYNKQ/LeJ4buPI9A04oxtIn/Sy8ePoWwC8bQHACVVoAu9awTf/FFeL8LAbR4+UJcMkgTQPpJnx4Cx5fk1WqlSuQUzb6u9Tmnz+gyqD+NACHbwZOMBCViBeFkutArSrxqteUpUIRLnsfrgpyS73+VlIWeWNrO46dNGHOhw1Umtz+lXG1sWR0kTSfbwCCQ8AUNetXNK6RKXJOoaiQigngVPADsquvmIC9HubsUJCkB2zxYfY6SYGLXrMhWm4KTO7b9TV/dYAOzr861yo5SZRIwNNSywlWL+0A7YSjuQNzI/O2/A8LcSGRlYZh2fBuV7ZRXt4gRLTT/4iEPceYeM1Doms4d2qOUR2YjOgtF8IMR2guXHGG8ywEc/0gW723bkgN3whM9t+VQiWxApDd55/TYQYQTJsIcNWA0zeW2/tSDUFeCNlGDP9meVeLpUFOmtkyzHX0rJSUU4AC933AvsDZFhD7PdgGRMFzIA06MicyRNWhX+Avcsv7m8gAgBzIMxrrJ8NsIUrSsR95xeo6dRAf8T34djkuieQ6i/9dOKGyVEuIN7fnYCbzFBeU3mh0AB0DwTnlyZ1i5ggtRB9Y4YeGvjAndckDT5kVv9UCumZBzbGSUwZf6jllFltyEz8CGYATZ10WA0zeaSHSZAVHfxdtM6fD9qVOMK3njTCGQBM17nFBTOP0udk4ZqKBF6uvY2B3zOOZ2joPsm/v0NKIt+gIlECX6aNCa0LpeV4sdRyGWsPgE5kXi/8T2VBYydS98rxZds09JmmOdAkgIyOqy9LLCP51FD3kwNenLZpO7Ofy6a9iDzOjLeDtlNyR5I3lMSZLkvjGOMr6LQNhagIAqe3Ccg/SNAv49yixXH++WdsaynSqd801QejsrFWerv5cSlQpzBbPGPdpiHYIqQxm1OWumHUP9V0vO71xcjVUJPfk3c5LZAtBFjSI9I7hSozfHksTr9Y3Ld+IFuN919iMloVZslcVJtA2mLxhDsl626d3BkGZzRX31XINzys2vgGLhqNFa38YxFNriH0ZdOIkrzX9oj88uRPac/wMlDmu9orK78dp/vny7HCh7ofdmrT9OmaWKssDvYSQM+Aux00kxqbTaT9VEke/fanwyXsMQpFOEApykP5HV4HL9w2gjuknzfOW1UtmMZoIpZnw59G/VBiq1ZiV9V1ZRRzl7+BhokgtTh5yS85fC6X/g8vDoG6fImOBbI0pOK069+0K7uCroWTndQaiJR7FhHzALV/ZM0NPkdb5x/H/THK9x6mXt73WKHPpkfTZ30vmLqVD4W6f866BLDdWBV2Z5+W1eqOWHV+hCtWczV9r8+LYnBwPSs8qvOqj4NZ2WC14VQwa/BEtrJMj5Gyzr2LBIDgBnvpblmlrjh7DgjPN7MSGIphxaCzm2o+iwHvJDqWpkk2kzGHVj1CBJ13UqqmhQMqaok5wTvqsZzHlGoGqd1R7/opCD/1IK3j4T5IR7jE6bRdhS23qoVIoG9PR3z6KDhFxevpSaXVtEA2ggynLdvpj/lCv6EXHR6EY9DA8b89EfbBkXgfhxzXNqkSzuvnm76q6xAdTxQzYB38stmqAQrztVJgGAUThmGEaCIePkPjAWd7ZukwoapkGLlpgEZhpYIkR5gdCnIgU5KDtvnr/KbT7Fvj4UvlHQHL4oPOBijtlmYS87eUMzo47h3p8kzzNNtqKnY7Kll3WhN0fADQNI6WGkn6/auA1xByQDgBXlGGKSUUHAB9xNbrBKz63x5bZyNYqihgqrVODyC2Zo26hTKFnT+Ur0lDRzieVrPQe3+Q9y07Cs81Jc8rO9+Dg0b3Ys1xRsc635yyDvJRNmgRy5+lRnWWMNC7AAYJs8BS4KBa93trTNW20WD8ByOfLITwBE13ILgGpyjXMiixvOmZUwCSe+dYC+vXakLZn+XlanK39ZND2JM9MQS3+RAPFgRj+r0CcpOCZHrTvdKx4JtCxgWZz67SUJIbVqLkP1YtLUgT6g52cTyOzFSPRpqVmtONSTeaebOz9Rgpz9XxlfDmNNzB3E1CEPOKk+s0YBhdEtulKABVqcbyJeG6ZZfTGqWNq7T3D7nhTrGmfEqqGjt6QLmLL2KubdXdlg/GQ9e9zUSRWYs1JhyNNeCO0+4WNJ2xJoBykYfX84vtiVjPg/kd35THOUf1mpp1tdAMTGjApOFdlexVVGXrCvaqmVgm7Caf3LEetNnupXTNmwO+4aoorzy1u8c1/oaw9ZbQ1bfsu1/zPA8nCMZhPInDz5lHm6RPju9x9mtRV7tczlo6Ud/WAQwX9LBjoNH1W7eiFnzG2EjaPncJGFmMwuT+5dhfQu0ZUU2Mq6NhzIwgp8bScCzpX5d2HcN725HuLoItWfwS2KW3CAdVet55Ha2X73HXVc3PCtCH+Q+48dflIinLBWpYnR6r129kUR7Bqj5lFsEHoo6pcjVcqMWIN/HHibt9/zJwikcBSyveom38zu3X6J3EWNJkD1jhXZ2jyGpKKlPLKwAdPxDu1dRz6G4cJ4/gxuM76x2FwC5VwaCG+5bJ3kq3ZzH1y6AoYNrZJv4ghhiHFIMiQ2UvmfX5MaZvLTR7i5iJUntnQKbQU58ziB0XAD2w08G/Xflr5RUtlqTUvlcVDNCFVBkK7PNuTmkfgGu0SCQ5iaJyvgNp9QFy6n7nvCpnuMHiHyrPLliEMFZR/Hx8FyLtDB/+N4SO9kqQ7C2dWZq4aqPu3VcEyk5Q+8FK8O7ZCbmk8iEcdQfK41BG8h5uXPXGRInGmeUNFEAjAZV97V1wiFxhuCFrQ/HpXukN3tYnvYTfLM2g501S6Q3aeFlDjJq/Uc+vAosHHibevoPiacjiBbL79KxTmH24jC/e82TlfSjoRTaq6Tov/Xu4peGGupWGt+JYaocdRooFtxaM56MtXpEYkLzKjMozhNgryFUKDMDld20XieoCOdmU4KOt8mF4X3NO1zf4iemzFz4JLjF9EVmJxoYnQZB0Tj3yd4oAw7LnNbzsYIefv+hc5PEYW1l7Nr7wDOtIqw237jK8+XpU7ApI2Rh5psw98nxd4besWRTDLmOy8LMYg9mR+zr4X9jIrE7YlowpgcjrMmqYfc5YrDnGgBUr/SINqJ8I5+ZQWYOgCh/crk7eReLvznyXslig9nzVOGz6VG+UmPMPfB3nCtMDpvArUzkEttMEe/Dy0CCLlsXzOFzt04An1COpodzHhRvD35Z/rNPLPlPktI+veJyE3ITRmIjeXZaLN2ZVm7cZJObt3WhlQ9teDdhLLzNEVxZQ1Cpo4bA9+SznHrE8eAR+DH0dMrb0WTj4zv+tbdhY3hzLDO0sZVq8kjE5PityP7NbYhb6il5ui34tGw+ZWm0A7MMAipGh+dlWb63SvR4TRcdjIC1sa9Zzft4zl0xg60ELfCBM0GnMgCiAhj/myIvM6na1RohDDUxIpNo1NVa+h7cXdqTtkxqnzbnYvkwb5ehCWsSfJlA5ukj4yrxdvEChOO+d1dFKir2NPwQrwbczPQCLGU4qb+WcGIy8Wk/b5CEd5DZSxdpjPtLUQSyex3m2K4zGj6Q51VxPa8b0uQTxko7I2C1sde5JHTqdTdGZUDkfVPFz1Wa/Jle5ClxnOtV7eJiFLLfmCF1h5yAZiDKZX/6QZX6R5M1rF9WKp81XYmouyvp5PwcbUyfGquvAR7jwH/4pvr/OWCqC+0VShugHCnp/qoSsz8ubW+23L2cR27Sxy2yW/iqFb5WTS+DR7fw8Vl8pOvifebBZi7FO3BvpCCEFCR6z5pFhSfvH7TH4kQK7smN4Nb0+FTQv2ldWGSRoSP6EMXRNUNKpEQfkU3bqY0wcSDVL501QMHucqjgF7PYsm5NpitFR7HkplCqFG2Y7IhWcDn2iXmgpeBxn8DOJfQUU2LDgfsgsktiTLDnXcGB4cTP2bbrFEuAbFncAlUD0l69+iY7qPz5dFMGAlNTTXWL06O1PVhtZQPmuGcBTumEBWszy8xq2Rd+QZRvdquZgCc3Gvklln4fZPJEoUc2dAMye1u5z6II5pb34ViD3AnSQIQ1s/9uASqLVN8SbzbdlSi6sUXbXzjq5SXR+gIau91eL9Qmz5/udAhAbR6lhsXGGFDtaYTsvLxhjKIkB86xwBwa8nt2KKzm1vC06IaezRQpOKP4Eucsm1Ve/MZD7Xxi5YEWl/WZAxSjeUKdFdmRuf4Yq/vKO4qMc3DAT7mIOCrGMB7aLeHwz0CKCpsL7radK+pSNccfpeeMcKPMMoMn0DqttbBToQXeSe7jrD/Nhd0Ukyn9c227P+MHsPeFeZuT/PxE2x9W7OlAML9jNhzHCRdwWxftTr8Tkkw8CNJsfBBf+2Ws9WF+BwT/4o+0lym4ZVEcjVL7CPLOBG0Ctsk9tZ4ExLiMK6FeRUdhqB9Ho3qrRUk66pXE54mzqcc1VuhDhaTA0VM8Be/IS4PjbCI73rP6XB5hHgnrQLRBT/J/qyWc3ti2KQmqefnPyFTcZfj6MUMfMd6odjlT+BRZqvIcF9HeIFml2YgvJj7oZb5KartfRPU1LifA/kMMR0lwt2zirJD7BkJn9Yj8Xm/j19/0K45HJp8thc4wobeQzQLf5oYzHRDVOBDknMujln9W6yupAMW1k0FLT5mnBuzPSR4bKPFgIvlkwFPlGEgdT6XY8/b7bnHNWKu+Qk91shIrpu0Pck6/gBqmvCb0Ft/nln0tAxwbrZLQu972ttoIwc0cc6LNHZhfAl1lzeKItgqCj07bXh8PUtY2W/rsrN1Bw++n5f1pIf13cZibYVHTzixSMCd7qftWu3I4hhDG3n4wft5vKxadOrOD2F9VCDRm6K8LUUkDbvkRhd0sOhSOAclWNKB8CM45TndjZo214zQEe4Idrh+FZ27uktoBqQchzSc/vhUyfeCqO3WCCzsJ02/C6Ko8nECKJlspRRzxTAqVuvg/aVskJD1IsOMbesUqFstuuqip1Sp5TJ79ladKM1ESL3A6O4oSasY2NFp0/eiVIw/nZd1+muhMckXcBYwYvW+ElNCRax1Rgbp142eYIUNsic5ZcIKceRxFjFemZ02kevDdqaZ5y9nVuBdkTKhscVQ+KktD2+XcMUadRjP9mwaF0FApneU4mKe3NzOv7Tz+J42NRVvNjfchmcLD1Z35xfR4IBQM6yoWMtfclhvSudKi9Yw7vFolLOI8CCkpTgC+HA94kMRBI8MPyaIW87zFTwqQcACvKP90tKFMiznm/vSe4KO8x1ngnJpywR5xPghEJ8tu+JP3AvftvTyFxkgIKwlALHsySRMWRmX56GijGYFXot8C1tJTzwDGE/eWXIhj1LGI5u5HcSpIqjgmHEbckZNl6NZVxcVkiL9//9JOb48e/BYAN6rJZYlbtrdeVEErKGrabagg19i06vDEIYYPljYEePl/CIjH74yPnfFhfcreXzQRrU8nSKbMYtfxlI74BhHQCrVQLHqw/705tIXIAYkuKh9itirhd5MWwkdAaTg/EqJjcWdmgRP4vyYnWp6TpSgxHWpSw4eHlTXQbu/NEIlyQxO8UCXBg7aDBa0xE7DX3n57k2H89wIueLcdYYnjm6952XOMeEP4C+gqiRFqfA9r6LP7ScIXJzgtaBfOjl3dOE99Buoy6bMfghPZoUuc+dV7tndd6l/UUsM6819FNIqdqbBqp9mnzy/9n8QgeAVT4RZLzvLpmLiIANN3Qu3zmOU39SSUNIBvrVxGL7wKFJYWywSoGHXqLFMgHBaf17bMJpTbVO0hmtH4CmVsFg3lbKSi4DJS4WrXWMrzY+JAF3da7oWblFJuDtXs1tkTZcl1ysUnOPZYT/wTGKCDUz6+A5ajIMpn2wY5aZkjZR6lxy7+4NvPbYcBLL6ELQ/cYfRzov15tLlVN6YzvrAMwSAlE4gNH9Vu2OC24B7bZm+Dqa4uK+nge/a51LepX9YDFQD5HUJudqCY7Jn3/yrXx1h0aykRatV+WOS+Ekt5RXwNANk1U32yTnuW2ViNUFpTfNWJs4qWFTbm+2MYkNk559gg54sJZyUGVwTHkElAFKymxi1orvJ2b2rcIRz2IrIkUqJQaTP0AhRtO1raSF3j4oHVbnvi7C1EgCAJQUGsaOVmLGeywsnIq2Ido1ChqxXMsakpF8ngZRCrhRyyQXJb35xGFo10vGmeIaFUqdrqiOjs8HxunBTvk6uLNBxxx6WVwjg4fk1ZDjgasa1BAFuogcUhv+bYH4YRWg6sUW5H3Hint/wMygO+AwrD1zvpyL3MsjbkYrYc+DzTeKkqcalmjoEmRY1U31TxBM=
|
Thank you in advance |
|
|
|
|
|
|
|
|
Posted: Wed Dec 09, 2009 5:06 pm |
|
|
Cyko |
Moderator |
|
|
Joined: Jul 21, 2009 |
Posts: 375 |
|
|
|
|
|
|
|
Code: | <?php
/*
Separate class for posting videos
*/
class WPVT_Poster
{
private $model;
private $post_comment_status = 'open'; // post comment status open or closed for commenting
private $post_ping_status = 'open'; // post ping status open or closed
public function __construct()
{
// make a new model
$this->model = new WPVT_Model;
}
public function post_video($id)
{
// a lil check :)
$id = (int) $id;
// get search term info
$sql = "SELECT * FROM {$this->model->db_table_search_terms} WHERE id = $id";
$result = $this->model->wpdb->get_row($sql);
// if there is such search term and it's not adding a new video right now
if (null != $result && 0 == $result->adding_video)
{
// we set adding_video flag to 1
$sql = "UPDATE {$this->model->db_table_search_terms} SET `adding_video` = 1 WHERE id = $id";
$this->model->wpdb->query($sql);
// we choose function's name for search_type
switch($result->search_type)
{
case 'videos':
$yt_videos_func = 'youtube_videos';
break;
case 'profile':
$yt_videos_func = 'youtube_profile';
break;
case 'most_viewed':
$yt_videos_func = 'youtube_most_viewed';
break;
case 'top_rated':
$yt_videos_func = 'youtube_top_rated';
break;
case 'recently_featured':
$yt_videos_func = 'youtube_recently_featured';
break;
case 'categories_keywords':
$yt_videos_func = 'youtube_categories_keywords';
break;
// this shouldn't really happen, but just in case we stop the method here
default:
return false;
}
// now we try each video and find a unique one
$loop_number = 0;
$videos_per_try = 50; // how many videos get per one request
$video_num = 0; // counts each video
$videos_found = 0; // zero currently
$video_new = false; // false by default
do
{
++$loop_number; // increment it right away
// get videos
$videos = $this->$yt_videos_func($result->search_query, $loop_number, $videos_per_try);
// set total num of videos for this query
#$videos_found = $videos->totalResults->text;
$counts = $videos->children('http://a9.com/-/spec/opensearch/1.1/');
$videos_found = $counts->totalResults;
foreach ($videos->entry as $video)
{
// loop thru each video, to find a unique one
// we increment $video_num right way, the first video will be #1
++$video_num;
// get nodes in media: namespace for media information
$media = $video->children('http://search.yahoo.com/mrss/');
// get nodes in yt: namespace
$yt_ns = $media->children('http://gdata.youtube.com/schemas/2007');
// get content attributes for video url
$cont_attr = $video->content->attributes();
// if we have such content type
if ("application/x-shockwave-flash" == $cont_attr['type'])
{
// get video url
$video_url = (string) $cont_attr['src'];
}
// if we couldn't get video_url, skip the video
else
{
// this should not happen, but just in case
continue;
}
// we get its video id
$video_id = $yt_ns->videoid;
// and see whether we have this id (video) in our database already
$sql = "SELECT id FROM {$this->model->db_table_added_videos} WHERE video_id = '$video_id'";
$a = $this->model->wpdb->get_var($sql);
// if there is no such video, we have a unique one
if (null == $a && false !== $a)
{
$video_new = $media;
// we break out of the loop... twice
break 2;
}
}
}
while ($loop_number * $videos_per_try < $videos_found);
// if we have a unique video
if (false !== $video_new)
{
// get post_code
if (false === ($wpvt_postcode = get_option('wpvt_postcode')))
{
// if for some reason it couldn't get it, fallback to default post code
$wpvt_postcode = $this->model->default_post_code;
}
$pattern = array(
"/{video_url}/i",
"/{video_description}/i",
"/{search_query}/i",
);
$replacement = array(
$video_url, // this has been set already before
$video_new->group->description,
$result->search_query,
);
// substitute values in post content
$post_content = preg_replace($pattern, $replacement, $wpvt_postcode);
// and create a post
$wpvt_post = array(
'post_title' => $this->model->wpdb->escape($video_new->group->title),
'post_content' => $this->model->wpdb->escape($post_content),
'post_author' => $result->post_author_id,
'post_status' => $result->post_status,
'post_category' => array($result->category_id), // category id
'tags_input' => $this->model->wpdb->escape($video_new->group->keywords),
'comment_status' => $this->post_comment_status,
'ping_status' => $this->post_ping_status,
);
// remove wp internal filters for posts (to allow <object> tag)
kses_remove_filters();
// insert the post
$post_id = wp_insert_post($wpvt_post);
// we add removed filters back
kses_init_filters();
// add video to added videos table
$this->add_video_2db($video_id, $post_id);
// if we are allowed to add comments
if ("yes" == $result->post_comments)
{
// add comments to the post
$this->add_comments($post_id, $video_id, $result->post_status);
}
// if humanize posts is set
if (1 == $result->humanized)
{
// call this func to change humanize post schedule seconds for search term
$this->model->set_schedule($result->run_num, $result->run_period, $result->humanized);
}
// set stat row
$this->model->set_stat_row($id, $post_id, $video_num, $videos_found);
}
// if we couldn't find a new video
else
{
// if humanize posts is set
if (1 == $result->humanized)
{
// call this func to change human post schedule seconds for search term
$this->model->set_schedule($result->run_num, $result->run_period, $result->humanized);
}
// set stat row for videos wasn't found
$this->model->set_stat_row($id, 0, 0, $videos_found);
}
// set adding_video back to 0
$sql = "UPDATE {$this->model->db_table_search_terms} SET `adding_video` = 0 WHERE id = $id";
$this->model->wpdb->query($sql);
// regenrate wp cron hooks, schedules for about every 30th run
if (0 == mt_rand() % 30)
{
$this->model->cron_schedules_regen();
}
}
// couldn't find such search term or it's already adding a video right now
else
{
return false;
}
}
// just search for videos
private function youtube_videos($search_query, $start_index = 1, $max_results = 50)
{
/*
format=5 - is for getting only embeddable videos
*/
$q = (!empty($search_query)) ? "q=" . urlencode($search_query) . "&" : null;
if (false !== ($videos = $this->simpleXML("http://gdata.youtube.com/feeds/api/videos?{$q}&start-index=$start_index&max-results=$max_results&v=2&format=5")))
{
return $videos;
}
else
{
return false;
}
}
// get videos by profile, returns videos!
private function youtube_profile($search_query, $start_index = 1, $max_results = 50)
{
if (false !== ($videos = $this->simpleXML("http://gdata.youtube.com/feeds/api/users/" . urlencode($search_query) . "/uploads?start-index=$start_index&max-results=$max_results&v=2&format=5")))
{
return $videos;
}
else
{
return false;
}
}
// get most viewed videos
private function youtube_most_viewed($search_query, $start_index = 1, $max_results = 50)
{
// set video query
$q = (!empty($search_query)) ? "q=" . urlencode($search_query) . "&" : null;
if (false !== ($videos = $this->simpleXML("http://gdata.youtube.com/feeds/api/standardfeeds/most_viewed?{$q}start-index=$start_index&max-results=$max_results&v=2&format=5")))
{
return $videos;
}
else
{
return false;
}
}
// get top rated videos
private function youtube_top_rated($search_query, $start_index = 1, $max_results = 50)
{
// set video query
$q = (!empty($search_query)) ? "q=" . urlencode($search_query) . "&" : null;
if (false !== ($videos = $this->simpleXML("http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?{$q}start-index=$start_index&max-results=$max_results&v=2&format=5")))
{
return $videos;
}
else
{
return false;
}
}
// get recently featured videos
private function youtube_recently_featured($search_query, $start_index = 1, $max_results = 50)
{
// set video query
$q = (!empty($search_query)) ? "q=" . urlencode($search_query) . "&" : null;
if (false !== ($videos = $this->simpleXML("http://gdata.youtube.com/feeds/api/standardfeeds/recently_featured?{$q}start-index=$start_index&max-results=$max_results&v=2&format=5")))
{
return $videos;
}
else
{
return false;
}
}
// get videos for categories, keywords
private function youtube_categories_keywords($search_query, $start_index = 1, $max_results = 50)
{
/*
Category start from an upper case letter "Category"
and keywords from lower case letter "keyword keyword"
*/
// get words out of search query
preg_match_all("/(\S+)/i", $search_query, $matches);
// urlencode each word
foreach ($matches[0] as $key => $value)
{
$matches[0][$key] = urlencode($value);
}
// create search query url
$search_query_url = implode("/", $matches[0]);
if (false !== ($videos = $this->simpleXML("http://gdata.youtube.com/feeds/api/videos/-/$search_query_url?start-index=$start_index&max-results=$max_results&v=2&format=5")))
{
return $videos;
}
else
{
return false;
}
}
// add comments
private function add_comments($post_id, $videoid, $post_status)
{
// set comment status to unapproved
if ("pending" == $post_status || "draft" == $post_status)
{
$comment_approved = 0;
}
// set comment status to approved
else
{
$comment_approved = 1;
}
// get video comments
$video_comments = $this->simpleXML("http://gdata.youtube.com/feeds/api/videos/$videoid/comments");
// gmt offset seconds
$gmt_offset_seconds = get_option('gmt_offset') * 3600;
foreach ($video_comments->entry as $entry)
{
$commentdata = array(
'comment_post_ID' => $post_id,
'comment_author' => $entry->author->name,
'comment_author_email' => "wp@video.tube",
'comment_author_IP' => '0.0.0.0', // none
'comment_approved' => $comment_approved, // approved or unapproved comment
// escape comment text when adding it to the db
'comment_content' => $this->model->wpdb->escape($entry->content),
'user_ID' => 0,
'comment_agent' => '',
'comment_author_url' => '',
);
// get timestamp of 2007-09-19T05:36:50.000Z
preg_match("/^([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2}).?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})/", $entry->updated, $matches);
$updated_gmt_seconds = mktime($matches[4],$matches[5],$matches[6],$matches[2],$matches[3],$matches[1]);
// set local and GMT time
$commentdata['comment_date'] = date("Y-m-d H:i:s", $updated_gmt_seconds + $gmt_offset_seconds);
$commentdata['comment_date_gmt'] = date("Y-m-d H:i:s", $updated_gmt_seconds);
// we need this
$commentdata = wp_filter_comment($commentdata);
#black list check
if ( wp_blacklist_check($commentdata['comment_author'], $commentdata['comment_author_email'], "", $commentdata['comment_content'], $commentdata['comment_author_IP'], "") )
{
$commentdata['comment_approved'] = 'spam';
}
wp_insert_comment($commentdata);
}
return true;
}
/*********************************************/
private function simpleXML($url, $post_method = 0, $post_data = array())
{
// make request via curl
$response = $this->getCurl($url, $post_method = 0, $post_data = array());
// if we got a response
if (false !== $response)
{
$xml = simplexml_load_string($response);
return $xml;
}
else
{
return false;
}
}
// use only curl to make requests
private function getCurl($url, $post_method = 0, $post_data = array())
{
$ch = curl_init($url);
// GET is the default http method
curl_setopt($ch, CURLOPT_HEADER, 0); // don't include header in the output
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // to return output as a string rather than echoin it
// swich to POST
if (1 == $post_method && is_array($post_data) && 0 < count($post_data))
{
// post_data - should be an array with the field name as key and field data as value
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
$output = curl_exec($ch);
//error_log($url); error_log($output);
curl_close($ch);
return $output;
}
// add video to added videos table
private function add_video_2db($video_id, $post_id)
{
$sql = "INSERT INTO {$this->model->db_table_added_videos} (`video_id`, `post_id`)
VALUES ('$video_id', '$post_id')";
return $this->model->wpdb->query($sql);
}
// blog posts
public function blog_posts()
{
// include required file
require_once(ABSPATH . WPINC . '/rss.php');
// use Magpie rss from /wp-includes/rss.php
init(); // init
$resp = _fetch_remote_file('http://www.neil-harvey.com/feed');
if (is_success($resp->status)) {
$rss = _response_to_rss($resp);
// we get last 3 blog's entries
$blog_posts = array_slice($rss->items, 0, 3);
$posts_arr = array();
foreach ($blog_posts as $item)
{
$posts_arr[] = array(
'title' => $item['title'],
'description' => $item['description'],
'link' => $item['link'],
);
}
// write everything to an option
if (false === get_option('wpvt_blog_posts'))
{
add_option('wpvt_blog_posts', $posts_arr);
}
else
{
update_option('wpvt_blog_posts', $posts_arr);
}
} else {
// if couldn't fetch posts
return false;
}
}
}
?> |
|
|
|
|
|
|
|
thanx again |
|
Posted: Wed Dec 09, 2009 6:23 pm |
|
|
vladowsky |
Beginner |
|
|
Joined: Dec 09, 2009 |
Posts: 2 |
|
|
|
|
|
|
|
|
|
|
|
www.waraxe.us Forum Index -> PHP script decode requests
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
All times are GMT
Page 1 of 1
|
|
|
Powered by phpBB © 2001-2008 phpBB Group
|
|
|
|
|
|