From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nilesh Subject: RE: port forwarding form IP range Date: Mon, 13 Mar 2006 03:39:25 -0800 (PST) Message-ID: <20060313113925.39109.qmail@web50511.mail.yahoo.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0-778296341-1142249965=:38030" Content-Transfer-Encoding: 8bit Return-path: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: netfilter-bounces@lists.netfilter.org Errors-To: netfilter-bounces@lists.netfilter.org To: Nilesh , edvin.seferovic@kolp.at, netfilter@lists.netfilter.org --0-778296341-1142249965=:38030 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Content-Id: Content-Disposition: inline Sorry earlier mail was without attchment. --- Nilesh wrote: > no there is only Forward default chain. > I am confused , I have attached herewith my > rc.firewall could you please look into.If I am > going > wrong way. > > Thanks > Nilesh, > > --- Seferovic Edvin wrote: > > > -i eth1 -o eth1 ??? How is this suppose to work? > Is > > there any forward chain > > on one interface? > > > > iptables -A FORWARD -s 192.168.0.10 -i eth1 -d > > 192.168.0.1 -o eth1 -p tcp --sport 1024:65535 > > --dport > > 3128 -j ACCEPT. > > > > Regards, > > > > Edvin > > > > --- Rob Sterenborg wrote: > > > > > On Mon, March 13, 2006 09:53, Nilesh wrote: > > > > Thanks Leandro, > > > > > > > > I have tried with this rules but unfortunately > > not > > > > working. > > > > Squid server running on the 192.168.0.3 and > its > > > > working fine. I have not installed any > firewall > > > on > > > > the 192.168.0.3. > > > > In my Internet browser settings If I chnage > the > > > > settings from 192.168.0.1:3128 to > > 192.168.0.3:3128 > > > I > > > > can surf the web. > > > > but If I dont change to 192.168.0.3:3128 proxy > > > > settings I get the connection timout error. > > > > > > > > I think DNAT is not working > > > > > > Probably you tell Netfilter to do DNAT, but are > > not > > > allowing it. > > > Do you have a FORWARD rule that allows this > > traffic > > > or is your policy ACCEPT ? > > > > > > Please don't top-post. > > > > > > > > > Gr, > > > Rob > > > > > > > > > > --- Leandro Silva wrote: > > > > > > > >> Hello ! > > > >> > > > >> You can use something like that: > > > >> > > > >> iptables -I PREROUTING -t nat -s 192.168.0.10 > > -p > > > tcp > > > >> --dport 80 -j > > > >> DNAT --to 192.168.0.3:3128 > > > >> iptables -I PREROUTING -t nat -s 192.168.0.10 > > -p > > > tcp > > > >> --dport 3128 -j > > > >> DNAT --to 192.168.0.3:3128 > > > >> > > > >> If you have iprange compiled for iptables you > > can > > > >> use: > > > >> > > > >> iptables -I PREROUTING -t nat -m iprange > > > --src-range > > > >> 192.168.0.10-192.168.0.20 -p tcp --dport 80 > -j > > > DNAT > > > >> --to > > > >> 192.168.0.3:3128 > > > >> iptables -I PREROUTING -t nat -m iprange > > > --src-range > > > >> 192.168.0.10-192.168.0.20 -p tcp --dport 3128 > > -j > > > >> DNAT --to > > > >> 192.168.0.3:3128 > > > >> > > > >> I hope this can help, > > > >> Leandro > > > >> > > > >> 2006/3/11, Nilesh : > > > >> > Dear all, > > > >> > > > > >> > I have two squid proxy servers and two ISP > > > >> > > > > >> > 1) 192.168.0.1 port 3128 > > > >> > 2) 192.168.0.3 port 3128 > > > >> > > > > >> > We have around 70 comps assigned IP's > between > > > >> > 192.168.0.4 to 192.168.0.250 > > > >> > The default proxy we are using is > 192.168.0.1 > > > >> which is > > > >> > on the ISP 1. > > > >> > Now I have configured 192.168.0.3 squid > proxy > > > >> server > > > >> > on ISP 2 line. > > > >> > Both ISP 1 and ISP 2 are landing > (connected) > > on > > > >> the > > > >> > same Switch. > > > >> > > > > >> > Now I want setup the request coming from IP > > > range > > > >> > (192.168.0.10 to 192.168.0.20) for the > > > >> > 192.168.0.1:3128 > > > >> > Will be forward to 192.168.0.3:3128 > > > >> > So the users from this IP range will access > > > only > > > >> > 192.168.0.3 proxy server. > > > >> > > > > >> > Could any one please help me which rules > > should > > > I > > > >> use > > > >> > in IPTABLES . > > > >> > > > > >> > I have attached herewith my rc.firewall > file. > > > >> > > > > >> > Please help me. > > > >> > > > > >> > Regards > > > >> > Nilesh. > > > > > > > > > > > > > > > > > > __________________________________________________ > > Do You Yahoo!? > > Tired of spam? Yahoo! Mail has the best spam > > protection around > > http://mail.yahoo.com > > > > __________________________________________________ > > Do You Yahoo!? > > Tired of spam? Yahoo! Mail has the best spam > > protection around > > http://mail.yahoo.com > > > > > > > > > > > __________________________________________________ > Do You Yahoo!? > Tired of spam? Yahoo! Mail has the best spam > protection around > http://mail.yahoo.com > > __________________________________________________ > Do You Yahoo!? > Tired of spam? Yahoo! Mail has the best spam > protection around > http://mail.yahoo.com > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com --0-778296341-1142249965=:38030 Content-Type: application/octet-stream; name="rc.firewall" Content-Transfer-Encoding: base64 Content-Description: 543152633-rc.firewall Content-Disposition: attachment; filename="rc.firewall" IyEvYmluL3NoCiMKIyByYy5maXJld2FsbC0yLjQtc3Ryb25nZXIKIwpGV1ZF Uj0wLjgwcwoKIyAgICAgICAgICBBbiBleGFtcGxlIG9mIGEgc3Ryb25nZXIg SVBUQUJMRVMgZmlyZXdhbGwgd2l0aCBJUCBNYXNxdWVyYWRlIAojICAgICAg ICAgIHN1cHBvcnQgZm9yIDIuNC54IGtlcm5lbHMuICAKIwojIExvZzoKIwoj ICAgMC44MHMgLSBBZGRlZCBhIERJU0FCTEVEIGlwX25hdF9pcmMga2VybmVs IG1vZHVsZSBzZWN0aW9uLCBjaGFuZ2VkIHRoZQojICAgICAgICAgICBkZWZh dWx0IG9mIHRoZSBpcF9jb25udHJhY2tfaXJjIHRvIE5PVCBsb2FkIGJ5IGRl ZmF1bHQsIGFuZCAKIyAgICAgICAgICAgYWRkZWQgYWRkaXRpb25hbCBrZXJu ZWwgbW9kdWxlIGNvbW1lbnRzCiMgICAwLjc5cyAtIHJ1bGVzZXQgbm93IHVz ZXMgbW9kcHJvYmUgaW5zdGVhZCBvZiBpbnNtb2QKIyAgIDAuNzhzIC0gUkVK RUNUIGlzIG5vdCBhIGxlZ2FsIHBvbGljeSB5ZXQ7IGJhY2sgdG8gRFJPUAoj ICAgMC43N3MgLSBDaGFuZ2VkIHRoZSBkZWZhdWx0IGJsb2NrIGJlaGF2aW9y IHRvIFJFSkVDVCBub3QgRFJPUAojICAgMC43NnMgLSBBZGRlZCBhIGNvbW1l bnQgYWJvdXQgdGhlIE9QVElPTkFMIFdXVyBydWxlc2V0IGFuZCBhIGNvbW1l bnQKIyAgICAgICAgICAgd2hlcmUgdG8gcHV0IG9wdGlvbmFsIFBPUlRGVyBj b21tYW5kcwojICAgMC43NXMgLSBBZGRlZCBjbGFyaWZpY2F0aW9uIHRoYXQg UFBQb0UgdXNlcnMgbmVlZCB0byB1c2UKIyAgICAgICAgICAgInBwcDAiIGlu c3RlYWQgb2YgImV0aDAiIGZvciB0aGVpciBleHRlcm5hbCBpbnRlcmZhY2UK IyAgIDAuNzRzIC0gQ2hhbmdlZCB0aGUgRVhUSVAgY29tbWFuZCB0byB3b3Jr IG9uIE5PTi1FbmdsaXNoIGRpc3Ryb3MKIyAgIDAuNzNzIC0gQWRkZWQgY29t bWVudHMgaW4gdGhlIG91dHB1dCBzZWN0aW9uIHRoYXQgREhDUGQgaXMgb3B0 aW9uYWwKIyAgICAgICAgICAgYW5kIGNoYW5nZWQgdGhlIGRlZmF1bHQgc2V0 dGluZ3MgdG8gZGlzYWJsZWQKIyAgIDAuNzJzIC0gQ2hhbmdlZCB0aGUgZmls dGVyIGZyb20gdGhlIElOVE5FVCB0byB0aGUgSU5USVAgdG8gYmUKIyAgICAg ICAgICAgc3RhdGVmdWw7IG1vdmVkIHRoZSBjb21tYW5kIFZBUnMgdG8gdGhl IHRvcCBhbmQgbWFkZSB0aGUKIyAgICAgICAgICAgcmVzdCBvZiB0aGUgc2Ny aXB0IHRvIHVzZSB0aGVtCiMgICAwLjcwcyAtIEFkZGVkIGEgZGlzYWJsZWQg ZXhhbXBsZXMgZm9yIGFsbG93aW5nIGludGVybmFsIERIQ1AgIAojICAgICAg ICAgICBhbmQgZXh0ZXJuYWwgV1dXIGFjY2VzcyB0byB0aGUgc2VydmVyCiMg ICAwLjYzcyAtIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJUkMgbW9kdWxlCiMg ICAwLjYycyAtIEluaXRpYWwgdmVyc2lvbiBiYXNlZCB1cG9uIHRoZSBiYXNp YyAyLjQueCByYy5maXJld2FsbAoKCmVjaG8gLWUgIlxuTG9hZGluZyBTVFJP TkdFUiByYy5maXJld2FsbCAtIHZlcnNpb24gJEZXVkVSLi5cbiIKCgojIFRo ZSBsb2NhdGlvbiBvZiB2YXJpb3VzIGlwdGFibGVzIGFuZCBvdGhlciBzaGVs bCBwcm9ncmFtcwojCiMgICBJZiB5b3VyIExpbnV4IGRpc3RyaWJ1dGlvbiBj YW1lIHdpdGggYSBjb3B5IG9mIGlwdGFibGVzLCBtb3N0CiMgICBsaWtlbHkg aXQgaXMgbG9jYXRlZCBpbiAvc2Jpbi4gIElmIHlvdSBtYW51YWxseSBjb21w aWxlZCAKIyAgIGlwdGFibGVzLCB0aGUgZGVmYXVsdCBsb2NhdGlvbiBpcyBp biAvdXNyL2xvY2FsL3NiaW4KIwojICoqIFBsZWFzZSB1c2UgdGhlICJ3aGVy ZWlzIGlwdGFibGVzIiBjb21tYW5kIHRvIGZpZ3VyZSBvdXQgCiMgKiogd2hl cmUgeW91ciBjb3B5IGlzIGFuZCBjaGFuZ2UgdGhlIHBhdGggYmVsb3cgdG8g cmVmbGVjdCAKIyAqKiB5b3VyIHNldHVwCiMKSVBUQUJMRVM9L3NiaW4vaXB0 YWJsZXMKI0lQVEFCTEVTPS91c3IvbG9jYWwvc2Jpbi9pcHRhYmxlcwojCkxT TU9EPS9zYmluL2xzbW9kCkRFUE1PRD0vc2Jpbi9kZXBtb2QKTU9EUFJPQkU9 L3NiaW4vbW9kcHJvYmUKR1JFUD0vYmluL2dyZXAKQVdLPS9iaW4vYXdrClNF RD0vYmluL3NlZApJRkNPTkZJRz0vc2Jpbi9pZmNvbmZpZwoKCiNTZXR0aW5n IHRoZSBFWFRFUk5BTCBhbmQgSU5URVJOQUwgaW50ZXJmYWNlcyBmb3IgdGhl IG5ldHdvcmsKIwojICBFYWNoIElQIE1hc3F1ZXJhZGUgbmV0d29yayBuZWVk cyB0byBoYXZlIGF0IGxlYXN0IG9uZQojICBleHRlcm5hbCBhbmQgb25lIGlu dGVybmFsIG5ldHdvcmsuICBUaGUgZXh0ZXJuYWwgbmV0d29yawojICBpcyB3 aGVyZSB0aGUgbmF0dGluZyB3aWxsIG9jY3VyIGFuZCB0aGUgaW50ZXJuYWwg bmV0d29yawojICBzaG91bGQgcHJlZmVyYWJseSBiZSBhZGRyZXNzZWQgd2l0 aCBhIFJGQzE5MTggcHJpdmF0ZSBhZGRyZXNzCiMgIHNjaGVtZS4KIwojICBG b3IgdGhpcyBleGFtcGxlLCAiZXRoMCIgaXMgZXh0ZXJuYWwgYW5kICJldGgx IiBpcyBpbnRlcm5hbCIKIwojICBOT1RFOiAgSWYgdGhpcyBkb2VzbnQgRVhB Q1RMWSBmaXQgeW91ciBjb25maWd1cmF0aW9uLCB5b3UgbXVzdCAKIyAgICAg ICAgIGNoYW5nZSB0aGUgRVhUSUYgb3IgSU5USUYgdmFyaWFibGVzIGFib3Zl LiBGb3IgZXhhbXBsZTogCiMKIyAgICAgICAgICAgIElmIHlvdSBhcmUgYSBQ UFBvRSBvciBhbmFsb2cgbW9kZW0gdXNlcjoKIwojICAgICAgICAgICAgICAg RVhUSUY9InBwcDAiIAojCkVYVElGPSJwcHAwIgpJTlRJRj0iZXRoMSIKZWNo byAiICBFeHRlcm5hbCBJbnRlcmZhY2U6ICAkRVhUSUYiCmVjaG8gIiAgSW50 ZXJuYWwgSW50ZXJmYWNlOiAgJElOVElGIgplY2hvICIgIC0tLSIKCiMgU3Bl Y2lmeSB5b3VyIFN0YXRpYyBJUCBhZGRyZXNzIGhlcmUgb3IgbGV0IHRoZSBz Y3JpcHQgdGFrZSBjYXJlIG9mIGl0IAojIGZvciB5b3UuCiMKIyAgIElmIHlv dSBwcmVmZXIgdG8gdXNlIFNUQVRJQyBhZGRyZXNzZXMgaW4geW91ciBmaXJl d2FsbHMsIHVuLSMgb3V0IHRoZQojICAgc3RhdGljIGV4YW1wbGUgYmVsb3cg YW5kICMgb3V0IHRoZSBkeW5hbWljIGxpbmUuICBJZiB5b3UgZG9uJ3QgY2Fy ZSwKIyAgIGp1c3QgbGVhdmUgdGhpcyBzZWN0aW9uIGFsb25lLgojCiMgICBJ ZiB5b3UgaGF2ZSBhIERZTkFNSUMgSVAgYWRkcmVzcywgdGhlIHJ1bGVzZXQg YWxyZWFkeSB0YWtlcyBjYXJlIG9mCiMgICB0aGlzIGZvciB5b3UuICBQbGVh c2Ugbm90ZSB0aGF0IHRoZSBkaWZmZXJlbnQgc2luZ2xlIGFuZCBkb3VibGUg cXVvdGUgCiMgICBjaGFyYWN0ZXJzIGFuZCB0aGUgc2NyaXB0IE1BVFRFUi4K IwojCiMgICBESENQIHVzZXJzOgojICAgLS0tLS0tLS0tLS0KIyAgIElmIHlv dSBnZXQgeW91ciBUQ1AvSVAgYWRkcmVzcyB2aWEgREhDUCwgKip5b3Ugd2ls bCBuZWVkICoqIHRvIGVuYWJsZSB0aGUgCiMgICAjZWQgb3V0IGNvbW1hbmQg YmVsb3cgdW5kZXJuZWF0aCB0aGUgUFBQIHNlY3Rpb24gQU5EIHJlcGxhY2Ug dGhlIHdvcmQgCiMgICAiZXRoMCIgd2l0aCB0aGUgbmFtZSBvZiB5b3VyIEVY VEVSTkFMIEludGVybmV0IGNvbm5lY3Rpb24gKHBwcDAsIGlwcHAwLCAKIyAg IGV0Yykgb24gdGhlIGxpbmVzIGZvciAicHBwLWlwIiBhbmQgImV4dGlwIi4g IFlvdSBzaG91bGQgYWxzbyBub3RlIHRoYXQgdGhlIAojICAgREhDUCBzZXJ2 ZXIgY2FuIGFuZCB3aWxsIGNoYW5nZSBJUCBhZGRyZXNzZXMgb24geW91LiAg VG8gZGVhbCB3aXRoIHRoaXMsIAojICAgdXNlcnMgc2hvdWxkIGNvbmZpZ3Vy ZSB0aGVpciBESENQIGNsaWVudCB0byByZS1ydW4gdGhlIHJjLmZpcmV3YWxs IHJ1bGVzZXQgCiMgICBldmVyeXRpbWUgdGhlIERIQ1AgbGVhc2UgaXMgcmVu ZXdlZC4KIwojICAgICBOT1RFICMxOiAgU29tZSBESENQIGNsaWVudHMgbGlr ZSB0aGUgb3JpZ2luYWwgInB1bXAiICh0aGUgbmV3ZXIKIyAgICAgICAgICAg ICAgIHZlcnNpb25zIGhhdmUgYmVlbiBmaXhlZCkgZGlkIE5PVCBoYXZlIHRo ZSBhYmlsaXR5IHRvIHJ1biAKIyAgICAgICAgICAgICAgIHNjcmlwdHMgYWZ0 ZXIgYSBsZWFzZS1yZW5ldy4gIEJlY2F1c2Ugb2YgdGhpcywgeW91IG5lZWQg dG8gCiMgICAgICAgICAgICAgICByZXBsYWNlIGl0IHdpdGggc29tZXRoaW5n IGxpa2UgImRoY3BjZCIgb3IgImRoY2xpZW50Ii4KIwojICAgICBOT1RFICMy OiAgVGhlIHN5bnRheCBmb3IgImRoY3BjZCIgaGFzIGNoYW5nZWQgaW4gcmVj ZW50IHZlcnNpb25zLgojCiMgICAgICAgICAgICAgICBPbGRlciB2ZXJzaW9u cyB1c2VkIHN5bnRheCBsaWtlOgojICAgICAgICAgICAgICAgICAgICAgICAg IGRoY3BjZCAtYyAvZXRjL3JjLmQvcmMuZmlyZXdhbGwgZXRoMAojCiMgICAg ICAgICAgICAgICBOZXdlciB2ZXJzaW9ucyBleGVjdXRlIGEgZmlsZSBjYWxs ZWQgL2V0Yy9kaGNwYy9kaGNwY2QtZXRoMC5leGUKIwojICAgICBOT1RFICMz OiAgRm9yIFB1bXAgdXNlcnMsIHB1dCB0aGUgZm9sbG93aW5nIGxpbmUgaW4g L2V0Yy9wdW1wLmNvbmY6CiMKIyAgICAgICAgICAgICAgICAgICBzY3JpcHQg L2V0Yy9yYy5kL3JjLmZpcmV3YWxsCiMKIyAgIFBQUCB1c2VyczoKIyAgIC0t LS0tLS0tLS0KIyAgIElmIHlvdSBhcmVuJ3QgYWxyZWFkeSBhd2FyZSwgdGhl IC9ldGMvcHBwL2lwLXVwIHNjcmlwdCBpcyBhbHdheXMgcnVuIHdoZW4gCiMg ICBhIFBQUCBjb25uZWN0aW9uIGNvbWVzIHVwLiAgQmVjYXVzZSBvZiB0aGlz LCB3ZSBjYW4gbWFrZSB0aGUgcnVsZXNldCBnbyBhbmQgCiMgICBnZXQgdGhl IG5ldyBQUFAgSVAgYWRkcmVzcyBhbmQgdXBkYXRlIHRoZSBzdHJvbmcgZmly ZXdhbGwgcnVsZXNldC4KIwojICAgSWYgdGhlIC9ldGMvcHBwL2lwLXVwIGZp bGUgYWxyZWFkeSBleGlzdHMsIHlvdSBzaG91bGQgZWRpdCBpdCBhbmQgYWRk IGEgbGluZQojICAgY29udGFpbmluZyAiL2V0Yy9yYy5kL3JjLmZpcmV3YWxs IiBuZWFyIHRoZSBlbmQgb2YgdGhlIGZpbGUuCiMKIyAgIElmIHlvdSBkb24n dCBhbHJlYWR5IGhhdmUgYSAvZXRjL3BwcC9pcC11cCBzY2NyaXB0LCB5b3Ug bmVlZCB0byBjcmVhdGUgdGhlIAojICAgZm9sbG93aW5nIGxpbmsgdG8gcnVu IHRoZSAvZXRjL3JjLmQvcmMuZmlyZXdhbGwgc2NyaXB0LgojCiMgICAgICAg bG4gLXMgL2V0Yy9yYy5kL3JjLmZpcmV3YWxsIC9ldGMvcHBwL2lwLXVwCiMK IyAgICogWW91IHRoZW4gd2FudCB0byBlbmFibGUgdGhlICNlZCBvdXQgc2hl bGwgY29tbWFuZCBiZWxvdyAqCiMKIwojIERldGVybWluZSB0aGUgZXh0ZXJu YWwgSVAgYXV0b21hdGljYWxseToKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiMKIyAgVGhlIGZvbGxvd2luZyBsaW5lIHdp bGwgZGV0ZXJtaW5lIHlvdXIgZXh0ZXJuYWwgSVAgYWRkcmVzcy4gIFRoaXMK IyAgbGluZSBpcyBzb21ld2hhdCBjb21wbGV4IGFuZCBjb25mdXNpbmcgYnV0 IGl0IHdpbGwgYWxzbyB3b3JrIGZvcgojICBhbGwgTk9OLUVuZ2xpc2ggTGlu dXggZGlzdHJpYnV0aW9uczoKIwpFWFRJUD0iYCRJRkNPTkZJRyAkRVhUSUYg fCAkQVdLIFwKIC8kRVhUSUYvJ3tuZXh0fS8ve3NwbGl0KCQwLGEsIjoiKTtz cGxpdChhWzJdLGEsIiAiKTtwcmludCBhWzFdO2V4aXR9J2AiCgoKIyBGb3Ig dXNlcnMgd2hvIHdpc2ggdG8gdXNlIFNUQVRJQyBJUCBhZGRyZXNzZXM6CiMK IyAgIyBvdXQgdGhlIEVYVElQIGxpbmUgYWJvdmUgYW5kIHVuLSMgb3V0IHRo ZSBFWFRJUCBsaW5lIGJlbG93CiMKI0VYVElQPSJ5b3VyLnN0YXRpYy5QUFAu YWRkcmVzcyIKI0VYVElQPSIyMDMuMTI5LjIyNC4xNDkiCmVjaG8gIiAgRXh0 ZXJuYWwgSVA6ICRFWFRJUCIKZWNobyAiICAtLS0iCgoKIyBBc3NpZ24gdGhl IGludGVybmFsIFRDUC9JUCBuZXR3b3JrIGFuZCBJUCBhZGRyZXNzCklOVE5F VD0iMTkyLjE2OC4wLjAvMjQiCklOVElQPSIxOTIuMTY4LjAuMS8yNCIKZWNo byAiICBJbnRlcm5hbCBOZXR3b3JrOiAkSU5UTkVUIgplY2hvICIgIEludGVy bmFsIElQOiAgICAgICRJTlRJUCIKZWNobyAiICAtLS0iCgoKCgojIFNldHRp bmcgYSBmZXcgb3RoZXIgbG9jYWwgdmFyaWFibGVzCiMKVU5JVkVSU0U9IjAu MC4wLjAvMCIKCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiM9PSBObyBl ZGl0aW5nIGJleW9uZCB0aGlzIGxpbmUgaXMgcmVxdWlyZWQgZm9yIGluaXRp YWwgTUFTUSB0ZXN0aW5nID09CgojIE5lZWQgdG8gdmVyaWZ5IHRoYXQgYWxs IG1vZHVsZXMgaGF2ZSBhbGwgcmVxdWlyZWQgZGVwZW5kZW5jaWVzCiMKZWNo byAiICAtIFZlcmlmeWluZyB0aGF0IGFsbCBrZXJuZWwgbW9kdWxlcyBhcmUg b2siCiRERVBNT0QgLWEKCmVjaG8gLWVuICIgICAgTG9hZGluZyBrZXJuZWwg bW9kdWxlczogIgoKIyBXaXRoIHRoZSBuZXcgSVBUQUJMRVMgY29kZSwgdGhl IGNvcmUgTUFTUSBmdW5jdGlvbmFsaXR5IGlzIG5vdyBlaXRoZXIKIyBtb2R1 bGFyIG9yIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gIFRoaXMgSE9XVE8g c2hvd3MgQUxMIElQVEFCTEVTCiMgb3B0aW9ucyBhcyBNT0RVTEVTLiAgSWYg eW91ciBrZXJuZWwgaXMgY29tcGlsZWQgY29ycmVjdGx5LCB0aGVyZSBpcwoj IE5PIG5lZWQgdG8gbG9hZCB0aGUga2VybmVsIG1vZHVsZXMgbWFudWFsbHku ICAKIwojICBOT1RFOiBUaGUgZm9sbG93aW5nIGl0ZW1zIGFyZSBsaXN0ZWQg T05MWSBmb3IgaW5mb3JtYXRpb25hbCByZWFzb25zLgojICAgICAgICBUaGVy ZSBpcyBubyByZWFzb24gdG8gbWFudWFsIGxvYWQgdGhlc2UgbW9kdWxlcyB1 bmxlc3MgeW91cgojICAgICAgICBrZXJuZWwgaXMgZWl0aGVyIG1pcy1jb25m aWd1cmVkIG9yIHlvdSBpbnRlbnRpb25hbGx5IGRpc2FibGVkCiMgICAgICAg IHRoZSBrZXJuZWwgbW9kdWxlIGF1dG9sb2FkZXIuCiMKCiMgVXBvbiB0aGUg Y29tbWFuZHMgb2Ygc3RhcnRpbmcgdXAgSVAgTWFzcSBvbiB0aGUgc2VydmVy LCB0aGUKIyBmb2xsb3dpbmcga2VybmVsIG1vZHVsZXMgd2lsbCBiZSBhdXRv bWF0aWNhbGx5IGxvYWRlZDoKIwojIE5PVEU6ICBPbmx5IGxvYWQgdGhlIElQ IE1BU1EgbW9kdWxlcyB5b3UgbmVlZC4gIEFsbCBjdXJyZW50IElQIE1BU1Eg CiMgICAgICAgIG1vZHVsZXMgYXJlIHNob3duIGJlbG93IGJ1dCBhcmUgY29t bWVudGVkIG91dCBmcm9tIGxvYWRpbmcuCiMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CgojTG9hZCB0aGUgbWFpbiBib2R5IG9mIHRoZSBJUFRBQkxFUyBtb2R1bGUg LSAiaXBfdGFibGVzIgojICAtIExvYWRlZCBhdXRvbWF0aWNhbGx5IHdoZW4g dGhlICJpcHRhYmxlcyIgY29tbWFuZCBpcyBpbnZva2VkCiMKIyAgLSBMb2Fk ZWQgbWFudWFsbHkgdG8gY2xlYW4gdXAga2VybmVsIGF1dG8tbG9hZGluZyB0 aW1pbmcgaXNzdWVzCiMKZWNobyAtZW4gImlwX3RhYmxlcywgIgojCiNWZXJp ZnkgdGhlIG1vZHVsZSBpc24ndCBsb2FkZWQuICBJZiBpdCBpcywgc2tpcCBp dAojCmlmIFsgLXogImAgJExTTU9EIHwgJEdSRVAgaXBfdGFibGVzIHwgJEFX SyB7J3ByaW50ICQxJ30gYCIgXTsgdGhlbgogICAkTU9EUFJPQkUgaXBfdGFi bGVzCmZpCgoKI0xvYWQgdGhlIElQVEFCTEVTIGZpbHRlcmluZyBtb2R1bGUg LSAiaXB0YWJsZV9maWx0ZXIiIAojCiMgIC0gTG9hZGVkIGF1dG9tYXRpY2Fs bHkgd2hlbiBmaWx0ZXIgcG9saWNpZXMgYXJlIGFjdGl2YXRlZAoKCiNMb2Fk IHRoZSBzdGF0ZWZ1bCBjb25uZWN0aW9uIHRyYWNraW5nIGZyYW1ld29yayAt ICJpcF9jb25udHJhY2siCiMKIyBUaGUgY29ubnRyYWNrICBtb2R1bGUgaW4g aXRzZWxmIGRvZXMgbm90aGluZyB3aXRob3V0IG90aGVyIHNwZWNpZmljIAoj IGNvbm50cmFjayBtb2R1bGVzIGJlaW5nIGxvYWRlZCBhZnRlcndhcmRzIHN1 Y2ggYXMgdGhlICJpcF9jb25udHJhY2tfZnRwIgojIG1vZHVsZQojCiMgIC0g VGhpcyBtb2R1bGUgaXMgbG9hZGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBNQVNR IGZ1bmN0aW9uYWxpdHkgaXMgCiMgICAgZW5hYmxlZCAKIwojICAtIExvYWRl ZCBtYW51YWxseSB0byBjbGVhbiB1cCBrZXJuZWwgYXV0by1sb2FkaW5nIHRp bWluZyBpc3N1ZXMKIwplY2hvIC1lbiAiaXBfY29ubnRyYWNrLCAiCiMKI1Zl cmlmeSB0aGUgbW9kdWxlIGlzbid0IGxvYWRlZC4gIElmIGl0IGlzLCBza2lw IGl0CiMKaWYgWyAteiAiYCAkTFNNT0QgfCAkR1JFUCBpcF9jb25udHJhY2sg fCAkQVdLIHsncHJpbnQgJDEnfSBgIiBdOyB0aGVuCiAgICRNT0RQUk9CRSBp cF9jb25udHJhY2sKZmkKCgojTG9hZCB0aGUgRlRQIHRyYWNraW5nIG1lY2hh bmlzbSBmb3IgZnVsbCBGVFAgdHJhY2tpbmcKIwojIEVuYWJsZWQgYnkgZGVm YXVsdCAtLSBpbnNlcnQgYSAiIyIgb24gdGhlIG5leHQgbGluZSB0byBkZWFj dGl2YXRlCiMKZWNobyAtZSAiaXBfY29ubnRyYWNrX2Z0cCwgIgojCiNWZXJp ZnkgdGhlIG1vZHVsZSBpc24ndCBsb2FkZWQuICBJZiBpdCBpcywgc2tpcCBp dAojCmlmIFsgLXogImAgJExTTU9EIHwgJEdSRVAgaXBfY29ubnRyYWNrX2Z0 cCB8ICRBV0sgeydwcmludCAkMSd9IGAiIF07IHRoZW4KICAgJE1PRFBST0JF IGlwX2Nvbm50cmFja19mdHAKZmkKCgojTG9hZCB0aGUgSVJDIHRyYWNraW5n IG1lY2hhbmlzbSBmb3IgZnVsbCBJUkMgdHJhY2tpbmcKIwojIERpc2FibGVk IGJ5IGRlZmF1bHQgLS0gaW5zZXJ0IGEgIiMiIG9uIHRoZSBuZXh0IGZldyBs aW5lcyB0byBhY3RpdmF0ZQojCiMgZWNobyAtZW4gIiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaXBfY29ubnRyYWNrX2lyYywgIgojCiNWZXJpZnkg dGhlIG1vZHVsZSBpc24ndCBsb2FkZWQuICBJZiBpdCBpcywgc2tpcCBpdAoj CiMgaWYgWyAteiAiYCAkTFNNT0QgfCAkR1JFUCBpcF9jb25udHJhY2tfaXJj IHwgJEFXSyB7J3ByaW50ICQxJ30gYCIgXTsgdGhlbgojICAgICRNT0RQUk9C RSBpcF9jb25udHJhY2tfaXJjCiMgZmkKCgojTG9hZCB0aGUgZ2VuZXJhbCBJ UFRBQkxFUyBOQVQgY29kZSAtICJpcHRhYmxlX25hdCIKIyAgLSBMb2FkZWQg YXV0b21hdGljYWxseSB3aGVuIE1BU1EgZnVuY3Rpb25hbGl0eSBpcyB0dXJu ZWQgb24KIyAKIyAgLSBMb2FkZWQgbWFudWFsbHkgdG8gY2xlYW4gdXAga2Vy bmVsIGF1dG8tbG9hZGluZyB0aW1pbmcgaXNzdWVzCiMKZWNobyAtZW4gImlw dGFibGVfbmF0LCAiCiMKI1ZlcmlmeSB0aGUgbW9kdWxlIGlzbid0IGxvYWRl ZC4gIElmIGl0IGlzLCBza2lwIGl0CiMKaWYgWyAteiAiYCAkTFNNT0QgfCAk R1JFUCBpcHRhYmxlX25hdCB8ICRBV0sgeydwcmludCAkMSd9IGAiIF07IHRo ZW4KICAgJE1PRFBST0JFIGlwdGFibGVfbmF0CmZpCgoKI0xvYWRzIHRoZSBG VFAgTkFUIGZ1bmN0aW9uYWxpdHkgaW50byB0aGUgY29yZSBJUFRBQkxFUyBj b2RlCiMgUmVxdWlyZWQgdG8gc3VwcG9ydCBub24tUEFTViBGVFAuCiMKIyBF bmFibGVkIGJ5IGRlZmF1bHQgLS0gaW5zZXJ0IGEgIiMiIG9uIHRoZSBuZXh0 IGxpbmUgdG8gZGVhY3RpdmF0ZQojCmVjaG8gLWUgImlwX25hdF9mdHAiCiMK I1ZlcmlmeSB0aGUgbW9kdWxlIGlzbid0IGxvYWRlZC4gIElmIGl0IGlzLCBz a2lwIGl0CiMKaWYgWyAteiAiYCAkTFNNT0QgfCAkR1JFUCBpcF9uYXRfZnRw IHwgJEFXSyB7J3ByaW50ICQxJ30gYCIgXTsgdGhlbgogICAkTU9EUFJPQkUg aXBfbmF0X2Z0cApmaQoKCiNMb2FkcyB0aGUgSVJDIE5BVCBmdW5jdGlvbmFs aXR5IChmb3IgRENDKSBpbnRvIHRoZSBjb3JlIElQVEFCTEVTIGNvZGUKIwoj IERJU0FCTEVEIGJ5IGRlZmF1bHQgLS0gZGVsZXRlIHRoZSAiIyIgb24gdGhl IG5leHQgZmV3IGxpbmVzIHRvIGFjdGl2YXRlCiMKZWNobyAtZSAiaXBfbmF0 X2lyYyIKIwojVmVyaWZ5IHRoZSBtb2R1bGUgaXNuJ3QgbG9hZGVkLiAgSWYg aXQgaXMsIHNraXAgaXQKIwppZiBbIC16ICJgICRMU01PRCB8ICRHUkVQIGlw X25hdF9pcmMgfCAkQVdLIHsncHJpbnQgJDEnfSBgIiBdOyB0aGVuCiAgICAk TU9EUFJPQkUgaXBfbmF0X2lyYwpmaQoKCmVjaG8gIiAgLS0tIgoKIyBKdXN0 IHRvIGJlIGNvbXBsZXRlLCBoZXJlIGlzIGEgcGFydGlhbCBsaXN0IG9mIHNv bWUgb2YgdGhlIG90aGVyICAKIyBJUFRBQkxFUyBrZXJuZWwgbW9kdWxlcyBh bmQgdGhlaXIgZnVuY3Rpb24uICBQbGVhc2Ugbm90ZSB0aGF0IG1vc3QgCiMg b2YgdGhlc2UgbW9kdWxlcyAodGhlIGlwdCBvbmVzKSBhcmUgYXV0b21hdGlj YWxseSBsb2FkZWQgYnkgdGhlIAojIG1hc3RlciBrZXJuZWwgbW9kdWxlIGZv ciBwcm9wZXIgb3BlcmF0aW9uIGFuZCBkb24ndCBuZWVkIHRvIGJlIAojIG1h bnVhbGx5IGxvYWRlZC4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMg ICAgaXBfbmF0X3NubXBfYmFzaWMgLSB0aGlzIG1vZHVsZSBhbGxvd3MgZm9y IHByb3BlciBOQVRpbmcgb2Ygc29tZSAKIyAgICAgICAgICAgICAgICAgICAg ICAgIFNOTVAgdHJhZmZpYwojCiMgICAgaXB0YWJsZV9tYW5nbGUgICAgLSB0 aGlzIHRhcmdldCBhbGxvd3MgZm9yIHBhY2tldHMgdG8gYmUgCiMgICAgICAg ICAgICAgICAgICAgICAgICBtYW5pcHVsYXRlZCBmb3IgdGhpbmdzIGxpa2Ug dGhlIFRDUE1TUyAKIyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwg ZXRjLgojCiMgLS0KIwojICAgIGlwdF9tYXJrICAgICAgIC0gdGhpcyB0YXJn ZXQgbWFya3MgYSBnaXZlbiBwYWNrZXQgZm9yIGZ1dHVyZSBhY3Rpb24uCiMg ICAgICAgICAgICAgICAgICAgICBUaGlzIGF1dG9tYXRpY2FsbHkgbG9hZHMg dGhlIGlwdF9NQVJLIG1vZHVsZQojCiMgICAgaXB0X3RjcG1zcyAgICAgLSB0 aGlzIHRhcmdldCBhbGxvd3MgdG8gbWFuaXB1bGF0ZSB0aGUgVENQIE1TUwoj ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIGZvciBicmFpbmRlYWQgcmVt b3RlIGZpcmV3YWxscy4KIyAgICAgICAgICAgICAgICAgICAgIFRoaXMgYXV0 b21hdGljYWxseSBsb2FkcyB0aGUgaXB0X1RDUE1TUyBtb2R1bGUKIwojICAg IGlwdF9saW1pdCAgICAgIC0gdGhpcyB0YXJnZXQgYWxsb3dzIGZvciBwYWNr ZXRzIHRvIGJlIGxpbWl0ZWQgdG8KIyAgICAgICAgICAgICAgICAgICAgIHRv IG1hbnkgaGl0cyBwZXIgc2VjL21pbi9ocgojCiMgICAgaXB0X211bHRpcG9y dCAgLSB0aGlzIG1hdGNoIGFsbG93cyBmb3IgdGFyZ2V0cyB3aXRoaW4gYSBy YW5nZQojICAgICAgICAgICAgICAgICAgICAgb2YgcG9ydCBudW1iZXJzIHZz LiBsaXN0aW5nIGVhY2ggcG9ydCBpbmRpdmlkdWFsbHkKIwojICAgIGlwdF9z dGF0ZSAgICAgIC0gdGhpcyBtYXRjaCBhbGxvd3MgdG8gY2F0Y2ggcGFja2V0 cyB3aXRoIHZhcmlvdXMKIyAgICAgICAgICAgICAgICAgICAgIElQIGFuZCBU Q1AgZmxhZ3Mgc2V0L3Vuc2V0CiMKIyAgICBpcHRfdW5jbGVhbiAgICAtIHRo aXMgbWF0Y2ggYWxsb3dzIHRvIGNhdGNoIHBhY2tldHMgdGhhdCBoYXZlIGlu dmFsaWQKIyAgICAgICAgICAgICAgICAgICAgIElQL1RDUCBmbGFncyBzZXQK IwojICAgIGlwdGFibGVfZmlsdGVyIC0gdGhpcyBtb2R1bGUgYWxsb3dzIGZv ciBwYWNrZXRzIHRvIGJlIERST1BwZWQsIAojICAgICAgICAgICAgICAgICAg ICAgUkVKRUNUZWQsIG9yIExPR2dlZC4gIFRoaXMgbW9kdWxlIGF1dG9tYXRp Y2FsbHkgCiMgICAgICAgICAgICAgICAgICAgICBsb2FkcyB0aGUgZm9sbG93 aW5nIG1vZHVsZXM6CiMKIyAgICAgICAgICAgICAgICAgICAgIGlwdF9MT0cg LSB0aGlzIHRhcmdldCBhbGxvd3MgZm9yIHBhY2tldHMgdG8gYmUgCiMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VkCiMKIyAgICAgICAg ICAgICAgICAgICAgIGlwdF9SRUpFQ1QgLSB0aGlzIHRhcmdldCBEUk9QcyB0 aGUgcGFja2V0IGFuZCByZXR1cm5zIAojICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGEgY29uZmlndXJhYmxlIElDTVAgcGFja2V0IGJhY2sg dG8gdGhlIAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bmRlci4KCgojQ1JJVElDQUw6ICBFbmFibGUgSVAgZm9yd2FyZGluZyBzaW5j ZSBpdCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IHNpbmNlCiMKIyAgICAgICAg ICAgUmVkaGF0IFVzZXJzOiAgeW91IG1heSB0cnkgY2hhbmdpbmcgdGhlIG9w dGlvbnMgaW4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgL2V0Yy9zeXNj b25maWcvbmV0d29yayBmcm9tOgojCiMgICAgICAgICAgICAgICAgICAgICAg IEZPUldBUkRfSVBWND1mYWxzZQojICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0bwojICAgICAgICAgICAgICAgICAgICAgICBGT1JXQVJEX0lQVjQ9 dHJ1ZQojCmVjaG8gIiAgRW5hYmxpbmcgZm9yd2FyZGluZy4uIgplY2hvICIx IiA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9mb3J3YXJkCgoKIyBEeW5hbWlj IElQIHVzZXJzOgojCiMgICBJZiB5b3UgZ2V0IHlvdXIgSVAgYWRkcmVzcyBk eW5hbWljYWxseSBmcm9tIFNMSVAsIFBQUCwgb3IgREhDUCwgCiMgICBlbmFi bGUgdGhlIGZvbGxvd2luZyBvcHRpb24uICBUaGlzIGVuYWJsZXMgZHluYW1p Yy1hZGRyZXNzIGhhY2tpbmcKIyAgIHdoaWNoIG1ha2VzIHRoZSBsaWZlIHdp dGggRGlhbGQgYW5kIHNpbWlsYXIgcHJvZ3JhbXMgbXVjaCBlYXNpZXIuCiMK ZWNobyAiICBFbmFibGluZyBEeW5hbWljQWRkci4uIgplY2hvICIxIiA+IC9w cm9jL3N5cy9uZXQvaXB2NC9pcF9keW5hZGRyCgplY2hvICIgIC0tLSIKCiMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBFbmFibGUgU3Ry b25nZXIgSVAgZm9yd2FyZGluZyBhbmQgTWFzcXVlcmFkaW5nCiMKIyAgTk9U RTogIEluIElQVEFCTEVTIHNwZWFrLCBJUCBNYXNxdWVyYWRpbmcgaXMgYSBm b3JtIG9mIFNvdXJjZU5BVCBvciBTTkFULgojCiMgIE5PVEUgIzI6ICBUaGUg Zm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgZm9yIGFuIGludGVybmFsIExBTiBh ZGRyZXNzIGluIHRoZQojICAgICAgICAgICAgMTkyLjE2OC4xLnggbmV0d29y ayB3aXRoIGEgMjU1LjI1NS4yNTUuMCBvciBhICIyNCIgYml0IHN1Ym5ldCAK IyAgICAgICAgICAgIG1hc2sgY29ubmVjdGluZyB0byB0aGUgSW50ZXJuZXQg b24gZXh0ZXJuYWwgaW50ZXJmYWNlICJldGgwIi4gIAojICAgICAgICAgICAg VGhpcyBleGFtcGxlIHdpbGwgTUFTUSBpbnRlcm5hbCB0cmFmZmljIG91dCB0 byB0aGUgSW50ZXJuZXQgCiMgICAgICAgICAgICBidXQgbm90IGFsbG93IG5v bi1pbml0aWF0ZWQgdHJhZmZpYyBpbnRvIHlvdXIgaW50ZXJuYWwgbmV0d29y ay4KIwojICAgICAgICAgICAgCiMgICAgICAgICAqKiBQbGVhc2UgY2hhbmdl IHRoZSBhYm92ZSBuZXR3b3JrIG51bWJlcnMsIHN1Ym5ldCBtYXNrLCBhbmQg eW91ciAKIyAgICAgICAgICoqKiBJbnRlcm5ldCBjb25uZWN0aW9uIGludGVy ZmFjZSBuYW1lIHRvIG1hdGNoIHlvdXIgc2V0dXAKIyAgICAgICAgIAoKI0Ns ZWFyaW5nIGFueSBwcmV2aW91cyBjb25maWd1cmF0aW9uCiMKIyAgVW5sZXNz IHNwZWNpZmllZCwgdGhlIGRlZmF1bHRzIGZvciBJTlBVVCwgT1VUUFVULCBh bmQgRk9SV0FSRCB0byBEUk9QCiMKIyAgICBZb3UgQ0FOTk9UIGNoYW5nZSB0 aGlzIHRvIFJFSkVDVCBhcyBpdCBpc24ndCBhIHZhaWxkIHBvbGljeSBzZXR0 aW5nLgojICAgIElmIHlvdSB3YW50IFJFSkVDVCwgeW91IG11c3QgZXhwbGlj dGx5IFJFSkVDVCBhdCB0aGUgZW5kIG9mIGEgZ2l2aW5nIAojICAgIElOUFVU LCBPVVRQVVQsIG9yIEZPUldBUkQgY2hhaW4KIwplY2hvICIgIENsZWFyaW5n IGFueSBleGlzdGluZyBydWxlcyBhbmQgc2V0dGluZyBkZWZhdWx0IHBvbGlj eSB0byBEUk9QLi4iCiRJUFRBQkxFUyAtUCBJTlBVVCBEUk9QCiRJUFRBQkxF UyAtRiBJTlBVVCAKJElQVEFCTEVTIC1QIE9VVFBVVCBEUk9QCiRJUFRBQkxF UyAtRiBPVVRQVVQgCiRJUFRBQkxFUyAtUCBGT1JXQVJEIEFDQ0VQVAokSVBU QUJMRVMgLUYgRk9SV0FSRCAKJElQVEFCTEVTIC1GIC10IG5hdAoKI05vdCBu ZWVkZWQgYW5kIGl0IHdpbGwgb25seSBsb2FkIHRoZSB1bm5lZWRlZCBrZXJu ZWwgbW9kdWxlCiRJUFRBQkxFUyAtRiAtdCBtYW5nbGUKIwojIEZsdXNoIHRo ZSB1c2VyIGNoYWluLi4gaWYgaXQgZXhpc3RzCmlmIFsgLW4gImAkSVBUQUJM RVMgLUwgfCAkR1JFUCBkcm9wLWFuZC1sb2ctaXRgIiBdOyB0aGVuCiAgICRJ UFRBQkxFUyAtRiBkcm9wLWFuZC1sb2ctaXQKZmkKIwojIERlbGV0ZSBhbGwg VXNlci1zcGVjaWZpZWQgY2hhaW5zCiRJUFRBQkxFUyAtWAojCiMgUmVzZXQg YWxsIElQVEFCTEVTIGNvdW50ZXJzCiRJUFRBQkxFUyAtWgoKCiNDb25maWd1 cmluZyBzcGVjaWZpYyBDSEFJTlMgZm9yIGxhdGVyIHVzZSBpbiB0aGUgcnVs ZXNldAojCiMgIE5PVEU6ICBTb21lIHVzZXJzIHByZWZlciB0byBoYXZlIHRo ZWlyIGZpcmV3YWxsIHNpbGVudGx5CiMgICAgICAgICAiRFJPUCIgcGFja2V0 cyB3aGlsZSBvdGhlcnMgcHJlZmVyIHRvIHVzZSAiUkVKRUNUIgojICAgICAg ICAgdG8gc2VuZCBJQ01QIGVycm9yIG1lc3NhZ2VzIGJhY2sgdG8gdGhlIHJl bW90ZSAKIyAgICAgICAgIG1hY2hpbmUuICBUaGUgZGVmYXVsdCBpcyAiUkVK RUNUIiBidXQgZmVlbCBmcmVlIHRvCiMgICAgICAgICBjaGFuZ2UgdGhpcyBi ZWxvdy4KIwojIE5PVEU6IFdpdGhvdXQgdGhlIC0tbG9nLWxldmVsIHNldCB0 byAiaW5mbyIsIGV2ZXJ5IHNpbmdsZQojICAgICAgIGZpcmV3YWxsIGhpdCB3 aWxsIGdvdG8gQUxMIHZ0eXMuICBUaGlzIGlzIGEgdmVyeSBiaWcKIyAgICAg ICBwYWluLgojCmVjaG8gIiAgQ3JlYXRpbmcgYSBEUk9QIGNoYWluLi4iCiRJ UFRBQkxFUyAtTiBkcm9wLWFuZC1sb2ctaXQKJElQVEFCTEVTIC1BIGRyb3At YW5kLWxvZy1pdCAtaiBMT0cgLS1sb2ctbGV2ZWwgaW5mbyAKJElQVEFCTEVT IC1BIGRyb3AtYW5kLWxvZy1pdCAtaiBSRUpFQ1QKCmVjaG8gLWUgIlxuICAg LSBMb2FkaW5nIElOUFVUIHJ1bGVzZXRzIgoKCiMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCiMgSU5QVVQ6IEluY29taW5nIHRyYWZmaWMgZnJvbSB2YXJp b3VzIGludGVyZmFjZXMuICBBbGwgcnVsZXNldHMgYXJlIAojICAgICAgICBh bHJlYWR5IGZsdXNoZWQgYW5kIHNldCB0byBhIGRlZmF1bHQgcG9saWN5IG9m IERST1AuIAojCgojIGxvb3BiYWNrIGludGVyZmFjZXMgYXJlIHZhbGlkLgoj CiRJUFRBQkxFUyAtQSBJTlBVVCAtaSBsbyAtcyAkVU5JVkVSU0UgLWQgJFVO SVZFUlNFIC1qIEFDQ0VQVAoKCiMgbG9jYWwgaW50ZXJmYWNlLCBsb2NhbCBt YWNoaW5lcywgZ29pbmcgYW55d2hlcmUgaXMgdmFsaWQKIwokSVBUQUJMRVMg LUEgSU5QVVQgLWkgJElOVElGIC1zICRJTlRORVQgLWQgJFVOSVZFUlNFIC1q IEFDQ0VQVAoKIyByZW1vdGUgaW50ZXJmYWNlLCBjbGFpbWluZyB0byBiZSBs b2NhbCBtYWNoaW5lcywgSVAgc3Bvb2ZpbmcsIGdldCBsb3N0CiMKJElQVEFC TEVTIC1BIElOUFVUIC1pICRFWFRJRiAtcyAkSU5UTkVUIC1kICRVTklWRVJT RSAtaiBkcm9wLWFuZC1sb2ctaXQKCgojIGV4dGVybmFsIGludGVyZmFjZSwg ZnJvbSBhbnkgc291cmNlLCBmb3IgSUNNUCB0cmFmZmljIGlzIHZhbGlkCiMK IyAgSWYgeW91IHdvdWxkIGxpa2UgeW91ciBtYWNoaW5lIHRvICJwaW5nIiBm cm9tIHRoZSBJbnRlcm5ldCwgCiMgIGVuYWJsZSB0aGlzIG5leHQgbGluZQoj CiMkSVBUQUJMRVMgLUEgSU5QVVQgLWkgJEVYVElGIC1wIElDTVAgLXMgJFVO SVZFUlNFIC1kICRFWFRJUCAtaiBBQ0NFUFQKCgojIHJlbW90ZSBpbnRlcmZh Y2UsIGFueSBzb3VyY2UsIGdvaW5nIHRvIHBlcm1hbmVudCBQUFAgYWRkcmVz cyBpcyB2YWxpZAojCiRJUFRBQkxFUyAtQSBJTlBVVCAtaSAkRVhUSUYgLXMg JFVOSVZFUlNFIC1kICRFWFRJUCAtaiBBQ0NFUFQKCgojIEFsbG93IGFueSBy ZWxhdGVkIHRyYWZmaWMgY29taW5nIGJhY2sgdG8gdGhlIE1BU1Egc2VydmVy IGluCiMKJElQVEFCTEVTIC1BIElOUFVUIC1pICRFWFRJRiAtcyAkVU5JVkVS U0UgLWQgJEVYVElQIC1tIHN0YXRlIC0tc3RhdGUgXAogRVNUQUJMSVNIRUQs UkVMQVRFRCAtaiBBQ0NFUFQKCgojIC0tLS0tIEJlZ2luIE9QVElPTkFMIElO UFVUIFNlY3Rpb24gLS0tLS0KIwoKIyBESENQZCAtIEVuYWJsZSB0aGUgZm9s bG93aW5nIGxpbmVzIGlmIHlvdSBydW4gYW4gSU5URVJOQUwgREhDUGQgc2Vy dmVyCiMKIyRJUFRBQkxFUyAtQSBJTlBVVCAtaSAkSU5USUYgLXAgdGNwIC0t c3BvcnQgNjggLS1kcG9ydCA2NyAtaiBBQ0NFUFQKIyRJUFRBQkxFUyAtQSBJ TlBVVCAtaSAkSU5USUYgLXAgdWRwIC0tc3BvcnQgNjggLS1kcG9ydCA2NyAt aiBBQ0NFUFQKCiMgSFRUUGQgLSBFbmFibGUgdGhlIGZvbGxvd2luZyBsaW5l cyBpZiB5b3UgcnVuIGFuIEVYVEVSTkFMIFdXVyBzZXJ2ZXIKIwojICAgIE5P VEU6ICBUaGlzIGlzIE5PVCBuZWVkZWQgZm9yIHNpbXBseSBlbmFibGluZyBQ T1JURlcuICBUaGlzIGlzIE9OTFkgCiMgICAgICAgICAgIGZvciB1c2VycyB0 aGF0IHBsYW4gb24gcnVubmluZyBBcGFjaGUgb24gdGhlIE1BU1Egc2VydmVy IGl0c2VsZgojCiNlY2hvIC1lICIgICAgICAtIEFsbG93aW5nIEVYVEVSTkFM IGFjY2VzcyB0byB0aGUgV1dXIHNlcnZlciIKIyRJUFRBQkxFUyAtQSBJTlBV VCAtaSAkRVhUSUYgLW0gc3RhdGUgLS1zdGF0ZSBORVcsRVNUQUJMSVNIRUQs UkVMQVRFRCBcCiMgLXAgdGNwIC1zICRVTklWRVJTRSAtZCAkRVhUSVAgLS1k cG9ydCA4MCAtaiBBQ0NFUFQKCiMKIyAtLS0tLSBFbmQgT1BUSU9OQUwgSU5Q VVQgU2VjdGlvbiAtLS0tLQoKCgojIENhdGNoIGFsbCBydWxlLCBhbGwgb3Ro ZXIgaW5jb21pbmcgaXMgZGVuaWVkIGFuZCBsb2dnZWQuIAojCiRJUFRBQkxF UyAtQSBJTlBVVCAtcyAkVU5JVkVSU0UgLWQgJFVOSVZFUlNFIC1qIGRyb3At YW5kLWxvZy1pdAoKCmVjaG8gLWUgIiAgIC0gTG9hZGluZyBPVVRQVVQgcnVs ZXNldHMiCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9VVFBVVDog T3V0Z29pbmcgdHJhZmZpYyBmcm9tIHZhcmlvdXMgaW50ZXJmYWNlcy4gIEFs bCBydWxlc2V0cyBhcmUgCiMgICAgICAgICBhbHJlYWR5IGZsdXNoZWQgYW5k IHNldCB0byBhIGRlZmF1bHQgcG9saWN5IG9mIERST1AuIAojCgojIGxvb3Bi YWNrIGludGVyZmFjZSBpcyB2YWxpZC4KIwokSVBUQUJMRVMgLUEgT1VUUFVU IC1vIGxvIC1zICRVTklWRVJTRSAtZCAkVU5JVkVSU0UgLWogQUNDRVBUCgoK IyBsb2NhbCBpbnRlcmZhY2VzLCBhbnkgc291cmNlIGdvaW5nIHRvIGxvY2Fs IG5ldCBpcyB2YWxpZAojCiRJUFRBQkxFUyAtQSBPVVRQVVQgLW8gJElOVElG IC1zICRFWFRJUCAtZCAkSU5UTkVUIC1qIEFDQ0VQVAoKCiMgbG9jYWwgaW50 ZXJmYWNlLCBhbnkgc291cmNlIGdvaW5nIHRvIGxvY2FsIG5ldCBpcyB2YWxp ZAojCiRJUFRBQkxFUyAtQSBPVVRQVVQgLW8gJElOVElGIC1zICRJTlRJUCAt ZCAkSU5UTkVUIC1qIEFDQ0VQVAoKCiMgb3V0Z29pbmcgdG8gbG9jYWwgbmV0 IG9uIHJlbW90ZSBpbnRlcmZhY2UsIHN0dWZmZWQgcm91dGluZywgZGVueQoj CiRJUFRBQkxFUyAtQSBPVVRQVVQgLW8gJEVYVElGIC1zICRVTklWRVJTRSAt ZCAkSU5UTkVUIC1qIGRyb3AtYW5kLWxvZy1pdAoKCiMgYW55dGhpbmcgZWxz ZSBvdXRnb2luZyBvbiByZW1vdGUgaW50ZXJmYWNlIGlzIHZhbGlkCiMKJElQ VEFCTEVTIC1BIE9VVFBVVCAtbyAkRVhUSUYgLXMgJEVYVElQIC1kICRVTklW RVJTRSAtaiBBQ0NFUFQKCgojIC0tLS0tIEJlZ2luIE9QVElPTkFMIE9VVFBV VCBTZWN0aW9uIC0tLS0tCiMKCiMgREhDUGQgLSBFbmFibGUgdGhlIGZvbGxv d2luZyBsaW5lcyBpZiB5b3UgcnVuIGFuIElOVEVSTkFMIERIQ1BkIHNlcnZl cgojICAgICAgICAgLSBSZW1vdmUgQk9USCAjcyBhbGwgdGhlICNzIGlmIHlv dSBuZWVkIHRoaXMgZnVuY3Rpb25hbGl0eS4KIwojJElQVEFCTEVTIC1BIE9V VFBVVCAtbyAkSU5USUYgLXAgdGNwIC1zICRJTlRJUCAtLXNwb3J0IDY3IFwK IyAtZCAyNTUuMjU1LjI1NS4yNTUgLS1kcG9ydCA2OCAtaiBBQ0NFUFQKIyRJ UFRBQkxFUyAtQSBPVVRQVVQgLW8gJElOVElGIC1wIHVkcCAtcyAkSU5USVAg LS1zcG9ydCA2NyBcCiMgLWQgMjU1LjI1NS4yNTUuMjU1IC0tZHBvcnQgNjgg LWogQUNDRVBUCgojCiMgLS0tLS0gRW5kIE9QVElPTkFMIE9VVFBVVCBTZWN0 aW9uIC0tLS0tCgoKIyBDYXRjaCBhbGwgcnVsZSwgYWxsIG90aGVyIG91dGdv aW5nIGlzIGRlbmllZCBhbmQgbG9nZ2VkLiAKIwokSVBUQUJMRVMgLUEgT1VU UFVUIC1zICRVTklWRVJTRSAtZCAkVU5JVkVSU0UgLWogZHJvcC1hbmQtbG9n LWl0CgoKZWNobyAtZSAiICAgLSBMb2FkaW5nIEZPUldBUkQgcnVsZXNldHMi CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIEZPUldBUkQ6IEVuYWJs ZSBGb3J3YXJkaW5nIGFuZCB0aHVzIElQTUFTUQojCgojLSAtLS0tLSBCZWdp biBPUFRJT05BTCBGT1JXQVJEIFNlY3Rpb24gLS0tLS0KIwojIC0tLS0tIEVu ZCBPUFRJT05BTCBGT1JXQVJEIFNlY3Rpb24gLS0tLS0KCgplY2hvICIgICAg IC0gRldEOiBBbGxvdyBhbGwgY29ubmVjdGlvbnMgT1VUIGFuZCBvbmx5IGV4 aXN0aW5nL3JlbGF0ZWQgSU4iCiRJUFRBQkxFUyAtQSBGT1JXQVJEIC1pICRF WFRJRiAtbyAkSU5USUYgLW0gc3RhdGUgLS1zdGF0ZSBFU1RBQkxJU0hFRCxS RUxBVEVEIFwKIC1qIEFDQ0VQVAokSVBUQUJMRVMgLUEgRk9SV0FSRCAtaSAk SU5USUYgLW8gJEVYVElGIC1qIEFDQ0VQVAoKIyBDYXRjaCBhbGwgcnVsZSwg YWxsIG90aGVyIGZvcndhcmRpbmcgaXMgZGVuaWVkIGFuZCBsb2dnZWQuIAoj CiRJUFRBQkxFUyAtQSBGT1JXQVJEIC1qIGRyb3AtYW5kLWxvZy1pdAoKCiNl Y2hvICIgICAgIC0gTkFUOiBFbmFibGluZyBTTkFUIChNQVNRVUVSQURFKSBm dW5jdGlvbmFsaXR5IG9uICRFWFRJRiIKIwojTW9yZSBsaWJlcmFsIGZvcm0K IyRJUFRBQkxFUyAtdCBuYXQgLUEgUE9TVFJPVVRJTkcgLW8gJEVYVElGIC1q IE1BU1FVRVJBREUKIwojU3RyaWN0ZXIgZm9ybQojJElQVEFCTEVTIC10IG5h dCAtQSBQUkVST1VUSU5HIC1vICRFWFRJRiAtaiBTTkFUIC0tdG8gJEVYVElQ CiRJUFRBQkxFUyAtdCBuYXQgLUEgUFJFUk9VVElORyAtaSBldGgxIC1wIHRj cCAtLWRwb3J0IDgwIC1qIFJFRElSRUNUIC0tdG8tcG9ydHMgMTkyLjE2OC4w LjE6MzEyOAojJElQVEFCTEVTIC10IG5hdCAtQSBQUkVST1VUSU5HIC1pIGV0 aDEgLXAgdGNwIC0tZHBvcnQgODAgLWogRE5BVCAtLXRvIDE5Mi4xNjguMC4x OjMxMjggLXMgISAxOTIuMTY4LjAuMC8yNAokSVBUQUJMRVMgLUEgT1VUUFVU IC1qIEFDQ0VQVCAtbSBzdGF0ZSAtLXN0YXRlIE5FVyAtbyBldGgwIC1wIHRj cCAtLWRwb3J0IDgwCiRJUFRBQkxFUyAtdCBuYXQgLUEgUE9TVFJPVVRJTkcg LW8gJEVYVElGIC1qIFNOQVQgLS10by1zb3VyY2UgJEVYVElQCgokSVBUQUJM RVMgLUkgUFJFUk9VVElORyAtdCBuYXQgLXMgMTkyLjE2OC4wLjEwIC1wIHRj cCAtLWRwb3J0IDgwIC1qIEROQVQgLS10byAxOTIuMTY4LjAuMzozMTI4CiRJ UFRBQkxFUyAtSSBQUkVST1VUSU5HIC10IG5hdCAtcyAxOTIuMTY4LjAuMTAg LXAgdGNwIC0tZHBvcnQgMzEyOCAtaiBETkFUIC0tdG8gMTkyLjE2OC4wLjM6 MzEyOAokSVBUQUJMRVMgLUEgRk9SV0FSRCAtcyAxOTIuMTY4LjAuMTAgLWkg ZXRoMSAtZCAxOTIuMTY4LjAuMSAtbyBldGgxIC1wIHRjcCAtLXNwb3J0IDEw MjQ6NjU1MzUgLS1kcG9ydCAzMTI4IC1qIEFDQ0VQVAoKCiMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCmVjaG8gLWUgIlxuU3Ryb25nZXIgcmMuZmlyZXdh bGwtMi40ICRGV1ZFUiBkb25lLlxuIgo= --0-778296341-1142249965=:38030--