<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>32469</bug_id>
          
          <creation_ts>2009-12-12 02:01:35 -0800</creation_ts>
          <short_desc>[bzt] Make download commands declarative</short_desc>
          <delta_ts>2009-12-14 21:38:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>32468</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>171085</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-12 02:01:35 -0800</bug_when>
    <thetext>This is the last step in this grand refactoring.  We&apos;re finally able to realize the vision of declarative commands.  Yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171086</commentid>
    <comment_count>1</comment_count>
      <attachid>44736</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-12 02:03:08 -0800</bug_when>
    <thetext>Created attachment 44736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171088</commentid>
    <comment_count>2</comment_count>
      <attachid>44737</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-12 02:11:13 -0800</bug_when>
    <thetext>Created attachment 44737
The final file

The diff doesn&apos;t really due justice to this patch.  The final produce is much prettier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171699</commentid>
    <comment_count>3</comment_count>
      <attachid>44736</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-14 21:31:46 -0800</bug_when>
    <thetext>Comment on attachment 44736
Patch

Sweet jesus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171706</commentid>
    <comment_count>4</comment_count>
      <attachid>44736</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-14 21:38:52 -0800</bug_when>
    <thetext>Comment on attachment 44736
Patch

Clearing flags on attachment: 44736

Committed r52133: &lt;http://trac.webkit.org/changeset/52133&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171707</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-14 21:38:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44736</attachid>
            <date>2009-12-12 02:03:08 -0800</date>
            <delta_ts>2009-12-14 21:38:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32469-20091212020307.patch</filename>
            <type>text/plain</type>
            <size>14296</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA2NGE3ZmNkLi5kZjNlNzkyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjAgQEAKIAogICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBbYnp0XSBNYWtlIGRvd25s
