<?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>82958</bug_id>
          
          <creation_ts>2012-04-02 15:38:15 -0700</creation_ts>
          <short_desc>Web Inspector: CodeGeneratorInspector.py: switch Inspector, Memory and Database domains to typed API</short_desc>
          <delta_ts>2012-04-04 02:36:48 -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>Web Inspector (Deprecated)</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>
          
          <blocked>72861</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Peter Rybin">prybin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>593934</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-04-02 15:38:15 -0700</bug_when>
    <thetext>Do not allow InspectorObject and other raw interfaces in Inspector, Memory and Database domains anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593937</commentid>
    <comment_count>1</comment_count>
      <attachid>135208</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-04-02 15:44:38 -0700</bug_when>
    <thetext>Created attachment 135208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593938</commentid>
    <comment_count>2</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-04-02 15:46:41 -0700</bug_when>
    <thetext>Please, take a look at new FIXME. This probably should be resovled before commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593940</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-02 15:48:27 -0700</bug_when>
    <thetext>Attachment 135208 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/inspector/InspectorDatabaseAgent.cpp:116:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 10 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>594189</commentid>
    <comment_count>4</comment_count>
      <attachid>135208</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-02 22:00:59 -0700</bug_when>
    <thetext>Comment on attachment 135208
Patch

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

&gt; Source/WebCore/inspector/InspectorDatabaseResource.cpp:62
&gt; +        // FIXME: here we use string type according to Inspector.json.

Please file a bug on this and put its number next to FIXME.

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:205
&gt; +    PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Memory::DOMGroup&gt; &gt; domGroups() { return m_domGroups; }

Why did it become PassRefPtr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594232</commentid>
    <comment_count>5</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-02 23:40:18 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 135208 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135208&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorDatabaseResource.cpp:62
&gt; &gt; +        // FIXME: here we use string type according to Inspector.json.
&gt; 
&gt; Please file a bug on this and put its number next to FIXME.
&gt; 
Nevermind, I&apos;ve sent a fix for this https://bugs.webkit.org/show_bug.cgi?id=83003</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594512</commentid>
    <comment_count>6</comment_count>
      <attachid>135334</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-04-03 08:36:48 -0700</bug_when>
    <thetext>Created attachment 135334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594513</commentid>
    <comment_count>7</comment_count>
      <attachid>135208</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-04-03 08:37:10 -0700</bug_when>
    <thetext>Comment on attachment 135208
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:205
&gt;&gt; +    PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::Memory::DOMGroup&gt; &gt; domGroups() { return m_domGroups; }
&gt; 
&gt; Why did it become PassRefPtr?

Because we work in terms of RefPtr&apos;s everywhere here and there is no reason for transient switch to raw pointer.
A drive-by fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594516</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-03 08:40:09 -0700</bug_when>
    <thetext>Attachment 135334 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/inspector/InspectorDatabaseAgent.cpp:116:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 10 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>594539</commentid>
    <comment_count>9</comment_count>
      <attachid>135339</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-04-03 09:03:00 -0700</bug_when>
    <thetext>Created attachment 135339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594541</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-03 09:06:39 -0700</bug_when>
    <thetext>Attachment 135339 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/inspector/InspectorDatabaseAgent.cpp:116:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 10 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>595337</commentid>
    <comment_count>11</comment_count>
      <attachid>135535</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-04 02:34:13 -0700</bug_when>
    <thetext>Created attachment 135535
