<?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>102683</bug_id>
          
          <creation_ts>2012-11-19 06:14:06 -0800</creation_ts>
          <short_desc>Collect user style sheets in DocumentStyleSheetCollection</short_desc>
          <delta_ts>2013-10-02 12:28:21 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>103940</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>kling</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>peter+ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>770662</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-19 06:14:06 -0800</bug_when>
    <thetext>Move user style sheet logic out from StyleResolver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770664</commentid>
    <comment_count>1</comment_count>
      <attachid>174965</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-19 06:20:26 -0800</bug_when>
    <thetext>Created attachment 174965
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770666</commentid>
    <comment_count>2</comment_count>
      <attachid>174965</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-19 06:25:10 -0800</bug_when>
    <thetext>Comment on attachment 174965
patch

Attachment 174965 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14910199</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770670</commentid>
    <comment_count>3</comment_count>
      <attachid>174965</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-19 06:28:22 -0800</bug_when>
    <thetext>Comment on attachment 174965
patch

Attachment 174965 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14901198</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770671</commentid>
    <comment_count>4</comment_count>
      <attachid>174965</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-19 06:30:18 -0800</bug_when>
    <thetext>Comment on attachment 174965
patch

Attachment 174965 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14876949</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770672</commentid>
    <comment_count>5</comment_count>
      <attachid>174965</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-11-19 06:31:15 -0800</bug_when>
    <thetext>Comment on attachment 174965
patch

Attachment 174965 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14905202</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770675</commentid>
    <comment_count>6</comment_count>
      <attachid>174966</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-19 06:32:01 -0800</bug_when>
    <thetext>Created attachment 174966
patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770680</commentid>
    <comment_count>7</comment_count>
      <attachid>174966</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-19 06:38:11 -0800</bug_when>
    <thetext>Comment on attachment 174966
patch 2

Attachment 174966 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14901201</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770681</commentid>
    <comment_count>8</comment_count>
      <attachid>174966</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-19 06:38:42 -0800</bug_when>
    <thetext>Comment on attachment 174966
patch 2

Attachment 174966 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14906205</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770684</commentid>
    <comment_count>9</comment_count>
      <attachid>174966</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-19 06:39:27 -0800</bug_when>
    <thetext>Comment on attachment 174966
patch 2

Attachment 174966 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14907227</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770689</commentid>
    <comment_count>10</comment_count>
      <attachid>174966</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-11-19 06:49:17 -0800</bug_when>
    <thetext>Comment on attachment 174966
patch 2

Attachment 174966 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14905206</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770695</commentid>
    <comment_count>11</comment_count>
      <attachid>174966</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 06:52:20 -0800</bug_when>
    <thetext>Comment on attachment 174966
patch 2

Attachment 174966 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14910201</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770697</commentid>
    <comment_count>12</comment_count>
      <attachid>174966</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-19 06:53:20 -0800</bug_when>
    <thetext>Comment on attachment 174966
patch 2

Attachment 174966 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14912211</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770711</commentid>
    <comment_count>13</comment_count>
      <attachid>174966</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-19 07:02:17 -0800</bug_when>
    <thetext>Comment on attachment 174966
patch 2

Attachment 174966 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14905208</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770813</commentid>
    <comment_count>14</comment_count>
      <attachid>174966</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-19 09:30:24 -0800</bug_when>
    <thetext>Comment on attachment 174966
patch 2

Attachment 174966 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14912262</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770866</commentid>
    <comment_count>15</comment_count>
      <attachid>175006</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-19 11:01:58 -0800</bug_when>
    <thetext>Created attachment 175006
patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771722</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-20 03:38:00 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/135271</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781963</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 15:42:38 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 103940</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800054</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-04 00:54:24 -0800</bug_when>
    <thetext>Attachment 175006 was posted by a committer and has review+, assigning to Antti Koivisto for commit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174965</attachid>
            <date>2012-11-19 06:20:26 -0800</date>
            <delta_ts>2012-11-19 06:32:01 -0800</delta_ts>
            <desc>patch</desc>
            <filename>user-stylesheet-refactor.patch</filename>
            <type>text/plain</type>
            <size>17367</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTE0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTExLTE5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDb2xsZWN0IHVzZXIgc3R5bGUg