b2FkIGNvbW1hbmRzIGRlY2xhcmF0aXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMjQ2OQorCisgICAgICAgIFRoaXMgcGF0Y2ggInByb3Blcmx5IiBm
YWN0b3JzIG1vc3Qgb2YgdGhlIGRvd25sb2FkIGNvbW1hbmRzLiAgVGhlc2UKKyAgICAgICAgY29t
bWFuZHMgYXJlIG5vdyBsYXJnZWx5IGRlY2xhcmF0aXZlLCB3aGljaCBpcyB0aGUgZmluYWwgc3Rl
cCBvZiB0aGlzCisgICAgICAgIGdyYW5kIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogU2NyaXB0
cy9tb2R1bGVzL2J1aWxkc3RlcHMucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NvbW1h
bmRzL2Rvd25sb2FkLnB5OgorCisyMDA5LTEyLTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAg
W2J6dF0gQWRkIEFic3RyYWN0UGF0Y2hTZXF1ZW5jaW5nQ29tbWFuZCB0byByZW1vdmUgcmVkdW5k
YW50IGNvZGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMyNDY4CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWlsZHN0
ZXBzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkc3RlcHMucHkKaW5kZXgg
YTAzMmUxZi4uMGQxYzA5ZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVz
L2J1aWxkc3RlcHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkc3Rl
cHMucHkKQEAgLTIxMCw2ICsyMTAsMTggQEAgY2xhc3MgRW5zdXJlQnVpbGRlcnNBcmVHcmVlblN0
ZXAoQWJzdHJhY3RTdGVwKToKICAgICAgICAgZXJyb3IoIkJ1aWxkZXJzIFslc10gYXJlIHJlZCwg
cGxlYXNlIGRvIG5vdCBjb21taXQuXG5TZWUgaHR0cDovLyVzLlxuUGFzcyAtLWlnbm9yZS1idWls
ZGVycyB0byBieXBhc3MgdGhpcyBjaGVjay4iICUgKCIsICIuam9pbihyZWRfYnVpbGRlcnNfbmFt
ZXMpLCBzZWxmLl90b29sLmJ1aWxkYm90LmJ1aWxkYm90X2hvc3QpKQogCiAKK2NsYXNzIEVuc3Vy
ZUxvY2FsQ29tbWl0SWZOZWVkZWQoQWJzdHJhY3RTdGVwKToKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgb3B0aW9ucyhjbHMpOgorICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgQ29tbWFu
ZE9wdGlvbnMubG9jYWxfY29tbWl0LAorICAgICAgICBdCisKKyAgICBkZWYgcnVuKHNlbGYsIHN0
YXRlKToKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5sb2NhbF9jb21taXQgYW5kIG5vdCBzZWxm
Ll90b29sLnNjbSgpLnN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoKToKKyAgICAgICAgICAgIGVycm9y
KCItLWxvY2FsLWNvbW1pdCBwYXNzZWQsIGJ1dCAlcyBkb2VzIG5vdCBzdXBwb3J0IGxvY2FsIGNv
bW1pdHMiICUgc2VsZi5fdG9vbC5zY20uZGlzcGxheV9uYW1lKCkpCisKKwogY2xhc3MgVXBkYXRl
Q2hhbmdlbG9nc1dpdGhSZXZpZXdlclN0ZXAoQWJzdHJhY3RTdGVwKToKICAgICBAY2xhc3NtZXRo
b2QKICAgICBkZWYgb3B0aW9ucyhjbHMpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1
bGVzL2NvbW1hbmRzL2Rvd25sb2FkLnB5CmluZGV4IDg5NjZiYWYuLmJjYjI0NGYgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9kb3dubG9hZC5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZG93bmxvYWQucHkKQEAgLTM0
LDcgKzM0LDcgQEAgZnJvbSBvcHRwYXJzZSBpbXBvcnQgbWFrZV9vcHRpb24KIAogZnJvbSBtb2R1
bGVzLmJ1Z3ppbGxhIGltcG9ydCBwYXJzZV9idWdfaWQKICMgRklYTUU6IFRoaXMgbGlzdCBpcyBy
ZWRpY3Vsb3VzLiAgV2UgbmVlZCB0byBsZWFybiB0aGUgd2F5cyBvZiBfX2FsbF9fLgotZnJvbSBt
b2R1bGVzLmJ1aWxkc3RlcHMgaW1wb3J0IENvbW1hbmRPcHRpb25zLCBFbnN1cmVCdWlsZGVyc0Fy
ZUdyZWVuU3RlcCwgVXBkYXRlQ2hhbmdlbG9nc1dpdGhSZXZpZXdlclN0ZXAsIENsZWFuV29ya2lu
Z0RpcmVjdG9yeVN0ZXAsIENsZWFuV29ya2luZ0RpcmVjdG9yeVdpdGhMb2NhbENvbW1pdHNTdGVw
LCBVcGRhdGVTdGVwLCBBcHBseVBhdGNoU3RlcCwgQXBwbHlQYXRjaFdpdGhMb2NhbENvbW1pdFN0
ZXAsIEJ1aWxkU3RlcCwgQ2hlY2tTdHlsZVN0ZXAsIFJ1blRlc3RzU3RlcCwgQ29tbWl0U3RlcCwg
Q2xvc2VQYXRjaFN0ZXAsIENsb3NlQnVnU3RlcCwgQ2xvc2VCdWdGb3JMYW5kRGlmZlN0ZXAsIFBy
ZXBhcmVDaGFuZ2Vsb2dTdGVwLCBQcmVwYXJlQ2hhbmdlbG9nRm9yUmV2ZXJ0U3RlcCwgUmV2ZXJ0
UmV2aXNpb25TdGVwLCBDb21wbGV0ZVJvbGxvdXQKK2Zyb20gbW9kdWxlcy5idWlsZHN0ZXBzIGlt
cG9ydCBDb21tYW5kT3B0aW9ucywgRW5zdXJlQnVpbGRlcnNBcmVHcmVlblN0ZXAsIEVuc3VyZUxv
Y2FsQ29tbWl0SWZOZWVkZWQsIFVwZGF0ZUNoYW5nZWxvZ3NXaXRoUmV2aWV3ZXJTdGVwLCBDbGVh
bldvcmtpbmdEaXJlY3RvcnlTdGVwLCBDbGVhbldvcmtpbmdEaXJlY3RvcnlXaXRoTG9jYWxDb21t
aXRzU3RlcCwgVXBkYXRlU3RlcCwgQXBwbHlQYXRjaFN0ZXAsIEFwcGx5UGF0Y2hXaXRoTG9jYWxD
b21taXRTdGVwLCBCdWlsZFN0ZXAsIENoZWNrU3R5bGVTdGVwLCBSdW5UZXN0c1N0ZXAsIENvbW1p
dFN0ZXAsIENsb3NlUGF0Y2hTdGVwLCBDbG9zZUJ1Z1N0ZXAsIENsb3NlQnVnRm9yTGFuZERpZmZT
dGVwLCBQcmVwYXJlQ2hhbmdlbG9nU3RlcCwgUHJlcGFyZUNoYW5nZWxvZ0ZvclJldmVydFN0ZXAs
IFJldmVydFJldmlzaW9uU3RlcCwgQ29tcGxldGVSb2xsb3V0CiBmcm9tIG1vZHVsZXMuY2hhbmdl
bG9ncyBpbXBvcnQgQ2hhbmdlTG9nCiBmcm9tIG1vZHVsZXMuY29tbWVudHMgaW1wb3J0IGJ1Z19j
b21tZW50X2Zyb21fY29tbWl0X3RleHQKIGZyb20gbW9kdWxlcy5leGVjdXRpdmUgaW1wb3J0IFNj
cmlwdEVycm9yCkBAIC00NCw1NSArNDQsNjkgQEAgZnJvbSBtb2R1bGVzLm11bHRpY29tbWFuZHRv
b2wgaW1wb3J0IENvbW1hbmQKIGZyb20gbW9kdWxlcy5zdGVwc2VxdWVuY2UgaW1wb3J0IFN0ZXBT
ZXF1ZW5jZQogCiAKLWNsYXNzIEJ1aWxkKENvbW1hbmQpOgotICAgIG5hbWUgPSAiYnVpbGQiCi0g
ICAgc2hvd19pbl9tYWluX2hlbHAgPSBGYWxzZQorIyBGSVhNRTogTW92ZSB0aGlzIHRvIGEgbW9y
ZSBnZW5lcmFsIGxvY2F0aW9uLgorY2xhc3MgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1tYW5kKENv
bW1hbmQpOgorICAgIGhlbHBfdGV4dCA9IE5vbmUKKyAgICBhcmd1bWVudF9uYW1lcyA9IE5vbmUK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6CisgICAgICAgIENvbW1hbmQuX19pbml0
X18oc2VsZiwgc2VsZi5oZWxwX3RleHQsIHNlbGYuYXJndW1lbnRfbmFtZXMsIG9wdGlvbnMpCisK
KworY2xhc3MgQWJzdHJhY3RTZXF1ZW5jZWRDb21tbWFuZChBYnN0cmFjdERlY2xhcmF0aXZlQ29t
bW1hbmQpOgorICAgIHN0ZXBzID0gTm9uZQogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAg
ICAgc2VsZi5fc2VxdWVuY2UgPSBTdGVwU2VxdWVuY2UoWwotICAgICAgICAgICAgQ2xlYW5Xb3Jr
aW5nRGlyZWN0b3J5U3RlcCwKLSAgICAgICAgICAgIFVwZGF0ZVN0ZXAsCi0gICAgICAgICAgICBC
dWlsZFN0ZXAKLSAgICAgICAgXSkKLSAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAiVXBk
YXRlIHdvcmtpbmcgY29weSBhbmQgYnVpbGQiLCAiIiwgc2VsZi5fc2VxdWVuY2Uub3B0aW9ucygp
KQorICAgICAgICBzZWxmLl9zZXF1ZW5jZSA9IFN0ZXBTZXF1ZW5jZShzZWxmLnN0ZXBzKQorICAg
ICAgICBBYnN0cmFjdERlY2xhcmF0aXZlQ29tbW1hbmQuX19pbml0X18oc2VsZiwgc2VsZi5fc2Vx
dWVuY2Uub3B0aW9ucygpKQorCisgICAgZGVmIF9wcmVwYXJlX3N0YXRlKHNlbGYsIG9wdGlvbnMs
IGFyZ3MsIHRvb2wpOgorICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIGV4ZWN1dGUoc2Vs
Ziwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIHNlbGYuX3NlcXVlbmNlLnJ1bl9hbmRf
aGFuZGxlX2Vycm9ycyh0b29sLCBvcHRpb25zKQorICAgICAgICBzZWxmLl9zZXF1ZW5jZS5ydW5f
YW5kX2hhbmRsZV9lcnJvcnModG9vbCwgb3B0aW9ucywgc2VsZi5fcHJlcGFyZV9zdGF0ZShvcHRp
b25zLCBhcmdzLCB0b29sKSkKIAogCi1jbGFzcyBMYW5kRGlmZihDb21tYW5kKToKK2NsYXNzIEJ1
aWxkKEFic3RyYWN0U2VxdWVuY2VkQ29tbW1hbmQpOgorICAgIG5hbWUgPSAiYnVpbGQiCisgICAg
aGVscF90ZXh0ID0gIlVwZGF0ZSB3b3JraW5nIGNvcHkgYW5kIGJ1aWxkIgorICAgIGFyZ3VtZW50
X25hbWVzID0gIiIKKyAgICBzaG93X2luX21haW5faGVscCA9IEZhbHNlCisgICAgc3RlcHMgPSBb
CisgICAgICAgIENsZWFuV29ya2luZ0RpcmVjdG9yeVN0ZXAsCisgICAgICAgIFVwZGF0ZVN0ZXAs
CisgICAgICAgIEJ1aWxkU3RlcCwKKyAgICBdCisKKworY2xhc3MgTGFuZERpZmYoQWJzdHJhY3RT
ZXF1ZW5jZWRDb21tbWFuZCk6CiAgICAgbmFtZSA9ICJsYW5kLWRpZmYiCisgICAgaGVscF90ZXh0
ID0gIkxhbmQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgZGlmZiBhbmQgdXBkYXRlcyB0
aGUgYXNzb2NpYXRlZCBidWcgaWYgYW55IgorICAgIGFyZ3VtZW50X25hbWVzID0gIltCVUdJRF0i
CiAgICAgc2hvd19pbl9tYWluX2hlbHAgPSBUcnVlCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgot
ICAgICAgICBzZWxmLl9zZXF1ZW5jZSA9IFN0ZXBTZXF1ZW5jZShbCi0gICAgICAgICAgICBFbnN1
cmVCdWlsZGVyc0FyZUdyZWVuU3RlcCwKLSAgICAgICAgICAgIFVwZGF0ZUNoYW5nZWxvZ3NXaXRo
UmV2aWV3ZXJTdGVwLAotICAgICAgICAgICAgRW5zdXJlQnVpbGRlcnNBcmVHcmVlblN0ZXAsCi0g
ICAgICAgICAgICBCdWlsZFN0ZXAsCi0gICAgICAgICAgICBSdW5UZXN0c1N0ZXAsCi0gICAgICAg
ICAgICBDb21taXRTdGVwLAotICAgICAgICAgICAgQ2xvc2VCdWdGb3JMYW5kRGlmZlN0ZXAsCi0g
ICAgICAgIF0pCi0gICAgICAgIENvbW1hbmQuX19pbml0X18oc2VsZiwgIkxhbmQgdGhlIGN1cnJl
bnQgd29ya2luZyBkaXJlY3RvcnkgZGlmZiBhbmQgdXBkYXRlcyB0aGUgYXNzb2NpYXRlZCBidWcg
aWYgYW55IiwgIltCVUdJRF0iLCBvcHRpb25zPXNlbGYuX3NlcXVlbmNlLm9wdGlvbnMoKSkKKyAg
ICBzdGVwcyA9IFsKKyAgICAgICAgRW5zdXJlQnVpbGRlcnNBcmVHcmVlblN0ZXAsCisgICAgICAg
IFVwZGF0ZUNoYW5nZWxvZ3NXaXRoUmV2aWV3ZXJTdGVwLAorICAgICAgICBFbnN1cmVCdWlsZGVy
c0FyZUdyZWVuU3RlcCwKKyAgICAgICAgQnVpbGRTdGVwLAorICAgICAgICBSdW5UZXN0c1N0ZXAs
CisgICAgICAgIENvbW1pdFN0ZXAsCisgICAgICAgIENsb3NlQnVnRm9yTGFuZERpZmZTdGVwLAor
ICAgIF0KIAotICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgotICAg
ICAgICBidWdfaWQgPSAoYXJncyBhbmQgYXJnc1swXSkgb3IgcGFyc2VfYnVnX2lkKHRvb2wuc2Nt
KCkuY3JlYXRlX3BhdGNoKCkpCi0gICAgICAgIGZha2VfcGF0Y2ggPSB7Ci0gICAgICAgICAgICAi
aWQiOiBOb25lLAotICAgICAgICAgICAgImJ1Z19pZCI6IGJ1Z19pZCwKKyAgICBkZWYgX3ByZXBh
cmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICAicGF0Y2giOiB7CisgICAgICAgICAgICAgICAgImlkIjogTm9uZSwKKyAgICAg
ICAgICAgICAgICAiYnVnX2lkIjogKGFyZ3MgYW5kIGFyZ3NbMF0pIG9yIHBhcnNlX2J1Z19pZCh0
b29sLnNjbSgpLmNyZWF0ZV9wYXRjaCgpKSwKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICBzdGF0ZSA9IHsicGF0Y2giOiBmYWtlX3BhdGNofQotICAgICAgICBzZWxmLl9zZXF1ZW5j
ZS5ydW5fYW5kX2hhbmRsZV9lcnJvcnModG9vbCwgb3B0aW9ucywgc3RhdGUpCiAKIAotY2xhc3Mg
QWJzdHJhY3RQYXRjaFByb2Nlc3NpbmdDb21tYW5kKENvbW1hbmQpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBoZWxwX3RleHQsIGFyZ3NfZGVzY3JpcHRpb24sIG9wdGlvbnMpOgotICAgICAgICBD
b21tYW5kLl9faW5pdF9fKHNlbGYsIGhlbHBfdGV4dCwgYXJnc19kZXNjcmlwdGlvbiwgb3B0aW9u
cz1vcHRpb25zKQotCi0gICAgZGVmIF9mZXRjaF9saXN0X29mX3BhdGNoZXNfdG9fcHJvY2Vzcyhz
ZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF
cnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCi0KLSAgICBkZWYgX3ByZXBhcmVfdG9f
cHJvY2VzcyhzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKLSAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCitjbGFzcyBBYnN0cmFj
dFBhdGNoUHJvY2Vzc2luZ0NvbW1hbmQoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1tYW5kKToKKyAg
ICAjIFN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQgdGhlIG1ldGhvZHMgYmVsb3cuICBXZSBkb24n
dCBkZWNsYXJlIHRoZW0gaGVyZQorICAgICMgYmVjYXVzZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8g
aW1wbGVtZW50IHRoZW0gd2l0aCBtaXgtaW5zLgorICAgICMKKyAgICAjIGRlZiBfZmV0Y2hfbGlz
dF9vZl9wYXRjaGVzX3RvX3Byb2Nlc3Moc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAg
IyBkZWYgX3ByZXBhcmVfdG9fcHJvY2VzcyhzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKIAog
ICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX2NvbGxlY3RfcGF0Y2hlc19ieV9idWcocGF0Y2hl
cyk6CkBAIC0xMjUsMTIgKzEzOSwxMiBAQCBjbGFzcyBBYnN0cmFjdFBhdGNoU2VxdWVuY2luZ0Nv
bW1hbmQoQWJzdHJhY3RQYXRjaFByb2Nlc3NpbmdDb21tYW5kKToKICAgICAgICAgc3RlcF9zZXF1
ZW5jZSA9IFN0ZXBTZXF1ZW5jZShzdGVwcykKICAgICAgICAgcmV0dXJuIHN0ZXBfc2VxdWVuY2Us
IHN0ZXBfc2VxdWVuY2Uub3B0aW9ucygpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaGVscF90
ZXh0LCBhcmdzX2Rlc2NyaXB0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAg
IG9wdGlvbnMgPSBbXQogICAgICAgICBzZWxmLl9wcmVwYXJlX3NlcXVlbmNlLCBwcmVwYXJlX29w
dGlvbnMgPSBzZWxmLl9jcmVhdGVfc3RlcF9zZXF1ZW5jZShzZWxmLnByZXBhcmVfc3RlcHMpCiAg
ICAgICAgIHNlbGYuX21haW5fc2VxdWVuY2UsIG1haW5fb3B0aW9ucyA9IHNlbGYuX2NyZWF0ZV9z
dGVwX3NlcXVlbmNlKHNlbGYubWFpbl9zdGVwcykKICAgICAgICAgb3B0aW9ucyA9IHNvcnRlZChz
ZXQocHJlcGFyZV9vcHRpb25zICsgbWFpbl9vcHRpb25zKSkKLSAgICAgICAgQWJzdHJhY3RQYXRj
aFByb2Nlc3NpbmdDb21tYW5kLl9faW5pdF9fKHNlbGYsIGhlbHBfdGV4dCwgYXJnc19kZXNjcmlw
dGlvbiwgb3B0aW9ucykKKyAgICAgICAgQWJzdHJhY3RQYXRjaFByb2Nlc3NpbmdDb21tYW5kLl9f
aW5pdF9fKHNlbGYsIG9wdGlvbnMpCiAKICAgICBkZWYgX3ByZXBhcmVfdG9fcHJvY2VzcyhzZWxm
LCBvcHRpb25zLCBhcmdzLCB0b29sKToKICAgICAgICAgaWYgc2VsZi5fcHJlcGFyZV9zZXF1ZW5j
ZToKQEAgLTE0Miw4ICsxNTYsMjUgQEAgY2xhc3MgQWJzdHJhY3RQYXRjaFNlcXVlbmNpbmdDb21t
YW5kKEFic3RyYWN0UGF0Y2hQcm9jZXNzaW5nQ29tbWFuZCk6CiAgICAgICAgICAgICBzZWxmLl9t
YWluX3NlcXVlbmNlLnJ1bl9hbmRfaGFuZGxlX2Vycm9ycyh0b29sLCBvcHRpb25zLCBzdGF0ZSkK
IAogCi1jbGFzcyBDaGVja1N0eWxlKEFic3RyYWN0UGF0Y2hTZXF1ZW5jaW5nQ29tbWFuZCk6Citj
bGFzcyBQcm9jZXNzQXR0YWNobWVudHNNaXhpbihvYmplY3QpOgorICAgIGRlZiBfZmV0Y2hfbGlz
dF9vZl9wYXRjaGVzX3RvX3Byb2Nlc3Moc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAg
ICAgIHJldHVybiBtYXAobGFtYmRhIHBhdGNoX2lkOiB0b29sLmJ1Z3MuZmV0Y2hfYXR0YWNobWVu
dChwYXRjaF9pZCksIGFyZ3MpCisKKworY2xhc3MgUHJvY2Vzc0J1Z3NNaXhpbihvYmplY3QpOgor
ICAgIGRlZiBfZmV0Y2hfbGlzdF9vZl9wYXRjaGVzX3RvX3Byb2Nlc3Moc2VsZiwgb3B0aW9ucywg
YXJncywgdG9vbCk6CisgICAgICAgIGFsbF9wYXRjaGVzID0gW10KKyAgICAgICAgZm9yIGJ1Z19p
ZCBpbiBhcmdzOgorICAgICAgICAgICAgcGF0Y2hlcyA9IHRvb2wuYnVncy5mZXRjaF9yZXZpZXdl
ZF9wYXRjaGVzX2Zyb21fYnVnKGJ1Z19pZCkKKyAgICAgICAgICAgIGxvZygiJXMgZm91bmQgb24g
YnVnICVzLiIgJSAocGx1cmFsaXplKCJyZXZpZXdlZCBwYXRjaCIsIGxlbihwYXRjaGVzKSksIGJ1
Z19pZCkpCisgICAgICAgICAgICBhbGxfcGF0Y2hlcyArPSBwYXRjaGVzCisgICAgICAgIHJldHVy
biBhbGxfcGF0Y2hlcworCisKK2NsYXNzIENoZWNrU3R5bGUoQWJzdHJhY3RQYXRjaFNlcXVlbmNp
bmdDb21tYW5kLCBQcm9jZXNzQXR0YWNobWVudHNNaXhpbik6CiAgICAgbmFtZSA9ICJjaGVjay1z
dHlsZSIKKyAgICBoZWxwX3RleHQgPSAiUnVuIGNoZWNrLXdlYmtpdC1zdHlsZSBvbiB0aGUgc3Bl
Y2lmaWVkIGF0dGFjaG1lbnRzIgorICAgIGFyZ3VtZW50X25hbWVzID0gIkFUVEFDSE1FTlRfSUQg
W0FUVEFDSE1FTlRfSURTXSIKICAgICBzaG93X2luX21haW5faGVscCA9IEZhbHNlCiAgICAgbWFp
bl9zdGVwcyA9IFsKICAgICAgICAgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5U3RlcCwKQEAgLTE1MSwx
NSArMTgyLDEyIEBAIGNsYXNzIENoZWNrU3R5bGUoQWJzdHJhY3RQYXRjaFNlcXVlbmNpbmdDb21t
YW5kKToKICAgICAgICAgQXBwbHlQYXRjaFN0ZXAsCiAgICAgICAgIENoZWNrU3R5bGVTdGVwLAog
ICAgIF0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIEFic3RyYWN0UGF0Y2hTZXF1
ZW5jaW5nQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAiUnVuIGNoZWNrLXdlYmtpdC1zdHlsZSBvbiB0
aGUgc3BlY2lmaWVkIGF0dGFjaG1lbnRzIiwgIkFUVEFDSE1FTlRfSUQgW0FUVEFDSE1FTlRfSURT
XSIpCi0KLSAgICBkZWYgX2ZldGNoX2xpc3Rfb2ZfcGF0Y2hlc190b19wcm9jZXNzKHNlbGYsIG9w
dGlvbnMsIGFyZ3MsIHRvb2wpOgotICAgICAgICByZXR1cm4gbWFwKGxhbWJkYSBwYXRjaF9pZDog
dG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQocGF0Y2hfaWQpLCBhcmdzKQogCiAKLWNsYXNzIEJ1
aWxkQXR0YWNobWVudChBYnN0cmFjdFBhdGNoU2VxdWVuY2luZ0NvbW1hbmQpOgorY2xhc3MgQnVp
bGRBdHRhY2htZW50KEFic3RyYWN0UGF0Y2hTZXF1ZW5jaW5nQ29tbWFuZCwgUHJvY2Vzc0F0dGFj
aG1lbnRzTWl4aW4pOgogICAgIG5hbWUgPSAiYnVpbGQtYXR0YWNobWVudCIKKyAgICBoZWxwX3Rl
eHQgPSAiQXBwbHkgYW5kIGJ1aWxkIHBhdGNoZXMgZnJvbSBidWd6aWxsYSIKKyAgICBhcmd1bWVu
dF9uYW1lcyA9ICJBVFRBQ0hNRU5UX0lEIFtBVFRBQ0hNRU5UX0lEU10iCiAgICAgc2hvd19pbl9t
YWluX2hlbHAgPSBGYWxzZQogICAgIG1haW5fc3RlcHMgPSBbCiAgICAgICAgIENsZWFuV29ya2lu
Z0RpcmVjdG9yeVN0ZXAsCkBAIC0xNjcsMTUgKzE5NSwxMSBAQCBjbGFzcyBCdWlsZEF0dGFjaG1l
bnQoQWJzdHJhY3RQYXRjaFNlcXVlbmNpbmdDb21tYW5kKToKICAgICAgICAgQXBwbHlQYXRjaFN0
ZXAsCiAgICAgICAgIEJ1aWxkU3RlcCwKICAgICBdCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgot
ICAgICAgICBBYnN0cmFjdFBhdGNoU2VxdWVuY2luZ0NvbW1hbmQuX19pbml0X18oc2VsZiwgIkFw
cGx5IGFuZCBidWlsZCBwYXRjaGVzIGZyb20gYnVnemlsbGEiLCAiQVRUQUNITUVOVF9JRCBbQVRU
QUNITUVOVF9JRFNdIikKLQotICAgIGRlZiBfZmV0Y2hfbGlzdF9vZl9wYXRjaGVzX3RvX3Byb2Nl
c3Moc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIHJldHVybiBtYXAobGFtYmRh
IHBhdGNoX2lkOiB0b29sLmJ1Z3MuZmV0Y2hfYXR0YWNobWVudChwYXRjaF9pZCksIGFyZ3MpCiAK
IAogY2xhc3MgQWJzdHJhY3RQYXRjaEFwcGx5aW5nQ29tbWFuZChBYnN0cmFjdFBhdGNoU2VxdWVu
Y2luZ0NvbW1hbmQpOgogICAgIHByZXBhcmVfc3RlcHMgPSBbCisgICAgICAgIEVuc3VyZUxvY2Fs
Q29tbWl0SWZOZWVkZWQsCiAgICAgICAgIENsZWFuV29ya2luZ0RpcmVjdG9yeVdpdGhMb2NhbENv
bW1pdHNTdGVwLAogICAgICAgICBVcGRhdGVTdGVwLAogICAgIF0KQEAgLTE4MywzNSArMjA3LDE5
IEBAIGNsYXNzIEFic3RyYWN0UGF0Y2hBcHBseWluZ0NvbW1hbmQoQWJzdHJhY3RQYXRjaFNlcXVl
bmNpbmdDb21tYW5kKToKICAgICAgICAgQXBwbHlQYXRjaFdpdGhMb2NhbENvbW1pdFN0ZXAsCiAg
ICAgXQogCi0gICAgZGVmIF9wcmVwYXJlX3RvX3Byb2Nlc3Moc2VsZiwgb3B0aW9ucywgYXJncywg
dG9vbCk6Ci0gICAgICAgIGlmIG9wdGlvbnMubG9jYWxfY29tbWl0IGFuZCBub3QgdG9vbC5zY20o
KS5zdXBwb3J0c19sb2NhbF9jb21taXRzKCk6Ci0gICAgICAgICAgICBlcnJvcigiLS1sb2NhbC1j
b21taXQgcGFzc2VkLCBidXQgJXMgZG9lcyBub3Qgc3VwcG9ydCBsb2NhbCBjb21taXRzIiAlIHNj
bS5kaXNwbGF5X25hbWUoKSkKLSAgICAgICAgQWJzdHJhY3RQYXRjaFNlcXVlbmNpbmdDb21tYW5k
Ll9wcmVwYXJlX3RvX3Byb2Nlc3Moc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCkKIAotCi1jbGFz
cyBBcHBseUF0dGFjaG1lbnQoQWJzdHJhY3RQYXRjaEFwcGx5aW5nQ29tbWFuZCk6CitjbGFzcyBB
cHBseUF0dGFjaG1lbnQoQWJzdHJhY3RQYXRjaEFwcGx5aW5nQ29tbWFuZCwgUHJvY2Vzc0F0dGFj
aG1lbnRzTWl4aW4pOgogICAgIG5hbWUgPSAiYXBwbHktYXR0YWNobWVudCIKKyAgICBoZWxwX3Rl
eHQgPSAiQXBwbHkgYW4gYXR0YWNobWVudCB0byB0aGUgbG9jYWwgd29ya2luZyBkaXJlY3Rvcnki
CisgICAgYXJndW1lbnRfbmFtZXMgPSAiQVRUQUNITUVOVF9JRCBbQVRUQUNITUVOVF9JRFNdIgog
ICAgIHNob3dfaW5fbWFpbl9oZWxwID0gVHJ1ZQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAg
ICAgICAgQWJzdHJhY3RQYXRjaEFwcGx5aW5nQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAiQXBwbHkg
YW4gYXR0YWNobWVudCB0byB0aGUgbG9jYWwgd29ya2luZyBkaXJlY3RvcnkiLCAiQVRUQUNITUVO
VF9JRCBbQVRUQUNITUVOVF9JRFNdIikKLQotICAgIGRlZiBfZmV0Y2hfbGlzdF9vZl9wYXRjaGVz
X3RvX3Byb2Nlc3Moc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIHJldHVybiBt
YXAobGFtYmRhIHBhdGNoX2lkOiB0b29sLmJ1Z3MuZmV0Y2hfYXR0YWNobWVudChwYXRjaF9pZCks
IGFyZ3MpCiAKIAotY2xhc3MgQXBwbHlQYXRjaGVzKEFic3RyYWN0UGF0Y2hBcHBseWluZ0NvbW1h
bmQpOgorY2xhc3MgQXBwbHlQYXRjaGVzKEFic3RyYWN0UGF0Y2hBcHBseWluZ0NvbW1hbmQsIFBy
b2Nlc3NCdWdzTWl4aW4pOgogICAgIG5hbWUgPSAiYXBwbHktcGF0Y2hlcyIKKyAgICBoZWxwX3Rl
eHQgPSAiQXBwbHkgcmV2aWV3ZWQgcGF0Y2hlcyBmcm9tIHByb3ZpZGVkIGJ1Z3MgdG8gdGhlIGxv
Y2FsIHdvcmtpbmcgZGlyZWN0b3J5IgorICAgIGFyZ3VtZW50X25hbWVzID0gIkJVR0lEIFtCVUdJ
RFNdIgogICAgIHNob3dfaW5fbWFpbl9oZWxwID0gVHJ1ZQotICAgIGRlZiBfX2luaXRfXyhzZWxm
KToKLSAgICAgICAgQWJzdHJhY3RQYXRjaEFwcGx5aW5nQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAi
QXBwbHkgcmV2aWV3ZWQgcGF0Y2hlcyBmcm9tIHByb3ZpZGVkIGJ1Z3MgdG8gdGhlIGxvY2FsIHdv
cmtpbmcgZGlyZWN0b3J5IiwgIkJVR0lEIFtCVUdJRFNdIikKLQotICAgIGRlZiBfZmV0Y2hfbGlz
dF9vZl9wYXRjaGVzX3RvX3Byb2Nlc3Moc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAg
ICAgIGFsbF9wYXRjaGVzID0gW10KLSAgICAgICAgZm9yIGJ1Z19pZCBpbiBhcmdzOgotICAgICAg
ICAgICAgcGF0Y2hlcyA9IHRvb2wuYnVncy5mZXRjaF9yZXZpZXdlZF9wYXRjaGVzX2Zyb21fYnVn
KGJ1Z19pZCkKLSAgICAgICAgICAgIGxvZygiJXMgZm91bmQgb24gYnVnICVzLiIgJSAocGx1cmFs
aXplKCJyZXZpZXdlZCBwYXRjaCIsIGxlbihwYXRjaGVzKSksIGJ1Z19pZCkpCi0gICAgICAgICAg
ICBhbGxfcGF0Y2hlcyArPSBwYXRjaGVzCi0gICAgICAgIHJldHVybiBhbGxfcGF0Y2hlcwogCiAK
IGNsYXNzIEFic3RyYWN0UGF0Y2hMYW5kaW5nQ29tbWFuZChBYnN0cmFjdFBhdGNoU2VxdWVuY2lu
Z0NvbW1hbmQpOgpAQCAtMjMxLDMxICsyMzksMjEgQEAgY2xhc3MgQWJzdHJhY3RQYXRjaExhbmRp
bmdDb21tYW5kKEFic3RyYWN0UGF0Y2hTZXF1ZW5jaW5nQ29tbWFuZCk6CiAgICAgXQogCiAKLWNs
YXNzIExhbmRBdHRhY2htZW50KEFic3RyYWN0UGF0Y2hMYW5kaW5nQ29tbWFuZCk6CitjbGFzcyBM
YW5kQXR0YWNobWVudChBYnN0cmFjdFBhdGNoTGFuZGluZ0NvbW1hbmQsIFByb2Nlc3NBdHRhY2ht
ZW50c01peGluKToKICAgICBuYW1lID0gImxhbmQtYXR0YWNobWVudCIKKyAgICBoZWxwX3RleHQg
PSAiTGFuZCBwYXRjaGVzIGZyb20gYnVnemlsbGEsIG9wdGlvbmFsbHkgYnVpbGRpbmcgYW5kIHRl
c3RpbmcgdGhlbSBmaXJzdCIKKyAgICBhcmd1bWVudF9uYW1lcyA9ICJBVFRBQ0hNRU5UX0lEIFtB
VFRBQ0hNRU5UX0lEU10iCiAgICAgc2hvd19pbl9tYWluX2hlbHAgPSBUcnVlCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgotICAgICAgICBBYnN0cmFjdFBhdGNoTGFuZGluZ0NvbW1hbmQuX19pbml0
X18oc2VsZiwgIkxhbmQgcGF0Y2hlcyBmcm9tIGJ1Z3ppbGxhLCBvcHRpb25hbGx5IGJ1aWxkaW5n
IGFuZCB0ZXN0aW5nIHRoZW0gZmlyc3QiLCAiQVRUQUNITUVOVF9JRCBbQVRUQUNITUVOVF9JRFNd
IikKLQotICAgIGRlZiBfZmV0Y2hfbGlzdF9vZl9wYXRjaGVzX3RvX3Byb2Nlc3Moc2VsZiwgb3B0
aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIHJldHVybiBtYXAobGFtYmRhIHBhdGNoX2lkOiB0
b29sLmJ1Z3MuZmV0Y2hfYXR0YWNobWVudChwYXRjaF9pZCksIGFyZ3MpCiAKIAotY2xhc3MgTGFu
ZFBhdGNoZXMoQWJzdHJhY3RQYXRjaExhbmRpbmdDb21tYW5kKToKK2NsYXNzIExhbmRQYXRjaGVz
KEFic3RyYWN0UGF0Y2hMYW5kaW5nQ29tbWFuZCwgUHJvY2Vzc0J1Z3NNaXhpbik6CiAgICAgbmFt
ZSA9ICJsYW5kLXBhdGNoZXMiCisgICAgaGVscF90ZXh0ID0gIkxhbmQgYWxsIHBhdGNoZXMgb24g
dGhlIGdpdmVuIGJ1Z3MsIG9wdGlvbmFsbHkgYnVpbGRpbmcgYW5kIHRlc3RpbmcgdGhlbSBmaXJz
dCIKKyAgICBhcmd1bWVudF9uYW1lcyA9ICJCVUdJRCBbQlVHSURTXSIKICAgICBzaG93X2luX21h
aW5faGVscCA9IFRydWUKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIEFic3RyYWN0
UGF0Y2hMYW5kaW5nQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAiTGFuZCBhbGwgcGF0Y2hlcyBvbiB0
aGUgZ2l2ZW4gYnVncywgb3B0aW9uYWxseSBidWlsZGluZyBhbmQgdGVzdGluZyB0aGVtIGZpcnN0
IiwgIkJVR0lEIFtCVUdJRFNdIikKLQotICAgIGRlZiBfZmV0Y2hfbGlzdF9vZl9wYXRjaGVzX3Rv
X3Byb2Nlc3Moc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIGFsbF9wYXRjaGVz
ID0gW10KLSAgICAgICAgZm9yIGJ1Z19pZCBpbiBhcmdzOgotICAgICAgICAgICAgcGF0Y2hlcyA9
IHRvb2wuYnVncy5mZXRjaF9yZXZpZXdlZF9wYXRjaGVzX2Zyb21fYnVnKGJ1Z19pZCkKLSAgICAg
ICAgICAgIGxvZygiJXMgZm91bmQgb24gYnVnICVzLiIgJSAocGx1cmFsaXplKCJyZXZpZXdlZCBw
YXRjaCIsIGxlbihwYXRjaGVzKSksIGJ1Z19pZCkpCi0gICAgICAgICAgICBhbGxfcGF0Y2hlcyAr
PSBwYXRjaGVzCi0gICAgICAgIHJldHVybiBhbGxfcGF0Y2hlcwogCiAKKyMgRklYTUU6IE1ha2Ug
Um9sbG91dCBtb3JlIGRlY2xhcmF0aXZlLgogY2xhc3MgUm9sbG91dChDb21tYW5kKToKICAgICBu
YW1lID0gInJvbGxvdXQiCiAgICAgc2hvd19pbl9tYWluX2hlbHAgPSBUcnVlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>44737</attachid>
            <date>2009-12-12 02:11:13 -0800</date>
            <delta_ts>2009-12-12 02:11:13 -0800</delta_ts>
            <desc>The final file</desc>
            <filename>download.py</filename>
            <type>text/plain</type>
            <size>10959</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgojIENvcHlyaWdodCAoYykgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiMKIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiMgbWV0OgojIAoj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CiMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgojICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCiMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQojIGRpc3Ry
