<?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>69277</bug_id>
          
          <creation_ts>2011-10-03 12:06:47 -0700</creation_ts>
          <short_desc>A little more WebSQLDatabase thread safety</short_desc>
          <delta_ts>2011-10-03 16:06:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Nordman">michaeln</reporter>
          <assigned_to name="Michael Nordman">michaeln</assigned_to>
          <cc>ap</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>477124</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-10-03 12:06:47 -0700</bug_when>
    <thetext>We&apos;re getting reports of INVALID_STATE exceptions being throw from the openDatabase method. It looks like there some unsafe initialization code paths that may be the culprit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477129</commentid>
    <comment_count>1</comment_count>
      <attachid>109505</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-10-03 12:12:08 -0700</bug_when>
    <thetext>Created attachment 109505
safer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477132</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-03 12:13:46 -0700</bug_when>
    <thetext>Attachment 109505 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/ChangeLog:5:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/ChangeLog:6:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 2 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477146</commentid>
    <comment_count>3</comment_count>
      <attachid>109508</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-10-03 12:27:41 -0700</bug_when>
    <thetext>Created attachment 109508
safer

made some whitespace changes in the changelog file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477232</commentid>
    <comment_count>4</comment_count>
      <attachid>109508</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-03 14:11:56 -0700</bug_when>
    <thetext>Comment on attachment 109508
safer

View in context: https://bugs.webkit.org/attachment.cgi?id=109508&amp;action=review

I don&apos;t understand thread-safe string copying well enough, so leaving this for someone else (Dave Levin?) to review.

&gt; Source/WebCore/storage/AbstractDatabase.cpp:51
&gt; +static const char versionKey[] = &quot;WebKitDatabaseVersionKey&quot;;

Is this actually guaranteed to not use initialization, or do you need to use a pointer?

&gt; Source/WebCore/storage/AbstractDatabase.cpp:298
&gt; +            const String tableName(infoTableName);

We don&apos;t use local const variables in WebKit.

&gt; Source/WebCore/storage/AbstractDatabase.cpp:396
&gt; +    const String query(String(&quot;SELECT value FROM &quot;) + infoTableName +  &quot; WHERE key = &apos;&quot; + versionKey + &quot;&apos;;&quot;);

We don&apos;t use local const variables in WebKit.

&gt; Source/WebCore/storage/AbstractDatabase.cpp:416
&gt; +    const String query(String(&quot;INSERT INTO &quot;) + infoTableName +  &quot; (key, value) VALUES (&apos;&quot; + versionKey + &quot;&apos;, ?);&quot;);

We don&apos;t use local const variables in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477239</commentid>
    <comment_count>5</comment_count>
      <attachid>109530</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-10-03 14:23:49 -0700</bug_when>
    <thetext>Created attachment 109530
safer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477242</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-10-03 14:26:11 -0700</bug_when>
    <thetext>&gt; Is this actually guaranteed to not use initialization, or do you need to use a pointer?

Yes, no.

&gt; We don&apos;t use local const variables in WebKit.

Done x 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477262</commentid>
    <comment_count>7</comment_count>
      <attachid>109530</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-10-03 14:57:17 -0700</bug_when>
    <thetext>Comment on attachment 109530
safer

View in context: https://bugs.webkit.org/attachment.cgi?id=109530&amp;action=review

Looks great!

&gt; Source/WebCore/storage/AbstractDatabase.cpp:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

In WebKit, we leave the year in tact, so this would become 2010, 2011.

But you don&apos;t need to change this back -- just fyi for future changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477265</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-10-03 14:58:47 -0700</bug_when>
    <thetext>thank you good reviewer sir!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477315</commentid>
    <comment_count>9</comment_count>
      <attachid>109530</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-03 16:06:43 -0700</bug_when>
    <thetext>Comment on attachment 109530
safer

Clearing flags on attachment: 109530

Committed r96554: &lt;http://trac.webkit.org/changeset/96554&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477316</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-03 16:06:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109505</attachid>
            <date>2011-10-03 12:12:08 -0700</date>
            <delta_ts>2011-10-03 12:27:41 -0700</delta_ts>
            <desc>safer</desc>
            <filename>safer.txt</filename>
            <type>text/plain</type>
            <size>12517</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2NTI0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTAtMDMgIE1pY2hhZWwg