c2hlZXRzIGluIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjY4MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIHVzZXIgc3R5bGVzaGVldCBj
b2xsZWN0aW9uIGxvZ2ljIGZyb20gU3R5bGVSZXNvbHZlciB0byBEb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uLgorICAgICAgICAKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMp
OgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdENTU09NV3JhcHBlcnMpOgorICAgICAgICAqIGNz
cy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp+RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpwYWdl
VXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbjo6Y2xlYXJQYWdlVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlUGFnZVVzZXJTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmFuYWx5emVTdHls
ZVNoZWV0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0
c0Zyb21TZWFtbGVzc1BhcmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6dXBkYXRlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIAorICAgICAgICAg
ICAgRmFjdG9yIHRoZSBTdHlsZVJlc29sdmVyIHVwZGF0aW5nIGNvZGUgdG8gZnVuY3Rpb24uCisK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMpOgorICAgICAgICAKKyAgICAgICAg
ICAgIENvbGxlY3QgdGhlIHVzZXIgc3R5bGUgc2hlZXRzLiBTb21lIHJlbmFtaW5nIGFuZCBvdGhl
ciBtaW5vciByZWZhY3RvcmluZy4KKworICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uOjphY3RpdmVVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAKKyAgICAg
ICAgICAgIEFkZCBhY3RpdmVVc2VyU3R5bGVTaGVldHMgdmVjdG9yIHRoYXQgY29udGFpbnMgYWxs
IHVzZXIgc3R5bGVzaGVldHMgZnJvbSBkaWZmZXJlbnQgc291cmNlcywKKyAgICAgICAgICAgIHNp
bWlsYXIgdG8gYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuCisKKyAgICAgICAgKERvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbjo6ZG9jdW1lbnRVc2VyU3R5bGVTaGVldHMpOgorCiAyMDEyLTExLTE5ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTM1MTExLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAkocmV2aXNpb24gMTM1MTQzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsMTcgKzI5Myw4IEBAIFN0eWxlUmVzb2x2ZXI6OlN0
eWxlUmVzb2x2ZXIoRG9jdW1lbnQqIGQKICAgICAgICAgICAgIGxvYWRGdWxsRGVmYXVsdFN0eWxl
KCk7CiAgICAgfQogCi0gICAgLy8gY29uc3RydWN0IGRvY3VtZW50IHJvb3QgZWxlbWVudCBkZWZh
dWx0IHN0eWxlLiB0aGlzIGlzIG5lZWRlZAotICAgIC8vIHRvIGV2YWx1YXRlIG1lZGlhIHF1ZXJp
ZXMgdGhhdCBjb250YWluIHJlbGF0aXZlIGNvbnN0cmFpbnRzLCBsaWtlICJzY3JlZW4gYW5kICht
YXgtd2lkdGg6IDEwZW0pIgotICAgIC8vIFRoaXMgaXMgaGVyZSBpbnN0ZWFkIG9mIGNvbnN0cnVj
dG9yLCBiZWNhdXNlIHdoZW4gY29uc3RydWN0b3IgaXMgcnVuLAotICAgIC8vIGRvY3VtZW50IGRv
ZXNuJ3QgaGF2ZSBkb2N1bWVudEVsZW1lbnQKLSAgICAvLyBOT1RFOiB0aGlzIGFzc3VtZXMgdGhh
dCBlbGVtZW50IHRoYXQgZ2V0cyBwYXNzZWQgdG8gc3R5bGVGb3JFbGVtZW50IC1jYWxsCi0gICAg
Ly8gaXMgYWx3YXlzIGZyb20gdGhlIGRvY3VtZW50IHRoYXQgb3ducyB0aGUgc3R5bGUgc2VsZWN0
b3IKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBkb2N1bWVudC0+dmlldygpOwotICAgIGlmICh2aWV3
KQotICAgICAgICBtX21lZGl1bSA9IGFkb3B0UHRyKG5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKHZp
ZXctPm1lZGlhVHlwZSgpKSk7Ci0gICAgZWxzZQotICAgICAgICBtX21lZGl1bSA9IGFkb3B0UHRy
KG5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKCJhbGwiKSk7CisgICAgbV9tZWRpdW0gPSBhZG9wdFB0
cihuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcih2aWV3ID8gdmlldy0+bWVkaWFUeXBlKCkgOiAiYWxs
IikpOwogCiAgICAgaWYgKHJvb3QpCiAgICAgICAgIG1fcm9vdERlZmF1bHRTdHlsZSA9IHN0eWxl
Rm9yRWxlbWVudChyb290LCAwLCBEaXNhbGxvd1N0eWxlU2hhcmluZywgTWF0Y2hPbmx5VXNlckFn
ZW50UnVsZXMpOwpAQCAtMzEzLDE1ICszMDQsNiBAQCBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29s
dmVyKERvY3VtZW50KiBkCiAKICAgICByZXNldEF1dGhvclN0eWxlKCk7CiAKLSAgICBEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uKiBzdHlsZVNoZWV0Q29sbGVjdGlvbiA9IGRvY3VtZW50LT5z
dHlsZVNoZWV0Q29sbGVjdGlvbigpOwotICAgIE93blB0cjxSdWxlU2V0PiB0ZW1wVXNlclN0eWxl
ID0gUnVsZVNldDo6Y3JlYXRlKCk7Ci0gICAgaWYgKENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hl
ZXQgPSBzdHlsZVNoZWV0Q29sbGVjdGlvbi0+cGFnZVVzZXJTaGVldCgpKQotICAgICAgICB0ZW1w
VXNlclN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChwYWdlVXNlclNoZWV0LT5jb250ZW50cygpLCAq
bV9tZWRpdW0sIHRoaXMpOwotICAgIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoc3R5
bGVTaGVldENvbGxlY3Rpb24tPmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCksICp0ZW1wVXNlclN0
eWxlKTsKLSAgICBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKHN0eWxlU2hlZXRDb2xs
ZWN0aW9uLT5kb2N1bWVudFVzZXJTdHlsZVNoZWV0cygpLCAqdGVtcFVzZXJTdHlsZSk7Ci0gICAg
aWYgKHRlbXBVc2VyU3R5bGUtPm1fcnVsZUNvdW50ID4gMCB8fCB0ZW1wVXNlclN0eWxlLT5tX3Bh
Z2VSdWxlcy5zaXplKCkgPiAwKQotICAgICAgICBtX3VzZXJTdHlsZSA9IHRlbXBVc2VyU3R5bGUu
cmVsZWFzZSgpOwotCiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICBpZiAoZG9jdW1lbnQtPnN2
Z0V4dGVuc2lvbnMoKSkgewogICAgICAgICBjb25zdCBIYXNoU2V0PFNWR0ZvbnRGYWNlRWxlbWVu
dCo+JiBzdmdGb250RmFjZUVsZW1lbnRzID0gZG9jdW1lbnQtPnN2Z0V4dGVuc2lvbnMoKS0+c3Zn
Rm9udEZhY2VFbGVtZW50cygpOwpAQCAtMzMxLDE1ICszMTMsMjAgQEAgU3R5bGVSZXNvbHZlcjo6
U3R5bGVSZXNvbHZlcihEb2N1bWVudCogZAogICAgIH0KICNlbmRpZgogCisgICAgRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbiogc3R5bGVTaGVldENvbGxlY3Rpb24gPSBkb2N1bWVudC0+c3R5
bGVTaGVldENvbGxlY3Rpb24oKTsKKyAgICBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRz
KHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5hY3RpdmVVc2VyU3R5bGVTaGVldHMoKSk7CiAgICAgYXBw
ZW5kQXV0aG9yU3R5bGVTaGVldHMoMCwgc3R5bGVTaGVldENvbGxlY3Rpb24tPmFjdGl2ZUF1dGhv
clN0eWxlU2hlZXRzKCkpOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RSdWxlc0Zy
b21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiB1
c2VyU2hlZXRzLCBSdWxlU2V0JiB1c2VyU3R5bGUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0PiA+JiB1c2VyU2hlZXRzKQogeworICAgIE93blB0cjxSdWxlU2V0PiB1c2VyU3R5bGVSdWxl
U2V0ID0gUnVsZVNldDo6Y3JlYXRlKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVz
ZXJTaGVldHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKHVzZXJTaGVldHNbaV0tPmNv
bnRlbnRzKCktPmlzVXNlclN0eWxlU2hlZXQoKSk7Ci0gICAgICAgIHVzZXJTdHlsZS5hZGRSdWxl
c0Zyb21TaGVldCh1c2VyU2hlZXRzW2ldLT5jb250ZW50cygpLCAqbV9tZWRpdW0sIHRoaXMpOwor
ICAgICAgICB1c2VyU3R5bGVSdWxlU2V0LT5hZGRSdWxlc0Zyb21TaGVldCh1c2VyU2hlZXRzW2ld
LT5jb250ZW50cygpLCAqbV9tZWRpdW0sIHRoaXMpOwogICAgIH0KKyAgICBpZiAodXNlclN0eWxl
UnVsZVNldC0+bV9ydWxlQ291bnQgPiAwIHx8IHVzZXJTdHlsZVJ1bGVTZXQtPm1fcGFnZVJ1bGVz
LnNpemUoKSA+IDApCisgICAgICAgIG1fdXNlclN0eWxlID0gdXNlclN0eWxlUnVsZVNldC5yZWxl
YXNlKCk7CiB9CiAKIHN0YXRpYyBQYXNzT3duUHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0
IFZlY3RvcjxSdWxlRmVhdHVyZT4mIHJ1bGVzKQpAQCAtMjU5MCw5ICsyNTc3LDcgQEAgc3RhdGlj
IHZvaWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcAogc3RhdGljIHZvaWQgY29sbGVjdENT
U09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiB3
cmFwcGVyTWFwLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKiBzdHlsZVNoZWV0Q29sbGVj
dGlvbikKIHsKICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdHlsZVNoZWV0
Q29sbGVjdGlvbi0+YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoKSk7Ci0gICAgY29sbGVjdENTU09N
V3JhcHBlcnMod3JhcHBlck1hcCwgc3R5bGVTaGVldENvbGxlY3Rpb24tPnBhZ2VVc2VyU2hlZXQo
KSk7Ci0gICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3R5bGVTaGVldENvbGxl
Y3Rpb24tPmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCkpOwotICAgIGNvbGxlY3RDU1NPTVdyYXBw
ZXJzKHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5kb2N1bWVudFVzZXJTdHlsZVNo
ZWV0cygpKTsKKyAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdHlsZVNoZWV0
Q29sbGVjdGlvbi0+YWN0aXZlVXNlclN0eWxlU2hlZXRzKCkpOwogfQogCiBDU1NTdHlsZVJ1bGUq
IFN0eWxlUmVzb2x2ZXI6OmVuc3VyZUZ1bGxDU1NPTVdyYXBwZXJGb3JJbnNwZWN0b3IoU3R5bGVS
dWxlKiBydWxlKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCShyZXZpc2lvbiAx
MzUxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MjEsNyArNDIxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgUmVu
ZGVyU3R5bGUqIHNfc3R5bGVOb3RZZXRBdmFpbGFibGU7CiAKLSAgICB2b2lkIGNvbGxlY3RSdWxl
c0Zyb21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+
JiwgUnVsZVNldCYgdXNlclN0eWxlKTsKKyAgICB2b2lkIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5
bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+Jik7CiAKICAgICB2
b2lkIGNhY2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAx
MzUxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDggQEAgRG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbjo6RG9jdW1lbnRTdAogCiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp+
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbigpCiB7Ci0gICAgaWYgKG1fcGFnZVVzZXJTaGVl
dCkKLSAgICAgICAgbV9wYWdlVXNlclNoZWV0LT5jbGVhck93bmVyTm9kZSgpOworICAgIGlmICht
X3BhZ2VVc2VyU3R5bGVTaGVldCkKKyAgICAgICAgbV9wYWdlVXNlclN0eWxlU2hlZXQtPmNsZWFy
T3duZXJOb2RlKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW5qZWN0ZWRVc2Vy
U3R5bGVTaGVldHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1faW5qZWN0ZWRVc2VyU3R5bGVTaGVl
dHNbaV0tPmNsZWFyT3duZXJOb2RlKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
aW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cy5zaXplKCk7ICsraSkKQEAgLTEwMCwxMCArMTAwLDEw
IEBAIHZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cmVzZXQKICAgICBtX3VzZXNC
ZWZvcmVBZnRlclJ1bGVzID0gc3R5bGVSZXNvbHZlci0+dXNlc0JlZm9yZUFmdGVyUnVsZXMoKTsK
IH0KIAotQ1NTU3R5bGVTaGVldCogRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cGFnZVVz
ZXJTaGVldCgpCitjb25zdCBDU1NTdHlsZVNoZWV0KiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0
aW9uOjpwYWdlVXNlclN0eWxlU2hlZXQoKSBjb25zdAogewotICAgIGlmIChtX3BhZ2VVc2VyU2hl
ZXQpCi0gICAgICAgIHJldHVybiBtX3BhZ2VVc2VyU2hlZXQuZ2V0KCk7CisgICAgaWYgKG1fcGFn
ZVVzZXJTdHlsZVNoZWV0KQorICAgICAgICByZXR1cm4gbV9wYWdlVXNlclN0eWxlU2hlZXQuZ2V0
KCk7CiAgICAgCiAgICAgUGFnZSogb3duaW5nUGFnZSA9IG1fZG9jdW1lbnQtPnBhZ2UoKTsKICAg
ICBpZiAoIW93bmluZ1BhZ2UpCkBAIC0xMTQsMjQgKzExNCwyNCBAQCBDU1NTdHlsZVNoZWV0KiBE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0CiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIC8v
IFBhcnNlIHRoZSBzaGVldCBhbmQgY2FjaGUgaXQuCi0gICAgbV9wYWdlVXNlclNoZWV0ID0gQ1NT
U3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKG1fZG9jdW1lbnQsIG1fZG9jdW1lbnQtPnNldHRpbmdz
KCktPnVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKSk7Ci0gICAgbV9wYWdlVXNlclNoZWV0LT5jb250
ZW50cygpLT5zZXRJc1VzZXJTdHlsZVNoZWV0KHRydWUpOwotICAgIG1fcGFnZVVzZXJTaGVldC0+
Y29udGVudHMoKS0+cGFyc2VTdHJpbmcodXNlclNoZWV0VGV4dCk7Ci0gICAgcmV0dXJuIG1fcGFn
ZVVzZXJTaGVldC5nZXQoKTsKKyAgICBtX3BhZ2VVc2VyU3R5bGVTaGVldCA9IENTU1N0eWxlU2hl
ZXQ6OmNyZWF0ZUlubGluZShtX2RvY3VtZW50LCBtX2RvY3VtZW50LT5zZXR0aW5ncygpLT51c2Vy
U3R5bGVTaGVldExvY2F0aW9uKCkpOworICAgIG1fcGFnZVVzZXJTdHlsZVNoZWV0LT5jb250ZW50
cygpLT5zZXRJc1VzZXJTdHlsZVNoZWV0KHRydWUpOworICAgIG1fcGFnZVVzZXJTdHlsZVNoZWV0
LT5jb250ZW50cygpLT5wYXJzZVN0cmluZyh1c2VyU2hlZXRUZXh0KTsKKyAgICByZXR1cm4gbV9w
YWdlVXNlclN0eWxlU2hlZXQuZ2V0KCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbjo6Y2xlYXJQYWdlVXNlclNoZWV0KCkKK3ZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbjo6Y2xlYXJQYWdlVXNlclN0eWxlU2hlZXQoKQogewotICAgIGlmIChtX3BhZ2VVc2Vy
U2hlZXQpIHsKLSAgICAgICAgbV9wYWdlVXNlclNoZWV0ID0gMDsKKyAgICBpZiAobV9wYWdlVXNl
clN0eWxlU2hlZXQpIHsKKyAgICAgICAgbV9wYWdlVXNlclN0eWxlU2hlZXQgPSAwOwogICAgICAg
ICBtX2RvY3VtZW50LT5zdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKICAg
ICB9CiB9CiAKLXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlUGFnZVVz
ZXJTaGVldCgpCit2b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZVBhZ2VV
c2VyU3R5bGVTaGVldCgpCiB7Ci0gICAgY2xlYXJQYWdlVXNlclNoZWV0KCk7Ci0gICAgaWYgKHBh
Z2VVc2VyU2hlZXQoKSkKKyAgICBjbGVhclBhZ2VVc2VyU3R5bGVTaGVldCgpOworICAgIGlmIChw
YWdlVXNlclN0eWxlU2hlZXQoKSkKICAgICAgICAgbV9kb2N1bWVudC0+c3R5bGVSZXNvbHZlckNo
YW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9CiAKQEAgLTM1Miw2ICszNTIsOCBAQCB2
b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlCiB2b2lkIERvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb246OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKFVwZGF0ZUZsYWcgdXBk
YXRlRmxhZywgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBuZXdTdHlsZXNo
ZWV0cywgU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUmIHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlLCBi
b29sJiByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYykKIHsKICAgICBzdHlsZVJlc29sdmVyVXBkYXRl
VHlwZSA9IFJlY29uc3RydWN0OworICAgIGlmIChyZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYykKKyAg
ICAgICAgcmV0dXJuOwogICAgIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjID0gdHJ1ZTsKICAgICAK
ICAgICAvLyBTdHlsZXNoZWV0cyBvZiA8c3R5bGU+IGVsZW1lbnRzIHRoYXQgQGltcG9ydCBzdHls
ZXNoZWV0cyBhcmUgYWN0aXZlIGJ1dCBsb2FkaW5nLiBXZSBuZWVkIHRvIHRyaWdnZXIgYSBmdWxs
IHJlY2FsYyB3aGVuIHN1Y2ggbG9hZHMgYXJlIGRvbmUuCkBAIC00MjgsNyArNDMwLDcgQEAgc3Rh
dGljIHZvaWQgZmlsdGVyRW5hYmxlZENTU1N0eWxlU2hlZXRzKAogICAgIH0KIH0KIAotc3RhdGlj
IHZvaWQgY29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyhWZWN0
b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0cywgRG9jdW1lbnQqIGRvY3VtZW50KQor
c3RhdGljIHZvaWQgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyhW
ZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0cywgRG9jdW1lbnQqIGRvY3VtZW50
KQogewogICAgIEhUTUxJRnJhbWVFbGVtZW50KiBzZWFtbGVzc1BhcmVudElGcmFtZSA9IGRvY3Vt
ZW50LT5zZWFtbGVzc1BhcmVudElGcmFtZSgpOwogICAgIGlmICghc2VhbWxlc3NQYXJlbnRJRnJh
bWUpCkBAIC00MzYsNiArNDM4LDIzIEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RBY3RpdmVDU1NTdHls
ZVNoZWV0c0YKICAgICBzaGVldHMuYXBwZW5kKHNlYW1sZXNzUGFyZW50SUZyYW1lLT5kb2N1bWVu
dCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVBdXRob3JTdHlsZVNoZWV0cygpKTsK
IH0KIAordm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVTdHlsZVJlc29s
dmVyKFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIHVwZGF0ZVR5cGUsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4gPiYgYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMpCit7CisgICAgaWYg
KHVwZGF0ZVR5cGUgPT0gUmVjb25zdHJ1Y3QpIHsKKyAgICAgICAgbV9kb2N1bWVudC0+Y2xlYXJT
dHlsZVJlc29sdmVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgU3R5bGVSZXNvbHZl
ciogc3R5bGVSZXNvbHZlciA9IG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXIoKTsKKyAgICBpZiAo
dXBkYXRlVHlwZSA9PSBSZXNldCkgeworICAgICAgICBzdHlsZVJlc29sdmVyLT5yZXNldEF1dGhv
clN0eWxlKCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRz
KDAsIGFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NF
UlQodXBkYXRlVHlwZSA9PSBBZGRpdGl2ZSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPmFwcGVu
ZEF1dGhvclN0eWxlU2hlZXRzKG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuc2l6ZSgpLCBhY3Rp
dmVBdXRob3JTdHlsZVNoZWV0cyk7CisgICAgfQorICAgIHJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7
Cit9CisKIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5
bGVTaGVldHMoVXBkYXRlRmxhZyB1cGRhdGVGbGFnKQogewogICAgIGlmIChtX2RvY3VtZW50LT5p
blN0eWxlUmVjYWxjKCkpIHsKQEAgLTQ1MCwzMyArNDY5LDI4IEBAIGJvb2wgRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXQKICAgICBpZiAoIW1fZG9jdW1lbnQtPnJlbmRlcmVyKCkg
fHwgIW1fZG9jdW1lbnQtPmF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiBhY3RpdmVTdHlsZVNoZWV0czsKLSAgICBjb2xs
ZWN0QWN0aXZlU3R5bGVTaGVldHMoYWN0aXZlU3R5bGVTaGVldHMpOworICAgIFZlY3RvcjxSZWZQ
dHI8U3R5bGVTaGVldD4gPiBkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzOworICAgIGNvbGxlY3RB
Y3RpdmVTdHlsZVNoZWV0cyhkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzKTsKIAotICAgIFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBhY3RpdmVDU1NTdHlsZVNoZWV0czsKLSAgICBhY3Rp
dmVDU1NTdHlsZVNoZWV0cy5hcHBlbmQoaW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpKTsKLSAg
ICBjb2xsZWN0QWN0aXZlQ1NTU3R5bGVTaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKGFjdGl2ZUNT
U1N0eWxlU2hlZXRzLCBtX2RvY3VtZW50KTsKLSAgICBmaWx0ZXJFbmFibGVkQ1NTU3R5bGVTaGVl
dHMoYWN0aXZlQ1NTU3R5bGVTaGVldHMsIGFjdGl2ZVN0eWxlU2hlZXRzKTsKKyAgICBWZWN0b3I8
UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gYWN0aXZlQXV0aG9yU3R5bGVTaGVldHM7CisgICAgYWN0
aXZlQXV0aG9yU3R5bGVTaGVldHMuYXBwZW5kKGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSk7
CisgICAgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyhhY3RpdmVB
dXRob3JTdHlsZVNoZWV0cywgbV9kb2N1bWVudCk7CisgICAgZmlsdGVyRW5hYmxlZENTU1N0eWxl
U2hlZXRzKGFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzLCBkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRz
KTsKKworICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBhY3RpdmVVc2VyU3R5bGVT
aGVldHM7CisgICAgYWN0aXZlVXNlclN0eWxlU2hlZXRzLmFwcGVuZChwYWdlVXNlclN0eWxlU2hl
ZXQoKSk7CisgICAgYWN0aXZlVXNlclN0eWxlU2hlZXRzLmFwcGVuZChpbmplY3RlZFVzZXJTdHls
ZVNoZWV0cygpKTsKKyAgICBhY3RpdmVVc2VyU3R5bGVTaGVldHMuYXBwZW5kKGRvY3VtZW50VXNl
clN0eWxlU2hlZXRzKCkpOwogCiAgICAgU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgc3R5bGVSZXNv
bHZlclVwZGF0ZVR5cGU7Ci0gICAgYm9vbCByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYzsKLSAgICBh
bmFseXplU3R5bGVTaGVldENoYW5nZSh1cGRhdGVGbGFnLCBhY3RpdmVDU1NTdHlsZVNoZWV0cywg
c3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUsIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKKyAgICBi
b29sIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjID0gYWN0aXZlVXNlclN0eWxlU2hlZXRzICE9IG1f
YWN0aXZlVXNlclN0eWxlU2hlZXRzOworICAgIGFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKHVwZGF0
ZUZsYWcsIGFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzLCBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSwg
cmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpOwogCi0gICAgaWYgKHN0eWxlUmVzb2x2ZXJVcGRhdGVU
eXBlID09IFJlY29uc3RydWN0KQotICAgICAgICBtX2RvY3VtZW50LT5jbGVhclN0eWxlUmVzb2x2
ZXIoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9
IG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXIoKTsKLSAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXJV
cGRhdGVUeXBlID09IFJlc2V0KSB7Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5yZXNldEF1
dGhvclN0eWxlKCk7Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5hcHBlbmRBdXRob3JTdHls
ZVNoZWV0cygwLCBhY3RpdmVDU1NTdHlsZVNoZWV0cyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBBU1NFUlQoc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgPT0gQWRkaXRpdmUpOwotICAg
ICAgICAgICAgc3R5bGVSZXNvbHZlci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMobV9hY3RpdmVB
dXRob3JTdHlsZVNoZWV0cy5zaXplKCksIGFjdGl2ZUNTU1N0eWxlU2hlZXRzKTsKLSAgICAgICAg
fQotICAgICAgICByZXNldENTU0ZlYXR1cmVGbGFncygpOwotICAgIH0KLSAgICBtX2FjdGl2ZUF1
dGhvclN0eWxlU2hlZXRzLnN3YXAoYWN0aXZlQ1NTU3R5bGVTaGVldHMpOwotICAgIG1fc3R5bGVT
aGVldHNGb3JTdHlsZVNoZWV0TGlzdC5zd2FwKGFjdGl2ZVN0eWxlU2hlZXRzKTsKKyAgICB1cGRh
dGVTdHlsZVJlc29sdmVyKHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlLCBhY3RpdmVBdXRob3JTdHls
ZVNoZWV0cyk7CisgICAgCisgICAgbV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cy5zd2FwKGFjdGl2
ZUF1dGhvclN0eWxlU2hlZXRzKTsKKyAgICBtX2FjdGl2ZVVzZXJTdHlsZVNoZWV0cy5zd2FwKGFj
dGl2ZVVzZXJTdHlsZVNoZWV0cyk7CisgICAgbV9zdHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0
LnN3YXAoZG9jdW1lbnRBdXRob3JTdHlsZVNoZWV0cyk7CiAKICAgICBtX3VzZXNSZW1Vbml0cyA9
IHN0eWxlU2hlZXRzVXNlUmVtVW5pdHMobV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cyk7CiAgICAg
bV9uZWVkc1VwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzT25TdHlsZVJlY2FsYyA9IGZhbHNlOwpAQCAt
NDg5LDExICs1MDMsMTIgQEAgYm9vbCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRh
dAogdm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpyZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNs
YXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6
RE9NKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3BhZ2VVc2VyU2hlZXQpOworICAgIGluZm8uYWRk
TWVtYmVyKG1fcGFnZVVzZXJTdHlsZVNoZWV0KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2luamVj
dGVkVXNlclN0eWxlU2hlZXRzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2luamVjdGVkQXV0aG9y
U3R5bGVTaGVldHMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fdXNlclN0eWxlU2hlZXRzKTsKICAg
ICBpbmZvLmFkZE1lbWJlcihtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKTsKKyAgICBpbmZvLmFk
ZE1lbWJlcihtX2FjdGl2ZVVzZXJTdHlsZVNoZWV0cyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9z
dHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3N0eWxl
U2hlZXRDYW5kaWRhdGVOb2Rlcyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9wcmVmZXJyZWRTdHls
ZXNoZWV0U2V0TmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDEzNTE0MykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDE3ICs1MywxMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNo
ZWV0PiA+JiBzdHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9z
dHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0OyB9CiAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+ID4mIGFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKCkgY29uc3QgeyByZXR1
cm4gbV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0czsgfQotCi0gICAgQ1NTU3R5bGVTaGVldCogcGFn
ZVVzZXJTaGVldCgpOwotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYg
ZG9jdW1lbnRVc2VyU3R5bGVTaGVldHMoKSBjb25zdCB7IHJldHVybiBtX3VzZXJTdHlsZVNoZWV0
czsgfQotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgaW5qZWN0ZWRV
c2VyU3R5bGVTaGVldHMoKSBjb25zdDsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxl
U2hlZXQ+ID4mIGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSBjb25zdDsKKyAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIGFjdGl2ZVVzZXJTdHlsZVNoZWV0cygpIGNv
bnN0IHsgcmV0dXJuIG1fYWN0aXZlVXNlclN0eWxlU2hlZXRzOyB9CiAKICAgICB2b2lkIGFkZFN0
eWxlU2hlZXRDYW5kaWRhdGVOb2RlKE5vZGUqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAgICAg
dm9pZCByZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShOb2RlKik7CiAKLSAgICB2b2lkIGNs
ZWFyUGFnZVVzZXJTaGVldCgpOwotICAgIHZvaWQgdXBkYXRlUGFnZVVzZXJTaGVldCgpOworICAg
IHZvaWQgY2xlYXJQYWdlVXNlclN0eWxlU2hlZXQoKTsKKyAgICB2b2lkIHVwZGF0ZVBhZ2VVc2Vy
U3R5bGVTaGVldCgpOwogICAgIHZvaWQgaW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hl
KCk7CiAgICAgdm9pZCB1cGRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpIGNvbnN0OwogCkBA
IC0xMTMsMTEgKzEwOSwxOCBAQCBwcml2YXRlOgogICAgICAgICBBZGRpdGl2ZQogICAgIH07CiAg
ICAgdm9pZCBhbmFseXplU3R5bGVTaGVldENoYW5nZShVcGRhdGVGbGFnLCBjb25zdCBWZWN0b3I8
UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIG5ld1N0eWxlc2hlZXRzLCBTdHlsZVJlc29sdmVyVXBk
YXRlVHlwZSYsIGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKKyAgICB2b2lkIHVwZGF0
ZVN0eWxlUmVzb2x2ZXIoU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4gPiYgYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMpOworCisgICAgY29u
c3QgQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTdHlsZVNoZWV0KCkgY29uc3Q7CisgICAgY29uc3Qg
VmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBkb2N1bWVudFVzZXJTdHlsZVNoZWV0cygp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXRzOyB9CisgICAgY29uc3QgVmVjdG9yPFJl
ZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBpbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpIGNvbnN0Owor
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgaW5qZWN0ZWRBdXRob3JT
dHlsZVNoZWV0cygpIGNvbnN0OwogCiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiAKICAgICBW
ZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4gbV9zdHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0
OwogICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBtX2FjdGl2ZUF1dGhvclN0eWxl
U2hlZXRzOworICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBtX2FjdGl2ZVVzZXJT
dHlsZVNoZWV0czsKIAogICAgIC8vIFRyYWNrIHRoZSBudW1iZXIgb2YgY3VycmVudGx5IGxvYWRp
bmcgdG9wLWxldmVsIHN0eWxlc2hlZXRzIG5lZWRlZCBmb3IgcmVuZGVyaW5nLgogICAgIC8vIFNo
ZWV0cyBsb2FkZWQgdXNpbmcgdGhlIEBpbXBvcnQgZGlyZWN0aXZlIGFyZSBub3QgaW5jbHVkZWQg
aW4gdGhpcyBjb3VudC4KQEAgLTEyNSw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIC8vIGVsZW1l
bnRzIGFuZCB3aGVuIGl0IGlzIHNhZmUgdG8gZXhlY3V0ZSBzY3JpcHRzLgogICAgIGludCBtX3Bl
bmRpbmdTdHlsZXNoZWV0czsKIAotICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX3BhZ2VVc2Vy
U2hlZXQ7CisgICAgbXV0YWJsZSBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9wYWdlVXNlclN0eWxl
U2hlZXQ7CiAKICAgICBtdXRhYmxlIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBtX2lu
amVjdGVkVXNlclN0eWxlU2hlZXRzOwogICAgIG11dGFibGUgVmVjdG9yPFJlZlB0cjxDU1NTdHls
ZVNoZWV0PiA+IG1faW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0czsK
</data>
<flag name="commit-queue"
          id="190244"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174966</attachid>
            <date>2012-11-19 06:32:01 -0800</date>
            <delta_ts>2012-11-19 11:01:58 -0800</delta_ts>
            <desc>patch 2</desc>
            <filename>user-stylesheet-refactor-2.patch</filename>
            <type>text/plain</type>
            <size>17965</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTE0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTExLTE5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDb2xsZWN0IHVzZXIgc3R5bGUg