Patch for landing (with style errors fixed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595338</commentid>
    <comment_count>12</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-04 02:35:30 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Attachment 135339 [details] did not pass style-queue:
&gt; 
&gt; 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
&gt; Source/WebCore/inspector/InspectorDatabaseAgent.cpp:116:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
&gt; Total errors found: 1 in 10 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Peter, next time please make sure style errors like this are resolved before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595339</commentid>
    <comment_count>13</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-04 02:36:48 -0700</bug_when>
    <thetext>Committed r113157: &lt;http://trac.webkit.org/changeset/113157&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135208</attachid>
            <date>2012-04-02 15:44:38 -0700</date>
            <delta_ts>2012-04-03 09:02:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82958-20120403024436.patch</filename>
            <type>text/plain</type>
            <size>13844</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyOTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc5OWNhYjU1M2JhNGNh
ZTJiNGRjMTZjMzA2OTVkOWZjZjBiY2M2OC4uMzg4YThjYzQ4ZmEzNTBjM2MwZGY3NGQ0OWZkNDcy
NWZjOWU5MDVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA0LTAyICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzd2l0Y2ggSW5zcGVjdG9yLCBNZW1vcnkgYW5k
IERhdGFiYXNlIGRvbWFpbnMgdG8gdHlwZWQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mjk1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENsaWVudCBjb2RlIGlzIHN3aXRjaGVkIHRvIHR5cGVkIEFQ
SSAoYWxsIEluc3BlY3Rvck9iamVjdCBhbmQgSW5zcGVjdG9yQXJyYXkgdHlwZXMgYXJlIHJlcGxh
Y2VkIHdpdGgKKyAgICAgICAgZ2VuZXJhdGVkIHR5cGVzIGZyb20gVHlwZUJ1aWxkZXIgYWNjb3Jk
aW5nIHRvIEluc3BlY3Rvci5qc29uKS4KKworICAgICAgICBNaXNzaW5nIGFycmF5IG9mIEluc3Bl
Y3RvclZhbHVlcyBzcGVjaWFsaXphdGlvbiBpcyBhZGRlZC4KKworICAgICAgICAqIGluc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0Ojpp
bnNwZWN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjppbnNwZWN0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFi
YXNlVGFibGVOYW1lcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRhdGFiYXNlQWdlbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlB
Z2VudDo6Z2V0RE9NTm9kZUNvdW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3Rvck1lbW9yeUFnZW50KToKKwogMjAxMi0wNC0w
MiAgU3Jpa3VtYXIgQm9uZGEgIDxzcmlrdW1hci5iQGdtYWlsLmNvbT4KIAogICAgICAgICBNaXNz
aW5nIE5VTEwgY2hlY2sgZm9yIHZlbmRvciBzdHJpbmcgZnJvbSBnbEdldFN0cmluZygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5w
eSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5Cmlu
ZGV4IDBlYWU5NDdkNGU3YzA2MmNhNGVjYzVkZmEzNDhmNDkzMDliOWI1MGYuLjU1NzM1OGViYzgz
Y2Q4ZDQyOGEzMDQwZjQzOTI3NzFjNDBhNWFiNTggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CkBAIC02MCw3ICs2MCw4IEBAIFRZ
UEVTX1dJVEhfUlVOVElNRV9DQVNUX1NFVCA9IGZyb3plbnNldChbIlJ1bnRpbWUuUmVtb3RlT2Jq
ZWN0IiwgIlJ1bnRpbWUuUHJvcGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJEZWJ1Z2dlci5GdW5jdGlvbkRldGFpbHMiLCAiRGVidWdnZXIuQ2FsbEZyYW1lIl0p
CiAKIFNUUklDVF9FTkFCTEVEX0RPTUFJTlMgPSBbIkNvbnNvbGUiLCAiRE9NRGVidWdnZXIiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAiQ1NTIiwgIkRlYnVnZ2VyIiwgIkRPTSIsICJOZXR3
b3JrIiwgIlBhZ2UiLCAiUnVudGltZSJdCisgICAgICAgICAgICAgICAgICAgICAgICAgICJDU1Mi
LCAiRGVidWdnZXIiLCAiRE9NIiwgIk5ldHdvcmsiLCAiUGFnZSIsICJSdW50aW1lIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkluc3BlY3RvciIsICJNZW1vcnkiLCAiRGF0YWJhc2UiXQog
CiAKIGNtZGxpbmVfcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKQEAgLTIyNzcsMTQg
KzIyNzgsMTIgQEAgc3RydWN0IEFycmF5SXRlbUhlbHBlcjxpbnQ+IHsKICAgICB9OwogfTsKIAot
Ci0KIHRlbXBsYXRlPD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yT2JqZWN0PiB7
CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3RvclZhbHVlPiB7CiAgICAgc3RydWN0IFRy
YWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFy
cmF5LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdmFsdWUpCisgICAgICAgIHN0YXRpYyB2
b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiB2YWx1ZSkKICAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hPYmplY3Qo
dmFsdWUpOworICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIH0K
ICAgICB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
SG9zdC5jcHAKaW5kZXggOTEyOTNjYzkwYzFkYmNmNTg3MWMxMTVhODY5NTdlOTc2OWY2ZDMxYy4u
ZjQ5NWJlNjFlZGJkNjA1NjllNGZkMWZiMTk1OGE2NzI1MmU2N2Q2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTk4LDggKzk4LDEw
IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpkaXNjb25uZWN0KCkKIAogdm9pZCBJbmplY3Rl
ZFNjcmlwdEhvc3Q6Omluc3BlY3RJbXBsKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG9iamVj
dCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaGludHMpCiB7Ci0gICAgaWYgKG1faW5zcGVj
dG9yQWdlbnQpCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmluc3BlY3Qob2JqZWN0LT5hc09i
amVjdCgpLCBoaW50cy0+YXNPYmplY3QoKSk7CisgICAgaWYgKG1faW5zcGVjdG9yQWdlbnQpIHsK
KyAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJlbW90
ZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0
KG9iamVjdCk7CisgICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmluc3BlY3QocmVtb3RlT2JqZWN0
LCBoaW50cy0+YXNPYmplY3QoKSk7CisgICAgfQogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0SG9z
dDo6Z2V0RXZlbnRMaXN0ZW5lcnNJbXBsKE5vZGUqIG5vZGUsIFZlY3RvcjxFdmVudExpc3RlbmVy
SW5mbz4mIGxpc3RlbmVyc0FycmF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudC5jcHAKaW5kZXggMTIzN2JlMDc1MjlhNWU0ZTA3ODEwMGRmZmM0MmRjZTFkODU3YTZm
NC4uYmE3YTczMzUxYzA5Yzg5MjM1ZTQ2YmMxNGFjODgyYTE0ZTlkZjI2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAg
dm9pZCBJbnNwZWN0b3JBZ2VudDo6c2V0SW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW4oY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIGNvbnN0IFN0cmkKICAgICBtX2luamVjdGVkU2NyaXB0Rm9yT3JpZ2luLnNl
dChvcmlnaW4sIHNvdXJjZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdlbnQ6Omluc3BlY3QoUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGhpbnRzKQordm9pZCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdChQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVjdFRvSW5zcGVjdCwg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKQogewogICAgIGlmIChtX3N0YXRlLT5n
ZXRCb29sZWFuKEluc3BlY3RvckFnZW50U3RhdGU6Omluc3BlY3RvckFnZW50RW5hYmxlZCkgJiYg
bV9mcm9udGVuZCkgewogICAgICAgICBtX2Zyb250ZW5kLT5pbnNwZWN0b3IoKS0+aW5zcGVjdChv
YmplY3RUb0luc3BlY3QsIGhpbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFnZW50LmgKaW5kZXggNWMyODYxY2FhNDRjNTJhYTI5ODAyMjU4NzcwNDc0OWJhNTBiYzA0NC4u
NDllNzlmYTBmNWUwMzE0NTRiOGFkNDI5MTk1ZjdhZDZlZWEzMmE5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRJbmplY3RlZFNjcmlwdEZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOwogCi0gICAgdm9pZCBpbnNwZWN0KFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBoaW50cyk7CisgICAgdm9pZCBpbnNwZWN0KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gaGludHMpOwogCiBwcml2YXRlOgogICAgIEluc3BlY3RvckFnZW50KFBhZ2UqLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3Rh
dGUqKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIEluamVjdGVkU2NyaXB0TWFu
YWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAKICAgICBWZWN0b3I8cGFpcjxsb25nLCBT
dHJpbmc+ID4gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHM7Ci0gICAgcGFpcjxSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gPiBtX3BlbmRpbmdJbnNw
ZWN0RGF0YTsKKyAgICBwYWlyPFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gPiBtX3BlbmRpbmdJbnNwZWN0RGF0YTsKICAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEluamVjdGVkU2NyaXB0Rm9yT3JpZ2lu
TWFwOwogICAgIEluamVjdGVkU2NyaXB0Rm9yT3JpZ2luTWFwIG1faW5qZWN0ZWRTY3JpcHRGb3JP
cmlnaW47CiAjaWYgRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggMDZmNjUyNDg4ZWM2NGFhNzlh
MWE2OWEyNmE5NDAwMWQxMzBmOGZjOC4uMmJmNWJkYTkxMDM5MGRhZjdjNTg4OGIwMTgyYzI5NmQ1
OWJiNjY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmNwcApAQCAtMTAzLDE5ICsxMDMsMTkgQEAgcHVibGljOgogCiAgICAgICAg
IFNRTFJlc3VsdFNldFJvd0xpc3QqIHJvd0xpc3QgPSByZXN1bHRTZXQtPnJvd3MoKTsKIAotICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNvbHVtbk5hbWVzID0gSW5zcGVjdG9yQXJyYXk6
OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiBj
b2x1bW5OYW1lcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAg
ICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvbHVtbnMgPSByb3dMaXN0LT5jb2x1bW5OYW1lcygp
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbHVtbnMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgICAgICBjb2x1bW5OYW1lcy0+cHVzaFN0cmluZyhjb2x1bW5zW2ldKTsKKyAgICAgICAg
ICAgIGNvbHVtbk5hbWVzLT5hZGRJdGVtKGNvbHVtbnNbaV0pOwogCi0gICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gdmFsdWVzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3RvclZhbHVlPiA+IHZhbHVlcyA9IFR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JWYWx1ZT46OmNyZWF0ZSgpOwogICAgICAgICBjb25z
dCBWZWN0b3I8U1FMVmFsdWU+JiBkYXRhID0gcm93TGlzdC0+dmFsdWVzKCk7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgY29u
c3QgU1FMVmFsdWUmIHZhbHVlID0gcm93TGlzdC0+dmFsdWVzKClbaV07CiAgICAgICAgICAgICBz
d2l0Y2ggKHZhbHVlLnR5cGUoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgU1FMVmFsdWU6OlN0
cmluZ1ZhbHVlOiB2YWx1ZXMtPnB1c2hTdHJpbmcodmFsdWUuc3RyaW5nKCkpOyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpOdW1iZXJWYWx1ZTogdmFsdWVzLT5wdXNoTnVt
YmVyKHZhbHVlLm51bWJlcigpKTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTUUxWYWx1
ZTo6TnVsbFZhbHVlOiB2YWx1ZXMtPnB1c2hWYWx1ZShJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpKTsg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBTUUxWYWx1ZTo6U3RyaW5nVmFsdWU6IHZhbHVl
cy0+YWRkSXRlbShJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSh2YWx1ZS5zdHJpbmcoKSkpOyBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpOdW1iZXJWYWx1ZTogdmFsdWVzLT5h
ZGRJdGVtKEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZS5udW1iZXIoKSkpOyBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpOdWxsVmFsdWU6IHZhbHVlcy0+YWRk
SXRlbShJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpKTsgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5zcWxUcmFuc2Fj
dGlvblN1Y2NlZWRlZChtX3RyYW5zYWN0aW9uSWQsIGNvbHVtbk5hbWVzLCB2YWx1ZXMpOwpAQCAt
MjkxLDE5ICsyOTEsMjEgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpyZXN0b3JlKCkK
ICAgICBtX2VuYWJsZWQgPSAgbV9zdGF0ZS0+Z2V0Qm9vbGVhbihEYXRhYmFzZUFnZW50U3RhdGU6
OmRhdGFiYXNlQWdlbnRFbmFibGVkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50
OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQgZGF0YWJhc2VJ
ZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgbmFtZXMpCit2b2lkIEluc3BlY3RvckRhdGFiYXNl
QWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyogZXJyb3IsIGludCBkYXRh
YmFzZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiYgbmFtZXMpCiB7CiAg
ICAgaWYgKCFtX2VuYWJsZWQpIHsKICAgICAgICAgKmVycm9yID0gIkRhdGFiYXNlIGFnZW50IGlz
IG5vdCBlbmFibGVkIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIG5hbWVzID0gVHlw
ZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworCiAgICAgRGF0YWJhc2UqIGRhdGFi
YXNlID0gZGF0YWJhc2VGb3JJZChkYXRhYmFzZUlkKTsKICAgICBpZiAoZGF0YWJhc2UpIHsKICAg
ICAgICAgVmVjdG9yPFN0cmluZz4gdGFibGVOYW1lcyA9IGRhdGFiYXNlLT50YWJsZU5hbWVzKCk7
CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRhYmxlTmFtZXMuc2l6ZSgpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBuYW1lcy0+
cHVzaFN0cmluZyh0YWJsZU5hbWVzW2ldKTsKKyAgICAgICAgICAgIG5hbWVzLT5hZGRJdGVtKHRh
YmxlTmFtZXNbaV0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKaW5kZXggOWY0ZTk0Njc3YTQ2YmM2NDg5NGJjYTc4
NjFjZjAzNjFhNzJjZDE5Yy4uM2Y0MGNiMGNkZGUzZmNlYWQxYjhjNTk2NWI5MzQyNjk5ZDE1NGZm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUg
ZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBnZXRE
YXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqLCBpbnQgZGF0YWJhc2VJZCwgUmVmUHRyPElu
c3BlY3RvckFycmF5PiYgbmFtZXMpOworICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZVRhYmxl
TmFtZXMoRXJyb3JTdHJpbmcqLCBpbnQgZGF0YWJhc2VJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxTdHJpbmc+ID4mIG5hbWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTChFcnJv
clN0cmluZyosIGludCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sKiBzdWNj
ZXNzLCBpbnQqIHRyYW5zYWN0aW9uSWQpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGluamVj
dGVkIHNjcmlwdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlLmNwcAppbmRleCBmZTU4MDhjMGVhY2JlMmRhZWVhMTM0YmRhN2U5
ODkxYTI5YmQ5YWFjLi4wZTViZjk3ODFmMGIyNzkzNjI0YTNlOGQ3MzkyNjZmY2UxZTk4ZjU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UuY3BwCkBAIC01OCwxMSArNTgsMTMgQEAgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZTo6SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZShQYXNzUmVmUHRyPERhdGFiYXNlPiBkYXRhYmEK
IAogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpiaW5kKEluc3BlY3RvckZyb250ZW5k
OjpEYXRhYmFzZSogZnJvbnRlbmQpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4ganNv
bk9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAganNvbk9iamVjdC0+c2V0
TnVtYmVyKCJpZCIsIG1faWQpOwotICAgIGpzb25PYmplY3QtPnNldFN0cmluZygiZG9tYWluIiwg
bV9kb21haW4pOwotICAgIGpzb25PYmplY3QtPnNldFN0cmluZygibmFtZSIsIG1fbmFtZSk7Ci0g
ICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJ2ZXJzaW9uIiwgbV92ZXJzaW9uKTsKKyAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpEYXRhYmFzZT4ganNvbk9iamVjdCA9IFR5cGVCdWls
ZGVyOjpEYXRhYmFzZTo6RGF0YWJhc2U6OmNyZWF0ZSgpCisgICAgICAgIC8vIEZJWE1FOiBoZXJl
IHdlIHVzZSBzdHJpbmcgdHlwZSBhY2NvcmRpbmcgdG8gSW5zcGVjdG9yLmpzb24uCisgICAgICAg
IC8vICAgSG93ZXZlciB0aGUgYWN0dWFsIHZhbHVlIHVzZWQgdG8gYmUgYSBpbnRlZ2VyIGFuZCBp
biBvdGhlciBwbGFjZXMgaXQgaXMgaW50ZWdlci4gUmVzb2x2ZS4KKyAgICAgICAgLnNldElkKFN0
cmluZzo6bnVtYmVyKG1faWQpKQorICAgICAgICAuc2V0RG9tYWluKG1fZG9tYWluKQorICAgICAg
ICAuc2V0TmFtZShtX25hbWUpCisgICAgICAgIC5zZXRWZXJzaW9uKG1fdmVyc2lvbik7CiAgICAg
ZnJvbnRlbmQtPmFkZERhdGFiYXNlKGpzb25PYmplY3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCA1ZTQzY2I5ZDFl
MTg1NGQ5ZjdmOWU4NGIxMDZiM2I1MDY2ZWY0ZjhiLi5lNzBjNzk5YThhM2QxMzNlYTRiNDE4ZTdh
ODlmNjljYmVkN2ZhYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTE5OCwxMyArMTk4LDEzIEBAIGNsYXNzIENvdW50ZXJW
aXNpdG9yIDogcHVibGljIERPTVdyYXBwZXJWaXNpdG9yIHsKIHB1YmxpYzoKICAgICBDb3VudGVy
VmlzaXRvcihQYWdlKiBwYWdlKQogICAgICAgICA6IG1fcGFnZShwYWdlKQotICAgICAgICAsIG1f
ZG9tR3JvdXBzKEluc3BlY3RvckFycmF5OjpjcmVhdGUoKSkKKyAgICAgICAgLCBtX2RvbUdyb3Vw
cyhUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6RE9NR3JvdXA+OjpjcmVh
dGUoKSkKICAgICAgICAgLCBtX2pzRXh0ZXJuYWxTdHJpbmdTaXplKDApCiAgICAgICAgICwgbV9z
aGFyZWRTdHJpbmdTaXplKDApIHsgfQogCi0gICAgSW5zcGVjdG9yQXJyYXkqIGRvbUdyb3Vwcygp
IHsgcmV0dXJuIG1fZG9tR3JvdXBzLmdldCgpOyB9CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6RE9NR3JvdXA+ID4gZG9tR3JvdXBzKCkgeyBy
ZXR1cm4gbV9kb21Hcm91cHM7IH0KIAotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBz
dHJpbmdzKCkKKyAgICBQYXNzUmVmUHRyPFN0cmluZ1N0YXRpc3RpY3M+IHN0cmluZ3MoKQogICAg
IHsKICAgICAgICAgUmVmUHRyPFN0cmluZ1N0YXRpc3RpY3M+IHN0cmluZ1N0YXRpc3RpY3MgPSBT
dHJpbmdTdGF0aXN0aWNzOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldERvbShtX2NoYXJhY3Rl
ckRhdGFTdGF0aXN0aWNzLmNoYXJhY3RlckRhdGFTaXplKCkpCkBAIC0yMzYsNyArMjM2LDcgQEAg
cHVibGljOgogICAgICAgICBpZiAocm9vdE5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RE9DVU1F
TlRfTk9ERSkKICAgICAgICAgICAgIGRvbUdyb3VwLT5zZXREb2N1bWVudFVSSShzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KHJvb3ROb2RlKS0+ZG9jdW1lbnRVUkkoKSk7CiAKLSAgICAgICAgbV9kb21H
cm91cHMtPnB1c2hPYmplY3QoZG9tR3JvdXApOworICAgICAgICBtX2RvbUdyb3Vwcy0+YWRkSXRl
bShkb21Hcm91cCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIHZpc2l0SlNFeHRlcm5hbFN0
cmluZyhTdHJpbmdJbXBsKiBzdHJpbmcpCkBAIC0yNzgsNyArMjc4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIEhhc2hTZXQ8Tm9kZSo+IG1fcm9vdHM7CiAgICAgUGFnZSogbV9wYWdlOwotICAgIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4gbV9kb21Hcm91cHM7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6TWVtb3J5OjpET01Hcm91cD4gPiBtX2RvbUdyb3VwczsKICAgICBD
aGFyYWN0ZXJEYXRhU3RhdGlzdGljcyBtX2NoYXJhY3RlckRhdGFTdGF0aXN0aWNzOwogICAgIGlu
dCBtX2pzRXh0ZXJuYWxTdHJpbmdTaXplOwogICAgIGludCBtX3NoYXJlZFN0cmluZ1NpemU7CkBA
IC0yOTAsNyArMjkwLDcgQEAgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6On5JbnNwZWN0b3JNZW1vcnlB
Z2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldERPTU5vZGVDb3Vu
dChFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGRvbUdyb3VwcywgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mIHN0cmluZ3MpCit2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50Ojpn
ZXRET01Ob2RlQ291bnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpNZW1vcnk6OkRPTUdyb3VwPiA+JiBkb21Hcm91cHMsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6TWVtb3J5OjpTdHJpbmdTdGF0aXN0aWNzPiYgc3RyaW5ncykKIHsKICAgICBDb3VudGVy
VmlzaXRvciBjb3VudGVyVmlzaXRvcihtX3BhZ2UpOwogICAgIFNjcmlwdFByb2ZpbGVyOjp2aXNp
dEpTRE9NV3JhcHBlcnMoJmNvdW50ZXJWaXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXggMzIwYWJkOThlMzQ1YWEyMGUyZWEw
ZWYxNzFlYTRkNTI5ZjNiMmIyOS4uN2Y5YTg1MjQ5NDcyZjc1MzJmZTk5ZDlmZTMyZTc4ZTA2NTk1
YmRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9y
eUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IEluc3BlY3Rvck1lbW9yeUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlLCBwYWdl
LCBkb21BZ2VudCkpOwogICAgIH0KIAotICAgIHZvaWQgZ2V0RE9NTm9kZUNvdW50KEVycm9yU3Ry
aW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgZG9tR3JvdXBzLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYgc3RyaW5ncyk7CisgICAgdm9pZCBnZXRET01Ob2RlQ291bnQoRXJyb3JTdHJpbmcq
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpNZW1vcnk6OkRPTUdyb3Vw
PiA+JiBkb21Hcm91cHMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6TWVtb3J5OjpTdHJpbmdTdGF0aXN0
aWNzPiYgc3RyaW5ncyk7CiAKICAgICB+SW5zcGVjdG9yTWVtb3J5QWdlbnQoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135334</attachid>
            <date>2012-04-03 08:36:48 -0700</date>
            <delta_ts>2012-04-03 09:02:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82958-20120403193646.patch</filename>
            <type>text/plain</type>
            <size>13680</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU0MWJhNjc1YTkzOWMz
YmIyMTBkNmI5M2FkMjRlZDIzOTExOGE0ZC4uNzQzNTEwNWM5ZGZmYzRmNDczYmRiMzk4MzA1OGIy
NmFlY2M2MmU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA0LTAyICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzd2l0Y2ggSW5zcGVjdG9yLCBNZW1vcnkgYW5k
IERhdGFiYXNlIGRvbWFpbnMgdG8gdHlwZWQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mjk1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENsaWVudCBjb2RlIGlzIHN3aXRjaGVkIHRvIHR5cGVkIEFQ
SSAoYWxsIEluc3BlY3Rvck9iamVjdCBhbmQgSW5zcGVjdG9yQXJyYXkgdHlwZXMgYXJlIHJlcGxh
Y2VkIHdpdGgKKyAgICAgICAgZ2VuZXJhdGVkIHR5cGVzIGZyb20gVHlwZUJ1aWxkZXIgYWNjb3Jk
aW5nIHRvIEluc3BlY3Rvci5qc29uKS4KKworICAgICAgICBNaXNzaW5nIGFycmF5IG9mIEluc3Bl
Y3RvclZhbHVlcyBzcGVjaWFsaXphdGlvbiBpcyBhZGRlZC4KKworICAgICAgICAqIGluc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0Ojpp
bnNwZWN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjppbnNwZWN0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFi
YXNlVGFibGVOYW1lcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRhdGFiYXNlQWdlbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlB
Z2VudDo6Z2V0RE9NTm9kZUNvdW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3Rvck1lbW9yeUFnZW50KToKKwogMjAxMi0wNC0w
MyAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2FsbCBp
bmNyZW1lbnRTdGF0c0NvdW50ZXIgZGlyZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXggMGVhZTk0N2Q0ZTdjMDYyY2E0
ZWNjNWRmYTM0OGY0OTMwOWI5YjUwZi4uNTU3MzU4ZWJjODNjZDhkNDI4YTMwNDBmNDM5Mjc3MWM0
MGE1YWI1OCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0
b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0
b3JJbnNwZWN0b3IucHkKQEAgLTYwLDcgKzYwLDggQEAgVFlQRVNfV0lUSF9SVU5USU1FX0NBU1Rf
U0VUID0gZnJvemVuc2V0KFsiUnVudGltZS5SZW1vdGVPYmplY3QiLCAiUnVudGltZS5Qcm9wZXIK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlYnVnZ2VyLkZ1bmN0
aW9uRGV0YWlscyIsICJEZWJ1Z2dlci5DYWxsRnJhbWUiXSkKIAogU1RSSUNUX0VOQUJMRURfRE9N
QUlOUyA9IFsiQ29uc29sZSIsICJET01EZWJ1Z2dlciIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICJDU1MiLCAiRGVidWdnZXIiLCAiRE9NIiwgIk5ldHdvcmsiLCAiUGFnZSIsICJSdW50aW1l
Il0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkNTUyIsICJEZWJ1Z2dlciIsICJET00iLCAi
TmV0d29yayIsICJQYWdlIiwgIlJ1bnRpbWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAi
SW5zcGVjdG9yIiwgIk1lbW9yeSIsICJEYXRhYmFzZSJdCiAKIAogY21kbGluZV9wYXJzZXIgPSBv
cHRwYXJzZS5PcHRpb25QYXJzZXIoKQpAQCAtMjI3NywxNCArMjI3OCwxMiBAQCBzdHJ1Y3QgQXJy
YXlJdGVtSGVscGVyPGludD4gewogICAgIH07CiB9OwogCi0KLQogdGVtcGxhdGU8Pgotc3RydWN0
IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JPYmplY3Q+IHsKK3N0cnVjdCBBcnJheUl0ZW1IZWxw
ZXI8SW5zcGVjdG9yVmFsdWU+IHsKICAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGlj
IHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiB2YWx1ZSkKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0
b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBhcnJheS0+cHVzaE9iamVjdCh2YWx1ZSk7CisgICAgICAgICAgICBh
cnJheS0+cHVzaFZhbHVlKHZhbHVlKTsKICAgICAgICAgfQogICAgIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAppbmRleCBjZWUzYzk0
MmQ2M2JkNzcwNzZiZDhhYmE5NTQzYmM0YmJkODMyY2IzLi4wYjY4NDY4MGRjY2VkOGYyM2ZkMzk5
ZDQyZWU1N2ViOTEzYTcxZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtOTgsOCArOTgsMTAgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dEhvc3Q6OmRpc2Nvbm5lY3QoKQogCiB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdElt
cGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiBoaW50cykKIHsKLSAgICBpZiAobV9pbnNwZWN0b3JBZ2VudCkKLSAgICAgICAgbV9p
bnNwZWN0b3JBZ2VudC0+aW5zcGVjdChvYmplY3QtPmFzT2JqZWN0KCksIGhpbnRzLT5hc09iamVj
dCgpKTsKKyAgICBpZiAobV9pbnNwZWN0b3JBZ2VudCkgeworICAgICAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVtb3RlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3Qob2JqZWN0KTsKKyAgICAgICAgbV9p
bnNwZWN0b3JBZ2VudC0+aW5zcGVjdChyZW1vdGVPYmplY3QsIGhpbnRzLT5hc09iamVjdCgpKTsK
KyAgICB9CiB9CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRFdmVudExpc3RlbmVyc0lt
cGwoTm9kZSogbm9kZSwgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiYgbGlzdGVuZXJzQXJyYXkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAppbmRleCAxMjM3
YmUwNzUyOWE1ZTRlMDc4MTAwZGZmYzQyZGNlMWQ4NTdhNmY0Li5iYTdhNzMzNTFjMDljODkyMzVl
NDZiYzE0YWM4ODJhMTRlOWRmMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIEluc3BlY3RvckFnZW50Ojpz
ZXRJbmplY3RlZFNjcmlwdEZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aQogICAgIG1faW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW4uc2V0KG9yaWdpbiwgc291cmNlKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGludHMpCit2
b2lkIEluc3BlY3RvckFnZW50OjppbnNwZWN0KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gaGludHMpCiB7CiAgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oSW5zcGVjdG9yQWdl
bnRTdGF0ZTo6aW5zcGVjdG9yQWdlbnRFbmFibGVkKSAmJiBtX2Zyb250ZW5kKSB7CiAgICAgICAg
IG1fZnJvbnRlbmQtPmluc3BlY3RvcigpLT5pbnNwZWN0KG9iamVjdFRvSW5zcGVjdCwgaGludHMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAppbmRleCA1YzI4NjFj
YWE0NGM1MmFhMjk4MDIyNTg3NzA0NzQ5YmE1MGJjMDQ0Li40OWU3OWZhMGY1ZTAzMTQ1NGI4YWQ0
MjkxOTVmN2FkNmVlYTMyYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnQuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEluamVjdGVk
U2NyaXB0Rm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSk7CiAKLSAgICB2b2lkIGluc3BlY3QoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVj
dFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKTsKKyAgICB2b2lk
IGluc3BlY3QoUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBv
YmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBoaW50cyk7CiAKIHBy
aXZhdGU6CiAgICAgSW5zcGVjdG9yQWdlbnQoUGFnZSosIEluamVjdGVkU2NyaXB0TWFuYWdlcios
IEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSopOwpAQCAtMTEyLDcgKzExMiw3
IEBAIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcjsKIAogICAgIFZlY3RvcjxwYWlyPGxvbmcsIFN0cmluZz4gPiBtX3BlbmRpbmdFdmFs
dWF0ZVRlc3RDb21tYW5kczsKLSAgICBwYWlyPFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiA+IG1fcGVuZGluZ0luc3BlY3REYXRhOworICAgIHBhaXI8UmVm
UHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiA+IG1fcGVuZGluZ0luc3BlY3REYXRhOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gSW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW5NYXA7CiAgICAgSW5qZWN0ZWRTY3Jp
cHRGb3JPcmlnaW5NYXAgbV9pbmplY3RlZFNjcmlwdEZvck9yaWdpbjsKICNpZiBFTkFCTEUoV09S
S0VSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmNwcAppbmRleCBlNzQ2YjE4OGMwZGMwOWQ0YjZiOGQ4MzMyNWRiZTg4ZThhM2U3ZjVh
Li4yZTY4OTA1YTBjY2ZhMWYzMjY1YTZmOTEwM2JiYzA5NDVkMjM2MDgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC0x
MDMsMTkgKzEwMywxOSBAQCBwdWJsaWM6CiAKICAgICAgICAgU1FMUmVzdWx0U2V0Um93TGlzdCog
cm93TGlzdCA9IHJlc3VsdFNldC0+cm93cygpOwogCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4gY29sdW1uTmFtZXMgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAgICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+IGNvbHVtbk5hbWVzID0gVHlwZUJ1aWxk
ZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgY29sdW1ucyA9IHJvd0xpc3QtPmNvbHVtbk5hbWVzKCk7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY29sdW1ucy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGNvbHVtbk5hbWVz
LT5wdXNoU3RyaW5nKGNvbHVtbnNbaV0pOworICAgICAgICAgICAgY29sdW1uTmFtZXMtPmFkZEl0
ZW0oY29sdW1uc1tpXSk7CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiB2YWx1ZXMg
PSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yVmFsdWU+ID4gdmFsdWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3RvclZhbHVlPjo6Y3JlYXRlKCk7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTUUxWYWx1ZT4mIGRh
dGEgPSByb3dMaXN0LT52YWx1ZXMoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBk
YXRhLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBTUUxWYWx1ZSYgdmFsdWUgPSBy
b3dMaXN0LT52YWx1ZXMoKVtpXTsKICAgICAgICAgICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7
Ci0gICAgICAgICAgICAgICAgY2FzZSBTUUxWYWx1ZTo6U3RyaW5nVmFsdWU6IHZhbHVlcy0+cHVz
aFN0cmluZyh2YWx1ZS5zdHJpbmcoKSk7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgU1FM
VmFsdWU6Ok51bWJlclZhbHVlOiB2YWx1ZXMtPnB1c2hOdW1iZXIodmFsdWUubnVtYmVyKCkpOyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpOdWxsVmFsdWU6IHZhbHVlcy0+
cHVzaFZhbHVlKEluc3BlY3RvclZhbHVlOjpudWxsKCkpOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIFNRTFZhbHVlOjpTdHJpbmdWYWx1ZTogdmFsdWVzLT5hZGRJdGVtKEluc3BlY3RvclN0
cmluZzo6Y3JlYXRlKHZhbHVlLnN0cmluZygpKSk7IGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgU1FMVmFsdWU6Ok51bWJlclZhbHVlOiB2YWx1ZXMtPmFkZEl0ZW0oSW5zcGVjdG9yQmFzaWNW
YWx1ZTo6Y3JlYXRlKHZhbHVlLm51bWJlcigpKSk7IGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgU1FMVmFsdWU6Ok51bGxWYWx1ZTogdmFsdWVzLT5hZGRJdGVtKEluc3BlY3RvclZhbHVlOjpu
dWxsKCkpOyBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBtX2Zyb250
ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPnNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkKG1fdHJhbnNh
Y3Rpb25JZCwgY29sdW1uTmFtZXMsIHZhbHVlcyk7CkBAIC0yOTEsMTkgKzI5MSwyMSBAQCB2b2lk
IEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OnJlc3RvcmUoKQogICAgIG1fZW5hYmxlZCA9ICBtX3N0
YXRlLT5nZXRCb29sZWFuKERhdGFiYXNlQWdlbnRTdGF0ZTo6ZGF0YWJhc2VBZ2VudEVuYWJsZWQp
OwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1l
cyhFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgUmVmUHRyPElu
c3BlY3RvckFycmF5PiYgbmFtZXMpCit2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERh
dGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4mIG5hbWVzKQogewogICAg
IGlmICghbV9lbmFibGVkKSB7CiAgICAgICAgICplcnJvciA9ICJEYXRhYmFzZSBhZ2VudCBpcyBu
b3QgZW5hYmxlZCI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBuYW1lcyA9IFR5cGVC
dWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKwogICAgIERhdGFiYXNlKiBkYXRhYmFz
ZSA9IGRhdGFiYXNlRm9ySWQoZGF0YWJhc2VJZCk7CiAgICAgaWYgKGRhdGFiYXNlKSB7CiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IHRhYmxlTmFtZXMgPSBkYXRhYmFzZS0+dGFibGVOYW1lcygpOwog
ICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSB0YWJsZU5hbWVzLnNpemUoKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgbmFtZXMtPnB1
c2hTdHJpbmcodGFibGVOYW1lc1tpXSk7CisgICAgICAgICAgICBuYW1lcy0+YWRkSXRlbSh0YWJs
ZU5hbWVzW2ldKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCmluZGV4IGZjNzZlMWJkNmM1OGQyODFhY2I0MmZmMDk0
YThiMGYzZmE1MzNlMDIuLjI5MDJjNmVlMjliMmMzYjJlMjNmODY1NTNiNDJhNWFlYWIyYjUxZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZy
b250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmly
dHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0
YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBuYW1lcyk7CisgICAgdmlydHVhbCB2b2lkIGdldERhdGFi
YXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4mIG5hbWVzKTsKICAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZVNRTChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgY29u
c3QgU3RyaW5nJiBxdWVyeSwgYm9vbCogc3VjY2VzcywgaW50KiB0cmFuc2FjdGlvbklkKTsKIAog
ICAgIC8vIENhbGxlZCBmcm9tIHRoZSBpbmplY3RlZCBzY3JpcHQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKaW5kZXgg
Njc4NTQxY2VhZjNhYmIzOWU4YzdjYjkyZGQxYmEwNTM4ZjdkMzk0My4uMGY0NjUzODQ1MTYwZDkx
NGQyZDRhNDc2OTg0ZmJkOTdmZGE1MWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcApAQCAtNTgsMTEgKzU4LDEx
IEBAIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2Uo
UGFzc1JlZlB0cjxEYXRhYmFzZT4gZGF0YWJhCiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VSZXNv
dXJjZTo6YmluZChJbnNwZWN0b3JGcm9udGVuZDo6RGF0YWJhc2UqIGZyb250ZW5kKQogewotICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGpzb25PYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpOwotICAgIGpzb25PYmplY3QtPnNldFN0cmluZygiaWQiLCBtX2lkKTsKLSAgICBqc29u
T2JqZWN0LT5zZXRTdHJpbmcoImRvbWFpbiIsIG1fZG9tYWluKTsKLSAgICBqc29uT2JqZWN0LT5z
ZXRTdHJpbmcoIm5hbWUiLCBtX25hbWUpOwotICAgIGpzb25PYmplY3QtPnNldFN0cmluZygidmVy
c2lvbiIsIG1fdmVyc2lvbik7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RGF0
YWJhc2U+IGpzb25PYmplY3QgPSBUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRhdGFiYXNlOjpjcmVh
dGUoKQorICAgICAgICAuc2V0SWQobV9pZCkKKyAgICAgICAgLnNldERvbWFpbihtX2RvbWFpbikK
KyAgICAgICAgLnNldE5hbWUobV9uYW1lKQorICAgICAgICAuc2V0VmVyc2lvbihtX3ZlcnNpb24p
OwogICAgIGZyb250ZW5kLT5hZGREYXRhYmFzZShqc29uT2JqZWN0KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggNWU0
M2NiOWQxZTE4NTRkOWY3ZjllODRiMTA2YjNiNTA2NmVmNGY4Yi4uZTcwYzc5OWE4YTNkMTMzZWE0
YjQxOGU3YTg5ZjY5Y2JlZDdmYWJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC0xOTgsMTMgKzE5OCwxMyBAQCBjbGFzcyBD
b3VudGVyVmlzaXRvciA6IHB1YmxpYyBET01XcmFwcGVyVmlzaXRvciB7CiBwdWJsaWM6CiAgICAg
Q291bnRlclZpc2l0b3IoUGFnZSogcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKLSAgICAg
ICAgLCBtX2RvbUdyb3VwcyhJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCkpCisgICAgICAgICwgbV9k
b21Hcm91cHMoVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpNZW1vcnk6OkRPTUdyb3Vw
Pjo6Y3JlYXRlKCkpCiAgICAgICAgICwgbV9qc0V4dGVybmFsU3RyaW5nU2l6ZSgwKQogICAgICAg
ICAsIG1fc2hhcmVkU3RyaW5nU2l6ZSgwKSB7IH0KIAotICAgIEluc3BlY3RvckFycmF5KiBkb21H
cm91cHMoKSB7IHJldHVybiBtX2RvbUdyb3Vwcy5nZXQoKTsgfQorICAgIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpNZW1vcnk6OkRPTUdyb3VwPiA+IGRvbUdyb3Vw
cygpIHsgcmV0dXJuIG1fZG9tR3JvdXBzOyB9CiAKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gc3RyaW5ncygpCisgICAgUGFzc1JlZlB0cjxTdHJpbmdTdGF0aXN0aWNzPiBzdHJpbmdz
KCkKICAgICB7CiAgICAgICAgIFJlZlB0cjxTdHJpbmdTdGF0aXN0aWNzPiBzdHJpbmdTdGF0aXN0
aWNzID0gU3RyaW5nU3RhdGlzdGljczo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXREb20obV9j
aGFyYWN0ZXJEYXRhU3RhdGlzdGljcy5jaGFyYWN0ZXJEYXRhU2l6ZSgpKQpAQCAtMjM2LDcgKzIz
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHJvb3ROb2RlLT5ub2RlVHlwZSgpID09IE5vZGU6
OkRPQ1VNRU5UX05PREUpCiAgICAgICAgICAgICBkb21Hcm91cC0+c2V0RG9jdW1lbnRVUkkoc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihyb290Tm9kZSktPmRvY3VtZW50VVJJKCkpOwogCi0gICAgICAg
IG1fZG9tR3JvdXBzLT5wdXNoT2JqZWN0KGRvbUdyb3VwKTsKKyAgICAgICAgbV9kb21Hcm91cHMt
PmFkZEl0ZW0oZG9tR3JvdXApOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRXh0
ZXJuYWxTdHJpbmcoU3RyaW5nSW1wbCogc3RyaW5nKQpAQCAtMjc4LDcgKzI3OCw3IEBAIHByaXZh
dGU6CiAKICAgICBIYXNoU2V0PE5vZGUqPiBtX3Jvb3RzOwogICAgIFBhZ2UqIG1fcGFnZTsKLSAg
ICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IG1fZG9tR3JvdXBzOworICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6RE9NR3JvdXA+ID4gbV9kb21Hcm91cHM7
CiAgICAgQ2hhcmFjdGVyRGF0YVN0YXRpc3RpY3MgbV9jaGFyYWN0ZXJEYXRhU3RhdGlzdGljczsK
ICAgICBpbnQgbV9qc0V4dGVybmFsU3RyaW5nU2l6ZTsKICAgICBpbnQgbV9zaGFyZWRTdHJpbmdT
aXplOwpAQCAtMjkwLDcgKzI5MCw3IEBAIEluc3BlY3Rvck1lbW9yeUFnZW50Ojp+SW5zcGVjdG9y
TWVtb3J5QWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRET01O
b2RlQ291bnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBkb21Hcm91cHMs
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdHJpbmdzKQordm9pZCBJbnNwZWN0b3JNZW1vcnlB
Z2VudDo6Z2V0RE9NTm9kZUNvdW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6TWVtb3J5OjpET01Hcm91cD4gPiYgZG9tR3JvdXBzLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6U3RyaW5nU3RhdGlzdGljcz4mIHN0cmluZ3MpCiB7CiAgICAg
Q291bnRlclZpc2l0b3IgY291bnRlclZpc2l0b3IobV9wYWdlKTsKICAgICBTY3JpcHRQcm9maWxl
cjo6dmlzaXRKU0RPTVdyYXBwZXJzKCZjb3VudGVyVmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCmluZGV4IDMyMGFiZDk4ZTM0NWFh
MjBlMmVhMGVmMTcxZWE0ZDUyOWYzYjJiMjkuLjdmOWE4NTI0OTQ3MmY3NTMyZmU5OWQ5ZmUzMmU3
OGUwNjU5NWJkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JN
ZW1vcnlBZ2VudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBJbnNwZWN0b3JNZW1vcnlBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0
ZSwgcGFnZSwgZG9tQWdlbnQpKTsKICAgICB9CiAKLSAgICB2b2lkIGdldERPTU5vZGVDb3VudChF
cnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGRvbUdyb3VwcywgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mIHN0cmluZ3MpOworICAgIHZvaWQgZ2V0RE9NTm9kZUNvdW50KEVycm9y
U3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TWVtb3J5OjpE
T01Hcm91cD4gPiYgZG9tR3JvdXBzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6U3RyaW5n
U3RhdGlzdGljcz4mIHN0cmluZ3MpOwogCiAgICAgfkluc3BlY3Rvck1lbW9yeUFnZW50KCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135339</attachid>
            <date>2012-04-03 09:03:00 -0700</date>
            <delta_ts>2012-04-04 02:30:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82958-20120403200258.patch</filename>
            <type>text/plain</type>
            <size>13674</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU0MWJhNjc1YTkzOWMz
YmIyMTBkNmI5M2FkMjRlZDIzOTExOGE0ZC4uNzQzNTEwNWM5ZGZmYzRmNDczYmRiMzk4MzA1OGIy
NmFlY2M2MmU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA0LTAyICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzd2l0Y2ggSW5zcGVjdG9yLCBNZW1vcnkgYW5k
IERhdGFiYXNlIGRvbWFpbnMgdG8gdHlwZWQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mjk1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENsaWVudCBjb2RlIGlzIHN3aXRjaGVkIHRvIHR5cGVkIEFQ
SSAoYWxsIEluc3BlY3Rvck9iamVjdCBhbmQgSW5zcGVjdG9yQXJyYXkgdHlwZXMgYXJlIHJlcGxh
Y2VkIHdpdGgKKyAgICAgICAgZ2VuZXJhdGVkIHR5cGVzIGZyb20gVHlwZUJ1aWxkZXIgYWNjb3Jk
aW5nIHRvIEluc3BlY3Rvci5qc29uKS4KKworICAgICAgICBNaXNzaW5nIGFycmF5IG9mIEluc3Bl
Y3RvclZhbHVlcyBzcGVjaWFsaXphdGlvbiBpcyBhZGRlZC4KKworICAgICAgICAqIGluc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0Ojpp
bnNwZWN0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjppbnNwZWN0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFi
YXNlVGFibGVOYW1lcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRhdGFiYXNlQWdlbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlB
Z2VudDo6Z2V0RE9NTm9kZUNvdW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3Rvck1lbW9yeUFnZW50KToKKwogMjAxMi0wNC0w
MyAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2FsbCBp
bmNyZW1lbnRTdGF0c0NvdW50ZXIgZGlyZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXggMGVhZTk0N2Q0ZTdjMDYyY2E0
ZWNjNWRmYTM0OGY0OTMwOWI5YjUwZi4uNTU3MzU4ZWJjODNjZDhkNDI4YTMwNDBmNDM5Mjc3MWM0
MGE1YWI1OCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0
b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0
b3JJbnNwZWN0b3IucHkKQEAgLTYwLDcgKzYwLDggQEAgVFlQRVNfV0lUSF9SVU5USU1FX0NBU1Rf
U0VUID0gZnJvemVuc2V0KFsiUnVudGltZS5SZW1vdGVPYmplY3QiLCAiUnVudGltZS5Qcm9wZXIK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlYnVnZ2VyLkZ1bmN0
aW9uRGV0YWlscyIsICJEZWJ1Z2dlci5DYWxsRnJhbWUiXSkKIAogU1RSSUNUX0VOQUJMRURfRE9N
QUlOUyA9IFsiQ29uc29sZSIsICJET01EZWJ1Z2dlciIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICJDU1MiLCAiRGVidWdnZXIiLCAiRE9NIiwgIk5ldHdvcmsiLCAiUGFnZSIsICJSdW50aW1l
Il0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkNTUyIsICJEZWJ1Z2dlciIsICJET00iLCAi
TmV0d29yayIsICJQYWdlIiwgIlJ1bnRpbWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAi
SW5zcGVjdG9yIiwgIk1lbW9yeSIsICJEYXRhYmFzZSJdCiAKIAogY21kbGluZV9wYXJzZXIgPSBv
cHRwYXJzZS5PcHRpb25QYXJzZXIoKQpAQCAtMjI3NywxNCArMjI3OCwxMiBAQCBzdHJ1Y3QgQXJy
YXlJdGVtSGVscGVyPGludD4gewogICAgIH07CiB9OwogCi0KLQogdGVtcGxhdGU8Pgotc3RydWN0
IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JPYmplY3Q+IHsKK3N0cnVjdCBBcnJheUl0ZW1IZWxw
ZXI8SW5zcGVjdG9yVmFsdWU+IHsKICAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGlj
IHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiB2YWx1ZSkKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0
b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBhcnJheS0+cHVzaE9iamVjdCh2YWx1ZSk7CisgICAgICAgICAgICBh
cnJheS0+cHVzaFZhbHVlKHZhbHVlKTsKICAgICAgICAgfQogICAgIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAppbmRleCBjZWUzYzk0
MmQ2M2JkNzcwNzZiZDhhYmE5NTQzYmM0YmJkODMyY2IzLi4wYjY4NDY4MGRjY2VkOGYyM2ZkMzk5
ZDQyZWU1N2ViOTEzYTcxZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtOTgsOCArOTgsMTAgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dEhvc3Q6OmRpc2Nvbm5lY3QoKQogCiB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdElt
cGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiBoaW50cykKIHsKLSAgICBpZiAobV9pbnNwZWN0b3JBZ2VudCkKLSAgICAgICAgbV9p
bnNwZWN0b3JBZ2VudC0+aW5zcGVjdChvYmplY3QtPmFzT2JqZWN0KCksIGhpbnRzLT5hc09iamVj
dCgpKTsKKyAgICBpZiAobV9pbnNwZWN0b3JBZ2VudCkgeworICAgICAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVtb3RlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGltZUNhc3Qob2JqZWN0KTsKKyAgICAgICAgbV9p
bnNwZWN0b3JBZ2VudC0+aW5zcGVjdChyZW1vdGVPYmplY3QsIGhpbnRzLT5hc09iamVjdCgpKTsK
KyAgICB9CiB9CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRFdmVudExpc3RlbmVyc0lt
cGwoTm9kZSogbm9kZSwgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiYgbGlzdGVuZXJzQXJyYXkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAppbmRleCAxMjM3
YmUwNzUyOWE1ZTRlMDc4MTAwZGZmYzQyZGNlMWQ4NTdhNmY0Li5iYTdhNzMzNTFjMDljODkyMzVl
NDZiYzE0YWM4ODJhMTRlOWRmMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIEluc3BlY3RvckFnZW50Ojpz
ZXRJbmplY3RlZFNjcmlwdEZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aQogICAgIG1faW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW4uc2V0KG9yaWdpbiwgc291cmNlKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGludHMpCit2
b2lkIEluc3BlY3RvckFnZW50OjppbnNwZWN0KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gaGludHMpCiB7CiAgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oSW5zcGVjdG9yQWdl
bnRTdGF0ZTo6aW5zcGVjdG9yQWdlbnRFbmFibGVkKSAmJiBtX2Zyb250ZW5kKSB7CiAgICAgICAg
IG1fZnJvbnRlbmQtPmluc3BlY3RvcigpLT5pbnNwZWN0KG9iamVjdFRvSW5zcGVjdCwgaGludHMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAppbmRleCA1YzI4NjFj
YWE0NGM1MmFhMjk4MDIyNTg3NzA0NzQ5YmE1MGJjMDQ0Li40OWU3OWZhMGY1ZTAzMTQ1NGI4YWQ0
MjkxOTVmN2FkNmVlYTMyYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnQuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEluamVjdGVk
U2NyaXB0Rm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSk7CiAKLSAgICB2b2lkIGluc3BlY3QoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVj
dFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKTsKKyAgICB2b2lk
IGluc3BlY3QoUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBv
YmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBoaW50cyk7CiAKIHBy
aXZhdGU6CiAgICAgSW5zcGVjdG9yQWdlbnQoUGFnZSosIEluamVjdGVkU2NyaXB0TWFuYWdlcios
IEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSopOwpAQCAtMTEyLDcgKzExMiw3
IEBAIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcjsKIAogICAgIFZlY3RvcjxwYWlyPGxvbmcsIFN0cmluZz4gPiBtX3BlbmRpbmdFdmFs
dWF0ZVRlc3RDb21tYW5kczsKLSAgICBwYWlyPFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiA+IG1fcGVuZGluZ0luc3BlY3REYXRhOworICAgIHBhaXI8UmVm
UHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiA+IG1fcGVuZGluZ0luc3BlY3REYXRhOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gSW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW5NYXA7CiAgICAgSW5qZWN0ZWRTY3Jp
cHRGb3JPcmlnaW5NYXAgbV9pbmplY3RlZFNjcmlwdEZvck9yaWdpbjsKICNpZiBFTkFCTEUoV09S
S0VSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmNwcAppbmRleCBlNzQ2YjE4OGMwZGMwOWQ0YjZiOGQ4MzMyNWRiZTg4ZThhM2U3ZjVh
Li4yZTY4OTA1YTBjY2ZhMWYzMjY1YTZmOTEwM2JiYzA5NDVkMjM2MDgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC0x
MDMsMTkgKzEwMywxOSBAQCBwdWJsaWM6CiAKICAgICAgICAgU1FMUmVzdWx0U2V0Um93TGlzdCog
cm93TGlzdCA9IHJlc3VsdFNldC0+cm93cygpOwogCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4gY29sdW1uTmFtZXMgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAgICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+IGNvbHVtbk5hbWVzID0gVHlwZUJ1aWxk
ZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgY29sdW1ucyA9IHJvd0xpc3QtPmNvbHVtbk5hbWVzKCk7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY29sdW1ucy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGNvbHVtbk5hbWVz
LT5wdXNoU3RyaW5nKGNvbHVtbnNbaV0pOworICAgICAgICAgICAgY29sdW1uTmFtZXMtPmFkZEl0
ZW0oY29sdW1uc1tpXSk7CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiB2YWx1ZXMg
PSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yVmFsdWU+ID4gdmFsdWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3RvclZhbHVlPjo6Y3JlYXRlKCk7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTUUxWYWx1ZT4mIGRh
dGEgPSByb3dMaXN0LT52YWx1ZXMoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBk
YXRhLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBTUUxWYWx1ZSYgdmFsdWUgPSBy
b3dMaXN0LT52YWx1ZXMoKVtpXTsKICAgICAgICAgICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7
Ci0gICAgICAgICAgICAgICAgY2FzZSBTUUxWYWx1ZTo6U3RyaW5nVmFsdWU6IHZhbHVlcy0+cHVz
aFN0cmluZyh2YWx1ZS5zdHJpbmcoKSk7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgU1FM
VmFsdWU6Ok51bWJlclZhbHVlOiB2YWx1ZXMtPnB1c2hOdW1iZXIodmFsdWUubnVtYmVyKCkpOyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpOdWxsVmFsdWU6IHZhbHVlcy0+
cHVzaFZhbHVlKEluc3BlY3RvclZhbHVlOjpudWxsKCkpOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIFNRTFZhbHVlOjpTdHJpbmdWYWx1ZTogdmFsdWVzLT5hZGRJdGVtKEluc3BlY3RvclN0
cmluZzo6Y3JlYXRlKHZhbHVlLnN0cmluZygpKSk7IGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgU1FMVmFsdWU6Ok51bWJlclZhbHVlOiB2YWx1ZXMtPmFkZEl0ZW0oSW5zcGVjdG9yQmFzaWNW
YWx1ZTo6Y3JlYXRlKHZhbHVlLm51bWJlcigpKSk7IGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgU1FMVmFsdWU6Ok51bGxWYWx1ZTogdmFsdWVzLT5hZGRJdGVtKEluc3BlY3RvclZhbHVlOjpu
dWxsKCkpOyBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBtX2Zyb250
ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPnNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkKG1fdHJhbnNh
Y3Rpb25JZCwgY29sdW1uTmFtZXMsIHZhbHVlcyk7CkBAIC0yOTEsMTkgKzI5MSwyMSBAQCB2b2lk
IEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OnJlc3RvcmUoKQogICAgIG1fZW5hYmxlZCA9ICBtX3N0
YXRlLT5nZXRCb29sZWFuKERhdGFiYXNlQWdlbnRTdGF0ZTo6ZGF0YWJhc2VBZ2VudEVuYWJsZWQp
OwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1l
cyhFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgUmVmUHRyPElu
c3BlY3RvckFycmF5PiYgbmFtZXMpCit2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERh
dGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4mIG5hbWVzKQogewogICAg
IGlmICghbV9lbmFibGVkKSB7CiAgICAgICAgICplcnJvciA9ICJEYXRhYmFzZSBhZ2VudCBpcyBu
b3QgZW5hYmxlZCI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBuYW1lcyA9IFR5cGVC
dWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKwogICAgIERhdGFiYXNlKiBkYXRhYmFz
ZSA9IGRhdGFiYXNlRm9ySWQoZGF0YWJhc2VJZCk7CiAgICAgaWYgKGRhdGFiYXNlKSB7CiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IHRhYmxlTmFtZXMgPSBkYXRhYmFzZS0+dGFibGVOYW1lcygpOwog
ICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSB0YWJsZU5hbWVzLnNpemUoKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgbmFtZXMtPnB1
c2hTdHJpbmcodGFibGVOYW1lc1tpXSk7CisgICAgICAgICAgICBuYW1lcy0+YWRkSXRlbSh0YWJs
ZU5hbWVzW2ldKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCmluZGV4IGZjNzZlMWJkNmM1OGQyODFhY2I0MmZmMDk0
YThiMGYzZmE1MzNlMDIuLjI5MDJjNmVlMjliMmMzYjJlMjNmODY1NTNiNDJhNWFlYWIyYjUxZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZy
b250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmly
dHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0
YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBuYW1lcyk7CisgICAgdmlydHVhbCB2b2lkIGdldERhdGFi
YXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4mIG5hbWVzKTsKICAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZVNRTChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgY29u
c3QgU3RyaW5nJiBxdWVyeSwgYm9vbCogc3VjY2VzcywgaW50KiB0cmFuc2FjdGlvbklkKTsKIAog
ICAgIC8vIENhbGxlZCBmcm9tIHRoZSBpbmplY3RlZCBzY3JpcHQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKaW5kZXgg
Njc4NTQxY2VhZjNhYmIzOWU4YzdjYjkyZGQxYmEwNTM4ZjdkMzk0My4uMGY0NjUzODQ1MTYwZDkx
NGQyZDRhNDc2OTg0ZmJkOTdmZGE1MWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcApAQCAtNTgsMTEgKzU4LDEx
IEBAIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2Uo
UGFzc1JlZlB0cjxEYXRhYmFzZT4gZGF0YWJhCiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VSZXNv
dXJjZTo6YmluZChJbnNwZWN0b3JGcm9udGVuZDo6RGF0YWJhc2UqIGZyb250ZW5kKQogewotICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGpzb25PYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpOwotICAgIGpzb25PYmplY3QtPnNldFN0cmluZygiaWQiLCBtX2lkKTsKLSAgICBqc29u
T2JqZWN0LT5zZXRTdHJpbmcoImRvbWFpbiIsIG1fZG9tYWluKTsKLSAgICBqc29uT2JqZWN0LT5z
ZXRTdHJpbmcoIm5hbWUiLCBtX25hbWUpOwotICAgIGpzb25PYmplY3QtPnNldFN0cmluZygidmVy
c2lvbiIsIG1fdmVyc2lvbik7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RGF0
YWJhc2U+IGpzb25PYmplY3QgPSBUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRhdGFiYXNlOjpjcmVh
dGUoKQorICAgICAgICAuc2V0SWQobV9pZCkKKyAgICAgICAgLnNldERvbWFpbihtX2RvbWFpbikK
KyAgICAgICAgLnNldE5hbWUobV9uYW1lKQorICAgICAgICAuc2V0VmVyc2lvbihtX3ZlcnNpb24p
OwogICAgIGZyb250ZW5kLT5hZGREYXRhYmFzZShqc29uT2JqZWN0KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggNWU0
M2NiOWQxZTE4NTRkOWY3ZjllODRiMTA2YjNiNTA2NmVmNGY4Yi4uYzlmZTgyZDY4NjRhMmE0YTFk
ZjE0M2JlMTlhZjliNDNjM2JmZGFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC0xOTgsMTMgKzE5OCwxMyBAQCBjbGFzcyBD
b3VudGVyVmlzaXRvciA6IHB1YmxpYyBET01XcmFwcGVyVmlzaXRvciB7CiBwdWJsaWM6CiAgICAg
Q291bnRlclZpc2l0b3IoUGFnZSogcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKLSAgICAg
ICAgLCBtX2RvbUdyb3VwcyhJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCkpCisgICAgICAgICwgbV9k
b21Hcm91cHMoVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpNZW1vcnk6OkRPTUdyb3Vw
Pjo6Y3JlYXRlKCkpCiAgICAgICAgICwgbV9qc0V4dGVybmFsU3RyaW5nU2l6ZSgwKQogICAgICAg
ICAsIG1fc2hhcmVkU3RyaW5nU2l6ZSgwKSB7IH0KIAotICAgIEluc3BlY3RvckFycmF5KiBkb21H
cm91cHMoKSB7IHJldHVybiBtX2RvbUdyb3Vwcy5nZXQoKTsgfQorICAgIFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6TWVtb3J5OjpET01Hcm91cD4qIGRvbUdyb3VwcygpIHsgcmV0dXJu
IG1fZG9tR3JvdXBzLmdldCgpOyB9CiAKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
c3RyaW5ncygpCisgICAgUGFzc1JlZlB0cjxTdHJpbmdTdGF0aXN0aWNzPiBzdHJpbmdzKCkKICAg
ICB7CiAgICAgICAgIFJlZlB0cjxTdHJpbmdTdGF0aXN0aWNzPiBzdHJpbmdTdGF0aXN0aWNzID0g
U3RyaW5nU3RhdGlzdGljczo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXREb20obV9jaGFyYWN0
ZXJEYXRhU3RhdGlzdGljcy5jaGFyYWN0ZXJEYXRhU2l6ZSgpKQpAQCAtMjM2LDcgKzIzNiw3IEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKHJvb3ROb2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VN
RU5UX05PREUpCiAgICAgICAgICAgICBkb21Hcm91cC0+c2V0RG9jdW1lbnRVUkkoc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihyb290Tm9kZSktPmRvY3VtZW50VVJJKCkpOwogCi0gICAgICAgIG1fZG9t
R3JvdXBzLT5wdXNoT2JqZWN0KGRvbUdyb3VwKTsKKyAgICAgICAgbV9kb21Hcm91cHMtPmFkZEl0
ZW0oZG9tR3JvdXApOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRXh0ZXJuYWxT
dHJpbmcoU3RyaW5nSW1wbCogc3RyaW5nKQpAQCAtMjc4LDcgKzI3OCw3IEBAIHByaXZhdGU6CiAK
ICAgICBIYXNoU2V0PE5vZGUqPiBtX3Jvb3RzOwogICAgIFBhZ2UqIG1fcGFnZTsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IG1fZG9tR3JvdXBzOworICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6RE9NR3JvdXA+ID4gbV9kb21Hcm91cHM7CiAgICAg
Q2hhcmFjdGVyRGF0YVN0YXRpc3RpY3MgbV9jaGFyYWN0ZXJEYXRhU3RhdGlzdGljczsKICAgICBp
bnQgbV9qc0V4dGVybmFsU3RyaW5nU2l6ZTsKICAgICBpbnQgbV9zaGFyZWRTdHJpbmdTaXplOwpA
QCAtMjkwLDcgKzI5MCw3IEBAIEluc3BlY3Rvck1lbW9yeUFnZW50Ojp+SW5zcGVjdG9yTWVtb3J5
QWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRET01Ob2RlQ291
bnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBkb21Hcm91cHMsIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiBzdHJpbmdzKQordm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6
Z2V0RE9NTm9kZUNvdW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6TWVtb3J5OjpET01Hcm91cD4gPiYgZG9tR3JvdXBzLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6Ok1lbW9yeTo6U3RyaW5nU3RhdGlzdGljcz4mIHN0cmluZ3MpCiB7CiAgICAgQ291bnRl
clZpc2l0b3IgY291bnRlclZpc2l0b3IobV9wYWdlKTsKICAgICBTY3JpcHRQcm9maWxlcjo6dmlz
aXRKU0RPTVdyYXBwZXJzKCZjb3VudGVyVmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCmluZGV4IDMyMGFiZDk4ZTM0NWFhMjBlMmVh
MGVmMTcxZWE0ZDUyOWYzYjJiMjkuLjdmOWE4NTI0OTQ3MmY3NTMyZmU5OWQ5ZmUzMmU3OGUwNjU5
NWJkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBJbnNwZWN0b3JNZW1vcnlBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgcGFn
ZSwgZG9tQWdlbnQpKTsKICAgICB9CiAKLSAgICB2b2lkIGdldERPTU5vZGVDb3VudChFcnJvclN0
cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGRvbUdyb3VwcywgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIHN0cmluZ3MpOworICAgIHZvaWQgZ2V0RE9NTm9kZUNvdW50KEVycm9yU3RyaW5n
KiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TWVtb3J5OjpET01Hcm91
cD4gPiYgZG9tR3JvdXBzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6U3RyaW5nU3RhdGlz
dGljcz4mIHN0cmluZ3MpOwogCiAgICAgfkluc3BlY3Rvck1lbW9yeUFnZW50KCk7CiAK
</data>
<flag name="review"
          id="139816"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135535</attachid>
            <date>2012-04-04 02:34:13 -0700</date>
            <delta_ts>2012-04-04 02:34:13 -0700</delta_ts>
            <desc>Patch for landing (with style errors fixed)</desc>
            <filename>type-builder.patch</filename>
            <type>text/plain</type>
            <size>13036</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNTY2NjY0Li42MjQzZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTItMDQtMDIgIFBldGVyIFJ5YmluICA8cGV0ZXIucnliaW5AZ21haWwuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6IHN3aXRjaCBJ
bnNwZWN0b3IsIE1lbW9yeSBhbmQgRGF0YWJhc2UgZG9tYWlucyB0byB0eXBlZCBBUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyOTU4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpZW50IGNvZGUgaXMg
c3dpdGNoZWQgdG8gdHlwZWQgQVBJIChhbGwgSW5zcGVjdG9yT2JqZWN0IGFuZCBJbnNwZWN0b3JB
cnJheSB0eXBlcyBhcmUgcmVwbGFjZWQgd2l0aAorICAgICAgICBnZW5lcmF0ZWQgdHlwZXMgZnJv
bSBUeXBlQnVpbGRlciBhY2NvcmRpbmcgdG8gSW5zcGVjdG9yLmpzb24pLgorCisgICAgICAgIE1p
c3NpbmcgYXJyYXkgb2YgSW5zcGVjdG9yVmFsdWVzIHNwZWNpYWxpemF0aW9uIGlzIGFkZGVkLgor
CisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Omluc3Bl
Y3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAgICAoSW5z
cGVjdG9yQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0
YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRET01Ob2RlQ291bnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yTWVtb3J5
QWdlbnQpOgorCiAyMDEyLTA0LTAzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERhdGFiYXNlOjpEYXRhYmFzZTo6aWQgZmll
bGQgaW4gdGhlIHByb3RvY29sIHNob3VsZCBoYXZlIHR5cGUgaW50ZWdlciBub3Qgc3RyaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5
CmluZGV4IDBlYWU5NDcuLjU1NzM1OGUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CkBAIC02MCw3ICs2MCw4IEBAIFRZUEVTX1dJ
VEhfUlVOVElNRV9DQVNUX1NFVCA9IGZyb3plbnNldChbIlJ1bnRpbWUuUmVtb3RlT2JqZWN0Iiwg
IlJ1bnRpbWUuUHJvcGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJEZWJ1Z2dlci5GdW5jdGlvbkRldGFpbHMiLCAiRGVidWdnZXIuQ2FsbEZyYW1lIl0pCiAKIFNU
UklDVF9FTkFCTEVEX0RPTUFJTlMgPSBbIkNvbnNvbGUiLCAiRE9NRGVidWdnZXIiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAiQ1NTIiwgIkRlYnVnZ2VyIiwgIkRPTSIsICJOZXR3b3JrIiwg
IlBhZ2UiLCAiUnVudGltZSJdCisgICAgICAgICAgICAgICAgICAgICAgICAgICJDU1MiLCAiRGVi
dWdnZXIiLCAiRE9NIiwgIk5ldHdvcmsiLCAiUGFnZSIsICJSdW50aW1lIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkluc3BlY3RvciIsICJNZW1vcnkiLCAiRGF0YWJhc2UiXQogCiAKIGNt
ZGxpbmVfcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKQEAgLTIyNzcsMTQgKzIyNzgs
MTIgQEAgc3RydWN0IEFycmF5SXRlbUhlbHBlcjxpbnQ+IHsKICAgICB9OwogfTsKIAotCi0KIHRl
bXBsYXRlPD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yT2JqZWN0PiB7CitzdHJ1
Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3RvclZhbHVlPiB7CiAgICAgc3RydWN0IFRyYWl0cyB7
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdmFsdWUpCisgICAgICAgIHN0YXRpYyB2b2lkIHB1
c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVl
PiB2YWx1ZSkKICAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hPYmplY3QodmFsdWUp
OworICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIH0KICAgICB9
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5j
cHAKaW5kZXggY2VlM2M5NC4uMGI2ODQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTk4LDggKzk4LDEwIEBAIHZvaWQgSW5qZWN0
ZWRTY3JpcHRIb3N0OjpkaXNjb25uZWN0KCkKIAogdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6Omlu
c3BlY3RJbXBsKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG9iamVjdCwgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gaGludHMpCiB7Ci0gICAgaWYgKG1faW5zcGVjdG9yQWdlbnQpCi0gICAg
ICAgIG1faW5zcGVjdG9yQWdlbnQtPmluc3BlY3Qob2JqZWN0LT5hc09iamVjdCgpLCBoaW50cy0+
YXNPYmplY3QoKSk7CisgICAgaWYgKG1faW5zcGVjdG9yQWdlbnQpIHsKKyAgICAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJlbW90ZU9iamVjdCA9IFR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0KG9iamVjdCk7CisgICAg
ICAgIG1faW5zcGVjdG9yQWdlbnQtPmluc3BlY3QocmVtb3RlT2JqZWN0LCBoaW50cy0+YXNPYmpl
Y3QoKSk7CisgICAgfQogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0RXZlbnRMaXN0
ZW5lcnNJbXBsKE5vZGUqIG5vZGUsIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4mIGxpc3RlbmVy
c0FycmF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKaW5k
ZXggMTIzN2JlMC4uYmE3YTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnQuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6c2V0
SW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmkK
ICAgICBtX2luamVjdGVkU2NyaXB0Rm9yT3JpZ2luLnNldChvcmlnaW4sIHNvdXJjZSk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yQWdlbnQ6Omluc3BlY3QoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IG9iamVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKQordm9p
ZCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGhpbnRzKQogewogICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKEluc3BlY3RvckFnZW50
U3RhdGU6Omluc3BlY3RvckFnZW50RW5hYmxlZCkgJiYgbV9mcm9udGVuZCkgewogICAgICAgICBt
X2Zyb250ZW5kLT5pbnNwZWN0b3IoKS0+aW5zcGVjdChvYmplY3RUb0luc3BlY3QsIGhpbnRzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggNWMyODYxYy4u
NDllNzlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAg
LTk0LDcgKzk0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbmplY3RlZFNjcmlwdEZvck9y
aWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOwogCi0gICAg
dm9pZCBpbnNwZWN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RUb0luc3BlY3Qs
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBoaW50cyk7CisgICAgdm9pZCBpbnNwZWN0KFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNw
ZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGludHMpOwogCiBwcml2YXRlOgogICAg
IEluc3BlY3RvckFnZW50KFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnN0cnVtZW50
aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRl
OgogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAK
ICAgICBWZWN0b3I8cGFpcjxsb25nLCBTdHJpbmc+ID4gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29t
bWFuZHM7Ci0gICAgcGFpcjxSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiwgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gPiBtX3BlbmRpbmdJbnNwZWN0RGF0YTsKKyAgICBwYWlyPFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gPiBt
X3BlbmRpbmdJbnNwZWN0RGF0YTsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
IEluamVjdGVkU2NyaXB0Rm9yT3JpZ2luTWFwOwogICAgIEluamVjdGVkU2NyaXB0Rm9yT3JpZ2lu
TWFwIG1faW5qZWN0ZWRTY3JpcHRGb3JPcmlnaW47CiAjaWYgRU5BQkxFKFdPUktFUlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAK
aW5kZXggZTc0NmIxOC4uZThmNWQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtMTAzLDE5ICsxMDMsMTkgQEAgcHVi
bGljOgogCiAgICAgICAgIFNRTFJlc3VsdFNldFJvd0xpc3QqIHJvd0xpc3QgPSByZXN1bHRTZXQt
PnJvd3MoKTsKIAotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNvbHVtbk5hbWVzID0g
SW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFN0cmluZz4gPiBjb2x1bW5OYW1lcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+Ojpj
cmVhdGUoKTsKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvbHVtbnMgPSByb3dMaXN0
LT5jb2x1bW5OYW1lcygpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbHVtbnMu
c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBjb2x1bW5OYW1lcy0+cHVzaFN0cmluZyhjb2x1bW5z
W2ldKTsKKyAgICAgICAgICAgIGNvbHVtbk5hbWVzLT5hZGRJdGVtKGNvbHVtbnNbaV0pOwogCi0g
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gdmFsdWVzID0gSW5zcGVjdG9yQXJyYXk6OmNy
ZWF0ZSgpOworICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3RvclZhbHVl
PiA+IHZhbHVlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JWYWx1ZT46OmNyZWF0ZSgp
OwogICAgICAgICBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiBkYXRhID0gcm93TGlzdC0+dmFsdWVz
KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YS5zaXplKCk7ICsraSkgewog
ICAgICAgICAgICAgY29uc3QgU1FMVmFsdWUmIHZhbHVlID0gcm93TGlzdC0+dmFsdWVzKClbaV07
CiAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlLnR5cGUoKSkgewotICAgICAgICAgICAgICAgIGNh
c2UgU1FMVmFsdWU6OlN0cmluZ1ZhbHVlOiB2YWx1ZXMtPnB1c2hTdHJpbmcodmFsdWUuc3RyaW5n
KCkpOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpOdW1iZXJWYWx1ZTog
dmFsdWVzLT5wdXNoTnVtYmVyKHZhbHVlLm51bWJlcigpKTsgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBTUUxWYWx1ZTo6TnVsbFZhbHVlOiB2YWx1ZXMtPnB1c2hWYWx1ZShJbnNwZWN0b3JW
YWx1ZTo6bnVsbCgpKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpTdHJpbmdW
YWx1ZTogdmFsdWVzLT5hZGRJdGVtKEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKHZhbHVlLnN0cmlu
ZygpKSk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBTUUxWYWx1ZTo6TnVtYmVyVmFsdWU6IHZh
bHVlcy0+YWRkSXRlbShJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUubnVtYmVyKCkp
KTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpOdWxsVmFsdWU6IHZhbHVlcy0+
YWRkSXRlbShJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpKTsgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpLT5zcWxUcmFu
c2FjdGlvblN1Y2NlZWRlZChtX3RyYW5zYWN0aW9uSWQsIGNvbHVtbk5hbWVzLCB2YWx1ZXMpOwpA
QCAtMjkxLDE5ICsyOTEsMjEgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpyZXN0b3Jl
KCkKICAgICBtX2VuYWJsZWQgPSAgbV9zdGF0ZS0+Z2V0Qm9vbGVhbihEYXRhYmFzZUFnZW50U3Rh
dGU6OmRhdGFiYXNlQWdlbnRFbmFibGVkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIG5hbWVzKQordm9pZCBJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqIGVy
cm9yLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
U3RyaW5nPiA+JiBuYW1lcykKIHsKICAgICBpZiAoIW1fZW5hYmxlZCkgewogICAgICAgICAqZXJy
b3IgPSAiRGF0YWJhc2UgYWdlbnQgaXMgbm90IGVuYWJsZWQiOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCisgICAgbmFtZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7
CisKICAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSBkYXRhYmFzZUZvcklkKGRhdGFiYXNlSWQpOwog
ICAgIGlmIChkYXRhYmFzZSkgewogICAgICAgICBWZWN0b3I8U3RyaW5nPiB0YWJsZU5hbWVzID0g
ZGF0YWJhc2UtPnRhYmxlTmFtZXMoKTsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGFibGVO
YW1lcy5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkKLSAgICAgICAgICAgIG5hbWVzLT5wdXNoU3RyaW5nKHRhYmxlTmFtZXNbaV0pOworICAgICAg
ICAgICAgbmFtZXMtPmFkZEl0ZW0odGFibGVOYW1lc1tpXSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAppbmRleCBm
Yzc2ZTFiLi4yOTAyYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIC8vIENh
bGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0
cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmly
dHVhbCB2b2lkIGdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgbmFtZXMpOworICAgIHZpcnR1
YWwgdm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+JiBuYW1lcyk7
CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUwoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wqIHN1Y2Nlc3MsIGludCogdHJh
bnNhY3Rpb25JZCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgaW5qZWN0ZWQgc2NyaXB0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuY3BwCmluZGV4IDY3ODU0MWMuLjBmNDY1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKQEAgLTU4LDEx
ICs1OCwxMSBAQCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpJbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlKFBhc3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYQogCiB2b2lkIEluc3BlY3RvckRhdGFi
YXNlUmVzb3VyY2U6OmJpbmQoSW5zcGVjdG9yRnJvbnRlbmQ6OkRhdGFiYXNlKiBmcm9udGVuZCkK
IHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBqc29uT2JqZWN0ID0gSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKTsKLSAgICBqc29uT2JqZWN0LT5zZXRTdHJpbmcoImlkIiwgbV9pZCk7Ci0g
ICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iLCBtX2RvbWFpbik7Ci0gICAganNvbk9i
amVjdC0+c2V0U3RyaW5nKCJuYW1lIiwgbV9uYW1lKTsKLSAgICBqc29uT2JqZWN0LT5zZXRTdHJp
bmcoInZlcnNpb24iLCBtX3ZlcnNpb24pOworICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGF0YWJh
c2U6OkRhdGFiYXNlPiBqc29uT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpEYXRhYmFz
ZTo6Y3JlYXRlKCkKKyAgICAgICAgLnNldElkKG1faWQpCisgICAgICAgIC5zZXREb21haW4obV9k
b21haW4pCisgICAgICAgIC5zZXROYW1lKG1fbmFtZSkKKyAgICAgICAgLnNldFZlcnNpb24obV92
ZXJzaW9uKTsKICAgICBmcm9udGVuZC0+YWRkRGF0YWJhc2UoanNvbk9iamVjdCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmlu
ZGV4IDVlNDNjYjkuLmM5ZmU4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtMTk4LDEzICsxOTgsMTMgQEAgY2xhc3MgQ291
bnRlclZpc2l0b3IgOiBwdWJsaWMgRE9NV3JhcHBlclZpc2l0b3IgewogcHVibGljOgogICAgIENv
dW50ZXJWaXNpdG9yKFBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCi0gICAgICAg
ICwgbV9kb21Hcm91cHMoSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpKQorICAgICAgICAsIG1fZG9t
R3JvdXBzKFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TWVtb3J5OjpET01Hcm91cD46
OmNyZWF0ZSgpKQogICAgICAgICAsIG1fanNFeHRlcm5hbFN0cmluZ1NpemUoMCkKICAgICAgICAg
LCBtX3NoYXJlZFN0cmluZ1NpemUoMCkgeyB9CiAKLSAgICBJbnNwZWN0b3JBcnJheSogZG9tR3Jv
dXBzKCkgeyByZXR1cm4gbV9kb21Hcm91cHMuZ2V0KCk7IH0KKyAgICBUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6RE9NR3JvdXA+KiBkb21Hcm91cHMoKSB7IHJldHVybiBt
X2RvbUdyb3Vwcy5nZXQoKTsgfQogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHN0
cmluZ3MoKQorICAgIFBhc3NSZWZQdHI8U3RyaW5nU3RhdGlzdGljcz4gc3RyaW5ncygpCiAgICAg
ewogICAgICAgICBSZWZQdHI8U3RyaW5nU3RhdGlzdGljcz4gc3RyaW5nU3RhdGlzdGljcyA9IFN0
cmluZ1N0YXRpc3RpY3M6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0RG9tKG1fY2hhcmFjdGVy
RGF0YVN0YXRpc3RpY3MuY2hhcmFjdGVyRGF0YVNpemUoKSkKQEAgLTIzNiw3ICsyMzYsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGlmIChyb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVO
VF9OT0RFKQogICAgICAgICAgICAgZG9tR3JvdXAtPnNldERvY3VtZW50VVJJKHN0YXRpY19jYXN0
PERvY3VtZW50Kj4ocm9vdE5vZGUpLT5kb2N1bWVudFVSSSgpKTsKIAotICAgICAgICBtX2RvbUdy
b3Vwcy0+cHVzaE9iamVjdChkb21Hcm91cCk7CisgICAgICAgIG1fZG9tR3JvdXBzLT5hZGRJdGVt
KGRvbUdyb3VwKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRKU0V4dGVybmFsU3Ry
aW5nKFN0cmluZ0ltcGwqIHN0cmluZykKQEAgLTI3OCw3ICsyNzgsNyBAQCBwcml2YXRlOgogCiAg
ICAgSGFzaFNldDxOb2RlKj4gbV9yb290czsKICAgICBQYWdlKiBtX3BhZ2U7Ci0gICAgUmVmUHRy
PEluc3BlY3RvckFycmF5PiBtX2RvbUdyb3VwczsKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpNZW1vcnk6OkRPTUdyb3VwPiA+IG1fZG9tR3JvdXBzOwogICAgIENo
YXJhY3RlckRhdGFTdGF0aXN0aWNzIG1fY2hhcmFjdGVyRGF0YVN0YXRpc3RpY3M7CiAgICAgaW50
IG1fanNFeHRlcm5hbFN0cmluZ1NpemU7CiAgICAgaW50IG1fc2hhcmVkU3RyaW5nU2l6ZTsKQEAg
LTI5MCw3ICsyOTAsNyBAQCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6fkluc3BlY3Rvck1lbW9yeUFn
ZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0RE9NTm9kZUNvdW50
KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgZG9tR3JvdXBzLCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgc3RyaW5ncykKK3ZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6Omdl
dERPTU5vZGVDb3VudChFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6Ok1lbW9yeTo6RE9NR3JvdXA+ID4mIGRvbUdyb3VwcywgUmVmUHRyPFR5cGVCdWls
ZGVyOjpNZW1vcnk6OlN0cmluZ1N0YXRpc3RpY3M+JiBzdHJpbmdzKQogewogICAgIENvdW50ZXJW
aXNpdG9yIGNvdW50ZXJWaXNpdG9yKG1fcGFnZSk7CiAgICAgU2NyaXB0UHJvZmlsZXI6OnZpc2l0
SlNET01XcmFwcGVycygmY291bnRlclZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAppbmRleCAzMjBhYmQ5Li43ZjlhODUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaApAQCAt
NTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVj
dG9yTWVtb3J5QWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUsIHBhZ2UsIGRvbUFnZW50
KSk7CiAgICAgfQogCi0gICAgdm9pZCBnZXRET01Ob2RlQ291bnQoRXJyb3JTdHJpbmcqLCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+JiBkb21Hcm91cHMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBz
dHJpbmdzKTsKKyAgICB2b2lkIGdldERPTU5vZGVDb3VudChFcnJvclN0cmluZyosIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6RE9NR3JvdXA+ID4mIGRvbUdy
b3VwcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpNZW1vcnk6OlN0cmluZ1N0YXRpc3RpY3M+JiBzdHJp
bmdzKTsKIAogICAgIH5JbnNwZWN0b3JNZW1vcnlBZ2VudCgpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>