----------------------------------------------------------------------------- | ---- [ BLACKCLOWNS MAGAZINE - ISSUE 01 ] ------------ [ Article 09 ] ---- | |-----------------------------------------------------------------------------| | [ Fabrication de savons a Paper Street 1/2] | | [ Swearengen ] | ----------------------------------------------------------------------------- Les savons, c'est bon. Ça fait 3000 ans qu'on s'en sert, et c'est toujours aussi bien. Bref les intros ça me fait chier, surtout la :) Je vous livre ici 2 tools, en vrac, pas de grands discours, sans doc, sans commentaire, ça vous fera les pieds tiens, mais ça peut vous être utile un de ces jours, sur un serveur owned par des marocains, ou encore pour récupérer un binaire en mémoire avec ruby. --- Ankou --- Dans les traditions bretonnes, l'Ankou est la personnification de la mort, plus exactement de son serviteur. Détecter les rootkits ne résultent pas d'une solution unique, plusieurs doivent être mises en concurrence pour pouvoir obtenir un résultat concluant a la presen ce ou non d'un rootkit. Évitons la méthode de récupération idiotes de traces en userland laisse par tel ou tel rootkit public, comme le fait si bien chkrootkit ou rkunter. Des solutions comme le chucksum du kernel en mémoire est intéressante mais pas suffisante, surtout en cas de faux positifs. Elle doit et devra toujours être combinée a d'autres techniques. Un de ces techniques est la détection par le temps. Le but même d'un rootkit est de pouvoir cache certaines parties du systèmes. Jusqu'à présent, celui ci a besoin de placer des hooks a certains points (les appels systèmes, certaines fonctions intéressantes du kernel, idt, page fault handler, tlb, etc ...). Par ce fait même, le temps de traitement X d'un tache Y s'allonge d'une valeur Z. Ex Schéma : avant : [[[ SYSCALL X ]]] après : [[[ SYSCALL X [[[ HOOK ]]] ]]] ou [[[ SYSCALL X ]]] [[[ FONCTION INTERNE [[[ HOOK ]]] etc... Il suffit donc de mesurer le temps de réponse de certains appels système sur un système saint, et de le comparer lors de la phase d'analyse. Cette idée n'est pas vraiment nouvelle, un poc avait été publie au sstic en 2004, voir http://actes.sstic.org/SSTIC04/Fingerprinting_integrite_par_timing/ Lis bien ce papier, il te dira tout ce qu'il faut savoir la dessus. Ce qui est plus intéressant c'est d'avoir un tool pour le faire. Allez va t'en donc uudecode ce qui vient la (note pour ceux qui liront le code, que c'est assez simple de rajouter des nouveaux tests, surtout bien utiliser les fonctions de la libc et non directement un appel au syscall, sinon vous pourriez ne pas voir un détournement de celle ci ) : begin-base64 644 ankou.tar YW5rb3UvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAADAwMDA3NTUAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAwMDAw ADAwMDAwMDAwMDAwADA3MDIyACAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABhbmtvdS9MSUNFTlNFAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwMDAwADAw MDAwMDAAMDAwMDAwNDMxMDMAMDAwMDAwMDAwMDAAMDEwMDMwACAwAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHVzdGFyICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJICAgIEdOVSBH RU5FUkFMIFBVQkxJQyBMSUNFTlNFCgkJICAgICAgIFZlcnNpb24gMiwgSnVu ZSAxOTkxCgogQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLiwKIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm dGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKIEV2ZXJ5b25l IGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGlt IGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdp bmcgaXQgaXMgbm90IGFsbG93ZWQuCgoJCQkgICAgUHJlYW1ibGUKCiAgVGhl IGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0 YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQu ICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNl IGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hh cmUgYW5kIGNoYW5nZSBmcmVlCnNvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhl IHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCkdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRoZSBG cmVlIFNvZnR3YXJlCkZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55 IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KdXNpbmcg aXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gc29m dHdhcmUgaXMgY292ZXJlZCBieQp0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bwp5 b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBz b2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJp Y2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVk IHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRp c3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2Ug Zm9yCnRoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2Vp dmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAppZiB5b3Ugd2FudCBpdCwg dGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNl cyBvZiBpdAppbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtu b3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCgogIFRvIHByb3RlY3QgeW91 ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBm b3JiaWQKYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBh c2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgpUaGVzZSByZXN0cmlj dGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBm b3IgeW91IGlmIHlvdQpkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdh cmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCgogIEZvciBleGFtcGxlLCBpZiB5 b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRo ZXIKZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVj aXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0CnlvdSBoYXZlLiAgWW91IG11 c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBn ZXQgdGhlCnNvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0 aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKcmlnaHRzLgoKICBXZSBw cm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJp Z2h0IHRoZSBzb2Z0d2FyZSwgYW5kCigyKSBvZmZlciB5b3UgdGhpcyBsaWNl bnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHks CmRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCgogIEFs c28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdl IHdhbnQgdG8gbWFrZSBjZXJ0YWluCnRoYXQgZXZlcnlvbmUgdW5kZXJzdGFu ZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCnNv ZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVv bmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQp3YW50IGl0cyByZWNpcGllbnRz IHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdp bmFsLCBzbwp0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVy cyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAphdXRob3JzJyBy ZXB1dGF0aW9ucy4KCiAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0 aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKcGF0ZW50cy4gIFdl IHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3Jz IG9mIGEgZnJlZQpwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBw YXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlCnByb2dyYW0g cHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBp dCBjbGVhciB0aGF0IGFueQpwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3Ig ZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgoK ICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWlu ZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LgoKCQkg ICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENP TkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJ Q0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBhcHBsaWVzIHRvIGFueSBwcm9n cmFtIG9yIG90aGVyIHdvcmsgd2hpY2ggY29udGFpbnMKYSBub3RpY2UgcGxh Y2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyIHNheWluZyBpdCBtYXkgYmUg ZGlzdHJpYnV0ZWQKdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZS4gIFRoZSAiUHJvZ3JhbSIsIGJlbG93LApyZWZlcnMg dG8gYW55IHN1Y2ggcHJvZ3JhbSBvciB3b3JrLCBhbmQgYSAid29yayBiYXNl ZCBvbiB0aGUgUHJvZ3JhbSIKbWVhbnMgZWl0aGVyIHRoZSBQcm9ncmFtIG9y IGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIgY29weXJpZ2h0IGxhdzoKdGhh dCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBQcm9ncmFtIG9y IGEgcG9ydGlvbiBvZiBpdCwKZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9k aWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXIKbGFu Z3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzIGluY2x1ZGVk IHdpdGhvdXQgbGltaXRhdGlvbiBpbgp0aGUgdGVybSAibW9kaWZpY2F0aW9u Ii4pICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4KCkFj dGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5k IG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNl OyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVu bmluZyB0aGUgUHJvZ3JhbSBpcyBub3QgcmVzdHJpY3RlZCwgYW5kIHRoZSBv dXRwdXQgZnJvbSB0aGUgUHJvZ3JhbQppcyBjb3ZlcmVkIG9ubHkgaWYgaXRz IGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkIG9uIHRoZQpQcm9n cmFtIChpbmRlcGVuZGVudCBvZiBoYXZpbmcgYmVlbiBtYWRlIGJ5IHJ1bm5p bmcgdGhlIFByb2dyYW0pLgpXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRz IG9uIHdoYXQgdGhlIFByb2dyYW0gZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5 IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3Jh bSdzCnNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVk aXVtLCBwcm92aWRlZCB0aGF0IHlvdQpjb25zcGljdW91c2x5IGFuZCBhcHBy b3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRl CmNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7 IGtlZXAgaW50YWN0IGFsbCB0aGUKbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRo aXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5 OwphbmQgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgUHJvZ3Jh bSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlCmFsb25nIHdpdGggdGhlIFByb2dy YW0uCgpZb3UgbWF5IGNoYXJnZSBhIGZlZSBmb3IgdGhlIHBoeXNpY2FsIGFj dCBvZiB0cmFuc2ZlcnJpbmcgYSBjb3B5LCBhbmQKeW91IG1heSBhdCB5b3Vy IG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdl IGZvciBhIGZlZS4KCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9y IGNvcGllcyBvZiB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbgpvZiBpdCwg dGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgYW5k IGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdv cmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlk ZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25z OgoKICAgIGEpIFlvdSBtdXN0IGNhdXNlIHRoZSBtb2RpZmllZCBmaWxlcyB0 byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgc3RhdGluZyB0aGF0IHlv dSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5n ZS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSBhbnkgd29yayB0aGF0IHlvdSBk aXN0cmlidXRlIG9yIHB1Ymxpc2gsIHRoYXQgaW4KICAgIHdob2xlIG9yIGlu IHBhcnQgY29udGFpbnMgb3IgaXMgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFt IG9yIGFueQogICAgcGFydCB0aGVyZW9mLCB0byBiZSBsaWNlbnNlZCBhcyBh IHdob2xlIGF0IG5vIGNoYXJnZSB0byBhbGwgdGhpcmQKICAgIHBhcnRpZXMg dW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBjKSBJZiB0 aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3JtYWxseSByZWFkcyBjb21tYW5kcyBp bnRlcmFjdGl2ZWx5CiAgICB3aGVuIHJ1biwgeW91IG11c3QgY2F1c2UgaXQs IHdoZW4gc3RhcnRlZCBydW5uaW5nIGZvciBzdWNoCiAgICBpbnRlcmFjdGl2 ZSB1c2UgaW4gdGhlIG1vc3Qgb3JkaW5hcnkgd2F5LCB0byBwcmludCBvciBk aXNwbGF5IGFuCiAgICBhbm5vdW5jZW1lbnQgaW5jbHVkaW5nIGFuIGFwcHJv cHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGEKICAgIG5vdGljZSB0aGF0 IHRoZXJlIGlzIG5vIHdhcnJhbnR5IChvciBlbHNlLCBzYXlpbmcgdGhhdCB5 b3UgcHJvdmlkZQogICAgYSB3YXJyYW50eSkgYW5kIHRoYXQgdXNlcnMgbWF5 IHJlZGlzdHJpYnV0ZSB0aGUgcHJvZ3JhbSB1bmRlcgogICAgdGhlc2UgY29u ZGl0aW9ucywgYW5kIHRlbGxpbmcgdGhlIHVzZXIgaG93IHRvIHZpZXcgYSBj b3B5IG9mIHRoaXMKICAgIExpY2Vuc2UuICAoRXhjZXB0aW9uOiBpZiB0aGUg UHJvZ3JhbSBpdHNlbGYgaXMgaW50ZXJhY3RpdmUgYnV0CiAgICBkb2VzIG5v dCBub3JtYWxseSBwcmludCBzdWNoIGFuIGFubm91bmNlbWVudCwgeW91ciB3 b3JrIGJhc2VkIG9uCiAgICB0aGUgUHJvZ3JhbSBpcyBub3QgcmVxdWlyZWQg dG8gcHJpbnQgYW4gYW5ub3VuY2VtZW50LikKClRoZXNlIHJlcXVpcmVtZW50 cyBhcHBseSB0byB0aGUgbW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiAgSWYK aWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRl cml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwKYW5kIGNhbiBiZSByZWFzb25hYmx5 IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGlu CnRoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQgaXRzIHRlcm1z LCBkbyBub3QgYXBwbHkgdG8gdGhvc2UKc2VjdGlvbnMgd2hlbiB5b3UgZGlz dHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiAgQnV0IHdoZW4geW91 CmRpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBhIHdo b2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZApvbiB0aGUgUHJvZ3JhbSwgdGhl IGRpc3RyaWJ1dGlvbiBvZiB0aGUgd2hvbGUgbXVzdCBiZSBvbiB0aGUgdGVy bXMgb2YKdGhpcyBMaWNlbnNlLCB3aG9zZSBwZXJtaXNzaW9ucyBmb3Igb3Ro ZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKZW50aXJlIHdob2xlLCBhbmQg dGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hv IHdyb3RlIGl0LgoKVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhp cyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0CnlvdXIgcmln aHRzIHRvIHdvcmsgd3JpdHRlbiBlbnRpcmVseSBieSB5b3U7IHJhdGhlciwg dGhlIGludGVudCBpcyB0bwpleGVyY2lzZSB0aGUgcmlnaHQgdG8gY29udHJv bCB0aGUgZGlzdHJpYnV0aW9uIG9mIGRlcml2YXRpdmUgb3IKY29sbGVjdGl2 ZSB3b3JrcyBiYXNlZCBvbiB0aGUgUHJvZ3JhbS4KCkluIGFkZGl0aW9uLCBt ZXJlIGFnZ3JlZ2F0aW9uIG9mIGFub3RoZXIgd29yayBub3QgYmFzZWQgb24g dGhlIFByb2dyYW0Kd2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsg YmFzZWQgb24gdGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mCmEgc3RvcmFn ZSBvciBkaXN0cmlidXRpb24gbWVkaXVtIGRvZXMgbm90IGJyaW5nIHRoZSBv dGhlciB3b3JrIHVuZGVyCnRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgog IDMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAo b3IgYSB3b3JrIGJhc2VkIG9uIGl0LAp1bmRlciBTZWN0aW9uIDIpIGluIG9i amVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB1bmRlciB0aGUgdGVybXMg b2YKU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBh bHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgoKICAgIGEpIEFjY29tcGFu eSBpdCB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hpbmUt cmVhZGFibGUKICAgIHNvdXJjZSBjb2RlLCB3aGljaCBtdXN0IGJlIGRpc3Ry aWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucwogICAgMSBhbmQg MiBhYm92ZSBvbiBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0 d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgYikgQWNjb21wYW55IGl0IHdp dGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUK ICAgIHllYXJzLCB0byBnaXZlIGFueSB0aGlyZCBwYXJ0eSwgZm9yIGEgY2hh cmdlIG5vIG1vcmUgdGhhbiB5b3VyCiAgICBjb3N0IG9mIHBoeXNpY2FsbHkg cGVyZm9ybWluZyBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNvbXBsZXRlCiAg ICBtYWNoaW5lLXJlYWRhYmxlIGNvcHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcg c291cmNlIGNvZGUsIHRvIGJlCiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUg dGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bQog ICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7 IG9yLAoKICAgIGMpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBpbmZvcm1hdGlv biB5b3UgcmVjZWl2ZWQgYXMgdG8gdGhlIG9mZmVyCiAgICB0byBkaXN0cmli dXRlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUuICAoVGhpcyBhbHRlcm5h dGl2ZSBpcwogICAgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJjaWFsIGRp c3RyaWJ1dGlvbiBhbmQgb25seSBpZiB5b3UKICAgIHJlY2VpdmVkIHRoZSBw cm9ncmFtIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB3aXRo IHN1Y2gKICAgIGFuIG9mZmVyLCBpbiBhY2NvcmQgd2l0aCBTdWJzZWN0aW9u IGIgYWJvdmUuKQoKVGhlIHNvdXJjZSBjb2RlIGZvciBhIHdvcmsgbWVhbnMg dGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrIGZvcgptYWtpbmcgbW9k aWZpY2F0aW9ucyB0byBpdC4gIEZvciBhbiBleGVjdXRhYmxlIHdvcmssIGNv bXBsZXRlIHNvdXJjZQpjb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUg Zm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQphc3NvY2lh dGVkIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzLCBwbHVzIHRoZSBzY3Jp cHRzIHVzZWQgdG8KY29udHJvbCBjb21waWxhdGlvbiBhbmQgaW5zdGFsbGF0 aW9uIG9mIHRoZSBleGVjdXRhYmxlLiAgSG93ZXZlciwgYXMgYQpzcGVjaWFs IGV4Y2VwdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQg bm90IGluY2x1ZGUKYW55dGhpbmcgdGhhdCBpcyBub3JtYWxseSBkaXN0cmli dXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkKZm9ybSkgd2l0aCB0 aGUgbWFqb3IgY29tcG9uZW50cyAoY29tcGlsZXIsIGtlcm5lbCwgYW5kIHNv IG9uKSBvZiB0aGUKb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGljaCB0aGUgZXhl Y3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQKaXRzZWxmIGFj Y29tcGFuaWVzIHRoZSBleGVjdXRhYmxlLgoKSWYgZGlzdHJpYnV0aW9uIG9m IGV4ZWN1dGFibGUgb3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmlu ZwphY2Nlc3MgdG8gY29weSBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhl biBvZmZlcmluZyBlcXVpdmFsZW50CmFjY2VzcyB0byBjb3B5IHRoZSBzb3Vy Y2UgY29kZSBmcm9tIHRoZSBzYW1lIHBsYWNlIGNvdW50cyBhcwpkaXN0cmli dXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBw YXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBh bG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNC4gWW91IG1heSBub3Qg Y29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIHRoZSBQ cm9ncmFtCmV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhp cyBMaWNlbnNlLiAgQW55IGF0dGVtcHQKb3RoZXJ3aXNlIHRvIGNvcHksIG1v ZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlz CnZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIg cmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4KSG93ZXZlciwgcGFydGllcyB3 aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsIG9yIHJpZ2h0cywgZnJvbSB5b3Ug dW5kZXIKdGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5z ZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKcGFydGllcyByZW1haW4g aW4gZnVsbCBjb21wbGlhbmNlLgoKICA1LiBZb3UgYXJlIG5vdCByZXF1aXJl ZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QK c2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3Ug cGVybWlzc2lvbiB0byBtb2RpZnkgb3IKZGlzdHJpYnV0ZSB0aGUgUHJvZ3Jh bSBvciBpdHMgZGVyaXZhdGl2ZSB3b3Jrcy4gIFRoZXNlIGFjdGlvbnMgYXJl CnByb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMg TGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1 dGluZyB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlClBy b2dyYW0pLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMg TGljZW5zZSB0byBkbyBzbywgYW5kCmFsbCBpdHMgdGVybXMgYW5kIGNvbmRp dGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcK dGhlIFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuCgogIDYuIEVhY2gg dGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29y ayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHRoZSByZWNpcGllbnQgYXV0b21h dGljYWxseSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUKb3JpZ2luYWwg bGljZW5zb3IgdG8gY29weSwgZGlzdHJpYnV0ZSBvciBtb2RpZnkgdGhlIFBy b2dyYW0gc3ViamVjdCB0bwp0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4g IFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgpyZXN0cmljdGlvbnMg b24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3Jh bnRlZCBoZXJlaW4uCllvdSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZv cmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHRvCnRoaXMgTGlj ZW5zZS4KCiAgNy4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBq dWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudAppbmZyaW5nZW1lbnQg b3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVu dCBpc3N1ZXMpLApjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hl dGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCm90aGVyd2lzZSkg dGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5z ZSwgdGhleSBkbyBub3QKZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25z IG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKZGlzdHJpYnV0ZSBz byBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlv bnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50 IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91Cm1heSBu b3QgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBhdCBhbGwuICBGb3IgZXhhbXBs ZSwgaWYgYSBwYXRlbnQKbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFs dHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBieQphbGwg dGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0 bHkgdGhyb3VnaCB5b3UsIHRoZW4KdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBz YXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bwpy ZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9n cmFtLgoKSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQg aW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyCmFueSBwYXJ0aWN1bGFy IGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMg aW50ZW5kZWQgdG8KYXBwbHkgYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUg aXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIKY2lyY3Vtc3RhbmNlcy4K Ckl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5k dWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9w ZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBh bnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVy cG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUg c29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSwgd2hpY2ggaXMKaW1wbGVt ZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9w bGUgaGF2ZSBtYWRlCmdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdp ZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKdGhyb3VnaCB0aGF0 IHN5c3RlbSBpbiByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9u IG9mIHRoYXQKc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9y IHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwp0byBkaXN0cmli dXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBs aWNlbnNlZSBjYW5ub3QKaW1wb3NlIHRoYXQgY2hvaWNlLgoKVGhpcyBzZWN0 aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0 IGlzIGJlbGlldmVkIHRvCmJlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qg b2YgdGhpcyBMaWNlbnNlLgoKICA4LiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFu ZC9vciB1c2Ugb2YgdGhlIFByb2dyYW0gaXMgcmVzdHJpY3RlZCBpbgpjZXJ0 YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmln aHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRl ciB3aG8gcGxhY2VzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgTGljZW5zZQpt YXkgYWRkIGFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24g bGltaXRhdGlvbiBleGNsdWRpbmcKdGhvc2UgY291bnRyaWVzLCBzbyB0aGF0 IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZwpj b3VudHJpZXMgbm90IHRodXMgZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRo aXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMKdGhlIGxpbWl0YXRpb24gYXMgaWYg d3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDkuIFRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxpc2ggcmV2aXNl ZCBhbmQvb3IgbmV3IHZlcnNpb25zCm9mIHRoZSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMg d2lsbApiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJz aW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8KYWRkcmVzcyBuZXcg cHJvYmxlbXMgb3IgY29uY2VybnMuCgpFYWNoIHZlcnNpb24gaXMgZ2l2ZW4g YSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZSBQcm9n cmFtCnNwZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5z ZSB3aGljaCBhcHBsaWVzIHRvIGl0IGFuZCAiYW55CmxhdGVyIHZlcnNpb24i LCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMg YW5kIGNvbmRpdGlvbnMKZWl0aGVyIG9mIHRoYXQgdmVyc2lvbiBvciBvZiBh bnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKU29mdHdh cmUgRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNp ZnkgYSB2ZXJzaW9uIG51bWJlciBvZgp0aGlzIExpY2Vuc2UsIHlvdSBtYXkg Y2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlCkZvdW5kYXRpb24uCgogIDEwLiBJZiB5b3Ugd2lzaCB0byBp bmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgUHJvZ3JhbSBpbnRvIG90aGVyIGZy ZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJl IGRpZmZlcmVudCwgd3JpdGUgdG8gdGhlIGF1dGhvcgp0byBhc2sgZm9yIHBl cm1pc3Npb24uICBGb3Igc29mdHdhcmUgd2hpY2ggaXMgY29weXJpZ2h0ZWQg YnkgdGhlIEZyZWUKU29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2Ugc29tZXRpbWVzCm1ha2Ug ZXhjZXB0aW9ucyBmb3IgdGhpcy4gIE91ciBkZWNpc2lvbiB3aWxsIGJlIGd1 aWRlZCBieSB0aGUgdHdvIGdvYWxzCm9mIHByZXNlcnZpbmcgdGhlIGZyZWUg c3RhdHVzIG9mIGFsbCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2Fy ZSBhbmQKb2YgcHJvbW90aW5nIHRoZSBzaGFyaW5nIGFuZCByZXVzZSBvZiBz b2Z0d2FyZSBnZW5lcmFsbHkuCgoJCQkgICAgTk8gV0FSUkFOVFkKCiAgMTEu IEJFQ0FVU0UgVEhFIFBST0dSQU0gSVMgTElDRU5TRUQgRlJFRSBPRiBDSEFS R0UsIFRIRVJFIElTIE5PIFdBUlJBTlRZCkZPUiBUSEUgUFJPR1JBTSwgVE8g VEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuICBFWENF UFQgV0hFTgpPVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlS SUdIVCBIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTClBST1ZJREUgVEhF IFBST0dSQU0gIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFSVRIRVIgRVhQUkVTU0VECk9SIElNUExJRUQsIElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCk1F UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMKVE8gVEhFIFFVQUxJVFkgQU5E IFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFNIElTIFdJVEggWU9VLiAgU0hP VUxEIFRIRQpQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBU SEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywKUkVQQUlSIE9S IENPUlJFQ1RJT04uCgogIDEyLiBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlS RUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcK V0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZ IFdITyBNQVkgTU9ESUZZIEFORC9PUgpSRURJU1RSSUJVVEUgVEhFIFBST0dS QU0gQVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBE QU1BR0VTLApJTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElOQ0lE RU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcKT1VUIE9G IFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRApUTyBMT1NTIE9GIERBVEEgT1IgREFU QSBCRUlORyBSRU5ERVJFRCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlO RUQgQlkKWU9VIE9SIFRISVJEIFBBUlRJRVMgT1IgQSBGQUlMVVJFIE9GIFRI RSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIKUFJPR1JBTVMp LCBFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVO IEFEVklTRUQgT0YgVEhFClBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4K CgkJICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCgkgICAgSG93 IHRvIEFwcGx5IFRoZXNlIFRlcm1zIHRvIFlvdXIgTmV3IFByb2dyYW1zCgog IElmIHlvdSBkZXZlbG9wIGEgbmV3IHByb2dyYW0sIGFuZCB5b3Ugd2FudCBp dCB0byBiZSBvZiB0aGUgZ3JlYXRlc3QKcG9zc2libGUgdXNlIHRvIHRoZSBw dWJsaWMsIHRoZSBiZXN0IHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdG8gbWFr ZSBpdApmcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNhbiByZWRpc3Ry aWJ1dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4KCiAgVG8gZG8g c28sIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIHByb2dy YW0uICBJdCBpcyBzYWZlc3QKdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0 IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252 ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBz aG91bGQgaGF2ZSBhdCBsZWFzdAp0aGUgImNvcHlyaWdodCIgbGluZSBhbmQg YSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4K CiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5k IGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0 IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YgdGhlIExpY2Vuc2UsIG9yCiAgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgog ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKICAgIHdpdGggdGhpcyBw cm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4sCiAgICA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgoKQWxzbyBhZGQg aW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9u aWMgYW5kIHBhcGVyIG1haWwuCgpJZiB0aGUgcHJvZ3JhbSBpcyBpbnRlcmFj dGl2ZSwgbWFrZSBpdCBvdXRwdXQgYSBzaG9ydCBub3RpY2UgbGlrZSB0aGlz CndoZW4gaXQgc3RhcnRzIGluIGFuIGludGVyYWN0aXZlIG1vZGU6CgogICAg R25vbW92aXNpb24gdmVyc2lvbiA2OSwgQ29weXJpZ2h0IChDKSB5ZWFyIG5h bWUgb2YgYXV0aG9yCiAgICBHbm9tb3Zpc2lvbiBjb21lcyB3aXRoIEFCU09M VVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycu CiAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNv bWUgdG8gcmVkaXN0cmlidXRlIGl0CiAgICB1bmRlciBjZXJ0YWluIGNvbmRp dGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCgpUaGUgaHlwb3Ro ZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQg c2hvdyB0aGUgYXBwcm9wcmlhdGUKcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHRoZSBjb21tYW5kcyB5b3UgdXNl IG1heQpiZSBjYWxsZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYHNob3cgdycg YW5kIGBzaG93IGMnOyB0aGV5IGNvdWxkIGV2ZW4gYmUKbW91c2UtY2xpY2tz IG9yIG1lbnUgaXRlbXMtLXdoYXRldmVyIHN1aXRzIHlvdXIgcHJvZ3JhbS4K CllvdSBzaG91bGQgYWxzbyBnZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdv cmsgYXMgYSBwcm9ncmFtbWVyKSBvciB5b3VyCnNjaG9vbCwgaWYgYW55LCB0 byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dy YW0sIGlmCm5lY2Vzc2FyeS4gIEhlcmUgaXMgYSBzYW1wbGU7IGFsdGVyIHRo ZSBuYW1lczoKCiAgWW95b2R5bmUsIEluYy4sIGhlcmVieSBkaXNjbGFpbXMg YWxsIGNvcHlyaWdodCBpbnRlcmVzdCBpbiB0aGUgcHJvZ3JhbQogIGBHbm9t b3Zpc2lvbicgKHdoaWNoIG1ha2VzIHBhc3NlcyBhdCBjb21waWxlcnMpIHdy aXR0ZW4gYnkgSmFtZXMgSGFja2VyLgoKICA8c2lnbmF0dXJlIG9mIFR5IENv b24+LCAxIEFwcmlsIDE5ODkKICBUeSBDb29uLCBQcmVzaWRlbnQgb2YgVmlj ZQoKVGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGRvZXMgbm90IHBlcm1p dCBpbmNvcnBvcmF0aW5nIHlvdXIgcHJvZ3JhbSBpbnRvCnByb3ByaWV0YXJ5 IHByb2dyYW1zLiAgSWYgeW91ciBwcm9ncmFtIGlzIGEgc3Vicm91dGluZSBs aWJyYXJ5LCB5b3UgbWF5CmNvbnNpZGVyIGl0IG1vcmUgdXNlZnVsIHRvIHBl cm1pdCBsaW5raW5nIHByb3ByaWV0YXJ5IGFwcGxpY2F0aW9ucyB3aXRoIHRo ZQpsaWJyYXJ5LiAgSWYgdGhpcyBpcyB3aGF0IHlvdSB3YW50IHRvIGRvLCB1 c2UgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbApQdWJsaWMgTGljZW5zZSBpbnN0 ZWFkIG9mIHRoaXMgTGljZW5zZS4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAGFua291L3NyYy8AAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDAwMDAAMDAw MDAwMAAwMDAwMDAwMDAwMAAwMDAwMDAwMDAwMAAwNzYxMQAgIDUAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAdXN0YXIgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYW5rb3Uvc3JjL3N0 YXRzLmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw MDA2NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAzNzI2ADAwMDAwMDAwMDAw ADAxMTEyMwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAjaW5jbHVkZSAiaW5jbHVkZS9zdGF0cy5oIgoKCnBTdGF0bGlzdCAq c3RhdF9jcmVhdGUodm9pZCkKewoJcFN0YXRsaXN0ICpuZXc7CgoJbmV3ID0g KHBTdGF0bGlzdCAqKW1hbGxvYyhzaXplb2YocFN0YXRsaXN0KSk7CgoJTElT VF9JTklUKG5ldyk7CgoJbmV3LT5yc2l6ZSA9IDA7CgoJcmV0dXJuIG5ldzsK fQoKdm9pZCBzdGF0X2Rlc3Ryb3kocFN0YXRsaXN0ICpoZWFkKQp7CglwUGlj ICp0bXAxLCAqdG1wMjsKCQoJaWYoaGVhZCA9PSBOVUxMKQoJCXJldHVybjsK CQoJdG1wMSA9IGhlYWQtPmhlYWQ7Cgl3aGlsZSh0bXAxKXsKCQl0bXAyID0g dG1wMS0+bmV4dDsKCQkKCQlMSVNUX0RFTChoZWFkLCB0bXAxKTsKCQlmcmVl KHRtcDEpOwoJCQoJCXRtcDEgPSB0bXAyOwoJfQoJCglmcmVlKGhlYWQpOwp9 Cgp2b2lkIHN0YXRfYWRkKHBTdGF0bGlzdCAqaGVhZCwgcFBpYyAqdmFsdWUp CnsKCXBQaWMgKnA7CgkKCWlmKGhlYWQgPT0gTlVMTCB8fCB2YWx1ZSA9PSBO VUxMKQoJCXJldHVybjsKCglwID0gKHBQaWMgKiltYWxsb2Moc2l6ZW9mKHBQ aWMpKTsKCQoJaWYocCAhPSBOVUxMKXsKCQlwLT50aWNrcyA9IHZhbHVlLT50 aWNrczsKCSAgICAgICAgcC0+bmIgPSB2YWx1ZS0+bmI7CgkJCgkJTElTVF9B REQoaGVhZCwgcCk7Cgl9Cn0KCnZvaWQgc3RhdF9kZWwocFN0YXRsaXN0ICpo ZWFkLCBkb3VibGUgdGlja3MpCnsKCXBQaWMgKnA7CgkKCWlmKGhlYWQgPT0g TlVMTCkKCQlyZXR1cm47CgoJcCA9IGhlYWQtPmhlYWQ7Cgl3aGlsZSAocCkg ewoJCWlmKHAtPnRpY2tzID09IHRpY2tzKXsJCgkJCUxJU1RfREVMKGhlYWQs IHApOwoJCQlmcmVlKHApOwoJCQlicmVhazsKCQl9CgkJcCA9IHAtPm5leHQ7 Cgl9Cn0KCnZvaWQgc3RhdF9hdXRvY29uc3RydWN0X2ZmdChwU3RhdGxpc3Qg KmhlYWQsIGRvdWJsZSBkYXRhW10sIGdzbF9jb21wbGV4ICpvdXRwdXQsIHNp emVfdCBzaXplKXsKCWdzbF9mZnRfcmVhbF93YXZldGFibGUgKndhdmV0YWJs ZTsKCWdzbF9mZnRfaGFsZmNvbXBsZXhfd2F2ZXRhYmxlICpoY193YXZldGFi bGU7Cglnc2xfZmZ0X3JlYWxfd29ya3NwYWNlICp3b3Jrc3BhY2U7CgoJaGVh ZC0+cnNpemUgPSBzaXplIC8gc2l6ZW9mKGRvdWJsZSk7CgkKCS8vcHJpbnRm KCIlZFxuIiwgaGVhZC0+cnNpemUpOwoKCXdhdmV0YWJsZSA9IGdzbF9mZnRf cmVhbF93YXZldGFibGVfYWxsb2MoaGVhZC0+cnNpemUpOwoJaGNfd2F2ZXRh YmxlID0gZ3NsX2ZmdF9oYWxmY29tcGxleF93YXZldGFibGVfYWxsb2MoaGVh ZC0+cnNpemUpOwoJd29ya3NwYWNlID0gZ3NsX2ZmdF9yZWFsX3dvcmtzcGFj ZV9hbGxvYyhoZWFkLT5yc2l6ZSk7CgoJZ3NsX2ZmdF9yZWFsX3RyYW5zZm9y bShkYXRhLCAxLCBoZWFkLT5yc2l6ZSwgd2F2ZXRhYmxlLCB3b3Jrc3BhY2Up OwkKCWdzbF9mZnRfaGFsZmNvbXBsZXhfdW5wYWNrKGRhdGEsIChnc2xfY29t cGxleF9wYWNrZWRfYXJyYXkpIG91dHB1dCwgMSwgaGVhZC0+cnNpemUpOwoJ Cglnc2xfZmZ0X3JlYWxfd2F2ZXRhYmxlX2ZyZWUod2F2ZXRhYmxlKTsKCWdz bF9mZnRfaGFsZmNvbXBsZXhfd2F2ZXRhYmxlX2ZyZWUoaGNfd2F2ZXRhYmxl KTsKCWdzbF9mZnRfcmVhbF93b3Jrc3BhY2VfZnJlZSh3b3Jrc3BhY2UpOwp9 CgoKdm9pZCBzdGF0X3dyaXRlKHZvaWQgKCpzeXMpKCksIGRvdWJsZSBzdGF0 c1tdLCBzaXplX3Qgc2l6ZSkKewoJaW50IGk7Cgl1bnNpZ25lZCBsb25nIHQx LCB0MiwgcmVzOwoJCgltZW1zZXQoc3RhdHMsICdcMCcsICBzaXplKTsKCglm b3IoaT0wOyBpPDIwMDAwOyBpKyspewoJCV9fYXNtX18oInJkdHNjXG4gbW92 bCAlJWVheCwgJTAiIDogIj1hIiAodDEpKTsKCQlzeXMoKTsKCQlfX2FzbV9f KCJyZHRzY1xuIG1vdmwgJSVlYXgsICUwIiA6ICI9YSIgKHQyKSk7CgkJcmVz ID0gdDIgLSB0MTsKCQlpZiggcmVzIDwgTUFYVElDS1MgJiYgcmVzID49IDAp CgkJCXN0YXRzW3Jlc10gKz0gMTsKCgkJaWYocmVzID49IE1BWFRJQ0tTKQoJ CQlzdGF0c1tNQVhUSUNLUy0xXSArPSAxOwoJfQp9CgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFua291L3NyYy9pbmNsdWRl LwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1 ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwMDAwMAAwMDAwMDAwMDAwMAAwMTEy MzQAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAdXN0YXIgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA YW5rb3Uvc3JjL2luY2x1ZGUvbGlzdC5oAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAADAwMDA2NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAzMDUy ADAwMDAwMDAwMDAwADAxMjM2MAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAjaWZuZGVmIExJU1RfSAojZGVmaW5lIExJU1Rf SAoKI2RlZmluZSBMSVNUX0lOSVQobmFtZSkgXAoJKG5hbWUpLT5oZWFkID0g KG5hbWUpLT50YWlsID0gTlVMTDsgXAoJKG5hbWUpLT5zaXplID0gMAoKI2Rl ZmluZSBMSVNUX0FERChuYW1lLCBxdWV1ZSkge1wKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChxdWV1ZSktPm5leHQgPSBOVUxMOyBcCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAoKG5hbWUpLT5oZWFkID09IE5VTEwp IHsgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lKS0+ aGVhZCA9IChuYW1lKS0+dGFpbCA9IHF1ZXVlOyBcCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHF1ZXVlKS0+cHJldiA9IE5VTEw7IFwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7IFwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobmFtZSktPnRhaWwtPm5leHQgPSBx dWV1ZTsgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChxdWV1 ZSktPnByZXYgPSAobmFtZSktPnRhaWw7IFwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobmFtZSktPnRhaWwgPSBxdWV1ZTsgXAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgfSBcCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobmFtZSktPnNpemUrKzsgXAogICAgICAgICAgICAgICAgICAg ICAgICAgIH0KCiNkZWZpbmUgTElTVF9ERUwobmFtZSwgcXVldWUpIHtcCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobmFtZSktPmhlYWQgPT0g cXVldWUgJiYgKG5hbWUpLT50YWlsID09IHF1ZXVlKSB7IFwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobmFtZSktPmhlYWQgPSAobmFtZSkt PnRhaWwgPSBOVUxMOyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 IGVsc2UgaWYgKChuYW1lKS0+aGVhZCA9PSBxdWV1ZSkgeyBcCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHF1ZXVlKS0+bmV4dC0+cHJldiA9 IE5VTEw7IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmFt ZSktPmhlYWQgPSAocXVldWUpLT5uZXh0OyBcCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9IGVsc2UgaWYgKChuYW1lKS0+dGFpbCA9PSBxdWV1ZSkg eyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHF1ZXVlKS0+ cHJldi0+bmV4dCA9IE5VTEw7IFwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobmFtZSktPnRhaWwgPSAocXVldWUpLT5wcmV2OyBcCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyBcCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHF1ZXVlKS0+cHJldi0+bmV4dCA9IChx dWV1ZSktPm5leHQ7IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAocXVldWUpLT5uZXh0LT5wcmV2ID0gKHF1ZXVlKS0+cHJldjsgXAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgfSBcCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobmFtZSktPnNpemUtLTsgXAogICAgICAgICAgICAgICAg ICAgICAgICAgIH0KCiNlbmRpZgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFua291 L3NyYy9pbmNsdWRlL2Fua291LmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAwMDAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwMDEwMAAwMDAw MDAwMDAwMAAwMTI1MTEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAI2lmbmRlZiBBTktPVV9ICiNkZWZpbmUgQU5LT1VfSAoK I2RlZmluZSBNQVhUSUNLUyAzMDAwMAoKI2VuZGlmCgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhbmtvdS9zcmMvaW5jbHVk ZS9zdGF0cy5oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0 NAAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDE0NTIAMDAwMDAwMDAwMDAAMDEy NTQ1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ACNpZm5kZWYgU1RBVFNfSAojZGVmaW5lIFNUQVRTX0gKCiNpbmNsdWRlIDxz dGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzdHJpbmcu aD4KI2luY2x1ZGUgPGdzbC9nc2xfbWF0aC5oPgojaW5jbHVkZSA8Z3NsL2dz bF9mZnRfcmVhbC5oPgojaW5jbHVkZSA8Z3NsL2dzbF9mZnRfaGFsZmNvbXBs ZXguaD4KI2luY2x1ZGUgPGdzbC9nc2xfY29tcGxleC5oPgojaW5jbHVkZSA8 Z3NsL2dzbF9jb21wbGV4X21hdGguaD4KCiNpbmNsdWRlICJhbmtvdS5oIgoj aW5jbHVkZSAibGlzdC5oIgoKc3RydWN0IHBpYyB7CiAgICAgICAgaW50IHRp Y2tzOwogICAgICAgIGludCBuYjsKCQoJc3RydWN0IHBpYyAqbmV4dCwgKnBy ZXY7Cn07Cgp0eXBlZGVmIHN0cnVjdCBwaWMgcFBpYzsKCnN0cnVjdCBzdGF0 bGlzdCB7CglpbnQgc2l6ZTsKCXBQaWMgKmhlYWQsICp0YWlsOwoJCglzaXpl X3QgcnNpemU7Cn07Cgp0eXBlZGVmIHN0cnVjdCBzdGF0bGlzdCBwU3RhdGxp c3Q7CgpwU3RhdGxpc3QgKnN0YXRfY3JlYXRlKHZvaWQpOwp2b2lkIHN0YXRf ZGVzdHJveShwU3RhdGxpc3QgKik7CnZvaWQgc3RhdF9hZGQocFN0YXRsaXN0 ICosIHBQaWMgKik7CnZvaWQgc3RhdF9kZWwocFN0YXRsaXN0ICosIGRvdWJs ZSk7Ci8vcFBpYyAqbGlzdF9nZXQocExpc3QgKiwgZG91YmxlKTsKdm9pZCBz dGF0X2F1dG9jb25zdHJ1Y3RfZmZ0KHBTdGF0bGlzdCAqLCBkb3VibGUgW10s IGdzbF9jb21wbGV4ICosIHNpemVfdCk7CnZvaWQgc3RhdF93cml0ZSh2b2lk ICgqKSgpLCBkb3VibGUgc3RhdHNbXSwgc2l6ZV90IHNpemUpOwoKI2VuZGlm CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhbmtvdS9zcmMv aW5jbHVkZS9ob29rcy5oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MDAwMDY0NAAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDE2NzMAMDAwMDAwMDAw MDAAMDEyNTM3ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAACNpZm5kZWYgSE9PS1NfSAojZGVmaW5lIEhPT0tTX0gKCiNpbmNs dWRlIDxzdGRpby5oPgoKI2luY2x1ZGUgImxpc3QuaCIKI2luY2x1ZGUgIm1v ZHVsZXMuaCIKI2luY2x1ZGUgInN0YXRzLmgiCgojZGVmaW5lIEhPT0tfU1lT IDAKI2RlZmluZSBIT09LX1BSSU5UIDEKCnN0cnVjdCBzeXNob29rIHsKCWNo YXIgKm5hbWU7CgkKCXZvaWQgKCpzeXMpKCk7CgogICAgICAgIHBTdGF0bGlz dCAqcmVmOwogICAgICAgIHBTdGF0bGlzdCAqbGFzdDsKCWRvdWJsZSBzY2Fs YXI7CgoJc3RydWN0IHN5c2hvb2sgKm5leHQsICpwcmV2Owp9OwoKdHlwZWRl ZiBzdHJ1Y3Qgc3lzaG9vayBwU3lzaG9vazsKCnN0cnVjdCBzeXNob29rbGlz dCB7CglpbnQgc2l6ZTsKCXBTeXNob29rICpoZWFkLCAqdGFpbDsKfTsKCnR5 cGVkZWYgc3RydWN0IHN5c2hvb2tsaXN0IHBTeXNob29rbGlzdDsKCnN0cnVj dCBwcmludGhvb2sgewoJY2hhciAqbmFtZTsKCiAgICAgICAgdm9pZCAoKnBy aW50KShjaGFyICpuYW1lLCBwU3RhdGxpc3QgKiwgcFN0YXRsaXN0ICosIGRv dWJsZSk7CgoJc3RydWN0IHByaW50aG9vayAqbmV4dCwgKnByZXY7Cn07CgoK dHlwZWRlZiBzdHJ1Y3QgcHJpbnRob29rIHBQcmludGhvb2s7CgpzdHJ1Y3Qg cHJpbnRob29rbGlzdCB7CglpbnQgc2l6ZTsKCXBQcmludGhvb2sgKmhlYWQs ICp0YWlsOwp9OwoKdHlwZWRlZiBzdHJ1Y3QgcHJpbnRob29rbGlzdCBwUHJp bnRob29rbGlzdDsKCnZvaWQgbG9hZF9ob29rcyhwTW9kdWxlbGlzdCAqLCBw U3lzaG9va2xpc3QgKiwgcFByaW50aG9va2xpc3QgKik7CnZvaWQgdW5sb2Fk X2hvb2tzKHBTeXNob29rbGlzdCAqLCBwUHJpbnRob29rbGlzdCAqKTsKcFN5 c2hvb2sgKmZpbmRfc3lzaG9vayhwU3lzaG9va2xpc3QgKiwgY2hhciAqKTsK cFByaW50aG9vayAqZmluZF9wcmludGhvb2socFByaW50aG9va2xpc3QgKiwg Y2hhciAqKTsKCiNlbmRpZgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhbmtv dS9zcmMvaW5jbHVkZS9tb2R1bGVzLmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAMDAwMDY0NAAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDExMTMAMDAw MDAwMDAwMDAAMDEzMDUxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACNpZm5kZWYgTU9EVUxFU19ICiNkZWZpbmUgTU9EVUxF U19ICgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoj aW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxkbGZjbi5oPgoKI2luY2x1 ZGUgImxpc3QuaCIKI2luY2x1ZGUgInN0YXRzLmgiCgpzdHJ1Y3QgbW9kdWxl IHsKCWNoYXIgKm5hbWU7Cgl2b2lkICpoYW5kbGU7CglpbnQgdHlwZTsKCgl2 b2lkICgqaW5pdCkoKTsKCXZvaWQgKCpjbGVhbnVwKSgpOwoJCglzdHJ1Y3Qg bW9kdWxlICpuZXh0LCAqcHJldjsKfTsKCnR5cGVkZWYgc3RydWN0IG1vZHVs ZSBwTW9kdWxlOwoKc3RydWN0IG1vZHVsZWxpc3QgewoJaW50IHNpemU7Cglw TW9kdWxlICpoZWFkLCAqdGFpbDsKfTsKCnR5cGVkZWYgc3RydWN0IG1vZHVs ZWxpc3QgcE1vZHVsZWxpc3Q7CgpwTW9kdWxlICpmaW5kX21vZHVsZShwTW9k dWxlbGlzdCAqLCBjaGFyICopOwpwTW9kdWxlICpsb2FkX21vZHVsZShwTW9k dWxlbGlzdCAqLCBjaGFyICopOwppbnQgdW5sb2FkX21vZHVsZXMocE1vZHVs ZWxpc3QgKik7CmludCB1bmxvYWRfbW9kdWxlKHBNb2R1bGVsaXN0ICosIGNo YXIgKik7CgojZW5kaWYKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AABhbmtvdS9zcmMvaG9va3MuYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDMx NTEAMDAwMDAwMDAwMDAAMDExMTAwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAACNpbmNsdWRlICJpbmNsdWRlL2hvb2tzLmgi Cgp2b2lkIGxvYWRfaG9va3MocE1vZHVsZWxpc3QgKm1saXN0LCBwU3lzaG9v a2xpc3QgKnNsaXN0LCBwUHJpbnRob29rbGlzdCAqcGxpc3QpCnsKICBjaGFy ICplcnJvcjsKICBwTW9kdWxlICptb2Q7CiAgcFN5c2hvb2sgKnN5czsKICBw UHJpbnRob29rICpwcmludDsKICAKICBtb2QgPSBtbGlzdC0+aGVhZDsKICAK ICB3aGlsZShtb2QpCiAgICB7CiAgICAgIHN3aXRjaChtb2QtPnR5cGUpCgl7 CgljYXNlIEhPT0tfU1lTIDoKCSAgLy8JICBwcmludGYoIkhPT0tfU1lTXG4i KTsKCSAgc3lzID0gZGxzeW0obW9kLT5oYW5kbGUsICJzaG9vayIpOwoJICBp ZiAoKGVycm9yID0gZGxlcnJvcigpKSE9IE5VTEwpCgkgICAgewoJICAgICAg cHJpbnRmKCJlcnJvcjMgJXNcbiIsIGVycm9yKTsKCSAgICAgIGRsY2xvc2Uo bW9kLT5oYW5kbGUpOwoJICAgICAgYnJlYWs7CgkgICAgfQoJICBMSVNUX0FE RChzbGlzdCwgc3lzKTsKCSAgYnJlYWs7CgkgIAoJY2FzZSBIT09LX1BSSU5U IDoKCSAgLy8JICBwcmludGYoIkhPT0tfUFJJTlRcbiIpOwoJICBwcmludCA9 IGRsc3ltKG1vZC0+aGFuZGxlLCAicGhvb2siKTsKCSAgaWYgKChlcnJvciA9 IGRsZXJyb3IoKSkhPSBOVUxMKQoJICAgIHsKCSAgICAgIHByaW50ZigiZXJy b3IzICVzXG4iLCBlcnJvcik7CgkgICAgICBkbGNsb3NlKG1vZC0+aGFuZGxl KTsKCSAgICAgIGJyZWFrOwoJICAgIH0KCSAgCgkgIExJU1RfQUREKHBsaXN0 LCBwcmludCk7CgkgIGJyZWFrOwoJfQogICAgICAKICAgICAgbW9kID0gbW9k LT5uZXh0OwogICAgfQp9Cgp2b2lkIHVubG9hZF9ob29rcyhwU3lzaG9va2xp c3QgKnNsaXN0LCBwUHJpbnRob29rbGlzdCAqcGxpc3QpCnsKICBwU3lzaG9v ayAqc3lzLCAqbmV4dHM7CiAgcFByaW50aG9vayAqcHJpbnQsICpuZXh0cDsK ICAKICBzeXMgPSBzbGlzdC0+aGVhZDsKICB3aGlsZShzeXMpCiAgICB7CiAg ICAgIG5leHRzID0gc3lzLT5uZXh0OwogICAgICBMSVNUX0RFTChzbGlzdCwg c3lzKTsKICAgICAgc3lzID0gbmV4dHM7CiAgICB9CiAgCiAgcHJpbnQgPSBw bGlzdC0+aGVhZDsKICB3aGlsZShwcmludCkKICAgIHsKICAgICAgbmV4dHAg PSBwcmludC0+bmV4dDsKICAgICAgTElTVF9ERUwocGxpc3QsIHByaW50KTsK ICAgICAgcHJpbnQgPSBuZXh0cDsKICAgIH0KfQoKcFN5c2hvb2sgKmZpbmRf c3lzaG9vayhwU3lzaG9va2xpc3QgKnNsaXN0LCBjaGFyICpuYW1lKQp7CiAg cFN5c2hvb2sgKnN5cyA9IHNsaXN0LT5oZWFkOwogIAogIHdoaWxlKHN5cykK ICAgIHsKICAgICAgaWYgKCFzdHJjbXAoc3lzLT5uYW1lLCBuYW1lKSkKCXJl dHVybiBzeXM7CiAgICAgIAogICAgICBzeXMgPSBzeXMtPm5leHQ7CiAgICB9 CiAgCiAgcmV0dXJuIE5VTEw7Cn0KCnBQcmludGhvb2sgKmZpbmRfcHJpbnRo b29rKHBQcmludGhvb2tsaXN0ICpwbGlzdCwgY2hhciAqbmFtZSkKewogIHBQ cmludGhvb2sgKnByaW50ID0gcGxpc3QtPmhlYWQ7CgkgICAgICAgIAogIHdo aWxlKHByaW50KQogICAgewogICAgICBpZiAoIXN0cmNtcChwcmludC0+bmFt ZSwgbmFtZSkpCglyZXR1cm4gcHJpbnQ7CiAgICAgIAogICAgICBwcmludCA9 IHByaW50LT5uZXh0OwogICAgfQogIAogIHJldHVybiBOVUxMOwp9CgAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYW5r b3Uvc3JjL21haW4uYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAADAwMDA2NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDEzMjAyADAw MDAwMDAwMDAwADAxMDY3NwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAjaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0 cmluZy5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzeXMvdHlw ZXMuaD4KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiNpbmNsdWRlIDxmY250bC5o PgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxzaWduYWwuaD4KI2lu Y2x1ZGUgPGN0eXBlLmg+CiNpbmNsdWRlIDxnc2wvZ3NsX21hdGguaD4KI2lu Y2x1ZGUgPGdzbC9nc2xfZmZ0X3JlYWwuaD4KI2luY2x1ZGUgPGdzbC9nc2xf ZmZ0X2hhbGZjb21wbGV4Lmg+CiNpbmNsdWRlIDxnc2wvZ3NsX2NvbXBsZXgu aD4KI2luY2x1ZGUgPGdzbC9nc2xfY29tcGxleF9tYXRoLmg+CgojaW5jbHVk ZSAiaW5jbHVkZS9hbmtvdS5oIgojaW5jbHVkZSAiaW5jbHVkZS9saXN0Lmgi CiNpbmNsdWRlICJpbmNsdWRlL3N0YXRzLmgiCiNpbmNsdWRlICJpbmNsdWRl L21vZHVsZXMuaCIKI2luY2x1ZGUgImluY2x1ZGUvaG9va3MuaCIKCmRvdWJs ZSBzdGF0c1tNQVhUSUNLU107CmRvdWJsZSBzdGF0czJbTUFYVElDS1NdOwpn c2xfY29tcGxleCBmc3RhdHNbTUFYVElDS1NdOwpnc2xfY29tcGxleCBmc3Rh dHMyW01BWFRJQ0tTXTsKCnN0YXRpYyBwTW9kdWxlbGlzdCBtbGlzdDsgCnN0 YXRpYyBwU3lzaG9va2xpc3Qgc2xpc3Q7CnN0YXRpYyBwUHJpbnRob29rbGlz dCBwbGlzdDsKCnZvaWQgd3JpdGVfc3RhdHNyZWYoY2hhciAqZmlsZW5hbWUp CnsKICBGSUxFICpmZDsKICBwU3lzaG9vayAqc3lzOwogIGludCBpLCBuYjsK CQogIGlmKChmZCA9IGZvcGVuKGZpbGVuYW1lLCAidysiKSkgPT0gTlVMTCkK ICAgIHsKICAgICAgcGVycm9yKCJmb3BlbiIpOwogICAgICBleGl0KC0xKTsK ICAgIH0KCiAgc3lzID0gc2xpc3QuaGVhZDsKCiAgcHJpbnRmKCJXcml0ZSBz dGF0cyBvbiAlc1xuIiwgZmlsZW5hbWUpOwogIHByaW50ZigiV2FpdGluZyAu Li4uIC4uLi4gLi4uLlxuIik7CgogIGZvcihpPTA7aTxNQVhUSUNLUztpKysp OwoJCQogIHdoaWxlKHN5cykKICAgIHsKICAgICAgc2xlZXAoMSk7CiAgICAg IGZwcmludGYoZmQsICJbQkVHSU4gJXNdXG4iLCBzeXMtPm5hbWUpOwogICAg ICBzdGF0X3dyaXRlKHN5cy0+c3lzLCBzdGF0cywgc2l6ZW9mKHN0YXRzKSk7 CiAgICAgIGZvciAoaT0wO2k8TUFYVElDS1M7aSsrKQoJewoJICBpZihzdGF0 c1tpXSA+IDApCgkgICAgewoJICAgICAgbmIgPSBzdGF0c1tpXTsKCSAgICAg IGZwcmludGYoZmQsICIlZCAlZFxuIiwgaSwgbmIpOwoJICAgIH0KCX0KICAg ICAgZnByaW50ZihmZCwgIltFTkQgJXNdXG4iLCBzeXMtPm5hbWUpOwogICAg ICAKICAgICAgc3lzID0gc3lzLT5uZXh0OwogICAgfQogIAogIGZjbG9zZShm ZCk7Cn0KCnZvaWQgcmVhZF9zdGF0c3JlZihjaGFyICpmaWxlbmFtZSkKewog IGNoYXIgKmVsOwogIEZJTEUgKmZkOwogIHBTeXNob29rICpzeXM7CiAgcFBp YyB2YWx1ZTsKICBjaGFyIGxpbmVbODBdOwogIGNoYXIgKm5hbWU7CiAgCiAg c3lzID0gc2xpc3QuaGVhZDsKICBuYW1lID0gTlVMTDsKICAKICBmZCA9IGZv cGVuKGZpbGVuYW1lLCAiciIpOwogIGlmKGZkID09IE5VTEwpCiAgICB7CiAg ICAgIHBlcnJvcigiZm9wZW4iKTsKICAgICAgZXhpdCgtMSk7CiAgICB9CgkK ICB3aGlsZShmZ2V0cyhsaW5lLCA4MCwgZmQpICE9IE5VTEwpCiAgICB7CiAg ICAgIGlmKCFzdHJuY21wKGxpbmUsICJbQkVHSU4iLCA2KSkKCXsKCSAgbmFt ZSA9IG1hbGxvYyhzdHJsZW4obGluZSkgLSA2ICsgMSk7CgkgIG1lbXNldChu YW1lLCAnXDAnLCBzdHJsZW4obGluZSkgLSA2ICsgMSk7CgkgIAoJICBtZW1j cHkobmFtZSwgbGluZSs3LCBzdHJsZW4obGluZSkgLSA5KTsKCSAgCgkgIHN5 cyA9IGZpbmRfc3lzaG9vaygmc2xpc3QsIG5hbWUpOwoJICAvL3ByaW50Zigi U1lTICVzICVzXG4iLCBzeXMtPm5hbWUsIG5hbWUpOwoJICBpZihzeXMgIT0g TlVMTCkKCSAgICB7CgkgICAgICB3aGlsZShmZ2V0cyhsaW5lLCA4MCwgZmQp ICE9IE5VTEwgJiYgc3RybmNtcChsaW5lLCAiW0VORCIsIDQpKQoJCXsKCQkg IGVsID0gc3RydG9rKGxpbmUsICIgIik7CgkJICB2YWx1ZS50aWNrcyA9IGF0 b2koZWwpOwoJCSAgZWwgPSBzdHJ0b2soTlVMTCwgIiAiKTsKCQkgIHZhbHVl Lm5iID0gYXRvaShlbCk7CgkJICAvL3ByaW50ZigiTkIgJWQgVElDSyAlZFxu IiwgdmFsdWUubmIsIHZhbHVlLnRpY2tzKTsKCQkgIHN0YXRfYWRkKHN5cy0+ cmVmLCAmdmFsdWUpOwoJCX0KCSAgICAgIAoJICAgIH0KCSAgZWxzZSAKCSAg ICB7CgkgICAgICBwcmludGYoIlVua25vd24gTU9EVUxFICVzICFcbiIsIG5h bWUpOwoJICAgIH0KCSAgZnJlZShuYW1lKTsKCX0KICAgIH0KICAKICBmY2xv c2UoZmQpOwp9Cgp2b2lkIGxhdW5jaF9wcm9kKHZvaWQpCnsKICBpbnQgaTsK ICBkb3VibGUgbm9ybTEsIG5vcm0yLCBzY2FsYXI7CiAgZ3NsX2NvbXBsZXgg Y3N1bTsKICBwU3lzaG9vayAqc3lzOwogIHBQaWMgKnA7CiAgcFBpYyB2YWx1 ZTsKICBzeXMgPSBzbGlzdC5oZWFkOwogIAogIGZvcihpPTA7aTxNQVhUSUNL UztpKyspOwoJCiAgd2hpbGUoc3lzKQogICAgewogICAgICBzbGVlcCgxKTsK ICAgICAgc3RhdF93cml0ZShzeXMtPnN5cywgc3RhdHMyLCBzaXplb2Yoc3Rh dHMyKSk7CiAgICAgIAogICAgICBmb3IoaT0wO2k8MzAwMDA7aSsrKQoJewoJ ICBpZihzdGF0czJbaV0gPiAwKQoJICAgIHsKCSAgICAgIHZhbHVlLnRpY2tz ID0gaTsKCSAgICAgIHZhbHVlLm5iID0gc3RhdHMyW2ldOwoJICAgICAgCgkg ICAgICBzdGF0X2FkZChzeXMtPmxhc3QsICZ2YWx1ZSk7CgkgICAgfQoJfQkJ CiAgICAgIAogICAgICBtZW1zZXQoZnN0YXRzMiwgJ1wwJywgc2l6ZW9mKGZz dGF0czIpKTsKICAgICAgc3RhdF9hdXRvY29uc3RydWN0X2ZmdChzeXMtPmxh c3QsIHN0YXRzMiwgZnN0YXRzMiwgc2l6ZW9mKHN0YXRzMikpOwogICAgICAK ICAgICAgbWVtc2V0KHN0YXRzLCAnXDAnLCBzaXplb2Yoc3RhdHMpKTsKICAg ICAgcCA9IHN5cy0+cmVmLT5oZWFkOwogICAgICB3aGlsZShwKQoJewoJICBz dGF0c1twLT50aWNrc10gPSBwLT5uYjsKCSAgcCA9IHAtPm5leHQ7Cgl9CiAg ICAgIAogICAgICBtZW1zZXQoZnN0YXRzLCAnXDAnLCBzaXplb2YoZnN0YXRz KSk7CiAgICAgIHN0YXRfYXV0b2NvbnN0cnVjdF9mZnQoc3lzLT5yZWYsIHN0 YXRzLCBmc3RhdHMsIHNpemVvZihzdGF0cykpOwoJCQogICAgICBHU0xfU0VU X0NPTVBMRVgoJmNzdW0sIDAsIDApOyBub3JtMT0wOyBub3JtMj0wOwoJCQog ICAgICBmb3IgKGk9MDsgaTwzMDAwMC8xMDsgaSsrKSAKCXsKCSAgY3N1bSA9 IGdzbF9jb21wbGV4X2FkZChjc3VtLCBnc2xfY29tcGxleF9tdWwoZnN0YXRz W2ldLCBnc2xfY29tcGxleF9jb25qdWdhdGUoZnN0YXRzMltpXSkpKTsKCX0K ICAgICAgICAgCiAgICAgIGZvciAoaT0wOyBpPDMwMDAwLzEwOyBpKyspCgl7 CgkgIG5vcm0xICs9IGdzbF9jb21wbGV4X2FiczIoZnN0YXRzW2ldKTsKCX0K CiAgICAgIGZvciAoaT0wOyBpPDMwMDAwLzEwOyBpKyspCgl7CgkgIG5vcm0y ICs9IGdzbF9jb21wbGV4X2FiczIoZnN0YXRzMltpXSk7Cgl9CiAgICAgCiAg ICAgIHByaW50ZigiKCBjc3VtICVmIG5vcm0xICVmIG5vcm0yICVmID0+ICVm KVxuIiwgZ3NsX2NvbXBsZXhfYWJzKGNzdW0pLCBub3JtMSwgbm9ybTIsIHNx cnQobm9ybTEqbm9ybTIpKTsKICAgICAgCiAgICAgIHNjYWxhciA9IGdzbF9j b21wbGV4X2Ficyhjc3VtKS9zcXJ0KG5vcm0xKm5vcm0yKTsKICAgICAgc3lz LT5zY2FsYXIgPSBzY2FsYXI7CiAgICAgIAogICAgICBzeXMgPSBzeXMtPm5l eHQ7CiAgICB9Cn0KCnZvaWQgbGF1bmNoX3N0YXRzcHJpbnQodm9pZCkKewog IHBTeXNob29rICpzeXM7CiAgcFByaW50aG9vayAqcHJpbnQ7CgogIHN5cyA9 IHNsaXN0LmhlYWQ7CgkKICB3aGlsZShzeXMpCiAgICB7CiAgICAgIC8vCQlw cmludGYoIk1PRCAweCV4ICVzIDB4JXggMHgleCAweCV4IDB4JXhcbiIsIHN5 cywgc3lzLT5uYW1lLCBzeXMtPnJlZiwgc3lzLT5sYXN0LCBzeXMtPnByZXYs IHN5cy0+bmV4dCk7CiAgICAgIAogICAgICBwcmludCA9IHBsaXN0LmhlYWQ7 CiAgICAgIAogICAgICB3aGlsZShwcmludCkKCXsKCSAgaWYoc3RyY21wKHBy aW50LT5uYW1lLCAidm0iKSkKCSAgICB7CgkgICAgICBwcmludC0+cHJpbnQo c3lzLT5uYW1lLCBzeXMtPnJlZiwgc3lzLT5sYXN0LCBzeXMtPnNjYWxhcik7 CgkgICAgfQoKCSAgcHJpbnQgPSBwcmludC0+bmV4dDsKCX0JCiAgICAgIHN5 cyA9IHN5cy0+bmV4dDsKICAgIH0KfQoKdm9pZCBjaGVja192bSh2b2lkKQp7 CiAgaW50IGk7CiAgcFN5c2hvb2sgKnN5czsKICBwUHJpbnRob29rICpwcmlu dDsKICBwUGljIHZhbHVlOwogIHN5cyA9IHNsaXN0LmhlYWQ7CiAgaW50IG1h eCwgcG9zOwogIAogIG1heCA9IHBvcyA9IC0xOwogIAogIGZvcihpPTA7aTxN QVhUSUNLUztpKyspOwogIAogIHByaW50ZigiQ2hlY2tpbmcgdm0gLi4uXG4i KTsKICB3aGlsZShzeXMpCiAgICB7CiAgICAgIC8vcHJpbnRmKCIlc1xuIiwg c3lzLT5uYW1lKTsKICAgICAgc2xlZXAoMSk7CiAgICAgIHN0YXRfd3JpdGUo c3lzLT5zeXMsIHN0YXRzMiwgc2l6ZW9mKHN0YXRzMikpOwoKICAgICAgZm9y KGk9MDsgaSA8IE1BWFRJQ0tTOyBpKyspCgl7CgkgIGlmIChzdGF0czJbaV0g PiAwKQoJICAgIHsKCSAgICAgIHZhbHVlLnRpY2tzID0gaTsKCSAgICAgIHZh bHVlLm5iID0gc3RhdHMyW2ldOwoJICAgICAgCgkgICAgICBzdGF0X2FkZChz eXMtPnJlZiwgJnZhbHVlKTsKCSAgICB9Cgl9CgogICAgICBzeXMgPSBzeXMt Pm5leHQ7CiAgICB9CiAgCiAgcHJpbnQgPSBmaW5kX3ByaW50aG9vaygmcGxp c3QsICJ2bSIpOwogIAogIHN5cyA9IHNsaXN0LmhlYWQ7CiAgd2hpbGUoc3lz KQogICAgewogICAgICBwcmludC0+cHJpbnQoc3lzLT5uYW1lLCBzeXMtPnJl Ziwgc3lzLT5sYXN0LCBzeXMtPnNjYWxhcik7CiAgICAgIHN5cyA9IHN5cy0+ bmV4dDsKICAgIH0KfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKewogIGNoYXIgYzsKICAKICBMSVNUX0lOSVQoJm1saXN0KTsKICBMSVNU X0lOSVQoJnNsaXN0KTsKICBMSVNUX0lOSVQoJnBsaXN0KTsKCiAgbG9hZF9t b2R1bGUoJm1saXN0LCAia2lsbCIpOwogIGxvYWRfbW9kdWxlKCZtbGlzdCwg InJlYWRkaXIiKTsKICBsb2FkX21vZHVsZSgmbWxpc3QsICJyZWFkdGNwIik7 CiAgbG9hZF9tb2R1bGUoJm1saXN0LCAic2V0ZXVpZCIpOwogIGxvYWRfbW9k dWxlKCZtbGlzdCwgInByaW50Iik7CiAgbG9hZF9tb2R1bGUoJm1saXN0LCAi b3duZWQiKTsKICBsb2FkX21vZHVsZSgmbWxpc3QsICJ2bSIpOwogIAogIGxv YWRfaG9va3MoJm1saXN0LCAmc2xpc3QsICZwbGlzdCk7CiAgCiAgcHJpbnRm KCJcbiIpOwoKICBvcHRhcmcgPSBOVUxMOwogIG9wdGVyciA9IG9wdGluZCA9 IG9wdG9wdCA9IDA7CiAgCiAgd2hpbGUoKGMgPSBnZXRvcHQoYXJnYywgYXJn diwgImM6cjp2IikpICE9IC0xKQogICAgewogICAgICBzd2l0Y2goYykKCXsK CWNhc2UgJ2MnIDoKCSAgcmVhZF9zdGF0c3JlZihvcHRhcmcpOwoJICBsYXVu Y2hfcHJvZCgpOwoJICBsYXVuY2hfc3RhdHNwcmludCgpOwoJICBicmVhazsK CWNhc2UgJ3InIDoKCSAgd3JpdGVfc3RhdHNyZWYob3B0YXJnKTsKCSAgYnJl YWs7CgljYXNlICd2JyA6CgkgIGNoZWNrX3ZtKCk7CgkgIGJyZWFrOwoJfQog ICAgfQoKICBwcmludGYoIlxuIik7CiAgdW5sb2FkX2hvb2tzKCZzbGlzdCwg JnBsaXN0KTsgICAgIAkKICB1bmxvYWRfbW9kdWxlcygmbWxpc3QpOwogIAog IAogIHJldHVybiAwOwp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhbmtvdS9z cmMvbW9kdWxlcy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAMDAwMDc1NQAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDAwMDAAMDAwMDAw MDAwMDAAMDExMjYxACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAGFua291L3NyYy9tb2R1bGVzL3JlYWR0Y3AuYwAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAw MDAwMDAwMTE0MgAwMDAwMDAwMDAwMAAwMTMwNDUAIDAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0 YXIgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI2luY2x1ZGUgIi4uL2luY2x1 ZGUvbW9kdWxlcy5oIgojaW5jbHVkZSAiLi4vaW5jbHVkZS9ob29rcy5oIgoj aW5jbHVkZSAiLi4vaW5jbHVkZS9zdGF0cy5oIgoKdm9pZCByZWFkdGNwX2lu aXQodm9pZCk7CnZvaWQgcmVhZHRjcF9jbGVhbnVwKHZvaWQpOwp2b2lkIHJl YWR0Y3BfcnVuKHZvaWQpOwoKcE1vZHVsZSBtb2QgPQp7ICJyZWFkdGNwIiwg TlVMTCwgSE9PS19TWVMsIHJlYWR0Y3BfaW5pdCwgcmVhZHRjcF9jbGVhbnVw LCBOVUxMLCBOVUxMIH07CgpwU3lzaG9vayBzaG9vayA9CnsgInJlYWR0Y3Ai LCByZWFkdGNwX3J1biwgTlVMTCwgTlVMTCwgMCwgTlVMTCwgTlVMTCB9OwoK dm9pZCByZWFkdGNwX2luaXQodm9pZCkKewoJcHJpbnRmKCJSRUFEVENQIElO SVRcbiIpOwogICAgICAgIHNob29rLnJlZiA9IHN0YXRfY3JlYXRlKCk7CiAg ICAgICAgc2hvb2subGFzdCA9IHN0YXRfY3JlYXRlKCk7Cn0KCgp2b2lkIHJl YWR0Y3BfY2xlYW51cCh2b2lkKQp7CglwcmludGYoIlJFQURUQ1AgQ0xFQU5V UFxuIik7CiAgICAgICAgc3RhdF9kZXN0cm95KHNob29rLnJlZik7CglzdGF0 X2Rlc3Ryb3koc2hvb2subGFzdCk7Cn0KCnZvaWQgcmVhZHRjcF9ydW4odm9p ZCkKewp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAGFua291L3NyYy9tb2R1bGVzL2dudXBsb3QuYwAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAwMDAAMDAw MDAwMAAwMDAwMDAwMTA2MQAwMDAwMDAwMDAwMAAwMTMxMTMAIDAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAdXN0YXIgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI2luY2x1ZGUgIi4u L2luY2x1ZGUvbW9kdWxlcy5oIgojaW5jbHVkZSAiLi4vaW5jbHVkZS9ob29r cy5oIgojaW5jbHVkZSAiLi4vaW5jbHVkZS9zdGF0cy5oIgoKdm9pZCBnbnVw bG90X2luaXQodm9pZCk7CnZvaWQgZ251cGxvdF9jbGVhbnVwKHZvaWQpOwp2 b2lkIGdudXBsb3RfcnVuKGNoYXIgKiwgcFN0YXRsaXN0ICosIHBTdGF0bGlz dCAqLCBkb3VibGUpOwoKcE1vZHVsZSBtb2QgPQp7ICJnbnVwbG90IiwgTlVM TCwgSE9PS19QUklOVCwgZ251cGxvdF9pbml0LCBnbnVwbG90X2NsZWFudXAs IE5VTEwsIE5VTEwgfTsKCnBQcmludGhvb2sgcGhvb2sgPQp7ICJnbnVwbG90 IiwgZ251cGxvdF9ydW4sIE5VTEwsIE5VTEwsIH07Cgp2b2lkIGdudXBsb3Rf aW5pdCh2b2lkKQp7CglwcmludHRmKCJHTlVQTE9UIElOSVRcbiIpOwp9CgoK dm9pZCBnbnVwbG90X2NsZWFudXAodm9pZCkKewoJcHJpbnRmKCJHTlVQTE9U IENMRUFOVVBcbiIpOwp9Cgp2b2lkIGdudXBsb3RfcnVuKGNoYXIgKm5hbWUs IHBTdGF0bGlzdCAqcmVmLCBwU3RhdGxpc3QgKmxhc3QsIGRvdWJsZSBzY2Fs YXIpCnsKCn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFua291L3NyYy9tb2R1bGVzL2tpbGwu YwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDAw MDAAMDAwMDAwMAAwMDAwMDAwMTA2NAAwMDAwMDAwMDAwMAAwMTIzNjEAIDAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAdXN0YXIgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI2luY2x1 ZGUgIi4uL2luY2x1ZGUvbW9kdWxlcy5oIgojaW5jbHVkZSAiLi4vaW5jbHVk ZS9ob29rcy5oIgojaW5jbHVkZSAiLi4vaW5jbHVkZS9zdGF0cy5oIgoKdm9p ZCBraWxsX2luaXQodm9pZCk7CnZvaWQga2lsbF9jbGVhbnVwKHZvaWQpOwp2 b2lkIGtpbGxfcnVuKHZvaWQpOwoKcE1vZHVsZSBtb2QgPQp7ICJraWxsIiwg TlVMTCwgSE9PS19TWVMsIGtpbGxfaW5pdCwga2lsbF9jbGVhbnVwLCBOVUxM LCBOVUxMIH07CgpwU3lzaG9vayBzaG9vayA9IAp7ICJraWxsIiwga2lsbF9y dW4sIE5VTEwsIE5VTEwsIDAsIE5VTEwsIE5VTEwgfTsKCnZvaWQga2lsbF9p bml0KHZvaWQpCnsKCXByaW50ZigiS0lMTCBJTklUXG4iKTsKCXNob29rLnJl ZiA9IHN0YXRfY3JlYXRlKCk7CglzaG9vay5sYXN0ID0gc3RhdF9jcmVhdGUo KTsKfQoKCnZvaWQga2lsbF9jbGVhbnVwKHZvaWQpCnsKCXByaW50ZigiS0lM TCBDTEVBTlVQXG4iKTsKCXN0YXRfZGVzdHJveShzaG9vay5yZWYpOwoJc3Rh dF9kZXN0cm95KHNob29rLmxhc3QpOwp9Cgp2b2lkIGtpbGxfcnVuKHZvaWQp CnsKCWtpbGwoMSwgMCk7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFua291L3NyYy9tb2R1bGVz L01ha2VmaWxlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0 ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwMTM2NwAwMDAwMDAwMDAwMAAwMTI3 MzAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAdXN0YXIgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Q0MgPSBnY2MKQ0ZMQUdTID0gLWZQSUMgLXNoYXJlZCAtbwpPQkpFQ1RTU1JD ID0ga2lsbC5jIHJlYWR0Y3AuYyByZWFkZGlyLmMgcHJpbnQuYyBvd25lZC5j IHZtLmMgZ251cGxvdC5jIHNldGV1aWQuYwpPQkpFQ1RTID0ga2lsbC5zbyBy ZWFkdGNwLnNvIHJlYWRkaXIuc28gcHJpbnQuc28gb3duZWQuc28gdm0uc28g Z251cGxvdC5zbyBzZXRldWlkLnNvCgphbGw6ICR7T0JKRUNUU30KCmtpbGwu c286IGtpbGwuYwoJJHtDQ30gJHtDRkxBR1N9IGtpbGwuc28ga2lsbC5jIC4u L3N0YXRzLmMKCnJlYWR0Y3Auc286IHJlYWR0Y3AuYwoJJHtDQ30gJHtDRkxB R1N9IHJlYWR0Y3Auc28gcmVhZHRjcC5jIC4uL3N0YXRzLmMKCnJlYWRkaXIu c286IHJlYWRkaXIuYwoJJHtDQ30gJHtDRkxBR1N9IHJlYWRkaXIuc28gcmVh ZGRpci5jIC4uL3N0YXRzLmMKCnByaW50LnNvOiBwcmludC5jCgkke0NDfSAk e0NGTEFHU30gcHJpbnQuc28gcHJpbnQuYyAuLi9zdGF0cy5jCgpvd25lZC5z bzogb3duZWQuYwoJJHtDQ30gJHtDRkxBR1N9IG93bmVkLnNvIG93bmVkLmMg Li4vc3RhdHMuYwoKdm0uc286IHZtLmMKCSR7Q0N9ICR7Q0ZMQUdTfSB2bS5z byB2bS5jIC4uL3N0YXRzLmMKCmdudXBsb3Quc286IGdudXBsb3QuYwoJJHtD Q30gJHtDRkxBR1N9IGdudXBsb3Quc28gZ251cGxvdC5jCgpzZXRldWlkLnNv OiBzZXRldWlkLmMKCSR7Q0N9ICR7Q0ZMQUdTfSBzZXRldWlkLnNvIHNldGV1 aWQuYyAuLi9zdGF0cy5jCgpjbGVhbjogCglybSAtZnIgKi5zbwoKAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFua291L3NyYy9t b2R1bGVzL3ByaW50LmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw MDAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwMjI3NAAwMDAwMDAwMDAw MAAwMTI1NjYAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL3N0 YXQuaD4KI2luY2x1ZGUgPGZjbnRsLmg+CgojaW5jbHVkZSAiLi4vaW5jbHVk ZS9tb2R1bGVzLmgiCiNpbmNsdWRlICIuLi9pbmNsdWRlL2hvb2tzLmgiCiNp bmNsdWRlICIuLi9pbmNsdWRlL3N0YXRzLmgiCgp2b2lkIHByaW50X2luaXQo dm9pZCk7CnZvaWQgcHJpbnRfY2xlYW51cCh2b2lkKTsKdm9pZCBwcmludF9y dW4oY2hhciAqLCBwU3RhdGxpc3QgKiwgcFN0YXRsaXN0ICosIGRvdWJsZSk7 CgpwTW9kdWxlIG1vZCA9CnsgInByaW50IiwgTlVMTCwgSE9PS19QUklOVCwg cHJpbnRfaW5pdCwgcHJpbnRfY2xlYW51cCwgTlVMTCwgTlVMTCB9OwoKcFBy aW50aG9vayBwaG9vayA9CnsgInByaW50IiwgcHJpbnRfcnVuLCBOVUxMLCBO VUxMLCB9OwoKdm9pZCBwcmludF9pbml0KHZvaWQpCnsKCXByaW50ZigiUFJJ TlQgSU5JVFxuIik7Cn0KCgp2b2lkIHByaW50X2NsZWFudXAodm9pZCkKewoJ cHJpbnRmKCJQUklOVCBDTEVBTlVQXG4iKTsKfQoKdm9pZCBwcmludF9ydW4o Y2hhciAqbmFtZSwgcFN0YXRsaXN0ICpyZWYsIHBTdGF0bGlzdCAqbGFzdCwg ZG91YmxlIHNjYWxhcikKewovLwlwcmludGYoIlBSSU5UXG4iKTsKCWludCBp OwoJRklMRSAqZmQ7CglwUGljICpwOwoJaW50IG1heCwgcG9zbWF4OwoKCS8v CXByaW50ZigiUHJpbnQgc3RhdHMgZm9yICVzXG4iLCBuYW1lKTsKCglwID0g cmVmLT5oZWFkOwkKCXdoaWxlKHApewoJCS8vcHJpbnRmKCI9PT0gVElDS1Mg JWQgPT4gJWQgPT09XG4iLCBwLT50aWNrcywgcC0+bmIpOwoJCXAgPSBwLT5u ZXh0OwoJfQoJCi8qCWZkID0gZm9wZW4oInRlc3QiLCAidyIpOwoJCglmb3Io aSA9IDA7IGk8cmVmLT5yc2l6ZTsgaSsrKXsKCQlmcHJpbnRmKGZkLCAiJWQg JWRcbiIsIGksIHJlZi0+ZnN0YXRzW2ldKTsKCX0KCQoJY2xvc2UoZmQpOwoq LwoJLy9wcmludGYoIlxuIik7CgoJbWF4ID0gcG9zbWF4ID0gLTE7CgoJcCA9 IGxhc3QtPmhlYWQ7CQoJd2hpbGUocCl7CgkJaWYocC0+bmIgPiBtYXgpewoJ CQlwb3NtYXggPSBwLT50aWNrczsKCQkJbWF4ID0gcC0+bmI7CgkJfQoJCQkK CQkvL3ByaW50ZigiPT09IFRJQ0tTICVkID0+ICVkID09PVxuIiwgcC0+dGlj a3MsIHAtPm5iKTsKCQlwID0gcC0+bmV4dDsKCX0KCgkvL3ByaW50ZigiTUFY ICVkID0gJWRcbiIsIHBvc21heCwgbWF4KTsKCgkvLwlwcmludGYoIlxuIik7 Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAYW5rb3Uvc3JjL21vZHVsZXMvcmVhZGRpci5jAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDAwMAAwMDAwMDAw ADAwMDAwMDAxNDA3ADAwMDAwMDAwMDAwADAxMzA0MQAgMAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1 c3RhciAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjaW5jbHVkZSA8c3lzL3R5 cGVzLmg+CiNpbmNsdWRlIDxkaXJlbnQuaD4KCiNpbmNsdWRlICIuLi9pbmNs dWRlL21vZHVsZXMuaCIKI2luY2x1ZGUgIi4uL2luY2x1ZGUvaG9va3MuaCIK I2luY2x1ZGUgIi4uL2luY2x1ZGUvc3RhdHMuaCIKCnZvaWQgcmVhZGRpcl9p bml0KHZvaWQpOwp2b2lkIHJlYWRkaXJfY2xlYW51cCh2b2lkKTsKdm9pZCBy ZWFkZGlyX3J1bih2b2lkKTsKCnBNb2R1bGUgbW9kID0KeyAicmVhZGRpciIs IE5VTEwsIEhPT0tfU1lTLCByZWFkZGlyX2luaXQsIHJlYWRkaXJfY2xlYW51 cCwgTlVMTCwgTlVMTCB9OwoKcFN5c2hvb2sgc2hvb2sgPSAKeyAicmVhZGRp ciIsIHJlYWRkaXJfcnVuLCBOVUxMLCBOVUxMLCAwLCBOVUxMLCBOVUxMIH07 Cgp2b2lkIHJlYWRkaXJfaW5pdCh2b2lkKQp7CglwcmludGYoIlJFQURESVIg SU5JVFxuIik7CglzaG9vay5yZWYgPSBzdGF0X2NyZWF0ZSgpOwoJc2hvb2su bGFzdCA9IHN0YXRfY3JlYXRlKCk7Cn0KCgp2b2lkIHJlYWRkaXJfY2xlYW51 cCh2b2lkKQp7CglwcmludGYoIlJFQURESVIgQ0xFQU5VUFxuIik7CglzdGF0 X2Rlc3Ryb3koc2hvb2sucmVmKTsKCXN0YXRfZGVzdHJveShzaG9vay5sYXN0 KTsKfQoKdm9pZCByZWFkZGlyX3J1bih2b2lkKQp7CglESVIgKmRpcjsKCXN0 cnVjdCBkaXJlbnQgKmZpbGU7CgkKCWRpciA9IG9wZW5kaXIoIi8iKTsKCXdo aWxlKChmaWxlID0gcmVhZGRpcihkaXIpKSl7CgkJLy9wcmludGYoIiVzXG4i LCBmaWxlLT5kX25hbWUpOwoJfQoKCWNsb3NlZGlyKGRpcik7Cn0KAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAYW5rb3Uvc3JjL21vZHVsZXMvc2V0ZXVpZC5j AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDAwMAAw MDAwMDAwADAwMDAwMDAxMjA3ADAwMDAwMDAwMDAwADAxMzA2NwAgMAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAB1c3RhciAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjaW5jbHVkZSA8 c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KCiNpbmNsdWRlICIu Li9pbmNsdWRlL21vZHVsZXMuaCIKI2luY2x1ZGUgIi4uL2luY2x1ZGUvaG9v a3MuaCIKI2luY2x1ZGUgIi4uL2luY2x1ZGUvc3RhdHMuaCIKCnZvaWQgc2V0 ZXVpZF9pbml0KHZvaWQpOwp2b2lkIHNldGV1aWRfY2xlYW51cCh2b2lkKTsK dm9pZCBzZXRldWlkX3J1bih2b2lkKTsKCnBNb2R1bGUgbW9kID0KeyAic2V0 ZXVpZCIsIE5VTEwsIEhPT0tfU1lTLCBzZXRldWlkX2luaXQsIHNldGV1aWRf Y2xlYW51cCwgTlVMTCwgTlVMTCB9OwoKcFN5c2hvb2sgc2hvb2sgPSAKeyAi c2V0ZXVpZCIsIHNldGV1aWRfcnVuLCBOVUxMLCBOVUxMLCAwLCBOVUxMLCBO VUxMIH07Cgp2b2lkIHNldGV1aWRfaW5pdCh2b2lkKQp7CglwcmludGYoIlNF VEVVSUQgSU5JVFxuIik7CglzaG9vay5yZWYgPSBzdGF0X2NyZWF0ZSgpOwoJ c2hvb2subGFzdCA9IHN0YXRfY3JlYXRlKCk7Cn0KCgp2b2lkIHNldGV1aWRf Y2xlYW51cCh2b2lkKQp7CglwcmludGYoIlNFVEVVSUQgQ0xFQU5VUFxuIik7 CglzdGF0X2Rlc3Ryb3koc2hvb2sucmVmKTsKCXN0YXRfZGVzdHJveShzaG9v ay5sYXN0KTsKfQoKdm9pZCBzZXRldWlkX3J1bih2b2lkKQp7CglzZXRldWlk KDApOwp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYW5rb3Uvc3JjL21vZHVsZXMvdm0u YwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAw MDAwMAAwMDAwMDAwADAwMDAwMDA3MzExADAwMDAwMDAwMDAwADAxMjA1MQAg MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAB1c3RhciAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjaW5j bHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgoj aW5jbHVkZSA8c3lzL3N0YXQuaD4KI2luY2x1ZGUgPGZjbnRsLmg+CgojaW5j bHVkZSAiLi4vaW5jbHVkZS9tb2R1bGVzLmgiCiNpbmNsdWRlICIuLi9pbmNs dWRlL2hvb2tzLmgiCiNpbmNsdWRlICIuLi9pbmNsdWRlL3N0YXRzLmgiCgoj IGlmIGRlZmluZWQoX19zMzkwX18pIHx8IGRlZmluZWQoX19zMzkweF9fKQoj ICBkZWZpbmUgQ1BVSU5GT19GSUxFICAgICIvcHJvYy9zeXNpbmZvIgojICBk ZWZpbmUgQ1BVSU5GT19GT1JNQVQgICIlNjRbXlx0IDpdJSpbIDpdJTI1Nlte XG5dJWMiCiMgZWxzZQojICBkZWZpbmUgQ1BVSU5GT19GSUxFICAgICIvcHJv Yy9jcHVpbmZvIgojICBkZWZpbmUgQ1BVSU5GT19GT1JNQVQgICIlNjRbXlx0 Ol1cdDolMjU2W15cbl0lYyIKIyBlbmRpZgoKdm9pZCB2bV9pbml0KHZvaWQp Owp2b2lkIHZtX2NsZWFudXAodm9pZCk7CnZvaWQgdm1fcnVuKGNoYXIgKiwg cFN0YXRsaXN0ICosIHBTdGF0bGlzdCAqLCBkb3VibGUpOwoKcE1vZHVsZSBt b2QgPQp7ICJ2bSIsIE5VTEwsIEhPT0tfUFJJTlQsIHZtX2luaXQsIHZtX2Ns ZWFudXAsIE5VTEwsIE5VTEwgfTsKCnBQcmludGhvb2sgcGhvb2sgPQp7ICJ2 bSIsIHZtX3J1biwgTlVMTCwgTlVMTCwgfTsKCmNoYXIgKnByb2NpbmZvX2tl eXNbXSA9IHsKCS8qIC0tcHJvY2Vzc29yIC0taGFyZHdhcmUtcGxhdGZvcm0g Ki8KCSNpZiBkZWZpbmVkKF9fYWxwaGFfXykKCQkiY3B1IG1vZGVsIiwgInN5 c3RlbSB0eXBlIgoJI2VsaWYgZGVmaW5lZChfX2FybV9fKQoJCSJQcm9jZXNz b3IiLCAiSGFyZHdhcmUiCgkjZWxpZiBkZWZpbmVkKGJmaW4pCgkJIkNQVSIs ICJCT0FSRCBOYW1lIgoJI2VsaWYgZGVmaW5lZChfX2NyaXNfXykKCQkiY3B1 IiwgImNwdSBtb2RlbCIKCSNlbGlmIGRlZmluZWQoX19mcnZfXykKCQkiQ1BV LUNvcmUiLCAiU3lzdGVtIgoJI2VsaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX3g4Nl82NF9fKQoJCS8vIm1vZGVsIG5hbWUiLCAidmVuZG9y X2lkIgoJCSJjcHUgTUh6IgoJI2VsaWYgZGVmaW5lZChfX2lhNjRfXykKCQki ZmFtaWx5IiwgInZlbmRvciIKCSNlbGlmIGRlZmluZWQoX19ocHBhX18pCgkJ ImNwdSIsICJtb2RlbCIKCSNlbGlmIGRlZmluZWQoX19tNjhrX18pCgkJIkNQ VSIsICJNTVUiCgkjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQoJCSJjcHUgbW9k ZWwiLCAic3lzdGVtIHR5cGUiCgkjZWxpZiBkZWZpbmVkKF9fcG93ZXJwY19f KSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCgkJImNwdSIsICJtYWNoaW5l IgoJI2VsaWYgZGVmaW5lZChfX3MzOTBfXykgfHwgZGVmaW5lZChfX3MzOTB4 X18pCgkJIlR5cGUiLCAiTWFudWZhY3R1cmVyIgoJI2VsaWYgZGVmaW5lZChf X3NoX18pCgkJImNwdSB0eXBlIiwgIm1hY2hpbmUiCgkjZWxpZiBkZWZpbmVk KHNwYXJjKSB8fCBkZWZpbmVkKF9fc3BhcmNfXykKCQkidHlwZSIsICJjcHUi CgkjZWxpZiBkZWZpbmVkKF9fdmF4X18pCgkJImNwdSB0eXBlIiwgImNwdSIK CSNlbHNlCgkJInVua25vd24iLCAidW5rbm93biIKCSNlbmRpZgp9OwoKLy9S SVAgRlJPTSBodHRwOi8vZGV2LmdlbnRvby5vcmcvfnZhcGllci9kaXN0L2Nv cmV1dGlscy02LjQtcGF0Y2hlcy0xLjAudGFyLmJ6MgpzdGF0aWMgdm9pZCBf X2VhdF9jcHVpbmZvX3NwYWNlKGNoYXIgKmJ1ZikKewoJLyogZmlyc3QgZWF0 IHRyYWlsaW5nIHNwYWNlICovCgljaGFyICp0bXAgPSBidWYgKyBzdHJsZW4o YnVmKSAtIDE7Cgl3aGlsZSAodG1wID4gYnVmICYmIGlzc3BhY2UoKnRtcCkp CgkJKnRtcC0tID0gJ1wwJzsKCS8qIHRoZW4gZWF0IGxlYWRpbmcgc3BhY2Ug Ki8KCXRtcCA9IGJ1ZjsKCXdoaWxlICgqdG1wICYmIGlzc3BhY2UoKnRtcCkp CgkJdG1wKys7CglpZiAodG1wICE9IGJ1ZikKCQltZW1tb3ZlKGJ1ZiwgdG1w LCBzdHJsZW4odG1wKSsxKTsKfQoKc3RhdGljIGludCBfX2xpbnV4X3Byb2Np bmZvIChpbnQgeCwgY2hhciAqaW5mb1tdLCBjaGFyICpmc3RyLCBzaXplX3Qg cykKewoJRklMRSAqZnA7CgoJaWYgKChmcCA9IGZvcGVuKENQVUlORk9fRklM RSwgInIiKSkgIT0gTlVMTCkgewoJCWNoYXIga2V5WzY1XSwgdmFsdWVbMjU3 XSwgZW9sLCAqcmV0ID0gTlVMTDsKCgkJd2hpbGUgKGZzY2FuZihmcCwgQ1BV SU5GT19GT1JNQVQsIGtleSwgdmFsdWUsICZlb2wpICE9IEVPRikgewoJCQlf X2VhdF9jcHVpbmZvX3NwYWNlKGtleSk7CgkJCWlmICghc3RyY21wKGtleSwg aW5mb1t4XSkpIHsKCQkJCV9fZWF0X2NwdWluZm9fc3BhY2UodmFsdWUpOwoJ CQkJcmV0ID0gdmFsdWU7CgkJCQlicmVhazsKCQkJfQoJCQlpZiAoZW9sICE9 ICdcbicpIHsKCQkJCS8qIHdlIG5lZWQgdHdvIGZzY2FuZidzIGhlcmUgaW4g Y2FzZSB0aGUgcHJldmlvdXMKCQkJCSAqIGxlbmd0aCBsaW1pdCBjYXVzZWQg dXMgdG8gcmVhZCByaWdodCB1cCB0byB0aGUKCQkJCSAqIG5ld2xpbmUgLi4u IGRvaW5nICIlKlteXG5dXG4iIHdvbnQgZWF0IHRoZSBuZXdsaW5lCgkJCQkg Ki8KCQkJCWZzY2FuZihmcCwgIiUqW15cbl0iKTsKCQkJCWZzY2FuZihmcCwg IlxuIik7CgkJCX0KCQl9CgkJZmNsb3NlKGZwKTsKCgkJaWYgKHJldCkgewoJ CQlzdHJuY3B5KGZzdHIsIHJldCwgcyk7CgkJCXJldHVybiAwOwoJCX0KCX0K CglyZXR1cm4gLTE7Cn0KCnZvaWQgdm1faW5pdCh2b2lkKQp7CglwcmludGYo IlBSSU5UIElOSVRcbiIpOwp9CgoKdm9pZCB2bV9jbGVhbnVwKHZvaWQpCnsK CXByaW50ZigiUFJJTlQgQ0xFQU5VUFxuIik7Cn0KCnZvaWQgdm1fcnVuKGNo YXIgKm5hbWUsIHBTdGF0bGlzdCAqcmVmLCBwU3RhdGxpc3QgKmxhc3QsIGRv dWJsZSBzY2FsYXIpCnsKICAvLwlwcmludGYoIlBSSU5UXG4iKTsKICBpbnQg aTsKICBGSUxFICpmZDsKICBwUGljICpwOwogIGludCBtYXgsIHBvc21heDsK ICAvKnN0cnVjdCB1dHNuYW1lIHN0OwogIGNoYXIgcHJvY2Vzc29yWzI1N107 CiAgY2hhciBwYXRoWzEwMjRdOwoKICB1bmFtZSgmc3QpOwogIAogIGlmKCFz dHJjbXAoc3Quc3lzbmFtZSwgIkxpbnV4IikpCiAgICB7CiAgICAgIF9fbGlu dXhfcHJvY2luZm8oMCwgIHByb2NpbmZvX2tleXMsIHByb2Nlc3Nvciwgc2l6 ZW9mIHByb2Nlc3Nvcik7CiAgICAgIHByaW50ZigiUFJPQyAlc1xuIiwgcHJv Y2Vzc29yKTsKICAgICAgaWYoIXN0cm5jbXAoc3QucmVsZWFzZSwgIjIuNiIs IDMpKQoJewoJICBtZW1zZXQocGF0aCwgJ1wwJywgc2l6ZW9mKHBhdGgpKTsK CSAgc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLCAidm0vTGludXgvMi42 LyVzLSVzXG4iLCBwcm9jZXNzb3IsIG5hbWUpOwoJICBwcmludGYoIlBBVEgg JXNcbiIsIHBhdGgpOwoJfQoJfSovCiAgCiAgCiAgcHJpbnRmKCJTdGF0cyBm b3IgJXMgc2l6ZW9mKCVzKSA6ICVkXG4iLCBuYW1lLCBuYW1lLCByZWYtPnNp emUpOwogIAogIG1heCA9IHBvc21heCA9IC0xOwogIAogIHAgPSByZWYtPmhl YWQ7CQogIHdoaWxlKHApCiAgICB7CiAgICAgIGlmKHAtPm5iID4gbWF4KQoJ ewoJICBwb3NtYXggPSBwLT50aWNrczsKCSAgbWF4ID0gcC0+bmI7Cgl9CiAg ICAgIAogICAgICAvLwlwcmludGYoIj09PSBUSUNLUyAlZCA9PiAlZCA9PT1c biIsIHAtPnRpY2tzLCBwLT5uYik7CiAgICAgIHAgPSBwLT5uZXh0OwogICAg fQogIAogIHByaW50ZigiTUFYICVkID0gJWRcbiIsIHBvc21heCwgbWF4KTsK ICBpZihwb3NtYXggPT0gMSB8fCBwb3NtYXggPT0gMjk5OTkpCiAgICB7CiAg ICAgIHByaW50ZigiVk0gZGV0ZWN0ZWQgISEhXG4iKTsKCiAgICB9CiAgCiB9 CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYW5r b3Uvc3JjL21vZHVsZXMvb3duZWQuYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAADAwMDA2NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAxNTA2ADAw MDAwMDAwMDAwADAxMjU0MwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRl IDxzeXMvc3RhdC5oPgojaW5jbHVkZSA8ZmNudGwuaD4KCiNpbmNsdWRlICIu Li9pbmNsdWRlL21vZHVsZXMuaCIKI2luY2x1ZGUgIi4uL2luY2x1ZGUvaG9v a3MuaCIKI2luY2x1ZGUgIi4uL2luY2x1ZGUvc3RhdHMuaCIKCnZvaWQgb3du ZWRfaW5pdCh2b2lkKTsKdm9pZCBvd25lZF9jbGVhbnVwKHZvaWQpOwp2b2lk IG93bmVkX3J1bihjaGFyICosIHBTdGF0bGlzdCAqLCBwU3RhdGxpc3QgKiwg ZG91YmxlKTsKCnBNb2R1bGUgbW9kID0KeyAib3duZWQiLCBOVUxMLCBIT09L X1BSSU5ULCBvd25lZF9pbml0LCBvd25lZF9jbGVhbnVwLCBOVUxMLCBOVUxM IH07CgpwUHJpbnRob29rIHBob29rID0KeyAib3duZWQiLCBvd25lZF9ydW4s IE5VTEwsIE5VTEwsIH07Cgp2b2lkIG93bmVkX2luaXQodm9pZCkKewoJcHJp bnRmKCJPV05FRCBJTklUXG4iKTsKfQoKCnZvaWQgb3duZWRfY2xlYW51cCh2 b2lkKQp7CglwcmludGYoIk9XTkVEIENMRUFOVVBcbiIpOwp9Cgp2b2lkIG93 bmVkX3J1bihjaGFyICpuYW1lLCBwU3RhdGxpc3QgKnJlZiwgcFN0YXRsaXN0 ICpsYXN0LCBkb3VibGUgc2NhbGFyKQp7CiAgCiAgcHJpbnRmKCJDaGVja2lu ZyAlcyAuLi4uXG4iLCBuYW1lKTsKICBwcmludGYoIlNjYWxhciAlZlxuIiwg c2NhbGFyKTsKCiAgaWYoc2NhbGFyIDwgMC40KQogICAgewogICAgICBwcmlu dGYoIlx0SEFIQSAlcyBpcyBvd25lZCAhXG4iLCBuYW1lKTsKICAgIH0KICBl bHNlCiAgICB7CiAgICAgIHByaW50ZigiXHQlcyBzZWVtcyB0byBiZSBzYWZl IDooXG4iLCBuYW1lKTsKICAgIH0KICAKICBwcmludGYoIlxuIik7Cn0KAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAYW5rb3Uvc3JjL21vZHVsZXMuYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAz MDA1ADAwMDAwMDAwMDAwADAxMTQyMwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAjaW5jbHVkZSAiaW5jbHVkZS9tb2R1bGVz LmgiCgpwTW9kdWxlICpmaW5kX21vZHVsZShwTW9kdWxlbGlzdCAqaGVhZCwg Y2hhciAqbmFtZSkKewogIHBNb2R1bGUgKm1vZCA9IGhlYWQtPmhlYWQ7Cgog IHdoaWxlKG1vZCkKICAgIHsKICAgICAgaWYoIXN0cmNtcChtb2QtPm5hbWUs IG5hbWUpKQoJcmV0dXJuIG1vZDsKICAgICAgCiAgICAgIG1vZCA9IG1vZC0+ bmV4dDsKICAgIH0KICAKICByZXR1cm4gTlVMTDsKfQoKcE1vZHVsZSAqbG9h ZF9tb2R1bGUocE1vZHVsZWxpc3QgKmhlYWQsIGNoYXIgKm5hbWUpCnsKICBj aGFyICplcnJvcjsKICB2b2lkICpoYW5kbGU7CiAgcE1vZHVsZSAqbW9kOwog IGNoYXIgKnRuYW1lOwogIAogIG1vZCA9IGZpbmRfbW9kdWxlKGhlYWQsIG5h bWUpOwogIGlmKG1vZCAhPSBOVUxMKQogICAgcmV0dXJuIE5VTEw7CiAgCiAg dG5hbWUgPSAoY2hhciAqKW1hbGxvYyhzdHJsZW4obmFtZSkrIHN0cmxlbigi c3JjL21vZHVsZXMvIikgKyA0KTsKICBiemVybyh0bmFtZSwgc3RybGVuKG5h bWUpKyBzdHJsZW4oInNyYy9tb2R1bGVzLyIpICsgNCk7CiAgc3ByaW50Zih0 bmFtZSwgInNyYy9tb2R1bGVzLyVzLnNvIiwgbmFtZSk7CiAgLy8gIHByaW50 ZigibmFtZSAlc1xuIiwgdG5hbWUpOwogIAogIGhhbmRsZSA9IGRsb3Blbih0 bmFtZSwgUlRMRF9OT1d8UlRMRF9MT0NBTCk7CiAgaWYoaGFuZGxlID09IE5V TEwpCiAgICB7CiAgICAgIHByaW50ZigiZXJyb3IxICVzXG4iLCBkbGVycm9y KCkpOwogICAgICByZXR1cm4gTlVMTDsKICAgIH0KICAKICBtb2QgPSBkbHN5 bShoYW5kbGUsICJtb2QiKTsKICBpZigoZXJyb3IgPSBkbGVycm9yKCkpICE9 IE5VTEwpCiAgICB7CiAgICAgIHByaW50ZigiZXJyb3IyICVzXG4iLCBlcnJv cik7CiAgICAgIGRsY2xvc2UoaGFuZGxlKTsKICAgICAgcmV0dXJuIE5VTEw7 CiAgICB9CiAgCiAgLy8gIHByaW50ZigiTU9EICVzIDB4JXhcbiIsIG1vZC0+ bmFtZSwgKHVuc2lnbmVkIGludCloZWFkKTsKICAKICBtb2QtPmhhbmRsZSA9 IGhhbmRsZTsKICAKICBMSVNUX0FERChoZWFkLCBtb2QpOwogIAogIG1vZC0+ aW5pdCgpOwogIAogIGZyZWUodG5hbWUpOwogIHJldHVybiBOVUxMOwp9Cgpp bnQgdW5sb2FkX21vZHVsZXMocE1vZHVsZWxpc3QgKmhlYWQpCnsKICBwTW9k dWxlICptb2QsICpuZXh0OwogIAogIG1vZCA9IGhlYWQtPmhlYWQ7CiAgd2hp bGUobW9kKQogICAgewogICAgICBuZXh0ID0gbW9kLT5uZXh0OwogICAgICB1 bmxvYWRfbW9kdWxlKGhlYWQsIG1vZC0+bmFtZSk7CiAgICAgIAogICAgICBt b2QgPSBuZXh0OwogICAgfQogIAogIHJldHVybiAwOwp9CgppbnQgdW5sb2Fk X21vZHVsZShwTW9kdWxlbGlzdCAqaGVhZCwgY2hhciAqbmFtZSkKewogIHBN b2R1bGUgKm1vZDsKCiAgbW9kID0gZmluZF9tb2R1bGUoaGVhZCwgbmFtZSk7 CiAgaWYobW9kID09IE5VTEwpCiAgICByZXR1cm4gLTE7CiAgCiAgbW9kLT5j bGVhbnVwKCk7CiAgTElTVF9ERUwoaGVhZCwgbW9kKTsKICAKICBkbGNsb3Nl KG1vZC0+aGFuZGxlKTsKCQogIHJldHVybiAwOwp9CgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFu a291L3NyYy9NYWtlZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAwMDAwNjQ0ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwMDUzMQAw MDAwMDAwMDAwMAAwMTEyNTAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAQ0MgPSBnY2MKQ0ZMQUdTID0gLWcgLVdhbGwgLWMK T0JKRUNUU1NSQyA9IG1haW4uYyBzdGF0cy5jIG1vZHVsZXMuYyBob29rcy5j Ck9CSkVDVFMgPSBtYWluLm8gc3RhdHMubyBtb2R1bGVzLm8gaG9va3MubwoK YWxsOiBhbmtvdQoKYW5rb3U6ICR7T0JKRUNUU30KCm1haW4ubzogbWFpbi5j Cgkke0NDfSAke0NGTEFHU30gbWFpbi5jCgpzdGF0cy5vOiBzdGF0cy5jCgkk e0NDfSAke0NGTEFHU30gc3RhdHMuYwoKbW9kdWxlcy5vOiBtb2R1bGVzLmMK CSR7Q0N9ICR7Q0ZMQUdTfSBtb2R1bGVzLmMKCmhvb2tzLm86IGhvb2tzLmMK CSR7Q0N9ICR7Q0ZMQUdTfSBob29rcy5jCgpjbGVhbjogCglybSAtZiAqLm8K AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhbmtvdS9NYWtlZmls ZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAw MDY0NAAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDA0MDQAMDAwMDAwMDAwMDAA MDEwNDYwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAENDID0gZ2NjCk9CSkVDVFMgPSBzcmMvbWFpbi5vIHNyYy9zdGF0cy5v IHNyYy9tb2R1bGVzLm8gc3JjL2hvb2tzLm8KCmFsbDoKCUAoY2Qgc3JjICYm ICQoTUFLRSkpCglAKGNkIHNyYy9tb2R1bGVzICYmICQoTUFLRSkpCgkke0ND fSAtbyBhbmtvdSAke09CSkVDVFN9IC1sZ3NsIC1sZ3NsY2JsYXMgLWxkbAoK Y2xlYW46CglAKGNkIHNyYyAmJiAkKE1BS0UpIGNsZWFuKQoJQChjZCBzcmMv bW9kdWxlcyAmJiAkKE1BS0UpIGNsZWFuKQoJcm0gLWYgYW5rb3UKAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== ==== Utilisation : Génération FP : ./ankou -r FILE Vérification FP : ./ankou -c FILE |------------------------------------------------------------------[ EOF ]----| |-----------------------------------------------------------------------------|