<?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>42436</bug_id>
          
          <creation_ts>2010-07-15 18:15:20 -0700</creation_ts>
          <short_desc>listifyParagraph should use moveParagraphWithClones instead of moveParagraph</short_desc>
          <delta_ts>2017-07-18 08:27:25 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</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>42913</dependson>
    
    <dependson>33668</dependson>
    
    <dependson>42608</dependson>
          <blocked>27522</blocked>
    
    <blocked>32422</blocked>
    
    <blocked>49315</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>enrica</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>252264</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-15 18:15:20 -0700</bug_when>
    <thetext>To fix the bug 27522 and the bug 32422, listifyParagraph should be modified to use moveParagraphWithClones instead of moveParagraph.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252688</commentid>
    <comment_count>1</comment_count>
      <attachid>61844</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-16 14:01:13 -0700</bug_when>
    <thetext>Created attachment 61844
work in progress, request for comments

Work in progress.  I made some good progress but moveParagraphWithClones grabs extra div&apos;s in many cases.  It seems like I&apos;m not giving the correct outerBlock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253033</commentid>
    <comment_count>2</comment_count>
      <attachid>61921</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-18 17:54:07 -0700</bug_when>
    <thetext>Created attachment 61921
work in progress 2

More progress.  5 rebaselines are added to the patch but there are 3 additional tests in /editing/execCommand/ that require rebaseline: create-list-from-range-selection.html, create-list-with-hr.html, and insert-list-empty-div.html.  These tests should be dumpAsText or dumpAsMarkup tests instead and should be converted in a separate patch before this patch is to be landed.

It seems like I should be making a separate cleanup patch at this point.  I&apos;ll appreciate if any of you can comment on my approach / modification here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253423</commentid>
    <comment_count>3</comment_count>
      <attachid>62000</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-19 15:23:15 -0700</bug_when>
    <thetext>Created attachment 62000
work in progress 3

I added PersistentEditingPosition to isolate the code saving and restoring selection.  It stores a VisiblePosition and returns the VisiblePosition when available.  When the deepEquivalent node gets detached from the document and the original VisiblePosition becomes invalid, it restores the position using the range length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253436</commentid>
    <comment_count>4</comment_count>
      <attachid>62007</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-19 15:51:22 -0700</bug_when>
    <thetext>Created attachment 62007
work in progress 3

Sorry, I uploaded a wrong patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253556</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-19 22:35:13 -0700</bug_when>
    <thetext>+Roland

I&apos;ll appreciate if you can comment on PersistentEditingPosition and if there&apos;s any similarity to what you were proposing few weeks ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255674</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-24 00:16:05 -0700</bug_when>
    <thetext>I just realized that my patch might cause a significant performance regression since TextIterator will iterate through all the nodes starting at the editable root to find the correct location.  I need to figure out an alternative approach here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61844</attachid>
            <date>2010-07-16 14:01:13 -0700</date>
            <delta_ts>2010-07-18 17:54:07 -0700</delta_ts>
            <desc>work in progress, request for comments</desc>
            <filename>work-in-progress-for-42436</filename>
            <type>text/plain</type>
            <size>7334</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24g
NjM0ODIpCisrKyBXZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NDAsMjMgKzg0MCwyMyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5k
Ojptb3ZlUGFyYWdyYXBoCiAKICAgICBWaXNpYmxlUG9zaXRpb24gYmVmb3JlUGFyYWdyYXBoID0g
c3RhcnRPZlBhcmFncmFwaFRvTW92ZS5wcmV2aW91cygpOwogICAgIFZpc2libGVQb3NpdGlvbiBh
ZnRlclBhcmFncmFwaChlbmRPZlBhcmFncmFwaFRvTW92ZS5uZXh0KCkpOwotICAgIAorCiAgICAg
Ly8gV2UgdXBzdHJlYW0oKSB0aGUgZW5kIGFuZCBkb3duc3RyZWFtKCkgdGhlIHN0YXJ0IHNvIHRo
YXQgd2UgZG9uJ3QgaW5jbHVkZSBjb2xsYXBzZWQgd2hpdGVzcGFjZSBpbiB0aGUgbW92ZS4KICAg
ICAvLyBXaGVuIHdlIHBhc3RlIGEgZnJhZ21lbnQsIHNwYWNlcyBhZnRlciB0aGUgZW5kIGFuZCBi
ZWZvcmUgdGhlIHN0YXJ0IGFyZSB0cmVhdGVkIGFzIHRob3VnaCB0aGV5IHdlcmUgcmVuZGVyZWQu
CiAgICAgUG9zaXRpb24gc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFs
ZW50KCkuZG93bnN0cmVhbSgpOwogICAgIFBvc2l0aW9uIGVuZCA9IGVuZE9mUGFyYWdyYXBoVG9N
b3ZlLmRlZXBFcXVpdmFsZW50KCkudXBzdHJlYW0oKTsKIAogICAgIGNsb25lUGFyYWdyYXBoVW5k
ZXJOZXdFbGVtZW50KHN0YXJ0LCBlbmQsIG91dGVyTm9kZSwgYmxvY2tFbGVtZW50KTsKLSAgICAg
IAorCiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc3RhcnQsIGVuZCwg
RE9XTlNUUkVBTSkpOwogICAgIGRlbGV0ZVNlbGVjdGlvbihmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSk7Ci0gICAgCisKICAgICAvLyBUaGVyZSBhcmUgYnVncyBpbiBkZWxldGlvbiB3aGVuIGl0
IHJlbW92ZXMgYSBmdWxseSBzZWxlY3RlZCB0YWJsZS9saXN0LgogICAgIC8vIEl0IGV4cGFuZHMg
YW5kIHJlbW92ZXMgdGhlIGVudGlyZSB0YWJsZS9saXN0LCBidXQgd2lsbCBsZXQgY29udGVudAog
ICAgIC8vIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHRhYmxlL2xpc3QgY29sbGFwc2Ugb250byBvbmUg
bGluZS4KLSAgICAgICAKKwogICAgIGNsZWFudXBBZnRlckRlbGV0aW9uKCk7Ci0gICAgCisKICAg
ICAvLyBBZGQgYSBiciBpZiBwcnVuaW5nIGFuIGVtcHR5IGJsb2NrIGxldmVsIGVsZW1lbnQgY2F1
c2VkIGEgY29sbGFwc2UuICBGb3IgZXhhbXBsZToKICAgICAvLyBmb29eCiAgICAgLy8gPGRpdj5i
YXI8L2Rpdj4KQEAgLTg2Nyw3ICs4NjcsMTAgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6
bW92ZVBhcmFncmFwaAogICAgIGJlZm9yZVBhcmFncmFwaCA9IFZpc2libGVQb3NpdGlvbihiZWZv
cmVQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSk7CiAgICAgYWZ0ZXJQYXJhZ3JhcGggPSBWaXNp
YmxlUG9zaXRpb24oYWZ0ZXJQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSk7CiAKLSAgICBpZiAo
YmVmb3JlUGFyYWdyYXBoLmlzTm90TnVsbCgpICYmICFpc1RhYmxlRWxlbWVudChiZWZvcmVQYXJh
Z3JhcGguZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpICYmICghaXNFbmRPZlBhcmFncmFwaChiZWZv
cmVQYXJhZ3JhcGgpIHx8IGJlZm9yZVBhcmFncmFwaCA9PSBhZnRlclBhcmFncmFwaCkpIHsKKyAg
ICBpZiAoYmVmb3JlUGFyYWdyYXBoLmlzTm90TnVsbCgpCisgICAgICAgICYmICFpc1RhYmxlRWxl
bWVudChiZWZvcmVQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpCisgICAgICAgICYm
ICgoIWlzRW5kT2ZQYXJhZ3JhcGgoYmVmb3JlUGFyYWdyYXBoKSAmJiAhaXNTdGFydE9mUGFyYWdy
YXBoKGJlZm9yZVBhcmFncmFwaCkpCisgICAgICAgICAgICB8fCBiZWZvcmVQYXJhZ3JhcGggPT0g
YWZ0ZXJQYXJhZ3JhcGgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUcmltIHRleHQgYmV0d2VlbiBi
ZWZvcmVQYXJhZ3JhcGggYW5kIGFmdGVyUGFyYWdyYXBoIGlmIHRoZXkgYXJlbid0IGVxdWFsLgog
ICAgICAgICBpbnNlcnROb2RlQXQoY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpLCBiZWZv
cmVQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9lZGl0
aW5nL0luc2VydExpc3RDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0TGlzdENvbW1hbmQuY3BwCShyZXZpc2lvbiA2MzQ4MikKKysrIFdlYkNvcmUvZWRpdGlu
Zy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDggQEAg
dm9pZCBJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgICAgICBib29sIGZvcmNl
Q3JlYXRlTGlzdCA9ICFzdGFydExpc3QgfHwgc3RhcnRMaXN0ICE9IGVuZExpc3Q7CiAKICAgICAg
ICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFydE9mQ3VycmVudFBhcmFncmFwaCA9IHN0YXJ0T2ZT
ZWxlY3Rpb247Ci0gICAgICAgICAgICB3aGlsZSAoc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGggIT0g
c3RhcnRPZkxhc3RQYXJhZ3JhcGgpIHsKKyAgICAgICAgICAgIHdoaWxlIChzdGFydE9mQ3VycmVu
dFBhcmFncmFwaCAhPSBzdGFydE9mTGFzdFBhcmFncmFwaAorICAgICAgICAgICAgICAgICAgICYm
IHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoLmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gZG9BcHBseSgpIG1heSBvcGVyYXRlIG9uIGFuZCByZW1vdmUgdGhlIGxhc3QgcGFyYWdyYXBo
IG9mIHRoZSBzZWxlY3Rpb24gZnJvbSB0aGUgZG9jdW1lbnQgCiAgICAgICAgICAgICAgICAgLy8g
aWYgaXQncyBpbiB0aGUgc2FtZSBsaXN0IGl0ZW0gYXMgc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGgu
ICBSZXR1cm4gZWFybHkgdG8gYXZvaWQgYW4gCiAgICAgICAgICAgICAgICAgLy8gaW5maW5pdGUg
bG9vcCBhbmQgYmVjYXVzZSB0aGVyZSBpcyBubyBtb3JlIHdvcmsgdG8gYmUgZG9uZS4KQEAgLTE0
Niw4ICsxNDcsMzQgQEAgdm9pZCBJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseUZvclNpbmdsZQog
ICAgICAgICB1bmxpc3RpZnlQYXJhZ3JhcGgoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0
KCksIGxpc3ROb2RlLCBsaXN0Q2hpbGROb2RlKTsKICAgICB9CiAKLSAgICBpZiAoIWxpc3RDaGls
ZE5vZGUgfHwgc3dpdGNoTGlzdFR5cGUgfHwgZm9yY2VDcmVhdGVMaXN0KQorICAgIGlmICghbGlz
dENoaWxkTm9kZSB8fCBzd2l0Y2hMaXN0VHlwZSB8fCBmb3JjZUNyZWF0ZUxpc3QpIHsKKyAgICAg
ICAgRWxlbWVudCogZWRpdGFibGVSb290ID0gZWRpdGFibGVSb290Rm9yUG9zaXRpb24oZW5kaW5n
U2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgICAgIEFT
U0VSVChlZGl0YWJsZVJvb3QpOworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShkb2N1bWVudCgpLCBlZGl0YWJsZVJvb3QsIDAsIGVuZGluZ1NlbGVjdGlvbigpLnN0
YXJ0KCkuY29udGFpbmVyTm9kZSgpLCBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLmNvbXB1dGVP
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7CisgICAgICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAgIHJhbmdlID0g
UmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBlZGl0YWJsZVJvb3QsIDAsIGVuZGluZ1NlbGVjdGlv
bigpLmVuZCgpLmNvbnRhaW5lck5vZGUoKSwgZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCkuY29tcHV0
ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKKyAgICAgICAgaW50IGVuZEluZGV4ID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7CisKKy8qICAgICAgICBpbnQg
c3RhcnRJbmRleCA9IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGVuZGluZ1NlbGVjdGlvbigpLnZp
c2libGVTdGFydCgpKTsKKyAgICAgICAgaW50IGVuZEluZGV4ID0gaW5kZXhGb3JWaXNpYmxlUG9z
aXRpb24oZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKTsqLworCiAgICAgICAgIG1fbGlz
dEVsZW1lbnQgPSBsaXN0aWZ5UGFyYWdyYXBoKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFy
dCgpLCBsaXN0VGFnKTsKKworICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQo
KSwgZmlyc3RQb3NpdGlvbkluTm9kZShlZGl0YWJsZVJvb3QpLCBsYXN0UG9zaXRpb25Jbk5vZGUo
ZWRpdGFibGVSb290KSk7CisgICAgICAgIGludCBtYXhJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOworCisgICAgICAgIHN0YXJ0SW5kZXggPSBtYXhJ
bmRleCA8IHN0YXJ0SW5kZXggPyBtYXhJbmRleCA6IHN0YXJ0SW5kZXg7CisgICAgICAgIGVuZElu
ZGV4ID0gbWF4SW5kZXggPCBlbmRJbmRleCA/IG1heEluZGV4IDogZW5kSW5kZXg7CisKKyAgICAg
ICAgUmVmUHRyPFJhbmdlPiBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aChlZGl0YWJsZVJvb3QsIHN0YXJ0SW5kZXgsIDAsIHRydWUpOworICAgICAg
ICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aChlZGl0YWJsZVJvb3QsIGVuZEluZGV4LCAwLCB0cnVlKTsKKyAgICAgICAgaWYg
KCFzdGFydFJhbmdlLmdldCgpIHx8ICFlbmRSYW5nZS5nZXQoKSkgeworICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihzdGFydFJhbmdlLT5zdGFy
dFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpKTsKKyAgICB9CiB9CiAKIHZv
aWQgSW5zZXJ0TGlzdENvbW1hbmQ6OnVubGlzdGlmeVBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9z
aXRpb24mIG9yaWdpbmFsU3RhcnQsIEhUTUxFbGVtZW50KiBsaXN0Tm9kZSwgTm9kZSogbGlzdENo
aWxkTm9kZSkKQEAgLTIxOSw4ICsyNDYsOCBAQCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBJbnNl
cnRMaXN0Q29tbWFuCiAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzUG9zaXRpb24gPSBzdGFy
dC5wcmV2aW91cyh0cnVlKTsKICAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFBvc2l0aW9uID0gZW5k
Lm5leHQodHJ1ZSk7CiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBsaXN0SXRlbUVsZW1lbnQgPSBj
cmVhdGVMaXN0SXRlbUVsZW1lbnQoZG9jdW1lbnQoKSk7Ci0gICAgUmVmUHRyPEhUTUxFbGVtZW50
PiBwbGFjZWhvbGRlciA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKTsKLSAgICBhcHBl
bmROb2RlKHBsYWNlaG9sZGVyLCBsaXN0SXRlbUVsZW1lbnQpOworLy8gICAgUmVmUHRyPEhUTUxF
bGVtZW50PiBwbGFjZWhvbGRlciA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKTsKKy8v
ICAgIGFwcGVuZE5vZGUocGxhY2Vob2xkZXIsIGxpc3RJdGVtRWxlbWVudCk7CiAgICAgRWxlbWVu
dCogcHJldmlvdXNMaXN0ID0gb3V0ZXJtb3N0RW5jbG9zaW5nTGlzdChwcmV2aW91c1Bvc2l0aW9u
LmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsKICAgICBFbGVtZW50KiBuZXh0TGlzdCA9IG91dGVy
bW9zdEVuY2xvc2luZ0xpc3QobmV4dFBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsK
ICAgICBOb2RlKiBzdGFydE5vZGUgPSBzdGFydC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKTsKQEAg
LTIzMyw2ICsyNjAsMTggQEAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSW5zZXJ0TGlzdENvbW1h
bgogICAgICAgICBuZXh0TGlzdCA9IDA7CiAgICAgLy8gUGxhY2UgbGlzdCBpdGVtIGludG8gYWRq
b2luaW5nIGxpc3RzLgogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbGlzdEVsZW1lbnQ7CisKKyAg
ICBOb2RlKiBlbmNsb3NpbmdDZWxsID0gZW5jbG9zaW5nTm9kZU9mVHlwZShzdGFydC5kZWVwRXF1
aXZhbGVudCgpLCAmaXNUYWJsZUNlbGwpOworICAgIE5vZGUqIG5vZGVUb1NwbGl0VG87CisgICAg
aWYgKGVuY2xvc2luZ0NlbGwpCisgICAgICAgIG5vZGVUb1NwbGl0VG8gPSBlbmNsb3NpbmdDZWxs
OworICAgIGVsc2UgaWYgKGVuY2xvc2luZ0xpc3Qoc3RhcnROb2RlKSkKKyAgICAgICAgbm9kZVRv
U3BsaXRUbyA9IGVuY2xvc2luZ0Jsb2NrKHN0YXJ0Tm9kZSk7CisgICAgZWxzZQorICAgICAgICBu
b2RlVG9TcGxpdFRvID0gZWRpdGFibGVSb290Rm9yUG9zaXRpb24oc3RhcnQuZGVlcEVxdWl2YWxl
bnQoKSk7CisKKyAgICBSZWZQdHI8Tm9kZT4gb3V0ZXJCbG9jayA9IChzdGFydE5vZGUgPT0gbm9k
ZVRvU3BsaXRUbykgPyBzdGFydE5vZGUgOiBzcGxpdFRyZWVUb05vZGUoc3RhcnROb2RlLCBub2Rl
VG9TcGxpdFRvKTsKKwogICAgIGlmIChwcmV2aW91c0xpc3QpCiAgICAgICAgIGFwcGVuZE5vZGUo
bGlzdEl0ZW1FbGVtZW50LCBwcmV2aW91c0xpc3QpOwogICAgIGVsc2UgaWYgKG5leHRMaXN0KQpA
QCAtMjcyLDcgKzMxMSw5IEBAIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExpc3RDb21t
YW4KICAgICAgICAgbmV4dExpc3QgPSBvdXRlcm1vc3RFbmNsb3NpbmdMaXN0KG5leHRQb3NpdGlv
bi5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKSwgZW5jbG9zaW5nTGlzdChsaXN0RWxlbWVudC5nZXQo
KSkpOwogICAgIH0KIAotICAgIG1vdmVQYXJhZ3JhcGgoc3RhcnQsIGVuZCwgVmlzaWJsZVBvc2l0
aW9uKFBvc2l0aW9uKHBsYWNlaG9sZGVyLmdldCgpLCAwKSksIHRydWUpOworICAgIG1vdmVQYXJh
Z3JhcGhXaXRoQ2xvbmVzKHN0YXJ0LCBlbmQsIGxpc3RJdGVtRWxlbWVudC5nZXQoKSwgb3V0ZXJC
bG9jay5nZXQoKSk7CisKKy8vICAgIG1vdmVQYXJhZ3JhcGgoc3RhcnQsIGVuZCwgVmlzaWJsZVBv
c2l0aW9uKFBvc2l0aW9uKHBsYWNlaG9sZGVyLmdldCgpLCAwKSksIHRydWUpOwogCiAgICAgLy8g
RklYTUU6IGxpc3RpZnlQYXJhZ3JhcGggc2hvdWxkIG5vdCBkZXBlbmQgb24gYSBtZW1iZXIgdmFy
aWFibGUuCiAgICAgLy8gU2luY2UgZml4T3JwaGFuZWRMaXN0Q2hpbGQgaXMgdGhlIG9ubHkgb3Ro
ZXIgbWV0aG9kIHRoYXQgdXBkYXRlcyBtX2xpc3RFbGVtZW50LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61921</attachid>
            <date>2010-07-18 17:54:07 -0700</date>
            <delta_ts>2010-07-19 15:23:15 -0700</delta_ts>
            <desc>work in progress 2</desc>
            <filename>work-in-progress-for-42436b</filename>
            <type>text/plain</type>
            <size>18157</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcAkocmV2aXNpb24gNjM0ODIp
CisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OCwxMiArODgsMjEgQEAKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZMYXN0
UGFyYWdyYXBoID0gc3RhcnRPZlBhcmFncmFwaChlbmRPZlNlbGVjdGlvbik7CiAKICAgICAgICAg
aWYgKHN0YXJ0T2ZQYXJhZ3JhcGgoc3RhcnRPZlNlbGVjdGlvbikgIT0gc3RhcnRPZkxhc3RQYXJh
Z3JhcGgpIHsKKyAgICAgICAgICAgIC8vIFNhdmUgc2VsZWN0aW9uCisgICAgICAgICAgICBFbGVt
ZW50KiBlZGl0YWJsZVJvb3QgPSBlZGl0YWJsZVJvb3RGb3JQb3NpdGlvbihlbmRpbmdTZWxlY3Rp
b24oKS52aXNpYmxlU3RhcnQoKS5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICAgICAgICAgIEFTU0VS
VChlZGl0YWJsZVJvb3QpOworICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgZWRpdGFibGVSb290LCAwLCBlbmRpbmdTZWxlY3Rpb24oKS5z
dGFydCgpLmNvbnRhaW5lck5vZGUoKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKS5jb21wdXRl
T2Zmc2V0SW5Db250YWluZXJOb2RlKCkpOworICAgICAgICAgICAgaW50IHN0YXJ0SW5kZXggPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpLCB0cnVlKTsKKyAgICAgICAgICAg
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBlZGl0YWJsZVJvb3QsIDAsIGVuZGlu
Z1NlbGVjdGlvbigpLmVuZCgpLmNvbnRhaW5lck5vZGUoKSwgZW5kaW5nU2VsZWN0aW9uKCkuZW5k
KCkuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKKyAgICAgICAgICAgIGludCBlbmRJ
bmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOworCiAg
ICAgICAgICAgICBOb2RlKiBzdGFydExpc3QgPSBlbmNsb3NpbmdMaXN0KHN0YXJ0T2ZTZWxlY3Rp
b24uZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpOwogICAgICAgICAgICAgTm9kZSogZW5kTGlzdCA9
IGVuY2xvc2luZ0xpc3QoZW5kT2ZTZWxlY3Rpb24uZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpOwog
ICAgICAgICAgICAgYm9vbCBmb3JjZUNyZWF0ZUxpc3QgPSAhc3RhcnRMaXN0IHx8IHN0YXJ0TGlz
dCAhPSBlbmRMaXN0OwogCiAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZkN1cnJl
bnRQYXJhZ3JhcGggPSBzdGFydE9mU2VsZWN0aW9uOwotICAgICAgICAgICAgd2hpbGUgKHN0YXJ0
T2ZDdXJyZW50UGFyYWdyYXBoICE9IHN0YXJ0T2ZMYXN0UGFyYWdyYXBoKSB7CisgICAgICAgICAg
ICB3aGlsZSAoc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGggIT0gc3RhcnRPZkxhc3RQYXJhZ3JhcGgK
KyAgICAgICAgICAgICAgICAgICAmJiBzdGFydE9mQ3VycmVudFBhcmFncmFwaC5pc05vdE51bGwo
KSkgewogICAgICAgICAgICAgICAgIC8vIGRvQXBwbHkoKSBtYXkgb3BlcmF0ZSBvbiBhbmQgcmVt
b3ZlIHRoZSBsYXN0IHBhcmFncmFwaCBvZiB0aGUgc2VsZWN0aW9uIGZyb20gdGhlIGRvY3VtZW50
IAogICAgICAgICAgICAgICAgIC8vIGlmIGl0J3MgaW4gdGhlIHNhbWUgbGlzdCBpdGVtIGFzIHN0
YXJ0T2ZDdXJyZW50UGFyYWdyYXBoLiAgUmV0dXJuIGVhcmx5IHRvIGF2b2lkIGFuIAogICAgICAg
ICAgICAgICAgIC8vIGluZmluaXRlIGxvb3AgYW5kIGJlY2F1c2UgdGhlcmUgaXMgbm8gbW9yZSB3
b3JrIHRvIGJlIGRvbmUuCkBAIC0xMDIsMjIgKzExMSw0NiBAQAogICAgICAgICAgICAgICAgIGlm
ICghc3RhcnRPZkxhc3RQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCktPmluRG9jdW1l
bnQoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIHNldEVu
ZGluZ1NlbGVjdGlvbihzdGFydE9mQ3VycmVudFBhcmFncmFwaCk7CisKKyAgICAgICAgICAgICAg
ICBib29sIGlzVGFibGUgPSBzdGFydE9mQ3VycmVudFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgp
Lm5vZGUoKS0+aGFzVGFnTmFtZSh0YWJsZVRhZyk7CiAgICAgICAgICAgICAgICAgZG9BcHBseUZv
clNpbmdsZVBhcmFncmFwaChmb3JjZUNyZWF0ZUxpc3QpOwogCisgICAgICAgICAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIG5ld1N0YXJ0ID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7
CisKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3JpZ2luYWwgc2VsZWN0aW9uIHN0YXJ0ZWQg
YXQgdGhlIHRhYmxlIGVsZW1lbnQsCisgICAgICAgICAgICAgICAgLy8gYW5kIHRoZSBzZWxlY3Rp
b24gc2hpZnRlZCBpbnRvIHRoZSBmaXJzdCBjZWxsIG9mIHRoZSB0YWJsZSBhZnRlciBsaXN0aWZ5
UGFyYWdyYXBoLAorICAgICAgICAgICAgICAgIC8vIHRoZW4gbW92ZSB0aGUgc2VsZWN0aW9uIG91
dCBvZiB0aGUgdGFibGUgdG8gYXZvaWQgcmVpdGVyYXRpbmcgdGhyb3VnaCB0aGUgdGFibGUuCisg
ICAgICAgICAgICAgICAgTm9kZSogbmV3U3RhcnROb2RlID0gbmV3U3RhcnQuZGVlcEVxdWl2YWxl
bnQoKS5ub2RlKCk7CisgICAgICAgICAgICAgICAgaWYgKGlzVGFibGUgJiYgbmV3U3RhcnROb2Rl
ICYmIChuZXdTdGFydE5vZGUtPnBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZSh0ZFRhZykgfHwgbmV3
U3RhcnROb2RlLT5wYXJlbnROb2RlKCktPmhhc1RhZ05hbWUodGhUYWcpKSkKKyAgICAgICAgICAg
ICAgICAgICAgbmV3U3RhcnQgPSBwb3NpdGlvbkJlZm9yZU5vZGUoZW5jbG9zaW5nTm9kZVdpdGhU
YWcobmV3U3RhcnQuZGVlcEVxdWl2YWxlbnQoKSwgdGFibGVUYWcpKTsKKwogICAgICAgICAgICAg
ICAgIC8vIEZldGNoIHRoZSBzdGFydCBvZiB0aGUgc2VsZWN0aW9uIGFmdGVyIG1vdmluZyB0aGUg
Zmlyc3QgcGFyYWdyYXBoLAogICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgbW92aW5nIHRoZSBw
YXJhZ3JhcGggd2lsbCBpbnZhbGlkYXRlIHRoZSBvcmlnaW5hbCBzdGFydC4gIAogICAgICAgICAg
ICAgICAgIC8vIFdlJ2xsIHVzZSB0aGUgbmV3IHN0YXJ0IHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFs
IHNlbGVjdGlvbiBhZnRlciAKICAgICAgICAgICAgICAgICAvLyB3ZSBtb2RpZmllZCBhbGwgc2Vs
ZWN0ZWQgcGFyYWdyYXBocy4KLSAgICAgICAgICAgICAgICBpZiAoc3RhcnRPZkN1cnJlbnRQYXJh
Z3JhcGggPT0gc3RhcnRPZlNlbGVjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgc3RhcnRPZlNl
bGVjdGlvbiA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpOworICAgICAgICAgICAg
ICAgIGlmIChuZXdTdGFydCA9PSBzdGFydE9mU2VsZWN0aW9uKQorICAgICAgICAgICAgICAgICAg
ICBzdGFydE9mU2VsZWN0aW9uID0gbmV3U3RhcnQ7CiAKLSAgICAgICAgICAgICAgICBzdGFydE9m
Q3VycmVudFBhcmFncmFwaCA9IHN0YXJ0T2ZOZXh0UGFyYWdyYXBoKGVuZGluZ1NlbGVjdGlvbigp
LnZpc2libGVTdGFydCgpKTsKKyAgICAgICAgICAgICAgICBzdGFydE9mQ3VycmVudFBhcmFncmFw
aCA9IHN0YXJ0T2ZOZXh0UGFyYWdyYXBoKG5ld1N0YXJ0KTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihlbmRPZlNlbGVjdGlvbik7CiAgICAgICAgICAgICBk
b0FwcGx5Rm9yU2luZ2xlUGFyYWdyYXBoKGZvcmNlQ3JlYXRlTGlzdCk7CiAgICAgICAgICAgICAv
LyBGZXRjaCB0aGUgZW5kIG9mIHRoZSBzZWxlY3Rpb24sIGZvciB0aGUgcmVhc29uIG1lbnRpb25l
ZCBhYm92ZS4KICAgICAgICAgICAgIGVuZE9mU2VsZWN0aW9uID0gZW5kaW5nU2VsZWN0aW9uKCku
dmlzaWJsZUVuZCgpOwogICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24oc3RhcnRPZlNlbGVjdGlvbiwgZW5kT2ZTZWxlY3Rpb24pKTsKKworICAgICAgICAgICAg
Ly8gUmVzdG9yZSBzZWxlY3Rpb24KKyAgICAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShk
b2N1bWVudCgpLCBlZGl0YWJsZVJvb3QsIDAsIGVkaXRhYmxlUm9vdCwgbGFzdE9mZnNldEluTm9k
ZShlZGl0YWJsZVJvb3QpKTsKKyAgICAgICAgICAgIGludCBtYXhJbmRleCA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOworICAgICAgICAgICAgc3RhcnRJbmRl
eCA9IG1heEluZGV4IDwgc3RhcnRJbmRleCA/IG1heEluZGV4IDogc3RhcnRJbmRleDsKKyAgICAg
ICAgICAgIGVuZEluZGV4ID0gbWF4SW5kZXggPCBlbmRJbmRleCA/IG1heEluZGV4IDogZW5kSW5k
ZXg7CisgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdCwgc3RhcnRJbmRleCwgMCwg
dHJ1ZSk7CisgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlZGl0YWJsZVJvb3QsIGVuZEluZGV4LCAwLCB0
cnVlKTsKKyAgICAgICAgICAgIGlmICghc3RhcnRSYW5nZS5nZXQoKSB8fCAhZW5kUmFuZ2UuZ2V0
KCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rp
b24oVmlzaWJsZVNlbGVjdGlvbihzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdl
LT5zdGFydFBvc2l0aW9uKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KQEAgLTE0Niw4ICsxNzksMzEgQEAKICAgICAgICAgdW5saXN0aWZ5UGFyYWdyYXBoKGVuZGlu
Z1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLCBsaXN0Tm9kZSwgbGlzdENoaWxkTm9kZSk7CiAg
ICAgfQogCi0gICAgaWYgKCFsaXN0Q2hpbGROb2RlIHx8IHN3aXRjaExpc3RUeXBlIHx8IGZvcmNl
Q3JlYXRlTGlzdCkKKyAgICBpZiAoIWxpc3RDaGlsZE5vZGUgfHwgc3dpdGNoTGlzdFR5cGUgfHwg
Zm9yY2VDcmVhdGVMaXN0KSB7CisgICAgICAgIC8vIFNhdmUgc2VsZWN0aW9uCisgICAgICAgIEVs
ZW1lbnQqIGVkaXRhYmxlUm9vdCA9IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9uKGVuZGluZ1NlbGVj
dGlvbigpLnZpc2libGVTdGFydCgpLmRlZXBFcXVpdmFsZW50KCkpOworICAgICAgICBBU1NFUlQo
ZWRpdGFibGVSb290KTsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQoKSwgZWRpdGFibGVSb290LCAwLCBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgp
LmNvbnRhaW5lck5vZGUoKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKS5jb21wdXRlT2Zmc2V0
SW5Db250YWluZXJOb2RlKCkpOworICAgICAgICBpbnQgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOworICAgICAgICByYW5nZSA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgZWRpdGFibGVSb290LCAwLCBlbmRpbmdTZWxlY3Rpb24oKS5l
bmQoKS5jb250YWluZXJOb2RlKCksIGVuZGluZ1NlbGVjdGlvbigpLmVuZCgpLmNvbXB1dGVPZmZz
ZXRJbkNvbnRhaW5lck5vZGUoKSk7CisgICAgICAgIGludCBlbmRJbmRleCA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOworCisgICAgICAgIC8vIExpc3RpZnkg
dGhlIHBhcmFncmFwaAogICAgICAgICBtX2xpc3RFbGVtZW50ID0gbGlzdGlmeVBhcmFncmFwaChl
bmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSwgbGlzdFRhZyk7CisKKyAgICAgICAgLy8g
UmVzdG9yZSBzZWxlY3Rpb24KKyAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50
KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoZWRpdGFibGVSb290KSwgbGFzdFBvc2l0aW9uSW5Ob2Rl
KGVkaXRhYmxlUm9vdCkpOworICAgICAgICBpbnQgbWF4SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJh
bmdlTGVuZ3RoKHJhbmdlLmdldCgpLCB0cnVlKTsKKyAgICAgICAgc3RhcnRJbmRleCA9IG1heElu
ZGV4IDwgc3RhcnRJbmRleCA/IG1heEluZGV4IDogc3RhcnRJbmRleDsKKyAgICAgICAgZW5kSW5k
ZXggPSBtYXhJbmRleCA8IGVuZEluZGV4ID8gbWF4SW5kZXggOiBlbmRJbmRleDsKKyAgICAgICAg
UmVmUHRyPFJhbmdlPiBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aChlZGl0YWJsZVJvb3QsIHN0YXJ0SW5kZXgsIDAsIHRydWUpOworICAgICAgICBS
ZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aChlZGl0YWJsZVJvb3QsIGVuZEluZGV4LCAwLCB0cnVlKTsKKyAgICAgICAgaWYgKCFz
dGFydFJhbmdlLmdldCgpIHx8ICFlbmRSYW5nZS5nZXQoKSkgeworICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
c2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc3RhcnRSYW5nZS0+c3RhcnRQb3Np
dGlvbigpLCBlbmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKSk7CisgICAgfQogfQogCiB2b2lkIElu
c2VydExpc3RDb21tYW5kOjp1bmxpc3RpZnlQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBvcmlnaW5hbFN0YXJ0LCBIVE1MRWxlbWVudCogbGlzdE5vZGUsIE5vZGUqIGxpc3RDaGlsZE5v
ZGUpCkBAIC0yMDksMTggKzI2NSwzMiBAQAogICAgIFZpc2libGVQb3NpdGlvbiBpbnNlcnRpb25Q
b2ludCA9IFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihwbGFjZWhvbGRlci5nZXQoKSwgMCkpOwog
ICAgIG1vdmVQYXJhZ3JhcGhzKHN0YXJ0LCBlbmQsIGluc2VydGlvblBvaW50LCB0cnVlKTsKIH0K
KyAgICAKK3N0YXRpYyBib29sIGlzVGFibGVDZWxsT3JMaXN0KGNvbnN0IE5vZGUqIG4pIHsKKyAg
ICByZXR1cm4gaXNUYWJsZUNlbGwobikgfHwgbi0+aGFzVGFnTmFtZSh1bFRhZykgfHwgbi0+aGFz
VGFnTmFtZShvbFRhZyk7Cit9CiAKIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExpc3RD
b21tYW5kOjpsaXN0aWZ5UGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgb3JpZ2luYWxT
dGFydCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbGlzdFRhZykKIHsKICAgICBWaXNpYmxlUG9zaXRp
b24gc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKG9yaWdpbmFsU3RhcnQpOwogICAgIFZpc2libGVQ
b3NpdGlvbiBlbmQgPSBlbmRPZlBhcmFncmFwaChzdGFydCk7CiAKKyAgICAvLyBTcGVjaWFsIGNh
c2UgZW1wdHkgdW5zcGxpdHRhYmxlIGVsZW1lbnRzIGJlY2F1c2UgdGhlcmUncyBub3RoaW5nIHRv
IHNwbGl0CisgICAgLy8gYW5kIHRoZXJlJ3Mgbm90aGluZyB0byBtb3ZlLgorICAgIGlmIChpc0F0
VW5zcGxpdHRhYmxlRWxlbWVudChzdGFydC5kZWVwRXF1aXZhbGVudCgpKSkgeworICAgICAgICBS
ZWZQdHI8SFRNTEVsZW1lbnQ+IGxpc3RJdGVtRWxlbWVudCA9IGNyZWF0ZUxpc3RJdGVtRWxlbWVu
dChkb2N1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBsaXN0RWxlbWVudCA9
IGNyZWF0ZUhUTUxFbGVtZW50KGRvY3VtZW50KCksIGxpc3RUYWcpOworICAgICAgICBSZWZQdHI8
RWxlbWVudD4gcGxhY2Vob2xkZXIgPSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSk7Cisg
ICAgICAgIGFwcGVuZE5vZGUobGlzdEl0ZW1FbGVtZW50LCBsaXN0RWxlbWVudCk7CisgICAgICAg
IGFwcGVuZE5vZGUocGxhY2Vob2xkZXIsIGxpc3RJdGVtRWxlbWVudCk7CisgICAgICAgIGluc2Vy
dE5vZGVBdChsaXN0RWxlbWVudC5nZXQoKSwgc3RhcnQuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAg
ICAgIHJldHVybiBsaXN0RWxlbWVudDsKKyAgICB9CisKICAgICAvLyBDaGVjayBmb3IgYWRqb2lu
aW5nIGxpc3RzLgogICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1Bvc2l0aW9uID0gc3RhcnQu
cHJldmlvdXModHJ1ZSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQb3NpdGlvbiA9IGVuZC5u
ZXh0KHRydWUpOwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbGlzdEl0ZW1FbGVtZW50ID0gY3Jl
YXRlTGlzdEl0ZW1FbGVtZW50KGRvY3VtZW50KCkpOwotICAgIFJlZlB0cjxIVE1MRWxlbWVudD4g
cGxhY2Vob2xkZXIgPSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSk7Ci0gICAgYXBwZW5k
Tm9kZShwbGFjZWhvbGRlciwgbGlzdEl0ZW1FbGVtZW50KTsKICAgICBFbGVtZW50KiBwcmV2aW91
c0xpc3QgPSBvdXRlcm1vc3RFbmNsb3NpbmdMaXN0KHByZXZpb3VzUG9zaXRpb24uZGVlcEVxdWl2
YWxlbnQoKS5ub2RlKCkpOwogICAgIEVsZW1lbnQqIG5leHRMaXN0ID0gb3V0ZXJtb3N0RW5jbG9z
aW5nTGlzdChuZXh0UG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpOwogICAgIE5vZGUq
IHN0YXJ0Tm9kZSA9IHN0YXJ0LmRlZXBFcXVpdmFsZW50KCkubm9kZSgpOwpAQCAtMjMzLDYgKzMw
MywxOSBAQAogICAgICAgICBuZXh0TGlzdCA9IDA7CiAgICAgLy8gUGxhY2UgbGlzdCBpdGVtIGlu
dG8gYWRqb2luaW5nIGxpc3RzLgogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbGlzdEVsZW1lbnQ7
CisKKyAgICBOb2RlKiBlbmNsb3NpbmdDZWxsT3JMaXN0ID0gZW5jbG9zaW5nTm9kZU9mVHlwZShz
dGFydC5kZWVwRXF1aXZhbGVudCgpLCAmaXNUYWJsZUNlbGxPckxpc3QpOworICAgIE5vZGUqIG5v
ZGVUb1NwbGl0VG87CisgICAgaWYgKGVuY2xvc2luZ0NlbGxPckxpc3QpCisgICAgICAgIG5vZGVU
b1NwbGl0VG8gPSBlbmNsb3NpbmdDZWxsT3JMaXN0OworICAgIGVsc2UgaWYgKGVuY2xvc2luZ0Js
b2NrKHN0YXJ0Tm9kZSkpCisgICAgICAgIG5vZGVUb1NwbGl0VG8gPSBlbmNsb3NpbmdCbG9jayhz
dGFydE5vZGUpOworICAgIGVsc2UKKyAgICAgICAgbm9kZVRvU3BsaXRUbyA9IGVkaXRhYmxlUm9v
dEZvclBvc2l0aW9uKHN0YXJ0LmRlZXBFcXVpdmFsZW50KCkpOworCisgICAgUmVmUHRyPE5vZGU+
IG91dGVyQmxvY2sgPSAoc3RhcnROb2RlID09IG5vZGVUb1NwbGl0VG8pID8gc3RhcnROb2RlIDog
c3BsaXRUcmVlVG9Ob2RlKHN0YXJ0Tm9kZSwgbm9kZVRvU3BsaXRUbyk7CisKKyAgICBIVE1MRWxl
bWVudCogY29udGFpbmVyID0gbGlzdEl0ZW1FbGVtZW50LmdldCgpOwogICAgIGlmIChwcmV2aW91
c0xpc3QpCiAgICAgICAgIGFwcGVuZE5vZGUobGlzdEl0ZW1FbGVtZW50LCBwcmV2aW91c0xpc3Qp
OwogICAgIGVsc2UgaWYgKG5leHRMaXN0KQpAQCAtMjQwLDcgKzMyMywxMiBAQAogICAgIGVsc2Ug
ewogICAgICAgICAvLyBDcmVhdGUgdGhlIGxpc3QuCiAgICAgICAgIGxpc3RFbGVtZW50ID0gY3Jl
YXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQoKSwgbGlzdFRhZyk7Ci0gICAgICAgIGFwcGVuZE5vZGUo
bGlzdEl0ZW1FbGVtZW50LCBsaXN0RWxlbWVudCk7CisgICAgICAgIE5vZGUqIGxpc3RDaGlsZE5v
ZGUgPSBlbmNsb3NpbmdMaXN0Q2hpbGQoc3RhcnROb2RlKTsKKyAgICAgICAgaWYgKGxpc3RDaGls
ZE5vZGUgJiYgbGlzdENoaWxkTm9kZS0+aGFzVGFnTmFtZShsaVRhZykpIHsKKyAgICAgICAgICAg
IGxpc3RJdGVtRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4obGlzdENoaWxkTm9k
ZSk7CisgICAgICAgICAgICBjb250YWluZXIgPSBsaXN0RWxlbWVudC5nZXQoKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBhcHBlbmROb2RlKGxpc3RJdGVtRWxlbWVudCwgbGlzdEVsZW1l
bnQpOwogCiAgICAgICAgIGlmIChzdGFydCA9PSBlbmQgJiYgaXNCbG9jayhzdGFydC5kZWVwRXF1
aXZhbGVudCgpLm5vZGUoKSkpIHsKICAgICAgICAgICAgIC8vIEluc2VydGluZyB0aGUgbGlzdCBp
bnRvIGFuIGVtcHR5IHBhcmFncmFwaCB0aGF0IGlzbid0IGhlbGQgb3BlbiAKQEAgLTI1NywxMiAr
MzQ1LDExIEBACiAgICAgICAgIC8vIGlubGluZSBhbmNlc3RvcnMgb2Ygc3RhcnQsIHNpbmNlIGl0
IGlzIGVhc2llciBmb3IgZWRpdGluZyB0byBwcm9kdWNlIAogICAgICAgICAvLyBjbGVhbiBtYXJr
dXAgd2hlbiBpbmxpbmUgZWxlbWVudHMgYXJlIHB1c2hlZCBkb3duIGFzIGZhciBhcyBwb3NzaWJs
ZS4KICAgICAgICAgUG9zaXRpb24gaW5zZXJ0aW9uUG9zKHN0YXJ0LmRlZXBFcXVpdmFsZW50KCku
dXBzdHJlYW0oKSk7Ci0gICAgICAgIC8vIEFsc28gYXZvaWQgdGhlIGNvbnRhaW5pbmcgbGlzdCBp
dGVtLgotICAgICAgICBOb2RlKiBsaXN0Q2hpbGQgPSBlbmNsb3NpbmdMaXN0Q2hpbGQoaW5zZXJ0
aW9uUG9zLm5vZGUoKSk7Ci0gICAgICAgIGlmIChsaXN0Q2hpbGQgJiYgbGlzdENoaWxkLT5oYXNU
YWdOYW1lKGxpVGFnKSkKLSAgICAgICAgICAgIGluc2VydGlvblBvcyA9IHBvc2l0aW9uSW5QYXJl
bnRCZWZvcmVOb2RlKGxpc3RDaGlsZCk7CiAKLSAgICAgICAgaW5zZXJ0Tm9kZUF0KGxpc3RFbGVt
ZW50LCBpbnNlcnRpb25Qb3MpOworICAgICAgICBpZiAob3V0ZXJCbG9jayA9PSBlZGl0YWJsZVJv
b3RGb3JQb3NpdGlvbihzdGFydC5kZWVwRXF1aXZhbGVudCgpKSkKKyAgICAgICAgICAgIGluc2Vy
dE5vZGVBdChsaXN0RWxlbWVudCwgaW5zZXJ0aW9uUG9zKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShsaXN0RWxlbWVudCwgb3V0ZXJCbG9jayk7CiAKICAgICAg
ICAgLy8gV2UgaW5zZXJ0ZWQgdGhlIGxpc3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBjb250ZW50IHdl
J3JlIGFib3V0IHRvIG1vdmUKICAgICAgICAgLy8gVXBkYXRlIHRoZSBzdGFydCBvZiBjb250ZW50
LCBzbyB3ZSBkb24ndCB0cnkgdG8gbW92ZSB0aGUgbGlzdCBpbnRvIGl0c2VsZi4gIGJ1ZyAxOTA2
NgpAQCAtMjcyLDcgKzM1OSw3IEBACiAgICAgICAgIG5leHRMaXN0ID0gb3V0ZXJtb3N0RW5jbG9z
aW5nTGlzdChuZXh0UG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCksIGVuY2xvc2luZ0xp
c3QobGlzdEVsZW1lbnQuZ2V0KCkpKTsKICAgICB9CiAKLSAgICBtb3ZlUGFyYWdyYXBoKHN0YXJ0
LCBlbmQsIFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihwbGFjZWhvbGRlci5nZXQoKSwgMCkpLCB0
cnVlKTsKKyAgICBtb3ZlUGFyYWdyYXBoV2l0aENsb25lcyhzdGFydCwgZW5kLCBjb250YWluZXIs
IG91dGVyQmxvY2suZ2V0KCkpOwogCiAgICAgLy8gRklYTUU6IGxpc3RpZnlQYXJhZ3JhcGggc2hv
dWxkIG5vdCBkZXBlbmQgb24gYSBtZW1iZXIgdmFyaWFibGUuCiAgICAgLy8gU2luY2UgZml4T3Jw
aGFuZWRMaXN0Q2hpbGQgaXMgdGhlIG9ubHkgb3RoZXIgbWV0aG9kIHRoYXQgdXBkYXRlcyBtX2xp
c3RFbGVtZW50LApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
CShyZXZpc2lvbiA2MzQ4MikKKysrIFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2Nyw3ICs4NjcsMTAgQEAKICAgICBiZWZvcmVQYXJh
Z3JhcGggPSBWaXNpYmxlUG9zaXRpb24oYmVmb3JlUGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkp
OwogICAgIGFmdGVyUGFyYWdyYXBoID0gVmlzaWJsZVBvc2l0aW9uKGFmdGVyUGFyYWdyYXBoLmRl
ZXBFcXVpdmFsZW50KCkpOwogCi0gICAgaWYgKGJlZm9yZVBhcmFncmFwaC5pc05vdE51bGwoKSAm
JiAhaXNUYWJsZUVsZW1lbnQoYmVmb3JlUGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkubm9kZSgp
KSAmJiAoIWlzRW5kT2ZQYXJhZ3JhcGgoYmVmb3JlUGFyYWdyYXBoKSB8fCBiZWZvcmVQYXJhZ3Jh
cGggPT0gYWZ0ZXJQYXJhZ3JhcGgpKSB7CisgICAgaWYgKGJlZm9yZVBhcmFncmFwaC5pc05vdE51
bGwoKQorICAgICAgICAmJiAhaXNUYWJsZUVsZW1lbnQoYmVmb3JlUGFyYWdyYXBoLmRlZXBFcXVp
dmFsZW50KCkubm9kZSgpKQorICAgICAgICAmJiAoKCFpc0VuZE9mUGFyYWdyYXBoKGJlZm9yZVBh
cmFncmFwaCkgJiYgIWlzU3RhcnRPZlBhcmFncmFwaChiZWZvcmVQYXJhZ3JhcGgpKQorICAgICAg
ICAgICAgfHwgYmVmb3JlUGFyYWdyYXBoID09IGFmdGVyUGFyYWdyYXBoKSkgewogICAgICAgICAv
LyBGSVhNRTogVHJpbSB0ZXh0IGJldHdlZW4gYmVmb3JlUGFyYWdyYXBoIGFuZCBhZnRlclBhcmFn
cmFwaCBpZiB0aGV5IGFyZW4ndCBlcXVhbC4KICAgICAgICAgaW5zZXJ0Tm9kZUF0KGNyZWF0ZUJy
ZWFrRWxlbWVudChkb2N1bWVudCgpKSwgYmVmb3JlUGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkp
OwogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWxp
c3QtMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVj
Q29tbWFuZC9yZW1vdmUtbGlzdC0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0ODIpCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1saXN0LTEtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9u
CiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZy
b20gMCBvZiBMSSA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNjAgb2Yg
I3RleHQgPiBMSSA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5n
ZTpyYW5nZSBmcm9tIDAgb2YgTEkgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDYwIG9mICN0ZXh0ID4gTEkgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZB
TFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDYwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0g
c3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDU5IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxl
Y3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBUaGlzIHRlc3Rz
IGRlLWxpc3RpbmcgY29udGVudC4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvNTIwNzM2OS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC81MjA3MzY5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0ODIpCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUyMDczNjktZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDYgKzQsNiBAQAogVHdvCiBUaHJlZQogRm91cgotPHVsPjxsaT5PbmU8
L2xpPjxsaT5Ud288L2xpPjxsaT5UaHJlZTwvbGk+PGxpPkZvdXI8L2xpPjwvdWw+Cis8dWw+PGxp
Pk9uZTwvbGk+PGxpPlR3bzwvbGk+PGxpPjxsaT5UaHJlZTwvbGk+PC9saT48bGk+PGxpPkZvdXI8
L2xpPjwvbGk+PC91bD4KIAogUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC9zd2l0Y2gtbGlzdC10eXBlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3N3aXRjaC1saXN0LXR5cGUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA2MzQ4MikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvc3dpdGNo
LWxpc3QtdHlwZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiBF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVk
aXRpbmdOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
Tm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJh
bmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBMSSA+IFVMID4gU1BBTiA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgTEkgPiBVTCA+IFNQQU4gPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93
bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hh
bmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgTEkg
PiBVTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgTEkgPiBVTCA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
IEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlm
aWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCkBAIC0zMyw0ICszMyw0IEBACiBUaGlz
IHNob3VsZCBiZSBpbiBhbiBvcmRlcmVkIGxpc3QuCiBUaGlzIHNob3VsZCBub3QgYmUgaW4gYSBs
aXN0LgogVGhpcyBzaG91bGQgYmUgaW4gYW4gb3JkZXJlZCBsaXN0LgotPG9sIHN0eWxlPSJib3Jk
ZXI6IDFweCBzb2xpZCByZWQ7Ij4gPGxpPlRoaXMgc2hvdWxkIGJlIGluIGFuIG9yZGVyZWQgbGlz
dC48L2xpPiA8L29sPjxzcGFuIGlkPSJpdGVtMSI+PHVsPjxsaT48c3BhbiBpZD0iaXRlbTEiPlRo
aXMgc2hvdWxkIGJlIGluIGFuIHVub3JkZXJlZCBsaXN0Ljwvc3Bhbj4mbmJzcDs8L2xpPjwvdWw+
PC9zcGFuPjxvbCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmVkOyI+PGJyPiBUaGlzIHNob3Vs
ZCBiZSBpbiBhbiBvcmRlcmVkIGxpc3QuIDxsaT5UaGlzIHNob3VsZCBiZSBpbiBhbiBvcmRlcmVk
IGxpc3QuPC9saT4gPC9vbD48dWw+PGxpPlRoaXMgc2hvdWxkIGJlIGluIGFuIHVub3JkZXJlZCBs
aXN0LjwvbGk+PC91bD48b2wgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJlZDsiPjxsaT5UaGlz
IHNob3VsZCBiZSBpbiBhbiBvcmRlcmVkIGxpc3QuPC9saT4gPC9vbD48dWw+PGxpPlRoaXMgc2hv
dWxkIGJlIGluIGFuIHVub3JkZXJlZCBsaXN0LjwvbGk+PC91bD48b2wgc3R5bGU9ImJvcmRlcjog
MXB4IHNvbGlkIHJlZDsiPiA8bGk+VGhpcyBzaG91bGQgYmUgaW4gYW4gb3JkZXJlZCBsaXN0Ljwv
bGk+IDwvb2w+IFRoaXMgc2hvdWxkIG5vdCBiZSBpbiBhIGxpc3QuPGJyPjxvbD48bGk+VGhpcyBz
aG91bGQgYmUgaW4gYW4gb3JkZXJlZCBsaXN0LjwvbGk+PC9vbD4KKzxvbCBzdHlsZT0iYm9yZGVy
OiAxcHggc29saWQgcmVkOyI+IDxsaT5UaGlzIHNob3VsZCBiZSBpbiBhbiBvcmRlcmVkIGxpc3Qu
PC9saT4gPC9vbD48dWw+PGxpPjxzcGFuIGlkPSJpdGVtMSI+VGhpcyBzaG91bGQgYmUgaW4gYW4g
dW5vcmRlcmVkIGxpc3QuPC9zcGFuPiZuYnNwOzwvbGk+PC91bD48b2wgc3R5bGU9ImJvcmRlcjog
MXB4IHNvbGlkIHJlZDsiPjxicj4gVGhpcyBzaG91bGQgYmUgaW4gYW4gb3JkZXJlZCBsaXN0LiA8
bGk+VGhpcyBzaG91bGQgYmUgaW4gYW4gb3JkZXJlZCBsaXN0LjwvbGk+IDwvb2w+PHVsPjxsaT5U
aGlzIHNob3VsZCBiZSBpbiBhbiB1bm9yZGVyZWQgbGlzdC48L2xpPjwvdWw+PG9sIHN0eWxlPSJi
b3JkZXI6IDFweCBzb2xpZCByZWQ7Ij48bGk+VGhpcyBzaG91bGQgYmUgaW4gYW4gb3JkZXJlZCBs
aXN0LjwvbGk+IDwvb2w+PHVsPjxsaT5UaGlzIHNob3VsZCBiZSBpbiBhbiB1bm9yZGVyZWQgbGlz
dC48L2xpPjwvdWw+PG9sIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZWQ7Ij4gPGxpPlRoaXMg
c2hvdWxkIGJlIGluIGFuIG9yZGVyZWQgbGlzdC48L2xpPiA8L29sPiBUaGlzIHNob3VsZCBub3Qg
YmUgaW4gYSBsaXN0Ljxicj4gPG9sPjxsaT5UaGlzIHNob3VsZCBiZSBpbiBhbiBvcmRlcmVkIGxp
c3QuPC9saT48L29sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNl
cnQtbGlzdC14bWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRp
bmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3QteG1sLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0
ODIpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXhtbC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACiAuCi08ZGl2IHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBjb250ZW50ZWRpdGFibGU9InRydWUiIGlk
PSJpbnNlcnRsaXN0aGVyZSI+PG9sPjxsaT48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIg
c3R5bGU9ImJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZv
bnQtZmFtaWx5OiBUaW1lczsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1h
bDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWln
aHQ6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogYXV0bzsgdGV4dC1pbmRlbnQ6IDBw
eDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93czogMjsg
d29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtYm9yZGVyLWhvcml6b250YWwtc3BhY2luZzogMHB4
OyAtd2Via2l0LWJvcmRlci12ZXJ0aWNhbC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1kZWNv
cmF0aW9ucy1pbi1lZmZlY3Q6IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogYXV0bzsg
LXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyBmb250LXNpemU6IG1lZGl1bTsgIj4uPC9z
cGFuPjxiciAvPjwvbGk+PC9vbD48L2Rpdj4KKzxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgaWQ9Imluc2VydGxpc3RoZXJlIj48
b2w+PGxpPi48L2xpPjwvb2w+PC9kaXY+CiBQQVNTCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62000</attachid>
            <date>2010-07-19 15:23:15 -0700</date>
            <delta_ts>2010-07-19 15:51:22 -0700</delta_ts>
            <desc>work in progress 3</desc>
            <filename>fix21680c</filename>
            <type>text/plain</type>
            <size>13674</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzAwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDctMDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcXVl
cnlDb21tYW5kVmFsdWUoIkJhY2tDb2xvciIpIHJldHVybnMgcmdiKDAsMCwwKSBmb3IgZWxlbWVu
dHMgd2l0aCB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY4MAorCisgICAgICAgIFRoZSBidWcgd2FzIGNhdXNl
ZCBieSB0aGUgZmFjdCB0aGF0IHRoZSBjb21wdXRlZCBzdHlsZSBvZiBhIHRyYW5zcGFyZW50IG5v
ZGUgaW5kaWNhdGVzIHRoYXQKKyAgICAgICAgdGhlIGJhY2tncm91bmQgY29sb3IgaXMgcmdiYSgw
LDAsMCwwKS4gV2hpbGUgdGhpcyBpcyBjb3JyZWN0IGluIHRoZSBhY2NvcmRhbmNlIHRvIENTUzIg
YmVjYXVzZSBiYWNrZ3JvdW5kLWNvbG9yCisgICAgICAgIGlzIG5vdCBpbmhlcml0ZWQgYnkgZGVm
YXVsdCwgdGhpcyBkb2Vzbid0IGdpdmUgdGhlIGRlc2lyZWQgcmVzdWx0IGZvciBlZGl0aW5nIHB1
cnBvc2VzLgorCisgICAgICAgIE1vZGlmaWVkIHZhbHVlU3R5bGUgaW4gRWRpdG9yQ29tbWFuZC5j
cHAgdG8gY2FsbCBFZGl0b3I6OnNlbGVjdGlvbkNTU1Byb3BlcnR5VmFsdWUsIGluc3RlYWQgb2Yg
RnJhbWU6OnNlbGVjdGlvbkNvbXB1dGVkU3R5bGUsCisgICAgICAgIHdoaWNoIHRyYXZlcnNlcyBj
b21tb24gYW5jZXN0b3JzIG9mIHRoZSBzZWxlY3RlZCByYW5nZSBvciBjYXJldCB0byByZXRyaWV2
ZSB0aGUgZWZmZWN0aXZlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHNlbGVjdGVkIHJlZ2lvbgor
ICAgICAgICBpbnN0ZWFkIG9mIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGF0IHRoZSBzdGFydCBvZiB0
aGUgc2VsZWN0aW9uLiBUaGlzIHRha2VzIGVmZmVjdCB3aGVuIHRoZSBvcmlnaW5hbCBiYWNrZ3Jv
dW5kIGNvbG9yIGlzIHRyYW5zcGFyZW50CisgICAgICAgIG9yIHRoZSBzZWxlY3Rpb24gaXMgcmFu
Z2UgKHRvIGF2b2lkIHBpY2sgdXAgdGhlIGJhY2tncm91bmQgY29sb3Igb25seSBwcmVzZW50IGF0
IHRoZSBzdGFydCBvZiBwYXJhZ3JhcGgpLgorCisgICAgICAgIFJlbW92ZWQgc2VsZWN0aW9uU3Rh
cnRTdHlsZVByb3BlcnR5VmFsdWUgYW5kIG1pZ3JhdGVkIGl0IHRvIEVkaXRvcjo6c2VsZWN0aW9u
Q1NTUHJvcGVydHlWYWx1ZQorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvZXhlY0NvbW1hbmQvcXVl
cnktY29tbWFuZC12YWx1ZS1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwKKworICAgICAgICAqIGVkaXRp
bmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVHJhbnNwYXJlbnQpOiBDaGVja3Mg
d2hldGhlciBhIG5vZGUgd2l0aCB0aGUgc3BlY2lmaWVkIHN0eWxlIGlzIHRyYW5zcGFyZW50IG9y
IG5vdAorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25DU1NQcm9wZXJ0eVZhbHVl
KTogTWlncmF0ZWQgdGhlIGNvbnRlbnRzIG9mIHNlbGVjdGlvblN0YXJ0U3R5bGVQcm9wZXJ0eVZh
bHVlIGFuZAorICAgICAgICAgIGFkZGVkIHRoZSBzcGVjaWFsIGNhc2UgZm9yIGJhY2tncm91bmQg
Y29sb3IKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOiBBZGRlZCB0aGUgcHJvdG90eXBlIGZv
ciBzZWxlY3Rpb25DU1NQcm9wZXJ0eVZhbHVlCisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlU3R5bGUpOiBjYWxscyBFZGl0b3I6OnNl
bGVjdGlvbkNTU1Byb3BlcnR5VmFsdWUKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDogUmVtb3Zl
ZCBzZWxlY3Rpb25Db21wdXRlZFN0eWxlCisgICAgICAgICogcGFnZS9GcmFtZS5oOiBkaXR0bwor
CiAyMDEwLTA3LTA5ICBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3Bl
bmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbi4KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiA2MjY2MykKKysrIFdlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTUsNiArODU1LDU4IEBAIFRyaVN0
YXRlIEVkaXRvcjo6c2VsZWN0aW9uSGFzU3R5bGUoQ1NTU3QKIAogICAgIHJldHVybiBzdGF0ZTsK
IH0KKworc3RhdGljIGJvb2wgaXNUcmFuc3BhcmVudChDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHls
ZSkKK3sKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5
Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworCisgICAgaWYgKCFjc3NWYWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihjc3NW
YWx1ZS5nZXQoKSk7CisKKyAgICBpZiAodmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1JHQkNPTE9SKSB7CisgICAgICAgIENvbG9yIGJhY2tncm91bmRDb2xv
cih2YWx1ZS0+Z2V0UkdCQTMyVmFsdWUoKSk7CisgICAgICAgIHJldHVybiBiYWNrZ3JvdW5kQ29s
b3IuaGFzQWxwaGEoKSAmJiAhYmFja2dyb3VuZENvbG9yLmFscGhhKCk7CisgICAgfQorCisgICAg
cmV0dXJuIHZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlVHJhbnNwYXJlbnQ7Cit9CisKK1N0
cmluZyBFZGl0b3I6OnNlbGVjdGlvbkNTU1Byb3BlcnR5VmFsdWUoaW50IHByb3BlcnR5SUQpCit7
CisgICAgTm9kZSogbm9kZVRvUmVtb3ZlOworICAgIC8vIEZJWE1FOiBSYXRoZXIgdGhhbiByZXRy
aWV2aW5nIHRoZSBzdHlsZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLAor
ICAgIC8vIHdlIHJldHJpZXZlIHRoZSBzdHlsZSBwcmVzZW50IHRocm91Z2hvdXQgdGhlIHNlbGVj
dGlvbi4KKyAgICBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gc2VsZWN0aW9uU3R5bGUgPSBt
X2ZyYW1lLT5zZWxlY3Rpb25Db21wdXRlZFN0eWxlKG5vZGVUb1JlbW92ZSk7CisgICAgaWYgKCFz
ZWxlY3Rpb25TdHlsZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgU3RyaW5nIHZh
bHVlID0gc2VsZWN0aW9uU3R5bGUtPmdldFByb3BlcnR5VmFsdWUocHJvcGVydHlJRCk7CisKKyAg
ICBpZiAobm9kZVRvUmVtb3ZlKSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
ICAgICBub2RlVG9SZW1vdmUtPnJlbW92ZShlYyk7CisgICAgICAgIEFTU0VSVCghZWMpOworICAg
IH0KKworICAgIC8vIElmIGJhY2tncm91bmQgY29sb3IgaXMgdHJhbnNwYXJlbnQsIHRyYXZlcnNl
IHBhcmVudCBub2RlcyB1bnRpbCB3ZSBoaXQgYSBkaWZmZXJlbnQgdmFsdWUgb3IgZG9jdW1lbnQg
cm9vdAorICAgIC8vIEFsc28sIGlmIHRoZSBzZWxlY3Rpb24gaXMgYSByYW5nZSwgaWdub3JlIHRo
ZSBiYWNrZ3JvdW5kIGNvbG9yIGF0IHRoZSBzdGFydCBvZiBzZWxlY3Rpb24sCisgICAgLy8gYW5k
IGZpbmQgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIGNvbW1vbiBhbmNlc3Rvci4KKyAgICBp
ZiAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciAmJiAobV9mcmFtZS0+
c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSB8fCBpc1RyYW5zcGFyZW50KHNlbGVjdGlvblN0eWxlLmdl
dCgpKSkpIHsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZShtX2ZyYW1lLT5zZWxlY3Rpb24o
KS0+dG9Ob3JtYWxpemVkUmFuZ2UoKSk7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgICAgICBOb2RlKiBhbmNlc3RvciA9IHJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRhaW5lcihl
Yyk7CisgICAgICAgIEFTU0VSVChhbmNlc3Rvcik7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAg
IHNlbGVjdGlvblN0eWxlID0gY29tcHV0ZWRTdHlsZShhbmNlc3Rvcik7CisgICAgICAgICAgICBh
bmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnROb2RlKCk7CisgICAgICAgIH0gd2hpbGUgKGlzVHJh
bnNwYXJlbnQoc2VsZWN0aW9uU3R5bGUuZ2V0KCkpKTsKKyAgICAgICAgdmFsdWUgPSBzZWxlY3Rp
b25TdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Cisg
ICAgfQorCisgICAgcmV0dXJuIHZhbHVlOworfQorCiB2b2lkIEVkaXRvcjo6aW5kZW50KCkKIHsK
ICAgICBhcHBseUNvbW1hbmQoSW5kZW50T3V0ZGVudENvbW1hbmQ6OmNyZWF0ZShtX2ZyYW1lLT5k
b2N1bWVudCgpLCBJbmRlbnRPdXRkZW50Q29tbWFuZDo6SW5kZW50KSk7CkluZGV4OiBXZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
CShyZXZpc2lvbiA2MjY2MykKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbmRUb0NoYW5n
ZWRDb250ZW50cyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBlbmRpbmdTZWxlY3Rpb24pOwogCiAg
ICAgVHJpU3RhdGUgc2VsZWN0aW9uSGFzU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiopIGNvbnN0
OworICAgIFN0cmluZyBzZWxlY3Rpb25DU1NQcm9wZXJ0eVZhbHVlKGludCk7CiAgICAgY29uc3Qg
U2ltcGxlRm9udERhdGEqIGZvbnRGb3JTZWxlY3Rpb24oYm9vbCYpIGNvbnN0OwogICAgIFdyaXRp
bmdEaXJlY3Rpb24gdGV4dERpcmVjdGlvbkZvclNlbGVjdGlvbihib29sJikgY29uc3Q7CiAgICAg
CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCShyZXZpc2lvbiA2MjY2MykKKysrIFdl
YkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDcg
KzIzOCw3IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlKEZyYW1lKiBmcmFtZSwKIAogc3Rh
dGljIFN0cmluZyB2YWx1ZVN0eWxlKEZyYW1lKiBmcmFtZSwgaW50IHByb3BlcnR5SUQpCiB7Ci0g
ICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb25TdGFydFN0eWxlUHJvcGVydHlWYWx1ZShwcm9wZXJ0
eUlEKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25DU1NQcm9wZXJ0eVZh
bHVlKHByb3BlcnR5SUQpOwogfQogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVUZXh0V3JpdGluZ0Rp
cmVjdGlvbihGcmFtZSogZnJhbWUsIFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQpJbmRleDog
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCShyZXZpc2lvbiA2MjY2MykKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc2NywyNCArNzY3LDYgQEAgdm9pZCBGcmFtZTo6Y29tcHV0ZUFuZFNldFR5cGlu
Z1N0eWxlKENTUwogICAgIG1fdHlwaW5nU3R5bGUgPSBtdXRhYmxlU3R5bGUucmVsZWFzZSgpOwog
fQogCi1TdHJpbmcgRnJhbWU6OnNlbGVjdGlvblN0YXJ0U3R5bGVQcm9wZXJ0eVZhbHVlKGludCBz
dHlsZVByb3BlcnR5SUQpIGNvbnN0Ci17Ci0gICAgTm9kZSAqbm9kZVRvUmVtb3ZlOwotICAgIFJl
ZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBzZWxlY3Rpb25TdHlsZSA9IHNlbGVjdGlvbkNvbXB1
dGVkU3R5bGUobm9kZVRvUmVtb3ZlKTsKLSAgICBpZiAoIXNlbGVjdGlvblN0eWxlKQotICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmcgdmFsdWUgPSBzZWxlY3Rpb25TdHlsZS0+
Z2V0UHJvcGVydHlWYWx1ZShzdHlsZVByb3BlcnR5SUQpOwotCi0gICAgaWYgKG5vZGVUb1JlbW92
ZSkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbm9kZVRvUmVtb3Zl
LT5yZW1vdmUoZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
dmFsdWU7Ci19Ci0KIFBhc3NSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBGcmFt
ZTo6c2VsZWN0aW9uQ29tcHV0ZWRTdHlsZShOb2RlKiYgbm9kZVRvUmVtb3ZlKSBjb25zdAogewog
ICAgIG5vZGVUb1JlbW92ZSA9IDA7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gNjI2NjMpCisrKyBXZWJDb3Jl
L3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDcgKzE5Niw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRNYXJrKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
KTsKIAogICAgICAgICB2b2lkIGNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZShDU1NTdHlsZURlY2xh
cmF0aW9uKiAsIEVkaXRBY3Rpb24gPSBFZGl0QWN0aW9uVW5zcGVjaWZpZWQpOwotICAgICAgICBT
dHJpbmcgc2VsZWN0aW9uU3RhcnRTdHlsZVByb3BlcnR5VmFsdWUoaW50IHN0eWxlUHJvcGVydHlJ
RCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCkg
Y29uc3Q7CiAgICAgICAgIHZvaWQgYXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQoRWxlbWVudCop
IGNvbnN0OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MzAwMykKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA3LTA5ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIHF1ZXJ5Q29tbWFuZFZhbHVlKCJCYWNrQ29sb3IiKSByZXR1cm5z
IHJnYigwLDAsMCkgZm9yIGVsZW1lbnRzIHdpdGggdHJhbnNwYXJlbnQgYmFja2dyb3VuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2ODAKKworICAg
ICAgICBUZXN0cyBxdWVyeUNvbW1hbmRWYWx1ZSgiQmFja0NvbG9yIikgb24gdmFyaW91cyBjYXNl
cywgZXNwZWNpYWxseSB0aGUgY2FzZXMgd2hlcmUgYmFja2dyb3VuZCBjb2xvciBvZgorICAgICAg
ICB0aGUgc2VsZWN0ZWQgbm9kZSBpcyB0cmFuc3BhcmVudCBidXQgdGhlIGJhY2tncm91bmQgY29s
b3Igb2YgaXRzIGFuY2VzdG9yIGhhcyBhIGNvbG9yLgorCisgICAgICAgICogZWRpdGluZy9leGVj
Q29tbWFuZC9xdWVyeS1jb21tYW5kLXZhbHVlLWJhY2tncm91bmQtY29sb3ItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL3F1ZXJ5LWNvbW1hbmQtdmFs
dWUtYmFja2dyb3VuZC1jb2xvci5odG1sOiBBZGRlZC4KKwogMjAxMC0wNy0wOSAgRXJpYyBTZWlk
ZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4K
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcXVlcnktY29tbWFuZC12YWx1
ZS1iYWNrZ3JvdW5kLWNvbG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3F1ZXJ5LWNvbW1hbmQtdmFsdWUtYmFja2dyb3VuZC1jb2xv
ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL3F1ZXJ5LWNvbW1hbmQtdmFsdWUtYmFja2dyb3VuZC1jb2xvci1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK1BBU1MgcmdiKDAsIDEyOCwgMCkgZm9yIDxk
aXYgc3R5bGU9J2JhY2tncm91bmQ6IGdyZWVuOyc+PHNwYW4gaWQ9c2VsZWN0ZWQ+aGVsbG8gd29y
bGQ8L3NwYW4+PC9kaXY+CitQQVNTIHJnYigwLCAxMjgsIDApIGZvciA8ZGl2IHN0eWxlPSdiYWNr
Z3JvdW5kOiBncmVlbjsnPjxwPmhlbGxvPC9wPjxzcGFuIGlkPXNlbGVjdGVkPndvcmxkPC9zcGFu
PjxwPndlYmtpdDwvcD48L2Rpdj4KK1BBU1MgcmdiKDAsIDAsIDI1NSkgZm9yIDxkaXYgc3R5bGU9
J2JhY2tncm91bmQ6IGdyZWVuOyc+aGVsbG8gPHNwYW4gc3R5bGU9J2JhY2tncm91bmQtY29sb3I6
IGJsdWU7JyBpZD1zZWxlY3RlZD53b3JsZDwvc3Bhbj48L2Rpdj4KK0ZBSUxFRCBleHBlY3RlZCBy
Z2IoMjA0LCAyMDQsIDIwNCkgYnV0IGdvdCByZ2IoMCwgMTI4LCAwKSBmb3IgPGRpdiBzdHlsZT0n
YmFja2dyb3VuZDogZ3JlZW47Jz5oZWxsbzxzcGFuIHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7
IHRvcDogMjAwcHg7JyBpZD1zZWxlY3RlZD53b3JsZDwvc3Bhbj48L2Rpdj4KK0ZBSUxFRCBleHBl
Y3RlZCByZ2IoMCwgMCwgMCkgYnV0IGdvdCByZ2IoMCwgMTI4LCAwKSBmb3IgPGRpdiBzdHlsZT0n
YmFja2dyb3VuZDogZ3JlZW47Jz5oZWxsbzxzcGFuIHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7
IHRvcDogNTAwcHg7JyBpZD1zZWxlY3RlZD53b3JsZDwvc3Bhbj48L2Rpdj4KK1BBU1MgcmdiKDAs
IDEyOCwgMCkgZm9yIDxkaXYgc3R5bGU9J2JhY2tncm91bmQ6IGdyZWVuOycgaWQ9c2VsZWN0ZWQ+
PHNwYW4gc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHllbGxvdyc+aGVsbG88L3NwYW4+IHdvcmxk
PC9kaXY+CitQQVNTIHJnYigwLCAxMjgsIDApIGZvciA8ZGl2IHN0eWxlPSdiYWNrZ3JvdW5kOiBn
cmVlbjsnIGlkPXNlbGVjdGVkPjxzcGFuIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3cn
PmhlbGxvPC9zcGFuPjxzcGFuIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3cnPiB3b3Js
ZDwvc3Bhbj48L2Rpdj4KK1BBU1MgcmdiKDAsIDEyOCwgMCkgZm9yIDxkaXYgc3R5bGU9J2JhY2tn
cm91bmQ6IGdyZWVuOycgaWQ9c2VsZWN0ZWQ+PHNwYW4gc3R5bGU9J2JhY2tncm91bmQtY29sb3I6
IHllbGxvdyc+aGVsbG88L3NwYW4+PHNwYW4gc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IGJsdWUn
PiB3b3JsZDwvc3Bhbj48L2Rpdj4KK1BBU1MgcmdiKDI1NSwgMjU1LCAwKSBmb3IgPGRpdiBzdHls
ZT0nYmFja2dyb3VuZDogZ3JlZW47Jz48c3BhbiBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogeWVs
bG93JyBpZD1zZWxlY3RlZD5oZWxsbyB3b3JsZDwvc3Bhbj48L2Rpdj4KK1BBU1MgcmdiKDAsIDEy
OCwgMCkgZm9yIDxkaXYgc3R5bGU9J2JhY2tncm91bmQ6IGdyZWVuOyc+PHNwYW4gc3R5bGU9J2Jh
Y2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDAsIDApOycgaWQ9c2VsZWN0ZWQ+aGVsbG8g
d29ybGQ8L3NwYW4+PC9kaXY+CitQQVNTIHJnYmEoMjU1LCAyNTUsIDAsIDAuNDk2MDk0KSBmb3Ig
PGRpdiBzdHlsZT0nYmFja2dyb3VuZDogZ3JlZW47Jz48c3BhbiBzdHlsZT0nYmFja2dyb3VuZC1j
b2xvcjogcmdiYSgyNTUsIDI1NSwgMCwgMC41KTsnIGlkPXNlbGVjdGVkPmhlbGxvIHdvcmxkPC9z
cGFuPjwvZGl2PgorCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcXVl
cnktY29tbWFuZC12YWx1ZS1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9xdWVyeS1jb21tYW5kLXZhbHVlLWJhY2tncm91
bmQtY29sb3IuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvcXVlcnktY29tbWFuZC12YWx1ZS1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjAgQEAKKzxodG1sPgorPGJvZHkgc3R5bGU9ImJhY2tncm91bmQ6ICNj
Y2NjY2M7Ij4KKzxwIGlkPSJjb25zb2xlIj48L3A+Cis8ZGl2IGlkPSJiYWNrZ3JvdW5kIiBzdHls
ZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDQ5MHB4OyB3aWR0aDogNTAwcHg7IGhlaWdodDoz
ZW07YmFja2dyb3VuZDogYmxhY2s7Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnRhaW5lciIgY29udGVu
dGVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4g
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBnZXRDb2xvcihlKSB7CisgICAgaWYgKGRv
Y3VtZW50LnNlbGVjdGlvbikgeworICAgICAgICB2YXIgciA9IGRvY3VtZW50LnNlbGVjdGlvbi5j
cmVhdGVSYW5nZSgpOworICAgICAgICByLm1vdmVUb0VsZW1lbnRUZXh0KGUpOworICAgICAgICBy
LnNlbGVjdCgpOworICAgICAgICBiYWNrQ29sb3IgPSBkb2N1bWVudC5xdWVyeUNvbW1hbmRWYWx1
ZSgnYmFja0NvbG9yJyk7CisgICAgICAgIHIgPSAoYmFja0NvbG9yICYgMHhGRikKKyAgICAgICAg
ZyA9ICgoYmFja0NvbG9yID4+IDgpICYgMHhGRikKKyAgICAgICAgYiA9ICgoYmFja0NvbG9yID4+
IDE2KSAmIDB4RkYpCisgICAgICAgIHJldHVybiAncmdiKCcrcisnLCAnK2crJywgJytiKycpJzsK
KyAgICB9IGVsc2UgeworICAgICAgICB2YXIgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgICAgIHZhciBzID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgICAgICByLnNldFN0YXJ0
KGUsIDApOworICAgICAgICByLnNldEVuZChlLCBlLmNoaWxkTm9kZXMubGVuZ3RoKTsKKyAgICAg
ICAgcy5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICAgICAgcy5hZGRSYW5nZShyKTsKKyAgICAgICAg
cmV0dXJuIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdiYWNrQ29sb3InKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3QoaHRtbCwgZXhwZWN0ZWQpIHsKKyAgICB2YXIgYyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKTsKKyAgICBjLmlubmVySFRNTCA9IGh0bWw7Cisg
ICAgdmFyIGFjdHVhbCA9IGdldENvbG9yKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWxlY3Rl
ZCcpKTsKKyAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xl
Jyk7CisgICAgaWYgKGFjdHVhbCA9PSBleHBlY3RlZCkgeworICAgICAgICBjb25zb2xlLmlubmVy
SFRNTCArPSAiPHNwYW4gc3R5bGU9J2NvbG9yOiBncmVlbjsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz5Q
QVNTPC9zcGFuPiAiK2V4cGVjdGVkKyIgZm9yICI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29u
c29sZS5pbm5lckhUTUwgKz0gIjxzcGFuIHN0eWxlPSdjb2xvcjogcmVkOyBmb250LXdlaWdodDog
Ym9sZDsnPkZBSUxFRDwvc3Bhbj4gZXhwZWN0ZWQgIitleHBlY3RlZCsKKyAgICAgICAgCSIgYnV0
IGdvdCAiK2FjdHVhbCsiIGZvciAiOworICAgIH0KKyAgICBjb25zb2xlLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKGh0bWwpKTsKKyAgICBjb25zb2xlLmlubmVySFRNTCArPSAi
PGJyPiI7CisgICAgYy5pbm5lckhUTUwgPSAiIjsKK30KKwordGVzdCgiPGRpdiBzdHlsZT0nYmFj
a2dyb3VuZDogZ3JlZW47Jz48c3BhbiBpZD1zZWxlY3RlZD5oZWxsbyB3b3JsZDwvc3Bhbj48L2Rp
dj4iLCAncmdiKDAsIDEyOCwgMCknKTsKK3Rlc3QoIjxkaXYgc3R5bGU9J2JhY2tncm91bmQ6IGdy
ZWVuOyc+PHA+aGVsbG88L3A+PHNwYW4gaWQ9c2VsZWN0ZWQ+d29ybGQ8L3NwYW4+PHA+d2Via2l0
PC9wPjwvZGl2PiIsICdyZ2IoMCwgMTI4LCAwKScpOwordGVzdCgiPGRpdiBzdHlsZT0nYmFja2dy
b3VuZDogZ3JlZW47Jz5oZWxsbyA8c3BhbiBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsn
IGlkPXNlbGVjdGVkPndvcmxkPC9zcGFuPjwvZGl2PiIsICdyZ2IoMCwgMCwgMjU1KScpOwordGVz
dCgiPGRpdiBzdHlsZT0nYmFja2dyb3VuZDogZ3JlZW47Jz5oZWxsbzxzcGFuIHN0eWxlPSdwb3Np
dGlvbjogYWJzb2x1dGU7IHRvcDogMjAwcHg7JyBpZD1zZWxlY3RlZD53b3JsZDwvc3Bhbj48L2Rp
dj4iLCAncmdiKDIwNCwgMjA0LCAyMDQpJyk7Cit0ZXN0KCI8ZGl2IHN0eWxlPSdiYWNrZ3JvdW5k
OiBncmVlbjsnPmhlbGxvPHNwYW4gc3R5bGU9J3Bvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MDBw
eDsnIGlkPXNlbGVjdGVkPndvcmxkPC9zcGFuPjwvZGl2PiIsICdyZ2IoMCwgMCwgMCknKTsKK3Rl
c3QoIjxkaXYgc3R5bGU9J2JhY2tncm91bmQ6IGdyZWVuOycgaWQ9c2VsZWN0ZWQ+PHNwYW4gc3R5
bGU9J2JhY2tncm91bmQtY29sb3I6IHllbGxvdyc+aGVsbG88L3NwYW4+IHdvcmxkPC9kaXY+Iiwg
J3JnYigwLCAxMjgsIDApJyk7Cit0ZXN0KCI8ZGl2IHN0eWxlPSdiYWNrZ3JvdW5kOiBncmVlbjsn
IGlkPXNlbGVjdGVkPjxzcGFuIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3cnPmhlbGxv
PC9zcGFuPjxzcGFuIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3cnPiB3b3JsZDwvc3Bh
bj48L2Rpdj4iLCAncmdiKDAsIDEyOCwgMCknKTsKK3Rlc3QoIjxkaXYgc3R5bGU9J2JhY2tncm91
bmQ6IGdyZWVuOycgaWQ9c2VsZWN0ZWQ+PHNwYW4gc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHll
bGxvdyc+aGVsbG88L3NwYW4+PHNwYW4gc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IGJsdWUnPiB3
b3JsZDwvc3Bhbj48L2Rpdj4iLCAncmdiKDAsIDEyOCwgMCknKTsKK3Rlc3QoIjxkaXYgc3R5bGU9
J2JhY2tncm91bmQ6IGdyZWVuOyc+PHNwYW4gc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHllbGxv
dycgaWQ9c2VsZWN0ZWQ+aGVsbG8gd29ybGQ8L3NwYW4+PC9kaXY+IiwgJ3JnYigyNTUsIDI1NSwg
MCknKTsKK3Rlc3QoIjxkaXYgc3R5bGU9J2JhY2tncm91bmQ6IGdyZWVuOyc+PHNwYW4gc3R5bGU9
J2JhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDAsIDApOycgaWQ9c2VsZWN0ZWQ+aGVs
bG8gd29ybGQ8L3NwYW4+PC9kaXY+IiwgJ3JnYigwLCAxMjgsIDApJyk7Cit0ZXN0KCI8ZGl2IHN0
eWxlPSdiYWNrZ3JvdW5kOiBncmVlbjsnPjxzcGFuIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2JhKDI1NSwgMjU1LCAwLCAwLjUpOycgaWQ9c2VsZWN0ZWQ+aGVsbG8gd29ybGQ8L3NwYW4+PC9k
aXY+IiwgJ3JnYmEoMjU1LCAyNTUsIDAsIDAuNDk2MDk0KScpOworCis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62007</attachid>
            <date>2010-07-19 15:51:22 -0700</date>
            <delta_ts>2010-07-19 15:51:22 -0700</delta_ts>
            <desc>work in progress 3</desc>
            <filename>work-in-progress-for-42436c</filename>
            <type>text/plain</type>
            <size>19012</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcAkocmV2aXNpb24gNjM0ODIp
CisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw3ICszNiw0NiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOworICAgIAorc3RhdGljIGJvb2wgaXNUYWJsZUNlbGxPckxpc3QoY29uc3Qg
Tm9kZSogbikgeworICAgIHJldHVybiBpc1RhYmxlQ2VsbChuKSB8fCBuLT5oYXNUYWdOYW1lKHVs
VGFnKSB8fCBuLT5oYXNUYWdOYW1lKG9sVGFnKTsKK30KIAorY2xhc3MgUGVyc2lzdGVudEVkaXRp
bmdQb3NpdGlvbiB7CitwdWJsaWM6CisgICAgUGVyc2lzdGVudEVkaXRpbmdQb3NpdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKKyAgICB7CisgICAgICAgIFBvc2l0
aW9uIHAgPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgbV9lZGl0
YWJsZVJvb3QgPSBlZGl0YWJsZVJvb3RGb3JQb3NpdGlvbihwKTsKKyAgICAgICAgQVNTRVJUKG1f
ZWRpdGFibGVSb290KTsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUobV9lZGl0YWJsZVJvb3QtPmRvY3VtZW50KCksIG1fZWRpdGFibGVSb290LCAwLCBwLmNvbnRh
aW5lck5vZGUoKSwgcC5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkpOworICAgICAgICBt
X2luZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7Cisg
ICAgICAgIG1fb3JpZ2luYWwgPSB2aXNpYmxlUG9zaXRpb247CisgICAgfQorCisgICAgb3BlcmF0
b3IgVmlzaWJsZVBvc2l0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX29yaWdpbmFs
LmlzTm90TnVsbCgpICYmIG1fb3JpZ2luYWwuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCktPmluRG9j
dW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBtX29yaWdpbmFsOworICAgICAgICBBU1NFUlQo
bV9lZGl0YWJsZVJvb3QpOworICAgICAgICBBU1NFUlQobV9lZGl0YWJsZVJvb3QtPmluRG9jdW1l
bnQoKSk7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fZWRp
dGFibGVSb290LT5kb2N1bWVudCgpLCBtX2VkaXRhYmxlUm9vdCwgMCwgbV9lZGl0YWJsZVJvb3Qs
IGxhc3RPZmZzZXRJbk5vZGUobV9lZGl0YWJsZVJvb3QpKTsKKyAgICAgICAgaW50IG1heEluZGV4
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAg
IHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChtX2VkaXRh
YmxlUm9vdCwgbWF4SW5kZXggPiBtX2luZGV4ID8gbV9pbmRleCA6IG1heEluZGV4LCAwLCB0cnVl
KTsKKyAgICAgICAgbV9vcmlnaW5hbCA9IHJhbmdlLT5zdGFydFBvc2l0aW9uKCk7CisgICAgICAg
IHJldHVybiBtX29yaWdpbmFsOworICAgIH0KKyAgICAKKyAgICBQb3NpdGlvbiBkZWVwRXF1aXZh
bGVudCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCp0aGlz
KS5kZWVwRXF1aXZhbGVudCgpOworICAgIH0KK3ByaXZhdGU6CisgICAgbXV0YWJsZSBWaXNpYmxl
UG9zaXRpb24gbV9vcmlnaW5hbDsKKyAgICBFbGVtZW50KiBtX2VkaXRhYmxlUm9vdDsKKyAgICBp
bnQgbV9pbmRleDsKK307CisKIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExpc3RDb21t
YW5kOjppbnNlcnRMaXN0KERvY3VtZW50KiBkb2N1bWVudCwgVHlwZSB0eXBlKQogewogICAgIFJl
ZlB0cjxJbnNlcnRMaXN0Q29tbWFuZD4gaW5zZXJ0Q29tbWFuZCA9IGNyZWF0ZShkb2N1bWVudCwg
dHlwZSk7CkBAIC04OCwxMiArMTI3LDE2IEBACiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFy
dE9mTGFzdFBhcmFncmFwaCA9IHN0YXJ0T2ZQYXJhZ3JhcGgoZW5kT2ZTZWxlY3Rpb24pOwogCiAg
ICAgICAgIGlmIChzdGFydE9mUGFyYWdyYXBoKHN0YXJ0T2ZTZWxlY3Rpb24pICE9IHN0YXJ0T2ZM
YXN0UGFyYWdyYXBoKSB7CisgICAgICAgICAgICBQZXJzaXN0ZW50RWRpdGluZ1Bvc2l0aW9uIG9y
aWdpbmFsU3RhcnQoZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgICAgICAgICBQZXJz
aXN0ZW50RWRpdGluZ1Bvc2l0aW9uIG9yaWdpbmFsRW5kKGVuZGluZ1NlbGVjdGlvbigpLmVuZCgp
KTsKKwogICAgICAgICAgICAgTm9kZSogc3RhcnRMaXN0ID0gZW5jbG9zaW5nTGlzdChzdGFydE9m
U2VsZWN0aW9uLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsKICAgICAgICAgICAgIE5vZGUqIGVu
ZExpc3QgPSBlbmNsb3NpbmdMaXN0KGVuZE9mU2VsZWN0aW9uLmRlZXBFcXVpdmFsZW50KCkubm9k
ZSgpKTsKICAgICAgICAgICAgIGJvb2wgZm9yY2VDcmVhdGVMaXN0ID0gIXN0YXJ0TGlzdCB8fCBz
dGFydExpc3QgIT0gZW5kTGlzdDsKIAogICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0
T2ZDdXJyZW50UGFyYWdyYXBoID0gc3RhcnRPZlNlbGVjdGlvbjsKLSAgICAgICAgICAgIHdoaWxl
IChzdGFydE9mQ3VycmVudFBhcmFncmFwaCAhPSBzdGFydE9mTGFzdFBhcmFncmFwaCkgeworICAg
ICAgICAgICAgd2hpbGUgKHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoICE9IHN0YXJ0T2ZMYXN0UGFy
YWdyYXBoCisgICAgICAgICAgICAgICAgICAgJiYgc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGguaXNO
b3ROdWxsKCkpIHsKICAgICAgICAgICAgICAgICAvLyBkb0FwcGx5KCkgbWF5IG9wZXJhdGUgb24g
YW5kIHJlbW92ZSB0aGUgbGFzdCBwYXJhZ3JhcGggb2YgdGhlIHNlbGVjdGlvbiBmcm9tIHRoZSBk
b2N1bWVudCAKICAgICAgICAgICAgICAgICAvLyBpZiBpdCdzIGluIHRoZSBzYW1lIGxpc3QgaXRl
bSBhcyBzdGFydE9mQ3VycmVudFBhcmFncmFwaC4gIFJldHVybiBlYXJseSB0byBhdm9pZCBhbiAK
ICAgICAgICAgICAgICAgICAvLyBpbmZpbml0ZSBsb29wIGFuZCBiZWNhdXNlIHRoZXJlIGlzIG5v
IG1vcmUgd29yayB0byBiZSBkb25lLgpAQCAtMTAyLDM1ICsxNDUsNDkgQEAKICAgICAgICAgICAg
ICAgICBpZiAoIXN0YXJ0T2ZMYXN0UGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpLT5p
bkRvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAg
ICBzZXRFbmRpbmdTZWxlY3Rpb24oc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGgpOwotICAgICAgICAg
ICAgICAgIGRvQXBwbHlGb3JTaW5nbGVQYXJhZ3JhcGgoZm9yY2VDcmVhdGVMaXN0KTsKIAorICAg
ICAgICAgICAgICAgIGJvb2wgaXNUYWJsZSA9IHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoLmRlZXBF
cXVpdmFsZW50KCkubm9kZSgpLT5oYXNUYWdOYW1lKHRhYmxlVGFnKTsKKyAgICAgICAgICAgICAg
ICBzdGFydE9mQ3VycmVudFBhcmFncmFwaCA9IGRvQXBwbHlGb3JTaW5nbGVQYXJhZ3JhcGgoc3Rh
cnRPZkN1cnJlbnRQYXJhZ3JhcGgsIGZvcmNlQ3JlYXRlTGlzdCk7CisKKyAgICAgICAgICAgICAg
ICAvLyBJZiB0aGUgb3JpZ2luYWwgc2VsZWN0aW9uIHN0YXJ0ZWQgYXQgdGhlIHRhYmxlIGVsZW1l
bnQsCisgICAgICAgICAgICAgICAgLy8gYW5kIHRoZSBzZWxlY3Rpb24gc2hpZnRlZCBpbnRvIHRo
ZSBmaXJzdCBjZWxsIG9mIHRoZSB0YWJsZSBhZnRlciBsaXN0aWZ5UGFyYWdyYXBoLAorICAgICAg
ICAgICAgICAgIC8vIHRoZW4gbW92ZSB0aGUgc2VsZWN0aW9uIG91dCBvZiB0aGUgdGFibGUgdG8g
YXZvaWQgcmVpdGVyYXRpbmcgdGhyb3VnaCB0aGUgdGFibGUuCisgICAgICAgICAgICAgICAgTm9k
ZSogbmV3U3RhcnROb2RlID0gc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQo
KS5ub2RlKCk7CisgICAgICAgICAgICAgICAgaWYgKGlzVGFibGUgJiYgbmV3U3RhcnROb2RlICYm
IChuZXdTdGFydE5vZGUtPnBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZSh0ZFRhZykgfHwgbmV3U3Rh
cnROb2RlLT5wYXJlbnROb2RlKCktPmhhc1RhZ05hbWUodGhUYWcpKSkKKyAgICAgICAgICAgICAg
ICAgICAgc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGggPSBwb3NpdGlvbkJlZm9yZU5vZGUoZW5jbG9z
aW5nTm9kZVdpdGhUYWcoc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSwg
dGFibGVUYWcpKTsKKwogICAgICAgICAgICAgICAgIC8vIEZldGNoIHRoZSBzdGFydCBvZiB0aGUg
c2VsZWN0aW9uIGFmdGVyIG1vdmluZyB0aGUgZmlyc3QgcGFyYWdyYXBoLAogICAgICAgICAgICAg
ICAgIC8vIGJlY2F1c2UgbW92aW5nIHRoZSBwYXJhZ3JhcGggd2lsbCBpbnZhbGlkYXRlIHRoZSBv
cmlnaW5hbCBzdGFydC4gIAogICAgICAgICAgICAgICAgIC8vIFdlJ2xsIHVzZSB0aGUgbmV3IHN0
YXJ0IHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIHNlbGVjdGlvbiBhZnRlciAKICAgICAgICAgICAg
ICAgICAvLyB3ZSBtb2RpZmllZCBhbGwgc2VsZWN0ZWQgcGFyYWdyYXBocy4KICAgICAgICAgICAg
ICAgICBpZiAoc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGggPT0gc3RhcnRPZlNlbGVjdGlvbikKLSAg
ICAgICAgICAgICAgICAgICAgc3RhcnRPZlNlbGVjdGlvbiA9IGVuZGluZ1NlbGVjdGlvbigpLnZp
c2libGVTdGFydCgpOworICAgICAgICAgICAgICAgICAgICBzdGFydE9mU2VsZWN0aW9uID0gc3Rh
cnRPZkN1cnJlbnRQYXJhZ3JhcGg7CiAKLSAgICAgICAgICAgICAgICBzdGFydE9mQ3VycmVudFBh
cmFncmFwaCA9IHN0YXJ0T2ZOZXh0UGFyYWdyYXBoKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVT
dGFydCgpKTsKKyAgICAgICAgICAgICAgICBzdGFydE9mQ3VycmVudFBhcmFncmFwaCA9IHN0YXJ0
T2ZOZXh0UGFyYWdyYXBoKHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihlbmRPZlNlbGVjdGlvbik7Ci0gICAgICAg
ICAgICBkb0FwcGx5Rm9yU2luZ2xlUGFyYWdyYXBoKGZvcmNlQ3JlYXRlTGlzdCk7Ci0gICAgICAg
ICAgICAvLyBGZXRjaCB0aGUgZW5kIG9mIHRoZSBzZWxlY3Rpb24sIGZvciB0aGUgcmVhc29uIG1l
bnRpb25lZCBhYm92ZS4KLSAgICAgICAgICAgIGVuZE9mU2VsZWN0aW9uID0gZW5kaW5nU2VsZWN0
aW9uKCkudmlzaWJsZUVuZCgpOwotICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24oc3RhcnRPZlNlbGVjdGlvbiwgZW5kT2ZTZWxlY3Rpb24pKTsKKyAgICAgICAg
ICAgIGRvQXBwbHlGb3JTaW5nbGVQYXJhZ3JhcGgoZW5kT2ZTZWxlY3Rpb24sIGZvcmNlQ3JlYXRl
TGlzdCk7CisgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihv
cmlnaW5hbFN0YXJ0LCBvcmlnaW5hbEVuZCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgZG9BcHBseUZvclNpbmdsZVBhcmFncmFwaChmYWxzZSk7CisgICAg
UGVyc2lzdGVudEVkaXRpbmdQb3NpdGlvbiBzdGFydChlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgp
KTsKKyAgICBQZXJzaXN0ZW50RWRpdGluZ1Bvc2l0aW9uIGVuZChlbmRpbmdTZWxlY3Rpb24oKS5l
bmQoKSk7CisKKyAgICBkb0FwcGx5Rm9yU2luZ2xlUGFyYWdyYXBoKGVuZGluZ1NlbGVjdGlvbigp
LnZpc2libGVTdGFydCgpLCBmYWxzZSk7CisKKyAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJs
ZVNlbGVjdGlvbihzdGFydCwgZW5kKSk7CiB9CiAKLXZvaWQgSW5zZXJ0TGlzdENvbW1hbmQ6OmRv
QXBwbHlGb3JTaW5nbGVQYXJhZ3JhcGgoYm9vbCBmb3JjZUNyZWF0ZUxpc3QpCitWaXNpYmxlUG9z
aXRpb24gSW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHlGb3JTaW5nbGVQYXJhZ3JhcGgoVmlzaWJs
ZVBvc2l0aW9uIHN0YXJ0LCBib29sIGZvcmNlQ3JlYXRlTGlzdCkKIHsKKyAgICBQZXJzaXN0ZW50
RWRpdGluZ1Bvc2l0aW9uIHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoKHN0YXJ0KTsKKwogICAgIC8v
IEZJWE1FOiBUaGlzIHdpbGwgcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMgZm9yIGEgc2VsZWN0
aW9uIHRoYXQgc3RhcnRzIGp1c3QgYmVmb3JlIGEKICAgICAvLyB0YWJsZSBhbmQgZW5kcyBpbnNp
ZGUgdGhlIGZpcnN0IGNlbGwsIHNlbGVjdGlvbkZvclBhcmFncmFwaEl0ZXJhdGlvbiBzaG91bGQg
cHJvYmFibHkKICAgICAvLyBiZSByZW5hbWVkIGFuZCBkZXBsb3llZCBpbnNpZGUgc2V0RW5kaW5n
U2VsZWN0aW9uKCkuCi0gICAgTm9kZSogc2VsZWN0aW9uTm9kZSA9IGVuZGluZ1NlbGVjdGlvbigp
LnN0YXJ0KCkubm9kZSgpOworICAgIE5vZGUqIHNlbGVjdGlvbk5vZGUgPSBzdGFydE9mQ3VycmVu
dFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKTsKICAgICBjb25zdCBRdWFsaWZpZWRO
YW1lIGxpc3RUYWcgPSAobV90eXBlID09IE9yZGVyZWRMaXN0KSA/IG9sVGFnIDogdWxUYWc7CiAg
ICAgTm9kZSogbGlzdENoaWxkTm9kZSA9IGVuY2xvc2luZ0xpc3RDaGlsZChzZWxlY3Rpb25Ob2Rl
KTsKICAgICBib29sIHN3aXRjaExpc3RUeXBlID0gZmFsc2U7CkBAIC0xNDMsMTEgKzIwMCwxMyBA
QAogICAgICAgICAgICAgLy8gbGlzdENoaWxkTm9kZSB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUg
bGlzdCBhbmQgYSBsaXN0IG9mIHR5cGUgbV90eXBlIHdpbGwgYmUgY3JlYXRlZC4KICAgICAgICAg
ICAgIHN3aXRjaExpc3RUeXBlID0gdHJ1ZTsKIAotICAgICAgICB1bmxpc3RpZnlQYXJhZ3JhcGgo
ZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCksIGxpc3ROb2RlLCBsaXN0Q2hpbGROb2Rl
KTsKKyAgICAgICAgdW5saXN0aWZ5UGFyYWdyYXBoKHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoLCBs
aXN0Tm9kZSwgbGlzdENoaWxkTm9kZSk7CiAgICAgfQogCiAgICAgaWYgKCFsaXN0Q2hpbGROb2Rl
IHx8IHN3aXRjaExpc3RUeXBlIHx8IGZvcmNlQ3JlYXRlTGlzdCkKLSAgICAgICAgbV9saXN0RWxl
bWVudCA9IGxpc3RpZnlQYXJhZ3JhcGgoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCks
IGxpc3RUYWcpOworICAgICAgICBtX2xpc3RFbGVtZW50ID0gbGlzdGlmeVBhcmFncmFwaChzdGFy
dE9mQ3VycmVudFBhcmFncmFwaCwgbGlzdFRhZyk7CisKKyAgICByZXR1cm4gc3RhcnRPZkN1cnJl
bnRQYXJhZ3JhcGg7CiB9CiAKIHZvaWQgSW5zZXJ0TGlzdENvbW1hbmQ6OnVubGlzdGlmeVBhcmFn
cmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24mIG9yaWdpbmFsU3RhcnQsIEhUTUxFbGVtZW50KiBs
aXN0Tm9kZSwgTm9kZSogbGlzdENoaWxkTm9kZSkKQEAgLTIxNSwxMiArMjc0LDIyIEBACiAgICAg
VmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChvcmlnaW5hbFN0YXJ0KTsK
ICAgICBWaXNpYmxlUG9zaXRpb24gZW5kID0gZW5kT2ZQYXJhZ3JhcGgoc3RhcnQpOwogCisgICAg
Ly8gU3BlY2lhbCBjYXNlIGVtcHR5IHVuc3BsaXR0YWJsZSBlbGVtZW50cyBiZWNhdXNlIHRoZXJl
J3Mgbm90aGluZyB0byBzcGxpdAorICAgIC8vIGFuZCB0aGVyZSdzIG5vdGhpbmcgdG8gbW92ZS4K
KyAgICBpZiAoaXNBdFVuc3BsaXR0YWJsZUVsZW1lbnQoc3RhcnQuZGVlcEVxdWl2YWxlbnQoKSkp
IHsKKyAgICAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBsaXN0SXRlbUVsZW1lbnQgPSBjcmVhdGVM
aXN0SXRlbUVsZW1lbnQoZG9jdW1lbnQoKSk7CisgICAgICAgIFJlZlB0cjxIVE1MRWxlbWVudD4g
bGlzdEVsZW1lbnQgPSBjcmVhdGVIVE1MRWxlbWVudChkb2N1bWVudCgpLCBsaXN0VGFnKTsKKyAg
ICAgICAgUmVmUHRyPEVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KGRv
Y3VtZW50KCkpOworICAgICAgICBhcHBlbmROb2RlKGxpc3RJdGVtRWxlbWVudCwgbGlzdEVsZW1l
bnQpOworICAgICAgICBhcHBlbmROb2RlKHBsYWNlaG9sZGVyLCBsaXN0SXRlbUVsZW1lbnQpOwor
ICAgICAgICBpbnNlcnROb2RlQXQobGlzdEVsZW1lbnQuZ2V0KCksIHN0YXJ0LmRlZXBFcXVpdmFs
ZW50KCkpOworICAgICAgICByZXR1cm4gbGlzdEVsZW1lbnQ7CisgICAgfQorCiAgICAgLy8gQ2hl
Y2sgZm9yIGFkam9pbmluZyBsaXN0cy4KICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNQb3Np
dGlvbiA9IHN0YXJ0LnByZXZpb3VzKHRydWUpOwogICAgIFZpc2libGVQb3NpdGlvbiBuZXh0UG9z
aXRpb24gPSBlbmQubmV4dCh0cnVlKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGxpc3RJdGVt
RWxlbWVudCA9IGNyZWF0ZUxpc3RJdGVtRWxlbWVudChkb2N1bWVudCgpKTsKLSAgICBSZWZQdHI8
SFRNTEVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkp
OwotICAgIGFwcGVuZE5vZGUocGxhY2Vob2xkZXIsIGxpc3RJdGVtRWxlbWVudCk7CiAgICAgRWxl
bWVudCogcHJldmlvdXNMaXN0ID0gb3V0ZXJtb3N0RW5jbG9zaW5nTGlzdChwcmV2aW91c1Bvc2l0
aW9uLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsKICAgICBFbGVtZW50KiBuZXh0TGlzdCA9IG91
dGVybW9zdEVuY2xvc2luZ0xpc3QobmV4dFBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkubm9kZSgp
KTsKICAgICBOb2RlKiBzdGFydE5vZGUgPSBzdGFydC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKTsK
QEAgLTIzMyw2ICszMDIsMTkgQEAKICAgICAgICAgbmV4dExpc3QgPSAwOwogICAgIC8vIFBsYWNl
IGxpc3QgaXRlbSBpbnRvIGFkam9pbmluZyBsaXN0cy4KICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+
IGxpc3RFbGVtZW50OworCisgICAgTm9kZSogZW5jbG9zaW5nQ2VsbE9yTGlzdCA9IGVuY2xvc2lu
Z05vZGVPZlR5cGUoc3RhcnQuZGVlcEVxdWl2YWxlbnQoKSwgJmlzVGFibGVDZWxsT3JMaXN0KTsK
KyAgICBOb2RlKiBub2RlVG9TcGxpdFRvOworICAgIGlmIChlbmNsb3NpbmdDZWxsT3JMaXN0KQor
ICAgICAgICBub2RlVG9TcGxpdFRvID0gZW5jbG9zaW5nQ2VsbE9yTGlzdDsKKyAgICBlbHNlIGlm
IChlbmNsb3NpbmdCbG9jayhzdGFydE5vZGUpKQorICAgICAgICBub2RlVG9TcGxpdFRvID0gZW5j
bG9zaW5nQmxvY2soc3RhcnROb2RlKTsKKyAgICBlbHNlCisgICAgICAgIG5vZGVUb1NwbGl0VG8g
PSBlZGl0YWJsZVJvb3RGb3JQb3NpdGlvbihzdGFydC5kZWVwRXF1aXZhbGVudCgpKTsKKworICAg
IFJlZlB0cjxOb2RlPiBvdXRlckJsb2NrID0gKHN0YXJ0Tm9kZSA9PSBub2RlVG9TcGxpdFRvKSA/
IHN0YXJ0Tm9kZSA6IHNwbGl0VHJlZVRvTm9kZShzdGFydE5vZGUsIG5vZGVUb1NwbGl0VG8pOwor
CisgICAgSFRNTEVsZW1lbnQqIGNvbnRhaW5lciA9IGxpc3RJdGVtRWxlbWVudC5nZXQoKTsKICAg
ICBpZiAocHJldmlvdXNMaXN0KQogICAgICAgICBhcHBlbmROb2RlKGxpc3RJdGVtRWxlbWVudCwg
cHJldmlvdXNMaXN0KTsKICAgICBlbHNlIGlmIChuZXh0TGlzdCkKQEAgLTI0MCw3ICszMjIsMTIg
QEAKICAgICBlbHNlIHsKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0LgogICAgICAgICBsaXN0
RWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50KGRvY3VtZW50KCksIGxpc3RUYWcpOwotICAgICAg
ICBhcHBlbmROb2RlKGxpc3RJdGVtRWxlbWVudCwgbGlzdEVsZW1lbnQpOworICAgICAgICBOb2Rl
KiBsaXN0Q2hpbGROb2RlID0gZW5jbG9zaW5nTGlzdENoaWxkKHN0YXJ0Tm9kZSk7CisgICAgICAg
IGlmIChsaXN0Q2hpbGROb2RlICYmIGxpc3RDaGlsZE5vZGUtPmhhc1RhZ05hbWUobGlUYWcpKSB7
CisgICAgICAgICAgICBsaXN0SXRlbUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+
KGxpc3RDaGlsZE5vZGUpOworICAgICAgICAgICAgY29udGFpbmVyID0gbGlzdEVsZW1lbnQuZ2V0
KCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXBwZW5kTm9kZShsaXN0SXRlbUVsZW1l
bnQsIGxpc3RFbGVtZW50KTsKIAogICAgICAgICBpZiAoc3RhcnQgPT0gZW5kICYmIGlzQmxvY2so
c3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAvLyBJbnNlcnRp
bmcgdGhlIGxpc3QgaW50byBhbiBlbXB0eSBwYXJhZ3JhcGggdGhhdCBpc24ndCBoZWxkIG9wZW4g
CkBAIC0yNTcsMTIgKzM0NCwxMSBAQAogICAgICAgICAvLyBpbmxpbmUgYW5jZXN0b3JzIG9mIHN0
YXJ0LCBzaW5jZSBpdCBpcyBlYXNpZXIgZm9yIGVkaXRpbmcgdG8gcHJvZHVjZSAKICAgICAgICAg
Ly8gY2xlYW4gbWFya3VwIHdoZW4gaW5saW5lIGVsZW1lbnRzIGFyZSBwdXNoZWQgZG93biBhcyBm
YXIgYXMgcG9zc2libGUuCiAgICAgICAgIFBvc2l0aW9uIGluc2VydGlvblBvcyhzdGFydC5kZWVw
RXF1aXZhbGVudCgpLnVwc3RyZWFtKCkpOwotICAgICAgICAvLyBBbHNvIGF2b2lkIHRoZSBjb250
YWluaW5nIGxpc3QgaXRlbS4KLSAgICAgICAgTm9kZSogbGlzdENoaWxkID0gZW5jbG9zaW5nTGlz
dENoaWxkKGluc2VydGlvblBvcy5ub2RlKCkpOwotICAgICAgICBpZiAobGlzdENoaWxkICYmIGxp
c3RDaGlsZC0+aGFzVGFnTmFtZShsaVRhZykpCi0gICAgICAgICAgICBpbnNlcnRpb25Qb3MgPSBw
b3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShsaXN0Q2hpbGQpOwogCi0gICAgICAgIGluc2VydE5v
ZGVBdChsaXN0RWxlbWVudCwgaW5zZXJ0aW9uUG9zKTsKKyAgICAgICAgaWYgKG91dGVyQmxvY2sg
PT0gZWRpdGFibGVSb290Rm9yUG9zaXRpb24oc3RhcnQuZGVlcEVxdWl2YWxlbnQoKSkpCisgICAg
ICAgICAgICBpbnNlcnROb2RlQXQobGlzdEVsZW1lbnQsIGluc2VydGlvblBvcyk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGluc2VydE5vZGVCZWZvcmUobGlzdEVsZW1lbnQsIG91dGVyQmxv
Y2spOwogCiAgICAgICAgIC8vIFdlIGluc2VydGVkIHRoZSBsaXN0IGF0IHRoZSBzdGFydCBvZiB0
aGUgY29udGVudCB3ZSdyZSBhYm91dCB0byBtb3ZlCiAgICAgICAgIC8vIFVwZGF0ZSB0aGUgc3Rh
cnQgb2YgY29udGVudCwgc28gd2UgZG9uJ3QgdHJ5IHRvIG1vdmUgdGhlIGxpc3QgaW50byBpdHNl
bGYuICBidWcgMTkwNjYKQEAgLTI3Miw3ICszNTgsNyBAQAogICAgICAgICBuZXh0TGlzdCA9IG91
dGVybW9zdEVuY2xvc2luZ0xpc3QobmV4dFBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkubm9kZSgp
LCBlbmNsb3NpbmdMaXN0KGxpc3RFbGVtZW50LmdldCgpKSk7CiAgICAgfQogCi0gICAgbW92ZVBh
cmFncmFwaChzdGFydCwgZW5kLCBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24ocGxhY2Vob2xkZXIu
Z2V0KCksIDApKSwgdHJ1ZSk7CisgICAgbW92ZVBhcmFncmFwaFdpdGhDbG9uZXMoc3RhcnQsIGVu
ZCwgY29udGFpbmVyLCBvdXRlckJsb2NrLmdldCgpKTsKIAogICAgIC8vIEZJWE1FOiBsaXN0aWZ5
UGFyYWdyYXBoIHNob3VsZCBub3QgZGVwZW5kIG9uIGEgbWVtYmVyIHZhcmlhYmxlLgogICAgIC8v
IFNpbmNlIGZpeE9ycGhhbmVkTGlzdENoaWxkIGlzIHRoZSBvbmx5IG90aGVyIG1ldGhvZCB0aGF0
IHVwZGF0ZXMgbV9saXN0RWxlbWVudCwKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcAkocmV2aXNpb24gNjM0ODIpCisrKyBXZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjcsNyArODY3LDEwIEBACiAg
ICAgYmVmb3JlUGFyYWdyYXBoID0gVmlzaWJsZVBvc2l0aW9uKGJlZm9yZVBhcmFncmFwaC5kZWVw
RXF1aXZhbGVudCgpKTsKICAgICBhZnRlclBhcmFncmFwaCA9IFZpc2libGVQb3NpdGlvbihhZnRl
clBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpKTsKIAotICAgIGlmIChiZWZvcmVQYXJhZ3JhcGgu
aXNOb3ROdWxsKCkgJiYgIWlzVGFibGVFbGVtZW50KGJlZm9yZVBhcmFncmFwaC5kZWVwRXF1aXZh
bGVudCgpLm5vZGUoKSkgJiYgKCFpc0VuZE9mUGFyYWdyYXBoKGJlZm9yZVBhcmFncmFwaCkgfHwg
YmVmb3JlUGFyYWdyYXBoID09IGFmdGVyUGFyYWdyYXBoKSkgeworICAgIGlmIChiZWZvcmVQYXJh
Z3JhcGguaXNOb3ROdWxsKCkKKyAgICAgICAgJiYgIWlzVGFibGVFbGVtZW50KGJlZm9yZVBhcmFn
cmFwaC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKSkKKyAgICAgICAgJiYgKCghaXNFbmRPZlBhcmFn
cmFwaChiZWZvcmVQYXJhZ3JhcGgpICYmICFpc1N0YXJ0T2ZQYXJhZ3JhcGgoYmVmb3JlUGFyYWdy
YXBoKSkKKyAgICAgICAgICAgIHx8IGJlZm9yZVBhcmFncmFwaCA9PSBhZnRlclBhcmFncmFwaCkp
IHsKICAgICAgICAgLy8gRklYTUU6IFRyaW0gdGV4dCBiZXR3ZWVuIGJlZm9yZVBhcmFncmFwaCBh
bmQgYWZ0ZXJQYXJhZ3JhcGggaWYgdGhleSBhcmVuJ3QgZXF1YWwuCiAgICAgICAgIGluc2VydE5v
ZGVBdChjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSksIGJlZm9yZVBhcmFncmFwaC5kZWVw
RXF1aXZhbGVudCgpKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENv
bW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQu
aAkocmV2aXNpb24gNjM0ODIpCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQAogCiAgICAgSFRNTEVsZW1lbnQqIGZp
eE9ycGhhbmVkTGlzdENoaWxkKE5vZGUqKTsKICAgICBib29sIG1vZGlmeVJhbmdlKCk7Ci0gICAg
dm9pZCBkb0FwcGx5Rm9yU2luZ2xlUGFyYWdyYXBoKGJvb2wgZm9yY2VDcmVhdGVMaXN0KTsKKyAg
ICBWaXNpYmxlUG9zaXRpb24gZG9BcHBseUZvclNpbmdsZVBhcmFncmFwaChWaXNpYmxlUG9zaXRp
b24sIGJvb2wgZm9yY2VDcmVhdGVMaXN0KTsKICAgICB2b2lkIHVubGlzdGlmeVBhcmFncmFwaChj
b25zdCBWaXNpYmxlUG9zaXRpb24mIG9yaWdpbmFsU3RhcnQsIEhUTUxFbGVtZW50KiBsaXN0Tm9k
ZSwgTm9kZSogbGlzdENoaWxkTm9kZSk7CiAgICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gbGlz
dGlmeVBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24mIG9yaWdpbmFsU3RhcnQsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGxpc3RUYWcpOwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9saXN0
RWxlbWVudDsKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWxp
c3QtMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVj
Q29tbWFuZC9yZW1vdmUtbGlzdC0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0ODIpCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1saXN0LTEtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9u
CiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZy
b20gMCBvZiBMSSA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNjAgb2Yg
I3RleHQgPiBMSSA+IE9MID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5n
ZTpyYW5nZSBmcm9tIDAgb2YgTEkgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDYwIG9mICN0ZXh0ID4gTEkgPiBPTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZB
TFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDYwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0g
c3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDU5IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxl
Y3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBUaGlzIHRlc3Rz
IGRlLWxpc3RpbmcgY29udGVudC4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvNTIwNzM2OS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC81MjA3MzY5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0ODIpCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUyMDczNjktZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDYgKzQsNiBAQAogVHdvCiBUaHJlZQogRm91cgotPHVsPjxsaT5PbmU8
L2xpPjxsaT5Ud288L2xpPjxsaT5UaHJlZTwvbGk+PGxpPkZvdXI8L2xpPjwvdWw+Cis8dWw+PGxp
Pk9uZTwvbGk+PGxpPlR3bzwvbGk+PGxpPjxsaT5UaHJlZTwvbGk+PC9saT48bGk+PGxpPkZvdXI8
L2xpPjwvbGk+PC91bD4KIAogUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC9zd2l0Y2gtbGlzdC10eXBlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3N3aXRjaC1saXN0LXR5cGUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA2MzQ4MikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvc3dpdGNo
LWxpc3QtdHlwZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiBF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVk
aXRpbmdOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
Tm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJh
bmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBMSSA+IFVMID4gU1BBTiA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgTEkgPiBVTCA+IFNQQU4gPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93
bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hh
bmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgTEkg
PiBVTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgTEkgPiBVTCA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
IEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlm
aWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCkBAIC0zMyw0ICszMyw0IEBACiBUaGlz
IHNob3VsZCBiZSBpbiBhbiBvcmRlcmVkIGxpc3QuCiBUaGlzIHNob3VsZCBub3QgYmUgaW4gYSBs
aXN0LgogVGhpcyBzaG91bGQgYmUgaW4gYW4gb3JkZXJlZCBsaXN0LgotPG9sIHN0eWxlPSJib3Jk
ZXI6IDFweCBzb2xpZCByZWQ7Ij4gPGxpPlRoaXMgc2hvdWxkIGJlIGluIGFuIG9yZGVyZWQgbGlz
dC48L2xpPiA8L29sPjxzcGFuIGlkPSJpdGVtMSI+PHVsPjxsaT48c3BhbiBpZD0iaXRlbTEiPlRo
aXMgc2hvdWxkIGJlIGluIGFuIHVub3JkZXJlZCBsaXN0Ljwvc3Bhbj4mbmJzcDs8L2xpPjwvdWw+
PC9zcGFuPjxvbCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmVkOyI+PGJyPiBUaGlzIHNob3Vs
ZCBiZSBpbiBhbiBvcmRlcmVkIGxpc3QuIDxsaT5UaGlzIHNob3VsZCBiZSBpbiBhbiBvcmRlcmVk
IGxpc3QuPC9saT4gPC9vbD48dWw+PGxpPlRoaXMgc2hvdWxkIGJlIGluIGFuIHVub3JkZXJlZCBs
aXN0LjwvbGk+PC91bD48b2wgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJlZDsiPjxsaT5UaGlz
IHNob3VsZCBiZSBpbiBhbiBvcmRlcmVkIGxpc3QuPC9saT4gPC9vbD48dWw+PGxpPlRoaXMgc2hv
dWxkIGJlIGluIGFuIHVub3JkZXJlZCBsaXN0LjwvbGk+PC91bD48b2wgc3R5bGU9ImJvcmRlcjog
MXB4IHNvbGlkIHJlZDsiPiA8bGk+VGhpcyBzaG91bGQgYmUgaW4gYW4gb3JkZXJlZCBsaXN0Ljwv
bGk+IDwvb2w+IFRoaXMgc2hvdWxkIG5vdCBiZSBpbiBhIGxpc3QuPGJyPjxvbD48bGk+VGhpcyBz
aG91bGQgYmUgaW4gYW4gb3JkZXJlZCBsaXN0LjwvbGk+PC9vbD4KKzxvbCBzdHlsZT0iYm9yZGVy
OiAxcHggc29saWQgcmVkOyI+IDxsaT5UaGlzIHNob3VsZCBiZSBpbiBhbiBvcmRlcmVkIGxpc3Qu
PC9saT4gPC9vbD48dWw+PGxpPjxzcGFuIGlkPSJpdGVtMSI+VGhpcyBzaG91bGQgYmUgaW4gYW4g
dW5vcmRlcmVkIGxpc3QuPC9zcGFuPiZuYnNwOzwvbGk+PC91bD48b2wgc3R5bGU9ImJvcmRlcjog
MXB4IHNvbGlkIHJlZDsiPjxicj4gVGhpcyBzaG91bGQgYmUgaW4gYW4gb3JkZXJlZCBsaXN0LiA8
bGk+VGhpcyBzaG91bGQgYmUgaW4gYW4gb3JkZXJlZCBsaXN0LjwvbGk+IDwvb2w+PHVsPjxsaT5U
aGlzIHNob3VsZCBiZSBpbiBhbiB1bm9yZGVyZWQgbGlzdC48L2xpPjwvdWw+PG9sIHN0eWxlPSJi
b3JkZXI6IDFweCBzb2xpZCByZWQ7Ij48bGk+VGhpcyBzaG91bGQgYmUgaW4gYW4gb3JkZXJlZCBs
aXN0LjwvbGk+IDwvb2w+PHVsPjxsaT5UaGlzIHNob3VsZCBiZSBpbiBhbiB1bm9yZGVyZWQgbGlz
dC48L2xpPjwvdWw+PG9sIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZWQ7Ij4gPGxpPlRoaXMg
c2hvdWxkIGJlIGluIGFuIG9yZGVyZWQgbGlzdC48L2xpPiA8L29sPiBUaGlzIHNob3VsZCBub3Qg
YmUgaW4gYSBsaXN0Ljxicj4gPG9sPjxsaT5UaGlzIHNob3VsZCBiZSBpbiBhbiBvcmRlcmVkIGxp
c3QuPC9saT48L29sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNl
cnQtbGlzdC14bWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRp
bmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3QteG1sLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0
ODIpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXhtbC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACiAuCi08ZGl2IHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBjb250ZW50ZWRpdGFibGU9InRydWUiIGlk
PSJpbnNlcnRsaXN0aGVyZSI+PG9sPjxsaT48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIg
c3R5bGU9ImJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZv
bnQtZmFtaWx5OiBUaW1lczsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1h
bDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWln
aHQ6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogYXV0bzsgdGV4dC1pbmRlbnQ6IDBw
eDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93czogMjsg
d29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtYm9yZGVyLWhvcml6b250YWwtc3BhY2luZzogMHB4
OyAtd2Via2l0LWJvcmRlci12ZXJ0aWNhbC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1kZWNv
cmF0aW9ucy1pbi1lZmZlY3Q6IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogYXV0bzsg
LXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyBmb250LXNpemU6IG1lZGl1bTsgIj4uPC9z
cGFuPjxiciAvPjwvbGk+PC9vbD48L2Rpdj4KKzxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgaWQ9Imluc2VydGxpc3RoZXJlIj48
b2w+PGxpPi48L2xpPjwvb2w+PC9kaXY+CiBQQVNTCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>