Tm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgQSBsaXR0bGUgbW9yZSBX
ZWJTUUxEYXRhYmFzZSB0aHJlYWQgc2FmZXR5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkyNzcKKyAgICAgICAgKiBzd2l0Y2ggdG8gdXNpbmcgQXRv
bWljYWxseUluaXRpYWxpemVkU3RhdGljIHdoZXJlIGFwcHJvcGlhdGUKKyAgICAgICAgKiBhdm9p
ZCB1c2luZyBzb21lIFN0cmluZ3MgYWNyb3NzIHRocmVhZHMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeGlzdGluZyB0ZXN0cyBhcHBseS4KKworICAg
ICAgICAqIHN0b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpn
dWlkTXV0ZXgpOgorICAgICAgICAoV2ViQ29yZTo6Z3VpZFRvVmVyc2lvbk1hcCk6CisgICAgICAg
IChXZWJDb3JlOjpndWlkVG9EYXRhYmFzZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpndWlkRm9y
T3JpZ2luQW5kTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpkYXRh
YmFzZUluZm9UYWJsZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZTo6
QWJzdHJhY3REYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpw
ZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNl
OjpnZXRWZXJzaW9uRnJvbURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0
YWJhc2U6OnNldFZlcnNpb25JbkRhdGFiYXNlKToKKyAgICAgICAgKiBzdG9yYWdlL0Fic3RyYWN0
RGF0YWJhc2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcik6
CisgICAgICAgICogc3RvcmFnZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UXVvdGFUcmFja2VyOjppbnN0YW5jZSk6CisKIDIwMTEtMTAtMDMgIENocmlzIEZs
ZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogc3VwcG9ydCByb2xl
IG1hcHBpbmcgZm9yIEhUTUw1IHNlY3Rpb24gZWxlbWVudHMKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcAkocmV2aXNpb24gOTY1MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDYg
KzQ4LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgY29uc3QgY2hhciB2ZXJz
aW9uS2V5W10gPSAiV2ViS2l0RGF0YWJhc2VWZXJzaW9uS2V5IjsKK3N0YXRpYyBjb25zdCBjaGFy
IGluZm9UYWJsZU5hbWVbXSA9ICJfX1dlYktpdERhdGFiYXNlSW5mb1RhYmxlX18iOworCiBzdGF0
aWMgYm9vbCByZXRyaWV2ZVRleHRSZXN1bHRGcm9tRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRi
LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBTdHJpbmcmIHJlc3VsdFN0cmluZykKIHsKICAgICBTUUxp
dGVTdGF0ZW1lbnQgc3RhdGVtZW50KGRiLCBxdWVyeSk7CkBAIC05NiwxNiArOTksMTUgQEAgc3Rh
dGljIGJvb2wgc2V0VGV4dFZhbHVlSW5EYXRhYmFzZShTUUxpdAogLy8gRklYTUU6IG1vdmUgYWxs
IGd1aWQtcmVsYXRlZCBmdW5jdGlvbnMgdG8gYSBEYXRhYmFzZVZlcnNpb25UcmFja2VyIGNsYXNz
Lgogc3RhdGljIE11dGV4JiBndWlkTXV0ZXgoKQogewotICAgIC8vIE5vdGU6IFdlIGRvbid0IGhh
dmUgdG8gdXNlIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyBoZXJlIGJlY2F1c2UKLSAgICAv
LyB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmNlIGluIHRoZSBjb25zdHJ1Y3RvciBvbiB0aGUg
bWFpbiB0aHJlYWQKLSAgICAvLyBiZWZvcmUgYW55IG90aGVyIHRocmVhZHMgdGhhdCBjYWxsIHRo
aXMgZnVuY3Rpb24gYXJlIHVzZWQuCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0
ZXgsICgpKTsKKyAgICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoTXV0ZXgmLCBtdXRleCA9
ICpuZXcgTXV0ZXgpOwogICAgIHJldHVybiBtdXRleDsKIH0KIAogdHlwZWRlZiBIYXNoTWFwPGlu
dCwgU3RyaW5nPiBHdWlkVmVyc2lvbk1hcDsKIHN0YXRpYyBHdWlkVmVyc2lvbk1hcCYgZ3VpZFRv
VmVyc2lvbk1hcCgpCiB7CisgICAgLy8gRW5zdXJlIHRoZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgor
ICAgIEFTU0VSVCghZ3VpZE11dGV4KCkudHJ5TG9jaygpKTsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEd1aWRWZXJzaW9uTWFwLCBtYXAsICgpKTsKICAgICByZXR1cm4gbWFwOwogfQpAQCAtMTI5
LDE5ICsxMzEsMTkgQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUd1aWRWZXJzaW9uTWFwKAog
dHlwZWRlZiBIYXNoTWFwPGludCwgSGFzaFNldDxBYnN0cmFjdERhdGFiYXNlKj4qPiBHdWlkRGF0
YWJhc2VNYXA7CiBzdGF0aWMgR3VpZERhdGFiYXNlTWFwJiBndWlkVG9EYXRhYmFzZU1hcCgpCiB7
CisgICAgLy8gRW5zdXJlIHRoZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgorICAgIEFTU0VSVCghZ3Vp
ZE11dGV4KCkudHJ5TG9jaygpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEd1aWREYXRhYmFz
ZU1hcCwgbWFwLCAoKSk7CiAgICAgcmV0dXJuIG1hcDsKIH0KIAogc3RhdGljIGludCBndWlkRm9y
T3JpZ2luQW5kTmFtZShjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQog
eworICAgIC8vIEVuc3VyZSB0aGUgdGhlIG11dGV4IGlzIGxvY2tlZC4KKyAgICBBU1NFUlQoIWd1
aWRNdXRleCgpLnRyeUxvY2soKSk7CisKICAgICBTdHJpbmcgc3RyaW5nSUQgPSBvcmlnaW4gKyAi
LyIgKyBuYW1lOwogCi0gICAgLy8gTm90ZTogV2UgZG9uJ3QgaGF2ZSB0byB1c2UgQXRvbWljYWxs
eUluaXRpYWxpemVkU3RhdGljIGhlcmUgYmVjYXVzZQotICAgIC8vIHRoaXMgZnVuY3Rpb24gaXMg
Y2FsbGVkIG9uY2UgaW4gdGhlIGNvbnN0cnVjdG9yIG9uIHRoZSBtYWluIHRocmVhZAotICAgIC8v
IGJlZm9yZSBhbnkgb3RoZXIgdGhyZWFkcyB0aGF0IGNhbGwgdGhpcyBmdW5jdGlvbiBhcmUgdXNl
ZC4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBzdHJpbmdJZGVudGlmaWVyTXV0ZXgs
ICgpKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIoc3RyaW5nSWRlbnRpZmllck11dGV4KTsKICAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IElER3VpZE1hcDsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKElER3VpZE1hcCwgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcCwgKCkpOwogICAg
IGludCBndWlkID0gc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcC5nZXQoc3RyaW5nSUQpOwpAQCAt
MTY3LDEwICsxNjksOSBAQCB2b2lkIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKGJv
CiB9CiAKIC8vIHN0YXRpYwotY29uc3QgU3RyaW5nJiBBYnN0cmFjdERhdGFiYXNlOjpkYXRhYmFz
ZUluZm9UYWJsZU5hbWUoKQorY29uc3QgY2hhciogQWJzdHJhY3REYXRhYmFzZTo6ZGF0YWJhc2VJ
bmZvVGFibGVOYW1lKCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbmFtZSwg
KCJfX1dlYktpdERhdGFiYXNlSW5mb1RhYmxlX18iKSk7Ci0gICAgcmV0dXJuIG5hbWU7CisgICAg
cmV0dXJuIGluZm9UYWJsZU5hbWU7CiB9CiAKIEFic3RyYWN0RGF0YWJhc2U6OkFic3RyYWN0RGF0
YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwKQEAgLTE4NywxNSArMTg4LDE0IEBAIEFi
c3RyYWN0RGF0YWJhc2U6OkFic3RyYWN0RGF0YWJhc2UoU2NyaXAKICAgICBBU1NFUlQoY29udGV4
dC0+aXNDb250ZXh0VGhyZWFkKCkpOwogICAgIG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2lu
ID0gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpOwogCi0gICAgbV9k
YXRhYmFzZUF1dGhvcml6ZXIgPSBEYXRhYmFzZUF1dGhvcml6ZXI6OmNyZWF0ZShkYXRhYmFzZUlu
Zm9UYWJsZU5hbWUoKSk7CisgICAgbV9kYXRhYmFzZUF1dGhvcml6ZXIgPSBEYXRhYmFzZUF1dGhv
cml6ZXI6OmNyZWF0ZShpbmZvVGFibGVOYW1lKTsKIAogICAgIGlmIChtX25hbWUuaXNOdWxsKCkp
CiAgICAgICAgIG1fbmFtZSA9ICIiOwogCi0gICAgbV9ndWlkID0gZ3VpZEZvck9yaWdpbkFuZE5h
bWUoc2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbmFtZSk7CiAgICAgewogICAgICAgICBN
dXRleExvY2tlciBsb2NrZXIoZ3VpZE11dGV4KCkpOwotCisgICAgICAgIG1fZ3VpZCA9IGd1aWRG
b3JPcmlnaW5BbmROYW1lKHNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG5hbWUpOwogICAg
ICAgICBIYXNoU2V0PEFic3RyYWN0RGF0YWJhc2UqPiogaGFzaFNldCA9IGd1aWRUb0RhdGFiYXNl
TWFwKCkuZ2V0KG1fZ3VpZCk7CiAgICAgICAgIGlmICghaGFzaFNldCkgewogICAgICAgICAgICAg
aGFzaFNldCA9IG5ldyBIYXNoU2V0PEFic3RyYWN0RGF0YWJhc2UqPjsKQEAgLTI2NCwxNSArMjY0
LDE1IEBAIGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXIKICAgICAgICAg
R3VpZFZlcnNpb25NYXA6Oml0ZXJhdG9yIGVudHJ5ID0gZ3VpZFRvVmVyc2lvbk1hcCgpLmZpbmQo
bV9ndWlkKTsKICAgICAgICAgaWYgKGVudHJ5ICE9IGd1aWRUb1ZlcnNpb25NYXAoKS5lbmQoKSkg
ewogICAgICAgICAgICAgLy8gTWFwIG51bGwgc3RyaW5nIHRvIGVtcHR5IHN0cmluZyAoc2VlIHVw
ZGF0ZUd1aWRWZXJzaW9uTWFwKCkpLgotICAgICAgICAgICAgY3VycmVudFZlcnNpb24gPSBlbnRy
eS0+c2Vjb25kLmlzTnVsbCgpID8gU3RyaW5nKCIiKSA6IGVudHJ5LT5zZWNvbmQ7CisgICAgICAg
ICAgICBjdXJyZW50VmVyc2lvbiA9IGVudHJ5LT5zZWNvbmQuaXNOdWxsKCkgPyBTdHJpbmcoIiIp
IDogZW50cnktPnNlY29uZC50aHJlYWRzYWZlQ29weSgpOwogICAgICAgICAgICAgTE9HKFN0b3Jh
Z2VBUEksICJDdXJyZW50IGNhY2hlZCB2ZXJzaW9uIGZvciBndWlkICVpIGlzICVzIiwgbV9ndWlk
LCBjdXJyZW50VmVyc2lvbi5hc2NpaSgpLmRhdGEoKSk7CiAKICNpZiBQTEFURk9STShDSFJPTUlV
TSkKICAgICAgICAgICAgIC8vIE5vdGU6IEluIG11bHRpLXByb2Nlc3MgYnJvd3NlcnMgdGhlIGNh
Y2hlZCB2YWx1ZSBtYXkgYmUgaW5hY2N1cmF0ZSwgYnV0CiAgICAgICAgICAgICAvLyB3ZSBjYW5u
b3QgcmVhZCB0aGUgYWN0dWFsIHZlcnNpb24gZnJvbSB0aGUgZGF0YWJhc2Ugd2l0aG91dCBwb3Rl
bnRpYWxseQogICAgICAgICAgICAgLy8gaW5kdWNpbmcgYSBmb3JtIG9mIGRlYWRsb2NrLCBhIGJ1
c3l0aW1lb3V0IGVycm9yIHdoZW4gdHJ5aW5nIHRvCi0gICAgICAgICAgICAvLyBhY2Nlc3MgdGhl
IGRhdGFiYXNlLiBTbyB3ZSdsbCB1c2UgdGhlIGNhY2hlZCB2YWx1ZSBpZiB3ZSdyZSBhYmxlIHRv
IHJlYWQKLSAgICAgICAgICAgIC8vIHRoZSB2YWx1ZSB3aXRob3V0IHdhaXRpbmcsIGFuZCBvdGhl
cndpc2UgdXNlIHRoZSBjYWNoZWQgdmFsdWUgKHdoaWNoIG1heSBiZSBvZmYpLgorICAgICAgICAg
ICAgLy8gYWNjZXNzIHRoZSBkYXRhYmFzZS4gU28gd2UnbGwgdXNlIHRoZSBjYWNoZWQgdmFsdWUg
aWYgd2UncmUgdW5hYmxlIHRvIHJlYWQKKyAgICAgICAgICAgIC8vIHRoZSB2YWx1ZSBmcm9tIHRo
ZSBkYXRhYmFzZSBmaWxlIHdpdGhvdXQgd2FpdGluZy4KICAgICAgICAgICAgIC8vIEZJWE1FOiBB
ZGQgYW4gYXN5bmMgb3BlbkRhdGFiYXNlIG1ldGhvZCB0byB0aGUgRGF0YWJhc2VBUEkuCiAgICAg
ICAgICAgICBjb25zdCBpbnQgbm9TcWxpdGVCdXN5V2FpdFRpbWUgPSAwOwogICAgICAgICAgICAg
bV9zcWxpdGVEYXRhYmFzZS5zZXRCdXN5VGltZW91dChub1NxbGl0ZUJ1c3lXYWl0VGltZSk7CkBA
IC0yOTUsMTEgKzI5NSwxMiBAQCBib29sIEFic3RyYWN0RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5k
VmVyCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UudGFibGVFeGlzdHMoZGF0YWJhc2VJbmZvVGFi
bGVOYW1lKCkpKSB7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcgdGFibGVOYW1lKGluZm9UYWJs
ZU5hbWUpOworICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLnRhYmxlRXhpc3RzKHRh
YmxlTmFtZSkpIHsKICAgICAgICAgICAgICAgICBtX25ldyA9IHRydWU7CiAKLSAgICAgICAgICAg
ICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSAi
ICsgZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkgKyAiIChrZXkgVEVYVCBOT1QgTlVMTCBPTiBDT05G
TElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLHZhbHVlIFRFWFQgTk9UIE5VTEwg
T04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKLSAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gY3JlYXRlIHRhYmxlICVzIGluIGRhdGFiYXNlICVzIiwgZGF0YWJhc2VJbmZvVGFi
bGVOYW1lKCkuYXNjaWkoKS5kYXRhKCksIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNjaWkoKS5kYXRh
KCkpOworICAgICAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS5leGVjdXRlQ29tbWFu
ZCgiQ1JFQVRFIFRBQkxFICIgKyB0YWJsZU5hbWUgKyAiIChrZXkgVEVYVCBOT1QgTlVMTCBPTiBD
T05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLHZhbHVlIFRFWFQgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gY3JlYXRlIHRhYmxlICVzIGluIGRhdGFiYXNlICVzIiwgaW5mb1RhYmxlTmFt
ZSwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0
aW9uLnJvbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgIG1fc3FsaXRlRGF0YWJhc2UuY2xv
c2UoKTsKQEAgLTM5MCwyMCArMzkxLDEzIEBAIFN0cmluZyBBYnN0cmFjdERhdGFiYXNlOjpmaWxl
TmFtZSgpIGNvbnMKICAgICByZXR1cm4gbV9maWxlbmFtZS50aHJlYWRzYWZlQ29weSgpOwogfQog
Ci0vLyBzdGF0aWMKLWNvbnN0IFN0cmluZyYgQWJzdHJhY3REYXRhYmFzZTo6ZGF0YWJhc2VWZXJz
aW9uS2V5KCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywga2V5LCAoIldlYktp
dERhdGFiYXNlVmVyc2lvbktleSIpKTsKLSAgICByZXR1cm4ga2V5OwotfQotCiBib29sIEFic3Ry
YWN0RGF0YWJhc2U6OmdldFZlcnNpb25Gcm9tRGF0YWJhc2UoU3RyaW5nJiB2ZXJzaW9uLCBib29s
IHNob3VsZENhY2hlVmVyc2lvbikKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
Z2V0VmVyc2lvblF1ZXJ5LCAoIlNFTEVDVCB2YWx1ZSBGUk9NICIgKyBkYXRhYmFzZUluZm9UYWJs
ZU5hbWUoKSArICIgV0hFUkUga2V5ID0gJyIgKyBkYXRhYmFzZVZlcnNpb25LZXkoKSArICInOyIp
KTsKKyAgICBjb25zdCBTdHJpbmcgcXVlcnkoU3RyaW5nKCJTRUxFQ1QgdmFsdWUgRlJPTSAiKSAr
IGluZm9UYWJsZU5hbWUgKyAgIiBXSEVSRSBrZXkgPSAnIiArIHZlcnNpb25LZXkgKyAiJzsiKTsK
IAogICAgIG1fZGF0YWJhc2VBdXRob3JpemVyLT5kaXNhYmxlKCk7CiAKLSAgICBib29sIHJlc3Vs
dCA9IHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShtX3NxbGl0ZURhdGFiYXNlLCBnZXRW
ZXJzaW9uUXVlcnkudGhyZWFkc2FmZUNvcHkoKSwgdmVyc2lvbik7CisgICAgYm9vbCByZXN1bHQg
PSByZXRyaWV2ZVRleHRSZXN1bHRGcm9tRGF0YWJhc2UobV9zcWxpdGVEYXRhYmFzZSwgcXVlcnks
IHZlcnNpb24pOwogICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgaWYgKHNob3VsZENhY2hlVmVy
c2lvbikKICAgICAgICAgICAgIHNldENhY2hlZFZlcnNpb24odmVyc2lvbik7CkBAIC00MTksMTYg
KzQxMywxNiBAQCBib29sIEFic3RyYWN0RGF0YWJhc2U6OnNldFZlcnNpb25JbkRhdGFiCiB7CiAg
ICAgLy8gVGhlIElOU0VSVCB3aWxsIHJlcGxhY2UgYW4gZXhpc3RpbmcgZW50cnkgZm9yIHRoZSBk
YXRhYmFzZSB3aXRoIHRoZSBuZXcgdmVyc2lvbiBudW1iZXIsIGR1ZSB0byB0aGUgVU5JUVVFIE9O
IENPTkZMSUNUIFJFUExBQ0UKICAgICAvLyBjbGF1c2UgaW4gdGhlIENSRUFURSBzdGF0ZW1lbnQg
KHNlZSBEYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoKSkuCi0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIHNldFZlcnNpb25RdWVyeSwgKCJJTlNFUlQgSU5UTyAiICsgZGF0YWJh
c2VJbmZvVGFibGVOYW1lKCkgKyAiIChrZXksIHZhbHVlKSBWQUxVRVMgKCciICsgZGF0YWJhc2VW
ZXJzaW9uS2V5KCkgKyAiJywgPyk7IikpOworICAgIGNvbnN0IFN0cmluZyBxdWVyeShTdHJpbmco
IklOU0VSVCBJTlRPICIpICsgaW5mb1RhYmxlTmFtZSArICAiIChrZXksIHZhbHVlKSBWQUxVRVMg
KCciICsgdmVyc2lvbktleSArICInLCA/KTsiKTsKIAogICAgIG1fZGF0YWJhc2VBdXRob3JpemVy
LT5kaXNhYmxlKCk7CiAKLSAgICBib29sIHJlc3VsdCA9IHNldFRleHRWYWx1ZUluRGF0YWJhc2Uo
bV9zcWxpdGVEYXRhYmFzZSwgc2V0VmVyc2lvblF1ZXJ5LnRocmVhZHNhZmVDb3B5KCksIHZlcnNp
b24pOworICAgIGJvb2wgcmVzdWx0ID0gc2V0VGV4dFZhbHVlSW5EYXRhYmFzZShtX3NxbGl0ZURh
dGFiYXNlLCBxdWVyeSwgdmVyc2lvbik7CiAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICBpZiAo
c2hvdWxkQ2FjaGVWZXJzaW9uKQogICAgICAgICAgICAgc2V0Q2FjaGVkVmVyc2lvbih2ZXJzaW9u
KTsKICAgICB9IGVsc2UKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IHZlcnNpb24g
JXMgaW4gZGF0YWJhc2UgKCVzKSIsIHZlcnNpb24uYXNjaWkoKS5kYXRhKCksIHNldFZlcnNpb25R
dWVyeS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHNldCB2
ZXJzaW9uICVzIGluIGRhdGFiYXNlICglcykiLCB2ZXJzaW9uLmFzY2lpKCkuZGF0YSgpLCBxdWVy
eS5hc2NpaSgpLmRhdGEoKSk7CiAKICAgICBtX2RhdGFiYXNlQXV0aG9yaXplci0+ZW5hYmxlKCk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5oCShyZXZp
c2lvbiA5NjUyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRDYWNo
ZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgZ2V0QWN0dWFsVmVyc2lvbkZvclRy
YW5zYWN0aW9uKFN0cmluZyYgdmVyc2lvbik7CiAKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZUluZm9UYWJsZU5hbWUoKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGF0YWJhc2VJ
bmZvVGFibGVOYW1lKCk7CiAKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9jb250
ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW47CkBAIC0xMjAsOCArMTIwLDYgQEAgcHJvdGVjdGVkOgog
I2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VWZXJz
aW9uS2V5KCk7Ci0KICAgICBpbnQgbV9ndWlkOwogICAgIGJvb2wgbV9vcGVuZWQ7CiAgICAgYm9v
bCBtX25ldzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvY2hyb21pdW0vRGF0YWJhc2VU
cmFja2VyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
Y2hyb21pdW0vRGF0YWJhc2VUcmFja2VyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA5NjUyMikKKysr
IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvY2hyb21pdW0vRGF0YWJhc2VUcmFja2VyQ2hyb21pdW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
RGF0YWJhc2VUcmFja2VyJiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKQogewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoRGF0YWJhc2VUcmFja2VyLCB0cmFja2VyLCAoIiIpKTsKKyAgICBBdG9t
aWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoRGF0YWJhc2VUcmFja2VyJiwgdHJhY2tlciA9ICpuZXcg
RGF0YWJhc2VUcmFja2VyKCIiKSk7CiAgICAgcmV0dXJuIHRyYWNrZXI7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvY2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5jcHAJKHJl
dmlzaW9uIDk2NTIyKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9RdW90YVRy
YWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogUXVvdGFUcmFja2VyJiBRdW90YVRyYWNrZXI6Omluc3RhbmNlKCkKIHsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFF1b3RhVHJhY2tlciwgdHJhY2tlciwgKCkpOworICAgIEF0b21pY2Fs
bHlJbml0aWFsaXplZFN0YXRpYyhRdW90YVRyYWNrZXImLCB0cmFja2VyID0gKm5ldyBRdW90YVRy
YWNrZXIpOwogICAgIHJldHVybiB0cmFja2VyOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109508</attachid>
            <date>2011-10-03 12:27:41 -0700</date>
            <delta_ts>2011-10-03 14:23:49 -0700</delta_ts>
            <desc>safer</desc>
            <filename>safer2.txt</filename>
            <type>text/plain</type>
            <size>12519</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2NTI0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMTAtMDMgIE1pY2hhZWwg
