<?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>92773</bug_id>
          
          <creation_ts>2012-07-31 11:08:25 -0700</creation_ts>
          <short_desc>REGRESSION(r124207): Patch causes crashes on the 64-bit debug builder (and other builders likely) (Requested by zdobersek on #webkit).</short_desc>
          <delta_ts>2012-07-31 23:09:40 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>90269</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>mario</cc>
    
    <cc>mrobinson</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>683269</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-31 11:08:25 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/124207 broke the build:
Patch causes crashes on the 64-bit debug builder (and other builders likely) (Requested by zdobersek on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683273</commentid>
    <comment_count>1</comment_count>
      <attachid>155587</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-31 11:09:04 -0700</bug_when>
    <thetext>Created attachment 155587
ROLLOUT of r124207

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683275</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-07-31 11:11:23 -0700</bug_when>
    <thetext>The all-helping crash log:

Crash log for DumpRenderTree (pid 15821):

[New LWP 15821]
[New LWP 15830]
[New LWP 15829]
[New LWP 15835]
[New LWP 15833]
[New LWP 15831]
[New LWP 15832]
[Thread debugging using libthread_db enabled]
Using host libthread_db library &quot;/lib/x86_64-linux-gnu/libthread_db.so.1&quot;.
Core was generated by `/home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/Programs/DumpR&apos;.
Program terminated with signal 11, Segmentation fault.
#0  0x00007f59fbf7d85b in WebCore::TextCheckingHelper::findFirstMisspelling (this=0x7fff92a0f0c0, firstMisspellingOffset=@0x7fff92a0f07c: 0, markAll=true, firstMisspellingRange=...) at ../../Source/WebCore/editing/TextCheckingHelper.cpp:263
263	            ASSERT(misspellingLocation &lt; len);


Thread 1 (Thread 0x7f59f02e8900 (LWP 15821)):
#0  0x00007f59fbf7d85b in WebCore::TextCheckingHelper::findFirstMisspelling (this=0x7fff92a0f0c0, firstMisspellingOffset=@0x7fff92a0f07c: 0, markAll=true, firstMisspellingRange=...) at ../../Source/WebCore/editing/TextCheckingHelper.cpp:263
#1  0x00007f59fbf7fb58 in WebCore::TextCheckingHelper::markAllMisspellings (this=0x7fff92a0f0c0, firstMisspellingRange=...) at ../../Source/WebCore/editing/TextCheckingHelper.cpp:640
#2  0x00007f59fbf381a0 in WebCore::Editor::markMisspellingsOrBadGrammar (this=0x1ea81f8, selection=..., checkSpelling=true, firstMisspellingRange=...) at ../../Source/WebCore/editing/Editor.cpp:1914
#3  0x00007f59fbf382f0 in WebCore::Editor::markMisspellings (this=0x1ea81f8, selection=..., firstMisspellingRange=...) at ../../Source/WebCore/editing/Editor.cpp:1939
#4  0x00007f59fbf3a00f in WebCore::Editor::markMisspellingsAndBadGrammar (this=0x1ea81f8, spellingSelection=..., markGrammar=false, grammarSelection=...) at ../../Source/WebCore/editing/Editor.cpp:2201
#5  0x00007f59fbf3e235 in WebCore::Editor::respondToChangedSelection (this=0x1ea81f8, oldSelection=..., options=6) at ../../Source/WebCore/editing/Editor.cpp:2828
#6  0x00007f59fbf43532 in WebCore::FrameSelection::setSelection (this=0x1ea82c0, newSelection=..., options=6, align=WebCore::FrameSelection::AlignCursorOnScrollIfNeeded, granularity=WebCore::CharacterGranularity) at ../../Source/WebCore/editing/FrameSelection.cpp:297
#7  0x00007f59fbf4827a in WebCore::FrameSelection::setExtent (this=0x1ea82c0, pos=..., userTriggered=WebCore::NotUserTriggered) at ../../Source/WebCore/editing/FrameSelection.cpp:1151
#8  0x00007f59fbf47569 in WebCore::FrameSelection::modify (this=0x1ea82c0, alter=WebCore::FrameSelection::AlterationExtend, direction=WebCore::DirectionBackward, granularity=WebCore::LineGranularity, userTriggered=WebCore::NotUserTriggered) at ../../Source/WebCore/editing/FrameSelection.cpp:967
#9  0x00007f59fc2ceb28 in WebCore::DOMSelection::modify (this=0x27eba50, alterString=&quot;extend&quot;, directionString=&quot;backward&quot;, granularityString=&quot;line&quot;) at ../../Source/WebCore/page/DOMSelection.cpp:333
#10 0x00007f59fca617fa in WebCore::jsDOMSelectionPrototypeFunctionModify (exec=0x7f59ac4cc1b0) at DerivedSources/WebCore/JSDOMSelection.cpp:491
#11 0x00007f59b00c2265 in ?? ()
#12 0x00007fff92a0fcf0 in ?? ()
#13 0x00007f5a007d397b in llint_op_call () from /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/.libs/libjavascriptcoregtk-3.0.so.0
#14 0x00007fff92a0fc80 in ?? ()
#15 0x00007fff92a0fcb0 in ?? ()
#16 0x0000000000000000 in ?? ()

This is patch is really reluctant towards the idea of not causing problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683278</commentid>
    <comment_count>3</comment_count>
      <attachid>155587</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-07-31 11:16:59 -0700</bug_when>
    <thetext>Comment on attachment 155587
ROLLOUT of r124207

Clearing flags on attachment: 155587

Committed r124223: &lt;http://trac.webkit.org/changeset/124223&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683279</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-07-31 11:17:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683413</commentid>
    <comment_count>5</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-07-31 13:10:55 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; [...]
&gt; This is patch is really reluctant towards the idea of not causing problems.

Agree :-/. I will take a look to it asap (hopefully this week)

In the meanwhile, would you mind to point out which layout test caused this stacktrace?

Thanks, and sorry for the hassle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683895</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-07-31 23:09:40 -0700</bug_when>
    <thetext>Here&apos;s the list, taken from http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/35188

editing/pasteboard/display-block-on-spans.html
editing/inserting/insert-paragraph-separator-tab-span.html
editing/inserting/insert-paste-bidi-control.html
editing/inserting/edited-whitespace-1.html
editing/inserting/insert-composition-whitespace.html
editing/pasteboard/copy-backslash-with-euc.html
editing/pasteboard/copy-in-password-field.html
editing/pasteboard/paste-text-016.html
editing/style/remove-underline-after-paragraph.html
editing/selection/extend-selection-home-end.html
editing/selection/home-end.html
editing/selection/3690703-2.html
editing/execCommand/switch-list-type.html
editing/execCommand/transpose-backslash-with-euc.html
editing/undo/undo-paste-when-caret-is-not-in-range.html
editing/spelling/grammar-edit-word.html
editing/spelling/spellcheck-async.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155587</attachid>
            <date>2012-07-31 11:09:04 -0700</date>
            <delta_ts>2012-07-31 11:16:59 -0700</delta_ts>
            <desc>ROLLOUT of r124207</desc>
            <filename>bug-92773-20120731181438.patch</filename>
            <type>text/plain</type>
            <size>24227</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdkNjk3NWNlNjMyYjk1
ZDRlY2RlZWJmMjZiNmZkNmZmNTE3M2YzMi4uNDk1MjVmN2MwOWFkMDRhZTEzNWVjMjYwZGZiYTY0
NWIyZGJiZTE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA3LTMxICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTI0MjA3LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMjQyMDcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkyNzczCisKKyAgICAgICAgUGF0Y2ggY2F1c2VzIGNyYXNoZXMgb24gdGhlIDY0
LWJpdCBkZWJ1ZyBidWlsZGVyIChhbmQgb3RoZXIKKyAgICAgICAgYnVpbGRlcnMgbGlrZWx5KSAo
UmVxdWVzdGVkIGJ5IHpkb2JlcnNlayBvbiAjd2Via2l0KS4KKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9ndGsvVGV4dENoZWNrZXJFbmNoYW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L2d0ay9UZXh0Q2hlY2tlckVuY2hhbnQuaDogUmVtb3ZlZC4KKwogMjAxMi0w
Ny0wNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dTdHJlYW1lcl0gTGl2ZSBzdHJlYW0gc3VwcG9ydCBpcyB3ZWFrCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5k
ZXggNTdiY2I4ZmZiZDliOGFhNzM0MjhkZjdiYzYxMWI2ODIwZThkYWMzOC4uNTk5NDNjNzE2NzA3
OTFkZjNjY2E1YzkzZTI3OTliNTYzYmEwN2U5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI3IEBACisyMDEyLTA3LTMxICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI0MjA3LgorICAgICAg
ICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjQyMDcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNzczCisKKyAgICAgICAgUGF0Y2gg
Y2F1c2VzIGNyYXNoZXMgb24gdGhlIDY0LWJpdCBkZWJ1ZyBidWlsZGVyIChhbmQgb3RoZXIKKyAg
ICAgICAgYnVpbGRlcnMgbGlrZWx5KSAoUmVxdWVzdGVkIGJ5IHpkb2JlcnNlayBvbiAjd2Via2l0
KS4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXRzcGVsbGNoZWNrZXJlbmNoYW50LmNwcDoKKyAg
ICAgICAgKF9XZWJLaXRTcGVsbENoZWNrZXJFbmNoYW50UHJpdmF0ZSk6CisgICAgICAgIChjcmVh
dGVFbmNoYW50QnJva2VySWZOZWVkZWQpOgorICAgICAgICAoZnJlZVNwZWxsQ2hlY2tpbmdMYW5n
dWFnZSk6CisgICAgICAgICh3ZWJraXRfc3BlbGxfY2hlY2tlcl9lbmNoYW50X2ZpbmFsaXplKToK
KyAgICAgICAgKHdlYmtpdF9zcGVsbF9jaGVja2VyX2VuY2hhbnRfY2xhc3NfaW5pdCk6CisgICAg
ICAgICh3ZWJraXRfc3BlbGxfY2hlY2tlcl9lbmNoYW50X2luaXQpOgorICAgICAgICAod29yZEVu
ZElzQUNvbnRyYWN0aW9uQXBvc3Ryb3BoZSk6CisgICAgICAgIChjaGVja1NwZWxsaW5nT2ZTdHJp
bmcpOgorICAgICAgICAoZ2V0R3Vlc3Nlc0ZvcldvcmQpOgorICAgICAgICAoZ2V0QXZhaWxhYmxl
RGljdGlvbmFyaWVzQ2FsbGJhY2spOgorICAgICAgICAodXBkYXRlU3BlbGxDaGVja2luZ0xhbmd1
YWdlcyk6CisgICAgICAgIChsZWFybldvcmQpOgorICAgICAgICAoaWdub3JlV29yZCk6CisKIDIw
MTItMDctMzEgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIEFkZCBhIG5ldyBhbmQgcmV1c2FibGUgZW5jaGFudC1iYXNlZCBzcGVsbGNo
ZWNrZXIgaW4gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAwYzI3OGI3MDg2NGM0NWRk
YjEyNGZlNzQ3NTA4NzMzY2FmNWY0MjQ2Li5iYTEwYWYxYzI5YjQ1NTczYmI1NWQ2YTlkOThjNDRm
NDdhMmY1NmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTE3LDggKzExNyw3IEBAIHdlYmNv
cmVndGtfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lciBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsgXAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cCBc
Ci0JLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsKKwktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAKIAogIyAtLS0KICMgRmVh
dHVyZXMgZW5hYmxlZCBieSBkZWZhdWx0IGF0IGNvbXBpbGF0aW9uIHRpbWUKQEAgLTc0OSwxNCAr
NzQ4LDYgQEAgRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9MSU5LX1BSRUZFVENIPTEKIHdlYmNv
cmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfTElOS19QUkVGRVRDSD0xCiBlbmRpZiAgIyBFTkQgRU5B
QkxFX0xJTktfUFJFRkVUQ0gKIAotIyAtLS0KLSMgU3BlbGwgY2hlY2sgc3VwcG9ydAotIyAtLS0K
LWlmIEVOQUJMRV9TUEVMTENIRUNLCi1GRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1NQRUxMQ0hF
Q0s9MQotd2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9TUEVMTENIRUNLPTEKLWVuZGlmICAj
IEVORCBFTkFCTEVfU1BFTExDSEVDSwotCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1Byb3Bl
cnR5TmFtZXMuY3BwOiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuaAog
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NQcm9wZXJ0eU5hbWVzLmg6ICQoV0VCQ09SRV9DU1Nf
UFJPUEVSVFlfTkFNRVMpICQoV2ViQ29yZSkvY3NzL21ha2Vwcm9wLnBsCiAJJChBTV9WX0dFTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGU5YzFhY2RhZDhhY2Y5ZGYyNTdmMmEw
ZGUxYzgxOGUzZGNiNDhkZTMuLjU1Njc5YTMzYzBkZTEwYzFhOGQwMDJjM2JkYzY2MTU3YTkxOTg5
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjI5OSwxMyArNjI5OSwzIEBA
IGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9xdW90YS9TdG9yYWdl
SW5mb1VzYWdlQ2FsbGJhY2suaWRsCiAKIGVuZGlmICAjIEVORCBFTkFCTEVfUVVPVEEKLQotIyAt
LS0tCi0jIFNwZWxsIGNoZWNrIHN1cHBvcnQKLSMgLS0tLQotaWYgRU5BQkxFX1NQRUxMQ0hFQ0sK
LXdlYmNvcmVfc291cmNlcyArPSBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsv
VGV4dENoZWNrZXJFbmNoYW50LmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3Rr
L1RleHRDaGVja2VyRW5jaGFudC5jcHAKLWVuZGlmICMgRU5EIEVOQUJMRV9TUEVMTENIRUNLCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRDaGVja2Vy
RW5jaGFudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0Q2hlY2tl
ckVuY2hhbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGQ5OWMwZmMzNDg4
OTRmMzU2MWFiNzM4NDI5YWI4MjkxNGY4Zjk3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRD
aGVja2VyRW5jaGFudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTYgKzAsMCBAQAotLyoKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAq
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVT
QQotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUZXh0Q2hlY2tlckVuY2hh
bnQuaCIKLQotI2lmIEVOQUJMRShTUEVMTENIRUNLKQotCi0jaW5jbHVkZSA8cGFuZ28vcGFuZ28u
aD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhpbXVtTnVtYmVyT2ZTdWdnZXN0aW9ucyA9IDEwOwotCi1zdGF0aWMgdm9pZCBnZXRB
dmFpbGFibGVEaWN0aW9uYXJpZXNDYWxsYmFjayhjb25zdCBjaGFyKiBjb25zdCBsYW5ndWFnZVRh
ZywgY29uc3QgY2hhciogY29uc3QsIGNvbnN0IGNoYXIqIGNvbnN0LCBjb25zdCBjaGFyKiBjb25z
dCwgdm9pZCogZGF0YSkKLXsKLSAgICBWZWN0b3I8Q1N0cmluZz4qIGRpY3Rpb25hcmllcyA9IHN0
YXRpY19jYXN0PFZlY3RvcjxDU3RyaW5nPio+KGRhdGEpOwotICAgIGRpY3Rpb25hcmllcy0+YXBw
ZW5kKGxhbmd1YWdlVGFnKTsKLX0KLQotc3RhdGljIGJvb2wgd29yZEVuZElzQUNvbnRyYWN0aW9u
QXBvc3Ryb3BoZShjb25zdCBjaGFyKiBzdHJpbmcsIGxvbmcgb2Zmc2V0KQotewotICAgIGlmIChn
X3V0ZjhfZ2V0X2NoYXIoZ191dGY4X29mZnNldF90b19wb2ludGVyKHN0cmluZywgb2Zmc2V0KSkg
IT0gZ191dGY4X2dldF9jaGFyKCInIikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8v
IElmIHRoaXMgaXMgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcsIGl0IGNhbm5vdCBi
ZSB0aGUgYXBvc3Ryb3BoZSBwYXJ0IG9mIGEgY29udHJhY3Rpb24uCi0gICAgaWYgKG9mZnNldCA9
PSBnX3V0Zjhfc3RybGVuKHN0cmluZywgLTEpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gZ191bmljaGFyX2lzYWxwaGEoZ191dGY4X2dldF9jaGFyKGdfdXRmOF9vZmZzZXRf
dG9fcG9pbnRlcihzdHJpbmcsIG9mZnNldCArIDEpKSk7Ci19Ci0KLVRleHRDaGVja2VyRW5jaGFu
dDo6VGV4dENoZWNrZXJFbmNoYW50KCkKLSAgICA6IG1fYnJva2VyKGVuY2hhbnRfYnJva2VyX2lu
aXQoKSkKLSAgICAsIG1fZW5jaGFudERpY3Rpb25hcmllcygwKQotewotfQotCi1UZXh0Q2hlY2tl
ckVuY2hhbnQ6On5UZXh0Q2hlY2tlckVuY2hhbnQoKQotewotICAgIGlmICghbV9icm9rZXIpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGZyZWVFbmNoYW50QnJva2VyRGljdGlvbmFyaWVzKCk7Ci0g
ICAgZW5jaGFudF9icm9rZXJfZnJlZShtX2Jyb2tlcik7Ci19Ci0KLXZvaWQgVGV4dENoZWNrZXJF
bmNoYW50OjppZ25vcmVXb3JkKGNvbnN0IFN0cmluZyYgd29yZCkKLXsKLSAgICBmb3IgKFZlY3Rv
cjxFbmNoYW50RGljdCo+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9lbmNoYW50RGljdGlvbmFy
aWVzLmJlZ2luKCk7IGl0ZXIgIT0gbV9lbmNoYW50RGljdGlvbmFyaWVzLmVuZCgpOyArK2l0ZXIp
Ci0gICAgICAgIGVuY2hhbnRfZGljdF9hZGRfdG9fc2Vzc2lvbigqaXRlciwgd29yZC51dGY4KCku
ZGF0YSgpLCAtMSk7Ci19Ci0KLXZvaWQgVGV4dENoZWNrZXJFbmNoYW50OjpsZWFybldvcmQoY29u
c3QgU3RyaW5nJiB3b3JkKQotewotICAgIGZvciAoVmVjdG9yPEVuY2hhbnREaWN0Kj46OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBtX2VuY2hhbnREaWN0aW9uYXJpZXMuYmVnaW4oKTsgaXRlciAhPSBt
X2VuY2hhbnREaWN0aW9uYXJpZXMuZW5kKCk7ICsraXRlcikKLSAgICAgICAgZW5jaGFudF9kaWN0
X2FkZF90b19wZXJzb25hbCgqaXRlciwgd29yZC51dGY4KCkuZGF0YSgpLCAtMSk7Ci19Ci0KLXZv
aWQgVGV4dENoZWNrZXJFbmNoYW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIGludCYgbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50JiBtaXNzcGVsbGluZ0xlbmd0
aCkKLXsKLSAgICBpZiAobV9lbmNoYW50RGljdGlvbmFyaWVzLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIFZlY3RvcjxFbmNoYW50RGljdCo+Ojpjb25zdF9pdGVyYXRvciBkaWN0SXRl
ciA9IG1fZW5jaGFudERpY3Rpb25hcmllcy5iZWdpbigpOwotCi0gICAgR093blB0cjxnY2hhcj4g
Y1N0cmluZyhnX3N0cmR1cChzdHJpbmcudXRmOCgpLmRhdGEoKSkpOwotICAgIHNpemVfdCBsZW5n
dGggPSBzdHJpbmcudXRmOCgpLmxlbmd0aCgpOwotCi0gICAgUGFuZ29MYW5ndWFnZSogbGFuZ3Vh
Z2UocGFuZ29fbGFuZ3VhZ2VfZ2V0X2RlZmF1bHQoKSk7Ci0gICAgR093blB0cjxQYW5nb0xvZ0F0
dHI+IGF0dHJzKGdfbmV3KFBhbmdvTG9nQXR0ciwgbGVuZ3RoICsgMSkpOwotCi0gICAgLy8gcGFu
Z29fZ2V0X2xvZ19hdHRycyB1c2VzIGFuIGFkaXRpb25hbCBwb3NpdGlvbiBhdCB0aGUgZW5kIG9m
IHRoZSB0ZXh0LgotICAgIHBhbmdvX2dldF9sb2dfYXR0cnMoY1N0cmluZy5nZXQoKSwgLTEsIC0x
LCBsYW5ndWFnZSwgYXR0cnMuZ2V0KCksIGxlbmd0aCArIDEpOwotCi0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsZW5ndGggKyAxOyBpKyspIHsKLSAgICAgICAgLy8gV2UgZ28gdGhyb3VnaCBl
YWNoIGNoYXJhY3RlciB1bnRpbCB3ZSBmaW5kIGFuIGlzX3dvcmRfc3RhcnQsCi0gICAgICAgIC8v
IHRoZW4gd2UgZ2V0IGludG8gYW4gaW5uZXIgbG9vcCB0byBmaW5kIHRoZSBpc193b3JkX2VuZCBj
b3JyZXNwb25kaW5nCi0gICAgICAgIC8vIHRvIGl0LgotICAgICAgICBpZiAoYXR0cnMuZ2V0KClb
aV0uaXNfd29yZF9zdGFydCkgewotICAgICAgICAgICAgaW50IHN0YXJ0ID0gaTsKLSAgICAgICAg
ICAgIGludCBlbmQgPSBpOwotICAgICAgICAgICAgaW50IHdvcmRMZW5ndGg7Ci0KLSAgICAgICAg
ICAgIHdoaWxlIChhdHRycy5nZXQoKVtlbmRdLmlzX3dvcmRfZW5kIDwgMSAgfHwgd29yZEVuZElz
QUNvbnRyYWN0aW9uQXBvc3Ryb3BoZShjU3RyaW5nLmdldCgpLCBlbmQpKQotICAgICAgICAgICAg
ICAgIGVuZCsrOwotCi0gICAgICAgICAgICB3b3JkTGVuZ3RoID0gZW5kIC0gc3RhcnQ7Ci0gICAg
ICAgICAgICAvLyBTZXQgdGhlIGl0ZXJhdG9yIHRvIGJlIGF0IHRoZSBjdXJyZW50IHdvcmQgZW5k
LCBzbyB3ZSBkb24ndAotICAgICAgICAgICAgLy8gY2hlY2sgY2hhcmFjdGVycyB0d2ljZS4KLSAg
ICAgICAgICAgIGkgPSBlbmQ7Ci0KLSAgICAgICAgICAgIGdjaGFyKiBjc3RhcnQgPSBnX3V0Zjhf
b2Zmc2V0X3RvX3BvaW50ZXIoY1N0cmluZy5nZXQoKSwgc3RhcnQpOwotICAgICAgICAgICAgZ2lu
dCBieXRlcyA9IHN0YXRpY19jYXN0PGdpbnQ+KGdfdXRmOF9vZmZzZXRfdG9fcG9pbnRlcihjU3Ry
aW5nLmdldCgpLCBlbmQpIC0gY3N0YXJ0KTsKLSAgICAgICAgICAgIEdPd25QdHI8Z2NoYXI+IHdv
cmQoZ19uZXcwKGdjaGFyLCBieXRlcyArIDEpKTsKLQotICAgICAgICAgICAgZ191dGY4X3N0cm5j
cHkod29yZC5nZXQoKSwgY3N0YXJ0LCB3b3JkTGVuZ3RoKTsKLQotICAgICAgICAgICAgZm9yICg7
IGRpY3RJdGVyICE9IG1fZW5jaGFudERpY3Rpb25hcmllcy5lbmQoKTsgKytkaWN0SXRlcikgewot
ICAgICAgICAgICAgICAgIGlmIChlbmNoYW50X2RpY3RfY2hlY2soKmRpY3RJdGVyLCB3b3JkLmdl
dCgpLCB3b3JkTGVuZ3RoKSkgewotICAgICAgICAgICAgICAgICAgICBtaXNzcGVsbGluZ0xvY2F0
aW9uID0gc3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1pc3NwZWxsaW5nTGVuZ3RoID0gd29y
ZExlbmd0aDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAv
LyBTdG9wIGNoZWNraW5nLCB0aGlzIHdvcmQgaXMgb2sgaW4gYXQgbGVhc3Qgb25lIGRpY3QuCi0g
ICAgICAgICAgICAgICAgICAgIG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKLSAgICAgICAgICAg
ICAgICAgICAgbWlzc3BlbGxpbmdMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLVZlY3RvcjxTdHJpbmc+IFRleHRDaGVja2VyRW5jaGFudDo6Z2V0R3Vlc3Nlc0ZvcldvcmQo
Y29uc3QgU3RyaW5nJiB3b3JkKQotewotICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXM7Ci0gICAg
aWYgKG1fZW5jaGFudERpY3Rpb25hcmllcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBndWVz
c2VzOwotCi0gICAgZm9yIChWZWN0b3I8RW5jaGFudERpY3QqPjo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IG1fZW5jaGFudERpY3Rpb25hcmllcy5iZWdpbigpOyBpdGVyICE9IG1fZW5jaGFudERpY3Rp
b25hcmllcy5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIHNpemVfdCBudW1iZXJPZlN1Z2dlc3Rp
b25zOwotICAgICAgICBzaXplX3QgaTsKLQotICAgICAgICBnY2hhcioqIHN1Z2dlc3Rpb25zID0g
ZW5jaGFudF9kaWN0X3N1Z2dlc3QoKml0ZXIsIHdvcmQudXRmOCgpLmRhdGEoKSwgLTEsICZudW1i
ZXJPZlN1Z2dlc3Rpb25zKTsKLSAgICAgICAgaWYgKG51bWJlck9mU3VnZ2VzdGlvbnMgPD0gMCkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChudW1iZXJPZlN1Z2dlc3Rpb25z
ID4gbWF4aW11bU51bWJlck9mU3VnZ2VzdGlvbnMpCi0gICAgICAgICAgICBudW1iZXJPZlN1Z2dl
c3Rpb25zID0gbWF4aW11bU51bWJlck9mU3VnZ2VzdGlvbnM7Ci0KLSAgICAgICAgZm9yIChpID0g
MDsgaSA8IG51bWJlck9mU3VnZ2VzdGlvbnM7IGkrKykKLSAgICAgICAgICAgIGd1ZXNzZXMuYXBw
ZW5kKFN0cmluZyhzdWdnZXN0aW9uc1tpXSkpOwotCi0gICAgICAgIGVuY2hhbnRfZGljdF9mcmVl
X3N1Z2dlc3Rpb25zKCppdGVyLCBzdWdnZXN0aW9ucyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGd1
ZXNzZXM7Ci19Ci0KLXZvaWQgVGV4dENoZWNrZXJFbmNoYW50Ojp1cGRhdGVTcGVsbENoZWNraW5n
TGFuZ3VhZ2VzKGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2VzKQotewotICAgIFZlY3RvcjxFbmNoYW50
RGljdCo+IHNwZWxsRGljdGlvbmFyaWVzOwotCi0gICAgaWYgKCFsYW5ndWFnZXMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlc1ZlY3RvcjsKLSAgICAgICAgbGFu
Z3VhZ2VzLnNwbGl0KHN0YXRpY19jYXN0PFVDaGFyPignLCcpLCBsYW5ndWFnZXNWZWN0b3IpOwot
ICAgICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbGFuZ3Vh
Z2VzVmVjdG9yLmJlZ2luKCk7IGl0ZXIgIT0gbGFuZ3VhZ2VzVmVjdG9yLmVuZCgpOyArK2l0ZXIp
IHsKLSAgICAgICAgICAgIEdPd25QdHI8Z2NoYXI+IGN1cnJlbnRMYW5ndWFnZShnX3N0cmR1cChp
dGVyLT51dGY4KCkuZGF0YSgpKSk7Ci0gICAgICAgICAgICBpZiAoZW5jaGFudF9icm9rZXJfZGlj
dF9leGlzdHMobV9icm9rZXIsIGN1cnJlbnRMYW5ndWFnZS5nZXQoKSkpIHsKLSAgICAgICAgICAg
ICAgICBFbmNoYW50RGljdCogZGljdCA9IGVuY2hhbnRfYnJva2VyX3JlcXVlc3RfZGljdChtX2Jy
b2tlciwgY3VycmVudExhbmd1YWdlLmdldCgpKTsKLSAgICAgICAgICAgICAgICBzcGVsbERpY3Rp
b25hcmllcy5hcHBlbmQoZGljdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UgewotICAgICAgICBjb25zdCBjaGFyKiBsYW5ndWFnZSA9IHBhbmdvX2xhbmd1YWdlX3RvX3N0
cmluZyhwYW5nb19sYW5ndWFnZV9nZXRfZGVmYXVsdCgpKTsKLSAgICAgICAgaWYgKGVuY2hhbnRf
YnJva2VyX2RpY3RfZXhpc3RzKG1fYnJva2VyLCBsYW5ndWFnZSkpIHsKLSAgICAgICAgICAgIEVu
Y2hhbnREaWN0KiBkaWN0ID0gZW5jaGFudF9icm9rZXJfcmVxdWVzdF9kaWN0KG1fYnJva2VyLCBs
YW5ndWFnZSk7Ci0gICAgICAgICAgICBzcGVsbERpY3Rpb25hcmllcy5hcHBlbmQoZGljdCk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBObyBkaWN0aW9uYXJpZXMgc2VsZWN0ZWQs
IHdlIGdldCBvbmUgZnJvbSB0aGUgbGlzdC4KLSAgICAgICAgICAgIFZlY3RvcjxDU3RyaW5nPiBh
bGxEaWN0aW9uYXJpZXM7Ci0gICAgICAgICAgICBlbmNoYW50X2Jyb2tlcl9saXN0X2RpY3RzKG1f
YnJva2VyLCBnZXRBdmFpbGFibGVEaWN0aW9uYXJpZXNDYWxsYmFjaywgJmFsbERpY3Rpb25hcmll
cyk7Ci0gICAgICAgICAgICBpZiAoIWFsbERpY3Rpb25hcmllcy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgICAgICBFbmNoYW50RGljdCogZGljdCA9IGVuY2hhbnRfYnJva2VyX3JlcXVlc3RfZGlj
dChtX2Jyb2tlciwgYWxsRGljdGlvbmFyaWVzWzBdLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAg
c3BlbGxEaWN0aW9uYXJpZXMuYXBwZW5kKGRpY3QpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotICAgIGZyZWVFbmNoYW50QnJva2VyRGljdGlvbmFyaWVzKCk7Ci0gICAgbV9lbmNo
YW50RGljdGlvbmFyaWVzID0gc3BlbGxEaWN0aW9uYXJpZXM7Ci19Ci0KLXZvaWQgVGV4dENoZWNr
ZXJFbmNoYW50OjpmcmVlRW5jaGFudEJyb2tlckRpY3Rpb25hcmllcygpCi17Ci0gICAgZm9yIChW
ZWN0b3I8RW5jaGFudERpY3QqPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fZW5jaGFudERpY3Rp
b25hcmllcy5iZWdpbigpOyBpdGVyICE9IG1fZW5jaGFudERpY3Rpb25hcmllcy5lbmQoKTsgKytp
dGVyKQotICAgICAgICBlbmNoYW50X2Jyb2tlcl9mcmVlX2RpY3QobV9icm9rZXIsICppdGVyKTsK
LX0KLQotI2VuZGlmIC8vIEVOQUJMRShTUEVMTENIRUNLKQotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0Q2hlY2tlckVuY2hhbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRDaGVja2VyRW5jaGFudC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3Mzk3NTVlNDI0YWI5ZGM5ZjNkMTk2MmJlMzFhZTAxNDkwMzZk
OWJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRDaGVja2VyRW5jaGFudC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEg
Uy5MLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jaWZuZGVmIFRleHRDaGVja2VyRW5jaGFudF9oCi0jZGVmaW5lIFRleHRDaGVja2VyRW5j
aGFudF9oCi0KLSNpZiBFTkFCTEUoU1BFTExDSEVDSykKLQotI2luY2x1ZGUgPGVuY2hhbnQuaD4K
LSNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFRleHRDaGVja2VyRW5jaGFudCB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0KLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxUZXh0Q2hlY2tlckVuY2hhbnQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5l
dyBUZXh0Q2hlY2tlckVuY2hhbnQpOyB9Ci0gICAgdmlydHVhbCB+VGV4dENoZWNrZXJFbmNoYW50
KCk7Ci0KLSAgICB2b2lkIGlnbm9yZVdvcmQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBsZWFy
bldvcmQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29u
c3QgU3RyaW5nJiwgaW50JiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQmIG1pc3NwZWxsaW5nTGVu
Z3RoKTsKLSAgICBWZWN0b3I8U3RyaW5nPiBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcm
KTsKLSAgICB2b2lkIHVwZGF0ZVNwZWxsQ2hlY2tpbmdMYW5ndWFnZXMoY29uc3QgU3RyaW5nJiBs
YW5ndWFnZXMpOwotCi1wcml2YXRlOgotICAgIFRleHRDaGVja2VyRW5jaGFudCgpOwotICAgIHZv
aWQgZnJlZUVuY2hhbnRCcm9rZXJEaWN0aW9uYXJpZXMoKTsKLQotICAgIEVuY2hhbnRCcm9rZXIq
IG1fYnJva2VyOwotICAgIFZlY3RvcjxFbmNoYW50RGljdCo+IG1fZW5jaGFudERpY3Rpb25hcmll
czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTUEVM
TENIRUNLKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRzcGVsbGNoZWNrZXJlbmNoYW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRzcGVsbGNoZWNrZXJlbmNoYW50LmNwcAppbmRleCAwN2QzNGQxNTZmYmUzNWY3MjdkZDc2
MmZhZjBkMTMzMWUyMjI5MDA4Li4wZWI0OTg2ZDFkOWJjMDk2ZDQzOWJhNWU5ZGExYmE2NGQ0OGE4
MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0c3BlbGxjaGVj
a2VyZW5jaGFudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHNwZWxs
Y2hlY2tlcmVuY2hhbnQuY3BwCkBAIC0yMSwxNSArMjEsMTIgQEAKIAogI2lmIEVOQUJMRShTUEVM
TENIRUNLKQogCi0jaW5jbHVkZSAiVGV4dENoZWNrZXJFbmNoYW50LmgiCiAjaW5jbHVkZSAid2Vi
a2l0c3BlbGxjaGVja2VyLmgiCisjaW5jbHVkZSA8ZW5jaGFudC5oPgogI2luY2x1ZGUgPGd0ay9n
dGsuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Ci0KIC8qKgogICogU0VDVElPTjp3ZWJraXRzcGVsbGNoZWNrZXJlbmNoYW50CiAg
KiBAc2hvcnRfZGVzY3JpcHRpb246IHRoZSBkZWZhdWx0IHNwZWxsIGNoZWNraW5nIGltcGxlbWVu
dGF0aW9uIGZvciBXZWJLaXRHVEsrLgpAQCAtMzgsOSArMzUsMTAgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAgKiBXZWJLaXRHVEsrLiBJdCB1c2VzIHRoZSBFbmNoYW50IGRpY3Rpb25hcmll
cyBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbSB0bwogICogY29ycmVjdCBzcGVsbGluZy4KICAqLwor
c3RhdGljIEVuY2hhbnRCcm9rZXIqIGJyb2tlciA9IDA7CiAKIHN0cnVjdCBfV2ViS2l0U3BlbGxD
aGVja2VyRW5jaGFudFByaXZhdGUgewotICAgIE93blB0cjxUZXh0Q2hlY2tlckVuY2hhbnQ+IHRl
eHRDaGVja2VyRW5jaGFudDsKKyAgICBHU0xpc3QqIGVuY2hhbnREaWN0czsKIH07CiAKIHN0YXRp
YyB2b2lkIHdlYmtpdF9zcGVsbF9jaGVja2VyX2VuY2hhbnRfc3BlbGxfY2hlY2tlcl9pbnRlcmZh
Y2VfaW5pdChXZWJLaXRTcGVsbENoZWNrZXJJbnRlcmZhY2UqIGludGVyZmFjZSk7CkBAIC00OSwx
NiArNDcsMzUgQEAgR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoV2ViS2l0U3BlbGxDaGVja2VyRW5j
aGFudCwgd2Via2l0X3NwZWxsX2NoZWNrZXJfZW5jaGFudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShXRUJLSVRfVFlQRV9TUEVMTF9DSEVDS0VSLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9zcGVsbF9j
aGVja2VyX2VuY2hhbnRfc3BlbGxfY2hlY2tlcl9pbnRlcmZhY2VfaW5pdCkpCiAKK3N0YXRpYyB2
b2lkIGNyZWF0ZUVuY2hhbnRCcm9rZXJJZk5lZWRlZCgpCit7CisgICAgaWYgKCFicm9rZXIpCisg
ICAgICAgIGJyb2tlciA9IGVuY2hhbnRfYnJva2VyX2luaXQoKTsKK30KKworc3RhdGljIHZvaWQg
ZnJlZVNwZWxsQ2hlY2tpbmdMYW5ndWFnZShncG9pbnRlciBkYXRhLCBncG9pbnRlcikKK3sKKyAg
ICBjcmVhdGVFbmNoYW50QnJva2VySWZOZWVkZWQoKTsKKworICAgIGVuY2hhbnRfYnJva2VyX2Zy
ZWVfZGljdChicm9rZXIsIHN0YXRpY19jYXN0PEVuY2hhbnREaWN0Kj4oZGF0YSkpOworfQorCiBz
dGF0aWMgdm9pZCB3ZWJraXRfc3BlbGxfY2hlY2tlcl9lbmNoYW50X2ZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKIHsKICAgICBXZWJLaXRTcGVsbENoZWNrZXJFbmNoYW50UHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9TUEVMTF9DSEVDS0VSX0VOQ0hBTlQob2JqZWN0KS0+cHJpdjsKLSAgICBwcml2LT5+
V2ViS2l0U3BlbGxDaGVja2VyRW5jaGFudFByaXZhdGUoKTsKKworICAgIGdfc2xpc3RfZm9yZWFj
aChwcml2LT5lbmNoYW50RGljdHMsIGZyZWVTcGVsbENoZWNraW5nTGFuZ3VhZ2UsIDApOworICAg
IGdfc2xpc3RfZnJlZShwcml2LT5lbmNoYW50RGljdHMpOworCisgICAgV0VCS0lUX1NQRUxMX0NI
RUNLRVJfRU5DSEFOVChvYmplY3QpLT5wcml2LT5+V2ViS2l0U3BlbGxDaGVja2VyRW5jaGFudFBy
aXZhdGUoKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3NwZWxsX2NoZWNrZXJfZW5jaGFudF9j
bGFzc19pbml0KFdlYktpdFNwZWxsQ2hlY2tlckVuY2hhbnRDbGFzcyoga2xhc3MpCiB7CiAgICAg
R09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKwogICAg
IG9iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9zcGVsbF9jaGVja2VyX2VuY2hhbnRfZmlu
YWxpemU7CisKICAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJL
aXRTcGVsbENoZWNrZXJFbmNoYW50UHJpdmF0ZSkpOwogfQogCkBAIC02OCwzOCArODUsMTQ5IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF9zcGVsbF9jaGVja2VyX2VuY2hhbnRfaW5pdChXZWJLaXRTcGVs
bENoZWNrZXJFbmNoYW50KiBjaGVja2VyCiAgICAgY2hlY2tlci0+cHJpdiA9IHByaXY7CiAgICAg
bmV3IChwcml2KSBXZWJLaXRTcGVsbENoZWNrZXJFbmNoYW50UHJpdmF0ZSgpOwogCi0gICAgcHJp
di0+dGV4dENoZWNrZXJFbmNoYW50ID0gVGV4dENoZWNrZXJFbmNoYW50OjpjcmVhdGUoKTsKKyAg
ICBwcml2LT5lbmNoYW50RGljdHMgPSAwOworfQorCitzdGF0aWMgYm9vbCB3b3JkRW5kSXNBQ29u
dHJhY3Rpb25BcG9zdHJvcGhlKGNvbnN0IGNoYXIqIHN0cmluZywgbG9uZyBvZmZzZXQpCit7Cisg
ICAgaWYgKGdfdXRmOF9nZXRfY2hhcihnX3V0Zjhfb2Zmc2V0X3RvX3BvaW50ZXIoc3RyaW5nLCBv
ZmZzZXQpKSAhPSBnX3V0ZjhfZ2V0X2NoYXIoIiciKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gSWYgdGhpcyBpcyB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgaXQg
Y2Fubm90IGJlIHRoZSBhcG9zdHJvcGhlIHBhcnQgb2YgYSBjb250cmFjdGlvbi4KKyAgICBpZiAo
b2Zmc2V0ID09IGdfdXRmOF9zdHJsZW4oc3RyaW5nLCAtMSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiBnX3VuaWNoYXJfaXNhbHBoYShnX3V0ZjhfZ2V0X2NoYXIoZ191dGY4
X29mZnNldF90b19wb2ludGVyKHN0cmluZywgb2Zmc2V0ICsgMSkpKTsKIH0KIAogc3RhdGljIHZv
aWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKFdlYktpdFNwZWxsQ2hlY2tlciogY2hlY2tlciwgY29u
c3QgY2hhciogc3RyaW5nLCBpbnQqIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludCogbWlzc3BlbGxp
bmdMZW5ndGgpCiB7CiAgICAgV2ViS2l0U3BlbGxDaGVja2VyRW5jaGFudFByaXZhdGUqIHByaXYg
PSBXRUJLSVRfU1BFTExfQ0hFQ0tFUl9FTkNIQU5UKGNoZWNrZXIpLT5wcml2OwotICAgIHByaXYt
PnRleHRDaGVja2VyRW5jaGFudC0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nKFN0cmluZzo6ZnJvbVVU
Rjgoc3RyaW5nKSwgKm1pc3NwZWxsaW5nTG9jYXRpb24sICptaXNzcGVsbGluZ0xlbmd0aCk7CisK
KyAgICBHU0xpc3QqIGRpY3RzID0gcHJpdi0+ZW5jaGFudERpY3RzOworICAgIGlmICghZGljdHMp
CisgICAgICAgIHJldHVybjsKKworICAgIGludCBsZW5ndGggPSBnX3V0Zjhfc3RybGVuKHN0cmlu
ZywgLTEpOworCisgICAgUGFuZ29MYW5ndWFnZSogbGFuZ3VhZ2UocGFuZ29fbGFuZ3VhZ2VfZ2V0
X2RlZmF1bHQoKSk7CisgICAgR093blB0cjxQYW5nb0xvZ0F0dHI+IGF0dHJzKGdfbmV3KFBhbmdv
TG9nQXR0ciwgbGVuZ3RoICsgMSkpOworCisgICAgLy8gcGFuZ29fZ2V0X2xvZ19hdHRycyB1c2Vz
IGFuIGFkaXRpb25hbCBwb3NpdGlvbiBhdCB0aGUgZW5kIG9mIHRoZSB0ZXh0LgorICAgIHBhbmdv
X2dldF9sb2dfYXR0cnMoc3RyaW5nLCAtMSwgLTEsIGxhbmd1YWdlLCBhdHRycy5nZXQoKSwgbGVu
Z3RoICsgMSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aCArIDE7IGkrKykgewor
ICAgICAgICAvLyBXZSBnbyB0aHJvdWdoIGVhY2ggY2hhcmFjdGVyIHVudGlsIHdlIGZpbmQgYW4g
aXNfd29yZF9zdGFydCwKKyAgICAgICAgLy8gdGhlbiB3ZSBnZXQgaW50byBhbiBpbm5lciBsb29w
IHRvIGZpbmQgdGhlIGlzX3dvcmRfZW5kIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgLy8gdG8gaXQu
CisgICAgICAgIGlmIChhdHRycy5nZXQoKVtpXS5pc193b3JkX3N0YXJ0KSB7CisgICAgICAgICAg
ICBpbnQgc3RhcnQgPSBpOworICAgICAgICAgICAgaW50IGVuZCA9IGk7CisgICAgICAgICAgICBp
bnQgd29yZExlbmd0aDsKKworICAgICAgICAgICAgd2hpbGUgKGF0dHJzLmdldCgpW2VuZF0uaXNf
d29yZF9lbmQgPCAxIHx8IHdvcmRFbmRJc0FDb250cmFjdGlvbkFwb3N0cm9waGUoc3RyaW5nLCBl
bmQpKQorICAgICAgICAgICAgICAgIGVuZCsrOworCisgICAgICAgICAgICB3b3JkTGVuZ3RoID0g
ZW5kIC0gc3RhcnQ7CisgICAgICAgICAgICAvLyBTZXQgdGhlIGl0ZXJhdG9yIHRvIGJlIGF0IHRo
ZSBjdXJyZW50IHdvcmQgZW5kLCBzbyB3ZSBkb24ndAorICAgICAgICAgICAgLy8gY2hlY2sgY2hh
cmFjdGVycyB0d2ljZS4KKyAgICAgICAgICAgIGkgPSBlbmQ7CisKKyAgICAgICAgICAgIGdjaGFy
KiBjc3RhcnQgPSBnX3V0Zjhfb2Zmc2V0X3RvX3BvaW50ZXIoc3RyaW5nLCBzdGFydCk7CisgICAg
ICAgICAgICBnaW50IGJ5dGVzID0gc3RhdGljX2Nhc3Q8Z2ludD4oZ191dGY4X29mZnNldF90b19w
b2ludGVyKHN0cmluZywgZW5kKSAtIGNzdGFydCk7CisgICAgICAgICAgICBHT3duUHRyPGdjaGFy
PiB3b3JkKGdfbmV3MChnY2hhciwgYnl0ZXMgKyAxKSk7CisKKyAgICAgICAgICAgIGdfdXRmOF9z
dHJuY3B5KHdvcmQuZ2V0KCksIGNzdGFydCwgd29yZExlbmd0aCk7CisKKyAgICAgICAgICAgIGZv
ciAoOyBkaWN0czsgZGljdHMgPSBkaWN0cy0+bmV4dCkgeworICAgICAgICAgICAgICAgIEVuY2hh
bnREaWN0KiBkaWN0ID0gc3RhdGljX2Nhc3Q8RW5jaGFudERpY3QqPihkaWN0cy0+ZGF0YSk7Cisg
ICAgICAgICAgICAgICAgaWYgKGVuY2hhbnRfZGljdF9jaGVjayhkaWN0LCB3b3JkLmdldCgpLCB3
b3JkTGVuZ3RoKSkgeworICAgICAgICAgICAgICAgICAgICAqbWlzc3BlbGxpbmdMb2NhdGlvbiA9
IHN0YXJ0OworICAgICAgICAgICAgICAgICAgICAqbWlzc3BlbGxpbmdMZW5ndGggPSB3b3JkTGVu
Z3RoOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFN0
b3AgY2hlY2tpbmcsIHRoaXMgd29yZCBpcyBvayBpbiBhdCBsZWFzdCBvbmUgZGljdC4KKyAgICAg
ICAgICAgICAgICAgICAgKm1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKKyAgICAgICAgICAgICAg
ICAgICAgKm1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogfQog
CiBzdGF0aWMgY2hhcioqIGdldEd1ZXNzZXNGb3JXb3JkKFdlYktpdFNwZWxsQ2hlY2tlciogY2hl
Y2tlciwgY29uc3QgY2hhciogd29yZCwgY29uc3QgY2hhciogY29udGV4dCkKIHsKICAgICBXZWJL
aXRTcGVsbENoZWNrZXJFbmNoYW50UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9TUEVMTF9DSEVDS0VS
X0VOQ0hBTlQoY2hlY2tlciktPnByaXY7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBndWVzc2VzID0g
cHJpdi0+dGV4dENoZWNrZXJFbmNoYW50LT5nZXRHdWVzc2VzRm9yV29yZChTdHJpbmc6OmZyb21V
VEY4KHdvcmQpKTsKKyAgICBHU0xpc3QqIGRpY3RzID0gcHJpdi0+ZW5jaGFudERpY3RzOworICAg
IGNoYXIqKiBndWVzc2VzID0gMDsKIAotICAgIGlmIChndWVzc2VzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgZm9yICg7IGRpY3RzOyBkaWN0cyA9IGRpY3RzLT5uZXh0KSB7Cisg
ICAgICAgIHNpemVfdCBudW1iZXJPZlN1Z2dlc3Rpb25zOworICAgICAgICBzaXplX3QgaTsKIAot
ICAgIGludCBpID0gMDsKLSAgICBpbnQgbnVtYmVyT2ZHdWVzc2VzID0gZ3Vlc3Nlcy5zaXplKCk7
Ci0gICAgY2hhcioqIGd1ZXNzZXNBcnJheSA9IHN0YXRpY19jYXN0PGNoYXIqKj4oZ19tYWxsb2Mw
KChudW1iZXJPZkd1ZXNzZXMgKyAxKSAqIHNpemVvZihjaGFyKikpKTsKLSAgICBmb3IgKFZlY3Rv
cjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gZ3Vlc3Nlcy5iZWdpbigpOyBpdGVyICE9
IGd1ZXNzZXMuZW5kKCk7ICsraXRlcikKLSAgICAgICAgZ3Vlc3Nlc0FycmF5W2krK10gPSBnX3N0
cmR1cChpdGVyLT51dGY4KCkuZGF0YSgpKTsKLSAgICBndWVzc2VzQXJyYXlbaV0gPSAwOworICAg
ICAgICBFbmNoYW50RGljdCogZGljdCA9IHN0YXRpY19jYXN0PEVuY2hhbnREaWN0Kj4oZGljdHMt
PmRhdGEpOworICAgICAgICBnY2hhcioqIHN1Z2dlc3Rpb25zID0gZW5jaGFudF9kaWN0X3N1Z2dl
c3QoZGljdCwgd29yZCwgLTEsICZudW1iZXJPZlN1Z2dlc3Rpb25zKTsKIAotICAgIHJldHVybiBn
dWVzc2VzQXJyYXk7CisgICAgICAgIGlmIChudW1iZXJPZlN1Z2dlc3Rpb25zID4gMCkgeworICAg
ICAgICAgICAgaWYgKG51bWJlck9mU3VnZ2VzdGlvbnMgPiAxMCkKKyAgICAgICAgICAgICAgICBu
dW1iZXJPZlN1Z2dlc3Rpb25zID0gMTA7CisKKyAgICAgICAgICAgIGd1ZXNzZXMgPSBzdGF0aWNf
Y2FzdDxjaGFyKio+KGdfbWFsbG9jMCgobnVtYmVyT2ZTdWdnZXN0aW9ucyArIDEpICogc2l6ZW9m
KGNoYXIqKSkpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bWJlck9mU3VnZ2VzdGlv
bnMgJiYgaSA8IDEwOyBpKyspCisgICAgICAgICAgICAgICAgZ3Vlc3Nlc1tpXSA9IGdfc3RyZHVw
KHN1Z2dlc3Rpb25zW2ldKTsKKworICAgICAgICAgICAgZ3Vlc3Nlc1tpXSA9IDA7CisKKyAgICAg
ICAgICAgIGVuY2hhbnRfZGljdF9mcmVlX3N1Z2dlc3Rpb25zKGRpY3QsIHN1Z2dlc3Rpb25zKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBndWVzc2VzOworfQorCitzdGF0aWMgdm9p
ZCBnZXRBdmFpbGFibGVEaWN0aW9uYXJpZXNDYWxsYmFjayhjb25zdCBjaGFyKiBjb25zdCBsYW5n
dWFnZVRhZywgY29uc3QgY2hhciogY29uc3QsIGNvbnN0IGNoYXIqIGNvbnN0LCBjb25zdCBjaGFy
KiBjb25zdCwgdm9pZCogZGF0YSkKK3sKKyAgICBWZWN0b3I8Q1N0cmluZz4qIGRpY3RzID0gc3Rh
dGljX2Nhc3Q8VmVjdG9yPENTdHJpbmc+Kj4oZGF0YSk7CisKKyAgICBkaWN0cy0+YXBwZW5kKGxh
bmd1YWdlVGFnKTsKIH0KIAogc3RhdGljIHZvaWQgdXBkYXRlU3BlbGxDaGVja2luZ0xhbmd1YWdl
cyhXZWJLaXRTcGVsbENoZWNrZXIqIGNoZWNrZXIsIGNvbnN0IGNoYXIqIGxhbmd1YWdlcykKIHsK
KyAgICBHU0xpc3QqIHNwZWxsRGljdGlvbmFyaWVzID0gMDsKKwogICAgIFdlYktpdFNwZWxsQ2hl
Y2tlckVuY2hhbnRQcml2YXRlKiBwcml2ID0gV0VCS0lUX1NQRUxMX0NIRUNLRVJfRU5DSEFOVChj
aGVja2VyKS0+cHJpdjsKLSAgICBwcml2LT50ZXh0Q2hlY2tlckVuY2hhbnQtPnVwZGF0ZVNwZWxs
Q2hlY2tpbmdMYW5ndWFnZXMoU3RyaW5nOjpmcm9tVVRGOChsYW5ndWFnZXMpKTsKKworICAgIGNy
ZWF0ZUVuY2hhbnRCcm9rZXJJZk5lZWRlZCgpOworCisgICAgaWYgKGxhbmd1YWdlcykgeworICAg
ICAgICBjaGFyKiogbGFuZ3MgPSBnX3N0cnNwbGl0KGxhbmd1YWdlcywgIiwiLCAtMSk7CisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBsYW5nc1tpXTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZW5j
aGFudF9icm9rZXJfZGljdF9leGlzdHMoYnJva2VyLCBsYW5nc1tpXSkpIHsKKyAgICAgICAgICAg
ICAgICBFbmNoYW50RGljdCogZGljdCA9IGVuY2hhbnRfYnJva2VyX3JlcXVlc3RfZGljdChicm9r
ZXIsIGxhbmdzW2ldKTsKKyAgICAgICAgICAgICAgICBzcGVsbERpY3Rpb25hcmllcyA9IGdfc2xp
c3RfYXBwZW5kKHNwZWxsRGljdGlvbmFyaWVzLCBkaWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBnX3N0cmZyZWV2KGxhbmdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBj
b25zdCBjaGFyKiBsYW5ndWFnZSA9IHBhbmdvX2xhbmd1YWdlX3RvX3N0cmluZyhndGtfZ2V0X2Rl
ZmF1bHRfbGFuZ3VhZ2UoKSk7CisgICAgICAgIGlmIChlbmNoYW50X2Jyb2tlcl9kaWN0X2V4aXN0
cyhicm9rZXIsIGxhbmd1YWdlKSkgeworICAgICAgICAgICAgRW5jaGFudERpY3QqIGRpY3QgPSBl
bmNoYW50X2Jyb2tlcl9yZXF1ZXN0X2RpY3QoYnJva2VyLCBsYW5ndWFnZSk7CisgICAgICAgICAg
ICBzcGVsbERpY3Rpb25hcmllcyA9IGdfc2xpc3RfYXBwZW5kKHNwZWxsRGljdGlvbmFyaWVzLCBk
aWN0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIE5vIGRpY3Rpb25hcmllcyBz
ZWxlY3RlZCwgd2UgZ2V0IG9uZSBmcm9tIHRoZSBsaXN0LgorICAgICAgICAgICAgVmVjdG9yPENT
dHJpbmc+IGFsbERpY3Rpb25hcmllczsKKyAgICAgICAgICAgIGVuY2hhbnRfYnJva2VyX2xpc3Rf
ZGljdHMoYnJva2VyLCBnZXRBdmFpbGFibGVEaWN0aW9uYXJpZXNDYWxsYmFjaywgJmFsbERpY3Rp
b25hcmllcyk7CisgICAgICAgICAgICBpZiAoIWFsbERpY3Rpb25hcmllcy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgICAgICBFbmNoYW50RGljdCogZGljdCA9IGVuY2hhbnRfYnJva2VyX3JlcXVl
c3RfZGljdChicm9rZXIsIGFsbERpY3Rpb25hcmllc1swXS5kYXRhKCkpOworICAgICAgICAgICAg
ICAgIHNwZWxsRGljdGlvbmFyaWVzID0gZ19zbGlzdF9hcHBlbmQoc3BlbGxEaWN0aW9uYXJpZXMs
IGRpY3QpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGdfc2xpc3RfZm9y
ZWFjaChwcml2LT5lbmNoYW50RGljdHMsIGZyZWVTcGVsbENoZWNraW5nTGFuZ3VhZ2UsIDApOwor
ICAgIGdfc2xpc3RfZnJlZShwcml2LT5lbmNoYW50RGljdHMpOworICAgIHByaXYtPmVuY2hhbnRE
aWN0cyA9IHNwZWxsRGljdGlvbmFyaWVzOwogfQogCiBzdGF0aWMgY2hhciogZ2V0QXV0b2NvcnJl
Y3RTdWdnZXN0aW9uc0Zvck1pc3NwZWxsZWRXb3JkKFdlYktpdFNwZWxsQ2hlY2tlciogY2hlY2tl
ciwgY29uc3QgY2hhciogd29yZCkKQEAgLTExMCwxMyArMjM4LDI1IEBAIHN0YXRpYyBjaGFyKiBn
ZXRBdXRvY29ycmVjdFN1Z2dlc3Rpb25zRm9yTWlzc3BlbGxlZFdvcmQoV2ViS2l0U3BlbGxDaGVj
a2VyKiBjaGVjCiBzdGF0aWMgdm9pZCBsZWFybldvcmQoV2ViS2l0U3BlbGxDaGVja2VyKiBjaGVj
a2VyLCBjb25zdCBjaGFyKiB3b3JkKQogewogICAgIFdlYktpdFNwZWxsQ2hlY2tlckVuY2hhbnRQ
cml2YXRlKiBwcml2ID0gV0VCS0lUX1NQRUxMX0NIRUNLRVJfRU5DSEFOVChjaGVja2VyKS0+cHJp
djsKLSAgICBwcml2LT50ZXh0Q2hlY2tlckVuY2hhbnQtPmxlYXJuV29yZChTdHJpbmc6OmZyb21V
VEY4KHdvcmQpKTsKKyAgICBHU0xpc3QqIGRpY3RzID0gcHJpdi0+ZW5jaGFudERpY3RzOworCisg
ICAgZm9yICg7IGRpY3RzOyBkaWN0cyA9IGRpY3RzLT5uZXh0KSB7CisgICAgICAgIEVuY2hhbnRE
aWN0KiBkaWN0ID0gc3RhdGljX2Nhc3Q8RW5jaGFudERpY3QqPihkaWN0cy0+ZGF0YSk7CisKKyAg
ICAgICAgZW5jaGFudF9kaWN0X2FkZF90b19wZXJzb25hbChkaWN0LCB3b3JkLCAtMSk7CisgICAg
fQogfQogCiBzdGF0aWMgdm9pZCBpZ25vcmVXb3JkKFdlYktpdFNwZWxsQ2hlY2tlciogY2hlY2tl
ciwgY29uc3QgY2hhciogd29yZCkKIHsKICAgICBXZWJLaXRTcGVsbENoZWNrZXJFbmNoYW50UHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9TUEVMTF9DSEVDS0VSX0VOQ0hBTlQoY2hlY2tlciktPnByaXY7
Ci0gICAgcHJpdi0+dGV4dENoZWNrZXJFbmNoYW50LT5pZ25vcmVXb3JkKFN0cmluZzo6ZnJvbVVU
Rjgod29yZCkpOworICAgIEdTTGlzdCogZGljdHMgPSBwcml2LT5lbmNoYW50RGljdHM7CisKKyAg
ICBmb3IgKDsgZGljdHM7IGRpY3RzID0gZGljdHMtPm5leHQpIHsKKyAgICAgICAgRW5jaGFudERp
Y3QqIGRpY3QgPSBzdGF0aWNfY2FzdDxFbmNoYW50RGljdCo+KGRpY3RzLT5kYXRhKTsKKworICAg
ICAgICBlbmNoYW50X2RpY3RfYWRkX3RvX3Nlc3Npb24oZGljdCwgd29yZCwgLTEpOworICAgIH0K
IH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3NwZWxsX2NoZWNrZXJfZW5jaGFudF9zcGVsbF9jaGVj
a2VyX2ludGVyZmFjZV9pbml0KFdlYktpdFNwZWxsQ2hlY2tlckludGVyZmFjZSogaW50ZXJmYWNl
KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>