c2hlZXRzIGluIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjY4MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIHVzZXIgc3R5bGVzaGVldCBj
b2xsZWN0aW9uIGxvZ2ljIGZyb20gU3R5bGVSZXNvbHZlciB0byBEb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uLgorICAgICAgICAKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMp
OgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdENTU09NV3JhcHBlcnMpOgorICAgICAgICAqIGNz
cy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp+RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpwYWdl
VXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbjo6Y2xlYXJQYWdlVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlUGFnZVVzZXJTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmFuYWx5emVTdHls
ZVNoZWV0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0
c0Zyb21TZWFtbGVzc1BhcmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6dXBkYXRlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIAorICAgICAgICAg
ICAgRmFjdG9yIHRoZSBTdHlsZVJlc29sdmVyIHVwZGF0aW5nIGNvZGUgdG8gZnVuY3Rpb24uCisK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMpOgorICAgICAgICAKKyAgICAgICAg
ICAgIENvbGxlY3QgdGhlIHVzZXIgc3R5bGUgc2hlZXRzLiBTb21lIHJlbmFtaW5nIGFuZCBvdGhl
ciBtaW5vciByZWZhY3RvcmluZy4KKworICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uOjphY3RpdmVVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAKKyAgICAg
ICAgICAgIEFkZCBhY3RpdmVVc2VyU3R5bGVTaGVldHMgdmVjdG9yIHRoYXQgY29udGFpbnMgYWxs
IHVzZXIgc3R5bGVzaGVldHMgZnJvbSBkaWZmZXJlbnQgc291cmNlcywKKyAgICAgICAgICAgIHNp
bWlsYXIgdG8gYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuCisKKyAgICAgICAgKERvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbjo6ZG9jdW1lbnRVc2VyU3R5bGVTaGVldHMpOgorCiAyMDEyLTExLTE5ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTM1MTExLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAkocmV2aXNpb24gMTM1MTQzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsMTcgKzI5Myw4IEBAIFN0eWxlUmVzb2x2ZXI6OlN0
eWxlUmVzb2x2ZXIoRG9jdW1lbnQqIGQKICAgICAgICAgICAgIGxvYWRGdWxsRGVmYXVsdFN0eWxl
KCk7CiAgICAgfQogCi0gICAgLy8gY29uc3RydWN0IGRvY3VtZW50IHJvb3QgZWxlbWVudCBkZWZh
dWx0IHN0eWxlLiB0aGlzIGlzIG5lZWRlZAotICAgIC8vIHRvIGV2YWx1YXRlIG1lZGlhIHF1ZXJp
ZXMgdGhhdCBjb250YWluIHJlbGF0aXZlIGNvbnN0cmFpbnRzLCBsaWtlICJzY3JlZW4gYW5kICht
YXgtd2lkdGg6IDEwZW0pIgotICAgIC8vIFRoaXMgaXMgaGVyZSBpbnN0ZWFkIG9mIGNvbnN0cnVj
dG9yLCBiZWNhdXNlIHdoZW4gY29uc3RydWN0b3IgaXMgcnVuLAotICAgIC8vIGRvY3VtZW50IGRv
ZXNuJ3QgaGF2ZSBkb2N1bWVudEVsZW1lbnQKLSAgICAvLyBOT1RFOiB0aGlzIGFzc3VtZXMgdGhh
dCBlbGVtZW50IHRoYXQgZ2V0cyBwYXNzZWQgdG8gc3R5bGVGb3JFbGVtZW50IC1jYWxsCi0gICAg
Ly8gaXMgYWx3YXlzIGZyb20gdGhlIGRvY3VtZW50IHRoYXQgb3ducyB0aGUgc3R5bGUgc2VsZWN0
b3IKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBkb2N1bWVudC0+dmlldygpOwotICAgIGlmICh2aWV3
KQotICAgICAgICBtX21lZGl1bSA9IGFkb3B0UHRyKG5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKHZp
ZXctPm1lZGlhVHlwZSgpKSk7Ci0gICAgZWxzZQotICAgICAgICBtX21lZGl1bSA9IGFkb3B0UHRy
KG5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKCJhbGwiKSk7CisgICAgbV9tZWRpdW0gPSBhZG9wdFB0
cihuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcih2aWV3ID8gdmlldy0+bWVkaWFUeXBlKCkgOiAiYWxs
IikpOwogCiAgICAgaWYgKHJvb3QpCiAgICAgICAgIG1fcm9vdERlZmF1bHRTdHlsZSA9IHN0eWxl
Rm9yRWxlbWVudChyb290LCAwLCBEaXNhbGxvd1N0eWxlU2hhcmluZywgTWF0Y2hPbmx5VXNlckFn
ZW50UnVsZXMpOwpAQCAtMzEzLDE1ICszMDQsNiBAQCBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29s
dmVyKERvY3VtZW50KiBkCiAKICAgICByZXNldEF1dGhvclN0eWxlKCk7CiAKLSAgICBEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uKiBzdHlsZVNoZWV0Q29sbGVjdGlvbiA9IGRvY3VtZW50LT5z
dHlsZVNoZWV0Q29sbGVjdGlvbigpOwotICAgIE93blB0cjxSdWxlU2V0PiB0ZW1wVXNlclN0eWxl
ID0gUnVsZVNldDo6Y3JlYXRlKCk7Ci0gICAgaWYgKENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hl
ZXQgPSBzdHlsZVNoZWV0Q29sbGVjdGlvbi0+cGFnZVVzZXJTaGVldCgpKQotICAgICAgICB0ZW1w
VXNlclN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChwYWdlVXNlclNoZWV0LT5jb250ZW50cygpLCAq
bV9tZWRpdW0sIHRoaXMpOwotICAgIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoc3R5
bGVTaGVldENvbGxlY3Rpb24tPmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCksICp0ZW1wVXNlclN0
eWxlKTsKLSAgICBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKHN0eWxlU2hlZXRDb2xs
ZWN0aW9uLT5kb2N1bWVudFVzZXJTdHlsZVNoZWV0cygpLCAqdGVtcFVzZXJTdHlsZSk7Ci0gICAg
aWYgKHRlbXBVc2VyU3R5bGUtPm1fcnVsZUNvdW50ID4gMCB8fCB0ZW1wVXNlclN0eWxlLT5tX3Bh
Z2VSdWxlcy5zaXplKCkgPiAwKQotICAgICAgICBtX3VzZXJTdHlsZSA9IHRlbXBVc2VyU3R5bGUu
cmVsZWFzZSgpOwotCiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICBpZiAoZG9jdW1lbnQtPnN2
Z0V4dGVuc2lvbnMoKSkgewogICAgICAgICBjb25zdCBIYXNoU2V0PFNWR0ZvbnRGYWNlRWxlbWVu
dCo+JiBzdmdGb250RmFjZUVsZW1lbnRzID0gZG9jdW1lbnQtPnN2Z0V4dGVuc2lvbnMoKS0+c3Zn
Rm9udEZhY2VFbGVtZW50cygpOwpAQCAtMzMxLDE1ICszMTMsMjAgQEAgU3R5bGVSZXNvbHZlcjo6
U3R5bGVSZXNvbHZlcihEb2N1bWVudCogZAogICAgIH0KICNlbmRpZgogCisgICAgRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbiogc3R5bGVTaGVldENvbGxlY3Rpb24gPSBkb2N1bWVudC0+c3R5
bGVTaGVldENvbGxlY3Rpb24oKTsKKyAgICBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRz
KHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5hY3RpdmVVc2VyU3R5bGVTaGVldHMoKSk7CiAgICAgYXBw
ZW5kQXV0aG9yU3R5bGVTaGVldHMoMCwgc3R5bGVTaGVldENvbGxlY3Rpb24tPmFjdGl2ZUF1dGhv
clN0eWxlU2hlZXRzKCkpOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RSdWxlc0Zy
b21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiB1
c2VyU2hlZXRzLCBSdWxlU2V0JiB1c2VyU3R5bGUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0PiA+JiB1c2VyU2hlZXRzKQogeworICAgIE93blB0cjxSdWxlU2V0PiB1c2VyU3R5bGVSdWxl
U2V0ID0gUnVsZVNldDo6Y3JlYXRlKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVz
ZXJTaGVldHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKHVzZXJTaGVldHNbaV0tPmNv
bnRlbnRzKCktPmlzVXNlclN0eWxlU2hlZXQoKSk7Ci0gICAgICAgIHVzZXJTdHlsZS5hZGRSdWxl
c0Zyb21TaGVldCh1c2VyU2hlZXRzW2ldLT5jb250ZW50cygpLCAqbV9tZWRpdW0sIHRoaXMpOwor
ICAgICAgICB1c2VyU3R5bGVSdWxlU2V0LT5hZGRSdWxlc0Zyb21TaGVldCh1c2VyU2hlZXRzW2ld
LT5jb250ZW50cygpLCAqbV9tZWRpdW0sIHRoaXMpOwogICAgIH0KKyAgICBpZiAodXNlclN0eWxl
UnVsZVNldC0+bV9ydWxlQ291bnQgPiAwIHx8IHVzZXJTdHlsZVJ1bGVTZXQtPm1fcGFnZVJ1bGVz
LnNpemUoKSA+IDApCisgICAgICAgIG1fdXNlclN0eWxlID0gdXNlclN0eWxlUnVsZVNldC5yZWxl
YXNlKCk7CiB9CiAKIHN0YXRpYyBQYXNzT3duUHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0
IFZlY3RvcjxSdWxlRmVhdHVyZT4mIHJ1bGVzKQpAQCAtMjU5MCw5ICsyNTc3LDcgQEAgc3RhdGlj
IHZvaWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcAogc3RhdGljIHZvaWQgY29sbGVjdENT
U09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiB3
cmFwcGVyTWFwLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKiBzdHlsZVNoZWV0Q29sbGVj
dGlvbikKIHsKICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdHlsZVNoZWV0
Q29sbGVjdGlvbi0+YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoKSk7Ci0gICAgY29sbGVjdENTU09N
V3JhcHBlcnMod3JhcHBlck1hcCwgc3R5bGVTaGVldENvbGxlY3Rpb24tPnBhZ2VVc2VyU2hlZXQo
KSk7Ci0gICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3R5bGVTaGVldENvbGxl
Y3Rpb24tPmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCkpOwotICAgIGNvbGxlY3RDU1NPTVdyYXBw
ZXJzKHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5kb2N1bWVudFVzZXJTdHlsZVNo
ZWV0cygpKTsKKyAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdHlsZVNoZWV0
Q29sbGVjdGlvbi0+YWN0aXZlVXNlclN0eWxlU2hlZXRzKCkpOwogfQogCiBDU1NTdHlsZVJ1bGUq
IFN0eWxlUmVzb2x2ZXI6OmVuc3VyZUZ1bGxDU1NPTVdyYXBwZXJGb3JJbnNwZWN0b3IoU3R5bGVS
dWxlKiBydWxlKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCShyZXZpc2lvbiAx
MzUxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MjEsNyArNDIxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgUmVu
ZGVyU3R5bGUqIHNfc3R5bGVOb3RZZXRBdmFpbGFibGU7CiAKLSAgICB2b2lkIGNvbGxlY3RSdWxl
c0Zyb21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+
JiwgUnVsZVNldCYgdXNlclN0eWxlKTsKKyAgICB2b2lkIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5
bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+Jik7CiAKICAgICB2
b2lkIGNhY2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDEzNTE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5Nyw3ICs3OTcsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRD
b21wYXRpYmlsaXR5TW9kZShDb21wCiAgICAgc2VsZWN0b3JRdWVyeUNhY2hlKCktPmludmFsaWRh
dGUoKTsKICAgICBpZiAoaW5RdWlya3NNb2RlKCkgIT0gd2FzSW5RdWlya3NNb2RlKSB7CiAgICAg
ICAgIC8vIEFsbCB1c2VyIHN0eWxlc2hlZXRzIGhhdmUgdG8gcmVwYXJzZSB1c2luZyB0aGUgZGlm
ZmVyZW50IG1vZGUuCi0gICAgICAgIG1fc3R5bGVTaGVldENvbGxlY3Rpb24tPmNsZWFyUGFnZVVz
ZXJTaGVldCgpOworICAgICAgICBtX3N0eWxlU2hlZXRDb2xsZWN0aW9uLT5jbGVhclBhZ2VVc2Vy
U3R5bGVTaGVldCgpOwogICAgICAgICBtX3N0eWxlU2hlZXRDb2xsZWN0aW9uLT5pbnZhbGlkYXRl
SW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCShyZXZpc2lv
biAxMzUxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDggQEAgRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6RG9jdW1lbnRTdAogCiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
Ojp+RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbigpCiB7Ci0gICAgaWYgKG1fcGFnZVVzZXJT
aGVldCkKLSAgICAgICAgbV9wYWdlVXNlclNoZWV0LT5jbGVhck93bmVyTm9kZSgpOworICAgIGlm
IChtX3BhZ2VVc2VyU3R5bGVTaGVldCkKKyAgICAgICAgbV9wYWdlVXNlclN0eWxlU2hlZXQtPmNs
ZWFyT3duZXJOb2RlKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW5qZWN0ZWRV
c2VyU3R5bGVTaGVldHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1faW5qZWN0ZWRVc2VyU3R5bGVT
aGVldHNbaV0tPmNsZWFyT3duZXJOb2RlKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1faW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cy5zaXplKCk7ICsraSkKQEAgLTEwMCwxMCArMTAw
LDEwIEBAIHZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cmVzZXQKICAgICBtX3Vz
ZXNCZWZvcmVBZnRlclJ1bGVzID0gc3R5bGVSZXNvbHZlci0+dXNlc0JlZm9yZUFmdGVyUnVsZXMo
KTsKIH0KIAotQ1NTU3R5bGVTaGVldCogRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cGFn
ZVVzZXJTaGVldCgpCitDU1NTdHlsZVNoZWV0KiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
OjpwYWdlVXNlclN0eWxlU2hlZXQoKQogewotICAgIGlmIChtX3BhZ2VVc2VyU2hlZXQpCi0gICAg
ICAgIHJldHVybiBtX3BhZ2VVc2VyU2hlZXQuZ2V0KCk7CisgICAgaWYgKG1fcGFnZVVzZXJTdHls
ZVNoZWV0KQorICAgICAgICByZXR1cm4gbV9wYWdlVXNlclN0eWxlU2hlZXQuZ2V0KCk7CiAgICAg
CiAgICAgUGFnZSogb3duaW5nUGFnZSA9IG1fZG9jdW1lbnQtPnBhZ2UoKTsKICAgICBpZiAoIW93
bmluZ1BhZ2UpCkBAIC0xMTQsMjQgKzExNCwyNCBAQCBDU1NTdHlsZVNoZWV0KiBEb2N1bWVudFN0
eWxlU2hlZXRDb2xsZWN0CiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIC8vIFBhcnNlIHRo
ZSBzaGVldCBhbmQgY2FjaGUgaXQuCi0gICAgbV9wYWdlVXNlclNoZWV0ID0gQ1NTU3R5bGVTaGVl
dDo6Y3JlYXRlSW5saW5lKG1fZG9jdW1lbnQsIG1fZG9jdW1lbnQtPnNldHRpbmdzKCktPnVzZXJT
dHlsZVNoZWV0TG9jYXRpb24oKSk7Ci0gICAgbV9wYWdlVXNlclNoZWV0LT5jb250ZW50cygpLT5z
ZXRJc1VzZXJTdHlsZVNoZWV0KHRydWUpOwotICAgIG1fcGFnZVVzZXJTaGVldC0+Y29udGVudHMo
KS0+cGFyc2VTdHJpbmcodXNlclNoZWV0VGV4dCk7Ci0gICAgcmV0dXJuIG1fcGFnZVVzZXJTaGVl
dC5nZXQoKTsKKyAgICBtX3BhZ2VVc2VyU3R5bGVTaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0
ZUlubGluZShtX2RvY3VtZW50LCBtX2RvY3VtZW50LT5zZXR0aW5ncygpLT51c2VyU3R5bGVTaGVl
dExvY2F0aW9uKCkpOworICAgIG1fcGFnZVVzZXJTdHlsZVNoZWV0LT5jb250ZW50cygpLT5zZXRJ
c1VzZXJTdHlsZVNoZWV0KHRydWUpOworICAgIG1fcGFnZVVzZXJTdHlsZVNoZWV0LT5jb250ZW50
cygpLT5wYXJzZVN0cmluZyh1c2VyU2hlZXRUZXh0KTsKKyAgICByZXR1cm4gbV9wYWdlVXNlclN0
eWxlU2hlZXQuZ2V0KCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6
Y2xlYXJQYWdlVXNlclNoZWV0KCkKK3ZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6
Y2xlYXJQYWdlVXNlclN0eWxlU2hlZXQoKQogewotICAgIGlmIChtX3BhZ2VVc2VyU2hlZXQpIHsK
LSAgICAgICAgbV9wYWdlVXNlclNoZWV0ID0gMDsKKyAgICBpZiAobV9wYWdlVXNlclN0eWxlU2hl
ZXQpIHsKKyAgICAgICAgbV9wYWdlVXNlclN0eWxlU2hlZXQgPSAwOwogICAgICAgICBtX2RvY3Vt
ZW50LT5zdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKICAgICB9CiB9CiAK
LXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlUGFnZVVzZXJTaGVldCgp
Cit2b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZVBhZ2VVc2VyU3R5bGVT
aGVldCgpCiB7Ci0gICAgY2xlYXJQYWdlVXNlclNoZWV0KCk7Ci0gICAgaWYgKHBhZ2VVc2VyU2hl
ZXQoKSkKKyAgICBjbGVhclBhZ2VVc2VyU3R5bGVTaGVldCgpOworICAgIGlmIChwYWdlVXNlclN0
eWxlU2hlZXQoKSkKICAgICAgICAgbV9kb2N1bWVudC0+c3R5bGVSZXNvbHZlckNoYW5nZWQoUmVj
YWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9CiAKQEAgLTM1Miw2ICszNTIsOCBAQCB2b2lkIERvY3Vt
ZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlCiB2b2lkIERvY3VtZW50U3R5bGVTaGVldENv
bGxlY3Rpb246OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZywg
Y29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBuZXdTdHlsZXNoZWV0cywgU3R5
bGVSZXNvbHZlclVwZGF0ZVR5cGUmIHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlLCBib29sJiByZXF1
aXJlc0Z1bGxTdHlsZVJlY2FsYykKIHsKICAgICBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSA9IFJl
Y29uc3RydWN0OworICAgIGlmIChyZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYykKKyAgICAgICAgcmV0
dXJuOwogICAgIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjID0gdHJ1ZTsKICAgICAKICAgICAvLyBT
dHlsZXNoZWV0cyBvZiA8c3R5bGU+IGVsZW1lbnRzIHRoYXQgQGltcG9ydCBzdHlsZXNoZWV0cyBh
cmUgYWN0aXZlIGJ1dCBsb2FkaW5nLiBXZSBuZWVkIHRvIHRyaWdnZXIgYSBmdWxsIHJlY2FsYyB3
aGVuIHN1Y2ggbG9hZHMgYXJlIGRvbmUuCkBAIC00MjgsNyArNDMwLDcgQEAgc3RhdGljIHZvaWQg
ZmlsdGVyRW5hYmxlZENTU1N0eWxlU2hlZXRzKAogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgY29s
bGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyhWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0cywgRG9jdW1lbnQqIGRvY3VtZW50KQorc3RhdGljIHZv
aWQgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyhWZWN0b3I8UmVm
UHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0cywgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAg
IEhUTUxJRnJhbWVFbGVtZW50KiBzZWFtbGVzc1BhcmVudElGcmFtZSA9IGRvY3VtZW50LT5zZWFt
bGVzc1BhcmVudElGcmFtZSgpOwogICAgIGlmICghc2VhbWxlc3NQYXJlbnRJRnJhbWUpCkBAIC00
MzYsNiArNDM4LDIzIEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RBY3RpdmVDU1NTdHlsZVNoZWV0c0YK
ICAgICBzaGVldHMuYXBwZW5kKHNlYW1sZXNzUGFyZW50SUZyYW1lLT5kb2N1bWVudCgpLT5zdHls
ZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVBdXRob3JTdHlsZVNoZWV0cygpKTsKIH0KIAordm9p
ZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVTdHlsZVJlc29sdmVyKFN0eWxl
UmVzb2x2ZXJVcGRhdGVUeXBlIHVwZGF0ZVR5cGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5
bGVTaGVldD4gPiYgYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMpCit7CisgICAgaWYgKHVwZGF0ZVR5
cGUgPT0gUmVjb25zdHJ1Y3QpIHsKKyAgICAgICAgbV9kb2N1bWVudC0+Y2xlYXJTdHlsZVJlc29s
dmVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgU3R5bGVSZXNvbHZlciogc3R5bGVS
ZXNvbHZlciA9IG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXIoKTsKKyAgICBpZiAodXBkYXRlVHlw
ZSA9PSBSZXNldCkgeworICAgICAgICBzdHlsZVJlc29sdmVyLT5yZXNldEF1dGhvclN0eWxlKCk7
CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKDAsIGFjdGl2
ZUF1dGhvclN0eWxlU2hlZXRzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQodXBkYXRl
VHlwZSA9PSBBZGRpdGl2ZSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0
eWxlU2hlZXRzKG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuc2l6ZSgpLCBhY3RpdmVBdXRob3JT
dHlsZVNoZWV0cyk7CisgICAgfQorICAgIHJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7Cit9CisKIGJv
b2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMo
VXBkYXRlRmxhZyB1cGRhdGVGbGFnKQogewogICAgIGlmIChtX2RvY3VtZW50LT5pblN0eWxlUmVj
YWxjKCkpIHsKQEAgLTQ1MCwzMyArNDY5LDI4IEBAIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbjo6dXBkYXQKICAgICBpZiAoIW1fZG9jdW1lbnQtPnJlbmRlcmVyKCkgfHwgIW1fZG9j
dW1lbnQtPmF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZlY3RvcjxS
ZWZQdHI8U3R5bGVTaGVldD4gPiBhY3RpdmVTdHlsZVNoZWV0czsKLSAgICBjb2xsZWN0QWN0aXZl
U3R5bGVTaGVldHMoYWN0aXZlU3R5bGVTaGVldHMpOworICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVT
aGVldD4gPiBkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzOworICAgIGNvbGxlY3RBY3RpdmVTdHls
ZVNoZWV0cyhkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8
Q1NTU3R5bGVTaGVldD4gPiBhY3RpdmVDU1NTdHlsZVNoZWV0czsKLSAgICBhY3RpdmVDU1NTdHls
ZVNoZWV0cy5hcHBlbmQoaW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpKTsKLSAgICBjb2xsZWN0
QWN0aXZlQ1NTU3R5bGVTaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKGFjdGl2ZUNTU1N0eWxlU2hl
ZXRzLCBtX2RvY3VtZW50KTsKLSAgICBmaWx0ZXJFbmFibGVkQ1NTU3R5bGVTaGVldHMoYWN0aXZl
Q1NTU3R5bGVTaGVldHMsIGFjdGl2ZVN0eWxlU2hlZXRzKTsKKyAgICBWZWN0b3I8UmVmUHRyPENT
U1N0eWxlU2hlZXQ+ID4gYWN0aXZlQXV0aG9yU3R5bGVTaGVldHM7CisgICAgYWN0aXZlQXV0aG9y
U3R5bGVTaGVldHMuYXBwZW5kKGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSk7CisgICAgY29s
bGVjdEFjdGl2ZVN0eWxlU2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyhhY3RpdmVBdXRob3JTdHls
ZVNoZWV0cywgbV9kb2N1bWVudCk7CisgICAgZmlsdGVyRW5hYmxlZENTU1N0eWxlU2hlZXRzKGFj
dGl2ZUF1dGhvclN0eWxlU2hlZXRzLCBkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzKTsKKworICAg
IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBhY3RpdmVVc2VyU3R5bGVTaGVldHM7Cisg
ICAgYWN0aXZlVXNlclN0eWxlU2hlZXRzLmFwcGVuZChwYWdlVXNlclN0eWxlU2hlZXQoKSk7Cisg
ICAgYWN0aXZlVXNlclN0eWxlU2hlZXRzLmFwcGVuZChpbmplY3RlZFVzZXJTdHlsZVNoZWV0cygp
KTsKKyAgICBhY3RpdmVVc2VyU3R5bGVTaGVldHMuYXBwZW5kKGRvY3VtZW50VXNlclN0eWxlU2hl
ZXRzKCkpOwogCiAgICAgU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgc3R5bGVSZXNvbHZlclVwZGF0
ZVR5cGU7Ci0gICAgYm9vbCByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYzsKLSAgICBhbmFseXplU3R5
bGVTaGVldENoYW5nZSh1cGRhdGVGbGFnLCBhY3RpdmVDU1NTdHlsZVNoZWV0cywgc3R5bGVSZXNv
bHZlclVwZGF0ZVR5cGUsIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKKyAgICBib29sIHJlcXVp
cmVzRnVsbFN0eWxlUmVjYWxjID0gYWN0aXZlVXNlclN0eWxlU2hlZXRzICE9IG1fYWN0aXZlVXNl
clN0eWxlU2hlZXRzOworICAgIGFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKHVwZGF0ZUZsYWcsIGFj
dGl2ZUF1dGhvclN0eWxlU2hlZXRzLCBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSwgcmVxdWlyZXNG
dWxsU3R5bGVSZWNhbGMpOwogCi0gICAgaWYgKHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlID09IFJl
Y29uc3RydWN0KQotICAgICAgICBtX2RvY3VtZW50LT5jbGVhclN0eWxlUmVzb2x2ZXIoKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IG1fZG9jdW1l
bnQtPnN0eWxlUmVzb2x2ZXIoKTsKLSAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBl
ID09IFJlc2V0KSB7Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5yZXNldEF1dGhvclN0eWxl
KCk7Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5hcHBlbmRBdXRob3JTdHlsZVNoZWV0cygw
LCBhY3RpdmVDU1NTdHlsZVNoZWV0cyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBB
U1NFUlQoc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgPT0gQWRkaXRpdmUpOwotICAgICAgICAgICAg
c3R5bGVSZXNvbHZlci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMobV9hY3RpdmVBdXRob3JTdHls
ZVNoZWV0cy5zaXplKCksIGFjdGl2ZUNTU1N0eWxlU2hlZXRzKTsKLSAgICAgICAgfQotICAgICAg
ICByZXNldENTU0ZlYXR1cmVGbGFncygpOwotICAgIH0KLSAgICBtX2FjdGl2ZUF1dGhvclN0eWxl
U2hlZXRzLnN3YXAoYWN0aXZlQ1NTU3R5bGVTaGVldHMpOwotICAgIG1fc3R5bGVTaGVldHNGb3JT
dHlsZVNoZWV0TGlzdC5zd2FwKGFjdGl2ZVN0eWxlU2hlZXRzKTsKKyAgICB1cGRhdGVTdHlsZVJl
c29sdmVyKHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlLCBhY3RpdmVBdXRob3JTdHlsZVNoZWV0cyk7
CisgICAgCisgICAgbV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cy5zd2FwKGFjdGl2ZUF1dGhvclN0
eWxlU2hlZXRzKTsKKyAgICBtX2FjdGl2ZVVzZXJTdHlsZVNoZWV0cy5zd2FwKGFjdGl2ZVVzZXJT
dHlsZVNoZWV0cyk7CisgICAgbV9zdHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0LnN3YXAoZG9j
dW1lbnRBdXRob3JTdHlsZVNoZWV0cyk7CiAKICAgICBtX3VzZXNSZW1Vbml0cyA9IHN0eWxlU2hl
ZXRzVXNlUmVtVW5pdHMobV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cyk7CiAgICAgbV9uZWVkc1Vw
ZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzT25TdHlsZVJlY2FsYyA9IGZhbHNlOwpAQCAtNDg5LDExICs1
MDMsMTIgQEAgYm9vbCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdAogdm9pZCBE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKLSAg
ICBpbmZvLmFkZE1lbWJlcihtX3BhZ2VVc2VyU2hlZXQpOworICAgIGluZm8uYWRkTWVtYmVyKG1f
cGFnZVVzZXJTdHlsZVNoZWV0KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2luamVjdGVkVXNlclN0
eWxlU2hlZXRzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVl
dHMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fdXNlclN0eWxlU2hlZXRzKTsKICAgICBpbmZvLmFk
ZE1lbWJlcihtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKTsKKyAgICBpbmZvLmFkZE1lbWJlciht
X2FjdGl2ZVVzZXJTdHlsZVNoZWV0cyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9zdHlsZVNoZWV0
c0ZvclN0eWxlU2hlZXRMaXN0KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3N0eWxlU2hlZXRDYW5k
aWRhdGVOb2Rlcyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0
TmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDEzNTE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDE3ICs1
MywxMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBz
dHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVNoZWV0
c0ZvclN0eWxlU2hlZXRMaXN0OyB9CiAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxl
U2hlZXQ+ID4mIGFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rp
dmVBdXRob3JTdHlsZVNoZWV0czsgfQotCi0gICAgQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVl
dCgpOwotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgZG9jdW1lbnRV
c2VyU3R5bGVTaGVldHMoKSBjb25zdCB7IHJldHVybiBtX3VzZXJTdHlsZVNoZWV0czsgfQotICAg
IGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgaW5qZWN0ZWRVc2VyU3R5bGVT
aGVldHMoKSBjb25zdDsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4m
IGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8UmVm
UHRyPENTU1N0eWxlU2hlZXQ+ID4mIGFjdGl2ZVVzZXJTdHlsZVNoZWV0cygpIGNvbnN0IHsgcmV0
dXJuIG1fYWN0aXZlVXNlclN0eWxlU2hlZXRzOyB9CiAKICAgICB2b2lkIGFkZFN0eWxlU2hlZXRD
YW5kaWRhdGVOb2RlKE5vZGUqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAgICAgdm9pZCByZW1v
dmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShOb2RlKik7CiAKLSAgICB2b2lkIGNsZWFyUGFnZVVz
ZXJTaGVldCgpOwotICAgIHZvaWQgdXBkYXRlUGFnZVVzZXJTaGVldCgpOworICAgIHZvaWQgY2xl
YXJQYWdlVXNlclN0eWxlU2hlZXQoKTsKKyAgICB2b2lkIHVwZGF0ZVBhZ2VVc2VyU3R5bGVTaGVl
dCgpOwogICAgIHZvaWQgaW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlKCk7CiAgICAg
dm9pZCB1cGRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpIGNvbnN0OwogCkBAIC0xMTMsMTEg
KzEwOSwxOCBAQCBwcml2YXRlOgogICAgICAgICBBZGRpdGl2ZQogICAgIH07CiAgICAgdm9pZCBh
bmFseXplU3R5bGVTaGVldENoYW5nZShVcGRhdGVGbGFnLCBjb25zdCBWZWN0b3I8UmVmUHRyPENT
U1N0eWxlU2hlZXQ+ID4mIG5ld1N0eWxlc2hlZXRzLCBTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSYs
IGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKKyAgICB2b2lkIHVwZGF0ZVN0eWxlUmVz
b2x2ZXIoU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5
bGVTaGVldD4gPiYgYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMpOworCisgICAgQ1NTU3R5bGVTaGVl
dCogcGFnZVVzZXJTdHlsZVNoZWV0KCk7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHls
ZVNoZWV0PiA+JiBkb2N1bWVudFVzZXJTdHlsZVNoZWV0cygpIGNvbnN0IHsgcmV0dXJuIG1fdXNl
clN0eWxlU2hlZXRzOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+
JiBpbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpIGNvbnN0OworICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4gPiYgaW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpIGNvbnN0Owog
CiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiAKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlU2hl
ZXQ+ID4gbV9zdHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8
Q1NTU3R5bGVTaGVldD4gPiBtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzOworICAgIFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBtX2FjdGl2ZVVzZXJTdHlsZVNoZWV0czsKIAogICAgIC8v
IFRyYWNrIHRoZSBudW1iZXIgb2YgY3VycmVudGx5IGxvYWRpbmcgdG9wLWxldmVsIHN0eWxlc2hl
ZXRzIG5lZWRlZCBmb3IgcmVuZGVyaW5nLgogICAgIC8vIFNoZWV0cyBsb2FkZWQgdXNpbmcgdGhl
IEBpbXBvcnQgZGlyZWN0aXZlIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhpcyBjb3VudC4KQEAgLTEy
NSw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIC8vIGVsZW1lbnRzIGFuZCB3aGVuIGl0IGlzIHNh
ZmUgdG8gZXhlY3V0ZSBzY3JpcHRzLgogICAgIGludCBtX3BlbmRpbmdTdHlsZXNoZWV0czsKIAot
ICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX3BhZ2VVc2VyU2hlZXQ7CisgICAgUmVmUHRyPENT
U1N0eWxlU2hlZXQ+IG1fcGFnZVVzZXJTdHlsZVNoZWV0OwogCiAgICAgbXV0YWJsZSBWZWN0b3I8
UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gbV9pbmplY3RlZFVzZXJTdHlsZVNoZWV0czsKICAgICBt
dXRhYmxlIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBtX2luamVjdGVkQXV0aG9yU3R5
bGVTaGVldHM7Cg==
</data>
<flag name="commit-queue"
          id="190247"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175006</attachid>
            <date>2012-11-19 11:01:58 -0800</date>
            <delta_ts>2012-11-20 03:11:10 -0800</delta_ts>
            <desc>patch 3</desc>
            <filename>user-stylesheet-refactor-3.patch</filename>
            <type>text/plain</type>
            <size>18636</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTE0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTExLTE5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDb2xsZWN0IHVzZXIgc3R5bGUg