Tm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgQSBsaXR0bGUgbW9yZSBX
ZWJTUUxEYXRhYmFzZSB0aHJlYWQgc2FmZXR5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkyNzcKKworICAgICAgICAtIHN3aXRjaCB0byB1c2luZyBB
dG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMgd2hlcmUgYXBwcm9waWF0ZQorICAgICAgICAtIGF2
b2lkIHVzaW5nIHNvbWUgU3RyaW5ncyBhY3Jvc3MgdGhyZWFkcworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzIGFwcGx5LgorCisg
ICAgICAgICogc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Omd1aWRNdXRleCk6CisgICAgICAgIChXZWJDb3JlOjpndWlkVG9WZXJzaW9uTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6Omd1aWRUb0RhdGFiYXNlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6Omd1aWRG
b3JPcmlnaW5BbmROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OmRh
dGFiYXNlSW5mb1RhYmxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNl
OjpBYnN0cmFjdERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6
OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJh
c2U6OmdldFZlcnNpb25Gcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RE
YXRhYmFzZTo6c2V0VmVyc2lvbkluRGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvQWJzdHJh
Y3REYXRhYmFzZS5oOgorICAgICAgICAqIHN0b3JhZ2UvY2hyb21pdW0vRGF0YWJhc2VUcmFja2Vy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KToKKyAgICAgICAgKiBzdG9yYWdlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpRdW90YVRyYWNrZXI6Omluc3RhbmNlKToKKwogMjAxMS0xMC0wMyAgQ2hyaXMg
RmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBzdXBwb3J0IHJv
bGUgbWFwcGluZyBmb3IgSFRNTDUgc2VjdGlvbiBlbGVtZW50cwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCShyZXZpc2lvbiA5NjUyMikKKysrIFNv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgs
NiArNDgsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCBjaGFyIHZl
cnNpb25LZXlbXSA9ICJXZWJLaXREYXRhYmFzZVZlcnNpb25LZXkiOworc3RhdGljIGNvbnN0IGNo
YXIgaW5mb1RhYmxlTmFtZVtdID0gIl9fV2ViS2l0RGF0YWJhc2VJbmZvVGFibGVfXyI7CisKIHN0
YXRpYyBib29sIHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYg
ZGIsIGNvbnN0IFN0cmluZyYgcXVlcnksIFN0cmluZyYgcmVzdWx0U3RyaW5nKQogewogICAgIFNR
TGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQoZGIsIHF1ZXJ5KTsKQEAgLTk2LDE2ICs5OSwxNSBAQCBz
dGF0aWMgYm9vbCBzZXRUZXh0VmFsdWVJbkRhdGFiYXNlKFNRTGl0CiAvLyBGSVhNRTogbW92ZSBh
bGwgZ3VpZC1yZWxhdGVkIGZ1bmN0aW9ucyB0byBhIERhdGFiYXNlVmVyc2lvblRyYWNrZXIgY2xh
c3MuCiBzdGF0aWMgTXV0ZXgmIGd1aWRNdXRleCgpCiB7Ci0gICAgLy8gTm90ZTogV2UgZG9uJ3Qg
aGF2ZSB0byB1c2UgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljIGhlcmUgYmVjYXVzZQotICAg
IC8vIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgaW4gdGhlIGNvbnN0cnVjdG9yIG9uIHRo
ZSBtYWluIHRocmVhZAotICAgIC8vIGJlZm9yZSBhbnkgb3RoZXIgdGhyZWFkcyB0aGF0IGNhbGwg
dGhpcyBmdW5jdGlvbiBhcmUgdXNlZC4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBt
dXRleCwgKCkpOworICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhNdXRleCYsIG11dGV4
ID0gKm5ldyBNdXRleCk7CiAgICAgcmV0dXJuIG11dGV4OwogfQogCiB0eXBlZGVmIEhhc2hNYXA8
aW50LCBTdHJpbmc+IEd1aWRWZXJzaW9uTWFwOwogc3RhdGljIEd1aWRWZXJzaW9uTWFwJiBndWlk
VG9WZXJzaW9uTWFwKCkKIHsKKyAgICAvLyBFbnN1cmUgdGhlIHRoZSBtdXRleCBpcyBsb2NrZWQu
CisgICAgQVNTRVJUKCFndWlkTXV0ZXgoKS50cnlMb2NrKCkpOwogICAgIERFRklORV9TVEFUSUNf
TE9DQUwoR3VpZFZlcnNpb25NYXAsIG1hcCwgKCkpOwogICAgIHJldHVybiBtYXA7CiB9CkBAIC0x
MjksMTkgKzEzMSwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlR3VpZFZlcnNpb25NYXAo
CiB0eXBlZGVmIEhhc2hNYXA8aW50LCBIYXNoU2V0PEFic3RyYWN0RGF0YWJhc2UqPio+IEd1aWRE
YXRhYmFzZU1hcDsKIHN0YXRpYyBHdWlkRGF0YWJhc2VNYXAmIGd1aWRUb0RhdGFiYXNlTWFwKCkK
IHsKKyAgICAvLyBFbnN1cmUgdGhlIHRoZSBtdXRleCBpcyBsb2NrZWQuCisgICAgQVNTRVJUKCFn
dWlkTXV0ZXgoKS50cnlMb2NrKCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoR3VpZERhdGFi
YXNlTWFwLCBtYXAsICgpKTsKICAgICByZXR1cm4gbWFwOwogfQogCiBzdGF0aWMgaW50IGd1aWRG
b3JPcmlnaW5BbmROYW1lKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUp
CiB7CisgICAgLy8gRW5zdXJlIHRoZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgorICAgIEFTU0VSVCgh
Z3VpZE11dGV4KCkudHJ5TG9jaygpKTsKKwogICAgIFN0cmluZyBzdHJpbmdJRCA9IG9yaWdpbiAr
ICIvIiArIG5hbWU7CiAKLSAgICAvLyBOb3RlOiBXZSBkb24ndCBoYXZlIHRvIHVzZSBBdG9taWNh
bGx5SW5pdGlhbGl6ZWRTdGF0aWMgaGVyZSBiZWNhdXNlCi0gICAgLy8gdGhpcyBmdW5jdGlvbiBp
cyBjYWxsZWQgb25jZSBpbiB0aGUgY29uc3RydWN0b3Igb24gdGhlIG1haW4gdGhyZWFkCi0gICAg
Ly8gYmVmb3JlIGFueSBvdGhlciB0aHJlYWRzIHRoYXQgY2FsbCB0aGlzIGZ1bmN0aW9uIGFyZSB1
c2VkLgotICAgIERFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIHN0cmluZ0lkZW50aWZpZXJNdXRl
eCwgKCkpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihzdHJpbmdJZGVudGlmaWVyTXV0ZXgpOwog
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIGludD4gSURHdWlkTWFwOwogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoSURHdWlkTWFwLCBzdHJpbmdJZGVudGlmaWVyVG9HVUlETWFwLCAoKSk7CiAg
ICAgaW50IGd1aWQgPSBzdHJpbmdJZGVudGlmaWVyVG9HVUlETWFwLmdldChzdHJpbmdJRCk7CkBA
IC0xNjcsMTAgKzE2OSw5IEBAIHZvaWQgQWJzdHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUo
Ym8KIH0KIAogLy8gc3RhdGljCi1jb25zdCBTdHJpbmcmIEFic3RyYWN0RGF0YWJhc2U6OmRhdGFi
YXNlSW5mb1RhYmxlTmFtZSgpCitjb25zdCBjaGFyKiBBYnN0cmFjdERhdGFiYXNlOjpkYXRhYmFz
ZUluZm9UYWJsZU5hbWUoKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBuYW1l
LCAoIl9fV2ViS2l0RGF0YWJhc2VJbmZvVGFibGVfXyIpKTsKLSAgICByZXR1cm4gbmFtZTsKKyAg
ICByZXR1cm4gaW5mb1RhYmxlTmFtZTsKIH0KIAogQWJzdHJhY3REYXRhYmFzZTo6QWJzdHJhY3RE
YXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLApAQCAtMTg3LDE1ICsxODgsMTQgQEAg
QWJzdHJhY3REYXRhYmFzZTo6QWJzdHJhY3REYXRhYmFzZShTY3JpcAogICAgIEFTU0VSVChjb250
ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmln
aW4gPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7CiAKLSAgICBt
X2RhdGFiYXNlQXV0aG9yaXplciA9IERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKGRhdGFiYXNl
SW5mb1RhYmxlTmFtZSgpKTsKKyAgICBtX2RhdGFiYXNlQXV0aG9yaXplciA9IERhdGFiYXNlQXV0
aG9yaXplcjo6Y3JlYXRlKGluZm9UYWJsZU5hbWUpOwogCiAgICAgaWYgKG1fbmFtZS5pc051bGwo
KSkKICAgICAgICAgbV9uYW1lID0gIiI7CiAKLSAgICBtX2d1aWQgPSBndWlkRm9yT3JpZ2luQW5k
TmFtZShzZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLCBuYW1lKTsKICAgICB7CiAgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7Ci0KKyAgICAgICAgbV9ndWlkID0gZ3Vp
ZEZvck9yaWdpbkFuZE5hbWUoc2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbmFtZSk7CiAg
ICAgICAgIEhhc2hTZXQ8QWJzdHJhY3REYXRhYmFzZSo+KiBoYXNoU2V0ID0gZ3VpZFRvRGF0YWJh
c2VNYXAoKS5nZXQobV9ndWlkKTsKICAgICAgICAgaWYgKCFoYXNoU2V0KSB7CiAgICAgICAgICAg
ICBoYXNoU2V0ID0gbmV3IEhhc2hTZXQ8QWJzdHJhY3REYXRhYmFzZSo+OwpAQCAtMjY0LDE1ICsy
NjQsMTUgQEAgYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcgogICAgICAg
ICBHdWlkVmVyc2lvbk1hcDo6aXRlcmF0b3IgZW50cnkgPSBndWlkVG9WZXJzaW9uTWFwKCkuZmlu
ZChtX2d1aWQpOwogICAgICAgICBpZiAoZW50cnkgIT0gZ3VpZFRvVmVyc2lvbk1hcCgpLmVuZCgp
KSB7CiAgICAgICAgICAgICAvLyBNYXAgbnVsbCBzdHJpbmcgdG8gZW1wdHkgc3RyaW5nIChzZWUg
dXBkYXRlR3VpZFZlcnNpb25NYXAoKSkuCi0gICAgICAgICAgICBjdXJyZW50VmVyc2lvbiA9IGVu
dHJ5LT5zZWNvbmQuaXNOdWxsKCkgPyBTdHJpbmcoIiIpIDogZW50cnktPnNlY29uZDsKKyAgICAg
ICAgICAgIGN1cnJlbnRWZXJzaW9uID0gZW50cnktPnNlY29uZC5pc051bGwoKSA/IFN0cmluZygi
IikgOiBlbnRyeS0+c2Vjb25kLnRocmVhZHNhZmVDb3B5KCk7CiAgICAgICAgICAgICBMT0coU3Rv
cmFnZUFQSSwgIkN1cnJlbnQgY2FjaGVkIHZlcnNpb24gZm9yIGd1aWQgJWkgaXMgJXMiLCBtX2d1
aWQsIGN1cnJlbnRWZXJzaW9uLmFzY2lpKCkuZGF0YSgpKTsKIAogI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQogICAgICAgICAgICAgLy8gTm90ZTogSW4gbXVsdGktcHJvY2VzcyBicm93c2VycyB0aGUg
Y2FjaGVkIHZhbHVlIG1heSBiZSBpbmFjY3VyYXRlLCBidXQKICAgICAgICAgICAgIC8vIHdlIGNh
bm5vdCByZWFkIHRoZSBhY3R1YWwgdmVyc2lvbiBmcm9tIHRoZSBkYXRhYmFzZSB3aXRob3V0IHBv
dGVudGlhbGx5CiAgICAgICAgICAgICAvLyBpbmR1Y2luZyBhIGZvcm0gb2YgZGVhZGxvY2ssIGEg
YnVzeXRpbWVvdXQgZXJyb3Igd2hlbiB0cnlpbmcgdG8KLSAgICAgICAgICAgIC8vIGFjY2VzcyB0
aGUgZGF0YWJhc2UuIFNvIHdlJ2xsIHVzZSB0aGUgY2FjaGVkIHZhbHVlIGlmIHdlJ3JlIGFibGUg
dG8gcmVhZAotICAgICAgICAgICAgLy8gdGhlIHZhbHVlIHdpdGhvdXQgd2FpdGluZywgYW5kIG90
aGVyd2lzZSB1c2UgdGhlIGNhY2hlZCB2YWx1ZSAod2hpY2ggbWF5IGJlIG9mZikuCisgICAgICAg
ICAgICAvLyBhY2Nlc3MgdGhlIGRhdGFiYXNlLiBTbyB3ZSdsbCB1c2UgdGhlIGNhY2hlZCB2YWx1
ZSBpZiB3ZSdyZSB1bmFibGUgdG8gcmVhZAorICAgICAgICAgICAgLy8gdGhlIHZhbHVlIGZyb20g
dGhlIGRhdGFiYXNlIGZpbGUgd2l0aG91dCB3YWl0aW5nLgogICAgICAgICAgICAgLy8gRklYTUU6
IEFkZCBhbiBhc3luYyBvcGVuRGF0YWJhc2UgbWV0aG9kIHRvIHRoZSBEYXRhYmFzZUFQSS4KICAg
ICAgICAgICAgIGNvbnN0IGludCBub1NxbGl0ZUJ1c3lXYWl0VGltZSA9IDA7CiAgICAgICAgICAg
ICBtX3NxbGl0ZURhdGFiYXNlLnNldEJ1c3lUaW1lb3V0KG5vU3FsaXRlQnVzeVdhaXRUaW1lKTsK
QEAgLTI5NSwxMSArMjk1LDEyIEBAIGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5B
bmRWZXIKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS50YWJsZUV4aXN0cyhkYXRhYmFzZUluZm9U
YWJsZU5hbWUoKSkpIHsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyB0YWJsZU5hbWUoaW5mb1Rh
YmxlTmFtZSk7CisgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UudGFibGVFeGlzdHMo
dGFibGVOYW1lKSkgewogICAgICAgICAgICAgICAgIG1fbmV3ID0gdHJ1ZTsKIAotICAgICAgICAg
ICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxF
ICIgKyBkYXRhYmFzZUluZm9UYWJsZU5hbWUoKSArICIgKGtleSBURVhUIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFsdWUgVEVYVCBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMKTsiKSkgewotICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBjcmVhdGUgdGFibGUgJXMgaW4gZGF0YWJhc2UgJXMiLCBkYXRhYmFzZUluZm9U
YWJsZU5hbWUoKS5hc2NpaSgpLmRhdGEoKSwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRh
dGEoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLmV4ZWN1dGVDb21t
YW5kKCJDUkVBVEUgVEFCTEUgIiArIHRhYmxlTmFtZSArICIgKGtleSBURVhUIE5PVCBOVUxMIE9O
IENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFsdWUgVEVYVCBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgICAgICAgICAgICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBjcmVhdGUgdGFibGUgJXMgaW4gZGF0YWJhc2UgJXMiLCBpbmZvVGFibGVO
YW1lLCBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgICAgICAgICAgICAgdHJhbnNh
Y3Rpb24ucm9sbGJhY2soKTsKICAgICAgICAgICAgICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5j
bG9zZSgpOwpAQCAtMzkwLDIwICszOTEsMTMgQEAgU3RyaW5nIEFic3RyYWN0RGF0YWJhc2U6OmZp
bGVOYW1lKCkgY29ucwogICAgIHJldHVybiBtX2ZpbGVuYW1lLnRocmVhZHNhZmVDb3B5KCk7CiB9
CiAKLS8vIHN0YXRpYwotY29uc3QgU3RyaW5nJiBBYnN0cmFjdERhdGFiYXNlOjpkYXRhYmFzZVZl
cnNpb25LZXkoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBrZXksICgiV2Vi
S2l0RGF0YWJhc2VWZXJzaW9uS2V5IikpOwotICAgIHJldHVybiBrZXk7Ci19Ci0KIGJvb2wgQWJz
dHJhY3REYXRhYmFzZTo6Z2V0VmVyc2lvbkZyb21EYXRhYmFzZShTdHJpbmcmIHZlcnNpb24sIGJv
b2wgc2hvdWxkQ2FjaGVWZXJzaW9uKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBnZXRWZXJzaW9uUXVlcnksICgiU0VMRUNUIHZhbHVlIEZST00gIiArIGRhdGFiYXNlSW5mb1Rh
YmxlTmFtZSgpICsgIiBXSEVSRSBrZXkgPSAnIiArIGRhdGFiYXNlVmVyc2lvbktleSgpICsgIic7
IikpOworICAgIGNvbnN0IFN0cmluZyBxdWVyeShTdHJpbmcoIlNFTEVDVCB2YWx1ZSBGUk9NICIp
ICsgaW5mb1RhYmxlTmFtZSArICAiIFdIRVJFIGtleSA9ICciICsgdmVyc2lvbktleSArICInOyIp
OwogCiAgICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPmRpc2FibGUoKTsKIAotICAgIGJvb2wgcmVz
dWx0ID0gcmV0cmlldmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKG1fc3FsaXRlRGF0YWJhc2UsIGdl
dFZlcnNpb25RdWVyeS50aHJlYWRzYWZlQ29weSgpLCB2ZXJzaW9uKTsKKyAgICBib29sIHJlc3Vs
dCA9IHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShtX3NxbGl0ZURhdGFiYXNlLCBxdWVy
eSwgdmVyc2lvbik7CiAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICBpZiAoc2hvdWxkQ2FjaGVW
ZXJzaW9uKQogICAgICAgICAgICAgc2V0Q2FjaGVkVmVyc2lvbih2ZXJzaW9uKTsKQEAgLTQxOSwx
NiArNDEzLDE2IEBAIGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6c2V0VmVyc2lvbkluRGF0YWIKIHsK
ICAgICAvLyBUaGUgSU5TRVJUIHdpbGwgcmVwbGFjZSBhbiBleGlzdGluZyBlbnRyeSBmb3IgdGhl
IGRhdGFiYXNlIHdpdGggdGhlIG5ldyB2ZXJzaW9uIG51bWJlciwgZHVlIHRvIHRoZSBVTklRVUUg
T04gQ09ORkxJQ1QgUkVQTEFDRQogICAgIC8vIGNsYXVzZSBpbiB0aGUgQ1JFQVRFIHN0YXRlbWVu
dCAoc2VlIERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSgpKS4KLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgc2V0VmVyc2lvblF1ZXJ5LCAoIklOU0VSVCBJTlRPICIgKyBkYXRh
YmFzZUluZm9UYWJsZU5hbWUoKSArICIgKGtleSwgdmFsdWUpIFZBTFVFUyAoJyIgKyBkYXRhYmFz
ZVZlcnNpb25LZXkoKSArICInLCA/KTsiKSk7CisgICAgY29uc3QgU3RyaW5nIHF1ZXJ5KFN0cmlu
ZygiSU5TRVJUIElOVE8gIikgKyBpbmZvVGFibGVOYW1lICsgICIgKGtleSwgdmFsdWUpIFZBTFVF
UyAoJyIgKyB2ZXJzaW9uS2V5ICsgIicsID8pOyIpOwogCiAgICAgbV9kYXRhYmFzZUF1dGhvcml6
ZXItPmRpc2FibGUoKTsKIAotICAgIGJvb2wgcmVzdWx0ID0gc2V0VGV4dFZhbHVlSW5EYXRhYmFz
ZShtX3NxbGl0ZURhdGFiYXNlLCBzZXRWZXJzaW9uUXVlcnkudGhyZWFkc2FmZUNvcHkoKSwgdmVy
c2lvbik7CisgICAgYm9vbCByZXN1bHQgPSBzZXRUZXh0VmFsdWVJbkRhdGFiYXNlKG1fc3FsaXRl
RGF0YWJhc2UsIHF1ZXJ5LCB2ZXJzaW9uKTsKICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgIGlm
IChzaG91bGRDYWNoZVZlcnNpb24pCiAgICAgICAgICAgICBzZXRDYWNoZWRWZXJzaW9uKHZlcnNp
b24pOwogICAgIH0gZWxzZQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgdmVyc2lv
biAlcyBpbiBkYXRhYmFzZSAoJXMpIiwgdmVyc2lvbi5hc2NpaSgpLmRhdGEoKSwgc2V0VmVyc2lv
blF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0
IHZlcnNpb24gJXMgaW4gZGF0YWJhc2UgKCVzKSIsIHZlcnNpb24uYXNjaWkoKS5kYXRhKCksIHF1
ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKIAogICAgIG1fZGF0YWJhc2VBdXRob3JpemVyLT5lbmFibGUo
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmgJKHJl
dmlzaW9uIDk2NTIyKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTA0LDcgKzEwNCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldENh
Y2hlZFZlcnNpb24oY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBnZXRBY3R1YWxWZXJzaW9uRm9y
VHJhbnNhY3Rpb24oU3RyaW5nJiB2ZXJzaW9uKTsKIAotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkYXRhYmFz
ZUluZm9UYWJsZU5hbWUoKTsKIAogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX2Nv
bnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbjsKQEAgLTEyMCw4ICsxMjAsNiBAQCBwcm90ZWN0ZWQ6
CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVZl
cnNpb25LZXkoKTsKLQogICAgIGludCBtX2d1aWQ7CiAgICAgYm9vbCBtX29wZW5lZDsKICAgICBi
b29sIG1fbmV3OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9EYXRhYmFz
ZVRyYWNrZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDk2NTIyKQor
KysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBEYXRhYmFzZVRyYWNrZXImIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpCiB7Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChEYXRhYmFzZVRyYWNrZXIsIHRyYWNrZXIsICgiIikpOworICAgIEF0
b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhEYXRhYmFzZVRyYWNrZXImLCB0cmFja2VyID0gKm5l
dyBEYXRhYmFzZVRyYWNrZXIoIiIpKTsKICAgICByZXR1cm4gdHJhY2tlcjsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvY2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcAko
cmV2aXNpb24gOTY1MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL1F1b3Rh
VHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBRdW90YVRyYWNrZXImIFF1b3RhVHJhY2tlcjo6aW5zdGFuY2UoKQogewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoUXVvdGFUcmFja2VyLCB0cmFja2VyLCAoKSk7CisgICAgQXRvbWlj
YWxseUluaXRpYWxpemVkU3RhdGljKFF1b3RhVHJhY2tlciYsIHRyYWNrZXIgPSAqbmV3IFF1b3Rh
VHJhY2tlcik7CiAgICAgcmV0dXJuIHRyYWNrZXI7CiB9CiAK
</data>
<flag name="commit-queue"
          id="106764"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109530</attachid>
            <date>2011-10-03 14:23:49 -0700</date>
            <delta_ts>2011-10-03 16:06:42 -0700</delta_ts>
            <desc>safer</desc>
            <filename>safer3.txt</filename>
            <type>text/plain</type>
            <size>12501</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2NTI0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMTAtMDMgIE1pY2hhZWwg
