From cassidyno@gmail.com Tue Jun 7 20:29:20 2022 From: damian To: sr-users-es@lists.kamailio.org Subject: Re: [SR-Users-ES] Consulta =?utf-8?q?Envi=C3=B3?= de comando en forma remota Date: Tue, 07 Jun 2022 15:29:03 -0300 Message-ID: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0226959326==" --===============0226959326== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hola, buenas tardes. Agradezco mucho su gu=C3=ADa. No termino de entender que recomiendan que haga en ese if...que no devuelva una respuesta y que lo saque autom=C3=A1ticamente del sistema? if(src_ip!=3D192.168.224.184) { exit; } Me doy cuenta que tambi=C3=A9n podr=C3=ADa haber aplicado las condiciones en = un solo if. if(src_ip!=3D192.168.224.184 && st_port!=3D8080) { exit; } La regla de iptables la voy a tener en en cuenta para un ambiente productivo. El lun, 6 jun 2022 a las 16:20, Joel Serrano () escribi= =C3=B3: > +1 a lo que comenta David: > > Es mucho m=C3=A1s f=C3=A1cil (hablando de rapidez y recursos) para el siste= ma > descartar un paquete a nivel de kernel que para la aplicaci=C3=B3n a nivel = de > usuario. > > Saludos!! > > > > On Mon, Jun 6, 2022 at 11:08 AM David Villasmil < > david.villasmil.work(a)gmail.com> wrote: > >> quiz=C3=A1s un "exit;" es mejor aqu=C3=AD: >> >> if(src_ip!=3D192.168.224.184) { >> >> Y tambi=C3=A9n es recomendable que pongas una regla en iptables al menos. >> >> Regards, >> >> David Villasmil >> email: david.villasmil.work(a)gmail.com >> phone: +34669448337 >> >> >> On Mon, Jun 6, 2022 at 4:13 PM damian wrote: >> >>> Gente, >>> ya se encuentra funcionando, muchas gracias por toda la colaboraci=C3=B3n. >>> >>> La conf. qued=C3=B3 de la siguiente manera, por si alguno le interesa. >>> >>> disable_tcp=3Dno >>> tcp_accept_no_cl=3Dyes >>> >>> listen=3Dtcp:eth0:8080 >>> listen=3Dudp:eth0:5060 >>> listen=3Dudp:127.0.0.1:5060 >>> >>> #####Modulos para Request Reload mtree##### >>> loadmodule "xhttp.so" >>> loadmodule "jsonrpcs.so" >>> #sudo apt-get install kamailio-json-modules# >>> loadmodule "json.so" >>> ####### >>> >>> event_route[xhttp:request] { >>> if!(dst_port=3D=3D8080) { >>> xlog("L_NOTICE", "[XHTTP:REQUEST] $si FORBIDDEN! ***\n"); >>> exit; >>> } >>> if(src_ip!=3D192.168.224.184) { >>> xhttp_reply("403", "Forbidden", "text/html", >>> "Not allowed from $si"); >>> xlog("L_NOTICE", "[XHTTP:REQUEST] NOT ALLOWED FROM $si! ***\n"); >>> exit; >>> } >>> if ($hu =3D~ "^/mtree") { >>> $var(dbmtree) =3D$(rb{json.parse,db}); >>> xlog("L_NOTICE", "[XHTTP:REQUEST] $si:$sp - db: $var(dbmtree) >>> ACCEPTED ***\n"); >>> $var(json_rpc)=3D'{"jsonrpc": "2.0", "method": "mtree.reload", >>> "id": "$var(dbmtree)"}'; >>> jsonrpc_exec($var(json_rpc)); >>> xlog("L_NOTICE","jsonrpc response code: $jsonrpl(code) - the >>> body is: $jsonrpl(body)\n"); >>> xhttp_reply("200", "Forbidden", "text/html", >>> "OK - [$si:$sp - db: >>> $var(dbmtree)]"); >>> >>> } else { >>> xhttp_reply("200", "OK", "text/html", >>> "Wrong URL $hu"); >>> xlog("L_NOTICE", "[XHTTP:REQUEST] WRONG URL $hu! ***\n"); >>> } >>> return; >>> } >>> >>> >>> Saludos. >>> >>> El lun, 6 jun 2022 a las 9:49, damian () escribi= =C3=B3: >>> >>>> Disculpen, encontr=C3=A9 el error porque el que no levantaba el puerto 8= 080, >>>> Tenia en el archivo de configuraci=C3=B3n disable_tcp=3Dyes. >>>> Ire por el camino del Request y ver=C3=A9 si me funciona. >>>> >>>> Saludos. >>>> >>>> El lun, 6 jun 2022 a las 9:41, damian () escribi= =C3=B3: >>>> >>>>> Eh intentado lo del event_route[xhttp:request] pero no logro que >>>>> Kamailio escuche el puerto que configuro (80, 8080 o cualquier puerto q= ue >>>>> defina) para enviar el request via http. >>>>> >>>>> >>>>> Tengo configurado: >>>>> listen=3Dtcp:eth0:8080 >>>>> listen=3Dudp:eth0:5060 >>>>> >>>>> Resultado. >>>>> >>>>> Listening on >>>>> udp: 172.x.x.x:5060 >>>>> udp: 127.0.0.1:5060 >>>>> Aliases: >>>>> udp: localhost:5060 >>>>> udp: LAB-SERVER:5060 >>>>> >>>>> Solo me escucha el 5060. >>>>> >>>>> El s=C3=A1b, 4 jun 2022 a las 12:55, Jose Fco. Irles Dur=C3=A1 (< >>>>> josefu(a)gmail.com>) escribi=C3=B3: >>>>> >>>>>> Otra opci=C3=B3n es que hagas un GET a un path espec=C3=ADfico en >>>>>> el event_route[xhttp:request] y ah=C3=AD ejecutes lo que quieras, como= por >>>>>> ejemplo un script local para hacer lo que quieras. >>>>>> >>>>>> El s=C3=A1b, 4 jun 2022 a las 15:13, Joel Serrano () >>>>>> escribi=C3=B3: >>>>>> >>>>>>> Tambi=C3=A9n puedes usar el propio jsonrpcs_exec() y hacer el reload >>>>>>> desde la config cuando te de la gana. >>>>>>> >>>>>>> On Fri, Jun 3, 2022 at 15:15 David Villasmil < >>>>>>> david.villasmil.work(a)gmail.com> wrote: >>>>>>> >>>>>>>> Eso lo puedes hacer con un archivo de texto simple. Kamailio puede >>>>>>>> monitorizar el archivo y recargarlo autom=C3=A1ticamente. >>>>>>>> Si no, puedes hacer un un timer que dispare un trigger y recargarlo. >>>>>>>> >>>>>>>> On Fri, 3 Jun 2022 at 20:38, damian wrote: >>>>>>>> >>>>>>>>> Hola, buenas tardes. >>>>>>>>> Tengo una duda, espero que puedan orientarme o ayudarme. >>>>>>>>> Tengo montado un Sistema de Redirect Server con Kamailio, >>>>>>>>> funcionando OK. >>>>>>>>> Este server lee una tabla que sale de un MYSQL y con el modulo >>>>>>>>> mtree la cargo en memoria. >>>>>>>>> Cuando hago modificaicones en la DB refresco los datos en memoria >>>>>>>>> con el comando: kamcmd mtree.reload mytabla. >>>>>>>>> >>>>>>>>> Ahora bien, hay alguna forma de que haga este reload en forma >>>>>>>>> remota. es decir, no tener que conectarme al server por ssh y tirar= el >>>>>>>>> comando localmente. >>>>>>>>> Hay alguna posibilidad de que kamailio este escuchando y hacerle >>>>>>>>> el request de reload? >>>>>>>>> Si lo hay, cuentan con algun ejemplo que puede utilizar de >>>>>>>>> referencia? >>>>>>>>> >>>>>>>>> Saludos. >>>>>>>>> _______________________________________________ >>>>>>>>> sr-users-es mailing list >>>>>>>>> sr-users-es(a)lists.kamailio.org >>>>>>>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users-es >>>>>>>>> >>>>>>>> -- >>>>>>>> Regards, >>>>>>>> >>>>>>>> David Villasmil >>>>>>>> email: david.villasmil.work(a)gmail.com >>>>>>>> phone: +34669448337 >>>>>>>> _______________________________________________ >>>>>>>> sr-users-es mailing list >>>>>>>> sr-users-es(a)lists.kamailio.org >>>>>>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users-es >>>>>>>> >>>>>>> _______________________________________________ >>>>>>> sr-users-es mailing list >>>>>>> sr-users-es(a)lists.kamailio.org >>>>>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users-es >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Jose Fco. Irles Dur=C3=A1 >>>>>> _______________________________________________ >>>>>> sr-users-es mailing list >>>>>> sr-users-es(a)lists.kamailio.org >>>>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users-es >>>>>> >>>>> _______________________________________________ >>> sr-users-es mailing list >>> sr-users-es(a)lists.kamailio.org >>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users-es >>> >> _______________________________________________ >> sr-users-es mailing list >> sr-users-es(a)lists.kamailio.org >> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users-es >> > _______________________________________________ > sr-users-es mailing list > sr-users-es(a)lists.kamailio.org > https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users-es > --===============0226959326== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 PGRpdiBkaXI9Imx0ciI+PGZvbnQgY29sb3I9IiMwMDAwMDAiPkhvbGEsIGJ1ZW5hcyB0YXJkZXMu PGJyPkFncmFkZXpjbyBtdWNobyBzdSBndcOtYS7CoDwvZm9udD48ZGl2Pjxmb250IGNvbG9yPSIj MDAwMDAwIj5ObyB0ZXJtaW5vIGRlIGVudGVuZGVyIHF1ZSByZWNvbWllbmRhbiBxdWUgaGFnYSBl biBlc2UgaWYuLi5xdWUgbm8gZGV2dWVsdmEgdW5hIHJlc3B1ZXN0YSB5IHF1ZSBsbyBzYXF1ZSBh dXRvbcOhdGljYW1lbnRlIGRlbCBzaXN0ZW1hPzwvZm9udD48L2Rpdj48ZGl2PjxzcGFuIHN0eWxl PSJjb2xvcjpyZ2IoODAsMCw4MCkiPsKgaWYoc3JjX2lwIT0xOTIuMTY4LjIyNC4xODQpIHs8L3Nw YW4+PGJyIHN0eWxlPSJjb2xvcjpyZ2IoODAsMCw4MCkiPjxzcGFuIHN0eWxlPSJjb2xvcjpyZ2Io ODAsMCw4MCkiPsKgIMKgIMKgIMKgIGV4aXQ7PC9zcGFuPjxiciBzdHlsZT0iY29sb3I6cmdiKDgw LDAsODApIj48c3BhbiBzdHlsZT0iY29sb3I6cmdiKDgwLDAsODApIj59PC9zcGFuPjxicj48L2Rp dj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjpyZ2IoODAsMCw4MCkiPk1lIGRveSBjdWVudGEgcXVl IHRhbWJpw6luIHBvZHLDrWEgaGFiZXIgYXBsaWNhZG8gbGFzIGNvbmRpY2lvbmVzIGVuIHVuIHNv bG8gaWYuPC9zcGFuPjwvZGl2PjxkaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6cmdiKDgwLDAs ODApIj7CoGlmKHNyY19pcCE9MTkyLjE2OC4yMjQuMTg0ICZhbXA7JmFtcDvCoDwvc3Bhbj48c3Bh biBzdHlsZT0iY29sb3I6cmdiKDgwLDAsODApIj5zdF9wb3J0IT04MDgwPC9zcGFuPjxzcGFuIHN0 eWxlPSJjb2xvcjpyZ2IoODAsMCw4MCkiPikgezwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxl PSJjb2xvcjpyZ2IoODAsMCw4MCkiPsKgIMKgIMKgIMKgIGV4aXQ7PC9zcGFuPjxiciBzdHlsZT0i Y29sb3I6cmdiKDgwLDAsODApIj48c3BhbiBzdHlsZT0iY29sb3I6cmdiKDgwLDAsODApIj59PC9z cGFuPjxicj48L2Rpdj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxmb250IGNvbG9yPSIjMDAw MDAwIj5MYSByZWdsYSBkZSBpcHRhYmxlcyBsYSB2b3kgYSB0ZW5lciBlbiBlbiBjdWVudGEgcGFy YSB1biBhbWJpZW50ZSBwcm9kdWN0aXZvLjwvZm9udD48L2Rpdj48L2Rpdj48YnI+PGRpdiBjbGFz cz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9hdHRyIj5FbCBsdW4s IDYganVuIDIwMjIgYSBsYXMgMTY6MjAsIEpvZWwgU2VycmFubyAoJmx0OzxhIGhyZWY9Im1haWx0 bzpqb2VsQHRleHRwbHVzLmNvbSI+am9lbEB0ZXh0cGx1cy5jb208L2E+Jmd0OykgZXNjcmliacOz Ojxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46 MHB4IDBweCAwcHggMC44ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7 cGFkZGluZy1sZWZ0OjFleCI+PGRpdiBkaXI9Imx0ciI+KzEgYSBsbyBxdWUgY29tZW50YSBEYXZp ZDo8YnI+PGRpdj48YnI+PC9kaXY+PGRpdj5FcyBtdWNob8KgbcOhc8KgZsOhY2lsIChoYWJsYW5k byBkZSByYXBpZGV6IHkgcmVjdXJzb3MpIHBhcmEgZWwgc2lzdGVtYSBkZXNjYXJ0YXIgdW4gcGFx dWV0ZSBhIG5pdmVsIGRlIGtlcm5lbCBxdWUgcGFyYSBsYSBhcGxpY2FjacOzbsKgYSBuaXZlbCBk ZSB1c3VhcmlvLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+U2FsdWRvcyEhPC9kaXY+PGRpdj48 YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3Rl Ij48ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21haWxfYXR0ciI+T24gTW9uLCBKdW4gNiwgMjAyMiBh dCAxMTowOCBBTSBEYXZpZCBWaWxsYXNtaWwgJmx0OzxhIGhyZWY9Im1haWx0bzpkYXZpZC52aWxs YXNtaWwud29ya0BnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5kYXZpZC52aWxsYXNtaWwud29y a0BnbWFpbC5jb208L2E+Jmd0OyB3cm90ZTo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9Imdt YWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjBweCAwcHggMHB4IDAuOGV4O2JvcmRlci1sZWZ0OjFw eCBzb2xpZCByZ2IoMjA0LDIwNCwyMDQpO3BhZGRpbmctbGVmdDoxZXgiPjxkaXYgZGlyPSJsdHIi PnF1aXrDoXMgdW4gJnF1b3Q7ZXhpdDsmcXVvdDsgZXMgbWVqb3IgYXF1w606PGRpdj48YnI+PC9k aXY+PGRpdj7CoCBpZihzcmNfaXAhPTE5Mi4xNjguMjI0LjE4NCkgezxicj48ZGl2Pjxicj48L2Rp dj48ZGl2PlkgdGFtYmnDqW4gZXMgcmVjb21lbmRhYmxlIHF1ZSBwb25nYXMgdW5hIHJlZ2xhIGVu IGlwdGFibGVzIGFsIG1lbm9zLjwvZGl2PjxkaXY+PGJyIGNsZWFyPSJhbGwiPjxkaXY+PGRpdiBk aXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGRpdj5SZWdhcmRzLDwvZGl2PjxkaXY+PGJyPjwvZGl2 PkRhdmlkIFZpbGxhc21pbDxkaXY+ZW1haWw6IDxhIGhyZWY9Im1haWx0bzpkYXZpZC52aWxsYXNt aWwud29ya0BnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5kYXZpZC52aWxsYXNtaWwud29ya0Bn bWFpbC5jb208L2E+PC9kaXY+PGRpdj5waG9uZTogKzM0NjY5NDQ4MzM3PC9kaXY+PC9kaXY+PC9k aXY+PC9kaXY+PGJyPjwvZGl2PjwvZGl2PjwvZGl2Pjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90 ZSI+PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX2F0dHIiPk9uIE1vbiwgSnVuIDYsIDIwMjIg YXQgNDoxMyBQTSBkYW1pYW4gJmx0OzxhIGhyZWY9Im1haWx0bzpjYXNzaWR5bm9AZ21haWwuY29t IiB0YXJnZXQ9Il9ibGFuayI+Y2Fzc2lkeW5vQGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj48 L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBw eCAwcHggMC44ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGlu Zy1sZWZ0OjFleCI+PGRpdiBkaXI9Imx0ciI+PGRpdj5HZW50ZSzCoDwvZGl2PjxkaXY+eWEgc2Ug ZW5jdWVudHJhIGZ1bmNpb25hbmRvLCBtdWNoYXMgZ3JhY2lhcyBwb3IgdG9kYSBsYSBjb2xhYm9y YWNpw7NuLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+TGEgY29uZi4gcXVlZMOzIGRlIGxhIHNp Z3VpZW50ZSBtYW5lcmEsIHBvciBzaSBhbGd1bm8gbGUgaW50ZXJlc2EuPC9kaXY+PGRpdj48YnI+ PC9kaXY+PGRpdj5kaXNhYmxlX3RjcD1ubzxicj50Y3BfYWNjZXB0X25vX2NsPXllczxicj48YnI+ bGlzdGVuPXRjcDpldGgwOjgwODA8YnI+bGlzdGVuPXVkcDpldGgwOjUwNjA8YnI+bGlzdGVuPXVk cDo8YSBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjUwNjAiIHRhcmdldD0iX2JsYW5rIj4xMjcuMC4w LjE6NTA2MDwvYT48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4jIyMjI01vZHVsb3MgcGFy YSBSZXF1ZXN0IFJlbG9hZCBtdHJlZSMjIyMjPGJyPmxvYWRtb2R1bGUgJnF1b3Q7eGh0dHAuc28m cXVvdDs8YnI+bG9hZG1vZHVsZSAmcXVvdDtqc29ucnBjcy5zbyZxdW90Ozxicj4jc3VkbyBhcHQt Z2V0IGluc3RhbGwga2FtYWlsaW8tanNvbi1tb2R1bGVzIzxicj5sb2FkbW9kdWxlICZxdW90O2pz b24uc28mcXVvdDs8YnI+IyMjIyMjIzxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj5ldmVudF9yb3V0 ZVt4aHR0cDpyZXF1ZXN0XSB7PGJyPsKgIGlmIShkc3RfcG9ydD09ODA4MCkgezxicj7CoCDCoCB4 bG9nKCZxdW90O0xfTk9USUNFJnF1b3Q7LCAmcXVvdDtbWEhUVFA6UkVRVUVTVF0gJHNpIEZPUkJJ RERFTiEgKioqXG4mcXVvdDspOzxicj7CoCDCoCBleGl0Ozxicj7CoCB9PGJyPsKgIGlmKHNyY19p cCE9MTkyLjE2OC4yMjQuMTg0KSB7PGJyPsKgIMKgIMKgIMKgIHhodHRwX3JlcGx5KCZxdW90OzQw MyZxdW90OywgJnF1b3Q7Rm9yYmlkZGVuJnF1b3Q7LCAmcXVvdDt0ZXh0L2h0bWwmcXVvdDssPGJy PsKgIMKgIMKgIMKgIMKgIMKgICZxdW90OyZsdDtodG1sJmd0OyZsdDtib2R5Jmd0O05vdCBhbGxv d2VkIGZyb20gJHNpJmx0Oy9ib2R5Jmd0OyZsdDsvaHRtbCZndDsmcXVvdDspOzxicj7CoCDCoCDC oCDCoCB4bG9nKCZxdW90O0xfTk9USUNFJnF1b3Q7LCAmcXVvdDtbWEhUVFA6UkVRVUVTVF0gTk9U IEFMTE9XRUQgRlJPTSAkc2khICoqKlxuJnF1b3Q7KTs8YnI+wqAgwqAgwqAgwqAgZXhpdDs8YnI+ CX08YnI+wqAgwqAgaWYgKCRodSA9fiAmcXVvdDteL210cmVlJnF1b3Q7KSB7PGJyPsKgIMKgIAkk dmFyKGRibXRyZWUpID0kKHJie2pzb24ucGFyc2UsZGJ9KTs8YnI+wqAgwqAgwqAgwqAgeGxvZygm cXVvdDtMX05PVElDRSZxdW90OywgJnF1b3Q7W1hIVFRQOlJFUVVFU1RdICRzaTokc3AgwqAtIGRi OiAkdmFyKGRibXRyZWUpIEFDQ0VQVEVEICoqKlxuJnF1b3Q7KTs8YnI+wqAgwqAgwqAgwqAgJHZh cihqc29uX3JwYyk9JiMzOTt7JnF1b3Q7anNvbnJwYyZxdW90OzogJnF1b3Q7Mi4wJnF1b3Q7LCAm cXVvdDttZXRob2QmcXVvdDs6ICZxdW90O210cmVlLnJlbG9hZCZxdW90OywgJnF1b3Q7aWQmcXVv dDs6ICZxdW90OyR2YXIoZGJtdHJlZSkmcXVvdDt9JiMzOTs7PGJyPsKgIMKgIMKgIMKgIGpzb25y cGNfZXhlYygkdmFyKGpzb25fcnBjKSk7PGJyPsKgIMKgIMKgIMKgIHhsb2coJnF1b3Q7TF9OT1RJ Q0UmcXVvdDssJnF1b3Q7anNvbnJwYyByZXNwb25zZSBjb2RlOiAkanNvbnJwbChjb2RlKSAtIHRo ZSBib2R5IGlzOiAkanNvbnJwbChib2R5KVxuJnF1b3Q7KTs8YnI+wqAgwqAgwqAgwqAgeGh0dHBf cmVwbHkoJnF1b3Q7MjAwJnF1b3Q7LCAmcXVvdDtGb3JiaWRkZW4mcXVvdDssICZxdW90O3RleHQv aHRtbCZxdW90Oyw8YnI+wqAgwqAgwqAgwqAgwqAgwqAgJnF1b3Q7Jmx0O2h0bWwmZ3Q7Jmx0O2Jv ZHkmZ3Q7T0sgLSBbJHNpOiRzcCDCoC0gZGI6ICR2YXIoZGJtdHJlZSldJmx0Oy9ib2R5Jmd0OyZs dDsvaHRtbCZndDsmcXVvdDspOzxicj7CoCDCoCDCoCDCoCA8YnI+CX0gZWxzZSB7PGJyPsKgIMKg IMKgIMKgIHhodHRwX3JlcGx5KCZxdW90OzIwMCZxdW90OywgJnF1b3Q7T0smcXVvdDssICZxdW90 O3RleHQvaHRtbCZxdW90Oyw8YnI+wqAgwqAgwqAgwqAgwqAgwqAgJnF1b3Q7Jmx0O2h0bWwmZ3Q7 Jmx0O2JvZHkmZ3Q7V3JvbmcgVVJMICRodSZsdDsvYm9keSZndDsmbHQ7L2h0bWwmZ3Q7JnF1b3Q7 KTs8YnI+wqAgwqAgwqAgwqAgeGxvZygmcXVvdDtMX05PVElDRSZxdW90OywgJnF1b3Q7W1hIVFRQ OlJFUVVFU1RdIFdST05HIFVSTCAkaHUhICoqKlxuJnF1b3Q7KTs8YnI+wqAgwqAgfTxicj7CoCDC oCByZXR1cm47PGJyPn08YnI+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5TYWx1 ZG9zLjwvZGl2PjwvZGl2Pjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+PGRpdiBkaXI9Imx0 ciIgY2xhc3M9ImdtYWlsX2F0dHIiPkVsIGx1biwgNiBqdW4gMjAyMiBhIGxhcyA5OjQ5LCBkYW1p YW4gKCZsdDs8YSBocmVmPSJtYWlsdG86Y2Fzc2lkeW5vQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxh bmsiPmNhc3NpZHlub0BnbWFpbC5jb208L2E+Jmd0OykgZXNjcmliacOzOjxicj48L2Rpdj48Ymxv Y2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAwcHggMC44 ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFl eCI+PGRpdiBkaXI9Imx0ciI+PGRpdj5EaXNjdWxwZW4sIGVuY29udHLDqSBlbCBlcnJvciBwb3Jx dWUgZWwgcXVlIG5vIGxldmFudGFiYSBlbCBwdWVydG8gODA4MCwgPGJyPjwvZGl2PjxkaXY+VGVu aWEgZW4gZWwgYXJjaGl2byBkZSBjb25maWd1cmFjacOzbiBkaXNhYmxlX3RjcD15ZXMuPC9kaXY+ PGRpdj5JcmUgcG9yIGVsIGNhbWlubyBkZWwgUmVxdWVzdCB5IHZlcsOpIHNpIG1lIGZ1bmNpb25h LjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5TYWx1ZG9zLjxicj48L2Rpdj48 L2Rpdj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJn bWFpbF9hdHRyIj5FbCBsdW4sIDYganVuIDIwMjIgYSBsYXMgOTo0MSwgZGFtaWFuICgmbHQ7PGEg aHJlZj0ibWFpbHRvOmNhc3NpZHlub0BnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5jYXNzaWR5 bm9AZ21haWwuY29tPC9hPiZndDspIGVzY3JpYmnDszo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xh c3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjBweCAwcHggMHB4IDAuOGV4O2JvcmRlci1s ZWZ0OjFweCBzb2xpZCByZ2IoMjA0LDIwNCwyMDQpO3BhZGRpbmctbGVmdDoxZXgiPjxkaXYgZGly PSJsdHIiPjxkaXY+RWggaW50ZW50YWRvIGxvIGRlbCBldmVudF9yb3V0ZVt4aHR0cDpyZXF1ZXN0 XSAgcGVybyBubyBsb2dybyBxdWUgS2FtYWlsaW8gZXNjdWNoZSBlbCBwdWVydG8gcXVlIGNvbmZp Z3VybyAoODAsIDgwODAgbyBjdWFscXVpZXIgcHVlcnRvIHF1ZSBkZWZpbmEpwqAgcGFyYSBlbnZp YXIgZWwgcmVxdWVzdCB2aWEgaHR0cC48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rp dj48ZGl2PlRlbmdvIGNvbmZpZ3VyYWRvOjwvZGl2PjxkaXY+bGlzdGVuPXRjcDpldGgwOjgwODA8 YnI+bGlzdGVuPXVkcDpldGgwOjUwNjA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlJlc3VsdGFk by48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5MaXN0ZW5pbmcgb24gPGJyPsKgIMKgIMKg IMKgIMKgIMKgIMKgdWRwOiAxNzIueC54Lng6NTA2MDxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoHVk cDogPGEgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo1MDYwIiB0YXJnZXQ9Il9ibGFuayI+MTI3LjAu MC4xOjUwNjA8L2E+PGJyPkFsaWFzZXM6IDxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoHVkcDogbG9j YWxob3N0OjUwNjA8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqB1ZHA6IExBQi1TRVJWRVI6NTA2MDxi cj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlNvbG8gbWUgZXNjdWNoYSBlbCA1MDYwLjxicj48 L2Rpdj48L2Rpdj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiIGNs YXNzPSJnbWFpbF9hdHRyIj5FbCBzw6FiLCA0IGp1biAyMDIyIGEgbGFzIDEyOjU1LCBKb3NlIEZj by4gSXJsZXMgRHVyw6EgKCZsdDs8YSBocmVmPSJtYWlsdG86am9zZWZ1QGdtYWlsLmNvbSIgdGFy Z2V0PSJfYmxhbmsiPmpvc2VmdUBnbWFpbC5jb208L2E+Jmd0OykgZXNjcmliacOzOjxicj48L2Rp dj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAw cHggMC44ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1s ZWZ0OjFleCI+PGRpdiBkaXI9Imx0ciI+T3RyYSBvcGNpw7NuIGVzIHF1ZSBoYWdhcyB1biBHRVQg YSB1biBwYXRoIGVzcGVjw61maWNvIGVuIGVswqBldmVudF9yb3V0ZVt4aHR0cDpyZXF1ZXN0XSB5 IGFow60gZWplY3V0ZXMgbG8gcXVlIHF1aWVyYXMsIGNvbW8gcG9yIGVqZW1wbG8gdW4gc2NyaXB0 IGxvY2FsIHBhcmEgaGFjZXIgbG8gcXVlIHF1aWVyYXMuPC9kaXY+PGJyPjxkaXYgY2xhc3M9Imdt YWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21haWxfYXR0ciI+RWwgc8OhYiwgNCBq dW4gMjAyMiBhIGxhcyAxNToxMywgSm9lbCBTZXJyYW5vICgmbHQ7PGEgaHJlZj0ibWFpbHRvOmpv ZWxAdGV4dHBsdXMuY29tIiB0YXJnZXQ9Il9ibGFuayI+am9lbEB0ZXh0cGx1cy5jb208L2E+Jmd0 OykgZXNjcmliacOzOjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0 eWxlPSJtYXJnaW46MHB4IDBweCAwcHggMC44ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigy MDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFleCI+PGRpdiBkaXI9ImF1dG8iPlRhbWJpw6luIHB1 ZWRlcyB1c2FyIGVsIHByb3BpbyBqc29ucnBjc19leGVjKCkgeSBoYWNlciBlbCByZWxvYWQgZGVz ZGUgbGEgY29uZmlnIGN1YW5kbyB0ZSBkZSBsYSBnYW5hLsKgPC9kaXY+PGRpdj48YnI+PGRpdiBj bGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9hdHRyIj5PbiBG cmksIEp1biAzLCAyMDIyIGF0IDE1OjE1IERhdmlkIFZpbGxhc21pbCAmbHQ7PGEgaHJlZj0ibWFp bHRvOmRhdmlkLnZpbGxhc21pbC53b3JrQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmRhdmlk LnZpbGxhc21pbC53b3JrQGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj48L2Rpdj48YmxvY2tx dW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAwcHggMC44ZXg7 Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFleCI+ PGRpdiBkaXI9ImF1dG8iPkVzbyBsbyBwdWVkZXMgaGFjZXIgY29uIHVuIGFyY2hpdm8gZGUgdGV4 dG8gc2ltcGxlLiBLYW1haWxpbyBwdWVkZSBtb25pdG9yaXphciBlbCBhcmNoaXZvIHkgcmVjYXJn YXJsbyBhdXRvbcOhdGljYW1lbnRlLjwvZGl2PjxkaXYgZGlyPSJhdXRvIj5TaSBubywgcHVlZGVz IGhhY2VyIHVuIHVuIHRpbWVyIHF1ZSBkaXNwYXJlIHVuIHRyaWdnZXIgeSByZWNhcmdhcmxvLjwv ZGl2PjxkaXY+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRyIiBjbGFz cz0iZ21haWxfYXR0ciI+T24gRnJpLCAzIEp1biAyMDIyIGF0IDIwOjM4LCBkYW1pYW4gJmx0Ozxh IGhyZWY9Im1haWx0bzpjYXNzaWR5bm9AZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+Y2Fzc2lk eW5vQGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0i Z21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAwcHggMC44ZXg7Ym9yZGVyLWxlZnQ6 MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFleCI+PGRpdiBkaXI9Imx0 ciI+PGRpdj5Ib2xhLCBidWVuYXMgdGFyZGVzLjxicj48L2Rpdj48ZGl2PlRlbmdvIHVuYSBkdWRh LCBlc3Blcm8gcXVlIHB1ZWRhbiBvcmllbnRhcm1lIG8gYXl1ZGFybWUuPGJyPjwvZGl2PjxkaXY+ VGVuZ28gbW9udGFkbyB1biBTaXN0ZW1hIGRlIFJlZGlyZWN0IFNlcnZlciBjb24gS2FtYWlsaW8s IGZ1bmNpb25hbmRvIE9LLjxicj48L2Rpdj48ZGl2PkVzdGUgc2VydmVyIGxlZSB1bmEgdGFibGEg cXVlIHNhbGUgZGUgdW4gTVlTUUwgeSBjb24gZWwgbW9kdWxvIG10cmVlIGxhIGNhcmdvIGVuIG1l bW9yaWEuPC9kaXY+PGRpdj5DdWFuZG8gaGFnbyBtb2RpZmljYWljb25lcyBlbiBsYSBEQiByZWZy ZXNjbyBsb3MgZGF0b3MgZW4gbWVtb3JpYSBjb24gZWwgY29tYW5kbzoga2FtY21kIG10cmVlLnJl bG9hZCBteXRhYmxhLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+QWhvcmEKIGJpZW4sIGhheSBh bGd1bmEgZm9ybWEgZGUgcXVlIGhhZ2EgZXN0ZSByZWxvYWQgZW4gZm9ybWEgcmVtb3RhLiBlcyAK ZGVjaXIsIG5vIHRlbmVyIHF1ZSBjb25lY3Rhcm1lIGFsIHNlcnZlciBwb3Igc3NoIHkgdGlyYXIg ZWwgY29tYW5kbyAKbG9jYWxtZW50ZS48L2Rpdj48ZGl2PkhheSBhbGd1bmEgcG9zaWJpbGlkYWQg ZGUgcXVlIGthbWFpbGlvIGVzdGUgZXNjdWNoYW5kbyB5IGhhY2VybGUgZWwgcmVxdWVzdCBkZSBy ZWxvYWQ/PC9kaXY+PGRpdj5TaSBsbyBoYXksIGN1ZW50YW4gY29uIGFsZ3VuIGVqZW1wbG8gcXVl IHB1ZWRlIHV0aWxpemFyIGRlIHJlZmVyZW5jaWE/PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5T YWx1ZG9zLjwvZGl2PjwvZGl2PgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXzxicj4Kc3ItdXNlcnMtZXMgbWFpbGluZyBsaXN0PGJyPgo8YSBocmVmPSJtYWls dG86c3ItdXNlcnMtZXNAbGlzdHMua2FtYWlsaW8ub3JnIiB0YXJnZXQ9Il9ibGFuayI+c3ItdXNl cnMtZXNAbGlzdHMua2FtYWlsaW8ub3JnPC9hPjxicj4KPGEgaHJlZj0iaHR0cHM6Ly9saXN0cy5r YW1haWxpby5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3NyLXVzZXJzLWVzIiByZWw9Im5v cmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xpc3RzLmthbWFpbGlvLm9yZy9jZ2kt YmluL21haWxtYW4vbGlzdGluZm8vc3ItdXNlcnMtZXM8L2E+PGJyPgo8L2Jsb2NrcXVvdGU+PC9k aXY+PC9kaXY+LS0gPGJyPjxkaXYgZGlyPSJsdHIiPjxkaXYgZGlyPSJsdHIiPjxkaXY+UmVnYXJk cyw8L2Rpdj48ZGl2Pjxicj48L2Rpdj5EYXZpZCBWaWxsYXNtaWw8ZGl2PmVtYWlsOiA8YSBocmVm PSJtYWlsdG86ZGF2aWQudmlsbGFzbWlsLndvcmtAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+ ZGF2aWQudmlsbGFzbWlsLndvcmtAZ21haWwuY29tPC9hPjwvZGl2PjxkaXY+cGhvbmU6ICszNDY2 OTQ0ODMzNzwvZGl2PjwvZGl2PjwvZGl2PgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXzxicj4Kc3ItdXNlcnMtZXMgbWFpbGluZyBsaXN0PGJyPgo8YSBocmVm PSJtYWlsdG86c3ItdXNlcnMtZXNAbGlzdHMua2FtYWlsaW8ub3JnIiB0YXJnZXQ9Il9ibGFuayI+ c3ItdXNlcnMtZXNAbGlzdHMua2FtYWlsaW8ub3JnPC9hPjxicj4KPGEgaHJlZj0iaHR0cHM6Ly9s aXN0cy5rYW1haWxpby5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3NyLXVzZXJzLWVzIiBy ZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xpc3RzLmthbWFpbGlvLm9y Zy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vc3ItdXNlcnMtZXM8L2E+PGJyPgo8L2Jsb2NrcXVv dGU+PC9kaXY+PC9kaXY+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fPGJyPgpzci11c2Vycy1lcyBtYWlsaW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpz ci11c2Vycy1lc0BsaXN0cy5rYW1haWxpby5vcmciIHRhcmdldD0iX2JsYW5rIj5zci11c2Vycy1l c0BsaXN0cy5rYW1haWxpby5vcmc8L2E+PGJyPgo8YSBocmVmPSJodHRwczovL2xpc3RzLmthbWFp bGlvLm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vc3ItdXNlcnMtZXMiIHJlbD0ibm9yZWZl cnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vbGlzdHMua2FtYWlsaW8ub3JnL2NnaS1iaW4v bWFpbG1hbi9saXN0aW5mby9zci11c2Vycy1lczwvYT48YnI+CjwvYmxvY2txdW90ZT48L2Rpdj48 YnIgY2xlYXI9ImFsbCI+PGRpdj48YnI+PC9kaXY+LS0gPGJyPjxkaXYgZGlyPSJsdHIiPkpvc2Ug RmNvLiBJcmxlcyBEdXLDoTwvZGl2PgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXzxicj4Kc3ItdXNlcnMtZXMgbWFpbGluZyBsaXN0PGJyPgo8YSBocmVmPSJt YWlsdG86c3ItdXNlcnMtZXNAbGlzdHMua2FtYWlsaW8ub3JnIiB0YXJnZXQ9Il9ibGFuayI+c3It dXNlcnMtZXNAbGlzdHMua2FtYWlsaW8ub3JnPC9hPjxicj4KPGEgaHJlZj0iaHR0cHM6Ly9saXN0 cy5rYW1haWxpby5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3NyLXVzZXJzLWVzIiByZWw9 Im5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xpc3RzLmthbWFpbGlvLm9yZy9j Z2ktYmluL21haWxtYW4vbGlzdGluZm8vc3ItdXNlcnMtZXM8L2E+PGJyPgo8L2Jsb2NrcXVvdGU+ PC9kaXY+CjwvYmxvY2txdW90ZT48L2Rpdj4KPC9ibG9ja3F1b3RlPjwvZGl2PgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj4Kc3ItdXNlcnMtZXMgbWFp bGluZyBsaXN0PGJyPgo8YSBocmVmPSJtYWlsdG86c3ItdXNlcnMtZXNAbGlzdHMua2FtYWlsaW8u b3JnIiB0YXJnZXQ9Il9ibGFuayI+c3ItdXNlcnMtZXNAbGlzdHMua2FtYWlsaW8ub3JnPC9hPjxi cj4KPGEgaHJlZj0iaHR0cHM6Ly9saXN0cy5rYW1haWxpby5vcmcvY2dpLWJpbi9tYWlsbWFuL2xp c3RpbmZvL3NyLXVzZXJzLWVzIiByZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRw czovL2xpc3RzLmthbWFpbGlvLm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vc3ItdXNlcnMt ZXM8L2E+PGJyPgo8L2Jsb2NrcXVvdGU+PC9kaXY+Cl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fPGJyPgpzci11c2Vycy1lcyBtYWlsaW5nIGxpc3Q8YnI+Cjxh IGhyZWY9Im1haWx0bzpzci11c2Vycy1lc0BsaXN0cy5rYW1haWxpby5vcmciIHRhcmdldD0iX2Js YW5rIj5zci11c2Vycy1lc0BsaXN0cy5rYW1haWxpby5vcmc8L2E+PGJyPgo8YSBocmVmPSJodHRw czovL2xpc3RzLmthbWFpbGlvLm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vc3ItdXNlcnMt ZXMiIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vbGlzdHMua2FtYWls aW8ub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9zci11c2Vycy1lczwvYT48YnI+CjwvYmxv Y2txdW90ZT48L2Rpdj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX188YnI+CnNyLXVzZXJzLWVzIG1haWxpbmcgbGlzdDxicj4KPGEgaHJlZj0ibWFpbHRvOnNy LXVzZXJzLWVzQGxpc3RzLmthbWFpbGlvLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPnNyLXVzZXJzLWVz QGxpc3RzLmthbWFpbGlvLm9yZzwvYT48YnI+CjxhIGhyZWY9Imh0dHBzOi8vbGlzdHMua2FtYWls aW8ub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9zci11c2Vycy1lcyIgcmVsPSJub3JlZmVy cmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9saXN0cy5rYW1haWxpby5vcmcvY2dpLWJpbi9t YWlsbWFuL2xpc3RpbmZvL3NyLXVzZXJzLWVzPC9hPjxicj4KPC9ibG9ja3F1b3RlPjwvZGl2Pgo= --===============0226959326==--