aWJ1dGlvbi4KIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCiMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgojIAojIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAoj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgojIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCiMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCiMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAojIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAojIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQojIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgoKaW1wb3J0IG9zCgpmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29wdGlvbgoK
ZnJvbSBtb2R1bGVzLmJ1Z3ppbGxhIGltcG9ydCBwYXJzZV9idWdfaWQKIyBGSVhNRTogVGhpcyBs
aXN0IGlzIHJlZGljdWxvdXMuICBXZSBuZWVkIHRvIGxlYXJuIHRoZSB3YXlzIG9mIF9fYWxsX18u
CmZyb20gbW9kdWxlcy5idWlsZHN0ZXBzIGltcG9ydCBDb21tYW5kT3B0aW9ucywgRW5zdXJlQnVp
bGRlcnNBcmVHcmVlblN0ZXAsIEVuc3VyZUxvY2FsQ29tbWl0SWZOZWVkZWQsIFVwZGF0ZUNoYW5n
ZWxvZ3NXaXRoUmV2aWV3ZXJTdGVwLCBDbGVhbldvcmtpbmdEaXJlY3RvcnlTdGVwLCBDbGVhbldv
cmtpbmdEaXJlY3RvcnlXaXRoTG9jYWxDb21taXRzU3RlcCwgVXBkYXRlU3RlcCwgQXBwbHlQYXRj
aFN0ZXAsIEFwcGx5UGF0Y2hXaXRoTG9jYWxDb21taXRTdGVwLCBCdWlsZFN0ZXAsIENoZWNrU3R5
bGVTdGVwLCBSdW5UZXN0c1N0ZXAsIENvbW1pdFN0ZXAsIENsb3NlUGF0Y2hTdGVwLCBDbG9zZUJ1
Z1N0ZXAsIENsb3NlQnVnRm9yTGFuZERpZmZTdGVwLCBQcmVwYXJlQ2hhbmdlbG9nU3RlcCwgUHJl
cGFyZUNoYW5nZWxvZ0ZvclJldmVydFN0ZXAsIFJldmVydFJldmlzaW9uU3RlcCwgQ29tcGxldGVS
b2xsb3V0CmZyb20gbW9kdWxlcy5jaGFuZ2Vsb2dzIGltcG9ydCBDaGFuZ2VMb2cKZnJvbSBtb2R1
bGVzLmNvbW1lbnRzIGltcG9ydCBidWdfY29tbWVudF9mcm9tX2NvbW1pdF90ZXh0CmZyb20gbW9k
dWxlcy5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCmZyb20gbW9kdWxlcy5ncmFtbWFyIGlt
cG9ydCBwbHVyYWxpemUKZnJvbSBtb2R1bGVzLmxvZ2dpbmcgaW1wb3J0IGVycm9yLCBsb2cKZnJv
bSBtb2R1bGVzLm11bHRpY29tbWFuZHRvb2wgaW1wb3J0IENvbW1hbmQKZnJvbSBtb2R1bGVzLnN0
ZXBzZXF1ZW5jZSBpbXBvcnQgU3RlcFNlcXVlbmNlCgoKIyBGSVhNRTogTW92ZSB0aGlzIHRvIGEg
bW9yZSBnZW5lcmFsIGxvY2F0aW9uLgpjbGFzcyBBYnN0cmFjdERlY2xhcmF0aXZlQ29tbW1hbmQo
Q29tbWFuZCk6CiAgICBoZWxwX3RleHQgPSBOb25lCiAgICBhcmd1bWVudF9uYW1lcyA9IE5vbmUK
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKICAgICAgICBDb21tYW5kLl9faW5pdF9f
KHNlbGYsIHNlbGYuaGVscF90ZXh0LCBzZWxmLmFyZ3VtZW50X25hbWVzLCBvcHRpb25zKQoKCmNs
YXNzIEFic3RyYWN0U2VxdWVuY2VkQ29tbW1hbmQoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1tYW5k
KToKICAgIHN0ZXBzID0gTm9uZQogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYu
X3NlcXVlbmNlID0gU3RlcFNlcXVlbmNlKHNlbGYuc3RlcHMpCiAgICAgICAgQWJzdHJhY3REZWNs
YXJhdGl2ZUNvbW1tYW5kLl9faW5pdF9fKHNlbGYsIHNlbGYuX3NlcXVlbmNlLm9wdGlvbnMoKSkK
CiAgICBkZWYgX3ByZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CiAgICAg
ICAgcmV0dXJuIE5vbmUKCiAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29s
KToKICAgICAgICBzZWxmLl9zZXF1ZW5jZS5ydW5fYW5kX2hhbmRsZV9lcnJvcnModG9vbCwgb3B0
aW9ucywgc2VsZi5fcHJlcGFyZV9zdGF0ZShvcHRpb25zLCBhcmdzLCB0b29sKSkKCgpjbGFzcyBC
dWlsZChBYnN0cmFjdFNlcXVlbmNlZENvbW1tYW5kKToKICAgIG5hbWUgPSAiYnVpbGQiCiAgICBo
ZWxwX3RleHQgPSAiVXBkYXRlIHdvcmtpbmcgY29weSBhbmQgYnVpbGQiCiAgICBhcmd1bWVudF9u
YW1lcyA9ICIiCiAgICBzaG93X2luX21haW5faGVscCA9IEZhbHNlCiAgICBzdGVwcyA9IFsKICAg
ICAgICBDbGVhbldvcmtpbmdEaXJlY3RvcnlTdGVwLAogICAgICAgIFVwZGF0ZVN0ZXAsCiAgICAg
ICAgQnVpbGRTdGVwLAogICAgXQoKCmNsYXNzIExhbmREaWZmKEFic3RyYWN0U2VxdWVuY2VkQ29t
bW1hbmQpOgogICAgbmFtZSA9ICJsYW5kLWRpZmYiCiAgICBoZWxwX3RleHQgPSAiTGFuZCB0aGUg
Y3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBkaWZmIGFuZCB1cGRhdGVzIHRoZSBhc3NvY2lhdGVk
IGJ1ZyBpZiBhbnkiCiAgICBhcmd1bWVudF9uYW1lcyA9ICJbQlVHSURdIgogICAgc2hvd19pbl9t
YWluX2hlbHAgPSBUcnVlCiAgICBzdGVwcyA9IFsKICAgICAgICBFbnN1cmVCdWlsZGVyc0FyZUdy
ZWVuU3RlcCwKICAgICAgICBVcGRhdGVDaGFuZ2Vsb2dzV2l0aFJldmlld2VyU3RlcCwKICAgICAg
ICBFbnN1cmVCdWlsZGVyc0FyZUdyZWVuU3RlcCwKICAgICAgICBCdWlsZFN0ZXAsCiAgICAgICAg
UnVuVGVzdHNTdGVwLAogICAgICAgIENvbW1pdFN0ZXAsCiAgICAgICAgQ2xvc2VCdWdGb3JMYW5k
RGlmZlN0ZXAsCiAgICBdCgogICAgZGVmIF9wcmVwYXJlX3N0YXRlKHNlbGYsIG9wdGlvbnMsIGFy
Z3MsIHRvb2wpOgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICJwYXRjaCI6IHsKICAgICAg
ICAgICAgICAgICJpZCI6IE5vbmUsCiAgICAgICAgICAgICAgICAiYnVnX2lkIjogKGFyZ3MgYW5k
IGFyZ3NbMF0pIG9yIHBhcnNlX2J1Z19pZCh0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaCgpKSwKICAg
ICAgICAgICAgfQogICAgICAgIH0KCgpjbGFzcyBBYnN0cmFjdFBhdGNoUHJvY2Vzc2luZ0NvbW1h
bmQoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1tYW5kKToKICAgICMgU3ViY2xhc3NlcyBtdXN0IGlt
cGxlbWVudCB0aGUgbWV0aG9kcyBiZWxvdy4gIFdlIGRvbid0IGRlY2xhcmUgdGhlbSBoZXJlCiAg
ICAjIGJlY2F1c2Ugd2Ugd2FudCB0byBiZSBhYmxlIHRvIGltcGxlbWVudCB0aGVtIHdpdGggbWl4
LWlucy4KICAgICMKICAgICMgZGVmIF9mZXRjaF9saXN0X29mX3BhdGNoZXNfdG9fcHJvY2Vzcyhz
ZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKICAgICMgZGVmIF9wcmVwYXJlX3RvX3Byb2Nlc3Mo
c2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9j
b2xsZWN0X3BhdGNoZXNfYnlfYnVnKHBhdGNoZXMpOgogICAgICAgIGJ1Z3NfdG9fcGF0Y2hlcyA9
IHt9CiAgICAgICAgZm9yIHBhdGNoIGluIHBhdGNoZXM6CiAgICAgICAgICAgIGJ1Z19pZCA9IHBh
dGNoWyJidWdfaWQiXQogICAgICAgICAgICBidWdzX3RvX3BhdGNoZXNbYnVnX2lkXSA9IGJ1Z3Nf
dG9fcGF0Y2hlcy5nZXQoYnVnX2lkLCBbXSkgKyBbcGF0Y2hdCiAgICAgICAgcmV0dXJuIGJ1Z3Nf
dG9fcGF0Y2hlcwoKICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgog
ICAgICAgIHNlbGYuX3ByZXBhcmVfdG9fcHJvY2VzcyhvcHRpb25zLCBhcmdzLCB0b29sKQogICAg
ICAgIHBhdGNoZXMgPSBzZWxmLl9mZXRjaF9saXN0X29mX3BhdGNoZXNfdG9fcHJvY2VzcyhvcHRp
b25zLCBhcmdzLCB0b29sKQoKICAgICAgICAjIEl0J3MgbmljZSB0byBwcmludCBvdXQgdG90YWwg
c3RhdGlzdGljcy4KICAgICAgICBidWdzX3RvX3BhdGNoZXMgPSBzZWxmLl9jb2xsZWN0X3BhdGNo
ZXNfYnlfYnVnKHBhdGNoZXMpCiAgICAgICAgbG9nKCJQcm9jZXNzaW5nICVzIGZyb20gJXMuIiAl
IChwbHVyYWxpemUoInBhdGNoIiwgbGVuKHBhdGNoZXMpKSwgcGx1cmFsaXplKCJidWciLCBsZW4o
YnVnc190b19wYXRjaGVzKSkpKQoKICAgICAgICBmb3IgcGF0Y2ggaW4gcGF0Y2hlczoKICAgICAg
ICAgICAgc2VsZi5fcHJvY2Vzc19wYXRjaChwYXRjaCwgb3B0aW9ucywgYXJncywgdG9vbCkKCgpj
bGFzcyBBYnN0cmFjdFBhdGNoU2VxdWVuY2luZ0NvbW1hbmQoQWJzdHJhY3RQYXRjaFByb2Nlc3Np
bmdDb21tYW5kKToKICAgIHByZXBhcmVfc3RlcHMgPSBOb25lCiAgICBtYWluX3N0ZXBzID0gTm9u
ZQoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBfY3JlYXRlX3N0ZXBfc2VxdWVuY2Uoc3RlcHMp
OgogICAgICAgIGlmIG5vdCBzdGVwczoKICAgICAgICAgICAgcmV0dXJuIE5vbmUsIFtdCiAgICAg
ICAgc3RlcF9zZXF1ZW5jZSA9IFN0ZXBTZXF1ZW5jZShzdGVwcykKICAgICAgICByZXR1cm4gc3Rl
cF9zZXF1ZW5jZSwgc3RlcF9zZXF1ZW5jZS5vcHRpb25zKCkKCiAgICBkZWYgX19pbml0X18oc2Vs
Zik6CiAgICAgICAgb3B0aW9ucyA9IFtdCiAgICAgICAgc2VsZi5fcHJlcGFyZV9zZXF1ZW5jZSwg
cHJlcGFyZV9vcHRpb25zID0gc2VsZi5fY3JlYXRlX3N0ZXBfc2VxdWVuY2Uoc2VsZi5wcmVwYXJl
X3N0ZXBzKQogICAgICAgIHNlbGYuX21haW5fc2VxdWVuY2UsIG1haW5fb3B0aW9ucyA9IHNlbGYu
X2NyZWF0ZV9zdGVwX3NlcXVlbmNlKHNlbGYubWFpbl9zdGVwcykKICAgICAgICBvcHRpb25zID0g
c29ydGVkKHNldChwcmVwYXJlX29wdGlvbnMgKyBtYWluX29wdGlvbnMpKQogICAgICAgIEFic3Ry
YWN0UGF0Y2hQcm9jZXNzaW5nQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBvcHRpb25zKQoKICAgIGRl
ZiBfcHJlcGFyZV90b19wcm9jZXNzKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAg
IGlmIHNlbGYuX3ByZXBhcmVfc2VxdWVuY2U6CiAgICAgICAgICAgIHNlbGYuX3ByZXBhcmVfc2Vx
dWVuY2UucnVuX2FuZF9oYW5kbGVfZXJyb3JzKHRvb2wsIG9wdGlvbnMpCgogICAgZGVmIF9wcm9j
ZXNzX3BhdGNoKHNlbGYsIHBhdGNoLCBvcHRpb25zLCBhcmdzLCB0b29sKToKICAgICAgICBpZiBz
ZWxmLl9tYWluX3NlcXVlbmNlOgogICAgICAgICAgICBzdGF0ZSA9IHsicGF0Y2giOiBwYXRjaH0K
ICAgICAgICAgICAgc2VsZi5fbWFpbl9zZXF1ZW5jZS5ydW5fYW5kX2hhbmRsZV9lcnJvcnModG9v
bCwgb3B0aW9ucywgc3RhdGUpCgoKY2xhc3MgUHJvY2Vzc0F0dGFjaG1lbnRzTWl4aW4ob2JqZWN0
KToKICAgIGRlZiBfZmV0Y2hfbGlzdF9vZl9wYXRjaGVzX3RvX3Byb2Nlc3Moc2VsZiwgb3B0aW9u
cywgYXJncywgdG9vbCk6CiAgICAgICAgcmV0dXJuIG1hcChsYW1iZGEgcGF0Y2hfaWQ6IHRvb2wu
YnVncy5mZXRjaF9hdHRhY2htZW50KHBhdGNoX2lkKSwgYXJncykKCgpjbGFzcyBQcm9jZXNzQnVn
c01peGluKG9iamVjdCk6CiAgICBkZWYgX2ZldGNoX2xpc3Rfb2ZfcGF0Y2hlc190b19wcm9jZXNz
KHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAgIGFsbF9wYXRjaGVzID0gW10KICAg
ICAgICBmb3IgYnVnX2lkIGluIGFyZ3M6CiAgICAgICAgICAgIHBhdGNoZXMgPSB0b29sLmJ1Z3Mu
ZmV0Y2hfcmV2aWV3ZWRfcGF0Y2hlc19mcm9tX2J1ZyhidWdfaWQpCiAgICAgICAgICAgIGxvZygi
JXMgZm91bmQgb24gYnVnICVzLiIgJSAocGx1cmFsaXplKCJyZXZpZXdlZCBwYXRjaCIsIGxlbihw
YXRjaGVzKSksIGJ1Z19pZCkpCiAgICAgICAgICAgIGFsbF9wYXRjaGVzICs9IHBhdGNoZXMKICAg
ICAgICByZXR1cm4gYWxsX3BhdGNoZXMKCgpjbGFzcyBDaGVja1N0eWxlKEFic3RyYWN0UGF0Y2hT
ZXF1ZW5jaW5nQ29tbWFuZCwgUHJvY2Vzc0F0dGFjaG1lbnRzTWl4aW4pOgogICAgbmFtZSA9ICJj
aGVjay1zdHlsZSIKICAgIGhlbHBfdGV4dCA9ICJSdW4gY2hlY2std2Via2l0LXN0eWxlIG9uIHRo
ZSBzcGVjaWZpZWQgYXR0YWNobWVudHMiCiAgICBhcmd1bWVudF9uYW1lcyA9ICJBVFRBQ0hNRU5U
X0lEIFtBVFRBQ0hNRU5UX0lEU10iCiAgICBzaG93X2luX21haW5faGVscCA9IEZhbHNlCiAgICBt
YWluX3N0ZXBzID0gWwogICAgICAgIENsZWFuV29ya2luZ0RpcmVjdG9yeVN0ZXAsCiAgICAgICAg
VXBkYXRlU3RlcCwKICAgICAgICBBcHBseVBhdGNoU3RlcCwKICAgICAgICBDaGVja1N0eWxlU3Rl
cCwKICAgIF0KCgpjbGFzcyBCdWlsZEF0dGFjaG1lbnQoQWJzdHJhY3RQYXRjaFNlcXVlbmNpbmdD
b21tYW5kLCBQcm9jZXNzQXR0YWNobWVudHNNaXhpbik6CiAgICBuYW1lID0gImJ1aWxkLWF0dGFj
aG1lbnQiCiAgICBoZWxwX3RleHQgPSAiQXBwbHkgYW5kIGJ1aWxkIHBhdGNoZXMgZnJvbSBidWd6
aWxsYSIKICAgIGFyZ3VtZW50X25hbWVzID0gIkFUVEFDSE1FTlRfSUQgW0FUVEFDSE1FTlRfSURT
XSIKICAgIHNob3dfaW5fbWFpbl9oZWxwID0gRmFsc2UKICAgIG1haW5fc3RlcHMgPSBbCiAgICAg
ICAgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5U3RlcCwKICAgICAgICBVcGRhdGVTdGVwLAogICAgICAg
IEFwcGx5UGF0Y2hTdGVwLAogICAgICAgIEJ1aWxkU3RlcCwKICAgIF0KCgpjbGFzcyBBYnN0cmFj
dFBhdGNoQXBwbHlpbmdDb21tYW5kKEFic3RyYWN0UGF0Y2hTZXF1ZW5jaW5nQ29tbWFuZCk6CiAg
ICBwcmVwYXJlX3N0ZXBzID0gWwogICAgICAgIEVuc3VyZUxvY2FsQ29tbWl0SWZOZWVkZWQsCiAg
ICAgICAgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5V2l0aExvY2FsQ29tbWl0c1N0ZXAsCiAgICAgICAg
VXBkYXRlU3RlcCwKICAgIF0KICAgIG1haW5fc3RlcHMgPSBbCiAgICAgICAgQXBwbHlQYXRjaFdp
dGhMb2NhbENvbW1pdFN0ZXAsCiAgICBdCgoKY2xhc3MgQXBwbHlBdHRhY2htZW50KEFic3RyYWN0
UGF0Y2hBcHBseWluZ0NvbW1hbmQsIFByb2Nlc3NBdHRhY2htZW50c01peGluKToKICAgIG5hbWUg
PSAiYXBwbHktYXR0YWNobWVudCIKICAgIGhlbHBfdGV4dCA9ICJBcHBseSBhbiBhdHRhY2htZW50
IHRvIHRoZSBsb2NhbCB3b3JraW5nIGRpcmVjdG9yeSIKICAgIGFyZ3VtZW50X25hbWVzID0gIkFU
VEFDSE1FTlRfSUQgW0FUVEFDSE1FTlRfSURTXSIKICAgIHNob3dfaW5fbWFpbl9oZWxwID0gVHJ1
ZQoKCmNsYXNzIEFwcGx5UGF0Y2hlcyhBYnN0cmFjdFBhdGNoQXBwbHlpbmdDb21tYW5kLCBQcm9j
ZXNzQnVnc01peGluKToKICAgIG5hbWUgPSAiYXBwbHktcGF0Y2hlcyIKICAgIGhlbHBfdGV4dCA9
ICJBcHBseSByZXZpZXdlZCBwYXRjaGVzIGZyb20gcHJvdmlkZWQgYnVncyB0byB0aGUgbG9jYWwg
d29ya2luZyBkaXJlY3RvcnkiCiAgICBhcmd1bWVudF9uYW1lcyA9ICJCVUdJRCBbQlVHSURTXSIK
ICAgIHNob3dfaW5fbWFpbl9oZWxwID0gVHJ1ZQoKCmNsYXNzIEFic3RyYWN0UGF0Y2hMYW5kaW5n
Q29tbWFuZChBYnN0cmFjdFBhdGNoU2VxdWVuY2luZ0NvbW1hbmQpOgogICAgcHJlcGFyZV9zdGVw
cyA9IFsKICAgICAgICBFbnN1cmVCdWlsZGVyc0FyZUdyZWVuU3RlcCwKICAgIF0KICAgIG1haW5f
c3RlcHMgPSBbCiAgICAgICAgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5U3RlcCwKICAgICAgICBVcGRh
dGVTdGVwLAogICAgICAgIEFwcGx5UGF0Y2hTdGVwLAogICAgICAgIEVuc3VyZUJ1aWxkZXJzQXJl
R3JlZW5TdGVwLAogICAgICAgIEJ1aWxkU3RlcCwKICAgICAgICBSdW5UZXN0c1N0ZXAsCiAgICAg
ICAgQ29tbWl0U3RlcCwKICAgICAgICBDbG9zZVBhdGNoU3RlcCwKICAgICAgICBDbG9zZUJ1Z1N0
ZXAsCiAgICBdCgoKY2xhc3MgTGFuZEF0dGFjaG1lbnQoQWJzdHJhY3RQYXRjaExhbmRpbmdDb21t
YW5kLCBQcm9jZXNzQXR0YWNobWVudHNNaXhpbik6CiAgICBuYW1lID0gImxhbmQtYXR0YWNobWVu
dCIKICAgIGhlbHBfdGV4dCA9ICJMYW5kIHBhdGNoZXMgZnJvbSBidWd6aWxsYSwgb3B0aW9uYWxs
eSBidWlsZGluZyBhbmQgdGVzdGluZyB0aGVtIGZpcnN0IgogICAgYXJndW1lbnRfbmFtZXMgPSAi
QVRUQUNITUVOVF9JRCBbQVRUQUNITUVOVF9JRFNdIgogICAgc2hvd19pbl9tYWluX2hlbHAgPSBU
cnVlCgoKY2xhc3MgTGFuZFBhdGNoZXMoQWJzdHJhY3RQYXRjaExhbmRpbmdDb21tYW5kLCBQcm9j
ZXNzQnVnc01peGluKToKICAgIG5hbWUgPSAibGFuZC1wYXRjaGVzIgogICAgaGVscF90ZXh0ID0g
IkxhbmQgYWxsIHBhdGNoZXMgb24gdGhlIGdpdmVuIGJ1Z3MsIG9wdGlvbmFsbHkgYnVpbGRpbmcg
YW5kIHRlc3RpbmcgdGhlbSBmaXJzdCIKICAgIGFyZ3VtZW50X25hbWVzID0gIkJVR0lEIFtCVUdJ
RFNdIgogICAgc2hvd19pbl9tYWluX2hlbHAgPSBUcnVlCgoKIyBGSVhNRTogTWFrZSBSb2xsb3V0
IG1vcmUgZGVjbGFyYXRpdmUuCmNsYXNzIFJvbGxvdXQoQ29tbWFuZCk6CiAgICBuYW1lID0gInJv
bGxvdXQiCiAgICBzaG93X2luX21haW5faGVscCA9IFRydWUKICAgIGRlZiBfX2luaXRfXyhzZWxm
KToKICAgICAgICBzZWxmLl9zZXF1ZW5jZSA9IFN0ZXBTZXF1ZW5jZShbCiAgICAgICAgICAgIENs
ZWFuV29ya2luZ0RpcmVjdG9yeVN0ZXAsCiAgICAgICAgICAgIFVwZGF0ZVN0ZXAsCiAgICAgICAg
ICAgIFJldmVydFJldmlzaW9uU3RlcCwKICAgICAgICAgICAgUHJlcGFyZUNoYW5nZWxvZ0ZvclJl
dmVydFN0ZXAsCiAgICAgICAgICAgIENvbXBsZXRlUm9sbG91dCwKICAgICAgICBdKQogICAgICAg
IENvbW1hbmQuX19pbml0X18oc2VsZiwgIlJldmVydCB0aGUgZ2l2ZW4gcmV2aXNpb24gaW4gdGhl
IHdvcmtpbmcgY29weSBhbmQgb3B0aW9uYWxseSBjb21taXQgdGhlIHJldmVydCBhbmQgcmUtb3Bl
biB0aGUgb3JpZ2luYWwgYnVnIiwgIlJFVklTSU9OIFtCVUdJRF0iLCBvcHRpb25zPXNlbGYuX3Nl
cXVlbmNlLm9wdGlvbnMoKSkKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX3BhcnNlX2J1Z19p
ZF9mcm9tX3JldmlzaW9uX2RpZmYodG9vbCwgcmV2aXNpb24pOgogICAgICAgIG9yaWdpbmFsX2Rp
ZmYgPSB0b29sLnNjbSgpLmRpZmZfZm9yX3JldmlzaW9uKHJldmlzaW9uKQogICAgICAgIHJldHVy
biBwYXJzZV9idWdfaWQob3JpZ2luYWxfZGlmZikKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYg
X3Jlb3Blbl9idWdfYWZ0ZXJfcm9sbG91dCh0b29sLCBidWdfaWQsIGNvbW1lbnRfdGV4dCk6CiAg
ICAgICAgaWYgYnVnX2lkOgogICAgICAgICAgICB0b29sLmJ1Z3MucmVvcGVuX2J1ZyhidWdfaWQs
IGNvbW1lbnRfdGV4dCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBsb2coY29tbWVudF90ZXh0
KQogICAgICAgICAgICBsb2coIk5vIGJ1Z3Mgd2VyZSB1cGRhdGVkIG9yIHJlLW9wZW5lZCB0byBy
ZWZsZWN0IHRoaXMgcm9sbG91dC4iKQoKICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFy
Z3MsIHRvb2wpOgogICAgICAgIHJldmlzaW9uID0gYXJnc1swXQogICAgICAgIGJ1Z19pZCA9IHNl
bGYuX3BhcnNlX2J1Z19pZF9mcm9tX3JldmlzaW9uX2RpZmYodG9vbCwgcmV2aXNpb24pCiAgICAg
ICAgaWYgb3B0aW9ucy5jb21wbGV0ZV9yb2xsb3V0OgogICAgICAgICAgICBpZiBidWdfaWQ6CiAg
ICAgICAgICAgICAgICBsb2coIldpbGwgcmUtb3BlbiBidWcgJXMgYWZ0ZXIgcm9sbG91dC4iICUg
YnVnX2lkKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbG9nKCJGYWlsZWQgdG8g
cGFyc2UgYnVnIG51bWJlciBmcm9tIGRpZmYuICBObyBidWdzIHdpbGwgYmUgdXBkYXRlZC9yZW9w
ZW5lZCBhZnRlciB0aGUgcm9sbG91dC4iKQoKICAgICAgICBzdGF0ZSA9IHsKICAgICAgICAgICAg
InJldmlzaW9uIjogcmV2aXNpb24sCiAgICAgICAgICAgICJidWdfaWQiOiBidWdfaWQsCiAgICAg
ICAgfQogICAgICAgIHNlbGYuX3NlcXVlbmNlLnJ1bl9hbmRfaGFuZGxlX2Vycm9ycyh0b29sLCBv
cHRpb25zLCBzdGF0ZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>