c2hlZXRzIGluIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjY4MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIHVzZXIgc3R5bGVzaGVldCBj
b2xsZWN0aW9uIGxvZ2ljIGZyb20gU3R5bGVSZXNvbHZlciB0byBEb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uLgorICAgICAgICAKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMp
OgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdENTU09NV3JhcHBlcnMpOgorICAgICAgICAqIGNz
cy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp+RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpwYWdl
VXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbjo6Y2xlYXJQYWdlVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlUGFnZVVzZXJTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmFuYWx5emVTdHls
ZVNoZWV0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0
c0Zyb21TZWFtbGVzc1BhcmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6dXBkYXRlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIAorICAgICAgICAg
ICAgRmFjdG9yIHRoZSBTdHlsZVJlc29sdmVyIHVwZGF0aW5nIGNvZGUgdG8gZnVuY3Rpb24uCisK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMpOgorICAgICAgICAKKyAgICAgICAg
ICAgIENvbGxlY3QgdGhlIHVzZXIgc3R5bGUgc2hlZXRzLiBTb21lIHJlbmFtaW5nIGFuZCBvdGhl
ciBtaW5vciByZWZhY3RvcmluZy4KKworICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uOjphY3RpdmVVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAKKyAgICAg
ICAgICAgIEFkZCBhY3RpdmVVc2VyU3R5bGVTaGVldHMgdmVjdG9yIHRoYXQgY29udGFpbnMgYWxs
IHVzZXIgc3R5bGVzaGVldHMgZnJvbSBkaWZmZXJlbnQgc291cmNlcywKKyAgICAgICAgICAgIHNp
bWlsYXIgdG8gYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuCisKKyAgICAgICAgKERvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbjo6ZG9jdW1lbnRVc2VyU3R5bGVTaGVldHMpOgorCiAyMDEyLTExLTE5ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTM1MTExLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAkocmV2aXNpb24gMTM1MTQzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsMTcgKzI5Myw4IEBAIFN0eWxlUmVzb2x2ZXI6OlN0
eWxlUmVzb2x2ZXIoRG9jdW1lbnQqIGQKICAgICAgICAgICAgIGxvYWRGdWxsRGVmYXVsdFN0eWxl
KCk7CiAgICAgfQogCi0gICAgLy8gY29uc3RydWN0IGRvY3VtZW50IHJvb3QgZWxlbWVudCBkZWZh
dWx0IHN0eWxlLiB0aGlzIGlzIG5lZWRlZAotICAgIC8vIHRvIGV2YWx1YXRlIG1lZGlhIHF1ZXJp
ZXMgdGhhdCBjb250YWluIHJlbGF0aXZlIGNvbnN0cmFpbnRzLCBsaWtlICJzY3JlZW4gYW5kICht
YXgtd2lkdGg6IDEwZW0pIgotICAgIC8vIFRoaXMgaXMgaGVyZSBpbnN0ZWFkIG9mIGNvbnN0cnVj
dG9yLCBiZWNhdXNlIHdoZW4gY29uc3RydWN0b3IgaXMgcnVuLAotICAgIC8vIGRvY3VtZW50IGRv
ZXNuJ3QgaGF2ZSBkb2N1bWVudEVsZW1lbnQKLSAgICAvLyBOT1RFOiB0aGlzIGFzc3VtZXMgdGhh
dCBlbGVtZW50IHRoYXQgZ2V0cyBwYXNzZWQgdG8gc3R5bGVGb3JFbGVtZW50IC1jYWxsCi0gICAg
Ly8gaXMgYWx3YXlzIGZyb20gdGhlIGRvY3VtZW50IHRoYXQgb3ducyB0aGUgc3R5bGUgc2VsZWN0
b3IKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBkb2N1bWVudC0+dmlldygpOwotICAgIGlmICh2aWV3
KQotICAgICAgICBtX21lZGl1bSA9IGFkb3B0UHRyKG5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKHZp
ZXctPm1lZGlhVHlwZSgpKSk7Ci0gICAgZWxzZQotICAgICAgICBtX21lZGl1bSA9IGFkb3B0UHRy
KG5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKCJhbGwiKSk7CisgICAgbV9tZWRpdW0gPSBhZG9wdFB0
cihuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcih2aWV3ID8gdmlldy0+bWVkaWFUeXBlKCkgOiAiYWxs
IikpOwogCiAgICAgaWYgKHJvb3QpCiAgICAgICAgIG1fcm9vdERlZmF1bHRTdHlsZSA9IHN0eWxl
Rm9yRWxlbWVudChyb290LCAwLCBEaXNhbGxvd1N0eWxlU2hhcmluZywgTWF0Y2hPbmx5VXNlckFn
ZW50UnVsZXMpOwpAQCAtMzEzLDE1ICszMDQsNiBAQCBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29s
dmVyKERvY3VtZW50KiBkCiAKICAgICByZXNldEF1dGhvclN0eWxlKCk7CiAKLSAgICBEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uKiBzdHlsZVNoZWV0Q29sbGVjdGlvbiA9IGRvY3VtZW50LT5z
dHlsZVNoZWV0Q29sbGVjdGlvbigpOwotICAgIE93blB0cjxSdWxlU2V0PiB0ZW1wVXNlclN0eWxl
ID0gUnVsZVNldDo6Y3JlYXRlKCk7Ci0gICAgaWYgKENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hl
ZXQgPSBzdHlsZVNoZWV0Q29sbGVjdGlvbi0+cGFnZVVzZXJTaGVldCgpKQotICAgICAgICB0ZW1w
VXNlclN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChwYWdlVXNlclNoZWV0LT5jb250ZW50cygpLCAq
bV9tZWRpdW0sIHRoaXMpOwotICAgIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoc3R5
bGVTaGVldENvbGxlY3Rpb24tPmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCksICp0ZW1wVXNlclN0
eWxlKTsKLSAgICBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKHN0eWxlU2hlZXRDb2xs
ZWN0aW9uLT5kb2N1bWVudFVzZXJTdHlsZVNoZWV0cygpLCAqdGVtcFVzZXJTdHlsZSk7Ci0gICAg
aWYgKHRlbXBVc2VyU3R5bGUtPm1fcnVsZUNvdW50ID4gMCB8fCB0ZW1wVXNlclN0eWxlLT5tX3Bh
Z2VSdWxlcy5zaXplKCkgPiAwKQotICAgICAgICBtX3VzZXJTdHlsZSA9IHRlbXBVc2VyU3R5bGUu
cmVsZWFzZSgpOwotCiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICBpZiAoZG9jdW1lbnQtPnN2
Z0V4dGVuc2lvbnMoKSkgewogICAgICAgICBjb25zdCBIYXNoU2V0PFNWR0ZvbnRGYWNlRWxlbWVu
dCo+JiBzdmdGb250RmFjZUVsZW1lbnRzID0gZG9jdW1lbnQtPnN2Z0V4dGVuc2lvbnMoKS0+c3Zn
Rm9udEZhY2VFbGVtZW50cygpOwpAQCAtMzMxLDE1ICszMTMsMjAgQEAgU3R5bGVSZXNvbHZlcjo6
U3R5bGVSZXNvbHZlcihEb2N1bWVudCogZAogICAgIH0KICNlbmRpZgogCisgICAgRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbiogc3R5bGVTaGVldENvbGxlY3Rpb24gPSBkb2N1bWVudC0+c3R5
bGVTaGVldENvbGxlY3Rpb24oKTsKKyAgICBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRz
KHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5hY3RpdmVVc2VyU3R5bGVTaGVldHMoKSk7CiAgICAgYXBw
ZW5kQXV0aG9yU3R5bGVTaGVldHMoMCwgc3R5bGVTaGVldENvbGxlY3Rpb24tPmFjdGl2ZUF1dGhv
clN0eWxlU2hlZXRzKCkpOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RSdWxlc0Zy
b21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiB1
c2VyU2hlZXRzLCBSdWxlU2V0JiB1c2VyU3R5bGUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0PiA+JiB1c2VyU2hlZXRzKQogeworICAgIE93blB0cjxSdWxlU2V0PiB1c2VyU3R5bGVSdWxl
U2V0ID0gUnVsZVNldDo6Y3JlYXRlKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVz
ZXJTaGVldHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKHVzZXJTaGVldHNbaV0tPmNv
bnRlbnRzKCktPmlzVXNlclN0eWxlU2hlZXQoKSk7Ci0gICAgICAgIHVzZXJTdHlsZS5hZGRSdWxl
c0Zyb21TaGVldCh1c2VyU2hlZXRzW2ldLT5jb250ZW50cygpLCAqbV9tZWRpdW0sIHRoaXMpOwor
ICAgICAgICB1c2VyU3R5bGVSdWxlU2V0LT5hZGRSdWxlc0Zyb21TaGVldCh1c2VyU2hlZXRzW2ld
LT5jb250ZW50cygpLCAqbV9tZWRpdW0sIHRoaXMpOwogICAgIH0KKyAgICBpZiAodXNlclN0eWxl
UnVsZVNldC0+bV9ydWxlQ291bnQgPiAwIHx8IHVzZXJTdHlsZVJ1bGVTZXQtPm1fcGFnZVJ1bGVz
LnNpemUoKSA+IDApCisgICAgICAgIG1fdXNlclN0eWxlID0gdXNlclN0eWxlUnVsZVNldC5yZWxl
YXNlKCk7CiB9CiAKIHN0YXRpYyBQYXNzT3duUHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0
IFZlY3RvcjxSdWxlRmVhdHVyZT4mIHJ1bGVzKQpAQCAtMjU5MCw5ICsyNTc3LDcgQEAgc3RhdGlj
IHZvaWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcAogc3RhdGljIHZvaWQgY29sbGVjdENT
U09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiB3
cmFwcGVyTWFwLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKiBzdHlsZVNoZWV0Q29sbGVj
dGlvbikKIHsKICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdHlsZVNoZWV0
Q29sbGVjdGlvbi0+YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoKSk7Ci0gICAgY29sbGVjdENTU09N
V3JhcHBlcnMod3JhcHBlck1hcCwgc3R5bGVTaGVldENvbGxlY3Rpb24tPnBhZ2VVc2VyU2hlZXQo
KSk7Ci0gICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3R5bGVTaGVldENvbGxl
Y3Rpb24tPmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCkpOwotICAgIGNvbGxlY3RDU1NPTVdyYXBw
ZXJzKHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5kb2N1bWVudFVzZXJTdHlsZVNo
ZWV0cygpKTsKKyAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdHlsZVNoZWV0
Q29sbGVjdGlvbi0+YWN0aXZlVXNlclN0eWxlU2hlZXRzKCkpOwogfQogCiBDU1NTdHlsZVJ1bGUq
IFN0eWxlUmVzb2x2ZXI6OmVuc3VyZUZ1bGxDU1NPTVdyYXBwZXJGb3JJbnNwZWN0b3IoU3R5bGVS
dWxlKiBydWxlKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCShyZXZpc2lvbiAx
MzUxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MjEsNyArNDIxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgUmVu
ZGVyU3R5bGUqIHNfc3R5bGVOb3RZZXRBdmFpbGFibGU7CiAKLSAgICB2b2lkIGNvbGxlY3RSdWxl
c0Zyb21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+
JiwgUnVsZVNldCYgdXNlclN0eWxlKTsKKyAgICB2b2lkIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5
bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+Jik7CiAKICAgICB2
b2lkIGNhY2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDEzNTE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5Nyw3ICs3OTcsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRD
b21wYXRpYmlsaXR5TW9kZShDb21wCiAgICAgc2VsZWN0b3JRdWVyeUNhY2hlKCktPmludmFsaWRh
dGUoKTsKICAgICBpZiAoaW5RdWlya3NNb2RlKCkgIT0gd2FzSW5RdWlya3NNb2RlKSB7CiAgICAg
ICAgIC8vIEFsbCB1c2VyIHN0eWxlc2hlZXRzIGhhdmUgdG8gcmVwYXJzZSB1c2luZyB0aGUgZGlm
ZmVyZW50IG1vZGUuCi0gICAgICAgIG1fc3R5bGVTaGVldENvbGxlY3Rpb24tPmNsZWFyUGFnZVVz
ZXJTaGVldCgpOworICAgICAgICBtX3N0eWxlU2hlZXRDb2xsZWN0aW9uLT5jbGVhclBhZ2VVc2Vy
U3R5bGVTaGVldCgpOwogICAgICAgICBtX3N0eWxlU2hlZXRDb2xsZWN0aW9uLT5pbnZhbGlkYXRl
SW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCShyZXZpc2lv
biAxMzUxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDggQEAgRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6RG9jdW1lbnRTdAogCiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
Ojp+RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbigpCiB7Ci0gICAgaWYgKG1fcGFnZVVzZXJT
aGVldCkKLSAgICAgICAgbV9wYWdlVXNlclNoZWV0LT5jbGVhck93bmVyTm9kZSgpOworICAgIGlm
IChtX3BhZ2VVc2VyU3R5bGVTaGVldCkKKyAgICAgICAgbV9wYWdlVXNlclN0eWxlU2hlZXQtPmNs
ZWFyT3duZXJOb2RlKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW5qZWN0ZWRV
c2VyU3R5bGVTaGVldHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1faW5qZWN0ZWRVc2VyU3R5bGVT
aGVldHNbaV0tPmNsZWFyT3duZXJOb2RlKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1faW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cy5zaXplKCk7ICsraSkKQEAgLTEwMCwxMCArMTAw
LDEwIEBAIHZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cmVzZXQKICAgICBtX3Vz
ZXNCZWZvcmVBZnRlclJ1bGVzID0gc3R5bGVSZXNvbHZlci0+dXNlc0JlZm9yZUFmdGVyUnVsZXMo
KTsKIH0KIAotQ1NTU3R5bGVTaGVldCogRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cGFn
ZVVzZXJTaGVldCgpCitDU1NTdHlsZVNoZWV0KiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
OjpwYWdlVXNlclN0eWxlU2hlZXQoKQogewotICAgIGlmIChtX3BhZ2VVc2VyU2hlZXQpCi0gICAg
ICAgIHJldHVybiBtX3BhZ2VVc2VyU2hlZXQuZ2V0KCk7CisgICAgaWYgKG1fcGFnZVVzZXJTdHls
ZVNoZWV0KQorICAgICAgICByZXR1cm4gbV9wYWdlVXNlclN0eWxlU2hlZXQuZ2V0KCk7CiAgICAg
CiAgICAgUGFnZSogb3duaW5nUGFnZSA9IG1fZG9jdW1lbnQtPnBhZ2UoKTsKICAgICBpZiAoIW93
bmluZ1BhZ2UpCkBAIC0xMTQsMjQgKzExNCwyNCBAQCBDU1NTdHlsZVNoZWV0KiBEb2N1bWVudFN0
eWxlU2hlZXRDb2xsZWN0CiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIC8vIFBhcnNlIHRo
ZSBzaGVldCBhbmQgY2FjaGUgaXQuCi0gICAgbV9wYWdlVXNlclNoZWV0ID0gQ1NTU3R5bGVTaGVl
dDo6Y3JlYXRlSW5saW5lKG1fZG9jdW1lbnQsIG1fZG9jdW1lbnQtPnNldHRpbmdzKCktPnVzZXJT
dHlsZVNoZWV0TG9jYXRpb24oKSk7Ci0gICAgbV9wYWdlVXNlclNoZWV0LT5jb250ZW50cygpLT5z
ZXRJc1VzZXJTdHlsZVNoZWV0KHRydWUpOwotICAgIG1fcGFnZVVzZXJTaGVldC0+Y29udGVudHMo
KS0+cGFyc2VTdHJpbmcodXNlclNoZWV0VGV4dCk7Ci0gICAgcmV0dXJuIG1fcGFnZVVzZXJTaGVl
dC5nZXQoKTsKKyAgICBtX3BhZ2VVc2VyU3R5bGVTaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0
ZUlubGluZShtX2RvY3VtZW50LCBtX2RvY3VtZW50LT5zZXR0aW5ncygpLT51c2VyU3R5bGVTaGVl
dExvY2F0aW9uKCkpOworICAgIG1fcGFnZVVzZXJTdHlsZVNoZWV0LT5jb250ZW50cygpLT5zZXRJ
c1VzZXJTdHlsZVNoZWV0KHRydWUpOworICAgIG1fcGFnZVVzZXJTdHlsZVNoZWV0LT5jb250ZW50
cygpLT5wYXJzZVN0cmluZyh1c2VyU2hlZXRUZXh0KTsKKyAgICByZXR1cm4gbV9wYWdlVXNlclN0
eWxlU2hlZXQuZ2V0KCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6
Y2xlYXJQYWdlVXNlclNoZWV0KCkKK3ZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6
Y2xlYXJQYWdlVXNlclN0eWxlU2hlZXQoKQogewotICAgIGlmIChtX3BhZ2VVc2VyU2hlZXQpIHsK
LSAgICAgICAgbV9wYWdlVXNlclNoZWV0ID0gMDsKLSAgICAgICAgbV9kb2N1bWVudC0+c3R5bGVS
ZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7Ci0gICAgfQorICAgIGlmICghbV9wYWdl
VXNlclN0eWxlU2hlZXQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BhZ2VVc2VyU3R5bGVTaGVl
dCA9IDA7CisgICAgbV9kb2N1bWVudC0+c3R5bGVSZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNhbGNT
dHlsZSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlUGFn
ZVVzZXJTaGVldCgpCit2b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZVBh
Z2VVc2VyU3R5bGVTaGVldCgpCiB7Ci0gICAgY2xlYXJQYWdlVXNlclNoZWV0KCk7Ci0gICAgaWYg
KHBhZ2VVc2VyU2hlZXQoKSkKKyAgICBjbGVhclBhZ2VVc2VyU3R5bGVTaGVldCgpOworICAgIGlm
IChwYWdlVXNlclN0eWxlU2hlZXQoKSkKICAgICAgICAgbV9kb2N1bWVudC0+c3R5bGVSZXNvbHZl
ckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9CiAKQEAgLTM1Miw2ICszNTIsOCBA
QCB2b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlCiB2b2lkIERvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb246OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKFVwZGF0ZUZsYWcg
dXBkYXRlRmxhZywgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBuZXdTdHls
ZXNoZWV0cywgU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUmIHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBl
LCBib29sJiByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYykKIHsKICAgICBzdHlsZVJlc29sdmVyVXBk
YXRlVHlwZSA9IFJlY29uc3RydWN0OworICAgIGlmIChyZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYykK
KyAgICAgICAgcmV0dXJuOwogICAgIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjID0gdHJ1ZTsKICAg
ICAKICAgICAvLyBTdHlsZXNoZWV0cyBvZiA8c3R5bGU+IGVsZW1lbnRzIHRoYXQgQGltcG9ydCBz
dHlsZXNoZWV0cyBhcmUgYWN0aXZlIGJ1dCBsb2FkaW5nLiBXZSBuZWVkIHRvIHRyaWdnZXIgYSBm
dWxsIHJlY2FsYyB3aGVuIHN1Y2ggbG9hZHMgYXJlIGRvbmUuCkBAIC00MjgsNyArNDMwLDcgQEAg
c3RhdGljIHZvaWQgZmlsdGVyRW5hYmxlZENTU1N0eWxlU2hlZXRzKAogICAgIH0KIH0KIAotc3Rh
dGljIHZvaWQgY29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyhW
ZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0cywgRG9jdW1lbnQqIGRvY3VtZW50
KQorc3RhdGljIHZvaWQgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50
cyhWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0cywgRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewogICAgIEhUTUxJRnJhbWVFbGVtZW50KiBzZWFtbGVzc1BhcmVudElGcmFtZSA9IGRv
Y3VtZW50LT5zZWFtbGVzc1BhcmVudElGcmFtZSgpOwogICAgIGlmICghc2VhbWxlc3NQYXJlbnRJ
RnJhbWUpCkBAIC00MzYsNiArNDM4LDIzIEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RBY3RpdmVDU1NT
dHlsZVNoZWV0c0YKICAgICBzaGVldHMuYXBwZW5kKHNlYW1sZXNzUGFyZW50SUZyYW1lLT5kb2N1
bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVBdXRob3JTdHlsZVNoZWV0cygp
KTsKIH0KIAordm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVTdHlsZVJl
c29sdmVyKFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIHVwZGF0ZVR5cGUsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMpCit7CisgICAg
aWYgKHVwZGF0ZVR5cGUgPT0gUmVjb25zdHJ1Y3QpIHsKKyAgICAgICAgbV9kb2N1bWVudC0+Y2xl
YXJTdHlsZVJlc29sdmVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgU3R5bGVSZXNv
bHZlciogc3R5bGVSZXNvbHZlciA9IG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXIoKTsKKyAgICBp
ZiAodXBkYXRlVHlwZSA9PSBSZXNldCkgeworICAgICAgICBzdHlsZVJlc29sdmVyLT5yZXNldEF1
dGhvclN0eWxlKCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hl
ZXRzKDAsIGFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBB
U1NFUlQodXBkYXRlVHlwZSA9PSBBZGRpdGl2ZSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPmFw
cGVuZEF1dGhvclN0eWxlU2hlZXRzKG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuc2l6ZSgpLCBh
Y3RpdmVBdXRob3JTdHlsZVNoZWV0cyk7CisgICAgfQorICAgIHJlc2V0Q1NTRmVhdHVyZUZsYWdz
KCk7Cit9CisKIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZl
U3R5bGVTaGVldHMoVXBkYXRlRmxhZyB1cGRhdGVGbGFnKQogewogICAgIGlmIChtX2RvY3VtZW50
LT5pblN0eWxlUmVjYWxjKCkpIHsKQEAgLTQ1MCwzMyArNDY5LDI5IEBAIGJvb2wgRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXQKICAgICBpZiAoIW1fZG9jdW1lbnQtPnJlbmRlcmVy
KCkgfHwgIW1fZG9jdW1lbnQtPmF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiBhY3RpdmVTdHlsZVNoZWV0czsKLSAgICBj
b2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoYWN0aXZlU3R5bGVTaGVldHMpOworICAgIFZlY3RvcjxS
ZWZQdHI8U3R5bGVTaGVldD4gPiBkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzOworICAgIGNvbGxl
Y3RBY3RpdmVTdHlsZVNoZWV0cyhkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzKTsKIAotICAgIFZl
Y3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBhY3RpdmVDU1NTdHlsZVNoZWV0czsKLSAgICBh
Y3RpdmVDU1NTdHlsZVNoZWV0cy5hcHBlbmQoaW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpKTsK
LSAgICBjb2xsZWN0QWN0aXZlQ1NTU3R5bGVTaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKGFjdGl2
ZUNTU1N0eWxlU2hlZXRzLCBtX2RvY3VtZW50KTsKLSAgICBmaWx0ZXJFbmFibGVkQ1NTU3R5bGVT
aGVldHMoYWN0aXZlQ1NTU3R5bGVTaGVldHMsIGFjdGl2ZVN0eWxlU2hlZXRzKTsKKyAgICBWZWN0
b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gYWN0aXZlQXV0aG9yU3R5bGVTaGVldHM7CisgICAg
YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuYXBwZW5kKGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMo
KSk7CisgICAgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyhhY3Rp
dmVBdXRob3JTdHlsZVNoZWV0cywgbV9kb2N1bWVudCk7CisgICAgZmlsdGVyRW5hYmxlZENTU1N0
eWxlU2hlZXRzKGFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzLCBkb2N1bWVudEF1dGhvclN0eWxlU2hl
ZXRzKTsKKworICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBhY3RpdmVVc2VyU3R5
bGVTaGVldHM7CisgICAgaWYgKENTU1N0eWxlU2hlZXQqIHNoZWV0ID0gcGFnZVVzZXJTdHlsZVNo
ZWV0KCkpCisgICAgICAgIGFjdGl2ZVVzZXJTdHlsZVNoZWV0cy5hcHBlbmQoc2hlZXQpOworICAg
IGFjdGl2ZVVzZXJTdHlsZVNoZWV0cy5hcHBlbmQoaW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKSk7
CisgICAgYWN0aXZlVXNlclN0eWxlU2hlZXRzLmFwcGVuZChkb2N1bWVudFVzZXJTdHlsZVNoZWV0
cygpKTsKIAogICAgIFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIHN0eWxlUmVzb2x2ZXJVcGRhdGVU
eXBlOwotICAgIGJvb2wgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGM7Ci0gICAgYW5hbHl6ZVN0eWxl
U2hlZXRDaGFuZ2UodXBkYXRlRmxhZywgYWN0aXZlQ1NTU3R5bGVTaGVldHMsIHN0eWxlUmVzb2x2
ZXJVcGRhdGVUeXBlLCByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyk7CisgICAgYm9vbCByZXF1aXJl
c0Z1bGxTdHlsZVJlY2FsYyA9IGFjdGl2ZVVzZXJTdHlsZVNoZWV0cyAhPSBtX2FjdGl2ZVVzZXJT
dHlsZVNoZWV0czsKKyAgICBhbmFseXplU3R5bGVTaGVldENoYW5nZSh1cGRhdGVGbGFnLCBhY3Rp
dmVBdXRob3JTdHlsZVNoZWV0cywgc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUsIHJlcXVpcmVzRnVs
bFN0eWxlUmVjYWxjKTsKIAotICAgIGlmIChzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSA9PSBSZWNv
bnN0cnVjdCkKLSAgICAgICAgbV9kb2N1bWVudC0+Y2xlYXJTdHlsZVJlc29sdmVyKCk7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBtX2RvY3VtZW50
LT5zdHlsZVJlc29sdmVyKCk7Ci0gICAgICAgIGlmIChzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSA9
PSBSZXNldCkgewotICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+cmVzZXRBdXRob3JTdHlsZSgp
OwotICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMoMCwg
YWN0aXZlQ1NTU3R5bGVTaGVldHMpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQVNT
RVJUKHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlID09IEFkZGl0aXZlKTsKLSAgICAgICAgICAgIHN0
eWxlUmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKG1fYWN0aXZlQXV0aG9yU3R5bGVT
aGVldHMuc2l6ZSgpLCBhY3RpdmVDU1NTdHlsZVNoZWV0cyk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmVzZXRDU1NGZWF0dXJlRmxhZ3MoKTsKLSAgICB9Ci0gICAgbV9hY3RpdmVBdXRob3JTdHlsZVNo
ZWV0cy5zd2FwKGFjdGl2ZUNTU1N0eWxlU2hlZXRzKTsKLSAgICBtX3N0eWxlU2hlZXRzRm9yU3R5
bGVTaGVldExpc3Quc3dhcChhY3RpdmVTdHlsZVNoZWV0cyk7CisgICAgdXBkYXRlU3R5bGVSZXNv
bHZlcihzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSwgYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMpOwor
ICAgIAorICAgIG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuc3dhcChhY3RpdmVBdXRob3JTdHls
ZVNoZWV0cyk7CisgICAgbV9hY3RpdmVVc2VyU3R5bGVTaGVldHMuc3dhcChhY3RpdmVVc2VyU3R5
bGVTaGVldHMpOworICAgIG1fc3R5bGVTaGVldHNGb3JTdHlsZVNoZWV0TGlzdC5zd2FwKGRvY3Vt
ZW50QXV0aG9yU3R5bGVTaGVldHMpOwogCiAgICAgbV91c2VzUmVtVW5pdHMgPSBzdHlsZVNoZWV0
c1VzZVJlbVVuaXRzKG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMpOwogICAgIG1fbmVlZHNVcGRh
dGVBY3RpdmVTdHlsZXNoZWV0c09uU3R5bGVSZWNhbGMgPSBmYWxzZTsKQEAgLTQ4OSwxMSArNTA0
LDEyIEBAIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXQKIHZvaWQgRG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5m
byhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7Ci0gICAg
aW5mby5hZGRNZW1iZXIobV9wYWdlVXNlclNoZWV0KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3Bh
Z2VVc2VyU3R5bGVTaGVldCk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9pbmplY3RlZFVzZXJTdHls
ZVNoZWV0cyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9pbmplY3RlZEF1dGhvclN0eWxlU2hlZXRz
KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3VzZXJTdHlsZVNoZWV0cyk7CiAgICAgaW5mby5hZGRN
ZW1iZXIobV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9h
Y3RpdmVVc2VyU3R5bGVTaGVldHMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fc3R5bGVTaGVldHNG
b3JTdHlsZVNoZWV0TGlzdCk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9zdHlsZVNoZWV0Q2FuZGlk
YXRlTm9kZXMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcHJlZmVycmVkU3R5bGVzaGVldFNldE5h
bWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbi5oCShyZXZpc2lvbiAxMzUxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywxNyArNTMs
MTMgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgc3R5
bGVTaGVldHNGb3JTdHlsZVNoZWV0TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVTaGVldHNG
b3JTdHlsZVNoZWV0TGlzdDsgfQogCiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0PiA+JiBhY3RpdmVBdXRob3JTdHlsZVNoZWV0cygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZl
QXV0aG9yU3R5bGVTaGVldHM7IH0KLQotICAgIENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hlZXQo
KTsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIGRvY3VtZW50VXNl
clN0eWxlU2hlZXRzKCkgY29uc3QgeyByZXR1cm4gbV91c2VyU3R5bGVTaGVldHM7IH0KLSAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIGluamVjdGVkVXNlclN0eWxlU2hl
ZXRzKCkgY29uc3Q7Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBp
bmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkgY29uc3Q7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0
cjxDU1NTdHlsZVNoZWV0PiA+JiBhY3RpdmVVc2VyU3R5bGVTaGVldHMoKSBjb25zdCB7IHJldHVy
biBtX2FjdGl2ZVVzZXJTdHlsZVNoZWV0czsgfQogCiAgICAgdm9pZCBhZGRTdHlsZVNoZWV0Q2Fu
ZGlkYXRlTm9kZShOb2RlKiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZvaWQgcmVtb3Zl
U3R5bGVTaGVldENhbmRpZGF0ZU5vZGUoTm9kZSopOwogCi0gICAgdm9pZCBjbGVhclBhZ2VVc2Vy
U2hlZXQoKTsKLSAgICB2b2lkIHVwZGF0ZVBhZ2VVc2VyU2hlZXQoKTsKKyAgICB2b2lkIGNsZWFy
UGFnZVVzZXJTdHlsZVNoZWV0KCk7CisgICAgdm9pZCB1cGRhdGVQYWdlVXNlclN0eWxlU2hlZXQo
KTsKICAgICB2b2lkIGludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpOwogICAgIHZv
aWQgdXBkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKSBjb25zdDsKIApAQCAtMTEzLDExICsx
MDksMTggQEAgcHJpdmF0ZToKICAgICAgICAgQWRkaXRpdmUKICAgICB9OwogICAgIHZvaWQgYW5h
bHl6ZVN0eWxlU2hlZXRDaGFuZ2UoVXBkYXRlRmxhZywgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NT
dHlsZVNoZWV0PiA+JiBuZXdTdHlsZXNoZWV0cywgU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUmLCBi
b29sJiByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyk7CisgICAgdm9pZCB1cGRhdGVTdHlsZVJlc29s
dmVyKFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlLCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxl
U2hlZXQ+ID4mIGFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKTsKKworICAgIENTU1N0eWxlU2hlZXQq
IHBhZ2VVc2VyU3R5bGVTaGVldCgpOworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVT
aGVldD4gPiYgZG9jdW1lbnRVc2VyU3R5bGVTaGVldHMoKSBjb25zdCB7IHJldHVybiBtX3VzZXJT
dHlsZVNoZWV0czsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYg
aW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+ID4mIGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSBjb25zdDsKIAog
ICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwogCiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0
PiA+IG1fc3R5bGVTaGVldHNGb3JTdHlsZVNoZWV0TGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPENT
U1N0eWxlU2hlZXQ+ID4gbV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0czsKKyAgICBWZWN0b3I8UmVm
UHRyPENTU1N0eWxlU2hlZXQ+ID4gbV9hY3RpdmVVc2VyU3R5bGVTaGVldHM7CiAKICAgICAvLyBU
cmFjayB0aGUgbnVtYmVyIG9mIGN1cnJlbnRseSBsb2FkaW5nIHRvcC1sZXZlbCBzdHlsZXNoZWV0
cyBuZWVkZWQgZm9yIHJlbmRlcmluZy4KICAgICAvLyBTaGVldHMgbG9hZGVkIHVzaW5nIHRoZSBA
aW1wb3J0IGRpcmVjdGl2ZSBhcmUgbm90IGluY2x1ZGVkIGluIHRoaXMgY291bnQuCkBAIC0xMjUs
NyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBlbGVtZW50cyBhbmQgd2hlbiBpdCBpcyBzYWZl
IHRvIGV4ZWN1dGUgc2NyaXB0cy4KICAgICBpbnQgbV9wZW5kaW5nU3R5bGVzaGVldHM7CiAKLSAg
ICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9wYWdlVXNlclNoZWV0OworICAgIFJlZlB0cjxDU1NT
dHlsZVNoZWV0PiBtX3BhZ2VVc2VyU3R5bGVTaGVldDsKIAogICAgIG11dGFibGUgVmVjdG9yPFJl
ZlB0cjxDU1NTdHlsZVNoZWV0PiA+IG1faW5qZWN0ZWRVc2VyU3R5bGVTaGVldHM7CiAgICAgbXV0
YWJsZSBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gbV9pbmplY3RlZEF1dGhvclN0eWxl
U2hlZXRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAxMzUxNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTIsNyArODUyLDcg
QEAgdm9pZCBQYWdlOjp1c2VyU3R5bGVTaGVldExvY2F0aW9uQ2hhbmdlZAogCiAgICAgZm9yIChG
cmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+
dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQotICAgICAg
ICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPnVwZGF0ZVBh
Z2VVc2VyU2hlZXQoKTsKKyAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0
Q29sbGVjdGlvbigpLT51cGRhdGVQYWdlVXNlclN0eWxlU2hlZXQoKTsKICAgICB9CiB9CiAK
</data>
<flag name="review"
          id="190305"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>