Tm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgQSBsaXR0bGUgbW9yZSBX
ZWJTUUxEYXRhYmFzZSB0aHJlYWQgc2FmZXR5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkyNzcKKworICAgICAgICAtIHN3aXRjaCB0byB1c2luZyBB
dG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMgd2hlcmUgYXBwcm9waWF0ZQorICAgICAgICAtIGF2
b2lkIHVzaW5nIHNvbWUgU3RyaW5ncyBhY3Jvc3MgdGhyZWFkcworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzIGFwcGx5LgorCisg
ICAgICAgICogc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Omd1aWRNdXRleCk6CisgICAgICAgIChXZWJDb3JlOjpndWlkVG9WZXJzaW9uTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6Omd1aWRUb0RhdGFiYXNlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6Omd1aWRG
b3JPcmlnaW5BbmROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OmRh
dGFiYXNlSW5mb1RhYmxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNl
OjpBYnN0cmFjdERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6
OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJh
c2U6OmdldFZlcnNpb25Gcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RE
YXRhYmFzZTo6c2V0VmVyc2lvbkluRGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvQWJzdHJh
Y3REYXRhYmFzZS5oOgorICAgICAgICAqIHN0b3JhZ2UvY2hyb21pdW0vRGF0YWJhc2VUcmFja2Vy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KToKKyAgICAgICAgKiBzdG9yYWdlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpRdW90YVRyYWNrZXI6Omluc3RhbmNlKToKKwogMjAxMS0xMC0wMyAgQ2hyaXMg
RmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBzdXBwb3J0IHJv
bGUgbWFwcGluZyBmb3IgSFRNTDUgc2VjdGlvbiBlbGVtZW50cwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCShyZXZpc2lvbiA5NjUyMikKKysrIFNv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgs
NiArNDgsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCBjaGFyIHZl
cnNpb25LZXlbXSA9ICJXZWJLaXREYXRhYmFzZVZlcnNpb25LZXkiOworc3RhdGljIGNvbnN0IGNo
YXIgaW5mb1RhYmxlTmFtZVtdID0gIl9fV2ViS2l0RGF0YWJhc2VJbmZvVGFibGVfXyI7CisKIHN0
YXRpYyBib29sIHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYg
ZGIsIGNvbnN0IFN0cmluZyYgcXVlcnksIFN0cmluZyYgcmVzdWx0U3RyaW5nKQogewogICAgIFNR
TGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQoZGIsIHF1ZXJ5KTsKQEAgLTk2LDE2ICs5OSwxNSBAQCBz
dGF0aWMgYm9vbCBzZXRUZXh0VmFsdWVJbkRhdGFiYXNlKFNRTGl0CiAvLyBGSVhNRTogbW92ZSBh
bGwgZ3VpZC1yZWxhdGVkIGZ1bmN0aW9ucyB0byBhIERhdGFiYXNlVmVyc2lvblRyYWNrZXIgY2xh
c3MuCiBzdGF0aWMgTXV0ZXgmIGd1aWRNdXRleCgpCiB7Ci0gICAgLy8gTm90ZTogV2UgZG9uJ3Qg
aGF2ZSB0byB1c2UgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljIGhlcmUgYmVjYXVzZQotICAg
IC8vIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgaW4gdGhlIGNvbnN0cnVjdG9yIG9uIHRo
ZSBtYWluIHRocmVhZAotICAgIC8vIGJlZm9yZSBhbnkgb3RoZXIgdGhyZWFkcyB0aGF0IGNhbGwg
dGhpcyBmdW5jdGlvbiBhcmUgdXNlZC4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBt
dXRleCwgKCkpOworICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhNdXRleCYsIG11dGV4
ID0gKm5ldyBNdXRleCk7CiAgICAgcmV0dXJuIG11dGV4OwogfQogCiB0eXBlZGVmIEhhc2hNYXA8
aW50LCBTdHJpbmc+IEd1aWRWZXJzaW9uTWFwOwogc3RhdGljIEd1aWRWZXJzaW9uTWFwJiBndWlk
VG9WZXJzaW9uTWFwKCkKIHsKKyAgICAvLyBFbnN1cmUgdGhlIHRoZSBtdXRleCBpcyBsb2NrZWQu
CisgICAgQVNTRVJUKCFndWlkTXV0ZXgoKS50cnlMb2NrKCkpOwogICAgIERFRklORV9TVEFUSUNf
TE9DQUwoR3VpZFZlcnNpb25NYXAsIG1hcCwgKCkpOwogICAgIHJldHVybiBtYXA7CiB9CkBAIC0x
MjksMTkgKzEzMSwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlR3VpZFZlcnNpb25NYXAo
CiB0eXBlZGVmIEhhc2hNYXA8aW50LCBIYXNoU2V0PEFic3RyYWN0RGF0YWJhc2UqPio+IEd1aWRE
YXRhYmFzZU1hcDsKIHN0YXRpYyBHdWlkRGF0YWJhc2VNYXAmIGd1aWRUb0RhdGFiYXNlTWFwKCkK
IHsKKyAgICAvLyBFbnN1cmUgdGhlIHRoZSBtdXRleCBpcyBsb2NrZWQuCisgICAgQVNTRVJUKCFn
dWlkTXV0ZXgoKS50cnlMb2NrKCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoR3VpZERhdGFi
YXNlTWFwLCBtYXAsICgpKTsKICAgICByZXR1cm4gbWFwOwogfQogCiBzdGF0aWMgaW50IGd1aWRG
b3JPcmlnaW5BbmROYW1lKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUp
CiB7CisgICAgLy8gRW5zdXJlIHRoZSB0aGUgbXV0ZXggaXMgbG9ja2VkLgorICAgIEFTU0VSVCgh
Z3VpZE11dGV4KCkudHJ5TG9jaygpKTsKKwogICAgIFN0cmluZyBzdHJpbmdJRCA9IG9yaWdpbiAr
ICIvIiArIG5hbWU7CiAKLSAgICAvLyBOb3RlOiBXZSBkb24ndCBoYXZlIHRvIHVzZSBBdG9taWNh
bGx5SW5pdGlhbGl6ZWRTdGF0aWMgaGVyZSBiZWNhdXNlCi0gICAgLy8gdGhpcyBmdW5jdGlvbiBp
cyBjYWxsZWQgb25jZSBpbiB0aGUgY29uc3RydWN0b3Igb24gdGhlIG1haW4gdGhyZWFkCi0gICAg
Ly8gYmVmb3JlIGFueSBvdGhlciB0aHJlYWRzIHRoYXQgY2FsbCB0aGlzIGZ1bmN0aW9uIGFyZSB1
c2VkLgotICAgIERFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIHN0cmluZ0lkZW50aWZpZXJNdXRl
eCwgKCkpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihzdHJpbmdJZGVudGlmaWVyTXV0ZXgpOwog
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIGludD4gSURHdWlkTWFwOwogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoSURHdWlkTWFwLCBzdHJpbmdJZGVudGlmaWVyVG9HVUlETWFwLCAoKSk7CiAg
ICAgaW50IGd1aWQgPSBzdHJpbmdJZGVudGlmaWVyVG9HVUlETWFwLmdldChzdHJpbmdJRCk7CkBA
IC0xNjcsMTAgKzE2OSw5IEBAIHZvaWQgQWJzdHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUo
Ym8KIH0KIAogLy8gc3RhdGljCi1jb25zdCBTdHJpbmcmIEFic3RyYWN0RGF0YWJhc2U6OmRhdGFi
YXNlSW5mb1RhYmxlTmFtZSgpCitjb25zdCBjaGFyKiBBYnN0cmFjdERhdGFiYXNlOjpkYXRhYmFz
ZUluZm9UYWJsZU5hbWUoKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBuYW1l
LCAoIl9fV2ViS2l0RGF0YWJhc2VJbmZvVGFibGVfXyIpKTsKLSAgICByZXR1cm4gbmFtZTsKKyAg
ICByZXR1cm4gaW5mb1RhYmxlTmFtZTsKIH0KIAogQWJzdHJhY3REYXRhYmFzZTo6QWJzdHJhY3RE
YXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLApAQCAtMTg3LDE1ICsxODgsMTQgQEAg
QWJzdHJhY3REYXRhYmFzZTo6QWJzdHJhY3REYXRhYmFzZShTY3JpcAogICAgIEFTU0VSVChjb250
ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgbV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmln
aW4gPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7CiAKLSAgICBt
X2RhdGFiYXNlQXV0aG9yaXplciA9IERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKGRhdGFiYXNl
SW5mb1RhYmxlTmFtZSgpKTsKKyAgICBtX2RhdGFiYXNlQXV0aG9yaXplciA9IERhdGFiYXNlQXV0
aG9yaXplcjo6Y3JlYXRlKGluZm9UYWJsZU5hbWUpOwogCiAgICAgaWYgKG1fbmFtZS5pc051bGwo
KSkKICAgICAgICAgbV9uYW1lID0gIiI7CiAKLSAgICBtX2d1aWQgPSBndWlkRm9yT3JpZ2luQW5k
TmFtZShzZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLCBuYW1lKTsKICAgICB7CiAgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7Ci0KKyAgICAgICAgbV9ndWlkID0gZ3Vp
ZEZvck9yaWdpbkFuZE5hbWUoc2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbmFtZSk7CiAg
ICAgICAgIEhhc2hTZXQ8QWJzdHJhY3REYXRhYmFzZSo+KiBoYXNoU2V0ID0gZ3VpZFRvRGF0YWJh
c2VNYXAoKS5nZXQobV9ndWlkKTsKICAgICAgICAgaWYgKCFoYXNoU2V0KSB7CiAgICAgICAgICAg
ICBoYXNoU2V0ID0gbmV3IEhhc2hTZXQ8QWJzdHJhY3REYXRhYmFzZSo+OwpAQCAtMjY0LDE1ICsy
NjQsMTUgQEAgYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcgogICAgICAg
ICBHdWlkVmVyc2lvbk1hcDo6aXRlcmF0b3IgZW50cnkgPSBndWlkVG9WZXJzaW9uTWFwKCkuZmlu
ZChtX2d1aWQpOwogICAgICAgICBpZiAoZW50cnkgIT0gZ3VpZFRvVmVyc2lvbk1hcCgpLmVuZCgp
KSB7CiAgICAgICAgICAgICAvLyBNYXAgbnVsbCBzdHJpbmcgdG8gZW1wdHkgc3RyaW5nIChzZWUg
dXBkYXRlR3VpZFZlcnNpb25NYXAoKSkuCi0gICAgICAgICAgICBjdXJyZW50VmVyc2lvbiA9IGVu
dHJ5LT5zZWNvbmQuaXNOdWxsKCkgPyBTdHJpbmcoIiIpIDogZW50cnktPnNlY29uZDsKKyAgICAg
ICAgICAgIGN1cnJlbnRWZXJzaW9uID0gZW50cnktPnNlY29uZC5pc051bGwoKSA/IFN0cmluZygi
IikgOiBlbnRyeS0+c2Vjb25kLnRocmVhZHNhZmVDb3B5KCk7CiAgICAgICAgICAgICBMT0coU3Rv
cmFnZUFQSSwgIkN1cnJlbnQgY2FjaGVkIHZlcnNpb24gZm9yIGd1aWQgJWkgaXMgJXMiLCBtX2d1
aWQsIGN1cnJlbnRWZXJzaW9uLmFzY2lpKCkuZGF0YSgpKTsKIAogI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQogICAgICAgICAgICAgLy8gTm90ZTogSW4gbXVsdGktcHJvY2VzcyBicm93c2VycyB0aGUg
Y2FjaGVkIHZhbHVlIG1heSBiZSBpbmFjY3VyYXRlLCBidXQKICAgICAgICAgICAgIC8vIHdlIGNh
bm5vdCByZWFkIHRoZSBhY3R1YWwgdmVyc2lvbiBmcm9tIHRoZSBkYXRhYmFzZSB3aXRob3V0IHBv
dGVudGlhbGx5CiAgICAgICAgICAgICAvLyBpbmR1Y2luZyBhIGZvcm0gb2YgZGVhZGxvY2ssIGEg
YnVzeXRpbWVvdXQgZXJyb3Igd2hlbiB0cnlpbmcgdG8KLSAgICAgICAgICAgIC8vIGFjY2VzcyB0
aGUgZGF0YWJhc2UuIFNvIHdlJ2xsIHVzZSB0aGUgY2FjaGVkIHZhbHVlIGlmIHdlJ3JlIGFibGUg
dG8gcmVhZAotICAgICAgICAgICAgLy8gdGhlIHZhbHVlIHdpdGhvdXQgd2FpdGluZywgYW5kIG90
aGVyd2lzZSB1c2UgdGhlIGNhY2hlZCB2YWx1ZSAod2hpY2ggbWF5IGJlIG9mZikuCisgICAgICAg
ICAgICAvLyBhY2Nlc3MgdGhlIGRhdGFiYXNlLiBTbyB3ZSdsbCB1c2UgdGhlIGNhY2hlZCB2YWx1
ZSBpZiB3ZSdyZSB1bmFibGUgdG8gcmVhZAorICAgICAgICAgICAgLy8gdGhlIHZhbHVlIGZyb20g
dGhlIGRhdGFiYXNlIGZpbGUgd2l0aG91dCB3YWl0aW5nLgogICAgICAgICAgICAgLy8gRklYTUU6
IEFkZCBhbiBhc3luYyBvcGVuRGF0YWJhc2UgbWV0aG9kIHRvIHRoZSBEYXRhYmFzZUFQSS4KICAg
ICAgICAgICAgIGNvbnN0IGludCBub1NxbGl0ZUJ1c3lXYWl0VGltZSA9IDA7CiAgICAgICAgICAg
ICBtX3NxbGl0ZURhdGFiYXNlLnNldEJ1c3lUaW1lb3V0KG5vU3FsaXRlQnVzeVdhaXRUaW1lKTsK
QEAgLTI5NSwxMSArMjk1LDEyIEBAIGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5B
bmRWZXIKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS50YWJsZUV4aXN0cyhkYXRhYmFzZUluZm9U
YWJsZU5hbWUoKSkpIHsKKyAgICAgICAgICAgIFN0cmluZyB0YWJsZU5hbWUoaW5mb1RhYmxlTmFt
ZSk7CisgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UudGFibGVFeGlzdHModGFibGVO
YW1lKSkgewogICAgICAgICAgICAgICAgIG1fbmV3ID0gdHJ1ZTsKIAotICAgICAgICAgICAgICAg
IGlmICghbV9zcWxpdGVEYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFICIgKyBk
YXRhYmFzZUluZm9UYWJsZU5hbWUoKSArICIgKGtleSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNU
IEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFsdWUgVEVYVCBOT1QgTlVMTCBPTiBD
T05GTElDVCBGQUlMKTsiKSkgewotICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBjcmVhdGUgdGFibGUgJXMgaW4gZGF0YWJhc2UgJXMiLCBkYXRhYmFzZUluZm9UYWJsZU5h
bWUoKS5hc2NpaSgpLmRhdGEoKSwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRhdGEoKSk7
CisgICAgICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJD
UkVBVEUgVEFCTEUgIiArIHRhYmxlTmFtZSArICIgKGtleSBURVhUIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFsdWUgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBjcmVhdGUgdGFibGUgJXMgaW4gZGF0YWJhc2UgJXMiLCBpbmZvVGFibGVOYW1lLCBk
YXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICAgICAg
ZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24u
cm9sbGJhY2soKTsKICAgICAgICAgICAgICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9zZSgp
OwpAQCAtMzkwLDIwICszOTEsMTMgQEAgU3RyaW5nIEFic3RyYWN0RGF0YWJhc2U6OmZpbGVOYW1l
KCkgY29ucwogICAgIHJldHVybiBtX2ZpbGVuYW1lLnRocmVhZHNhZmVDb3B5KCk7CiB9CiAKLS8v
IHN0YXRpYwotY29uc3QgU3RyaW5nJiBBYnN0cmFjdERhdGFiYXNlOjpkYXRhYmFzZVZlcnNpb25L
ZXkoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBrZXksICgiV2ViS2l0RGF0
YWJhc2VWZXJzaW9uS2V5IikpOwotICAgIHJldHVybiBrZXk7Ci19Ci0KIGJvb2wgQWJzdHJhY3RE
YXRhYmFzZTo6Z2V0VmVyc2lvbkZyb21EYXRhYmFzZShTdHJpbmcmIHZlcnNpb24sIGJvb2wgc2hv
dWxkQ2FjaGVWZXJzaW9uKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBnZXRW
ZXJzaW9uUXVlcnksICgiU0VMRUNUIHZhbHVlIEZST00gIiArIGRhdGFiYXNlSW5mb1RhYmxlTmFt
ZSgpICsgIiBXSEVSRSBrZXkgPSAnIiArIGRhdGFiYXNlVmVyc2lvbktleSgpICsgIic7IikpOwor
ICAgIFN0cmluZyBxdWVyeShTdHJpbmcoIlNFTEVDVCB2YWx1ZSBGUk9NICIpICsgaW5mb1RhYmxl
TmFtZSArICAiIFdIRVJFIGtleSA9ICciICsgdmVyc2lvbktleSArICInOyIpOwogCiAgICAgbV9k
YXRhYmFzZUF1dGhvcml6ZXItPmRpc2FibGUoKTsKIAotICAgIGJvb2wgcmVzdWx0ID0gcmV0cmll
dmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKG1fc3FsaXRlRGF0YWJhc2UsIGdldFZlcnNpb25RdWVy
eS50aHJlYWRzYWZlQ29weSgpLCB2ZXJzaW9uKTsKKyAgICBib29sIHJlc3VsdCA9IHJldHJpZXZl
VGV4dFJlc3VsdEZyb21EYXRhYmFzZShtX3NxbGl0ZURhdGFiYXNlLCBxdWVyeSwgdmVyc2lvbik7
CiAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICBpZiAoc2hvdWxkQ2FjaGVWZXJzaW9uKQogICAg
ICAgICAgICAgc2V0Q2FjaGVkVmVyc2lvbih2ZXJzaW9uKTsKQEAgLTQxOSwxNiArNDEzLDE2IEBA
IGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6c2V0VmVyc2lvbkluRGF0YWIKIHsKICAgICAvLyBUaGUg
SU5TRVJUIHdpbGwgcmVwbGFjZSBhbiBleGlzdGluZyBlbnRyeSBmb3IgdGhlIGRhdGFiYXNlIHdp
dGggdGhlIG5ldyB2ZXJzaW9uIG51bWJlciwgZHVlIHRvIHRoZSBVTklRVUUgT04gQ09ORkxJQ1Qg
UkVQTEFDRQogICAgIC8vIGNsYXVzZSBpbiB0aGUgQ1JFQVRFIHN0YXRlbWVudCAoc2VlIERhdGFi
YXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSgpKS4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgc2V0VmVyc2lvblF1ZXJ5LCAoIklOU0VSVCBJTlRPICIgKyBkYXRhYmFzZUluZm9UYWJs
ZU5hbWUoKSArICIgKGtleSwgdmFsdWUpIFZBTFVFUyAoJyIgKyBkYXRhYmFzZVZlcnNpb25LZXko
KSArICInLCA/KTsiKSk7CisgICAgU3RyaW5nIHF1ZXJ5KFN0cmluZygiSU5TRVJUIElOVE8gIikg
KyBpbmZvVGFibGVOYW1lICsgICIgKGtleSwgdmFsdWUpIFZBTFVFUyAoJyIgKyB2ZXJzaW9uS2V5
ICsgIicsID8pOyIpOwogCiAgICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPmRpc2FibGUoKTsKIAot
ICAgIGJvb2wgcmVzdWx0ID0gc2V0VGV4dFZhbHVlSW5EYXRhYmFzZShtX3NxbGl0ZURhdGFiYXNl
LCBzZXRWZXJzaW9uUXVlcnkudGhyZWFkc2FmZUNvcHkoKSwgdmVyc2lvbik7CisgICAgYm9vbCBy
ZXN1bHQgPSBzZXRUZXh0VmFsdWVJbkRhdGFiYXNlKG1fc3FsaXRlRGF0YWJhc2UsIHF1ZXJ5LCB2
ZXJzaW9uKTsKICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgIGlmIChzaG91bGRDYWNoZVZlcnNp
b24pCiAgICAgICAgICAgICBzZXRDYWNoZWRWZXJzaW9uKHZlcnNpb24pOwogICAgIH0gZWxzZQot
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgdmVyc2lvbiAlcyBpbiBkYXRhYmFzZSAo
JXMpIiwgdmVyc2lvbi5hc2NpaSgpLmRhdGEoKSwgc2V0VmVyc2lvblF1ZXJ5LmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IHZlcnNpb24gJXMgaW4gZGF0
YWJhc2UgKCVzKSIsIHZlcnNpb24uYXNjaWkoKS5kYXRhKCksIHF1ZXJ5LmFzY2lpKCkuZGF0YSgp
KTsKIAogICAgIG1fZGF0YWJhc2VBdXRob3JpemVyLT5lbmFibGUoKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmgJKHJldmlzaW9uIDk2NTIyKQorKysg
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA0
LDcgKzEwNCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldENhY2hlZFZlcnNpb24oY29uc3Qg
U3RyaW5nJik7CiAgICAgYm9vbCBnZXRBY3R1YWxWZXJzaW9uRm9yVHJhbnNhY3Rpb24oU3RyaW5n
JiB2ZXJzaW9uKTsKIAotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSW5mb1RhYmxl
TmFtZSgpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkYXRhYmFzZUluZm9UYWJsZU5hbWUoKTsK
IAogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX2NvbnRleHRUaHJlYWRTZWN1cml0
eU9yaWdpbjsKQEAgLTEyMCw4ICsxMjAsNiBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogcHJpdmF0
ZToKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVZlcnNpb25LZXkoKTsKLQogICAg
IGludCBtX2d1aWQ7CiAgICAgYm9vbCBtX29wZW5lZDsKICAgICBib29sIG1fbmV3OwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1bS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9EYXRhYmFz
ZVRyYWNrZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDk2NTIyKQorKysgU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBEYXRhYmFzZVRyYWNrZXIm
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChE
YXRhYmFzZVRyYWNrZXIsIHRyYWNrZXIsICgiIikpOworICAgIEF0b21pY2FsbHlJbml0aWFsaXpl
ZFN0YXRpYyhEYXRhYmFzZVRyYWNrZXImLCB0cmFja2VyID0gKm5ldyBEYXRhYmFzZVRyYWNrZXIo
IiIpKTsKICAgICByZXR1cm4gdHJhY2tlcjsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvY2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcAkocmV2aXNpb24gOTY1MjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBRdW90YVRyYWNr
ZXImIFF1b3RhVHJhY2tlcjo6aW5zdGFuY2UoKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
UXVvdGFUcmFja2VyLCB0cmFja2VyLCAoKSk7CisgICAgQXRvbWljYWxseUluaXRpYWxpemVkU3Rh
dGljKFF1b3RhVHJhY2tlciYsIHRyYWNrZXIgPSAqbmV3IFF1b3RhVHJhY2tlcik7CiAgICAgcmV0
dXJuIHRyYWNrZXI7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>