# License of this script, not of the application it contains: # # Copyright Erik Veenstra # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License, # version 2, as published by the Free Software Foundation. # # This program is distributed in the hope that it will be # useful, but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public # License along with this program; if not, write to the Free # Software Foundation, Inc., 59 Temple Place, Suite 330, # Boston, MA 02111-1307 USA. # Parts of this code are based on code from Thomas Hurst # . # Tar2RubyScript constants unless defined?(BLOCKSIZE) ShowContent = ARGV.include?("--tar2rubyscript-list") JustExtract = ARGV.include?("--tar2rubyscript-justextract") ToTar = ARGV.include?("--tar2rubyscript-totar") Preserve = ARGV.include?("--tar2rubyscript-preserve") end ARGV.concat [] ARGV.delete_if{|arg| arg =~ /^--tar2rubyscript-/} ARGV << "--tar2rubyscript-preserve" if Preserve # Tar constants unless defined?(BLOCKSIZE) BLOCKSIZE = 512 NAMELEN = 100 MODELEN = 8 UIDLEN = 8 GIDLEN = 8 CHKSUMLEN = 8 SIZELEN = 12 MAGICLEN = 8 MODTIMELEN = 12 UNAMELEN = 32 GNAMELEN = 32 DEVLEN = 8 TMAGIC = "ustar" GNU_TMAGIC = "ustar " SOLARIS_TMAGIC = "ustar\00000" MAGICS = [TMAGIC, GNU_TMAGIC, SOLARIS_TMAGIC] LF_OLDFILE = '\0' LF_FILE = '0' LF_LINK = '1' LF_SYMLINK = '2' LF_CHAR = '3' LF_BLOCK = '4' LF_DIR = '5' LF_FIFO = '6' LF_CONTIG = '7' GNUTYPE_DUMPDIR = 'D' GNUTYPE_LONGLINK = 'K' # Identifies the *next* file on the tape as having a long linkname. GNUTYPE_LONGNAME = 'L' # Identifies the *next* file on the tape as having a long name. GNUTYPE_MULTIVOL = 'M' # This is the continuation of a file that began on another volume. GNUTYPE_NAMES = 'N' # For storing filenames that do not fit into the main header. GNUTYPE_SPARSE = 'S' # This is for sparse files. GNUTYPE_VOLHDR = 'V' # This file is a tape/volume header. Ignore it on extraction. end class Dir def self.rm_rf(entry) File.chmod(0755, entry) if File.ftype(entry) == "directory" pdir = Dir.pwd Dir.chdir(entry) Dir.new(".").each do |e| Dir.rm_rf(e) if not [".", ".."].include?(e) end Dir.chdir(pdir) begin Dir.delete(entry) rescue => e $stderr.puts e.message end else begin File.delete(entry) rescue => e $stderr.puts e.message end end end end class Reader def initialize(filehandle) @fp = filehandle end def extract each do |entry| entry.extract end end def list each do |entry| entry.list end end def each @fp.rewind while entry = next_entry yield(entry) end end def next_entry buf = @fp.read(BLOCKSIZE) if buf.length < BLOCKSIZE or buf == "\000" * BLOCKSIZE entry = nil else entry = Entry.new(buf, @fp) end entry end end class Entry attr_reader(:header, :data) def initialize(header, fp) @header = Header.new(header) readdata = lambda do |header| padding = (BLOCKSIZE - (header.size % BLOCKSIZE)) % BLOCKSIZE @data = fp.read(header.size) if header.size > 0 dummy = fp.read(padding) if padding > 0 end readdata.call(@header) if @header.longname? gnuname = @data[0..-2] header = fp.read(BLOCKSIZE) @header = Header.new(header) @header.name = gnuname readdata.call(@header) end end def extract if not @header.name.empty? if @header.dir? begin Dir.mkdir(@header.name, @header.mode) rescue SystemCallError => e $stderr.puts "Couldn't create dir #{@header.name}: " + e.message end elsif @header.file? begin File.open(@header.name, "wb") do |fp| fp.write(@data) fp.chmod(@header.mode) end rescue => e $stderr.puts "Couldn't create file #{@header.name}: " + e.message end else $stderr.puts "Couldn't handle entry #{@header.name} (flag=#{@header.linkflag.inspect})." end #File.chown(@header.uid, @header.gid, @header.name) #File.utime(Time.now, @header.mtime, @header.name) end end def list if not @header.name.empty? if @header.dir? $stderr.puts "d %s" % [@header.name] elsif @header.file? $stderr.puts "f %s (%s)" % [@header.name, @header.size] else $stderr.puts "Couldn't handle entry #{@header.name} (flag=#{@header.linkflag.inspect})." end end end end class Header attr_reader(:name, :uid, :gid, :size, :mtime, :uname, :gname, :mode, :linkflag) attr_writer(:name) def initialize(header) fields = header.unpack('A100 A8 A8 A8 A12 A12 A8 A1 A100 A8 A32 A32 A8 A8') types = ['str', 'oct', 'oct', 'oct', 'oct', 'time', 'oct', 'str', 'str', 'str', 'str', 'str', 'oct', 'oct'] begin converted = [] while field = fields.shift type = types.shift case type when 'str' then converted.push(field) when 'oct' then converted.push(field.oct) when 'time' then converted.push(Time::at(field.oct)) end end @name, @mode, @uid, @gid, @size, @mtime, @chksum, @linkflag, @linkname, @magic, @uname, @gname, @devmajor, @devminor = converted @name.gsub!(/^\.\//, "") @raw = header rescue ArgumentError => e raise "Couldn't determine a real value for a field (#{field})" end raise "Magic header value #{@magic.inspect} is invalid." if not MAGICS.include?(@magic) @linkflag = LF_FILE if @linkflag == LF_OLDFILE or @linkflag == LF_CONTIG @linkflag = LF_DIR if @name[-1] == '/' and @linkflag == LF_FILE @linkname = @linkname[1,-1] if @linkname[0] == '/' @size = 0 if @size < 0 @name = @linkname + '/' + @name if @linkname.size > 0 end def file? @linkflag == LF_FILE end def dir? @linkflag == LF_DIR end def longname? @linkflag == GNUTYPE_LONGNAME end end class Content @@count = 0 unless defined?(@@count) def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift temp = ENV["TEMP"] temp = "/tmp" if temp.nil? temp = File.expand_path(temp) @tempfile = "#{temp}/tar2rubyscript.f.#{Process.pid}.#{@@count += 1}" end def list begin File.open(@tempfile, "wb") {|f| f.write @archive} File.open(@tempfile, "rb") {|f| Reader.new(f).list} ensure File.delete(@tempfile) end self end def cleanup @archive = nil self end end class TempSpace @@count = 0 unless defined?(@@count) def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift @olddir = Dir.pwd temp = ENV["TEMP"] temp = "/tmp" if temp.nil? temp = File.expand_path(temp) @tempfile = "#{temp}/tar2rubyscript.f.#{Process.pid}.#{@@count += 1}" @tempdir = "#{temp}/tar2rubyscript.d.#{Process.pid}.#{@@count}" @@tempspace = self @newdir = @tempdir @touchthread = Thread.new do loop do sleep 60*60 touch(@tempdir) touch(@tempfile) end end end def extract Dir.rm_rf(@tempdir) if File.exists?(@tempdir) Dir.mkdir(@tempdir) newlocation do # Create the temp environment. File.open(@tempfile, "wb") {|f| f.write @archive} File.open(@tempfile, "rb") {|f| Reader.new(f).extract} # Eventually look for a subdirectory. entries = Dir.entries(".") entries.delete(".") entries.delete("..") if entries.length == 1 entry = entries.shift.dup if File.directory?(entry) @newdir = "#{@tempdir}/#{entry}" end end end # Remember all File objects. @ioobjects = [] ObjectSpace::each_object(File) do |obj| @ioobjects << obj end at_exit do @touchthread.kill # Close all File objects, opened in init.rb . ObjectSpace::each_object(File) do |obj| obj.close if (not obj.closed? and not @ioobjects.include?(obj)) end # Remove the temp environment. Dir.chdir(@olddir) Dir.rm_rf(@tempfile) Dir.rm_rf(@tempdir) end self end def cleanup @archive = nil self end def touch(entry) entry = entry.gsub!(/[\/\\]*$/, "") unless entry.nil? return unless File.exists?(entry) if File.directory?(entry) pdir = Dir.pwd begin Dir.chdir(entry) begin Dir.new(".").each do |e| touch(e) unless [".", ".."].include?(e) end ensure Dir.chdir(pdir) end rescue Errno::EACCES => error $stderr.puts error end else File.utime(Time.now, File.mtime(entry), entry) end end def oldlocation(file="") if block_given? pdir = Dir.pwd Dir.chdir(@olddir) res = yield Dir.chdir(pdir) else res = File.expand_path(file, @olddir) if not file.nil? end res end def newlocation(file="") if block_given? pdir = Dir.pwd Dir.chdir(@newdir) res = yield Dir.chdir(pdir) else res = File.expand_path(file, @newdir) if not file.nil? end res end def self.oldlocation(file="") if block_given? @@tempspace.oldlocation { yield } else @@tempspace.oldlocation(file) end end def self.newlocation(file="") if block_given? @@tempspace.newlocation { yield } else @@tempspace.newlocation(file) end end end class Extract @@count = 0 unless defined?(@@count) def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift temp = ENV["TEMP"] temp = "/tmp" if temp.nil? @tempfile = "#{temp}/tar2rubyscript.f.#{Process.pid}.#{@@count += 1}" end def extract begin File.open(@tempfile, "wb") {|f| f.write @archive} File.open(@tempfile, "rb") {|f| Reader.new(f).extract} ensure File.delete(@tempfile) end self end def cleanup @archive = nil self end end class MakeTar def initialize @archive = File.open(File.expand_path(__FILE__), "rb"){|f| f.read}.gsub(/\r/, "").split(/\n\n/)[-1].split("\n").collect{|s| s[2..-1]}.join("\n").unpack("m").shift @tarfile = File.expand_path(__FILE__).gsub(/\.rbw?$/, "") + ".tar" end def extract File.open(@tarfile, "wb") {|f| f.write @archive} self end def cleanup @archive = nil self end end def oldlocation(file="") if block_given? TempSpace.oldlocation { yield } else TempSpace.oldlocation(file) end end def newlocation(file="") if block_given? TempSpace.newlocation { yield } else TempSpace.newlocation(file) end end if ShowContent Content.new.list.cleanup elsif JustExtract Extract.new.extract.cleanup elsif ToTar MakeTar.new.extract.cleanup else TempSpace.new.extract.cleanup $:.unshift(newlocation) $:.push(oldlocation) s = ENV["PATH"].dup if Dir.pwd[1..2] == ":/" # Hack ??? s << ";#{newlocation.gsub(/\//, "\\")}" s << ";#{oldlocation.gsub(/\//, "\\")}" else s << ":#{newlocation}" s << ":#{oldlocation}" end ENV["PATH"] = s TAR2RUBYSCRIPT = true unless defined?(TAR2RUBYSCRIPT) newlocation do if __FILE__ == $0 $0.replace(File.expand_path("./init.rb")) if File.file?("./init.rb") load File.expand_path("./init.rb") else $stderr.puts "%s doesn't contain an init.rb ." % __FILE__ end else if File.file?("./init.rb") load File.expand_path("./init.rb") end end end end # dG1wLmVhcjJydWJ5c2NyaXB0LmYuMTE1MTAudGFyLwAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAADAwMDA3MDAAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDAwMDAw # ADEwMjUwMzIwNjEyADAxNjE3NwAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGVyaWsA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZXJpawAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4xMTUxMC50 # YXIvaW5pdC5yYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAw # MDE3NTAAMDAwMDAwMDE1NTAAMTAyMjAwMDQ1NTYAMDE3NTA1ACAwAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABl # cmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAw # MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcXVpcmUgImV2 # L3J1YnkiCnJlcXVpcmUgImV2L25ldCIKcmVxdWlyZSAiZXYvcndkIgoKZXhp # dAlpZiAkcndkX2V4aXQKCmJyb3dzZXIJPSBFTlZbIlJXREJST1dTRVIiXQpi # cm93c2VyCT0gYnJvd3Nlci5nc3ViKC9cXC8sICIvIikuZ3N1YigvIC8sICJc # ICIpCWlmIGN5Z3dpbj8KCmlmIGJyb3dzZXIubmlsPwogIHB1dHMgIk5vIGJy # b3dzZXIgZm91bmQuIgogIHB1dHMgIkNhbid0IHJlY29ubmVjdC4iCgogIGV4 # aXQgMQplbmQKCmxvdywgaGlnaAk9IEVOVlsiUldEUE9SVFMiXS5zcGxpdCgv # W15cZCtdLykKaGlnaAkJPSBsb3cJaWYgaGlnaC5uaWw/CmxvdywgaGlnaAk9 # IGxvdy50b19pLCBoaWdoLnRvX2kKCnBvcnRzCT0gVENQU2VydmVyLnVzZWRw # b3J0cyhsb3csIGhpZ2gpCnRocmVhZHMJPSBbXQoKcHV0cyAiU2Nhbm5pbmcu # Li4iCgpwb3J0cy5lYWNoIGRvIHxwb3J0fAogIHRocmVhZHMgPDwgVGhyZWFk # Lm5ldyBkbwogICAgcHV0cyAiUmVjb25uZWN0aW5nIHRvIHBvcnQgJXMuLi4i # ICUgcG9ydAoKICAgIHVybAkJPSAiaHR0cDovL2xvY2FsaG9zdDoje3BvcnR9 # LyIKICAgIHJlCQk9IC9bJCVdMVxiLwogICAgY29tbWFuZAk9ICIlcyBcIiVz # XCIiICUgW2Jyb3dzZXIsIHVybF0KICAgIGNvbW1hbmQJPSBicm93c2VyLmdz # dWIocmUsIHVybCkJaWYgYnJvd3NlciA9fiByZQogICAgY29tbWFuZAk9IGNv # bW1hbmQuZ3N1YigvJXBvcnQlLywgcG9ydC50b19zKQoKICAgIHN5c3RlbShj # b21tYW5kKQogIGVuZAplbmQKCnVubGVzcyB0aHJlYWRzLmVtcHR5PwogIHB1 # dHMgIldhaXRpbmcgZm9yIGJyb3dzZXJzIHRvIHRlcm1pbmF0ZS4uLiIKCiAg # dGhyZWFkcy5lYWNoIGRvIHx0aHJlYWR8CiAgICB0aHJlYWQuam9pbgogIGVu # ZAplbmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4x # MTUxMC50YXIvdGFyMnJ1YnlzY3JpcHQuc2gAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAx # NzUwADAwMDE3NTAAMDAwMDAwMDAwMzQAMTAwNTExMTc2MjAAMDIxNTQzACAw # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAA # MDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGV2ZG8g # cnVieWxpYmNvcHkgLS1yd2QtZXhpdAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAdG1wLmVhcjJydWJ5c2NyaXB0LmYuMTE1MTAudGFyL2V2 # LwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMTc1MAAwMDAxNzUw # ADAwMDAwMDAwMDAwADEwMjUwMzIwNjEyADAxNjYyMwAgNQAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1 # c3RhciAgAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZXJpawAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3Jp # cHQuZi4xMTUxMC50YXIvZXYvZnRvb2xzLnJiAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1 # NQAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDY1MTYAMTAyNTAzMjA2MTIAMDIw # NDcxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw # MDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AHJlcXVpcmUgImZ0b29scyIKCmNsYXNzIERpcgogIGRlZiBzZWxmLmNvcHko # ZnJvbSwgdG8pCiAgICBpZiBGaWxlLmRpcmVjdG9yeT8oZnJvbSkKICAgICAg # cGRpcgk9IERpci5wd2QKICAgICAgdG9kaXIJPSBGaWxlLmV4cGFuZF9wYXRo # KHRvKQoKICAgICAgRmlsZS5ta3BhdGgodG9kaXIpCgogICAgICBEaXIuY2hk # aXIoZnJvbSkKICAgICAgICBEaXIubmV3KCIuIikuZWFjaCBkbyB8ZXwKICAg # ICAgICAgIERpci5jb3B5KGUsIHRvZGlyKyIvIitlKQlpZiBub3QgWyIuIiwg # Ii4uIl0uaW5jbHVkZT8oZSkKICAgICAgICBlbmQKICAgICAgRGlyLmNoZGly # KHBkaXIpCiAgICBlbHNlCiAgICAgIHRvZGlyCT0gRmlsZS5kaXJuYW1lKEZp # bGUuZXhwYW5kX3BhdGgodG8pKQoKICAgICAgRmlsZS5ta3BhdGgodG9kaXIp # CgogICAgICBGaWxlLmNvcHkoZnJvbSwgdG8pCiAgICBlbmQKICBlbmQKCiAg # ZGVmIHNlbGYubW92ZShmcm9tLCB0bykKICAgIERpci5jb3B5KGZyb20sIHRv # KQogICAgRGlyLnJtX3JmKGZyb20pCiAgZW5kCgogIGRlZiBzZWxmLnJtX3Jm # KGVudHJ5KQogICAgRmlsZS5jaG1vZCgwNzU1LCBlbnRyeSkKCiAgICBpZiBG # aWxlLmZ0eXBlKGVudHJ5KSA9PSAiZGlyZWN0b3J5IgogICAgICBwZGlyCT0g # RGlyLnB3ZAoKICAgICAgRGlyLmNoZGlyKGVudHJ5KQogICAgICAgIERpci5u # ZXcoIi4iKS5lYWNoIGRvIHxlfAogICAgICAgICAgRGlyLnJtX3JmKGUpCWlm # IG5vdCBbIi4iLCAiLi4iXS5pbmNsdWRlPyhlKQogICAgICAgIGVuZAogICAg # ICBEaXIuY2hkaXIocGRpcikKCiAgICAgIGJlZ2luCiAgICAgICAgRGlyLmRl # bGV0ZShlbnRyeSkKICAgICAgcmVzY3VlID0+IGUKICAgICAgICAkc3RkZXJy # LnB1dHMgZS5tZXNzYWdlCiAgICAgIGVuZAogICAgZWxzZQogICAgICBiZWdp # bgogICAgICAgIEZpbGUuZGVsZXRlKGVudHJ5KQogICAgICByZXNjdWUgPT4g # ZQogICAgICAgICRzdGRlcnIucHV0cyBlLm1lc3NhZ2UKICAgICAgZW5kCiAg # ICBlbmQKICBlbmQKCiAgZGVmIHNlbGYuZmluZChlbnRyeT1uaWwsIG1hc2s9 # bmlsKQogICAgZW50cnkJPSAiLiIJaWYgZW50cnkubmlsPwoKICAgIGVudHJ5 # CT0gZW50cnkuZ3N1YigvW1wvXFxdKiQvLCAiIikJdW5sZXNzIGVudHJ5Lm5p # bD8KCiAgICBtYXNrCT0gL14je21hc2t9JC9pCWlmIG1hc2sua2luZF9vZj8o # U3RyaW5nKQoKICAgIHJlcwk9IFtdCgogICAgaWYgRmlsZS5kaXJlY3Rvcnk/ # KGVudHJ5KQogICAgICBwZGlyCT0gRGlyLnB3ZAoKICAgICAgcmVzICs9IFsi # JXMvIiAlIGVudHJ5XQlpZiBtYXNrLm5pbD8gb3IgZW50cnkgPX4gbWFzawoK # ICAgICAgYmVnaW4KICAgICAgICBEaXIuY2hkaXIoZW50cnkpCgogICAgICAg # IGJlZ2luCiAgICAgICAgICBEaXIubmV3KCIuIikuZWFjaCBkbyB8ZXwKICAg # ICAgICAgICAgcmVzICs9IERpci5maW5kKGUsIG1hc2spLmNvbGxlY3R7fGV8 # IGVudHJ5KyIvIitlfQl1bmxlc3MgWyIuIiwgIi4uIl0uaW5jbHVkZT8oZSkK # ICAgICAgICAgIGVuZAogICAgICAgIGVuc3VyZQogICAgICAgICAgRGlyLmNo # ZGlyKHBkaXIpCiAgICAgICAgZW5kCiAgICAgIHJlc2N1ZSBFcnJubzo6RUFD # Q0VTID0+IGUKICAgICAgICAkc3RkZXJyLnB1dHMgZS5tZXNzYWdlCiAgICAg # IGVuZAogICAgZWxzZQogICAgICByZXMgKz0gW2VudHJ5XQlpZiBtYXNrLm5p # bD8gb3IgZW50cnkgPX4gbWFzawogICAgZW5kCgogICAgcmVzCiAgZW5kCmVu # ZAoKY2xhc3MgRmlsZQogIGRlZiBzZWxmLnJvbGxiYWNrdXAoZmlsZSwgbW9k # ZT1uaWwpCiAgICBiYWNrdXBmaWxlCT0gZmlsZSArICIuUkIuQkFDS1VQIgog # ICAgY29udHJvbGZpbGUJPSBmaWxlICsgIi5SQi5DT05UUk9MIgogICAgcmVz # CQk9IG5pbAoKICAgIEZpbGUudG91Y2goZmlsZSkgICAgdW5sZXNzIEZpbGUu # ZmlsZT8oZmlsZSkKCgkjIFJvbGxiYWNrCgogICAgaWYgRmlsZS5maWxlPyhi # YWNrdXBmaWxlKSBhbmQgRmlsZS5maWxlPyhjb250cm9sZmlsZSkKICAgICAg # JHN0ZGVyci5wdXRzICJSZXN0b3JpbmcgI3tmaWxlfS4uLiIKCiAgICAgIEZp # bGUuY29weShiYWNrdXBmaWxlLCBmaWxlKQkJCQkjIFJvbGxiYWNrIGZyb20g # cGhhc2UgMwogICAgZW5kCgoJIyBSZXNldAoKICAgIEZpbGUuZGVsZXRlKGJh # Y2t1cGZpbGUpCWlmIEZpbGUuZmlsZT8oYmFja3VwZmlsZSkJIyBSZXNldCBm # cm9tIHBoYXNlIDIgb3IgMwogICAgRmlsZS5kZWxldGUoY29udHJvbGZpbGUp # CWlmIEZpbGUuZmlsZT8oY29udHJvbGZpbGUpCSMgUmVzZXQgZnJvbSBwaGFz # ZSAzIG9yIDQKCgkjIEJhY2t1cAoKICAgIEZpbGUuY29weShmaWxlLCBiYWNr # dXBmaWxlKQkJCQkJIyBFbnRlciBwaGFzZSAyCiAgICBGaWxlLnRvdWNoKGNv # bnRyb2xmaWxlKQkJCQkJIyBFbnRlciBwaGFzZSAzCgoJIyBUaGUgcmVhbCB0 # aGluZwoKICAgIGlmIGJsb2NrX2dpdmVuPwogICAgICBpZiBtb2RlLm5pbD8K # ICAgICAgICByZXMJPSB5aWVsZAogICAgICBlbHNlCiAgICAgICAgRmlsZS5v # cGVuKGZpbGUsIG1vZGUpIGRvIHxmfAogICAgICAgICAgcmVzCT0geWllbGQo # ZikKICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKCgkjIENsZWFudXAK # CiAgICBGaWxlLmRlbGV0ZShiYWNrdXBmaWxlKQkJCQkJIyBFbnRlciBwaGFz # ZSA0CiAgICBGaWxlLmRlbGV0ZShjb250cm9sZmlsZSkJCQkJCSMgRW50ZXIg # cGhhc2UgNQoKCSMgUmV0dXJuLCBsaWtlIEZpbGUub3BlbgoKICAgIHJlcwk9 # IEZpbGUub3BlbihmaWxlLCAobW9kZSBvciAiciIpKQl1bmxlc3MgYmxvY2tf # Z2l2ZW4/CgogICAgcmVzCiAgZW5kCgogIGRlZiBzZWxmLnRvdWNoKGZpbGUp # CiAgICBpZiBGaWxlLmV4aXN0cz8oZmlsZSkKICAgICAgRmlsZS51dGltZShU # aW1lLm5vdywgRmlsZS5tdGltZShmaWxlKSwgZmlsZSkKICAgIGVsc2UKICAg # ICAgRmlsZS5vcGVuKGZpbGUsICJhIil7fGZ8fQogICAgZW5kCiAgZW5kCgog # IGRlZiBzZWxmLndoaWNoKGZpbGUpCiAgICByZXMJPSBuaWwKCiAgICBpZiB3 # aW5kb3dzPwogICAgICBmaWxlCT0gZmlsZS5nc3ViKC9cLmV4ZSQvaSwgIiIp # ICsgIi5leGUiCiAgICAgIHNlcAkJPSAiOyIKICAgIGVsc2UKICAgICAgc2Vw # CQk9ICI6IgogICAgZW5kCgogICAgY2F0Y2ggOnN0b3AgZG8KICAgICAgRU5W # WyJQQVRIIl0uc3BsaXQoLyN7c2VwfS8pLnJldmVyc2UuZWFjaCBkbyB8ZHwK # ICAgICAgICBpZiBGaWxlLmRpcmVjdG9yeT8oZCkKICAgICAgICAgIERpci5u # ZXcoZCkuZWFjaCBkbyB8ZXwKICAgICAgICAgICAgIGlmIGUuZG93bmNhc2Ug # PT0gZmlsZS5kb3duY2FzZQogICAgICAgICAgICAgICByZXMJPSBGaWxlLmV4 # cGFuZF9wYXRoKGUsIGQpCiAgICAgICAgICAgICAgIHRocm93IDpzdG9wCiAg # ICAgICAgICAgIGVuZAogICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICAg # IGVuZAogICAgZW5kCgogICAgcmVzCiAgZW5kCmVuZAoAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdG1wLmVhcjJydWJ5c2Ny # aXB0LmYuMTE1MTAudGFyL2V2L3J1YnkucmIAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3 # NTUAMDAwMTc1MAAwMDAxNzUwADAwMDAwMDQwMjYwADEwMjUwMzIwNjEyADAy # MDEzNgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGVyaWsAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw # MDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAByZXF1aXJlICJjZ2kiCnJlcXVpcmUgInJiY29uZmlnIgpyZXF1aXJlICJ0 # aHJlYWQiCgpUaHJlYWQuYWJvcnRfb25fZXhjZXB0aW9uCT0gdHJ1ZQoKJERF # QlVHCT0gKCRERUJVRyBvciBFTlZbIlJVQllERUJVRyJdIG9yIGZhbHNlKQoK # I3Rla2Vucwk9ICdcd1x+XEBcI1wkXCVcXlwmXCpcLVwrJwp0ZWtlbnMJCT0g # J15cc1xyXG5cYFwhXChcKVxbXF1ce1x9XDxcPlwsXC5cL1w/XFxcfFw9XDtc # OlwiJwoKI3Rla2VuczExCT0gJ1x3Jwp0ZWtlbnMxMQk9IHRla2VucyArICIn # IgoKdGVrZW5zMjEJPSB0ZWtlbnMgKyAiJyIKdGVrZW5zMjIJPSB0ZWtlbnMK # dGVrZW5zMjMJPSB0ZWtlbnMgKyAiJyIKCnRla2VuczMxCT0gJ1x3XHNcclxu # JwoKUmVnRXhwU3RyaW5nV29yZAk9ICIoWyN7dGVrZW5zMTF9XSspIgkJCQkJ # CQkJCTsgUmVnRXhwV29yZAkJPSBSZWdleHAubmV3KFJlZ0V4cFN0cmluZ1dv # cmQpClJlZ0V4cFN0cmluZ1dvcmQyCT0gIihbI3t0ZWtlbnMyMX1dKFsje3Rl # a2VuczIyfV0qWyN7dGVrZW5zMjN9XSk/KSIJCQkJCTsgUmVnRXhwV29yZDIJ # CT0gUmVnZXhwLm5ldyhSZWdFeHBTdHJpbmdXb3JkMikKUmVnRXhwU3RyaW5n # VGV4dAk9ICIoWyN7dGVrZW5zMzF9XSspIgkJCQkJCQkJCTsgUmVnRXhwVGV4 # dAkJPSBSZWdleHAubmV3KFJlZ0V4cFN0cmluZ1RleHQpClJlZ0V4cFN0cmlu # Z0ZpbGUJPSAnKFx3W1x3XC5cLV0qKScJCQkJCQkJCQk7IFJlZ0V4cEZpbGUJ # CT0gUmVnZXhwLm5ldyhSZWdFeHBTdHJpbmdGaWxlKQpSZWdFeHBTdHJpbmdF # bWFpbAk9ICcoW1x3XC1cLl0rQFtcd1wtXC5dKyknCQkJCQkJCQk7IFJlZ0V4 # cEVtYWlsCQk9IFJlZ2V4cC5uZXcoUmVnRXhwU3RyaW5nRW1haWwpClJlZ0V4 # cFN0cmluZ1VSTAkJPSAnKFx3KzpcL1wvW1x3XC5cLV0rKDpcZCopP1wvW1x3 # XC5cLVwvXCNcP1w9XCVdKiknCQkJCQk7IFJlZ0V4cFVSTAkJPSBSZWdleHAu # bmV3KFJlZ0V4cFN0cmluZ1VSTCkKUmVnRXhwU3RyaW5nUHJpbnQJPSAnKFtc # dyBcdFxyXG5cYFx+XCFcQFwjXCRcJVxeXCZcKlwoXClcLVwrXD1cW1xdXHtc # fVw7XDpcJ1wiXCxcLlwvXDxcPlw/XFxcfF0rKScJOyBSZWdFeHBQcmludAkJ # PSBSZWdleHAubmV3KFJlZ0V4cFN0cmluZ1ByaW50KQpSZWdFeHBTdHJpbmdE # aWZmCT0gJyheW1wtXCtdKFteXC1cK10uKik/KScJCQkJCQkJCTsgUmVnRXhw # RGlmZgkJPSBSZWdleHAubmV3KFJlZ0V4cFN0cmluZ0RpZmYpClJlZ0V4cFN0 # cmluZ0hUSExpbmsJPSAnKGBbXHdcLF0qXGJhXGJbXmBdKmApJwkJCQkJCQkJ # OyBSZWdFeHBIVEhMaW5rCQk9IFJlZ2V4cC5uZXcoUmVnRXhwU3RyaW5nSFRI # TGluaykKUmVnRXhwU3RyaW5nSFRIU3BlY2lhbAk9ICcoYFteYF0qYCknCQkJ # CQkJCQkJCTsgUmVnRXhwSFRIU3BlY2lhbAk9IFJlZ2V4cC5uZXcoUmVnRXhw # U3RyaW5nSFRIU3BlY2lhbCkKCm1vZHVsZSBFbnVtZXJhYmxlCiAgZGVmIGRl # ZXBfZHVwCiAgICBNYXJzaGFsOjpsb2FkKE1hcnNoYWw6OmR1bXAoZHVwKSkK # ICBlbmQKCiAgZGVmIGRlZXBfY2xvbmUKICAgIE1hcnNoYWw6OmxvYWQoTWFy # c2hhbDo6ZHVtcChjbG9uZSkpCiAgZW5kCmVuZAoKY2xhc3MgVGhyZWFkCiAg # ZGVmIHNlbGYuYmFja2dyb3VuZCgqYXJncykKICAgIG5ldygqYXJncykgZG8g # fCphcmdzfAogICAgICBUaHJlYWQucGFzcwoKICAgICAgeWllbGQoKmFyZ3Mp # CiAgICBlbmQKICBlbmQKZW5kCgpjbGFzcyBPYmplY3QKICBhbGlhcyBkZWVw # X2R1cCA6ZHVwCiAgYWxpYXMgZGVlcF9jbG9uZSA6Y2xvbmUKCiAgZGVmIHRv # X2ZzCiAgICB0b19zCiAgZW5kCgogIGRlZiBpZHMKICAgIGlkCiAgZW5kCmVu # ZAoKY2xhc3MgTnVtZXJpYwogIGRlZiB0b19mcwogICAgdG9fZgogIGVuZAoK # ICBkZWYgdG9faHRtbChlb2xjb252ZXJzaW9uPXRydWUpCiAgICBzZWxmLnRv # X3MudG9faHRtbChlb2xjb252ZXJzaW9uKQogIGVuZAplbmQKCmNsYXNzIElu # dGVnZXIKICBkZWYgb2N0CiAgICBuCT0gc2VsZgogICAgcmVzCT0gW10KCiAg # ICB3aGlsZSBuID4gOAogICAgICBuLCB4CT0gbi5kaXZtb2QoOCkKICAgICAg # cmVzIDw8IHgKICAgIGVuZAogICAgcmVzIDw8IG4KCiAgICByZXMucmV2ZXJz # ZS5qb2luKCIiKQogIGVuZAplbmQKCmNsYXNzIFN0cmluZwogIGRlZiBjaG9t # cCEoZHVtbXk9bmlsKQogICAgc2VsZi5nc3ViISgvW1xyXG5dKlx6LywgIiIp # CiAgZW5kCgogIGRlZiBjaG9tcChkdW1teT1uaWwpCiAgICBzZWxmLmdzdWIo # L1tcclxuXSpcei8sICIiKQogIGVuZAoKICBkZWYgbGYKICAgIHNlbGYuZ3N1 # YigvXHIqXG4vLCAiXG4iKS5nc3ViKC9cblx6LywgIiIpICsgIlxuIgogIGVu # ZAoKICBkZWYgY3JsZgogICAgc2VsZi5nc3ViKC9ccipcbi8sICJcclxuIiku # Z3N1YigvXHJcblx6LywgIiIpICsgIlxyXG4iCiAgZW5kCgogIGRlZiBzdHJp # cAogICAgc2VsZi5zdHJpcGJlZm9yZS5zdHJpcGFmdGVyCiAgZW5kCgogIGRl # ZiBzdHJpcGJlZm9yZQogICAgc2VsZi5nc3ViKC9cQVtbOmJsYW5rOl1cclxu # XSovLCAiIikKICBlbmQKCiAgZGVmIHN0cmlwYWZ0ZXIKICAgIHNlbGYuZ3N1 # YigvW1s6Ymxhbms6XVxyXG5dKlx6LywgIiIpCiAgZW5kCgogIGRlZiBjb21w # cmVzcwogICAgc2VsZi5nc3ViKC9bWzpibGFuazpdXHJcbl0rLywgIiAiKS5z # dHJpcAogIGVuZAoKICBkZWYgY29tcHJlc3NzcGFjZXMKICAgIHNlbGYuZ3N1 # YigvW1s6Ymxhbms6XV0rLywgIiAiKQogIGVuZAoKICBkZWYgY29tcHJlc3Nw # ZXJsaW5lCiAgICByZXMJPSBzZWxmLnNwbGl0KC9cbi8pCiAgICByZXMuY29s # bGVjdCF7fGxpbmV8IGxpbmUuY29tcHJlc3N9CiAgICByZXMuZGVsZXRlX2lm # e3xsaW5lfCBsaW5lLmVtcHR5P30KICAgIHJlcy5qb2luKCJcbiIpCiAgZW5k # CgogIGRlZiBudW1lcmljPwogICAgZCwgYSwgbgk9IFtzZWxmXS50b19wYXIK # CiAgICBub3Qgbi5lbXB0eT8KICBlbmQKCiAgZGVmIGV4ZWMoaW5wdXQ9bmls # LCBvdXRwdXQ9dHJ1ZSkKICAgIHJlcwk9IFtdCgogICAgSU8ucG9wZW4oc2Vs # ZiwgIncrIikgZG8gfGZ8CiAgICAgIGYucHV0cyBpbnB1dAl1bmxlc3MgaW5w # dXQubmlsPwogICAgICBmLmNsb3NlX3dyaXRlCgogICAgICByZXMJPSBmLnJl # YWRsaW5lcyBpZiBvdXRwdXQKICAgIGVuZAoKICAgIHJlcy5qb2luKCIiKQog # IGVuZAoKICBkZWYgZXZhbAogICAgS2VybmVsOjpldmFsKHNlbGYpCiAgZW5k # CgogIGRlZiBzcGVhawogICAgcmVxdWlyZSAiZHJiIgoKICAgIERSYi5zdGFy # dF9zZXJ2aWNlCiAgICBEUmJPYmplY3QubmV3KG5pbCwgImRydWJ5Oi8vbG9j # YWxob3N0OjMxMDAiKS5zcGVhayhzZWxmKQogIGVuZAoKICBkZWYgc3BsaXRi # bG9ja3MoKmRlbGltaXRlcnMpCiAgICBiZWdpbmRlbGltaXRlcnMJPSBbXQog # ICAgZW5kZGVsaW1pdGVycwk9IFtdCgogICAgZGVsaW1pdGVycy5lYWNoIGRv # IHxrLCB2fAogICAgICBiZWdpbmRlbGltaXRlcnMJPDwgay5kb3duY2FzZQog # ICAgICBlbmRkZWxpbWl0ZXJzCTw8IHYuZG93bmNhc2UKICAgIGVuZAoKICAg # IGJkCT0gYmVnaW5kZWxpbWl0ZXJzLmNvbGxlY3QJe3xzfCBSZWdleHAuZXNj # YXBlKHMpfQogICAgZWQJPSBlbmRkZWxpbWl0ZXJzLmNvbGxlY3QJCXt8c3wg # UmVnZXhwLmVzY2FwZShzKX0KCiAgICBiZQk9IGJkLmpvaW4oInwiKQogICAg # ZWUJPSBlZC5qb2luKCJ8IikKCiAgICByZXMJCT0gW10KICAgIHR5cGUJPSAw # CiAgICB0bXAJCT0gIiIKICAgIGJzCQk9ICIiCiAgICBlcwkJPSAiIgoKICAg # IHNlbGYuc3BsaXQoLygje2VlfXwje2JlfSkvaSkuZWFjaCBkbyB8c3wKICAg # ICAgaWYgdHlwZSA9PSAwCiAgICAgICAgaWYgYmVnaW5kZWxpbWl0ZXJzLmlu # Y2x1ZGU/KHMuZG93bmNhc2UpCiAgICAgICAgICBpCT0gYmVnaW5kZWxpbWl0 # ZXJzLmluZGV4KHMuZG93bmNhc2UpCiAgICAgICAgICB0eXBlCT0gaSsxCiAg # ICAgICAgICB0bXAJPSBzCiAgICAgICAgICBicwk9IHMuZG93bmNhc2UKICAg # ICAgICAgIGVzCT0gZW5kZGVsaW1pdGVyc1tpXQogICAgICAgIGVsc2UKICAg # ICAgICAgIHJlcyA8PCBbMCwgc10JdW5sZXNzIHMuZW1wdHk/CiAgICAgICAg # ZW5kCiAgICAgIGVsc2UKICAgICAgICBpZiBzLmRvd25jYXNlID09IGVzCiAg # ICAgICAgICByZXMgPDwgW3R5cGUsIHRtcCArIHNdCiAgICAgICAgICB0eXBl # CT0gMAogICAgICAgICAgdG1wCT0gIiIKICAgICAgICAgIGJzCT0gIiIKICAg # ICAgICAgIGVzCT0gIiIKICAgICAgICBlbHNlCiAgICAgICAgICBpZiBzLmRv # d25jYXNlID09IGJzCiAgICAgICAgICAgIHJlcyA8PCBbMCwgdG1wXQogICAg # ICAgICAgICB0bXAJPSBzCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHRt # cAk9IHRtcCArIHMKICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAgICBl # bmQKICAgIGVuZAoKICAgIHJlcyA8PCBbMCwgdG1wXQl1bmxlc3MgdG1wLmVt # cHR5PwoKICAgIHJldHVybiByZXMKICBlbmQKCiAgZGVmIHNwbGl0d29yZHMo # dG9rZW5zPVtdKQogICAgdG9rZW5zCQk9IFt0b2tlbnNdCXVubGVzcyB0b2tl # bnMua2luZF9vZj8oQXJyYXkpCiAgICByZXMJCQk9IFtdCgogICAgc2VsZi5z # cGxpdGJsb2NrcyhbIiciLCAiJyJdLCBbJyInLCAnIiddKS5lYWNoIGRvIHx0 # eXBlLCBzfAogICAgICBjYXNlIHR5cGUKICAgICAgd2hlbiAwCiAgICAgICAg # dG9rZW5zLmVhY2ggZG8gfHRva2VufAogICAgICAgICAgdG9rZW4yCT0gdG9r # ZW4KICAgICAgICAgIHRva2VuMgk9IFJlZ2V4cC5lc2NhcGUodG9rZW4yKQlp # ZiB0b2tlbjIua2luZF9vZj8oU3RyaW5nKQogICAgICAgICAgcy5nc3ViISgv # I3t0b2tlbjJ9LywgIiAje3Rva2VufSAiKQogICAgICAgIGVuZAogICAgICAg # IHMuc3BsaXQoKS5lYWNoIGRvIHx3fAogICAgICAgICAgcmVzIDw8IHcKICAg # ICAgICBlbmQKICAgICAgd2hlbiAxLCAyCiAgICAgICAgcmVzIDw8IHNbMS4u # LTJdCiAgICAgIGVuZAogICAgZW5kCgogICAgcmV0dXJuIHJlcwogIGVuZAoK # ICBkZWYgdW5jb21tZW50CiAgICByZXMJPSBbXQoKICAgIHNlbGYuc3BsaXRi # bG9ja3MoWyInIiwgIiciXSwgWyciJywgJyInXSwgWyIjIiwgIlxuIl0pLmVh # Y2ggZG8gfHR5cGUsIHN8CiAgICAgIGNhc2UgdHlwZQogICAgICB3aGVuIDAs # IDEsIDIJdGhlbglyZXMgPDwgcwogICAgICB3aGVuIDMJCXRoZW4JcmVzIDw8 # ICJcbiIKICAgICAgZW5kCiAgICBlbmQKCiAgICByZXMuam9pbigiIikKICBl # bmQKCiAgZGVmIG5vcXVvdGVzCiAgICBzZWxmLnN1YigvXEFbJyJdLywgIiIp # LnN1YigvWyciXVx6LywgIiIpCiAgZW5kCgogIGRlZiB0b19odG1sKGVvbGNv # bnZlcnNpb249dHJ1ZSkKICAgIHMJPSBDR0kuZXNjYXBlSFRNTChzZWxmKQoK # ICAgIHMuZ3N1YiEoL1wiLywgIlwmIzM0OyIpCiAgICBzLmdzdWIhKC9cJy8s # ICJcJiMxODA7IikKCiAgICBpZiBlb2xjb252ZXJzaW9uCiAgICAgIHMuZ3N1 # YiEoL1xuLyAsICI8YnI+IikKICAgIGVuZAoKICAgIHMKICBlbmQKCiAgZGVm # IGZyb21faHRtbChlb2xjb252ZXJzaW9uPXRydWUpCiAgICBzCT0gc2VsZgoK # ICAgIHMuZ3N1YiEoLyYjMzQ7LyAsICJcIiIpCiAgICBzLmdzdWIhKC8mIzE4 # MDsvLCAiXCciKQoKICAgIHMJPSBDR0kudW5lc2NhcGVIVE1MKHNlbGYpCgog # ICAgaWYgZW9sY29udmVyc2lvbgogICAgICBzLmdzdWIhKC88YnI+LywgIlxu # IikKICAgIGVuZAoKICAgIHMKICBlbmQKCiAgZGVmIHRvX2ZzCiAgICBpZiBu # dW1lcmljPwogICAgICB0b19mCiAgICBlbHNlCiAgICAgIHRvX3MKICAgIGVu # ZAogIGVuZAplbmQKCmNsYXNzIEFycmF5CiAgZGVmIGNob21wIQogICAgc2Vs # Zi5jb2xsZWN0IXt8c3wgcy5jaG9tcH0KICBlbmQKCiAgZGVmIGNob21wCiAg # ICBzZWxmLmNvbGxlY3R7fHN8IHMuY2hvbXB9CiAgZW5kCgogIGRlZiBjb21w # cmVzcwogICAgc2VsZi5jb2xsZWN0e3xzfCBzLmNvbXByZXNzfQogIGVuZAoK # ICBkZWYgdW5jb21tZW50CiAgICBzZWxmLmpvaW4oIlwwIikudW5jb21tZW50 # LnNwbGl0KCJcMCIpCiAgZW5kCgogIGRlZiBzdHJpcAogICAgc2VsZi5jb2xs # ZWN0e3xzfCBzLnN0cmlwfQogIGVuZAoKICBkZWYgc3VtCiAgICByZXMJPSAw # CiAgICBzZWxmLmVhY2ggZG8gfG58CiAgICAgIHJlcyArPSBuCiAgICBlbmQK # ICAgIHJlcwogIGVuZAoKICBkZWYgcHJvZHVjdAogICAgcmVzCT0gMQogICAg # c2VsZi5lYWNoIGRvIHxufAogICAgICByZXMgKj0gbgogICAgZW5kCiAgICBy # ZXMKICBlbmQKCiAgZGVmIGpvaW53b3JkcyhzZXA9IiAiLCBxdW90ZT0nIicp # CiAgICBzZWxmLmNvbGxlY3QgZG8gfHN8CiAgICAgIHMJPSBxdW90ZSArIHMg # KyBxdW90ZQlpZiBzID1+IC9bWzpibGFuazpdXS8KICAgICAgcwogICAgZW5k # LmpvaW4oc2VwKQogIGVuZAoKICBkZWYgZG9taW5vKHRhYmVsbGVuLCBrb2xv # bT1uaWwsIG9ubHltYXRjaGluZ2xpbmVzPWZhbHNlKQogICAgbGlua3MJPSBz # ZWxmCiAgICByZXMJCT0gW10KICAgIHJlcwkJPSBzZWxmLmR1cAl1bmxlc3Mg # b25seW1hdGNoaW5nbGluZXMKCiAgICB0YWJlbGxlbi5lYWNoIGRvIHxyZWNo # dHN8CiAgICAgIHRtcAk9IFtdCgogICAgICBsaW5rcy5lYWNoIGRvIHxsfAog # ICAgICAgIGlmIGtvbG9tLm5pbD8gb3IgbC5sZW5ndGggPT0ga29sb20KICAg # ICAgICAgIHJlY2h0cy5lYWNoIGRvIHxyfAogICAgICAgICAgICB0bXAgPDwg # bCArIHJbMS4uLTFdCWlmIGxbLTFdID09IHJbMF0KICAgICAgICAgIGVuZAog # ICAgICAgIGVuZAogICAgICBlbmQKCiAgICAgIGxpbmtzCT0gdG1wCiAgICAg # IHJlcy5jb25jYXQodG1wKQogICAgZW5kCgogICAgcmVzCT0gcmVzLnNvcnQu # dW5pcQogIGVuZAoKICBkZWYgZG9taW5vbG9vcCh0YWJlbGxlbikKICAgIGxy # ZXMJPSBbXQogICAgcmVzCQk9IHNlbGYuZHVwCiAgICBrb2xvbQk9IDIKCiAg # ICB3aGlsZSBscmVzLmxlbmd0aCAhPSByZXMubGVuZ3RoIGRvCiAgICAgIGxy # ZXMJPSByZXMuZHVwCiAgICAgIHJlcwk9IHJlcy5kb21pbm8odGFiZWxsZW4s # IGtvbG9tKQoKICAgICAgcmVzLmVhY2ggZG8gfGxpbmV8CiAgICAgICAgbGlu # ZSA8PCAiKiIJaWYgKGxpbmUubGVuZ3RoICE9IGxpbmUudW5pcS5sZW5ndGgg # YW5kIGxpbmVbLTFdICE9ICIqIikKICAgICAgZW5kCgogICAgICAkc3RkZXJy # LnByaW50ICIjezEwMCoocmVzLmxlbmd0aCkvKGxyZXMubGVuZ3RoKX0lICIK # CiAgICAgIGtvbG9tICs9IDEKICAgIGVuZAoKICAgICRzdGRlcnIucHV0cyAi # IgoKICAgIHJldHVybiByZXMKICBlbmQKCiAgZGVmIGJ1aWxkdHJlZQogICAg # c2VsZi5kb21pbm9sb29wKFtzZWxmXSkKICBlbmQKCiAgZGVmIHN1YnNldChm # aWVsZHMsIHZhbHVlcywgcmVzdWx0cywgZXhhY3Q9dHJ1ZSwgZW1wdHlsaW5l # PW5pbCwgam9pbndpdGg9bmlsKQogICAgZmllbGRzCT0gW2ZpZWxkc10JCXVu # bGVzcyBmaWVsZHMua2luZF9vZj8gQXJyYXkKICAgIHZhbHVlcwk9IFt2YWx1 # ZXNdCQl1bmxlc3MgdmFsdWVzLmtpbmRfb2Y/IEFycmF5CiAgICByZXN1bHRz # CT0gW3Jlc3VsdHNdCQl1bmxlc3MgcmVzdWx0cy5raW5kX29mPyBBcnJheQog # ICAgZW1wdHlsaW5lCT0gZW1wdHlsaW5lLmRvd25jYXNlCXVubGVzcyBlbXB0 # eWxpbmUubmlsPwogICAgcmVzCQk9IHNlbGYuZHVwCiAgICByZXMuZGVsZXRl # X2lmIHt0cnVlfQoKICAgIHNlbGYuZWFjaCBkbyB8bHwKICAgICAgb2sJPSB0 # cnVlCgogICAgICBjYXNlIGwuY2xhc3MudG9fcwogICAgICB3aGVuICJTdHJp # bmciCiAgICAgICAgYwkJPSBsLnNwbGl0d29yZHMKICAgICAgICBjb3JyZWN0 # aW9uCT0gMQogICAgICAgIGpvaW53aXRoCT0gIiAiCWlmIGpvaW53aXRoLm5p # bD8KICAgICAgd2hlbiAiQXJyYXkiCiAgICAgICAgYwkJPSBsCiAgICAgICAg # Y29ycmVjdGlvbgk9IDAKICAgICAgZW5kCgogICAgICAjY2F0Y2ggOnN0b3Ag # ZG8KICAgICAgICB2YWx1ZXMyCT0gdmFsdWVzLmR1cAogICAgICAgIGZpZWxk # cy5lYWNoIGRvIHxmfAogICAgICAgICAgdgk9IHZhbHVlczIuc2hpZnQKICAg # ICAgICAgIHYJPSB2LmRvd25jYXNlCXVubGVzcyB2Lm5pbD8KICAgICAgICAg # IGlmIGVtcHR5bGluZS5uaWw/IG9yIChub3QgdiA9PSBlbXB0eWxpbmUpCiAg # ICAgICAgICAgIGlmIGV4YWN0CiAgICAgICAgICAgICAgdW5sZXNzICh2Lm5p # bD8gb3IgY1tmLWNvcnJlY3Rpb25dLmRvd25jYXNlID09IHYpCiAgICAgICAg # ICAgICAgICBvawk9IGZhbHNlCiAgICAgICAgICAgICAgICAjdGhyb3cgOnN0 # b3AKICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgZWxzZQogICAgICAg # ICAgICAgIHVubGVzcyAodi5uaWw/IG9yIGNbZi1jb3JyZWN0aW9uXS5kb3du # Y2FzZS5pbmNsdWRlPyh2KSkKICAgICAgICAgICAgICAgIG9rCT0gZmFsc2UK # ICAgICAgICAgICAgICAgICN0aHJvdyA6c3RvcAogICAgICAgICAgICAgIGVu # ZAogICAgICAgICAgICBlbmQKICAgICAgICAgIGVuZAogICAgICAgIGVuZAog # ICAgICAjZW5kCgogICAgICBpZiBvawogICAgICAgIHJlczIJPSBbXQogICAg # ICAgIHJlc3VsdHMuZWFjaCBkbyB8bnwKICAgICAgICAgIHJlczIgPDwgY1tu # LTFdCiAgICAgICAgZW5kCiAgICAgICAgcmVzMgk9IHJlczIuam9pbihqb2lu # d2l0aCkJdW5sZXNzIGpvaW53aXRoLm5pbD8KICAgICAgICByZXMgPDwgcmVz # MgogICAgICBlbmQKICAgIGVuZAoKICAgIHJldHVybiByZXMKICBlbmQKCiAg # ZGVmIGZvcm1hdChmb3JtYXQpCiAgICBmb3JtYXQJPSBmb3JtYXQuZ3N1Yigv # XHMvLCAiIikKICAgIHJlcwkJPSBbXQoKICAgIFtmb3JtYXQubGVuZ3RoLCBz # ZWxmLmxlbmd0aF0ubWluLnRpbWVzIGRvIHxufAogICAgICBjYXNlIGZvcm1h # dFtuXS5jaHIuZG93bmNhc2UKICAgICAgd2hlbiAiaSIJdGhlbglyZXMgPDwg # c2VsZltuXS50b19pCiAgICAgIHdoZW4gInMiCXRoZW4JcmVzIDw8IHNlbGZb # bl0udG9fcwogICAgICBlbHNlCQlyZXMgPDwgc2VsZltuXQogICAgICBlbmQK # ICAgIGVuZAoKICAgIHJlcwogIGVuZAoKICBkZWYgdG9faQogICAgY29sbGVj # dHt8Y3wgYy50b19pfQogIGVuZAoKICBkZWYgdG9fcGFyCiAgICBkYXNoCT0g # c2VsZi5kdXAKICAgIGFscGhhCT0gc2VsZi5kdXAKICAgIG51bWVyaWMJPSBz # ZWxmLmR1cAoKICAgIGRhc2guZGVsZXRlX2lmIGRvIHxzfAogICAgICBub3Qg # KHMgPX4gL1xBLS8pIG9yCiAgICAgIChzID1+IC9cQS0/W1s6ZGlnaXQ6XVwu # XStcei8pIG9yCiAgICAgIChzID1+IC9eLSskLykKICAgIGVuZAoKICAgIGFs # cGhhLmRlbGV0ZV9pZiBkbyB8c3wKICAgICAgKChzID1+IC9cQS0vKSBvcgog # ICAgICAgKHMgPX4gL1xBLT9bWzpkaWdpdDpdXC5dK1x6LykpIGFuZAogICAg # ICBub3QgKChzID1+IC9eXC4rJC8pIG9yIChzID1+IC9eLSskLykpCiAgICBl # bmQKCiAgICBudW1lcmljLmRlbGV0ZV9pZiBkbyB8c3wKICAgICAgbm90IChz # ID1+IC9cQS0/W1s6ZGlnaXQ6XVwuXStcei8pIG9yCiAgICAgIChzID1+IC9e # XC4rJC8pCiAgICBlbmQKCiAgICByYWlzZSAiT29wcyEiCWlmIGRhc2gubGVu # Z3RoICsgYWxwaGEubGVuZ3RoICsgbnVtZXJpYy5sZW5ndGggIT0gbGVuZ3Ro # CgogICAgcmV0dXJuIGRhc2gsIGFscGhhLCBudW1lcmljCiAgZW5kCgogIGRl # ZiBzZWxmLmZpbGUoZmlsZSkKICAgIHJlcwk9IG5ldwoKICAgIEZpbGUub3Bl # bihmaWxlKSBkbyB8ZnwKICAgICAgZi5yZWFkbGluZXMudW5jb21tZW50LmNo # b21wLmVhY2ggZG8gfGxpbmV8CiAgICAgICAgcmVzIDw8IGxpbmUKICAgICAg # ZW5kCiAgICBlbmQKCiAgICByZXMKICBlbmQKCiAgZGVmIG51bXNvcnQKICAg # IHNvcnQgZG8gfGEsIGJ8CiAgICAgIGEyCT0gYS50b19mcwogICAgICBiMgk9 # IGIudG9fZnMKCiAgICAgIGlmIGEyLmNsYXNzICE9IGIyLmNsYXNzCiAgICAg # ICAgYTIJPSBhCiAgICAgICAgYjIJPSBiCiAgICAgIGVuZAoKICAgICAgYTIg # PD0+IGIyCiAgICBlbmQKICBlbmQKCiAgZGVmIHRvX2ZzCiAgICBjb2xsZWN0 # e3xzfCBzLnRvX2ZzfQogIGVuZAoKICBkZWYgY2hhb3MKICAgIHJlcwk9IHNl # bGYuZHVwCgogICAgKGxlbmd0aF4yKS50aW1lcyBkbwogICAgICBhCT0gcmFu # ZChsZW5ndGgpCiAgICAgIGIJPSByYW5kKGxlbmd0aCkKCiAgICAgIHJlc1th # XSwgcmVzW2JdCT0gcmVzW2JdLCByZXNbYV0KICAgIGVuZAoKICAgIHJlcwog # IGVuZAoKICBkZWYgYW55CiAgICBpZiBlbXB0eT8KICAgICAgbmlsCiAgICBl # bHNlCiAgICAgIHNlbGZbcmFuZChzZWxmLmxlbmd0aCldCiAgICBlbmQKICBl # bmQKCiAgZGVmIG1pbm1heAogICAgbWluLCB2YWx1ZSwgbWF4CT0gc2VsZgog # ICAgW21pbiwgW3ZhbHVlLCBtYXhdLm1pbl0ubWF4CiAgZW5kCgogIGRlZiBp # ZHMKICAgIGNvbGxlY3R7fGV8IGUuaWRzfQogIGVuZAoKICBkZWYgcm90YXRl # CiAgICByYWlzZSAiQXJyYXkgaGFzIHRvIGJlIDJEIChBbiBBcnJheSBvZiBB # cnJheXMpLiIJdW5sZXNzIHNlbGYuZHVwLmRlbGV0ZV9pZnt8YXwgYS5raW5k # X29mPyhBcnJheSl9LmVtcHR5PwoKICAgIHJlcwk9IFtdCgogICAgc2VsZlsw # XS5sZW5ndGgudGltZXMgZG8gfHh8CiAgICAgIGEJPSBbXQoKICAgICAgc2Vs # Zi5sZW5ndGgudGltZXMgZG8gfHl8CiAgICAgICAgYSA8PCBzZWxmW3ldW3hd # CiAgICAgIGVuZAoKICAgICAgcmVzIDw8IGEKICAgIGVuZAoKICAgIHJlcwog # IGVuZAoKICBkZWYgdG9faAogICAgcmFpc2UgIkFycmF5IGhhcyB0byBiZSAy # RCAoQW4gQXJyYXkgb2YgQXJyYXlzKS4iCXVubGVzcyBzZWxmLmR1cC5kZWxl # dGVfaWZ7fGF8IGEua2luZF9vZj8oQXJyYXkpfS5lbXB0eT8KCiAgICByZXMJ # PSB7fQoKICAgIHNlbGYuZWFjaCBkbyB8aywgdiwgKnJlc3R8CiAgICAgIHJl # c1trXQk9IHYKICAgIGVuZAoKICAgIHJlcwogIGVuZAplbmQKCmNsYXNzIEhh # c2gKICBkZWYgc2F2ZShmaWxlLCBhcHBlbmQ9ZmFsc2UpCiAgICBvcmcJPSB7 # fQogICAgb3JnCT0gSGFzaC5maWxlKGZpbGUpCWlmIChhcHBlbmQgYW5kIEZp # bGUuZmlsZT8oZmlsZSkpCgogICAgc2VsZi5zb3J0LmVhY2ggZG8gfGssIHZ8 # CiAgICAgIG9yZ1trXQk9IHYKICAgIGVuZAoKICAgIEZpbGUub3BlbihmaWxl # LCAidyIpIGRvIHxmfAogICAgICBvcmcuc29ydC5lYWNoIGRvIHxrLCB2fAog # ICAgICAgIGYucHV0cyAiJXNcdD0gJXMiICUgW2ssIHZdCiAgICAgIGVuZAog # ICAgZW5kCiAgZW5kCgogIGRlZiBzdWJzZXQoZmllbGRzLCB2YWx1ZXMsIHJl # c3VsdHM9bmlsLCBleGFjdD10cnVlLCBlbXB0eWxpbmU9bmlsLCBqb2lud2l0 # aD1uaWwpCiAgICBmaWVsZHMJPSBbZmllbGRzXQkJdW5sZXNzIGZpZWxkcy5r # aW5kX29mPyBBcnJheQogICAgdmFsdWVzCT0gW3ZhbHVlc10JCXVubGVzcyB2 # YWx1ZXMua2luZF9vZj8gQXJyYXkKICAgIHJlc3VsdHMJPSBbcmVzdWx0c10J # CXVubGVzcyByZXN1bHRzLmtpbmRfb2Y/IEFycmF5CiAgICBlbXB0eWxpbmUJ # PSBlbXB0eWxpbmUuZG93bmNhc2UJdW5sZXNzIGVtcHR5bGluZS5uaWw/CiAg # ICByZXMJCT0gc2VsZi5kdXAKICAgIHJlcy5kZWxldGVfaWYge3RydWV9Cgog # ICAgc2VsZi5lYWNoIGRvIHxrLCBsfAogICAgICBvawk9IHRydWUKCiAgICAg # IGNhc2UgbC5jbGFzcy50b19zCiAgICAgIHdoZW4gIlN0cmluZyIKICAgICAg # ICBjCQk9IGwuc3BsaXR3b3JkcwogICAgICAgIGNvcnJlY3Rpb24JPSAxCiAg # ICAgICAgam9pbndpdGgJPSAiICIJaWYgam9pbndpdGgubmlsPwogICAgICB3 # aGVuICJBcnJheSIKICAgICAgICBjCQk9IGwKICAgICAgICBjb3JyZWN0aW9u # CT0gMAogICAgICBlbmQKCiAgICAgICNjYXRjaCA6c3RvcCBkbwogICAgICAg # IHZhbHVlczIJPSB2YWx1ZXMuZHVwCiAgICAgICAgZmllbGRzLmVhY2ggZG8g # fGZ8CiAgICAgICAgICB2CT0gdmFsdWVzMi5zaGlmdAogICAgICAgICAgdgk9 # IHYuZG93bmNhc2UJdW5sZXNzIHYubmlsPwogICAgICAgICAgaWYgZW1wdHls # aW5lLm5pbD8gb3IgKG5vdCB2ID09IGVtcHR5bGluZSkKICAgICAgICAgICAg # aWYgZXhhY3QKICAgICAgICAgICAgICB1bmxlc3MgKHYubmlsPyBvciBjW2Yt # Y29ycmVjdGlvbl0uZG93bmNhc2UgPT0gdikKICAgICAgICAgICAgICAgIG9r # CT0gZmFsc2UKICAgICAgICAgICAgICAgICN0aHJvdyA6c3RvcAogICAgICAg # ICAgICAgIGVuZAogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgdW5s # ZXNzICh2Lm5pbD8gb3IgY1tmLWNvcnJlY3Rpb25dLmRvd25jYXNlLmluY2x1 # ZGU/KHYpKQogICAgICAgICAgICAgICAgb2sJPSBmYWxzZQogICAgICAgICAg # ICAgICAgI3Rocm93IDpzdG9wCiAgICAgICAgICAgICAgZW5kCiAgICAgICAg # ICAgIGVuZAogICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICAgICNlbmQK # CiAgICAgIGlmIG9rCiAgICAgICAgcmVzMgk9IFtdCiAgICAgICAgaWYgcmVz # dWx0cyA9PSBbbmlsXQogICAgICAgICAgcmVzMgk9IGMKICAgICAgICBlbHNl # CiAgICAgICAgICByZXN1bHRzLmVhY2ggZG8gfG58CiAgICAgICAgICAgIHJl # czIgPDwgY1tuLWNvcnJlY3Rpb25dCiAgICAgICAgICBlbmQKICAgICAgICBl # bmQKICAgICAgICByZXMyCT0gcmVzMi5qb2luKGpvaW53aXRoKQl1bmxlc3Mg # am9pbndpdGgubmlsPwogICAgICAgIHJlc1trXQk9IHJlczIKICAgICAgZW5k # CiAgICBlbmQKCiAgICByZXR1cm4gcmVzCiAgZW5kCgogIGRlZiB0b19pCiAg # ICBjb2xsZWN0e3xrLCB2fCB2LnRvX2l9CiAgZW5kCgogIGRlZiBzZWxmLmZp # bGUoZmlsZSkKICAgIHJlcwk9IG5ldwoKICAgIEZpbGUub3BlbihmaWxlKSBk # byB8ZnwKICAgICAgI2YucmVhZGxpbmVzLmNob21wLmVhY2ggZG8gfGxpbmV8 # CiAgICAgIHdoaWxlIGxpbmUgPSBmLmdldHMgZG8KICAgICAgICBsaW5lLmNo # b21wIQoKICAgICAgICB1bmxlc3MgbGluZS5lbXB0eT8KICAgICAgICAgIGss # IHYJPSBsaW5lLnNwbGl0KC9ccyo9XHMqLywgMikKICAgICAgICAgIHJlc1tr # XQk9IHYKICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKCiAgICByZXMK # ICBlbmQKCiAgZGVmIGlkcwogICAgY29sbGVjdHt8aywgdnwgW2ssIHZdLmlk # c30KICBlbmQKZW5kCgpkZWYgaWQycmVmKGlkKQogIE9iamVjdFNwYWNlLl9p # ZDJyZWYoaWQpCmVuZAoKZGVmIGFmdGVyKHNlY29uZHMsICphcmdzKQogIGlm # IG5vdCBzZWNvbmRzLm5pbD8gYW5kIG5vdCBzZWNvbmRzLnplcm8/CiAgICBU # aHJlYWQubmV3KCphcmdzKSBkbyB8KmFyZ3MyfAogICAgICBzbGVlcCBzZWNv # bmRzCiAgICAgIHlpZWxkKCphcmdzMikKICAgIGVuZAogIGVuZAplbmQKCmRl # ZiBldmVyeShzZWNvbmRzLCAqYXJncykKICBpZiBub3Qgc2Vjb25kcy5uaWw/ # IGFuZCBub3Qgc2Vjb25kcy56ZXJvPwogICAgVGhyZWFkLm5ldygqYXJncykg # ZG8gfCphcmdzMnwKICAgICAgbG9vcCBkbwogICAgICAgIHNsZWVwIHNlY29u # ZHMKICAgICAgICB5aWVsZCgqYXJnczIpCiAgICAgIGVuZAogICAgZW5kCiAg # ZW5kCmVuZAoKZGVmIGV2dGltZW91dChzZWNvbmRzKQogIGJlZ2luCiAgICB0 # aW1lb3V0KHNlY29uZHMpIGRvCiAgICAgIHlpZWxkCiAgICBlbmQKICByZXNj # dWUgVGltZW91dEVycm9yCiAgZW5kCmVuZAoKZGVmIGV2dGltZW91dHJldHJ5 # KHNlY29uZHMpCiAgb2sJPSBmYWxzZQoKICB3aGlsZSBub3Qgb2sKICAgIGV2 # dGltZW91dChzZWNvbmRzKSBkbwogICAgICB5aWVsZAogICAgICBvawk9IHRy # dWUKICAgIGVuZAogIGVuZAplbmQKCmRlZiB0cmFwKHNpZ25hbCkKICBLZXJu # ZWw6OnRyYXAoc2lnbmFsKSBkbwogICAgeWllbGQKICBlbmQKCgkjIFNlZW1z # IHBvaW50bGVzcywgYnV0IGl0J3MgZm9yIGNhdGNoaW5nIF5DIHVuZGVyIFdp # bmRvd3MuLi4KCiAgZXZlcnkoMSkJe30JaWYgd2luZG93cz8KZW5kCgpkZWYg # bGludXg/CiAgbm90ICh0YXJnZXRfb3MuZG93bmNhc2UgPX4gL2xpbnV4Lyku # bmlsPwplbmQKCmRlZiBkYXJ3aW4/CiAgbm90ICh0YXJnZXRfb3MuZG93bmNh # c2UgPX4gL2Rhcndpbi8pLm5pbD8KZW5kCgpkZWYgd2luZG93cz8KICBub3Qg # KHRhcmdldF9vcy5kb3duY2FzZSA9fiAvMzIvKS5uaWw/CmVuZAoKZGVmIGN5 # Z3dpbj8KICBub3QgKHRhcmdldF9vcy5kb3duY2FzZSA9fiAvY3lnLykubmls # PwplbmQKCmRlZiB0YXJnZXRfb3MKICBDb25maWc6OkNPTkZJR1sidGFyZ2V0 # X29zIl0gb3IgIiIKZW5kCgpkZWYgdXNlcgogIEVOVlsiVVNFUiJdIG9yIEVO # VlsiVVNFUk5BTUUiXQplbmQKCmRlZiBob21lCiAgKEVOVlsiSE9NRSJdIG9y # IEVOVlsiVVNFUlBST0ZJTEUiXSBvciAoRmlsZS5kaXJlY3Rvcnk/KCJoOi8i # KSA/ICJoOiIgOiAiYzoiKSkuZ3N1YigvXFwvLCAiLyIpCmVuZAoKZGVmIHRl # bXAKICAoRU5WWyJUTVBESVIiXSBvciBFTlZbIlRNUCJdIG9yIEVOVlsiVEVN # UCJdIG9yICIvdG1wIikuZ3N1YigvXFwvLCAiLyIpCmVuZAoKZGVmIHN0ZHRt # cAogICRzdGRlcnIgPSAkc3Rkb3V0ID0gRmlsZS5uZXcoIiN7dGVtcH0vcnVi # eS4je1Byb2Nlc3MucGlkfS5sb2ciLCAiYSIpCmVuZApzdGR0bXAJaWYgZGVm # aW5lZD8oUlVCWVNDUklQVDJFWEUpIGFuZCAoUlVCWVNDUklQVDJFWEUgPX4g # L3J1Ynl3L2kpCgokbm9ibQk9IGZhbHNlCgpkZWYgbm9ibQogICRub2JtCT0g # dHJ1ZQplbmQKCmRlZiBibShsYWJlbD0iIikKICBpZiAkbm9ibQogICAgaWYg # YmxvY2tfZ2l2ZW4/CiAgICAgIHJldHVybiB5aWVsZAogICAgZWxzZQogICAg # ICByZXR1cm4gbmlsCiAgICBlbmQKICBlbmQKCiAgbGFiZWwJPSBsYWJlbC5p # bnNwZWN0CSN1bmxlc3MgbGFiZWwua2luZF9vZj8oU3RyaW5nKQogIHJlcwk9 # IG5pbAoKICAkYm1fbXV0ZXgJPSAoJGJtX211dGV4IG9yIE11dGV4Lm5ldykK # CiAgJGJtX211dGV4LnN5bmNocm9uaXplIGRvCiAgICBpZiAkYm0ubmlsPwog # ICAgICByZXF1aXJlICJldi9ibSIKCiAgICAgICRibQkJPSB7fQoKICAgICAg # YXRfZXhpdCBkbwogICAgICAgIGwJPSAkYm0ua2V5cy5jb2xsZWN0e3xzfCBz # Lmxlbmd0aH0ubWF4CgkjZm9ybWF0MQk9ICIlMTBzICUxMHMgJTEwcyAlMTBz # ICUxMHMgJTEwcyAgICVzIgoJI2Zvcm1hdDIJPSAiJTEwLjZmICUxMC42ZiAl # MTAuNmYgJTEwLjZmICUxMC42ZiAlMTBkICAgJXMiCgkjJHN0ZGVyci5wdXRz # IGZvcm1hdDEgJSBbIlVTRVJDUFUiLCAiU1lTQ1BVIiwgIkNVU0VSQ1BVIiwg # IkNTWVNDUFUiLCAiRUxBUFNFRCIsICJDT1VOVCIsICJMQUJFTCJdCgkjJGJt # LnNvcnR7fGEsIGJ8IFtiWzFdLCBiWzBdXSA8PT4gW2FbMV0sIGFbMF1dfS5l # YWNoIGRvIHxrLCB2fAoJICAjJHN0ZGVyci5wdXRzIGZvcm1hdDIgJSAodiAr # IFtrXSkKCSNlbmQKCglmb3JtYXQxCT0gIiUxMHMgJTEwcyAlMTBzICAgJXMi # Cglmb3JtYXQyCT0gIiUxMC42ZiAlMTAuNmYgJTEwZCAgICVzIgogICAgICAg # ICRibS5lYWNoIGRvIHxrLCB2fAogICAgICAgICAgJGJtW2tdCT0gW3ZbMF0r # dlsxXSwgdls0XSwgdls1XV0KICAgICAgICBlbmQKCSRzdGRlcnIucHV0cyBm # b3JtYXQxICUgWyJDUFUiLCAiRUxBUFNFRCIsICJDT1VOVCIsICJMQUJFTCJd # CgkkYm0uc29ydHt8YSwgYnwgW2JbMV0sIGJbMF1dIDw9PiBbYVsxXSwgYVsw # XV19LmVhY2ggZG8gfGssIHZ8CgkgICRzdGRlcnIucHV0cyBmb3JtYXQyICUg # KHYgKyBba10pCgllbmQKICAgICAgZW5kCiAgICBlbmQKCiAgICAkYm1bbGFi # ZWxdID0gWzAuMF0qNSArIFswXQl1bmxlc3MgJGJtLmluY2x1ZGU/KGxhYmVs # KQogICAgJGJtW2xhYmVsXVs1XSArPSAxCiAgZW5kCgogIGlmIGJsb2NrX2dp # dmVuPwogICAgYm0JPSBCZW5jaG1hcmsubWVhc3VyZXtyZXMgPSB5aWVsZH0K # ICAgIGJtYQk9IGJtLnRvX2EJIyBbZHVtbXkgbGFiZWwsIHVzZXIgQ1BVIHRp # bWUsIHN5c3RlbSBDUFUgdGltZSwgY2hpbGRyZW5zIHVzZXIgQ1BVIHRpbWUs # IGNoaWxkcmVucyBzeXN0ZW0gQ1BVIHRpbWUsIGVsYXBzZWQgcmVhbCB0aW1l # XQoKICAgICRibV9sYXN0CT0gYm1hCgogICAgJGJtX211dGV4LnN5bmNocm9u # aXplIGRvCiAgICAgIGUJPSAkYm1bbGFiZWxdCiAgICAgIDAudXB0byg0KSBk # byB8bnwKICAgICAgICBlW25dICs9IGJtYVtuKzFdCiAgICAgIGVuZAogICAg # ZW5kCiAgZW5kCgogIHJlcwplbmQKCmRlZiB0cmFjZQogIHJlcwk9bmlsCgog # IHNldF90cmFjZV9mdW5jIGxhbWJkYSB7IHxldmVudCwgZmlsZSwgbGluZSwg # aWQsIGJpbmRpbmcsIGNsYXNzbmFtZXwKICAgICRzdGRlcnIucHJpbnRmICIl # OHMgJXM6JS0yZCAlMTBzICU4c1xuIiwgZXZlbnQsIGZpbGUsIGxpbmUsIGlk # LCBjbGFzc25hbWUKICB9CgogIGlmIGJsb2NrX2dpdmVuPwogICAgcmVzCT0g # eWllbGQKCiAgICBub3RyYWNlCiAgZW5kCgogIHJlcwplbmQKCmRlZiBub3Ry # YWNlCiAgc2V0X3RyYWNlX2Z1bmMgbmlsCmVuZAoKZGVmIGxhbWJkYV9jYWNo # ZWQoJmJsb2NrKQogIGhhc2gJPSB7fQogIGxhbWJkYSBkbyB8KmFyZ3N8CiAg # ICByZXMJPSBoYXNoW2FyZ3NdCiAgICBpZiByZXMubmlsPwogICAgICByZXMJ # CT0gYmxvY2suY2FsbCgqYXJncykKICAgICAgaGFzaFthcmdzXQk9IHJlcwog # ICAgZW5kCiAgICByZXMKICBlbmQKZW5kCgpkZWYgYXNrKG9wdGlvbnMsIHRl # eHQ9ZmFsc2UpCiAgaQk9IDAKICAkc3RkZXJyLnB1dHMgIiIKICBvcHRpb25z # LmVhY2ggZG8gfHN8CiAgICAkc3RkZXJyLnB1dHMgIiAlZCAlcyIgJSBbaSs9 # MSwgc10KICBlbmQKICAkc3RkZXJyLnB1dHMgIiIKICAkc3RkZXJyLnByaW50 # ICI/ICIKICByZXMJPSAkc3RkaW4uZ2V0cwogIHVubGVzcyByZXMubmlsPwog # ICAgcmVzCT0gcmVzLnN0cmlwCiAgICByZXMJPSBvcHRpb25zW3Jlcy50b19p # LTFdCWlmIHRleHQgYW5kIG5vdCByZXMuZW1wdHk/CiAgZW5kCiAgcmVzCmVu # ZAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4x # MTUxMC50YXIvZXYvbmV0LnJiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAx # NzUwADAwMDE3NTAAMDAwMDAwNDYyMjYAMTAyNTAzMjA2MTIAMDE3NzUzACAw # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAHVzdGFyICAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAABlcmlrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAA # MDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcXVp # cmUgImV2L3J1YnkiCnJlcXVpcmUgImV2L2Z0b29scyIKcmVxdWlyZSAiZXYv # bWltZSIKcmVxdWlyZSAibmV0L2h0dHAiCnJlcXVpcmUgInNvY2tldCIKcmVx # dWlyZSAidXJpIgpyZXF1aXJlICJjZ2kiCnJlcXVpcmUgIm1kNSIKcmVxdWly # ZSAidGhyZWFkIgoKJHByb3h5CT0gRU5WWyJQUk9YWSJdCWlmICRwcm94eS5u # aWw/CgpmaWxlCT0gIiN7aG9tZX0vLmV2bmV0IgppZiBGaWxlLmZpbGU/KGZp # bGUpCiAgSGFzaC5maWxlKGZpbGUpLmVhY2ggZG8gfGssIHZ8CiAgICBldmFs # ICIkI3trfSA9ICcje3Z9JyIJdW5sZXNzIGs9fiAvXlwjLwogIGVuZAplbmQK # CmRlZiB1cmkydHh0KHMpCgkjID8/PyBXZXJrdCBuaWV0IGdvZWQKICBpCT0g # cy5pbmRleCgvJVtbOmRpZ2l0Ol1dezJ9LykKICB3aGlsZSBub3QgaS5uaWw/ # CiAgICBzCT0gc1swLi4oaS0xKV0gKyBzWyhpKzEpLi4oaSsyKV0udW5wYWNr # KCdIMicpLnNoaWZ0LnRvX2kuY2hyICsgc1soaSszKS4uLTFdCiAgICBpCT0g # cy5pbmRleCgvJVtbOmRpZ2l0Ol1dezJ9LykKICBlbmQKICBzCmVuZAoKY2xh # c3MgVENQU2VydmVyCiAgZGVmIHNlbGYuZnJlZXBvcnQoZnJvbSwgdG8sIHJl # bW90ZT1mYWxzZSkKICAgIGlmIHdpbmRvd3M/IG9yIGN5Z3dpbj8KICAgICAg # VENQU2VydmVyLmZyZWVwb3J0X3dpbmRvd3MoZnJvbSwgdG8sIHJlbW90ZSkK # ICAgIGVsc2UKICAgICAgVENQU2VydmVyLmZyZWVwb3J0X2xpbnV4KGZyb20s # IHRvLCByZW1vdGUpCiAgICBlbmQKICBlbmQKCiAgZGVmIHNlbGYuZnJlZXBv # cnRfbGludXgoZnJvbSwgdG8sIHJlbW90ZSkKICAgIHBvcnRzCT0gKGZyb20u # LnRvKS50b19hCiAgICBwb3J0CT0gbmlsCiAgICByZXMJCT0gbmlsCgogICAg # d2hpbGUgcmVzLm5pbD8gYW5kIG5vdCBwb3J0cy5lbXB0eT8KICAgICAgYmVn # aW4KICAgICAgICBwb3J0CT0gcG9ydHNbMF0KICAgICAgICBwb3J0cy5kZWxl # dGUocG9ydCkKCiAgICAgICAgaW8JPSBUQ1BTZXJ2ZXIubmV3KHJlbW90ZSA/ # ICIwLjAuMC4wIiA6ICJsb2NhbGhvc3QiLCBwb3J0KQoKICAgICAgICByZXMJ # PSBbcG9ydCwgaW9dCiAgICAgIHJlc2N1ZQogICAgICBlbmQKICAgIGVuZAoK # ICAgIHJlcwk9IFtuaWwsIG5pbF0JaWYgcmVzLm5pbD8KCiAgICBwb3J0LCBp # bwk9IHJlcwoKICAgIHJldHVybiBwb3J0LCBpbwogIGVuZAoKICBkZWYgc2Vs # Zi5mcmVlcG9ydF93aW5kb3dzKGZyb20sIHRvLCByZW1vdGUpCiAgICBwb3J0 # cwk9IChmcm9tLi50bykudG9fYQogICAgcG9ydAk9IG5pbAogICAgcmVzCQk9 # IG5pbAoKICAgIHdoaWxlIHJlcy5uaWw/IGFuZCBub3QgcG9ydHMuZW1wdHk/ # CiAgICAgIGJlZ2luCiAgICAgICAgcG9ydAk9IHBvcnRzLmFueQogICAgICAg # IHBvcnRzLmRlbGV0ZShwb3J0KQoKICAgICAgICBpbwk9IFRDUFNvY2tldC5u # ZXcoImxvY2FsaG9zdCIsIHBvcnQpCiAgICAgICAgaW8uY2xvc2UKICAgICAg # cmVzY3VlCiAgICAgICAgcmVzCT0gcG9ydAogICAgICBlbmQKICAgIGVuZAoK # ICAgIHBvcnQsIGlvCT0gcmVzCgogICAgcmV0dXJuIHBvcnQsIGlvCiAgZW5k # CgogIGRlZiBzZWxmLmZyZWVwb3J0X3dpbmRvd3MyKGZyb20sIHRvLCByZW1v # dGUpCiAgICByZXMJPSBuaWwKICAgIHBvcnQJPSBmcm9tCgogICAgd2hpbGUg # cmVzLm5pbD8gYW5kIHBvcnQgPD0gdG8KICAgICAgYmVnaW4KICAgICAgICBp # bwk9IFRDUFNvY2tldC5uZXcoImxvY2FsaG9zdCIsIHBvcnQpCiAgICAgICAg # aW8uY2xvc2UKCiAgICAgICAgcG9ydCArPSAxCiAgICAgIHJlc2N1ZQogICAg # ICAgIHJlcwk9IHBvcnQKICAgICAgZW5kCiAgICBlbmQKCiAgICByZXR1cm4g # cmVzCiAgZW5kCgogIGRlZiBzZWxmLnVzZWRwb3J0cyhmcm9tLCB0bykKICAg # IHRocmVhZHMJPSBbXQogICAgcmVzCQk9IFtdCgogICAgZnJvbS51cHRvKHRv # KSBkbyB8cG9ydHwKICAgICAgdGhyZWFkcyA8PCBUaHJlYWQubmV3IGRvCiAg # ICAgICAgYmVnaW4KICAgICAgICAgIGlvCT0gVENQU29ja2V0Lm5ldygibG9j # YWxob3N0IiwgcG9ydCkKICAgICAgICAgIGlvLmNsb3NlCgogICAgICAgICAg # cG9ydAogICAgICAgIHJlc2N1ZQogICAgICAgICAgbmlsCiAgICAgICAgZW5k # CiAgICAgIGVuZAogICAgZW5kCgogICAgdGhyZWFkcy5lYWNoIGRvIHx0aHJl # YWR8CiAgICAgIHBvcnQJPSB0aHJlYWQudmFsdWUKICAgICAgcmVzIDw8IHBv # cnQJdW5sZXNzIHBvcnQubmlsPwogICAgZW5kCgogICAgcmV0dXJuIHJlcwog # IGVuZAplbmQKCmNsYXNzIEVWVVJJCiAgYXR0cl9yZWFkZXIgOnByb3RvY29s # CiAgYXR0cl93cml0ZXIgOnByb3RvY29sCiAgYXR0cl9yZWFkZXIgOnVzZXJw # YXNzCiAgYXR0cl93cml0ZXIgOnVzZXJwYXNzCiAgYXR0cl9yZWFkZXIgOmhv # c3QKICBhdHRyX3dyaXRlciA6aG9zdAogIGF0dHJfcmVhZGVyIDpwb3J0CiAg # YXR0cl93cml0ZXIgOnBvcnQKICBhdHRyX3JlYWRlciA6cGF0aAogIGF0dHJf # d3JpdGVyIDpwYXRoCiAgYXR0cl9yZWFkZXIgOnZhcnMKICBhdHRyX3dyaXRl # ciA6dmFycwogIGF0dHJfcmVhZGVyIDphbmNob3IKICBhdHRyX3dyaXRlciA6 # YW5jaG9yCgogIGRlZiBpbml0aWFsaXplKHVybCkKICAgIGJlZ2luCiAgICAg # IEBwcm90b2NvbCwgQHVzZXJwYXNzLCBAaG9zdCwgQHBvcnQsIGQxLCBAcGF0 # aCwgZDIsIEB2YXJzLCBAYW5jaG9yCT0gVVJJLnNwbGl0KHVybC50b19zKQog # ICAgcmVzY3VlCiAgICBlbmQKCiAgICBAcGF0aAkJPSAiLyIJCWlmIChub3Qg # QHBhdGgubmlsPyBhbmQgQHBhdGguZW1wdHk/IGFuZCBAcHJvdG9jb2wgPT0g # Imh0dHAiKQoKICAgIEBwcm90b2NvbAkJPSAiIgkJaWYgQHByb3RvY29sLm5p # bD8KICAgIEB1c2VycGFzcwkJPSAiIgkJaWYgQHVzZXJwYXNzLm5pbD8KICAg # IEBob3N0CQk9ICIiCQlpZiBAaG9zdC5uaWw/CiAgICBAcG9ydAkJPSAwCQlp # ZiBAcG9ydC5uaWw/CiAgICBAcGF0aAkJPSAiIgkJaWYgQHBhdGgubmlsPwog # ICAgQHZhcnMJCT0gIiIJCWlmIEB2YXJzLm5pbD8KICAgIEBhbmNob3IJCT0g # IiIJCWlmIEBhbmNob3IubmlsPwoKICAgIHJlcwkJCT0ge30KICAgIEB2YXJz # dm9sZ29yZGUJPSBbXQogICAgQHZhcnMuc3BsaXQoLyYvKS5lYWNoe3x2YXJ8 # IGssIHYgPSB2YXIuc3BsaXQoLz0vKSA7IHJlc1trXSA9IHYgOyBAdmFyc3Zv # bGdvcmRlIDw8IGt9CiAgICBAdmFycwkJPSByZXMKCiAgICBAcG9ydAkJPSBA # cG9ydC50b19pCiAgZW5kCgogIGRlZiArKHVybDIpCiAgICB1cmwxCT0gc2Vs # Zi50b19zCiAgICB1cmwyCT0gdXJsMi50b19zCWlmIHVybDIua2luZF9vZj8o # c2VsZi5jbGFzcykKCiAgICByZXR1cm4gRVZVUkkubmV3KChVUkk6OkdlbmVy # aWMubmV3KCpVUkkuc3BsaXQodXJsMSkpICsgVVJJOjpHZW5lcmljLm5ldygq # VVJJLnNwbGl0KHVybDIpKSkudG9fcykJcmVzY3VlIG5pbAogIGVuZAoKICBk # ZWYgdG9fcwogICAgcHJvdG9jb2wJPSBAcHJvdG9jb2wKICAgIHVzZXJwYXNz # CT0gQHVzZXJwYXNzCiAgICBob3N0CT0gQGhvc3QKICAgIHBvcnQJPSBAcG9y # dAogICAgcGF0aAk9IEBwYXRoCiAgICB2YXJzCT0gdmFyc3RyaW5nCiAgICBh # bmNob3IJPSBAYW5jaG9yCgogICAgcHJvdG9jb2wJPSBuaWwJaWYgQHByb3Rv # Y29sLmVtcHR5PwogICAgdXNlcnBhc3MJPSBuaWwJaWYgQHVzZXJwYXNzLmVt # cHR5PwogICAgaG9zdAk9IG5pbAlpZiBAaG9zdC5lbXB0eT8KICAgIHBvcnQJ # PSBuaWwJaWYgQHBvcnQuemVybz8KICAgIHBhdGgJPSBuaWwJaWYgQHBhdGgu # ZW1wdHk/CiAgICB2YXJzCT0gbmlsCWlmIEB2YXJzLmVtcHR5PwogICAgYW5j # aG9yCT0gbmlsCWlmIEBhbmNob3IuZW1wdHk/CgogICAgcmVzCT0gVVJJOjpI # VFRQLm5ldyhAcHJvdG9jb2wsIEB1c2VycGFzcywgQGhvc3QsIHBvcnQsIG5p # bCwgQHBhdGgsIG5pbCwgdmFycywgQGFuY2hvcikudG9fcy5mcm9tX2h0bWwK # CiAgICByZXMuZ3N1YiEoL0AvLCAiIikJaWYgKEB1c2VycGFzcy5uaWw/IG9y # IEB1c2VycGFzcy5lbXB0eT8pCgogICAgcmVzLmdzdWIhKC9cIyQvLCAiIikK # CiAgICByZXR1cm4gcmVzCiAgZW5kCgogIGRlZiBsb2NhbG5hbWUKICAgIHBy # b3RvY29sCT0gQHByb3RvY29sCiAgICB1c2VycGFzcwk9IEB1c2VycGFzcwog # ICAgaG9zdAk9IEBob3N0CiAgICBwb3J0CT0gQHBvcnQKICAgIHBhdGgJPSBA # cGF0aAogICAgdmFycwk9IHZhcnN0cmluZwogICAgYW5jaG9yCT0gQGFuY2hv # cgoKICAgIHByb3RvY29sCT0gbmlsCWlmIEBwcm90b2NvbC5lbXB0eT8KICAg # IHVzZXJwYXNzCT0gbmlsCWlmIEB1c2VycGFzcy5lbXB0eT8KICAgIGhvc3QJ # PSBuaWwJaWYgQGhvc3QuZW1wdHk/CiAgICBwb3J0CT0gbmlsCWlmIEBwb3J0 # Lnplcm8/CiAgICBwYXRoCT0gbmlsCWlmIEBwYXRoLmVtcHR5PwogICAgdmFy # cwk9IG5pbAlpZiBAdmFycy5lbXB0eT8KICAgIGFuY2hvcgk9IG5pbAlpZiBA # YW5jaG9yLmVtcHR5PwoKICAgIHBhdGgJPSAiI3twYXRofS4iCWlmIHBhdGgg # PX4gL1tcL1xcXSQvCgogICAgZgk9IE1ENS5uZXcocHJvdG9jb2wudG9fcyAr # IHVzZXJwYXNzLnRvX3MgKyBob3N0LnRvX3MgKyBwb3J0LnRvX3MgKyBGaWxl # LmRpcm5hbWUocGF0aC50b19zKSArIHZhcnMudG9fcykudG9fcwogICAgZQk9 # IEZpbGUuYmFzZW5hbWUocGF0aC50b19zKS5nc3ViKC9bXlx3XC5cLV0vLCAi # XyIpLmdzdWIoL18rLywgIl8iKQogICAgcmVzCT0gZiArICIuIiArIGUKICAg # IHJlcy5nc3ViISgvW15cd10rJC8sICIiKQoKICAgIHJldHVybiByZXMKICBl # bmQKCiAgZGVmIHZhcnN0cmluZwogICAgcmVzCQk9IFtdCiAgICB2YXJzCT0g # QHZhcnMuZHVwCgogICAgQHZhcnN2b2xnb3JkZS5lYWNoIGRvIHxrfAogICAg # ICBpZiB2YXJzLmluY2x1ZGU/KGspCiAgICAgICAgdgk9IHZhcnNba10KICAg # ICAgICB2YXJzLmRlbGV0ZShrKQoKICAgICAgICByZXMgPDwgKHYubmlsPyA/ # IGsgOiAiI3trfT0je3Z9IikKICAgICAgZW5kCiAgICBlbmQKCiAgICByZXMu # Y29uY2F0KHZhcnMuY29sbGVjdHt8aywgdnwgdi5uaWw/ID8gayA6ICIje2t9 # PSN7dn0ifSkKCiAgICByZXR1cm4gcmVzLmpvaW4oIiYiKQogIGVuZAplbmQK # CmNsYXNzIEhUVFBDbGllbnQKICBAQHZlcnNpZQk9IDEKICBAQG11dGV4CT0g # TXV0ZXgubmV3CiAgQEBob3N0cwk9IHt9CgogIGNsYXNzIEhlYWRlcgogICAg # YXR0cl9yZWFkZXIgOmhlYWRlcgogICAgYXR0cl9yZWFkZXIgOnByb3RvY29s # CiAgICBhdHRyX3JlYWRlciA6Y29kZQogICAgYXR0cl9yZWFkZXIgOnRleHQK # CiAgICBkZWYgaW5pdGlhbGl6ZShoZWFkZXIpCiAgICAgIEBoZWFkZXIJPSB7 # fQoKICAgICAgaWYgbm90IGhlYWRlci5uaWw/CiAgICAgICAgZmlyc3RsaW5l # LCByZXN0CT0gaGVhZGVyLnNwbGl0KC9ccipcbi8sIDIpCgogICAgICAgIEBw # cm90b2NvbCwgQGNvZGUsIEB0ZXh0CT0gZmlyc3RsaW5lLnNwbGl0KC8gICov # LCAzKQoKICAgICAgICBAY29kZQk9IEBjb2RlLnRvX2kKCiAgICAgICAgaWYg # bm90IHJlc3QubmlsPwogICAgICAgICAgcmVzdC5zcGxpdCgvXHIqXG4vKS5l # YWNoIGRvIHxsaW5lfAogICAgICAgICAgICBrZXksIHZhbHVlCT0gbGluZS5z # cGxpdCgvIC8sIDIpCiAgICAgICAgICAgIEBoZWFkZXJba2V5LnN1YigvOiQv # LCAiIikuZG93bmNhc2VdCT0gdmFsdWUKICAgICAgICAgIGVuZAogICAgICAg # IGVuZAogICAgICBlbmQKICAgIGVuZAoKICAgIGRlZiB0b19zCiAgICAgIHJl # cwk9ICIiCgogICAgICByZXMgPDwgIiVzICVzICVzXG4iICUgW0Bwcm90b2Nv # bCwgQGNvZGUsIEB0ZXh0XQoKICAgICAgQGhlYWRlci5lYWNoIGRvIHxrLCB2 # fAogICAgICAgIHJlcyA8PCAiJXM9JXNcbiIgJSBbaywgdl0KICAgICAgZW5k # CgogICAgICByZXR1cm4gcmVzCiAgICBlbmQKICBlbmQKCiAgY2xhc3MgQ2h1 # bmsKICAgIGRlZiBpbml0aWFsaXplKGRhdGEpCiAgICAgIEBkYXRhCT0gIiIK # ICAgICAgbGluZSwgZGF0YQk9IGRhdGEuc3BsaXQoL1xyKlxuLywgMikKICAg # ICAgc2l6ZSwgZXh0CQk9IGxpbmUuc3BsaXQoLzsvLCAyKQogICAgICBzaXpl # CQk9IHNpemUuaGV4CiAgICAgIHdoaWxlIG5vdCBzaXplLnplcm8/IGFuZCBu # b3QgZGF0YS5uaWw/CiAgICAgICAgQGRhdGEJCSs9IGRhdGFbMC4uKHNpemUt # MSldCiAgICAgICAgZGF0YQkJPSBkYXRhW3NpemUuLi0xXQogICAgICAgIGlm # IG5vdCBkYXRhLm5pbD8KICAgICAgICAgIGRhdGEuZ3N1YiEoL15ccipcbi8s # ICIiKQogICAgICAgICAgbGluZSwgZGF0YQk9IGRhdGEuc3BsaXQoL1xyKlxu # LywgMikKICAgICAgICAgIHNpemUsIGV4dAk9IGxpbmUuc3BsaXQoLzsvLCAy # KQogICAgICAgICAgc2l6ZQkJPSBzaXplLmhleAogICAgICAgIGVuZAogICAg # ICBlbmQKICAgIGVuZAoKICAgIGRlZiB0b19zCiAgICAgIEBkYXRhCiAgICBl # bmQKICBlbmQKCiAgY2xhc3MgTm9BZGRyZXNzRXhjZXB0aW9uIDwgU3RhbmRh # cmRFcnJvcgogIGVuZAoKICBkZWYgc2VsZi5nZXRhZGRyZXNzKGhvc3QpCiAg # ICBpZiBub3QgQEBob3N0cy5pbmNsdWRlPyhob3N0KQogICAgICBAQGhvc3Rz # W2hvc3RdCT0gIiIKICAgICAgZXZ0aW1lb3V0KDUpIGRvCSMgPz8/IERvZXQg # J3V0IG5pZXQ/Li4uCiAgICAgICAgQEBob3N0c1tob3N0XQk9IElQU29ja2V0 # LmdldGFkZHJlc3MoaG9zdCkKICAgICAgZW5kCiAgICBlbmQKCiAgICByYWlz # ZSBOb0FkZHJlc3NFeGNlcHRpb24sIGhvc3QJaWYgQEBob3N0c1tob3N0XS5l # bXB0eT8KCiAgICBAQGhvc3RzW2hvc3RdCiAgZW5kCgogIGRlZiBzZWxmLmhl # YWQodXJpLCBmb3JtPXt9LCByZWN1cnNpdmU9dHJ1ZSkKICAgIGhlYWRlcgk9 # IEhlYWRlci5uZXcobmlsKQoKICAgIGJlZ2luCiAgICAgIHdoaWxlIG5vdCB1 # cmkubmlsPwogICAgICAgIHVyaQkJPSBFVlVSSS5uZXcodXJpKSBpZiB1cmku # a2luZF9vZj8gU3RyaW5nCiAgICAgICAgaG9zdAkJPSB1cmkuaG9zdAogICAg # ICAgIHBvcnQJCT0gdXJpLnBvcnQKCiAgICAgICAgaWYgJHByb3h5Lm5pbD8g # b3IgJHByb3h5LmVtcHR5PyBvciBob3N0ID09ICJsb2NhbGhvc3QiCiAgICAg # ICAgICBpbwkJPSBuaWwKCiAgICAgICAgICBAQG11dGV4LnN5bmNocm9uaXpl # IGRvCiAgICAgICAgICAgIGlvCQkJPSBUQ1BTb2NrZXQubmV3KGdldGFkZHJl # c3MoaG9zdCksIHBvcnQuemVybz8gPyA4MCA6IHBvcnQpCiAgICAgICAgICBl # bmQKCiAgICAgICAgICBpby53cml0ZSgiSEVBRCAje3VyaS5wYXRoIG9yICcv # J30je3VyaS52YXJzdHJpbmcuZW1wdHk/ID8gJycgOiAnPycgKyB1cmkudmFy # c3RyaW5nfSBIVFRQLzEuMFxyXG5Ib3N0OiAje2hvc3R9XHJcblxyXG4iKQog # ICAgICAgIGVsc2UKICAgICAgICAgIHByb3h5CQk9IEVWVVJJLm5ldygkcHJv # eHkpCiAgICAgICAgICBpbwkJPSBUQ1BTb2NrZXQubmV3KHByb3h5Lmhvc3Qs # IHByb3h5LnBvcnQuemVybz8gPyA4MDgwIDogcHJveHkucG9ydCkKCiAgICAg # ICAgICBpby53cml0ZSgiSEVBRCAje3VyaX0gSFRUUC8xLjBcclxuI3siUHJv # eHktQXV0aG9yaXphdGlvbjogQmFzaWMgIiskcHJveHlfYXV0aCsiXHJcbiIg # aWYgbm90ICRwcm94eV9hdXRoLm5pbD99XHJcblxyXG4iKQogICAgICAgIGVu # ZAoKICAgICAgICBpby5jbG9zZV93cml0ZQoKICAgICAgICByZXMJPSBpby5y # ZWFkCgogICAgICAgIGlvLmNsb3NlX3JlYWQKCiAgICAgICAgaGVhZGVyLCBk # YXRhCT0gbmlsLCBuaWwKICAgICAgICBoZWFkZXIsIGRhdGEJPSByZXMuc3Bs # aXQoL1xyKlxuXHIqXG4vLCAyKQlpZiBub3QgcmVzLm5pbD8KICAgICAgICBo # ZWFkZXIJCT0gSGVhZGVyLm5ldyhoZWFkZXIpCgogICAgICAgIGlmIHJlY3Vy # c2l2ZSBhbmQgaGVhZGVyLmhlYWRlclsibG9jYXRpb24iXSAhPSB1cmkudG9f # cwogICAgICAgICAgdXJpCT0gRVZVUkkubmV3KHVyaSkgKyBoZWFkZXIuaGVh # ZGVyWyJsb2NhdGlvbiJdCiAgICAgICAgZWxzZQogICAgICAgICAgdXJpCT0g # bmlsCiAgICAgICAgZW5kCiAgICAgIGVuZAogICAgcmVzY3VlIEVycm5vOjpF # Q09OTlJFU0VULCBFcnJubzo6RUhPU1RVTlJFQUNIID0+IGUKICAgICAgJHN0 # ZGVyci5wdXRzIGUubWVzc2FnZQogICAgICBzbGVlcCAxCiAgICAgIHJldHJ5 # CiAgICByZXNjdWUgRXJybm86OkVDT05OUkVGVVNFRCA9PiBlCiAgICAgIGRh # dGEJPSBuaWwKICAgIHJlc2N1ZSBOb0FkZHJlc3NFeGNlcHRpb24gPT4gZQog # ICAgICAkc3RkZXJyLnB1dHMgZS5tZXNzYWdlCiAgICAgIGhlYWRlcgk9IEhl # YWRlci5uZXcobmlsKQogICAgZW5kCgogICAgR0Muc3RhcnQKCiAgICByZXR1 # cm4gaGVhZGVyCiAgZW5kCgogIGRlZiBzZWxmLmdldCh1cmksIGh0dHBoZWFk # ZXI9e30sIGZvcm09e30pCiAgICBwb3N0CT0gQXJyYXkubmV3CiAgICBmb3Jt # LmVhY2hfcGFpciBkbyB8dmFyLCB2YWx1ZXwKICAgICAgcG9zdCA8PCAiI3t2 # YXIudG9faHRtbH09I3t2YWx1ZS50b19odG1sfSIKICAgIGVuZAogICAgcG9z # dAk9IHBvc3Quam9pbigiPyIpCgogICAgZGF0YQk9IG5pbAoKICAgIGJlZ2lu # CiAgICAgIHdoaWxlIG5vdCB1cmkubmlsPwogICAgICAgIHVyaQk9IEVWVVJJ # Lm5ldyh1cmkpIGlmIHVyaS5raW5kX29mPyBTdHJpbmcKICAgICAgICBob3N0 # CT0gdXJpLmhvc3QKICAgICAgICBwb3J0CT0gdXJpLnBvcnQKCiAgICAgICAg # aWYgJHByb3h5Lm5pbD8gb3IgJHByb3h5LmVtcHR5PyBvciBob3N0ID09ICJs # b2NhbGhvc3QiCiAgICAgICAgICBpbwk9IG5pbAogICAgICAgICAgQEBtdXRl # eC5zeW5jaHJvbml6ZSBkbwogICAgICAgICAgICBpbwkJCT0gVENQU29ja2V0 # Lm5ldyhnZXRhZGRyZXNzKGhvc3QpLCBwb3J0Lnplcm8/ID8gODAgOiBwb3J0 # KQogICAgICAgICAgZW5kCgogICAgICAgICAgaWYgcG9zdC5lbXB0eT8KICAg # ICAgICAgICAgaW8ud3JpdGUgIkdFVCAlcyVzIEhUVFAvMS4wXHJcbiIgJSBb # KHVyaS5wYXRoIG9yICcvJyksICh1cmkudmFyc3RyaW5nLmVtcHR5PyA/ICcn # IDogJz8nICsgdXJpLnZhcnN0cmluZyldCiAgICAgICAgICBlbHNlCiAgICAg # ICAgICAgIGlvLndyaXRlICJQT1NUICVzJXMgSFRUUC8xLjBcclxuIiAlIFso # dXJpLnBhdGggb3IgJy8nKSwgKHVyaS52YXJzdHJpbmcuZW1wdHk/ID8gJycg # OiAnPycgKyB1cmkudmFyc3RyaW5nKV0KICAgICAgICAgIGVuZAogICAgICAg # IGVsc2UKICAgICAgICAgIHByb3h5CT0gRVZVUkkubmV3KCRwcm94eSkKICAg # ICAgICAgIGlvCT0gVENQU29ja2V0Lm5ldyhwcm94eS5ob3N0LCBwcm94eS5w # b3J0Lnplcm8/ID8gODA4MCA6IHByb3h5LnBvcnQpCgogICAgICAgICAgaWYg # cG9zdC5lbXB0eT8KICAgICAgICAgICAgaW8ud3JpdGUgIkdFVCAlcyBIVFRQ # LzEuMFxyXG4iICUgdXJpCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGlv # LndyaXRlICJQT1NUICVzIEhUVFAvMS4wXHJcbiIgJSB1cmkKICAgICAgICAg # IGVuZAogICAgICAgIGVuZAoKICAgICAgICBpby53cml0ZSAiSG9zdDogJXNc # clxuIiAlIGhvc3QKICAgICAgICBpby53cml0ZSAiVXNlci1BZ2VudDogeHl6 # XHJcbiIKICAgICAgICBpby53cml0ZSAiUHJveHktQXV0aG9yaXphdGlvbjog # QmFzaWMgJXNcclxuIiAlICRwcm94eV9hdXRoCXVubGVzcyAkcHJveHlfYXV0 # aC5uaWw/CiAgICAgICAgI2lvLndyaXRlICJBY2NlcHQtRW5jb2Rpbmc6IGRl # ZmxhdGVcclxuIgogICAgICAgICNpby53cml0ZSAiQWNjZXB0LUNoYXJzZXQ6 # IElTTy04ODU5LTFcclxuIgogICAgICAgIGlvLndyaXRlICJDb25uZWN0aW9u # OiBjbG9zZVxyXG4iCiAgICAgICAgaW8ud3JpdGUgIkNvbnRlbnQtVHlwZTog # YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXHJcbiIJdW5sZXNz # IHBvc3QuZW1wdHk/CiAgICAgICAgaW8ud3JpdGUgIkNvbnRlbnQtTGVuZ3Ro # OiAlc1xyXG4iICUgcG9zdC5sZW5ndGgJCQl1bmxlc3MgcG9zdC5lbXB0eT8K # ICAgICAgICBodHRwaGVhZGVyLmVhY2ggZG8gfGssIHZ8CiAgICAgICAgICAk # c3RkZXJyLnB1dHMgIiVzOiAlc1xyXG4iICUgW2ssIHZdCiAgICAgICAgICBp # by53cml0ZSAiJXM6ICVzXHJcbiIgJSBbaywgdl0KICAgICAgICBlbmQKICAg # ICAgICBpby53cml0ZSAiXHJcbiIKICAgICAgICBpby53cml0ZSBwb3N0CQkJ # CQkJCXVubGVzcyBwb3N0LmVtcHR5PwoKICAgICAgICBpby5jbG9zZV93cml0 # ZQoKICAgICAgICByZXMJCT0gaW8ucmVhZAoKICAgICAgICBpby5jbG9zZV9y # ZWFkCgogICAgICAgIGhlYWRlciwgZGF0YQk9IG5pbCwgbmlsCiAgICAgICAg # aGVhZGVyLCBkYXRhCT0gcmVzLnNwbGl0KC9ccipcblxyKlxuLywgMikJaWYg # bm90IHJlcy5uaWw/CgogICAgICAgIGhlYWRlcgk9IEhlYWRlci5uZXcoaGVh # ZGVyKQogICAgICAgIGxlbmd0aAk9IGhlYWRlci5oZWFkZXJbImNvbnRlbnQt # bGVuZ3RoIl0KICAgICAgICBkYXRhCT0gIiIJaWYgbGVuZ3RoID09ICIwIgoK # ICAgICAgICBpZiBoZWFkZXIuaGVhZGVyWyJsb2NhdGlvbiJdICE9IHVyaS50 # b19zCiAgICAgICAgICB1cmkJPSBFVlVSSS5uZXcodXJpKSArIGhlYWRlci5o # ZWFkZXJbImxvY2F0aW9uIl0KICAgICAgICBlbHNlCiAgICAgICAgICB1cmkJ # PSBuaWwKICAgICAgICBlbmQKCiAgICAgICAgaWYgaGVhZGVyLmhlYWRlclsi # dHJhbnNmZXItZW5jb2RpbmciXSA9PSAiY2h1bmtlZCIKICAgICAgICAgIGRh # dGEJPSBDaHVuay5uZXcoZGF0YSkudG9fcwlpZiBub3QgZGF0YS5uaWw/CiAg # ICAgICAgZW5kCgogICAgICAgICNpZiBoZWFkZXIuaGVhZGVyWyJjb250ZW50 # LWVuY29kaW5nIl0gPT0gImd6aXAiCiAgICAgICAgICAjZGF0YQk9ICJnemlw # IC1kIi5leGVjKGRhdGEpCWlmIG5vdCBkYXRhLm5pbD8KICAgICAgICAjZW5k # CgogICAgICAgIGRhdGEJPSBuaWwJdW5sZXNzIGhlYWRlci5jb2RlID09IDIw # MAogICAgICBlbmQKICAgIHJlc2N1ZSBFcnJubzo6RUNPTk5SRVNFVCwgRXJy # bm86OkVIT1NUVU5SRUFDSCA9PiBlCiAgICAgICRzdGRlcnIucHV0cyBlLm1l # c3NhZ2UKICAgICAgc2xlZXAgMQogICAgICByZXRyeQogICAgcmVzY3VlIEVy # cm5vOjpFQ09OTlJFRlVTRUQgPT4gZQogICAgICBkYXRhCT0gbmlsCiAgICBy # ZXNjdWUgTm9BZGRyZXNzRXhjZXB0aW9uLCBFcnJubzo6RUNPTk5SRUZVU0VE # ID0+IGUKICAgICAgJHN0ZGVyci5wdXRzIGUubWVzc2FnZQogICAgICBkYXRh # CT0gbmlsCiAgICBlbmQKCiAgICBHQy5zdGFydAoKICAgIHJldHVybiBkYXRh # CiAgZW5kCgogIGRlZiBzZWxmLmhlYWRfZnJvbV9jYWNoZSh1cmksIGZvcm09 # e30pCiAgICBmcm9tX2NhY2hlKCJoZWFkIiwgdXJpLCBmb3JtKQogIGVuZAoK # ICBkZWYgc2VsZi5nZXRfZnJvbV9jYWNoZSh1cmksIGZvcm09e30pCiAgICBm # cm9tX2NhY2hlKCJnZXQiLCB1cmksIGZvcm0pCiAgZW5kCgogIGRlZiBzZWxm # LmZyb21fY2FjaGUoYWN0aW9uLCB1cmksIGZvcm0pCiAgICBsb2MJCT0gdXJp # LnRvX3MgKyBmb3JtLnNvcnQuaW5zcGVjdAogICAgaGFzaAk9IE1ENS5uZXco # IiN7QEB2ZXJzaWV9ICN7bG9jfSIpCgogICAgZGlyCQk9ICIje3RlbXB9L2V2 # Y2FjaGUuI3t1c2VyfS9odHRwY2xpZW50LiN7YWN0aW9ufSIKICAgIGZpbGUJ # PSAiI3tkaXJ9LyN7aGFzaH0iCiAgICBkYXRhCT0gbmlsCgogICAgRmlsZS5t # a3BhdGgoZGlyKQoKICAgIGV4cGlyZQk9IDM1NioyNCo2MCo2MAoKICAgIGlm # IEZpbGUuZmlsZT8oZmlsZSkgYW5kIChUaW1lLm5ldy50b19mIC0gRmlsZS5z # dGF0KGZpbGUpLm10aW1lLnRvX2YgPCBleHBpcmUpCiAgICAgIEBAbXV0ZXgu # c3luY2hyb25pemUgZG8KICAgICAgICBGaWxlLm9wZW4oZmlsZSwgInJiIikJ # e3xmfCBkYXRhID0gZi5yZWFkfQogICAgICBlbmQKICAgIGVsc2UKICAgICAg # ZGF0YQk9IG1ldGhvZChhY3Rpb24pLmNhbGwodXJpLCBmb3JtKQoKICAgICAg # aWYgbm90IGRhdGEubmlsPwogICAgICAgIEBAbXV0ZXguc3luY2hyb25pemUg # ZG8KICAgICAgICAgIEZpbGUub3BlbihmaWxlLCAid2IiKQl7fGZ8IGYud3Jp # dGUgZGF0YX0KICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKCiAgICBy # ZXR1cm4gZGF0YQogIGVuZAplbmQKCmNsYXNzIFJlcXVlc3RHZXQgPCBIYXNo # CiAgZGVmIGluaXRpYWxpemUoZGF0YSkKICAgIENHSS5wYXJzZShkYXRhKS5l # YWNoIGRvIHxrLCB2fAogICAgICBzZWxmW2tdCT0gdgogICAgZW5kCiAgZW5k # CmVuZAoKY2xhc3MgUmVxdWVzdFBvc3QgPCBIYXNoCiAgZGVmIGluaXRpYWxp # emUoZGF0YSkKICAgIENHSS5wYXJzZShkYXRhKS5lYWNoIGRvIHxrLCB2fAog # ICAgICBzZWxmW2tdCT0gdgogICAgZW5kCiAgZW5kCmVuZAoKY2xhc3MgUmVx # dWVzdFJlcXVlc3QKICBhdHRyX3JlYWRlciA6bWV0aG9kCiAgYXR0cl9yZWFk # ZXIgOnVyaQogIGF0dHJfcmVhZGVyIDpwYXRoCiAgYXR0cl9yZWFkZXIgOmRh # dGEKICBhdHRyX3JlYWRlciA6cHJvdG9jb2wKCiAgZGVmIGluaXRpYWxpemUo # Zmlyc3RsaW5lKQogICAgQG1ldGhvZCwgQHVyaSwgQHByb3RvY29sCT0gZmly # c3RsaW5lLnNwbGl0KC8gLykKICAgIEBwYXRoLCBAZGF0YQkJPSBAdXJpLnNw # bGl0KC9cPy8pCiAgICBAZGF0YQkJCT0gIiIJCQlpZiBAZGF0YS5uaWw/CSMg # VE9ETwoKIyAgICBpCT0gQHBhdGguaW5kZXgoLyVbWzpkaWdpdDpdXXsyfS8p # CiMgICAgd2hpbGUgbm90IGkubmlsPwojICAgICAgQHBhdGgJPSBAcGF0aFsw # Li4oaS0xKV0gKyBAcGF0aFsoaSsxKS4uKGkrMildLnVucGFjaygnSDInKS5z # aGlmdC50b19pLmNociArIEBwYXRoWyhpKzMpLi4tMV0KIyAgICAgIGkJPSBA # cGF0aC5pbmRleCgvJVtbOmRpZ2l0Ol1dezJ9LykKIyAgICBlbmQKICBlbmQK # CiAgZGVmIHRvX3MKICAgICIje0BtZXRob2R9ICN7QHVyaX0gI3tAcHJvdG9j # b2x9XHJcbiIKICBlbmQKCiAgZGVmIGluc3BlY3QKICAgICIoUmVxdWVzdFJl # cXVlc3Q6ICVzKSIgJSBbQG1ldGhvZCwgQHBhdGgsIEBkYXRhLCBAcHJvdG9j # b2xdLmpvaW4oIiwgIikKICBlbmQKZW5kCgpjbGFzcyBSZXF1ZXN0IDwgSGFz # aAogIGF0dHJfcmVhZGVyIDpwZWVyYWRkcgogIGF0dHJfcmVhZGVyIDpyZXF1 # ZXN0CiAgYXR0cl9yZWFkZXIgOmNvb2tpZXMKICBhdHRyX3JlYWRlciA6dmFy # cwogIGF0dHJfcmVhZGVyIDp1c2VyCiAgYXR0cl93cml0ZXIgOnVzZXIKCiAg # ZGVmIGluaXRpYWxpemUoaW8pCiAgICBAaW8JCT0gaW8KCiAgICBmaXJzdGxp # bmUJPSBAaW8uZ2V0cwoKICAgIHJldHVybglpZiBmaXJzdGxpbmUubmlsPwoK # ICAgIEByZXF1ZXN0CT0gUmVxdWVzdFJlcXVlc3QubmV3KGZpcnN0bGluZS5z # dHJpcCkKCiAgICBsaW5lCT0gQGlvLmdldHMKICAgIGxpbmUJPSBsaW5lLnN0 # cmlwCXVubGVzcyBsaW5lLm5pbD8KICAgIHdoaWxlIG5vdCBsaW5lLm5pbD8g # YW5kIG5vdCBsaW5lLmVtcHR5PwogICAgICBrZXksIHZhbHVlCT0gbGluZS5z # cGxpdCgiICIsIDIpCiAgICAgIHNlbGZba2V5LnN1YigvOiQvLCAiIikuZG93 # bmNhc2VdCT0gdmFsdWUKCiAgICAgIGxpbmUJPSBAaW8uZ2V0cwogICAgICBs # aW5lCT0gbGluZS5zdHJpcAl1bmxlc3MgbGluZS5uaWw/CiAgICBlbmQKCiAg # ICBjb29raWUJPSBzZWxmWyJjb29raWUiXQogICAgY29va2llCT0gIiIJaWYg # Y29va2llLm5pbD8KICAgIEBjb29raWVzCT0ge30KICAgIGNvb2tpZS5zcGxp # dCgvOy8pLmVhY2ggZG8gfHN8CiAgICAgIGssIHYJCT0gcy5zdHJpcC5zcGxp # dCgvPS8sIDIpCiAgICAgIEBjb29raWVzW2tdCT0gdgogICAgZW5kCgogICAg # aWYgbm90IEByZXF1ZXN0Lm1ldGhvZC5uaWw/CiAgICAgIGNhc2UgQHJlcXVl # c3QubWV0aG9kLnVwY2FzZQogICAgICB3aGVuICJIRUFEIgogICAgICB3aGVu # ICJHRVQiCiAgICAgICAgQHZhcnMJPSBSZXF1ZXN0R2V0Lm5ldyhAcmVxdWVz # dC5kYXRhLm5pbD8gPyAiIiA6IEByZXF1ZXN0LmRhdGEpCiAgICAgIHdoZW4g # IlBPU1QiCiAgICAgICAgZGF0YQk9IChAaW8ucmVhZChzZWxmWyJjb250ZW50 # LWxlbmd0aCJdLnRvX2kpIG9yICIiKQogICAgICAgIEB2YXJzCT0gUmVxdWVz # dFBvc3QubmV3KChzZWxmWyJjb250ZW50LXR5cGUiXSA9PSAiYXBwbGljYXRp # b24veC13d3ctZm9ybS11cmxlbmNvZGVkIikgPyBkYXRhIDogIiIpCiAgICAg # IGVsc2UKICAgICAgICAkc3RkZXJyLnB1dHMgIlVua25vd24gcmVxdWVzdCAo # JyN7Zmlyc3RsaW5lfScpLiIKICAgICAgZW5kCiAgICBlbmQKCiAgICBAcGVl # cmFkZHIJPSBAaW8ucGVlcmFkZHIKCiAgICBAcGRhCT0gZmFsc2UKICAgIEBw # ZGEJPSB0cnVlCWlmIChzZWxmLmluY2x1ZGU/KCJ1c2VyLWFnZW50IikgYW5k # IHNlbGZbInVzZXItYWdlbnQiXS5kb3duY2FzZS5pbmNsdWRlPygid2luZG93 # cyBjZSIpKQogICAgQHBkYQk9IHRydWUJaWYgKHNlbGYuaW5jbHVkZT8oInVz # ZXItYWdlbnQiKSBhbmQgc2VsZlsidXNlci1hZ2VudCJdLmRvd25jYXNlLmlu # Y2x1ZGU/KCJoYW5kaHR0cCIpKQoKICAgIEBpby5jbG9zZV9yZWFkCiAgZW5k # CgogIGRlZiBwZGE/CiAgICBAcGRhCiAgZW5kCgogIGRlZiB0b19zCiAgICBy # ZXMgPSBAcmVxdWVzdC50b19zCiAgICBzZWxmLmVhY2ggZG8gfGssIHZ8CiAg # ICAgIHJlcyA8PCAiI3trfTogI3t2fVxyXG4iCiAgICBlbmQKICAgIHJlcwog # IGVuZAoKICBkZWYgaW5zcGVjdAogICAgIihSZXF1ZXN0OiAlcykiICUgW0Bw # ZWVyYWRkciwgQHJlcXVlc3QuaW5zcGVjdCwgQHZhcnMuaW5zcGVjdCwgQGNv # b2tpZXMuaW5zcGVjdCwgc3VwZXJdLmpvaW4oIiwgIikKICBlbmQKZW5kCgpj # bGFzcyBSZXNwb25zZSA8IEhhc2gKICBhdHRyX3dyaXRlciA6cmVzcG9uc2UK # ICBhdHRyX3dyaXRlciA6ZmlsZQogIGF0dHJfcmVhZGVyIDpjb29raWVzCiAg # YXR0cl9yZWFkZXIgOnN0b3AKICBhdHRyX3JlYWRlciA6YXRfc3RvcAoKICBk # ZWYgaW5pdGlhbGl6ZShpbykKICAgIEBpbwkJPSBpbwogICAgQHJlc3BvbnNl # CT0gIkhUVFAvMS4wIDIwMCBPSyIKICAgIEBjb29raWVzCT0ge30KICAgIEBk # YXRhCT0gIiIKICAgIEBzeW5jZAk9IGZhbHNlCiAgICBAc3RvcAk9IGZhbHNl # CiAgICBAYXRfc3RvcAk9IGxhbWJkYXt9CiAgICBAZmlsZQk9IG5pbAogIGVu # ZAoKICBkZWYgZmx1c2gKICAgIHN5bmMKCiAgICBpZiBAZmlsZQogICAgICBG # aWxlLm9wZW4oQGZpbGUsICJyYiIpIGRvIHxmfAogICAgICAgIHdoaWxlIGRh # dGEgPSBmLnJlYWQoMTBfMDAwKQogICAgICAgICAgQGlvLndyaXRlIGRhdGEK # ICAgICAgICBlbmQKICAgICAgZW5kCiAgICBlbmQKCiAgICBAaW8uY2xvc2UK # ICBlbmQKCiAgZGVmIHRvX3MKICAgIHJlcyA9ICIje0ByZXNwb25zZX1cclxu # IgogICAgc2VsZi5lYWNoIGRvIHxrLCB2fAogICAgICByZXMgPDwgIiN7a306 # ICN7dn1cclxuIgogICAgZW5kCgogICAgQGNvb2tpZXMuZWFjaCBkbyB8aywg # dnwKICAgICAgcmVzIDw8ICJTZXQtQ29va2llOiAlcz0lcztcclxuIiAlIFtr # LCB2XQogICAgZW5kCgogICAgcmVzCiAgZW5kCgogIGRlZiBzeW5jCiAgICBz # aXplCT0gKEBkYXRhIG9yICIiKS5sZW5ndGgKCiAgICBpZiBAZmlsZQogICAg # ICBleHQJPSBAZmlsZS5zY2FuKC9cLlteXC5dKiQvKQogICAgICBleHQJPSBl # eHQuc2hpZnQKICAgICAgZXh0CT0gZXh0WzEuLi0xXQl1bmxlc3MgZXh0Lm5p # bD8KICAgICAgbWltZXR5cGUJPSBFVk1pbWU6Ok1pbWVUeXBlW2V4dF0KCiAg # ICAgIHNlbGZbIkNvbnRlbnQtVHlwZSJdCT0gbWltZXR5cGUJCXVubGVzcyBt # aW1ldHlwZS5uaWw/CgogICAgICBzaXplICs9IEZpbGUuc2l6ZShAZmlsZSkJ # aWYgRmlsZS5maWxlPyhAZmlsZSkKICAgIGVuZAoKICAgIHNlbGZbIkNvbnRl # bnQtTGVuZ3RoIl0JPSBzaXplCgogICAgQGlvLndyaXRlKCIje3RvX3N9XHJc # biIpCXVubGVzcyBAc3luY2QKICAgIEBpby53cml0ZShAZGF0YSkKICAgIEBk # YXRhCT0gIiIKICAgIEBzeW5jZAk9IHRydWUKICBlbmQKCiAgZGVmIDw8IChz # KQogICAgQGRhdGEgPDwgcwogIGVuZAoKICBkZWYgY2xlYW4KICAgIEBkYXRh # CT0gIiIKICBlbmQKCiAgZGVmIGluc3BlY3QKICAgICIoUmVzcG9uc2U6ICVz # KSIgJSBbQHJlc3BvbnNlLCBAZGF0YV0uam9pbigiLCAiKQogIGVuZAoKICBk # ZWYgc3RvcCgmYmxvY2spCiAgICBAc3RvcAk9IHRydWUKICAgIEBhdF9zdG9w # CT0gYmxvY2sJdW5sZXNzIGJsb2NrLm5pbD8KICBlbmQKCiAgZGVmIHN0b3A/ # CiAgICBAc3RvcAogIGVuZAplbmQKCmNsYXNzIEhUVFBTZXJ2ZXJFeGNlcHRp # b24gPCBFeGNlcHRpb24KZW5kCgpjbGFzcyBIVFRQU2VydmVyCiAgZGVmIHNl # bGYuc2VydmUocG9ydGlvPTgwLCByZW1vdGU9ZmFsc2UsIGF1dGg9bmlsLCBy # ZWFsbT0iZXYvbmV0IikKICAgIHBvcnQsIHNlcnZlcgk9IHBvcnRpbwoKICAg # IGJlZ2luCiAgICAgIHNlcnZlcgk9IFRDUFNlcnZlci5uZXcocmVtb3RlID8g # IjAuMC4wLjAiIDogImxvY2FsaG9zdCIsIHBvcnQpCWlmIHNlcnZlci5uaWw/ # CgogICAgICAkc3RkZXJyLnB1dHMgIkp1c3QgcG9pbnQgeW91ciBicm93c2Vy # IHRvIGh0dHA6Ly9sb2NhbGhvc3Q6I3twb3J0fS8gLi4uIgogICAgcmVzY3Vl # CiAgICAgIHNlcnZlcgk9IG5pbAoKICAgICAgJHN0ZGVyci5wdXRzICJQb3J0 # ICN7cG9ydH0gaXMgaW4gdXNlLiIKICAgIGVuZAoKICAgIGlmIG5vdCBzZXJ2 # ZXIubmlsPwogICAgICBjb3VudAk9IDAKCiAgICAgIGF0X2V4aXQgZG8KICAg # ICAgICAjJHN0ZGVyci5wdXRzICJSZWNlaXZlZCAje2NvdW50fSByZXF1ZXN0 # cyIKICAgICAgZW5kCgogICAgICBzZXJ2ZXJ0aHJlYWQgPQogICAgICBUaHJl # YWQubmV3IGRvCiAgICAgICAgbXV0ZXgJPSBNdXRleC5uZXcKCiAgICAgICAg # VGhyZWFkLmN1cnJlbnRbInRocmVhZHMiXQk9IFtdCgogICAgICAgIGV2ZXJ5 # KDEsIFRocmVhZC5jdXJyZW50KSBkbyB8dGhyZWFkfAogICAgICAgICAgbXV0 # ZXguc3luY2hyb25pemUgZG8KICAgICAgICAgICAgdGhyZWFkWyJ0aHJlYWRz # Il0uZGVsZXRlX2lme3x0fCAobm90IHQuYWxpdmU/KX0KICAgICAgICAgIGVu # ZAogICAgICAgIGVuZAoKICAgICAgICBsb29wIGRvCiAgICAgICAgICBpbwk9 # IHNlcnZlci5hY2NlcHQKICAgICAgICAgIGNvdW50ICs9IDEKCiAgICAgICAg # ICB0aHJlYWQgPQogICAgICAgICAgVGhyZWFkLm5ldyhUaHJlYWQuY3VycmVu # dCwgY291bnQpIGRvIHxwYXJlbnR0aHJlYWQsIGNvdW50MnwKICAgICAgICAg # ICAgc3RvcAk9IGZhbHNlCgogICAgICAgICAgICBiZWdpbgogICAgICAgICAg # ICAgIGJlZ2luCiAgICAgICAgICAgICAgICByZXEJPSBSZXF1ZXN0Lm5ldyhp # bykKICAgICAgICAgICAgICAgIHJlc3AJPSBSZXNwb25zZS5uZXcoaW8pCiAg # ICAgICAgICAgICAgcmVzY3VlCiAgICAgICAgICAgICAgICByYWlzZSBIVFRQ # U2VydmVyRXhjZXB0aW9uCiAgICAgICAgICAgICAgZW5kCgogICAgICAgICAg # ICAgIGJlZ2luCiAgICAgICAgICAgICAgICBpcAk9IHJlcS5wZWVyYWRkclsz # XQogICAgICAgICAgICAgIHJlc2N1ZSBOYW1lRXJyb3IKICAgICAgICAgICAg # ICAgIHJhaXNlIEhUVFBTZXJ2ZXJFeGNlcHRpb24KICAgICAgICAgICAgICBl # bmQKCiAgICAgICAgICAgICAgaWYgKG5vdCByZW1vdGUpIG9yIChyZW1vdGUg # YW5kIChhdXRoLm5pbD8gb3IgYXV0aC5lbXB0eT8gb3IgYXV0aGVudGljYXRl # KGF1dGgsIHJlYWxtLCByZXEsIHJlc3ApKSkKICAgICAgICAgICAgICAgICRz # dGRlcnIucHV0cyAiI3tjb3VudDJ9ICN7VGltZS5uZXcuc3RyZnRpbWUoIiVZ # LSVtLSVkICVIOiVNOiVTIil9ICN7aXB9ICN7cmVxLnVzZXJ9ICN7cmVxLnJl # cXVlc3QudG9fcy5zdHJpcH0iCgogICAgICAgICAgICAgICAgYmVnaW4KICAg # ICAgICAgICAgICAgICAgeWllbGQocmVxLCByZXNwKQogICAgICAgICAgICAg # ICAgcmVzY3VlIEV4Y2VwdGlvbiA9PiBlCiAgICAgICAgICAgICAgICAgIG11 # dGV4LnN5bmNocm9uaXplIGRvCiAgICAgICAgICAgICAgICAgICAgJHN0ZGVy # ci5wdXRzIGUuY2xhc3MudG9fcyArICI6ICIgKyBlLm1lc3NhZ2UKICAgICAg # ICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMgZS5iYWNrdHJhY2UuY29sbGVj # dHt8c3wgIlx0IitzfS5qb2luKCJcbiIpCiAgICAgICAgICAgICAgICAgIGVu # ZAogICAgICAgICAgICAgICAgICByZXNwWyJDb250ZW50LVR5cGUiXQk9ICJ0 # ZXh0L3BsYWluIgogICAgICAgICAgICAgICAgICByZXNwLnJlc3BvbnNlCQk9 # ICJIVFRQLzEuMCAyMDAgPz8/IgogICAgICAgICAgICAgICAgICByZXNwLmNs # ZWFuCiAgICAgICAgICAgICAgICAgIHJlc3AgPDwgZS5jbGFzcy50b19zICsg # IjogIiArIGUubWVzc2FnZQogICAgICAgICAgICAgICAgICByZXNwIDw8ICJc # biIKICAgICAgICAgICAgICAgICAgcmVzcCA8PCAiXG4iCiAgICAgICAgICAg # ICAgICAgIHJlc3AgPDwgZS5iYWNrdHJhY2UuY29sbGVjdHt8c3wgIlx0Iitz # fS5qb2luKCJcbiIpCiAgICAgICAgICAgICAgICAgIHJlc3AgPDwgIlxuIgog # ICAgICAgICAgICAgICAgICByZXNwIDw8ICJcbiIKICAgICAgICAgICAgICAg # ICAgcmVzcCA8PCAiKFlvdSBjYW4gdXNlIHRoZSBiYWNrIGJ1dHRvbiBhbmQg # c3RvcCB0aGUgYXBwbGljYXRpb24gcHJvcGVybHksIGlmIGFwcHJvcHJpYXRl # LikiCiAgICAgICAgICAgICAgICBlbmQKCiAgICAgICAgICAgICAgICBzdG9w # CT0gdHJ1ZQlpZiByZXNwLnN0b3A/CiAgICAgICAgICAgICAgZW5kCgogICAg # ICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICByZXNwLmZsdXNoCQkJ # CiAgICAgICAgICAgICAgcmVzY3VlCiAgICAgICAgICAgICAgICByYWlzZSBI # VFRQU2VydmVyRXhjZXB0aW9uCiAgICAgICAgICAgICAgZW5kCiAgICAgICAg # ICAgIHJlc2N1ZSBIVFRQU2VydmVyRXhjZXB0aW9uCiAgICAgICAgICAgIGVu # ZAoKICAgICAgICAgICAgcGFyZW50dGhyZWFkWyJzdG9wIl0JPSByZXNwCWlm # IHN0b3AKICAgICAgICAgIGVuZAoKICAgICAgICAgIG11dGV4LnN5bmNocm9u # aXplIGRvCiAgICAgICAgICAgIFRocmVhZC5jdXJyZW50WyJ0aHJlYWRzIl0g # PDwgdGhyZWFkCiAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgICAgZW5k # CgogICAgICBzbGVlcCAwLjEJd2hpbGUgbm90IHNlcnZlcnRocmVhZFsic3Rv # cCJdCgogICAgICBzZXJ2ZXJ0aHJlYWRbInRocmVhZHMiXS5lYWNoIHt8dHwg # dC5qb2lufQoKICAgICAgc2VydmVydGhyZWFkWyJzdG9wIl0uYXRfc3RvcC5j # YWxsCgogICAgICBzZXJ2ZXJ0aHJlYWQua2lsbAogICAgZW5kCiAgZW5kCgog # IGRlZiBzZWxmLmF1dGhlbnRpY2F0ZShhdXRoLCByZWFsbSwgcmVxLCByZXNw # KQogICAgaWYgYXV0aC5raW5kX29mPyBTdHJpbmcKICAgICAgZmlsZQk9ICIj # e2hvbWV9LyN7YXV0aH0iCiAgICAgIGF1dGhzCT0ge30KICAgICAgYXV0aHMJ # PSBIYXNoLmZpbGUoZmlsZSkJaWYgRmlsZS5maWxlPyhmaWxlKQogICAgZWxz # ZQogICAgICBhdXRocwk9IGF1dGgKICAgIGVuZAoKICAgIGF1dGh1c2VycGFz # c3dvcmQJPSByZXFbImF1dGhvcml6YXRpb24iXQogICAgaWYgbm90IGF1dGh1 # c2VycGFzc3dvcmQubmlsPwogICAgICBhdXRodHlwZSwgdXNlcnBhc3N3b3Jk # CT0gYXV0aHVzZXJwYXNzd29yZC5zcGxpdCgvIC8pCiAgICAgIGlmIGF1dGh0 # eXBlID09ICJCYXNpYyIgYW5kIG5vdCB1c2VycGFzc3dvcmQubmlsPwogICAg # ICAgIHUsIHAJPSB1c2VycGFzc3dvcmQudW5wYWNrKCJtIikuc2hpZnQuc3Bs # aXQoLzovKQogICAgICBlbmQKICAgIGVuZAoKICAgIG9rCT0gKGF1dGhzLmlu # Y2x1ZGU/KHUpIGFuZCBhdXRoc1t1XSA9PSBwKQoKICAgIHVubGVzcyBvawog # ICAgICByZXNwWyJXV1ctQXV0aGVudGljYXRlIl0JPSAiQmFzaWMgcmVhbG09 # XCIje3JlYWxtfVwiIgogICAgICByZXNwLnJlc3BvbnNlCQk9ICJIVFRQLzEu # MCA0MDEgVW5hdXRob3JpemVkIgogICAgZW5kCgogICAgcmVxLnVzZXIJPSB1 # CgogICAgcmV0dXJuIG9rCiAgZW5kCmVuZAoAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRtcC5lYXIycnVieXNjcmlw # dC5mLjExNTEwLnRhci9ldi9taW1lLnJiAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1 # ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAzMTYxMwAxMDI1MDMyMDYxMgAwMjAx # MDYAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAdXN0YXIgIABlcmlrAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAw # MDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # bW9kdWxlIEVWTWltZQogIE1pbWVUeXBlID0ge30KCiAgTWltZVR5cGVbJzEy # MyddID0gJ2FwcGxpY2F0aW9uL3ZuZC5sb3R1cy0xLTItMycKICBNaW1lVHlw # ZVsnM2RzJ10gPSAnaW1hZ2UveC0zZHMnCiAgTWltZVR5cGVbJ2EnXSA9ICdh # cHBsaWNhdGlvbi94LXVuaXgtYXJjaGl2ZScKICBNaW1lVHlwZVsnYWJ3J10g # PSAnYXBwbGljYXRpb24veC1hYml3b3JkJwogIE1pbWVUeXBlWydhYzMnXSA9 # ICdhdWRpby9hYzMnCiAgTWltZVR5cGVbJ2FmbSddID0gJ2FwcGxpY2F0aW9u # L3gtZm9udC1hZm0nCiAgTWltZVR5cGVbJ2FnJ10gPSAnaW1hZ2UveC1hcHBs # aXgtZ3JhcGhpYycKICBNaW1lVHlwZVsnYWlmJ10gPSAnYXVkaW8veC1haWZm # JwogIE1pbWVUeXBlWydhaWZjJ10gPSAnYXVkaW8veC1haWZmJwogIE1pbWVU # eXBlWydhaWZmJ10gPSAnYXVkaW8veC1haWZmJwogIE1pbWVUeXBlWydhcCdd # ID0gJ2FwcGxpY2F0aW9uL3gtYXBwbGl4LXByZXNlbnRzJwogIE1pbWVUeXBl # WydhcGUnXSA9ICdhcHBsaWNhdGlvbi94LWFwZScKICBNaW1lVHlwZVsnYXJq # J10gPSAnYXBwbGljYXRpb24veC1hcmonCiAgTWltZVR5cGVbJ2FzJ10gPSAn # YXBwbGljYXRpb24veC1hcHBsaXgtc3ByZWFkc2hlZXQnCiAgTWltZVR5cGVb # J2FzYyddID0gJ3RleHQvcGxhaW4nCiAgTWltZVR5cGVbJ2FzZiddID0gJ3Zp # ZGVvL3gtbXMtYXNmJwogIE1pbWVUeXBlWydhc3AnXSA9ICdhcHBsaWNhdGlv # bi94LWFzcCcKICBNaW1lVHlwZVsnYXN4J10gPSAnYXVkaW8veC1tcy1hc3gn # CiAgTWltZVR5cGVbJ2F1J10gPSAnYXVkaW8veC11bGF3JwogIE1pbWVUeXBl # WydhdmknXSA9ICd2aWRlby94LW1zdmlkZW8nCiAgTWltZVR5cGVbJ2F3J10g # PSAnYXBwbGljYXRpb24veC1hcHBsaXgtd29yZCcKICBNaW1lVHlwZVsnYmFr # J10gPSAnYXBwbGljYXRpb24veC1iYWNrdXAnCiAgTWltZVR5cGVbJ2JjcGlv # J10gPSAnYXBwbGljYXRpb24veC1iY3BpbycKICBNaW1lVHlwZVsnYmRmJ10g # PSAnYXBwbGljYXRpb24veC1mb250LWJkZicKICBNaW1lVHlwZVsnYmliJ10g # PSAndGV4dC9iaWInCiAgTWltZVR5cGVbJ2JpbiddID0gJ2FwcGxpY2F0aW9u # L29jdGV0LXN0cmVhbScKICBNaW1lVHlwZVsnYmxlbmQnXSA9ICdhcHBsaWNh # dGlvbi94LWJsZW5kZXInCiAgTWltZVR5cGVbJ2JsZW5kZXInXSA9ICdhcHBs # aWNhdGlvbi94LWJsZW5kZXInCiAgTWltZVR5cGVbJ2JtcCddID0gJ2ltYWdl # L2JtcCcKICBNaW1lVHlwZVsnYnonXSA9ICdhcHBsaWNhdGlvbi94LWJ6aXAn # CiAgTWltZVR5cGVbJ2J6MiddID0gJ2FwcGxpY2F0aW9uL3gtYnppcCcKICBN # aW1lVHlwZVsnYyddID0gJ3RleHQveC1jJwogIE1pbWVUeXBlWydjKysnXSA9 # ICd0ZXh0L3gtYysrJwogIE1pbWVUeXBlWydjYyddID0gJ3RleHQveC1jKysn # CiAgTWltZVR5cGVbJ2NkZiddID0gJ2FwcGxpY2F0aW9uL3gtbmV0Y2RmJwog # IE1pbWVUeXBlWydjZHInXSA9ICdhcHBsaWNhdGlvbi92bmQuY29yZWwtZHJh # dycKICBNaW1lVHlwZVsnY2dpJ10gPSAnYXBwbGljYXRpb24veC1jZ2knCiAg # TWltZVR5cGVbJ2NnbSddID0gJ2ltYWdlL2NnbScKICBNaW1lVHlwZVsnY2xh # c3MnXSA9ICdhcHBsaWNhdGlvbi94LWphdmEtYnl0ZS1jb2RlJwogIE1pbWVU # eXBlWydjbHMnXSA9ICd0ZXh0L3gtdGV4JwogIE1pbWVUeXBlWydjcGlvJ10g # PSAnYXBwbGljYXRpb24veC1jcGlvJwogIE1pbWVUeXBlWydjcHAnXSA9ICd0 # ZXh0L3gtYysrJwogIE1pbWVUeXBlWydjc2gnXSA9ICd0ZXh0L3gtY3NoJwog # IE1pbWVUeXBlWydjc3MnXSA9ICd0ZXh0L2NzcycKICBNaW1lVHlwZVsnY3N2 # J10gPSAndGV4dC94LWNvbW1hLXNlcGFyYXRlZC12YWx1ZXMnCiAgTWltZVR5 # cGVbJ2RhdCddID0gJ3ZpZGVvL21wZWcnCiAgTWltZVR5cGVbJ2RiZiddID0g # J2FwcGxpY2F0aW9uL3gteGJhc2UnCiAgTWltZVR5cGVbJ2RjJ10gPSAnYXBw # bGljYXRpb24veC1kYy1yb20nCiAgTWltZVR5cGVbJ2RjbCddID0gJ3RleHQv # eC1kY2wnCiAgTWltZVR5cGVbJ2RjbSddID0gJ2ltYWdlL3gtZGNtJwogIE1p # bWVUeXBlWydkZWInXSA9ICdhcHBsaWNhdGlvbi94LWRlYicKICBNaW1lVHlw # ZVsnZGVza3RvcCddID0gJ2FwcGxpY2F0aW9uL3gtZ25vbWUtYXBwLWluZm8n # CiAgTWltZVR5cGVbJ2RpYSddID0gJ2FwcGxpY2F0aW9uL3gtZGlhLWRpYWdy # YW0nCiAgTWltZVR5cGVbJ2RpZmYnXSA9ICd0ZXh0L3gtcGF0Y2gnCiAgTWlt # ZVR5cGVbJ2RqdiddID0gJ2ltYWdlL3ZuZC5kanZ1JwogIE1pbWVUeXBlWydk # anZ1J10gPSAnaW1hZ2Uvdm5kLmRqdnUnCiAgTWltZVR5cGVbJ2RvYyddID0g # J2FwcGxpY2F0aW9uL21zd29yZCcKICBNaW1lVHlwZVsnZHNsJ10gPSAndGV4 # dC94LWRzbCcKICBNaW1lVHlwZVsnZHRkJ10gPSAndGV4dC94LWR0ZCcKICBN # aW1lVHlwZVsnZHZpJ10gPSAnYXBwbGljYXRpb24veC1kdmknCiAgTWltZVR5 # cGVbJ2R3ZyddID0gJ2ltYWdlL3ZuZC5kd2cnCiAgTWltZVR5cGVbJ2R4Zidd # ID0gJ2ltYWdlL3ZuZC5keGYnCiAgTWltZVR5cGVbJ2VsJ10gPSAndGV4dC94 # LWVtYWNzLWxpc3AnCiAgTWltZVR5cGVbJ2VtZiddID0gJ2ltYWdlL3gtZW1m # JwogIE1pbWVUeXBlWydlcHMnXSA9ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0 # JwogIE1pbWVUeXBlWydldGhlbWUnXSA9ICdhcHBsaWNhdGlvbi94LWUtdGhl # bWUnCiAgTWltZVR5cGVbJ2V0eCddID0gJ3RleHQveC1zZXRleHQnCiAgTWlt # ZVR5cGVbJ2V4ZSddID0gJ2FwcGxpY2F0aW9uL3gtbXMtZG9zLWV4ZWN1dGFi # bGUnCiAgTWltZVR5cGVbJ2V6J10gPSAnYXBwbGljYXRpb24vYW5kcmV3LWlu # c2V0JwogIE1pbWVUeXBlWydmJ10gPSAndGV4dC94LWZvcnRyYW4nCiAgTWlt # ZVR5cGVbJ2ZpZyddID0gJ2ltYWdlL3gteGZpZycKICBNaW1lVHlwZVsnZml0 # cyddID0gJ2ltYWdlL3gtZml0cycKICBNaW1lVHlwZVsnZmxhYyddID0gJ2F1 # ZGlvL3gtZmxhYycKICBNaW1lVHlwZVsnZmxjJ10gPSAndmlkZW8veC1mbGMn # CiAgTWltZVR5cGVbJ2ZsaSddID0gJ3ZpZGVvL3gtZmxpJwogIE1pbWVUeXBl # WydnYiddID0gJ2FwcGxpY2F0aW9uL3gtZ2FtZWJveS1yb20nCiAgTWltZVR5 # cGVbJ2djaGVtcGFpbnQnXSA9ICdhcHBsaWNhdGlvbi94LWdjaGVtcGFpbnQn # CiAgTWltZVR5cGVbJ2djcmQnXSA9ICd0ZXh0L3gtdmNhcmQnCiAgTWltZVR5 # cGVbJ2djcnlzdGFsJ10gPSAnYXBwbGljYXRpb24veC1nY3J5c3RhbCcKICBN # aW1lVHlwZVsnZ2VtJ10gPSAndGV4dC94LXJ1YnlnZW0nCiAgTWltZVR5cGVb # J2dlbiddID0gJ2FwcGxpY2F0aW9uL3gtZ2VuZXNpcy1yb20nCiAgTWltZVR5 # cGVbJ2dnJ10gPSAnYXBwbGljYXRpb24veC1zbXMtcm9tJwogIE1pbWVUeXBl # WydnaWYnXSA9ICdpbWFnZS9naWYnCiAgTWltZVR5cGVbJ2dsYWRlJ10gPSAn # YXBwbGljYXRpb24veC1nbGFkZScKICBNaW1lVHlwZVsnZ25jJ10gPSAnYXBw # bGljYXRpb24veC1nbnVjYXNoJwogIE1pbWVUeXBlWydnbnVjYXNoJ10gPSAn # YXBwbGljYXRpb24veC1nbnVjYXNoJwogIE1pbWVUeXBlWydnbnVtZXJpYydd # ID0gJ2FwcGxpY2F0aW9uL3gtZ251bWVyaWMnCiAgTWltZVR5cGVbJ2dyYXkn # XSA9ICdpbWFnZS94LWdyYXknCiAgTWltZVR5cGVbJ2d0YXInXSA9ICdhcHBs # aWNhdGlvbi94LWd0YXInCiAgTWltZVR5cGVbJ2d6J10gPSAnYXBwbGljYXRp # b24veC1nemlwJwogIE1pbWVUeXBlWydoJ10gPSAndGV4dC94LWMtaGVhZGVy # JwogIE1pbWVUeXBlWydoKysnXSA9ICd0ZXh0L3gtYy1oZWFkZXInCiAgTWlt # ZVR5cGVbJ2hkZiddID0gJ2FwcGxpY2F0aW9uL3gtaGRmJwogIE1pbWVUeXBl # WydobGxzJ10gPSAndGV4dC94LWhsbGFwaXNjcmlwdCcKICBNaW1lVHlwZVsn # aHBwJ10gPSAndGV4dC94LWMtaGVhZGVyJwogIE1pbWVUeXBlWydocyddID0g # J3RleHQveC1oYXNrZWxsJwogIE1pbWVUeXBlWydodG0nXSA9ICd0ZXh0L2h0 # bWwnCiAgTWltZVR5cGVbJ2h0bWwnXSA9ICd0ZXh0L2h0bWwnCiAgTWltZVR5 # cGVbJ2ljYiddID0gJ2ltYWdlL3gtaWNiJwogIE1pbWVUeXBlWydpY28nXSA9 # ICdpbWFnZS94LWljbycKICBNaW1lVHlwZVsnaWNzJ10gPSAndGV4dC9jYWxl # bmRhcicKICBNaW1lVHlwZVsnaWRsJ10gPSAndGV4dC94LWlkbCcKICBNaW1l # VHlwZVsnaWVmJ10gPSAnaW1hZ2UvaWVmJwogIE1pbWVUeXBlWydpZmYnXSA9 # ICdpbWFnZS94LWlmZicKICBNaW1lVHlwZVsnaWxibSddID0gJ2ltYWdlL3gt # aWxibScKICBNaW1lVHlwZVsnaXNvJ10gPSAnYXBwbGljYXRpb24veC1pc28t # aW1hZ2UnCiAgTWltZVR5cGVbJ2l0J10gPSAnYXVkaW8veC1pdCcKICBNaW1l # VHlwZVsnamFyJ10gPSAnYXBwbGljYXRpb24veC1qYXZhLWFyY2hpdmUnCiAg # TWltZVR5cGVbJ2phdmEnXSA9ICd0ZXh0L3gtamF2YScKICBNaW1lVHlwZVsn # anBlJ10gPSAnaW1hZ2UvanBlZycKICBNaW1lVHlwZVsnanBlZyddID0gJ2lt # YWdlL2pwZWcnCiAgTWltZVR5cGVbJ2pwZyddID0gJ2ltYWdlL2pwZWcnCiAg # TWltZVR5cGVbJ2pwciddID0gJ2FwcGxpY2F0aW9uL3gtamJ1aWxkZXItcHJv # amVjdCcKICBNaW1lVHlwZVsnanB4J10gPSAnYXBwbGljYXRpb24veC1qYnVp # bGRlci1wcm9qZWN0JwogIE1pbWVUeXBlWydqcyddID0gJ3RleHQveC1qYXZh # c2NyaXB0JwogIE1pbWVUeXBlWydrZGVsbmsnXSA9ICdhcHBsaWNhdGlvbi94 # LWtkZS1hcHAtaW5mbycKICBNaW1lVHlwZVsna2lsJ10gPSAnYXBwbGljYXRp # b24veC1raWxsdXN0cmF0b3InCiAgTWltZVR5cGVbJ2twciddID0gJ2FwcGxp # Y2F0aW9uL3gta3ByZXNlbnRlcicKICBNaW1lVHlwZVsna3NwJ10gPSAnYXBw # bGljYXRpb24veC1rc3ByZWFkJwogIE1pbWVUeXBlWydrd2QnXSA9ICdhcHBs # aWNhdGlvbi94LWt3b3JkJwogIE1pbWVUeXBlWydsYSddID0gJ2FwcGxpY2F0 # aW9uL3gtc2hhcmVkLWxpYnJhcnktbGEnCiAgTWltZVR5cGVbJ2xoYSddID0g # J2FwcGxpY2F0aW9uL3gtbGhhJwogIE1pbWVUeXBlWydsaHMnXSA9ICd0ZXh0 # L3gtbGl0ZXJhdGUtaGFza2VsbCcKICBNaW1lVHlwZVsnbGh6J10gPSAnYXBw # bGljYXRpb24veC1saHonCiAgTWltZVR5cGVbJ2xvJ10gPSAnYXBwbGljYXRp # b24veC1vYmplY3QtZmlsZScKICBNaW1lVHlwZVsnbHR4J10gPSAndGV4dC94 # LXRleCcKICBNaW1lVHlwZVsnbHdvJ10gPSAnaW1hZ2UveC1sd28nCiAgTWlt # ZVR5cGVbJ2x3b2InXSA9ICdpbWFnZS94LWx3bycKICBNaW1lVHlwZVsnbHdz # J10gPSAnaW1hZ2UveC1sd3MnCiAgTWltZVR5cGVbJ2x5eCddID0gJ3RleHQv # eC1seXgnCiAgTWltZVR5cGVbJ20nXSA9ICd0ZXh0L3gtb2JqYycKICBNaW1l # VHlwZVsnbTN1J10gPSAnYXVkaW8veC1tcGVndXJsJwogIE1pbWVUeXBlWydt # NGEnXSA9ICdhdWRpby94LW00YScKICBNaW1lVHlwZVsnbWFuJ10gPSAndGV4 # dC94LXRyb2ZmLW1hbicKICBNaW1lVHlwZVsnbWQnXSA9ICdhcHBsaWNhdGlv # bi94LWdlbmVzaXMtcm9tJwogIE1pbWVUeXBlWydtZSddID0gJ3RleHQveC10 # cm9mZi1tZScKICBNaW1lVHlwZVsnbWdwJ10gPSAnYXBwbGljYXRpb24veC1t # YWdpY3BvaW50JwogIE1pbWVUeXBlWydtaWQnXSA9ICdhdWRpby94LW1pZGkn # CiAgTWltZVR5cGVbJ21pZGknXSA9ICdhdWRpby94LW1pZGknCiAgTWltZVR5 # cGVbJ21pZiddID0gJ2FwcGxpY2F0aW9uL3gtbWlmJwogIE1pbWVUeXBlWydt # aWZmJ10gPSAnaW1hZ2UveC1taWZmJwogIE1pbWVUeXBlWydtbSddID0gJ3Rl # eHQveC10cm9mZi1tbScKICBNaW1lVHlwZVsnbW1sJ10gPSAndGV4dC9tYXRo # bWwnCiAgTWltZVR5cGVbJ21vZCddID0gJ2F1ZGlvL3gtbW9kJwogIE1pbWVU # eXBlWydtb3YnXSA9ICd2aWRlby9xdWlja3RpbWUnCiAgTWltZVR5cGVbJ21v # dmllJ10gPSAndmlkZW8veC1zZ2ktbW92aWUnCiAgTWltZVR5cGVbJ21wMSdd # ID0gJ2F1ZGlvL21wZWcnCiAgTWltZVR5cGVbJ21wMiddID0gJ3ZpZGVvL21w # ZWcnCiAgTWltZVR5cGVbJ21wMyddID0gJ2F1ZGlvL21wZWcnCiAgTWltZVR5 # cGVbJ21wZSddID0gJ3ZpZGVvL21wZWcnCiAgTWltZVR5cGVbJ21wZWcnXSA9 # ICd2aWRlby9tcGVnJwogIE1pbWVUeXBlWydtcGcnXSA9ICd2aWRlby9tcGVn # JwogIE1pbWVUeXBlWydtcnAnXSA9ICdhcHBsaWNhdGlvbi94LW1ycHJvamVj # dCcKICBNaW1lVHlwZVsnbXJwcm9qZWN0J10gPSAnYXBwbGljYXRpb24veC1t # cnByb2plY3QnCiAgTWltZVR5cGVbJ21zJ10gPSAndGV4dC94LXRyb2ZmLW1z # JwogIE1pbWVUeXBlWydtc3gnXSA9ICdhcHBsaWNhdGlvbi94LW1zeC1yb20n # CiAgTWltZVR5cGVbJ242NCddID0gJ2FwcGxpY2F0aW9uL3gtbjY0LXJvbScK # ICBNaW1lVHlwZVsnbmMnXSA9ICdhcHBsaWNhdGlvbi94LW5ldGNkZicKICBN # aW1lVHlwZVsnbmVzJ10gPSAnYXBwbGljYXRpb24veC1uZXMtcm9tJwogIE1p # bWVUeXBlWyduc3YnXSA9ICd2aWRlby94LW5zdicKICBNaW1lVHlwZVsnbydd # ID0gJ2FwcGxpY2F0aW9uL3gtb2JqZWN0LWZpbGUnCiAgTWltZVR5cGVbJ29k # YSddID0gJ2FwcGxpY2F0aW9uL29kYScKICBNaW1lVHlwZVsnb2dnJ10gPSAn # YXBwbGljYXRpb24vb2dnJwogIE1pbWVUeXBlWydvbGVvJ10gPSAnYXBwbGlj # YXRpb24veC1vbGVvJwogIE1pbWVUeXBlWydwJ10gPSAndGV4dC94LXBhc2Nh # bCcKICBNaW1lVHlwZVsncGFsbSddID0gJ2ltYWdlL3gtcGFsbScKICBNaW1l # VHlwZVsncGFzJ10gPSAndGV4dC94LXBhc2NhbCcKICBNaW1lVHlwZVsncGFz # Y2FsJ10gPSAndGV4dC94LXBhc2NhbCcKICBNaW1lVHlwZVsncGF0Y2gnXSA9 # ICd0ZXh0L3gtcGF0Y2gnCiAgTWltZVR5cGVbJ3BibSddID0gJ2ltYWdlL3gt # cG9ydGFibGUtYml0bWFwJwogIE1pbWVUeXBlWydwY2QnXSA9ICdpbWFnZS94 # LXBob3RvLWNkJwogIE1pbWVUeXBlWydwY2YnXSA9ICdhcHBsaWNhdGlvbi94 # LWZvbnQtcGNmJwogIE1pbWVUeXBlWydwY3QnXSA9ICdpbWFnZS94LXBpY3Qn # CiAgTWltZVR5cGVbJ3BjeCddID0gJ2ltYWdlL3gtcGN4JwogIE1pbWVUeXBl # WydwZGInXSA9ICdhcHBsaWNhdGlvbi94LXBhbG0tZGF0YWJhc2UnCiAgTWlt # ZVR5cGVbJ3BkZiddID0gJ2FwcGxpY2F0aW9uL3BkZicKICBNaW1lVHlwZVsn # cGVybCddID0gJ3RleHQveC1wZXJsJwogIE1pbWVUeXBlWydwZmEnXSA9ICdh # cHBsaWNhdGlvbi94LWZvbnQtdHlwZTEnCiAgTWltZVR5cGVbJ3BmYiddID0g # J2FwcGxpY2F0aW9uL3gtZm9udC10eXBlMScKICBNaW1lVHlwZVsncGdtJ10g # PSAnaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwJwogIE1pbWVUeXBlWydwZ24n # XSA9ICdhcHBsaWNhdGlvbi94LWNoZXNzLXBnbicKICBNaW1lVHlwZVsncGdw # J10gPSAnYXBwbGljYXRpb24vcGdwJwogIE1pbWVUeXBlWydwaHAnXSA9ICdh # cHBsaWNhdGlvbi94LXBocCcKICBNaW1lVHlwZVsncGhwMyddID0gJ2FwcGxp # Y2F0aW9uL3gtcGhwJwogIE1pbWVUeXBlWydwaHA0J10gPSAnYXBwbGljYXRp # b24veC1waHAnCiAgTWltZVR5cGVbJ3BpY3QnXSA9ICdpbWFnZS94LXBpY3Qn # CiAgTWltZVR5cGVbJ3BsJ10gPSAndGV4dC94LXBlcmwnCiAgTWltZVR5cGVb # J3BscyddID0gJ2F1ZGlvL3gtc2NwbHMnCiAgTWltZVR5cGVbJ3BtJ10gPSAn # dGV4dC94LXBlcmwnCiAgTWltZVR5cGVbJ3BuZyddID0gJ2ltYWdlL3BuZycK # ICBNaW1lVHlwZVsncG5tJ10gPSAnaW1hZ2UveC1wb3J0YWJsZS1hbnltYXAn # CiAgTWltZVR5cGVbJ3BvJ10gPSAndGV4dC94LXBvJwogIE1pbWVUeXBlWydw # cCddID0gJ3RleHQveC1wYXNjYWwnCiAgTWltZVR5cGVbJ3BwbSddID0gJ2lt # YWdlL3gtcG9ydGFibGUtcGl4bWFwJwogIE1pbWVUeXBlWydwcHMnXSA9ICdh # cHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcKICBNaW1lVHlwZVsncHB0 # J10gPSAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnCiAgTWltZVR5 # cGVbJ3BzJ10gPSAnYXBwbGljYXRpb24vcG9zdHNjcmlwdCcKICBNaW1lVHlw # ZVsncHNkJ10gPSAnaW1hZ2UveC1wc2QnCiAgTWltZVR5cGVbJ3BzZiddID0g # J2FwcGxpY2F0aW9uL3gtZm9udC1saW51eC1wc2YnCiAgTWltZVR5cGVbJ3Bz # aWQnXSA9ICdhdWRpby9wcnMuc2lkJwogIE1pbWVUeXBlWydweSddID0gJ3Rl # eHQveC1weXRob24nCiAgTWltZVR5cGVbJ3B5YyddID0gJ2FwcGxpY2F0aW9u # L3gtcHl0aG9uLWJ5dGUtY29kZScKICBNaW1lVHlwZVsncWlmJ10gPSAnYXBw # bGljYXRpb24vcWlmJwogIE1pbWVUeXBlWydxdCddID0gJ3ZpZGVvL3F1aWNr # dGltZScKICBNaW1lVHlwZVsncmEnXSA9ICdhdWRpby94LXJlYWwtYXVkaW8n # CiAgTWltZVR5cGVbJ3JhbSddID0gJ2F1ZGlvL3gtcG4tcmVhbGF1ZGlvJwog # IE1pbWVUeXBlWydyYXInXSA9ICdhcHBsaWNhdGlvbi94LXJhcicKICBNaW1l # VHlwZVsncmFzJ10gPSAnaW1hZ2UveC1jbXUtcmFzdGVyJwogIE1pbWVUeXBl # WydyYiddID0gJ3RleHQveC1ydWJ5JwogIE1pbWVUeXBlWydyYmEnXSA9ICd0 # ZXh0L3gtcnVieScKICBNaW1lVHlwZVsncmJ3J10gPSAndGV4dC94LXJ1Ynkn # CiAgTWltZVR5cGVbJ3JlaiddID0gJ2FwcGxpY2F0aW9uL3gtcmVqZWN0Jwog # IE1pbWVUeXBlWydyZ2InXSA9ICdpbWFnZS94LXJnYicKICBNaW1lVHlwZVsn # cm0nXSA9ICdhdWRpby94LXJlYWwtYXVkaW8nCiAgTWltZVR5cGVbJ3JvZmYn # XSA9ICd0ZXh0L3gtdHJvZmYnCiAgTWltZVR5cGVbJ3JwbSddID0gJ2FwcGxp # Y2F0aW9uL3gtcnBtJwogIE1pbWVUeXBlWydydGYnXSA9ICdhcHBsaWNhdGlv # bi9ydGYnCiAgTWltZVR5cGVbJ3J0eCddID0gJ3RleHQvcmljaHRleHQnCiAg # TWltZVR5cGVbJ3J1YnknXSA9ICd0ZXh0L3gtcnVieScKICBNaW1lVHlwZVsn # cnVieXcnXSA9ICd0ZXh0L3gtcnVieScKICBNaW1lVHlwZVsncnYnXSA9ICdh # dWRpby94LXJlYWwtYXVkaW8nCiAgTWltZVR5cGVbJ3MnXSA9ICd0ZXh0L3gt # YXNtJwogIE1pbWVUeXBlWydzM20nXSA9ICdhdWRpby94LXMzbScKICBNaW1l # VHlwZVsnc2NtJ10gPSAndGV4dC94LXNjaGVtZScKICBNaW1lVHlwZVsnc2Rh # J10gPSAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5kcmF3JwogIE1p # bWVUeXBlWydzZGMnXSA9ICdhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9u # LmNhbGMnCiAgTWltZVR5cGVbJ3NkZCddID0gJ2FwcGxpY2F0aW9uL3ZuZC5z # dGFyZGl2aXNpb24uaW1wcmVzcycKICBNaW1lVHlwZVsnc2RwJ10gPSAnYXBw # bGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5pbXByZXNzJwogIE1pbWVUeXBl # WydzZHMnXSA9ICdhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmNoYXJ0 # JwogIE1pbWVUeXBlWydzZHcnXSA9ICdhcHBsaWNhdGlvbi92bmQuc3RhcmRp # dmlzaW9uLndyaXRlcicKICBNaW1lVHlwZVsnc2dpJ10gPSAnaW1hZ2UveC1z # Z2knCiAgTWltZVR5cGVbJ3NnbCddID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdGFy # ZGl2aXNpb24ud3JpdGVyJwogIE1pbWVUeXBlWydzZ20nXSA9ICd0ZXh0L3Nn # bWwnCiAgTWltZVR5cGVbJ3NnbWwnXSA9ICd0ZXh0L3NnbWwnCiAgTWltZVR5 # cGVbJ3NoJ10gPSAndGV4dC94LXNoJwogIE1pbWVUeXBlWydzaGFyJ10gPSAn # YXBwbGljYXRpb24veC1zaGFyJwogIE1pbWVUeXBlWydzaWQnXSA9ICdhdWRp # by9wcnMuc2lkJwogIE1pbWVUeXBlWydzbGsnXSA9ICd0ZXh0L3NwcmVhZHNo # ZWV0JwogIE1pbWVUeXBlWydzbWQnXSA9ICdhcHBsaWNhdGlvbi92bmQuc3Rh # cmRpdmlzaW9uLm1haWwnCiAgTWltZVR5cGVbJ3NtZiddID0gJ2FwcGxpY2F0 # aW9uL3ZuZC5zdGFyZGl2aXNpb24ubWF0aCcKICBNaW1lVHlwZVsnc21pJ10g # PSAnYXBwbGljYXRpb24veC1zbWlsJwogIE1pbWVUeXBlWydzbWlsJ10gPSAn # YXBwbGljYXRpb24veC1zbWlsJwogIE1pbWVUeXBlWydzbWwnXSA9ICdhcHBs # aWNhdGlvbi94LXNtaWwnCiAgTWltZVR5cGVbJ3NtcyddID0gJ2FwcGxpY2F0 # aW9uL3gtc21zLXJvbScKICBNaW1lVHlwZVsnc25kJ10gPSAnYXVkaW8vYmFz # aWMnCiAgTWltZVR5cGVbJ3NvJ10gPSAnYXBwbGljYXRpb24veC1zaGFyZWQt # bGlicmFyeScKICBNaW1lVHlwZVsnc3BkJ10gPSAnYXBwbGljYXRpb24veC1m # b250LXNwZWVkbycKICBNaW1lVHlwZVsnc3FsJ10gPSAndGV4dC94LXNxbCcK # ICBNaW1lVHlwZVsnc3JjJ10gPSAnYXBwbGljYXRpb24veC13YWlzLXNvdXJj # ZScKICBNaW1lVHlwZVsnc3RjJ10gPSAnYXBwbGljYXRpb24vdm5kLnN1bi54 # bWwuY2FsYy50ZW1wbGF0ZScKICBNaW1lVHlwZVsnc3RkJ10gPSAnYXBwbGlj # YXRpb24vdm5kLnN1bi54bWwuZHJhdy50ZW1wbGF0ZScKICBNaW1lVHlwZVsn # c3RpJ10gPSAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwuaW1wcmVzcy50ZW1w # bGF0ZScKICBNaW1lVHlwZVsnc3RtJ10gPSAnYXVkaW8veC1zdG0nCiAgTWlt # ZVR5cGVbJ3N0dyddID0gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRl # ci50ZW1wbGF0ZScKICBNaW1lVHlwZVsnc3R5J10gPSAndGV4dC94LXRleCcK # ICBNaW1lVHlwZVsnc3VuJ10gPSAnaW1hZ2UveC1zdW4tcmFzdGVyJwogIE1p # bWVUeXBlWydzdjRjcGlvJ10gPSAnYXBwbGljYXRpb24veC1zdjRjcGlvJwog # IE1pbWVUeXBlWydzdjRjcmMnXSA9ICdhcHBsaWNhdGlvbi94LXN2NGNyYycK # ICBNaW1lVHlwZVsnc3ZnJ10gPSAnaW1hZ2Uvc3ZnK3htbCcKICBNaW1lVHlw # ZVsnc3ZneiddID0gJ2ltYWdlL3N2Zyt4bWwnCiAgTWltZVR5cGVbJ3N3Zidd # ID0gJ2FwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoJwogIE1pbWVUeXBl # WydzeGMnXSA9ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjJwogIE1p # bWVUeXBlWydzeGQnXSA9ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5kcmF3 # JwogIE1pbWVUeXBlWydzeGcnXSA9ICdhcHBsaWNhdGlvbi92bmQuc3VuLnht # bC53cml0ZXIuZ2xvYmFsJwogIE1pbWVUeXBlWydzeGknXSA9ICdhcHBsaWNh # dGlvbi92bmQuc3VuLnhtbC5pbXByZXNzJwogIE1pbWVUeXBlWydzeG0nXSA9 # ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5tYXRoJwogIE1pbWVUeXBlWydz # eHcnXSA9ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC53cml0ZXInCiAgTWlt # ZVR5cGVbJ3N5bGsnXSA9ICd0ZXh0L3NwcmVhZHNoZWV0JwogIE1pbWVUeXBl # Wyd0J10gPSAndGV4dC94LXRyb2ZmJwogIE1pbWVUeXBlWyd0YXInXSA9ICdh # cHBsaWNhdGlvbi94LXRhcicKICBNaW1lVHlwZVsndGNsJ10gPSAndGV4dC94 # LXRjbCcKICBNaW1lVHlwZVsndGV4J10gPSAndGV4dC94LXRleCcKICBNaW1l # VHlwZVsndGV4aSddID0gJ3RleHQveC10ZXhpbmZvJwogIE1pbWVUeXBlWyd0 # ZXhpbmZvJ10gPSAndGV4dC94LXRleGluZm8nCiAgTWltZVR5cGVbJ3RnYSdd # ID0gJ2ltYWdlL3gtdGdhJwogIE1pbWVUeXBlWyd0Z3onXSA9ICdhcHBsaWNh # dGlvbi94LWNvbXByZXNzZWQtdGFyJwogIE1pbWVUeXBlWyd0aGVtZSddID0g # J2FwcGxpY2F0aW9uL3gtdGhlbWUnCiAgTWltZVR5cGVbJ3RpZiddID0gJ2lt # YWdlL3RpZmYnCiAgTWltZVR5cGVbJ3RpZmYnXSA9ICdpbWFnZS90aWZmJwog # IE1pbWVUeXBlWyd0b3JyZW50J10gPSAnYXBwbGljYXRpb24veC1iaXR0b3Jy # ZW50JwogIE1pbWVUeXBlWyd0ciddID0gJ3RleHQveC10cm9mZicKICBNaW1l # VHlwZVsndHN2J10gPSAndGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcycKICBN # aW1lVHlwZVsndHRjJ10gPSAnYXBwbGljYXRpb24veC1mb250LXR0ZicKICBN # aW1lVHlwZVsndHRmJ10gPSAnYXBwbGljYXRpb24veC1mb250LXR0ZicKICBN # aW1lVHlwZVsndHh0J10gPSAndGV4dC9wbGFpbicKICBNaW1lVHlwZVsndXN0 # YXInXSA9ICdhcHBsaWNhdGlvbi94LXVzdGFyJwogIE1pbWVUeXBlWyd2Y2Yn # XSA9ICd0ZXh0L3gtdmNhbGVuZGFyJwogIE1pbWVUeXBlWyd2Y3MnXSA9ICd0 # ZXh0L3gtdmNhbGVuZGFyJwogIE1pbWVUeXBlWyd2aSddID0gJ3RleHQveC12 # aScKICBNaW1lVHlwZVsndmltJ10gPSAndGV4dC94LXZpJwogIE1pbWVUeXBl # Wyd2aXYnXSA9ICd2aWRlby92bmQudml2bycKICBNaW1lVHlwZVsndml2bydd # ID0gJ3ZpZGVvL3ZuZC52aXZvJwogIE1pbWVUeXBlWyd2b2InXSA9ICd2aWRl # by9tcGVnJwogIE1pbWVUeXBlWyd2b2MnXSA9ICdhdWRpby94LXZvYycKICBN # aW1lVHlwZVsndm9yJ10gPSAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lv # bi53cml0ZXInCiAgTWltZVR5cGVbJ3dhdiddID0gJ2F1ZGlvL3gtd2F2Jwog # IE1pbWVUeXBlWyd3YXgnXSA9ICdhdWRpby94LW1zLWFzeCcKICBNaW1lVHlw # ZVsnd2sxJ10gPSAnYXBwbGljYXRpb24vdm5kLmxvdHVzLTEtMi0zJwogIE1p # bWVUeXBlWyd3azMnXSA9ICdhcHBsaWNhdGlvbi92bmQubG90dXMtMS0yLTMn # CiAgTWltZVR5cGVbJ3drNCddID0gJ2FwcGxpY2F0aW9uL3ZuZC5sb3R1cy0x # LTItMycKICBNaW1lVHlwZVsnd2tzJ10gPSAnYXBwbGljYXRpb24vdm5kLmxv # dHVzLTEtMi0zJwogIE1pbWVUeXBlWyd3bWYnXSA9ICdpbWFnZS94LXdtZicK # ICBNaW1lVHlwZVsnd212J10gPSAndmlkZW8veC1tcy13bXYnCiAgTWltZVR5 # cGVbJ3dybCddID0gJ21vZGVsL3ZybWwnCiAgTWltZVR5cGVbJ3d2eCddID0g # J3ZpZGVvL3gtbXMtd3Z4JwogIE1pbWVUeXBlWyd4YWMnXSA9ICdhcHBsaWNh # dGlvbi94LWdudWNhc2gnCiAgTWltZVR5cGVbJ3hiZWwnXSA9ICdhcHBsaWNh # dGlvbi94YmVsJwogIE1pbWVUeXBlWyd4Ym0nXSA9ICdpbWFnZS94LXhiaXRt # YXAnCiAgTWltZVR5cGVbJ3hjZiddID0gJ2ltYWdlL3gteGNmJwogIE1pbWVU # eXBlWyd4aSddID0gJ2F1ZGlvL3gteGknCiAgTWltZVR5cGVbJ3hsYSddID0g # J2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcKICBNaW1lVHlwZVsneGxjJ10g # PSAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJwogIE1pbWVUeXBlWyd4bGQn # XSA9ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnCiAgTWltZVR5cGVbJ3hs # cyddID0gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcKICBNaW1lVHlwZVsn # eGx0J10gPSAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJwogIE1pbWVUeXBl # Wyd4bSddID0gJ2F1ZGlvL3gteG0nCiAgTWltZVR5cGVbJ3htbCddID0gJ3Rl # eHQveG1sJwogIE1pbWVUeXBlWyd4cG0nXSA9ICdpbWFnZS94LXhwaXhtYXAn # CiAgTWltZVR5cGVbJ3h3ZCddID0gJ2ltYWdlL3gteHdpbmRvd2R1bXAnCiAg # TWltZVR5cGVbJ3knXSA9ICd0ZXh0L3gteWFjYycKICBNaW1lVHlwZVsneWFj # YyddID0gJ3RleHQveC15YWNjJwogIE1pbWVUeXBlWyd6J10gPSAnYXBwbGlj # YXRpb24veC1jb21wcmVzcycKICBNaW1lVHlwZVsnemlwJ10gPSAnYXBwbGlj # YXRpb24vemlwJwogIE1pbWVUeXBlWyd6b28nXSA9ICdhcHBsaWNhdGlvbi94 # LXpvbycKZW5kCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRtcC5lYXIy # cnVieXNjcmlwdC5mLjExNTEwLnRhci9ldi9yd2QucmIAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAwMDAwNzU1ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDIwMjUxNgAxMDI1MDMy # MDYxMgAwMTc3NTUAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABlcmlrAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAcmVxdWlyZSAiZXYvcnVieSIKcmVxdWlyZSAiZXYveG1sIgpy # ZXF1aXJlICJldi9uZXQiCnJlcXVpcmUgImV2L2Jyb3dzZXIiCnJlcXVpcmUg # ImV2L3RocmVhZCIKcmVxdWlyZSAibWQ1IgpyZXF1aXJlICJyYmNvbmZpZyIK # CmJlZ2luCiAgcmVxdWlyZSAid2luMzJvbGUiCiAgcmVxdWlyZSAid2luMzIv # cmVnaXN0cnkiCnJlc2N1ZSBMb2FkRXJyb3IKICAkIi5wdXNoICJ3aW4zMm9s # ZS5zbyIKICAkIi5wdXNoICJ3aW4zMi9yZWdpc3RyeS5yYiIKZW5kCgokcndk # X2V4aXQJPSBBUkdWLmluY2x1ZGU/KCItLXJ3ZC1leGl0IikJIyBIYWNrID8/ # PwokcndkX2V4aXQJPSB0cnVlCWlmIGRlZmluZWQ/KFJFUVVJUkUyTElCKQok # cndkX2RlYnVnCT0gKCRyd2RfZGVidWcgb3IgJERFQlVHIG9yIGZhbHNlKQok # cndkX2JvcmRlcgk9ICgkcndkX2JvcmRlciBvciAwKQokcndkX2Rpcgk9IERp # ci5wd2QKJHJ3ZF9maWxlcwk9IEZpbGUuZXhwYW5kX3BhdGgoInJ3ZF9maWxl # cyIsIERpci5wd2QpCiRyd2RfaHRtbAk9IHt9CgpBUkdWLmRlbGV0ZV9pZiBk # byB8YXJnfAogIGFyZyA9fiAvXi0tcndkLS8KZW5kCgpSV0RFbXB0eWxpbmUJ # PSAiLi4uIgoKI21vZHVsZSBSV0QKCnJjZmlsZQk9IG5pbApzCT0gRU5WWyJI # T01FIl0JCTsgcyA9IEZpbGUuZXhwYW5kX3BhdGgoIi5yd2RyYyIsIHMpCXVu # bGVzcyBzLm5pbD8JOyByY2ZpbGUgPSBzCWlmIChub3Qgcy5uaWw/IGFuZCBy # Y2ZpbGUubmlsPyBhbmQgRmlsZS5maWxlPyhzKSkKcwk9IEVOVlsiVVNFUlBS # T0ZJTEUiXQk7IHMgPSBGaWxlLmV4cGFuZF9wYXRoKCJyd2QuY2ZnIiwgcykJ # dW5sZXNzIHMubmlsPwk7IHJjZmlsZSA9IHMJaWYgKG5vdCBzLm5pbD8gYW5k # IHJjZmlsZS5uaWw/IGFuZCBGaWxlLmZpbGU/KHMpKQpzCT0gRU5WWyJ3aW5k # aXIiXQkJOyBzID0gRmlsZS5leHBhbmRfcGF0aCgicndkLmNmZyIsIHMpCXVu # bGVzcyBzLm5pbD8JOyByY2ZpbGUgPSBzCWlmIChub3Qgcy5uaWw/IGFuZCBy # Y2ZpbGUubmlsPyBhbmQgRmlsZS5maWxlPyhzKSkKCkFMCT0gImFsaWduPSds # ZWZ0JyIKQUMJPSAiYWxpZ249J2NlbnRlciciCkFSCT0gImFsaWduPSdyaWdo # dCciClZBCT0gInZhbGlnbj0nbWlkZGxlJyIKCkZvcm1hdAk9ICJcbjwhLS0g # JS0xMHMgJS0xMHMgLS0+XHQiCgp1bmxlc3MgcmNmaWxlLm5pbD8KICBwdXRz # ICJSZWFkaW5nICN7cmNmaWxlfSAuLi4iCgogIEhhc2guZmlsZShyY2ZpbGUp # LmVhY2ggZG8gfGssIHZ8CiAgICBFTlZba10JPSB2CXVubGVzcyBFTlYuaW5j # bHVkZT8oaykKICBlbmQKZW5kCgpFTlZbIlJXREJST1dTRVIiXQk9IChFTlZb # IlJXREJST1dTRVIiXSBvciBkZWZhdWx0YnJvd3Nlcikgb3IgcHV0cyAiTm8g # YnJvd3NlciBmb3VuZC4iCkVOVlsiUldEUE9SVFMiXQkJPSAoRU5WWyJSV0RQ # T1JUUyJdIG9yICI3NzAxLTc3MDkiKQpFTlZbIlJXRFRIRU1FIl0JCT0gKEVO # VlsiUldEVEhFTUUiXSBvciAiREVGQVVMVCIpCgojdHJhcCgiSU5UIikJe3B1 # dHMgIlRlcm1pbmF0aW5nLi4uIiA7IGV4aXR9CgokU0FGRQk9IDIKCmNsYXNz # IElFCiAgZGVmIGluaXRpYWxpemUodXJsKQogICAgQGllID0gV0lOMzJPTEUu # bmV3KCJJbnRlcm5ldEV4cGxvcmVyLkFwcGxpY2F0aW9uIikKICAgIEBldgk9 # IFdJTjMyT0xFX0VWRU5ULm5ldyhAaWUsICJEV2ViQnJvd3NlckV2ZW50czIi # KQoKICAgIEBpZS5uYXZpZ2F0ZSh1cmwpCgogICAgQGllLm1lbnViYXIJCT0g # ZmFsc2UKICAgIEBpZS50b29sYmFyCQk9IGZhbHNlCiAgICBAaWUuYWRkcmVz # c2Jhcgk9IGZhbHNlCiAgICBAaWUuc3RhdHVzYmFyCT0gZmFsc2UKCiAgICBA # aWUudmlzaWJsZQkJPSB0cnVlCgogICAgYXRfZXhpdCBkbwogICAgICBAaWUu # dmlzaWJsZQk9IGZhbHNlCiAgICBlbmQKCiAgICBAZXYub25fZXZlbnQoIk9u # UXVpdCIpIGRvCiAgICAgIFRocmVhZC5tYWluLmV4aXQKICAgIGVuZAoKICAg # IFRocmVhZC5uZXcgZG8KICAgICAgbG9vcCBkbwogICAgICAgIFdJTjMyT0xF # X0VWRU5ULm1lc3NhZ2VfbG9vcAogICAgICBlbmQKICAgIGVuZAogIGVuZApl # bmQKCmNsYXNzIEFycmF5CiAgZGVmIHJ3ZF9vcHRpb25zKGVtcHR5bGluZT1u # aWwpCiAgICBpZiBlbXB0eWxpbmUubmlsPwogICAgICBhCT0gc2VsZgogICAg # ZWxzZQogICAgICBhCT0gW2VtcHR5bGluZV0uY29uY2F0KHNlbGYpCiAgICBl # bmQKCiAgICBhLm51bXNvcnQuY29sbGVjdHt8c3wgIjxvcHRpb24+I3tzLnRv # X3MudG9faHRtbH08L29wdGlvbj4iIH0uam9pbigiXG4iKQogIGVuZAoKICBk # ZWYgcndkX21ldGhvZChtZXRob2QpCiAgICByZXMJPSAiIgoKICAgIHNlbGYu # ZWFjaCBkbyB8c3wKICAgICAgcwkJPSBzLmpvaW4oIi8iKQlpZiBzLmtpbmRf # b2Y/KEFycmF5KQogICAgICBzMgk9IHMuZHVwCiAgICAgIHMyWzAuLjBdCT0g # czJbMC4uMF0udXBjYXNlCiAgICAgIHJlcwk9IHJlcyArICI8cCBhbGlnbj0n # bGVmdCc+PGEgYWN0aW9uPScje21ldGhvZH0vI3tzLnRvX2h0bWx9Jz4je3My # LnRvX2h0bWx9PC9hPjwvcD4iCiAgICBlbmQKCiAgICByZXR1cm4gcmVzCiAg # ZW5kCgogIGRlZiByd2Rfcm93KGtleT1uaWwsIHZhbHVlPW5pbCwgYm9sZD1m # YWxzZSkKICAgIHJlcwk9ICIiCgogICAgcmVzCT0gcmVzICsgIjxyb3cgdmFs # aWduPSd0b3AnPiIKICAgIHJlcwk9IHJlcyArICI8cmFkaW8gbmFtZT0nI3tr # ZXkudG9faHRtbH0nIHZhbHVlPScje3ZhbHVlLnRvX2h0bWx9Jy8+Igl1bmxl # c3Mga2V5Lm5pbD8KICAgIHJlcwk9IHJlcyArIHNlbGYuY29sbGVjdHt8c3wg # IjxwIGFsaWduPScjeyhzLmtpbmRfb2Y/KE51bWVyaWMpIG9yIHMgPX4gL15c # ZCtcLlxkKyQvKSA/ICJyaWdodCIgOiAibGVmdCJ9Jz4jeyI8Yj4iIGlmIGJv # bGR9I3tzLnRvX3MudG9faHRtbH0jeyI8L2I+IiBpZiBib2xkfTwvcD4ifS5q # b2luKCIiKQogICAgcmVzCT0gcmVzICsgIjwvcm93PiIKCiAgICByZXR1cm4g # cmVzCiAgZW5kCgogIGRlZiByd2RfdGFibGUoaGVhZGVycz1uaWwsIGhpZ2hs # aWdodHJvd3M9W10pCiAgICByZXMJPSAiIgoKICAgIGhpZ2hsaWdodHJvd3MJ # PSBbaGlnaGxpZ2h0cm93c10uZmxhdHRlbgoKICAgIG4JPSAtMQoKICAgIHJl # cwk9IHJlcyArICI8dGFibGU+IgogICAgcmVzCT0gcmVzICsgaGVhZGVycy5y # d2Rfcm93KG5pbCwgbmlsLCB0cnVlKQl1bmxlc3MgaGVhZGVycy5uaWw/CiAg # ICByZXMJPSByZXMgKyBzZWxmLmNvbGxlY3R7fGF8IGEucndkX3JvdyhuaWws # IG5pbCwgaGlnaGxpZ2h0cm93cy5pbmNsdWRlPyhuKz0xKSl9LmpvaW4oIiIp # CiAgICByZXMJPSByZXMgKyAiPC90YWJsZT4iCgogICAgcmV0dXJuIHJlcwog # IGVuZAoKICBkZWYgcndkX2hlYWRlcnMoZW1wdHlmaWVsZD1mYWxzZSkKICAg # IHJlcwk9ICIiCgogICAgcmVzCT0gcmVzICsgIjxyb3c+IgogICAgcmVzCT0g # cmVzICsgIjxwLz4iCWlmIGVtcHR5ZmllbGQKICAgIHJlcwk9IHJlcyArIHNl # bGYuY29sbGVjdHt8c3wgIjxwIGFsaWduPSdsZWZ0Jz48Yj4je3MudG9faHRt # bH08L2I+PC9wPiIgfS5qb2luKCIiKQogICAgcmVzCT0gcmVzICsgIjwvcm93 # PiIKCiAgICByZXR1cm4gcmVzCiAgZW5kCgogIGRlZiByd2RfZm9ybShwcmVm # aXgsIHZhbHVlcz1bXSwgdHdvcGFydHM9MCwgb3B0aW9ucz17fSkKICAgIHJl # cwk9IFtdCgogICAgcmVzIDw8ICI8dGFibGU+IgogICAgc2VsZi5lYWNoX2lu # ZGV4IGRvIHxufAogICAgICBuYW1lCT0gIiN7cHJlZml4LnRvX2h0bWx9I3tz # ZWxmW25dLmRvd25jYXNlLnRvX2h0bWx9IgoKICAgICAgcmVzIDw8ICI8cm93 # PiIKICAgICAgcmVzIDw8ICI8cCBhbGlnbj0ncmlnaHQnPiIKICAgICAgcmVz # IDw8ICIje3NlbGZbbl0udG9faHRtbH06IgogICAgICByZXMgPDwgIjwvcD4i # CgogICAgICBpZiBvcHRpb25zLmtleXMuaW5jbHVkZT8oc2VsZltuXSkKICAg # ICAgICByZXMgPDwgIjxzZWxlY3QgbmFtZT0nI3tuYW1lfSc+IgogICAgICAg # IHJlcyA8PCBvcHRpb25zW3NlbGZbbl1dLnJ3ZF9vcHRpb25zKFJXREVtcHR5 # bGluZSkKICAgICAgICByZXMgPDwgIjwvc2VsZWN0PiIKICAgICAgZWxzZQog # ICAgICAgIHMJPSAiIgoKICAgICAgICBzIDw8ICI8dGV4dCBuYW1lPScje25h # bWV9JyIKICAgICAgICBzIDw8ICIgdmFsdWU9JyN7dmFsdWVzW25dLnRvX3Mu # dG9faHRtbH0nIglpZiBuIDwgdmFsdWVzLmxlbmd0aAogICAgICAgIHMgPDwg # Ii8+IgoKICAgICAgICByZXMgPDwgcwogICAgICBlbmQKCiAgICAgIHJlcyA8 # PCAiPC9yb3c+IgoKICAgICAgaWYgdHdvcGFydHMgPiAwIGFuZCBuID09IHR3 # b3BhcnRzLTEKICAgICAgICByZXMgPDwgIjxyb3c+PGVtcHR5Lz48L3Jvdz4i # CiAgICAgIGVuZAogICAgZW5kCiAgICByZXMgPDwgIjwvdGFibGU+IgoKICAg # IHJldHVybiByZXMuam9pbigiXG4iKQogIGVuZAplbmQKCmNsYXNzIEhhc2gK # ICBkZWYgcndkX3RhYmxlKGZpZWxkPW5pbCwgam9pbndpdGg9bmlsLCBoZWFk # ZXJzPW5pbCkKICAgIHJlcwk9IFtdCgogICAgcmVzIDw8ICI8dGFibGU+Igog # ICAgcmVzIDw8IGhlYWRlcnMucndkX2hlYWRlcnMoKG5vdCBmaWVsZC5uaWw/ # KSkJaWYgbm90IGhlYWRlcnMubmlsPwogICAgc2VsZi5rZXlzLm51bXNvcnQu # ZWFjaCBkbyB8a2V5fAogICAgICBrZXkyCT0ga2V5CiAgICAgIHZhbHVlMgk9 # IHNlbGZba2V5XQoKICAgICAga2V5Mgk9IGtleTIuam9pbihqb2lud2l0aCkJ # aWYga2V5Mi5raW5kX29mPyhBcnJheSkKICAgICAgdmFsdWUyCT0gW3ZhbHVl # Ml0JCWlmIHZhbHVlMi5raW5kX29mPyhTdHJpbmcpCgogICAgICByZXMgPDwg # dmFsdWUyLnJ3ZF9yb3coZmllbGQsIGtleTIpCiAgICBlbmQKICAgIHJlcyA8 # PCAiPC90YWJsZT4iCgogICAgcmVzLmpvaW4oIlxuIikKICBlbmQKZW5kCgpj # bGFzcyBFVlRhYmxlCiAgZGVmIHJ3ZF90YWJsZShmaWVsZD1uaWwsIGpvaW53 # aXRoPUBzZXApCiAgICBzdXBlcihmaWVsZCwgam9pbndpdGgsIEBoZWFkZXJz # KQogIGVuZAoKICBkZWYgcndkX2Zvcm0ocHJlZml4PSIiLCBrZXk9bmlsLCB0 # d29wYXJ0cz1mYWxzZSkKICAgIHZhbHVlcwk9IHNlbGZba2V5XQlpZiBub3Qg # a2V5Lm5pbD8KICAgIHZhbHVlcwk9IFtdCQlpZiB2YWx1ZXMubmlsPwogICAg # b3B0aW9ucwk9IHt9CgogICAgaWYgRmlsZS5maWxlPyhvbGRsb2NhdGlvbigi # Y29uc3RyYWludHMudHN2IikpCiAgICAgIHRhYmxlCT0gRmlsZS5iYXNlbmFt # ZShAZmlsZSkuZ3N1YigvXC50c3YkLywgIiIpCgogICAgICBUU1ZGaWxlLm5l # dyhvbGRsb2NhdGlvbigiY29uc3RyYWludHMudHN2IikpLnN1YnNldChbIlRh # YmxlIiwgIkNvbnN0cmFpbnQiXSwgW3RhYmxlLCAia2V5Il0sIFsiQ29sdW1u # IiwgIlZhbHVlIl0pLnZhbHVlcy5lYWNoIGRvIHxjb2x1bW4sIHRhYmxlMnwK # ICAgICAgICBvcHRpb25zW2NvbHVtbl0JPSBUU1ZGaWxlLm5ldyhvbGRsb2Nh # dGlvbigiI3t0YWJsZTJ9LnRzdiIpKS5rZXlzLmNvbGxlY3R7fGF8IGEuam9p # bigiXHQiKX0KICAgICAgZW5kCiAgICBlbmQKCiAgICBAaGVhZGVycy5yd2Rf # Zm9ybShwcmVmaXgsIHZhbHVlcywgdHdvcGFydHMgPyBAa2V5IDogMCwgb3B0 # aW9ucykKICBlbmQKCiAgZGVmIHJ3ZF9tZXRhZGF0YQogICAgcmVzCT0gW10K # CiAgICByZXMgPDwgIjx0YWJsZT4iCiAgICByZXMgPDwgIjxyb3c+IgogICAg # cmVzIDw8ICIgIDxlbXB0eS8+IgogICAgcmVzIDw8ICIgIDx0ZXh0IG5hbWU9 # J2hlYWRlcl9uZXcnIHZhbHVlPScnLz4iCiAgICByZXMgPDwgIjwvcm93PiIK # ICAgIEBoZWFkZXJzLmVhY2hfaW5kZXggZG8gfG58CiAgICAgIHJlcyA8PCAi # PHJvdz4iCiAgICAgIHJlcyA8PCAiICA8dGV4dCBuYW1lPSdoZWFkZXJfI3tu # fV9vbGQnIHZhbHVlPScje0BoZWFkZXJzW25dfScvPiIKICAgICAgcmVzIDw8 # ICIgIDx0ZXh0IG5hbWU9J2hlYWRlcl8je259X25ldycgdmFsdWU9JycvPiIK # ICAgICAgcmVzIDw8ICI8L3Jvdz4iCiAgICBlbmQKICAgIHJlcyA8PCAiPC90 # YWJsZT4iCgogICAgcmV0dXJuIHJlcy5qb2luKCJcbiIpCiAgZW5kCmVuZAoK # Y2xhc3MgT3BlblRhZwogIGRlZiBwcmVjaGlsZHJlbihyZXMsIGJlZm9yZSwg # YWZ0ZXIsIHZhcnNodG1sLCB2YXJzc3RyaW5nLCBzd2l0Y2hlcywgaGVscCwg # b25lb3Jtb3JlZmllbGRzLCBmaXJzdGFjdGlvbiwgdGFicywgdGFiLCBwZGEp # CiAgICBiZWYJPSBiZWZvcmVbLTFdCiAgICByZXMgPDwgRm9ybWF0ICUgWyJC # ZWZvcmUiLCBAc3VidHlwZV0JaWYgKCRyd2RfZGVidWcgYW5kIG5vdCBiZWYu # bmlsPykKICAgIHJlcyA8PCBiZWYJaWYgbm90IGJlZi5uaWw/CgogICAgcmVz # IDw8IEZvcm1hdCAlIFsiUHJlIiwgQHN1YnR5cGVdCWlmICRyd2RfZGVidWcK # CiAgICBhbGlnbgk9IEFDCiAgICBhbGlnbgk9ICJhbGlnbj0nI3tAYXJnc1si # YWxpZ24iXX0nIglpZiBAYXJncy5pbmNsdWRlPygiYWxpZ24iKQoKICAgIHZh # bGlnbgk9IFZBCiAgICB2YWxpZ24JPSAidmFsaWduPScje0BhcmdzWyJ2YWxp # Z24iXX0nIglpZiBAYXJncy5pbmNsdWRlPygidmFsaWduIikKCiAgICB2YWx1 # ZTEJPSAiIgogICAgdmFsdWUxCT0gdmFyc2h0bWxbQGFyZ3NbIm5hbWUiXV0J # aWYgdmFyc2h0bWwuaW5jbHVkZT8oQGFyZ3NbIm5hbWUiXSkKICAgIHZhbHVl # MQk9IEBhcmdzWyJ2YWx1ZSJdCQlpZiBAYXJncy5pbmNsdWRlPygidmFsdWUi # KQoKICAgIHZhbHVlMgk9ICIiCiAgICB2YWx1ZTIJPSB2YXJzc3RyaW5nW0Bh # cmdzWyJuYW1lIl1dCWlmIHZhcnNzdHJpbmcuaW5jbHVkZT8oQGFyZ3NbIm5h # bWUiXSkKICAgIHZhbHVlMgk9IEBhcmdzWyJ2YWx1ZSJdCQlpZiBAYXJncy5p # bmNsdWRlPygidmFsdWUiKQoKICAgIGNlbGxzcGFjaW5nCT0gMwogICAgY2Vs # bHNwYWNpbmcJPSAwCWlmIHBkYQoKICAgIGNhc2UgQHN1YnR5cGUKICAgIHdo # ZW4gImFwcGxpY2F0aW9uIgogICAgd2hlbiAid2luZG93IiwgImhlbHB3aW5k # b3ciCiAgICAgIGFyZ3MJPSBAYXJncy5kZWVwX2R1cAoKICAgICAgYXJnc1si # bm9oZWxwYnV0dG9uIl0JPSAobm90IGhlbHApCgogICAgICB0ZW1wbGF0ZQk9 # ICRyd2RfaHRtbF8xCiAgICAgIHRlbXBsYXRlCT0gJHJ3ZF9odG1sX1BEQV8x # CWlmIHBkYQoKICAgICAgcmVzIDw8ICh0ZW1wbGF0ZSh0ZW1wbGF0ZSwgYXJn # cykpCiAgICB3aGVuICJwIgkJdGhlbiByZXMgPDwgIjxwICN7YWxpZ259PiIK # ICAgIHdoZW4gInByZSIJCXRoZW4gcmVzIDw8ICI8cHJlICN7YWxpZ259PiIK # ICAgIHdoZW4gImJpZyIJCXRoZW4gcmVzIDw8ICI8cCAje2FsaWdufT48Ymln # PiIKICAgIHdoZW4gInNtYWxsIgl0aGVuIHJlcyA8PCAiPHAgI3thbGlnbn0+ # PHNtYWxsPiIKICAgIHdoZW4gImxpc3QiCQl0aGVuIHJlcyA8PCAiPHVsICN7 # YWxpZ259PiIKICAgIHdoZW4gIml0ZW0iCQl0aGVuIHJlcyA8PCAiPGxpICN7 # YWxpZ259PiIKICAgIHdoZW4gImVtcHR5Igl0aGVuIHJlcyA8PCAiPHA+PGJy # PiIKICAgIHdoZW4gImltYWdlIgogICAgICB3aWR0aAk9ICJ3aWR0aD0nI3tA # YXJnc1sid2lkdGgiXX0iCWlmIEBhcmdzLmluY2x1ZGU/KCJ3aWR0aCIpCiAg # ICAgIGhlaWdodAk9ICJoZWlnaHQ9JyN7QGFyZ3NbImhlaWdodCJdfSciCWlm # IEBhcmdzLmluY2x1ZGU/KCJoZWlnaHQiKQoKICAgICAgcmVzIDw8ICI8aW1n # IHNyYz0nI3tAYXJnc1sic3JjIl19JyBhbHQ9JyN7QGFyZ3NbImFsdCJdfScg # I3t3aWR0aH0gI3toZWlnaHR9PiIKICAgIHdoZW4gInByb2dyZXNzYmFyIgog # ICAgICB3aWR0aAk9IDIwMAoKICAgICAgcmVzIDw8ICI8dGFibGU+IgogICAg # ICByZXMgPDwgIiAgPHRyPiIKICAgICAgcmVzIDw8ICIgICAgPHRkIGNvbHNw # YW49JzInPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScje3dpZHRoKzV9Jz48L3RkPiIKICAgICAgcmVzIDw8ICIgIDwvdHI+ # IgogICAgICByZXMgPDwgIiAgPHRyPiIKICAgICAgcmVzIDw8ICIgICAgPHRk # IGJnY29sb3I9JyNEREREREQnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBo # ZWlnaHQ9JzEwJyB3aWR0aD0nI3sod2lkdGgqQGFyZ3NbInZhbHVlIl0udG9f # ZikudG9faX0nPjwvdGQ+IgogICAgICByZXMgPDwgIiAgICA8dGQgYmdjb2xv # cj0nI0VFRUVFRSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0n # MTAnIHdpZHRoPScjeyh3aWR0aCooMS4wLUBhcmdzWyJ2YWx1ZSJdLnRvX2Yp # KS50b19pfSc+PC90ZD4iCiAgICAgIHJlcyA8PCAiICA8L3RyPiIKICAgICAg # cmVzIDw8ICI8L3RhYmxlPiIKICAgIHdoZW4gImJyIgkJdGhlbiByZXMgPDwg # Ijxicj4iCiAgICB3aGVuICJociIJCXRoZW4gcmVzIDw8ICI8aHI+IgogICAg # d2hlbiAiYiIJCXRoZW4gcmVzIDw8ICI8Yj4iCiAgICB3aGVuICJpIgkJdGhl # biByZXMgPDwgIjxpPiIKICAgIHdoZW4gImEiCiAgICAgIGlmIEBhcmdzLmlu # Y2x1ZGU/KCJocmVmIikKICAgICAgICByZXMgPDwgIjxhIGhyZWY9JyN7QGFy # Z3NbImhyZWYiXX0nIHRhcmdldD0nI3tAYXJnc1sidGFyZ2V0Il0gb3IgIl9i # bGFuayJ9Jz4iCiAgICAgIGVsc2UKICAgICAgICByZXMgPDwgIjxhIGhyZWY9 # J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1 # ZT1cIiN7QGFyZ3NbImFjdGlvbiJdfVwiO2RvY3VtZW50LmJvZHlmb3JtLnN1 # Ym1pdCgpOyc+IgogICAgICBlbmQKICAgIHdoZW4gInZlcnRpY2FsIgl0aGVu # IHJlcyA8PCAiPHRhYmxlICN7QUN9IGJvcmRlcj0nI3skcndkX2JvcmRlcn0n # IGNlbGxzcGFjaW5nPScje2NlbGxzcGFjaW5nfScgY2VsbHBhZGRpbmc9JzAn # PiIKICAgIHdoZW4gImhvcml6b250YWwiCXRoZW4gcmVzIDw8ICI8dGFibGUg # I3tBQ30gYm9yZGVyPScjeyRyd2RfYm9yZGVyfScgY2VsbHNwYWNpbmc9JyN7 # Y2VsbHNwYWNpbmd9JyBjZWxscGFkZGluZz0nMCc+PHRyICN7YWxpZ259ICN7 # dmFsaWdufT4iCiAgICB3aGVuICJ0YWJsZSIJdGhlbiByZXMgPDwgIjx0YWJs # ZSAje0FDfSBib3JkZXI9JyN7JHJ3ZF9ib3JkZXJ9JyBjZWxsc3BhY2luZz0n # I3tjZWxsc3BhY2luZ30nIGNlbGxwYWRkaW5nPScwJz4iCiAgICB3aGVuICJy # b3ciCQl0aGVuIHJlcyA8PCAiPHRyICN7YWxpZ259ICN7dmFsaWdufT4iCiAg # ICB3aGVuICJoaWRkZW4iCXRoZW4gcmVzIDw8ICI8cCAje2FsaWdufT48aW5w # dXQgbmFtZT0nI3tAYXJnc1sibmFtZSJdfScgdmFsdWU9JyN7dmFsdWUxfScg # dHlwZT0naGlkZGVuJz4iCiAgICB3aGVuICJ0ZXh0IgogICAgICBtYXhsZW5n # dGgJPSAiIgogICAgICBtYXhsZW5ndGgJPSAibWF4bGVuZ3RoPSclcyciICUg # QGFyZ3NbIm1heGxlbmd0aCJdCWlmIEBhcmdzLmluY2x1ZGU/KCJtYXhsZW5n # dGgiKQogICAgICBzaXplCT0gIiIKICAgICAgc2l6ZQk9ICJzaXplPSclcyci # ICUgQGFyZ3NbInNpemUiXQkJaWYgQGFyZ3MuaW5jbHVkZT8oInNpemUiKQog # ICAgICBzaXplCT0gInNpemU9JyVzJyIgJSAxMAkJCWlmIHBkYQogICAgICBy # ZXMgPDwgIjxwICN7YWxpZ259PjxpbnB1dCBuYW1lPScje0BhcmdzWyJuYW1l # Il19JyB2YWx1ZT0nI3t2YWx1ZTF9JyB0eXBlPSd0ZXh0JyAje21heGxlbmd0 # aH0gI3tzaXplfT4iCiAgICAgIG9uZW9ybW9yZWZpZWxkcwk8PCAidHJ1ZSIK # ICAgIHdoZW4gInRleHRhcmVhIgogICAgICByZXMgPDwgIjxwICN7YWxpZ259 # Pjx0ZXh0YXJlYSBuYW1lPScje0BhcmdzWyJuYW1lIl19JyByb3dzPScyNScg # Y29scz0nODAnPiN7dmFsdWUyLmNybGZ9PC90ZXh0YXJlYT4iCiAgICAgIG9u # ZW9ybW9yZWZpZWxkcwk8PCAidHJ1ZSIKICAgIHdoZW4gInBhc3N3b3JkIgog # ICAgICBtYXhsZW5ndGgJPSAiIgogICAgICBtYXhsZW5ndGgJPSAibWF4bGVu # Z3RoPSclcyciICUgQGFyZ3NbIm1heGxlbmd0aCJdCWlmIEBhcmdzLmluY2x1 # ZGU/KCJtYXhsZW5ndGgiKQogICAgICBzaXplCT0gIiIKICAgICAgc2l6ZQk9 # ICJzaXplPSclcyciICUgMTAJCQlpZiBwZGEKICAgICAgcmVzIDw8ICI8cCAj # e2FsaWdufT48aW5wdXQgbmFtZT0nI3tAYXJnc1sibmFtZSJdfScgdmFsdWU9 # JyN7dmFsdWUxfScgdHlwZT0ncGFzc3dvcmQnICN7bWF4bGVuZ3RofSAje3Np # emV9PiIKICAgICAgb25lb3Jtb3JlZmllbGRzCTw8ICJ0cnVlIgogICAgd2hl # biAiY2hlY2tib3giCiAgICAgIGlmIHZhcnNodG1sW0BhcmdzWyJuYW1lIl1d # ID09ICJvbiIKICAgICAgICBzd2l0Y2hlc1tAYXJnc1sibmFtZSJdXQk9IHRy # dWUKICAgICAgICByZXMgPDwgIjxwICN7YWxpZ259PjxpbnB1dCBuYW1lPScj # e0BhcmdzWyJuYW1lIl19JyBjaGVja2VkPSdvbicgdHlwZT0nY2hlY2tib3gn # PiIKICAgICAgZWxzZQogICAgICAgIHN3aXRjaGVzW0BhcmdzWyJuYW1lIl1d # CT0gZmFsc2UKICAgICAgICByZXMgPDwgIjxwICN7YWxpZ259PjxpbnB1dCBu # YW1lPScje0BhcmdzWyJuYW1lIl19JyB0eXBlPSdjaGVja2JveCc+IgogICAg # ICBlbmQKICAgICAgb25lb3Jtb3JlZmllbGRzCTw8ICJ0cnVlIgogICAgd2hl # biAicmFkaW8iCiAgICAgIGlmIHZhcnNodG1sW0BhcmdzWyJuYW1lIl1dID09 # IHZhbHVlMQkjID8/PyAxIG9yIDI/CiAgICAgICAgcmVzIDw8ICI8cCAje2Fs # aWdufT48aW5wdXQgbmFtZT0nI3tAYXJnc1sibmFtZSJdfScgY2hlY2tlZD0n # b24nIHZhbHVlPScje3ZhbHVlMX0nIHR5cGU9J3JhZGlvJz4iCiAgICAgIGVs # c2UKICAgICAgICByZXMgPDwgIjxwICN7YWxpZ259PjxpbnB1dCBuYW1lPScj # e0BhcmdzWyJuYW1lIl19JyB2YWx1ZT0nI3t2YWx1ZTF9JyB0eXBlPSdyYWRp # byc+IgogICAgICBlbmQKICAgICAgb25lb3Jtb3JlZmllbGRzCTw8ICJ0cnVl # IgogICAgd2hlbiAic2VsZWN0IgogICAgIHJlcyA8PCAiPHNlbGVjdCAje2Fs # aWdufSBuYW1lPScje0BhcmdzWyJuYW1lIl19JyB3aWR0aD0nI3tAYXJnc1si # d2lkdGgiXX0gc2l6ZT0nI3tAYXJnc1sic2l6ZSJdfSc+IgkjID8/PyBNaXNz # Y2hpZW4gbm9nIGlldHMgbWV0ICdtdWx0aXBsZSc/CiAgICAgIG5hbWUJPSBA # YXJnc1sibmFtZSJdCiAgICAgICRzZWxlY3QJPSB2YXJzaHRtbFtuYW1lXQog # ICAgICBvbmVvcm1vcmVmaWVsZHMJPDwgInRydWUiCiAgICB3aGVuICJvcHRp # b24iCiAgICAgIGlmICRzZWxlY3QgPT0gQGNoaWxkcmVuWzBdLnRleHQKICAg # ICAgICByZXMgPDwgIjxvcHRpb24gc2VsZWN0ZWQ9J3RydWUnPiIKICAgICAg # ZWxzZQogICAgICAgIHJlcyA8PCAiPG9wdGlvbj4iCiAgICAgIGVuZAogICAg # d2hlbiAiYnV0dG9uIgogICAgICByZXMgPDwgIjxpbnB1dCB0eXBlPSdzdWJt # aXQnIHZhbHVlPScje0BhcmdzWyJjYXB0aW9uIl19JyBvbmNsaWNrPSdkb2N1 # bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwiI3tAYXJnc1siYWN0 # aW9uIl19XCI7Jz4iCiAgICAgIGZpcnN0YWN0aW9uCTw8IEBhcmdzWyJhY3Rp # b24iXQlpZiAoZmlyc3RhY3Rpb24uZW1wdHk/IGFuZCBAYXJncy5pbmNsdWRl # PygiYWN0aW9uIikpCiAgICAgIG9uZW9ybW9yZWZpZWxkcwk8PCAidHJ1ZSIK # ICAgIHdoZW4gImJhY2siCiAgICAgIHJlcyA8PCAiPGlucHV0IHR5cGU9J3N1 # Ym1pdCcgdmFsdWU9J0JhY2snIG9uY2xpY2s9J2RvY3VtZW50LmJvZHlmb3Jt # LnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2RfYmFja1wiOyc+IgogICAgICBmaXJz # dGFjdGlvbgk8PCAicndkX2JhY2siCWlmIGZpcnN0YWN0aW9uLmVtcHR5Pwog # ICAgICBvbmVvcm1vcmVmaWVsZHMJPDwgInRydWUiCiAgICB3aGVuICJjYW5j # ZWwiCiAgICAgIHJlcyA8PCAiPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9 # J0NhbmNlbCcgb25jbGljaz0nZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlv # bi52YWx1ZT1cInJ3ZF9jYW5jZWxcIjsnPiIKICAgICAgZmlyc3RhY3Rpb24J # PDwgInJ3ZF9jYW5jZWwiCWlmIGZpcnN0YWN0aW9uLmVtcHR5PwogICAgICBv # bmVvcm1vcmVmaWVsZHMJPDwgInRydWUiCiAgICB3aGVuICJoZWxwIgogICAg # ICByZXMgPDwgIjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSdIZWxwJyBv # bmNsaWNrPSdkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwi # cndkX2hlbHBcIjsnPiIKICAgICAgZmlyc3RhY3Rpb24JPDwgInJ3ZF9oZWxw # IglpZiBmaXJzdGFjdGlvbi5lbXB0eT8KICAgICAgb25lb3Jtb3JlZmllbGRz # CTw8ICJ0cnVlIgogICAgd2hlbiAicXVpdCIKICAgICAgcmVzIDw8ICI8aW5w # dXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nUXVpdCcgb25jbGljaz0nZG9jdW1l # bnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1ZT1cInJ3ZF9xdWl0XCI7Jz4i # CiAgICAgIGZpcnN0YWN0aW9uCTw8ICJyd2RfcXVpdCIJaWYgZmlyc3RhY3Rp # b24uZW1wdHk/CiAgICAgIG9uZW9ybW9yZWZpZWxkcwk8PCAidHJ1ZSIKICAg # IHdoZW4gImNsb3NlIgogICAgICByZXMgPDwgIjxpbnB1dCB0eXBlPSdzdWJt # aXQnIHZhbHVlPSdDbG9zZScgb25jbGljaz0nd2luZG93LmNsb3NlKCk7Jz4i # CiAgICAgIGZpcnN0YWN0aW9uCTw8ICJyd2RfcXVpdCIJaWYgZmlyc3RhY3Rp # b24uZW1wdHk/CiAgICAgIG9uZW9ybW9yZWZpZWxkcwk8PCAidHJ1ZSIKICAg # IHdoZW4gIm1haW4iCiAgICAgIHJlcyA8PCAiPGlucHV0IHR5cGU9J3N1Ym1p # dCcgdmFsdWU9J01haW4nIG9uY2xpY2s9J2RvY3VtZW50LmJvZHlmb3JtLnJ3 # ZF9hY3Rpb24udmFsdWU9XCJyd2RfbWFpblwiOyc+IgogICAgICBmaXJzdGFj # dGlvbgk8PCAicndkX21haW4iCWlmIGZpcnN0YWN0aW9uLmVtcHR5PwogICAg # ICBvbmVvcm1vcmVmaWVsZHMJPDwgInRydWUiCiAgICB3aGVuICJyZXNldCIK # ICAgICAgcmVzIDw8ICI8aW5wdXQgdHlwZT0ncmVzZXQnICB2YWx1ZT0nUmVz # ZXQnPiIKICAgICAgZmlyc3RhY3Rpb24JPDwgInJ3ZF9xdWl0IglpZiBmaXJz # dGFjdGlvbi5lbXB0eT8JIyA/Pz8KICAgICAgb25lb3Jtb3JlZmllbGRzCTw8 # ICJ0cnVlIgogICAgd2hlbiAiY2xvc2V3aW5kb3ciCiAgICAgICNyZXMgPDwg # IjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5cbiIJIyA/Pz8KICAg # ICAgI3JlcyA8PCAiPCEtLVxuIgogICAgICAjcmVzIDw8ICIgIHdpbmRvdy5j # bG9zZSgpO1xuIgogICAgICAjcmVzIDw8ICIvLy0tPlxuIgogICAgICAjcmVz # IDw8ICI8L3NjcmlwdD4iCiAgICB3aGVuICJ0YWJzIgogICAgICByZXMgPDwg # Ijx0YWJsZSAje0FDfSBib3JkZXI9JyN7JHJ3ZF9ib3JkZXJ9JyBjZWxsc3Bh # Y2luZz0nMCcgY2VsbHBhZGRpbmc9JzAnPiIKICAgICAgcmVzIDw8ICIgIDx0 # ciAje0FMfT4iCiAgICAgIHJlcyA8PCAiICAgIDx0ZCAje0FMfSBjbGFzcz0n # dGFicyc+IgogICAgICByZXMgPDwgIiAgICAgIDx0YWJsZSAje0FMfSBib3Jk # ZXI9JyN7JHJ3ZF9ib3JkZXJ9JyBjZWxsc3BhY2luZz0nMCcgY2VsbHBhZGRp # bmc9JzAnPiIKICAgICAgcmVzIDw8ICIgICAgICAgIDx0ciAje0FMfT4iCiAg # ICAgICNyZXMgPDwgIiAgICAgICAgICA8dGQgY2xhc3M9J25vdGFiJz4mbmJz # cDs8L3RkPiIKICAgICAgdGFicy5lYWNoIGRvIHxvYmp8CiAgICAgICAgbmFt # ZQk9IG9iai5hcmdzWyJuYW1lIl0KICAgICAgICBjYXB0aW9uCT0gb2JqLmFy # Z3NbImNhcHRpb24iXQoKICAgICAgICByZXMgPDwgIjx0ZCAje0FMfSBjbGFz # cz0nbm90YWInPiZuYnNwOzwvdGQ+Igl1bmxlc3Mgb2JqID09IHRhYnNbMF0K # CiAgICAgICAgaWYgbmFtZSA9PSB0YWIKICAgICAgICAgIHJlcyA8PCAiPHRk # ICN7QUN9IGNsYXNzPSdhY3RpdmV0YWInPjx0dD4mbmJzcDsje2NhcHRpb259 # Jm5ic3A7PC90dD48L3RkPiIKICAgICAgICBlbHNlCiAgICAgICAgICByZXMg # PDwgIjx0ZCAje0FDfSBjbGFzcz0ncGFzc2l2ZXRhYic+PGEgaHJlZj0namF2 # YXNjcmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwi # cndkX3RhYl8je25hbWV9XCI7ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7 # Jz48dHQ+Jm5ic3A7I3tjYXB0aW9ufSZuYnNwOzwvdHQ+PC9hPjwvdGQ+Igog # ICAgICAgIGVuZAogICAgICBlbmQKICAgICAgcmVzIDw8ICIgICAgICAgICAg # PHRkIGNsYXNzPSdub3RhYicgd2lkdGg9JzEwMCUnPiZuYnNwOzwvdGQ+Igog # ICAgICByZXMgPDwgIiAgICAgICAgPC90cj4iCiAgICAgIHJlcyA8PCAiICAg # ICAgPC90YWJsZT4iCiAgICAgIHJlcyA8PCAiICAgIDwvdGQ+IgogICAgICBy # ZXMgPDwgIiAgPC90cj4iCiAgICAgIHJlcyA8PCAiICA8dHIgI3thbGlnbn0+ # IgogICAgICByZXMgPDwgIiAgICA8dGQgI3thbGlnbn0gY2xhc3M9J3RhYmJs # YWQnPiIKICAgIHdoZW4gInRhYiIKICAgICAgcmVzIDw8ICI8dGFibGUgI3tB # Q30gYm9yZGVyPScjeyRyd2RfYm9yZGVyfScgY2VsbHNwYWNpbmc9JzMnIGNl # bGxwYWRkaW5nPScwJz4iCiAgICB3aGVuICJwYW5lbCIKICAgICAgbGV2ZWwJ # PSAoQGFyZ3NbImxldmVsIl0gb3IgIm5vcm1hbCIpCiAgICAgIHJlcyA8PCAi # PHRhYmxlICN7QUN9IGJvcmRlcj0nI3skcndkX2JvcmRlcn0nIGNlbGxzcGFj # aW5nPScwJyBjZWxscGFkZGluZz0nMCc+IgogICAgICByZXMgPDwgIiAgPHRy # ICN7YWxpZ259PiIKICAgICAgcmVzIDw8ICIgICAgPHRkICN7YWxpZ259IGNs # YXNzPSdwYW5lbDEnPiIJCWlmIGxldmVsID09ICJub3JtYWwiCiAgICAgIHJl # cyA8PCAiICAgIDx0ZCAje2FsaWdufSBjbGFzcz0ncGFuZWwxaGlnaCc+Iglp # ZiBsZXZlbCA9PSAiaGlnaCIKICAgICAgcmVzIDw8ICIgICAgPHRkICN7YWxp # Z259IGNsYXNzPSdwYW5lbDFsb3cnPiIJaWYgbGV2ZWwgPT0gImxvdyIKICAg # ICAgcmVzIDw8ICIgICAgICA8dGFibGUgI3tBQ30gYm9yZGVyPScjeyRyd2Rf # Ym9yZGVyfScgY2VsbHNwYWNpbmc9JzAnIGNlbGxwYWRkaW5nPScwJz4iCiAg # ICAgIHJlcyA8PCAiICAgICAgICA8dHIgI3thbGlnbn0+IgogICAgICByZXMg # PDwgIiAgICAgICAgICA8dGQgI3thbGlnbn0gY2xhc3M9J3BhbmVsMic+IgkJ # aWYgbGV2ZWwgPT0gIm5vcm1hbCIKICAgICAgcmVzIDw8ICIgICAgICAgICAg # PHRkICN7YWxpZ259IGNsYXNzPSdwYW5lbDJoaWdoJz4iCWlmIGxldmVsID09 # ICJoaWdoIgogICAgICByZXMgPDwgIiAgICAgICAgICA8dGQgI3thbGlnbn0g # Y2xhc3M9J3BhbmVsMmxvdyc+IglpZiBsZXZlbCA9PSAibG93IgogICAgICBy # ZXMgPDwgIiAgICAgICAgICAgIDx0YWJsZSAje0FDfSBib3JkZXI9JyN7JHJ3 # ZF9ib3JkZXJ9JyBjZWxsc3BhY2luZz0nMycgY2VsbHBhZGRpbmc9JzAnPiIK # ICAgIGVsc2UKICAgICAgcHV0cyAiPCN7QHN1YnR5cGV9PiIKICAgICAgcmVz # IDw8ICImbHQ7I3tAc3VidHlwZX0mZ3Q7IgogICAgZW5kCgogICAgYmVmCT0g # bmlsCiAgICBhZnQJPSBuaWwKCiAgICBjYXNlIEBzdWJ0eXBlCiAgICB3aGVu # ICJ2ZXJ0aWNhbCIsICJ3aW5kb3ciLCAiaGVscHdpbmRvdyIsICJ0YWIiLCAi # cGFuZWwiCiAgICAgIHJlcyA8PCBGb3JtYXQgJSBbIkFmdFByZSIsIEBzdWJ0 # eXBlXQlpZiAkcndkX2RlYnVnCiAgICAgIGlmIEBhcmdzLmluY2x1ZGU/KCJz # cGFjaW5nIikKICAgICAgICBzCT0gIjx0cj48dGQ+Jm5ic3A7PC90ZD48L3Ry # PiIgKiAoQGFyZ3NbInNwYWNpbmciXS50b19pKQogICAgICBlbHNlCiAgICAg # ICAgcwk9ICIiCiAgICAgIGVuZAogICAgICBiZWYJPSAiI3tzfTx0ciAje2Fs # aWdufSAje3ZhbGlnbn0+PHRkICN7YWxpZ259PiIKICAgICAgYWZ0CT0gIjwv # dGQ+PC90cj4iCiAgICB3aGVuICJob3Jpem9udGFsIiwgInJvdyIKICAgICAg # cmVzIDw8IEZvcm1hdCAlIFsiQWZ0UHJlIiwgQHN1YnR5cGVdCWlmICRyd2Rf # ZGVidWcKICAgICAgYmVmCT0gIjx0ZCAje2FsaWdufT4iCiAgICAgIGFmdAk9 # ICI8L3RkPiIKICAgIGVuZAoKICAgIGJlZm9yZS5wdXNoKGJlZikKICAgIGFm # dGVyLnB1c2goYWZ0KQogIGVuZAoKICBkZWYgcG9zdGNoaWxkcmVuKHJlcywg # YmVmb3JlLCBhZnRlciwgdmFyc2h0bWwsIHZhcnNzdHJpbmcsIHN3aXRjaGVz # LCBoZWxwLCBvbmVvcm1vcmVmaWVsZHMsIGZpcnN0YWN0aW9uLCB0YWJzLCB0 # YWIsIHBkYSkKICAgIGNhc2UgQHN1YnR5cGUKICAgIHdoZW4gInZlcnRpY2Fs # IiwgIndpbmRvdyIsICJoZWxwd2luZG93IiwgInRhYiIsICJwYW5lbCIKICAg # ICAgcmVzIDw8IEZvcm1hdCAlIFsiQmVmUG9zdCIsIEBzdWJ0eXBlXQlpZiAk # cndkX2RlYnVnCiAgICAgIGlmIEBhcmdzLmluY2x1ZGU/KCJzcGFjaW5nIikK # ICAgICAgICByZXMgPDwgIjx0cj48dGQ+Jm5ic3A7PC90ZD48L3RyPiIgKiAo # QGFyZ3NbInNwYWNpbmciXS50b19pKQogICAgICBlbmQKICAgIHdoZW4gImhv # cml6b250YWwiLCAicm93IgogICAgICByZXMgPDwgRm9ybWF0ICUgWyJCZWZQ # b3N0IiwgQHN1YnR5cGVdCWlmICRyd2RfZGVidWcKICAgIGVuZAoKICAgIHJl # cyA8PCBGb3JtYXQgJSBbIlBvc3QiLCBAc3VidHlwZV0JCWlmICRyd2RfZGVi # dWcKCiAgICBjYXNlIEBzdWJ0eXBlCiAgICB3aGVuICJhcHBsaWNhdGlvbiIK # ICAgIHdoZW4gIndpbmRvdyIsICJoZWxwd2luZG93IgogICAgICBhcmdzCT0g # QGFyZ3MuZGVlcF9kdXAKCiAgICAgIGFyZ3NbIm5vaGVscGJ1dHRvbiJdCT0g # KG5vdCBoZWxwKQoKICAgICAgdGVtcGxhdGUJPSAkcndkX2h0bWxfMgogICAg # ICB0ZW1wbGF0ZQk9ICRyd2RfaHRtbF9QREFfMglpZiBwZGEKCiAgICAgIHJl # cyA8PCAodGVtcGxhdGUodGVtcGxhdGUsIGFyZ3MpKQogICAgd2hlbiAicCIJ # CXRoZW4gcmVzIDw8ICI8L3A+IgogICAgd2hlbiAicHJlIgkJdGhlbiByZXMg # PDwgIjwvcHJlPiIKICAgIHdoZW4gImJpZyIJCXRoZW4gcmVzIDw8ICI8L2Jp # Zz48L3A+IgogICAgd2hlbiAic21hbGwiCXRoZW4gcmVzIDw8ICI8L3NtYWxs # PjwvcD4iCiAgICB3aGVuICJsaXN0IgkJdGhlbiByZXMgPDwgIjwvdWw+Igog # ICAgd2hlbiAiaXRlbSIJCXRoZW4gcmVzIDw8ICI8L2xpPiIKICAgIHdoZW4g # ImVtcHR5Igl0aGVuIHJlcyA8PCAiPC9wPiIKICAgIHdoZW4gImltYWdlIgl0 # aGVuIHJlcyA8PCAiIgogICAgd2hlbiAicHJvZ3Jlc3NiYXIiCXRoZW4gcmVz # IDw8ICIiCiAgICB3aGVuICJiciIJCXRoZW4gcmVzIDw8ICIiCiAgICB3aGVu # ICJociIJCXRoZW4gcmVzIDw8ICIiCiAgICB3aGVuICJiIgkJdGhlbiByZXMg # PDwgIjwvYj4iCiAgICB3aGVuICJpIgkJdGhlbiByZXMgPDwgIjwvaT4iCiAg # ICB3aGVuICJhIgkJdGhlbiByZXMgPDwgIjwvYT4iCiAgICB3aGVuICJ2ZXJ0 # aWNhbCIJdGhlbiByZXMgPDwgIjwvdGFibGU+IgogICAgd2hlbiAiaG9yaXpv # bnRhbCIJdGhlbiByZXMgPDwgIjwvdHI+PC90YWJsZT4iCiAgICB3aGVuICJ0 # YWJsZSIJdGhlbiByZXMgPDwgIjwvdGFibGU+IgogICAgd2hlbiAicm93IgkJ # dGhlbiByZXMgPDwgIjwvdHI+IgogICAgd2hlbiAiaGlkZGVuIgl0aGVuIHJl # cyA8PCAiPC9wPiIKICAgIHdoZW4gInRleHQiCQl0aGVuIHJlcyA8PCAiPC9w # PiIKICAgIHdoZW4gInRleHRhcmVhIgl0aGVuIHJlcyA8PCAiPC9wPiIKICAg # IHdoZW4gInBhc3N3b3JkIgl0aGVuIHJlcyA8PCAiPC9wPiIKICAgIHdoZW4g # ImNoZWNrYm94Igl0aGVuIHJlcyA8PCAiPC9wPiIKICAgIHdoZW4gInJhZGlv # Igl0aGVuIHJlcyA8PCAiPC9wPiIKICAgIHdoZW4gInNlbGVjdCIKICAgICAg # cmVzIDw8ICI8L3NlbGVjdD4iCiAgICAgICRzZWxlY3QJPSBuaWwKICAgIHdo # ZW4gIm9wdGlvbiIJdGhlbiByZXMgPDwgIjwvb3B0aW9uPiIKICAgIHdoZW4g # ImJ1dHRvbiIJdGhlbiByZXMgPDwgIiIKICAgIHdoZW4gImJhY2siCQl0aGVu # IHJlcyA8PCAiIgogICAgd2hlbiAiY2FuY2VsIgl0aGVuIHJlcyA8PCAiIgog # ICAgd2hlbiAiaGVscCIJCXRoZW4gcmVzIDw8ICIiCiAgICB3aGVuICJxdWl0 # IgkJdGhlbiByZXMgPDwgIiIKICAgIHdoZW4gImNsb3NlIgl0aGVuIHJlcyA8 # PCAiIgogICAgd2hlbiAibWFpbiIJCXRoZW4gcmVzIDw8ICIiCiAgICB3aGVu # ICJyZXNldCIJdGhlbiByZXMgPDwgIiIKICAgIHdoZW4gImNsb3Nld2luZG93 # Igl0aGVuIHJlcyA8PCAiIgogICAgd2hlbiAidGFicyIKICAgICAgcmVzIDw8 # ICIgICAgPC90ZD4iCiAgICAgIHJlcyA8PCAiICA8L3RyPiIKICAgICAgcmVz # IDw8ICI8L3RhYmxlPiIKICAgIHdoZW4gInRhYiIKICAgICAgcmVzIDw8ICI8 # L3RhYmxlPiIKICAgIHdoZW4gInBhbmVsIgogICAgICByZXMgPDwgIiAgICAg # ICAgICAgIDwvdGFibGU+IgogICAgICByZXMgPDwgIiAgICAgICAgICA8L3Rk # PiIKICAgICAgcmVzIDw8ICIgICAgICAgIDwvdHI+IgogICAgICByZXMgPDwg # IiAgICAgIDwvdGFibGU+IgogICAgICByZXMgPDwgIiAgICA8L3RkPiIKICAg # ICAgcmVzIDw8ICIgIDwvdHI+IgogICAgICByZXMgPDwgIjwvdGFibGU+Igog # ICAgZWxzZQogICAgICBwdXRzICI8LyN7QHN1YnR5cGV9PiIKICAgICAgcmVz # IDw8ICImbHQ7LyN7QHN1YnR5cGV9Jmd0OyIKICAgIGVuZAoKICAgIGJlZm9y # ZS5wb3AKICAgIGFmdGVyLnBvcAoKICAgIGFmdAk9IGFmdGVyWy0xXQogICAg # cmVzIDw8IEZvcm1hdCAlIFsiQWZ0ZXIiLCBAc3VidHlwZV0JCWlmICgkcndk # X2RlYnVnIGFuZCBub3QgYWZ0Lm5pbD8pCiAgICByZXMgPDwgYWZ0CWlmIG5v # dCBhZnQubmlsPwogIGVuZAoKICBkZWYgdGVtcGxhdGUoaHRtbCwgdmFycykK # ICAgIHJlcwk9IFtdCgogICAgYQk9IHt9CgogICAgdmFycy5lYWNoIGRvIHxr # LCB2fAogICAgICBhW2sudXBjYXNlXQk9IHYKICAgIGVuZAoKICAgIGxvZ28J # PSBuaWwKICAgIGxvZ28JPSBGaWxlLmV4cGFuZF9wYXRoKHZhcnNbImxvZ28i # XSwgJHJ3ZF9maWxlcykJCWlmIHZhcnMuaW5jbHVkZT8oImxvZ28iKQogICAg # bG9nbwk9IG5pbAkJCQkJCQl1bmxlc3MgbG9nby5uaWw/IG9yIEZpbGUuZmls # ZT8obG9nbykKCiAgICB3YXRlcm1hcmsJPSBuaWwKICAgIHdhdGVybWFyawk9 # IEZpbGUuZXhwYW5kX3BhdGgodmFyc1sid2F0ZXJtYXJrIl0sICRyd2RfZmls # ZXMpCWlmIHZhcnMuaW5jbHVkZT8oIndhdGVybWFyayIpCiAgICB3YXRlcm1h # cmsJPSBuaWwJCQkJCQkJdW5sZXNzIHdhdGVybWFyay5uaWw/IG9yIEZpbGUu # ZmlsZT8od2F0ZXJtYXJrKQoKICAgIGFbIkxPR08iXQkJPSAiIgl1bmxlc3Mg # bm90IGxvZ28ubmlsPwogICAgYVsiV0FURVJNQVJLIl0JPSAiIgl1bmxlc3Mg # bm90IHdhdGVybWFyay5uaWw/CgogICAgYVsiSEVMUEJVVFRPTiJdCT0gKG5v # dCAodmFyc1sibm9oZWxwYnV0dG9uIl0pKQogICAgYVsiQkFDS0JVVFRPTlMi # XQk9IChub3QgKHZhcnNbIm5vYmFja2J1dHRvbnMiXSkpCiAgICBhWyJCQUNL # QlVUVE9OUyJdCT0gKG5vdCAodmFyc1sibm9iYWNrYnV0dG9ucyJdKSkKICAg # IGFbIkNMT1NFQlVUVE9OIl0JPSAobm90ICh2YXJzWyJub2Nsb3NlYnV0dG9u # Il0pKQoKICAgIGlmIGEuaW5jbHVkZT8oIldJRFRIIikKICAgICAgYVsiV0lE # VEgxIl0JPSAid2lkdGg9JyN7YVsiV0lEVEgiXX0nIgogICAgICBhWyJXSURU # SDIiXQk9IGFbIldJRFRIIl0KICAgIGVsc2UKICAgICAgYVsiV0lEVEgxIl0J # PSAiICIKICAgICAgYVsiV0lEVEgyIl0JPSAiMSIKICAgIGVuZAoKICAgIGh0 # bWwuc3BsaXQoL1xyKlxuLykuZWFjaCBkbyB8bGluZXwKICAgICAgaWYgbGlu # ZSA9fiAvJVtBLVowLTldKyUvCiAgICAgICAgYS5lYWNoIGRvIHxrLCB2fAog # ICAgICAgICAgdgk9IGZhbHNlCWlmICh2LmtpbmRfb2Y/KFN0cmluZykgYW5k # IHYuZW1wdHk/KQoKICAgICAgICAgIGlmIGxpbmUuaW5jbHVkZT8oIiUje2t9 # JSIpCiAgICAgICAgICAgIGxpbmUuZ3N1YiEoIiUje2t9JSIsICIje3Z9IikJ # aWYgdgogICAgICAgICAgZW5kCiAgICAgICAgZW5kCgogICAgICAgIGxpbmUJ # PSAiPCEtLSAje2xpbmUuc2NhbigvJVtBLVowLTldKyUvKS5qb2luKCIgIil9 # IC0tPiIJaWYgbGluZSA9fiAvJVtBLVowLTldKyUvCiAgICAgIGVuZAoKICAg # ICAgcmVzIDw8IGxpbmUKICAgIGVuZAoKICAgIHJlcy5qb2luKCJcbiIpCiAg # ZW5kCmVuZAoKY2xhc3MgVGV4dAogIGRlZiBwcmVjaGlsZHJlbihyZXMsIGJl # Zm9yZSwgYWZ0ZXIsIHZhcnNodG1sLCB2YXJzc3RyaW5nLCBzd2l0Y2hlcywg # aGVscCwgb25lb3Jtb3JlZmllbGRzLCBmaXJzdGFjdGlvbiwgdGFicywgdGFi # LCBwZGEpCiAgICBpZiBub3QgQHRleHQuc2NhbigvW14gXHRcclxuXS8pLmVt # cHR5PwogICAgICByZXMgPDwgRm9ybWF0ICUgWyJUZXh0IiwgIiJdCWlmICRy # d2RfZGVidWcKICAgICAgcmVzIDw8ICIje0B0ZXh0fSIKICAgIGVuZAogIGVu # ZAplbmQKCmNsYXNzIFJXRFRyZWUgPCBYTUwKZW5kCgpjbGFzcyBSV0RXaW5k # b3cKICBAQHdpbmRvd3MJPSB7fQkjIEtpbmQgb2YgY2FjaGluZy4KICBAQGhl # bHB3aW5kb3dzCT0ge30JIyBLaW5kIG9mIGNhY2hpbmcuCgogIGRlZiBpbml0 # aWFsaXplKHJ3ZCwgd2luZG93PW5pbCkKICAgIHJ3ZAk9IHJ3ZC5qb2luKCJc # biIpCWlmIHJ3ZC5raW5kX29mPyhBcnJheSkKCiAgICBpZiBAQHdpbmRvd3Nb # cndkXS5uaWw/CiAgICAgIEBAd2luZG93c1tyd2RdCQk9IHt9CiAgICAgIEBA # aGVscHdpbmRvd3NbcndkXQk9IHt9CgogICAgICB0cmVlCT0gWE1MLm5ldyhy # d2QpCgogICAgICB0cmVlLnBhcnNlKE9wZW5UYWcsICJ3aW5kb3ciKSBkbyB8 # dHlwZSwgb2JqfAogICAgICAgICRyd2RfYXBwdmFycy5lYWNoe3xrLCB2fCBv # YmouYXJnc1trXSA9IHZ9CiAgICAgICAgQEB3aW5kb3dzW3J3ZF1bb2JqLmFy # Z3NbIm5hbWUiXV0JPSBvYmoudG9faAogICAgICBlbmQKCiAgICAgIHRyZWUu # cGFyc2UoT3BlblRhZywgImhlbHB3aW5kb3ciKSBkbyB8dHlwZSwgb2JqfAog # ICAgICAgICRyd2RfYXBwdmFycy5lYWNoe3xrLCB2fCBvYmouYXJnc1trXSA9 # IHZ9CiAgICAgICAgQEBoZWxwd2luZG93c1tyd2RdW29iai5hcmdzWyJuYW1l # Il1dCT0gb2JqLnRvX2gKICAgICAgZW5kCiAgICBlbmQKCiAgICBAcndkCT0g # KEBAd2luZG93c1tyd2RdW3dpbmRvd10gb3IgIiIpLmR1cAogICAgQGhlbHBy # d2QJPSAoQEBoZWxwd2luZG93c1tyd2RdW3dpbmRvd10gb3IgIiIpLmR1cAog # IGVuZAoKICBkZWYgcmVuZGVyKHBkYSwgYWN0aW9uPW5pbCwgdmFycz1IYXNo # Lm5ldywgc3dpdGNoZXM9SGFzaC5uZXcsIGhlbHA9ZmFsc2UsIHRhYj0iIikK # ICAgIHZhcnNodG1sCQk9IEhhc2gubmV3CiAgICB2YXJzc3RyaW5nCQk9IEhh # c2gubmV3CiAgICBvbmVvcm1vcmVmaWVsZHMJPSAiIgogICAgZmlyc3RhY3Rp # b24JCT0gIiIKICAgIGh0bWwJCT0gW10KCiAgICB2YXJzCT0gdmFycy5kZWVw # X2R1cAoKICAgIHZhcnMuZWFjaCBkbyB8a2V5LCB2YWx1ZXwKICAgICAgaWYg # bm90IGtleS5lbXB0eT8KICAgICAgICBpZiB2YWx1ZS5yZXNwb25kX3RvPyAi # dG9fcyIKICAgICAgICAgIEByd2QuZ3N1YiEoLyUlI3trZXl9JSUvLCB2YWx1 # ZS50b19zKQogICAgICAgICAgQHJ3ZC5nc3ViISgvJSN7a2V5fSUvLCB2YWx1 # ZS50b19zLnRvX2h0bWwpCgogICAgICAgICAgQGhlbHByd2QuZ3N1YiEoLyUl # I3trZXl9JSUvLCB2YWx1ZS50b19zKQogICAgICAgICAgQGhlbHByd2QuZ3N1 # YiEoLyUje2tleX0lLywgdmFsdWUudG9fcy50b19odG1sKQoKICAgICAgICAg # IHZhcnNodG1sW2tleV0JCT0gdmFsdWUudG9fcy50b19odG1sCiAgICAgICAg # ICB2YXJzc3RyaW5nW2tleV0JPSB2YWx1ZS50b19zCiAgICAgICAgZW5kCiAg # ICAgIGVuZAogICAgZW5kCgogICAgd2luZG93b2JqZWN0CT0gUldEVHJlZS5u # ZXcoQHJ3ZCkuY2hpbGRyZW4uZHVwLmRlbGV0ZV9pZnt8b2JqfCBvYmouc3Vi # dHlwZSAhPSAid2luZG93In1bMF0KICAgIGhlbHBvYmplY3QJCT0gUldEVHJl # ZS5uZXcoQGhlbHByd2QpLmNoaWxkcmVuLmR1cC5kZWxldGVfaWZ7fG9ianwg # b2JqLnN1YnR5cGUgIT0gImhlbHB3aW5kb3cifVswXQoKICAgIHRhYnNvYmoJ # PSB3aW5kb3dvYmplY3QuY2hpbGRyZW4uZHVwLmRlbGV0ZV9pZnt8b2JqfCBv # Ymouc3VidHlwZSAhPSAidGFicyJ9WzBdCgogICAgaWYgbm90IHRhYnNvYmou # bmlsPwogICAgICB0YWJzCT0gdGFic29iai5jaGlsZHJlbi5kdXAuZGVsZXRl # X2lme3xvYmp8IChub3Qgb2JqLmtpbmRfb2Y/KE9wZW5UYWcpKSBvciAob2Jq # LnN1YnR5cGUgIT0gInRhYiIpfQoKICAgICAgaWYgdGFiLmVtcHR5PwogICAg # ICAgIHRhYgkJCT0gdGFic1swXS5hcmdzWyJuYW1lIl0KICAgICAgZW5kCgog # ICAgICB0YWJzb2JqLmNoaWxkcmVuLmRlbGV0ZV9pZnt8b2JqfCAob2JqLmtp # bmRfb2Y/KE9wZW5UYWcpKSBhbmQgKG9iai5zdWJ0eXBlID09ICJ0YWIiKSBh # bmQgb2JqLmFyZ3NbIm5hbWUiXSAhPSB0YWJ9CiAgICBlbmQKCiAgICBpZiBo # ZWxwCiAgICAgIGhlbHBvYmplY3QucGFyc2V0cmVlKCJwcmVjaGlsZHJlbiIs # ICJwb3N0Y2hpbGRyZW4iLCBodG1sLCBbIiJdLCBbIiJdLCB2YXJzaHRtbCwg # dmFyc3N0cmluZywgc3dpdGNoZXMsIGZhbHNlLCBvbmVvcm1vcmVmaWVsZHMs # IGZpcnN0YWN0aW9uLCB0YWJzLCB0YWIsIHBkYSkKICAgIGVsc2UKICAgICAg # d2luZG93b2JqZWN0LnBhcnNldHJlZSgicHJlY2hpbGRyZW4iLCAicG9zdGNo # aWxkcmVuIiwgaHRtbCwgWyIiXSwgWyIiXSwgdmFyc2h0bWwsIHZhcnNzdHJp # bmcsIHN3aXRjaGVzLCAobm90IEBoZWxwcndkLmVtcHR5PyksIG9uZW9ybW9y # ZWZpZWxkcywgZmlyc3RhY3Rpb24sIHRhYnMsIHRhYiwgcGRhKQogICAgZW5k # CgogICAgaHRtbAk9IGh0bWwuam9pbigiIikJIyA/Pz8KCiAgICBodG1sLmdz # dWIhKC8lJSpbWzphbG51bTpdX1wtXSslJSovLCAiIikJaWYgbm90ICRyd2Rf # ZGVidWcKICAgIGh0bWwuZ3N1YiEoLyUlLywgIiUiKQogICAgaHRtbC5nc3Vi # ISgvXG5cbiovLCAiXG4iKQoKICAgIGlmIG9uZW9ybW9yZWZpZWxkcy5lbXB0 # eT8KICAgICAgZm9jdXMJPSAiIgogICAgZWxzZQogICAgICBmb2N1cwk9ICJk # b2N1bWVudC5ib2R5Zm9ybS5lbGVtZW50c1swXS5mb2N1cygpOyIKICAgIGVu # ZAoKICAgIGZpcnN0YWN0aW9uCT0gYWN0aW9uCWlmIHdpbmRvd29iamVjdC5h # cmdzLmtleXMuaW5jbHVkZT8oInJlZnJlc2giKQl1bmxlc3MgYWN0aW9uLm5p # bD8KCiAgICBodG1sLmdzdWIhKC9cJFJXRF9GSVJTVEFDVElPTlwkLwksIGZp # cnN0YWN0aW9uKQogICAgaHRtbC5nc3ViISgvXCRSV0RfRk9DVVNcJC8JCSwg # Zm9jdXMpCgogICAgaHRtbAogIGVuZAplbmQKCmNsYXNzIFJXRE1lc3NhZ2Ug # PCBSV0RXaW5kb3cKICBkZWYgaW5pdGlhbGl6ZShtc2cpCiAgICBzdXBlcigi # PHdpbmRvdyB0aXRsZT0nUldEIE1lc3NhZ2UnIG5vYmFja2J1dHRvbnMgbm9j # bG9zZWJ1dHRvbj48cD4je21zZ308L3A+PGJhY2svPjwvd2luZG93PiIpCiAg # ZW5kCmVuZAoKY2xhc3MgUldERXJyb3IgPCBSV0RXaW5kb3cKICBkZWYgaW5p # dGlhbGl6ZShtc2cpCiAgICBzdXBlcigiPHdpbmRvdyB0aXRsZT0nUldEIEVy # cm9yJyBub2JhY2tidXR0b25zIG5vY2xvc2VidXR0b24+PHA+PGI+RXJyb3I6 # PC9iPiAje21zZ308L3A+PGJhY2svPjwvd2luZG93PiIpCiAgZW5kCmVuZAoK # Y2xhc3MgUldEUHJvZ3Jlc3NCYXIgPCBSV0RXaW5kb3cKICBkZWYgaW5pdGlh # bGl6ZShyZWZyZXNoLCBwcm9ncmVzcykKICAgIHMJPSAiIgogICAgcyA8PCAi # PHdpbmRvdyB0aXRsZT0nUldEIFByb2dyZXNzJyBub2JhY2tidXR0b25zIG5v # Y2xvc2VidXR0b24gcmVmcmVzaD0nI3tyZWZyZXNofSc+IgogICAgaWYgcHJv # Z3Jlc3MubGVuZ3RoID09IDEKICAgICAgcHJvZ3Jlc3MuZWFjaCBkbyB8Y2Fw # dGlvbiwgdmFsdWV8CiAgICAgICAgcyA8PCAiPHA+I3tjYXB0aW9ufTwvcD48 # cHJvZ3Jlc3NiYXIgdmFsdWU9JyN7dmFsdWV9Jy8+PHA+I3soMTAwKnZhbHVl # KS50b19pfSUlPC9wPiIKICAgICAgZW5kCiAgICBlbHNlCiAgICAgIHMgPDwg # Ijx0YWJsZT4iCiAgICAgIHByb2dyZXNzLmVhY2ggZG8gfGNhcHRpb24sIHZh # bHVlfAogICAgICAgIHMgPDwgIjxyb3c+PHAgYWxpZ249J2xlZnQnPiN7Y2Fw # dGlvbn08L3A+PHByb2dyZXNzYmFyIHZhbHVlPScje3ZhbHVlfScvPjxwIGFs # aWduPSdyaWdodCc+I3soMTAwKnZhbHVlKS50b19pfSUlPC9wPjwvcm93PiIK # ICAgICAgZW5kCiAgICAgIHMgPDwgIjwvdGFibGU+IgogICAgZW5kCiAgICBz # IDw8ICI8Y2FuY2VsLz4iCiAgICBzIDw8ICI8L3dpbmRvdz4iCiAgICBzdXBl # cihzKQogIGVuZAplbmQKCmNsYXNzIFJXRERvbmUgPCBSV0RXaW5kb3cKICBk # ZWYgaW5pdGlhbGl6ZShleGl0YnJvd3NlcikKICAgIHN1cGVyKCI8d2luZG93 # IHRpdGxlPSdSV0QgTWVzc2FnZScgbm9iYWNrYnV0dG9ucyBub2Nsb3NlYnV0 # dG9uPjxwPkRvbmUuPC9wPjxpPihTb21lIGJyb3dzZXJzIGRvbid0IGNsb3Nl # LDxicj5iZWNhdXNlIG9mIHNlY3VyaXR5IHJlYXNvbnMuKTwvaT48aG9yaXpv # bnRhbD48Y2xvc2UvPiN7ZXhpdGJyb3dzZXIgPyAiIiA6ICI8YnV0dG9uIGNh # cHRpb249J0FnYWluJy8+In08L2hvcml6b250YWw+I3tleGl0YnJvd3NlciA/ # ICI8Y2xvc2V3aW5kb3cvPiIgOiAiIn08L3dpbmRvdz4iKQogIGVuZAplbmQK # CmNsYXNzIFJXRGlhbG9nCiAgZGVmIGluaXRpYWxpemUoeG1sKQogICAgQHJ3 # ZF94bWwJCQk9IHhtbAogICAgQHJ3ZF9leGl0YnJvd3NlcgkJPSBmYWxzZQog # ICAgQHJ3ZF9oaXN0b3J5CQk9IFtdCiAgICBAcndkX2lnbm9yZV92YXJzCQk9 # IFtdCiAgICBAcndkX2NhbGxfYWZ0ZXJfYmFjawk9IFtdCiAgICBAcndkX3Rp # bWUJCQk9IFRpbWUubm93CgogICAgJHJ3ZF9hcHB2YXJzCT0ge30JaWYgJHJ3 # ZF9hcHB2YXJzLm5pbD8KICAgIFhNTC5uZXcoeG1sKS5wYXJzZShPcGVuVGFn # LCAiYXBwbGljYXRpb24iKSBkbyB8dHlwZSwgb2JqfAogICAgICBvYmouYXJn # cy5kZWVwX2R1cC5lYWNoIGRvIHxrLCB2fAogICAgICAgICRyd2RfYXBwdmFy # c1trXQk9IHYKICAgICAgZW5kCiAgICBlbmQKICBlbmQKCiAgZGVmIHNlbGYu # ZmlsZShyd2RmaWxlLCAqYXJncykKICAgIG5ldyhGaWxlLm5ldyhyd2RmaWxl # KS5yZWFkbGluZXMsICphcmdzKQogIGVuZAoKICBkZWYgc2VydmUocG9ydD1u # aWwsIGF1dGg9bmlsLCByZWFsbT1zZWxmLmNsYXNzLnRvX3MpCiAgICBleGl0 # CWlmICRyd2RfZXhpdAoKICAgIHJhaXNlICJSV0QgaXMgbm90IGluaXRpYWxp # emVkLiIJaWYgQHJ3ZF94bWwubmlsPwoKICAgIGxvdywgaGlnaAk9IEVOVlsi # UldEUE9SVFMiXS5zcGxpdCgvW15cZCtdLykKICAgIGhpZ2gJPSBsb3cJaWYg # aGlnaC5uaWw/CiAgICBsb3csIGhpZ2gJPSBsb3cudG9faSwgaGlnaC50b19p # CgogICAgaW8JCT0gbmlsCgogICAgcG9ydCwgaW8JPSBUQ1BTZXJ2ZXIuZnJl # ZXBvcnQobG93LCBoaWdoLCAobm90IGF1dGgubmlsPykpCWlmIHBvcnQubmls # PwogICAgcmFpc2UgIk5vIGZyZWUgVENQIHBvcnQuIgkJCQkJCWlmIHBvcnQu # bmlsPwoKICAgIHBvcnQJPSBwb3J0LnRvX2kKCiAgICBAcndkX3NlcnZlcgk9 # IFJXRFNlcnZlci5uZXcoc2VsZiwgcG9ydCwgaW8sIGF1dGgsIHJlYWxtKQoK # ICAgIHNlbGYKICBlbmQKCiAgZGVmIHJlbmRlcihyZXMsIHBhdGgsIHBvc3Qs # IGRvd25sb2FkLCBkb3dubG9hZGZpbGUsIHBkYSwgc2Vzc2lvbmlkKQoJCSMg # QXZvaWQgYSB0aW1lb3V0LgoKICAgIEByd2RfdGltZQkJPSBUaW1lLm5vdwoK # CQkjIEluaXRpYWxpemUgc29tZSB2YXJzLgoKICAgIHZhcnMJCT0gSGFzaC5u # ZXcJaWYgdmFycy5uaWw/CiAgICBAcndkX3N3aXRjaGVzCT0gSGFzaC5uZXcJ # aWYgQHJ3ZF9zd2l0Y2hlcy5uaWw/CgogICAgZG9uZQkJPSBmYWxzZQogICAg # aGVscAkJPSBmYWxzZQogICAgYmFjawkJPSBmYWxzZQogICAgdGFiCQkJPSAi # IgogICAgQHJ3ZF9tc2d0eXBlCT0gbmlsCWlmIEByd2RfcHJvZ3Jlc3NfdGhy # ZWFkLm5pbD8KICAgIEByd2RfZG93bmxvYWQJPSBuaWwKICAgIEByd2RfZG93 # bmxvYWRfZmlsZQk9IG5pbAoKCQkjIFN3aXRjaGVzIGFyZSB1c2VkIGZvciBj # aGVja2JveGVzLgoKICAgIEByd2Rfc3dpdGNoZXMuZWFjaCBkbyB8a2V5LCB2 # YWx1ZXwKICAgICAgdmFyc1trZXldCT0gIm9mZiIKICAgIGVuZAoKICAgIEBy # d2Rfc3dpdGNoZXMJPSBIYXNoLm5ldwoKCQkjIENvcHkgdGhlIHZhcnMgZnJv # bSB0aGUgd2luZG93IHRvIHZhcnMuIHZhcnMgd2lsIGxhdGVyIG9uIGJlIGNv # cGllZCB0byBpbnN0YW5jZSB2YXJpYWJsZXMuCgogICAgcG9zdC5zb3J0LmVh # Y2ggZG8gfGtleSwgdmFsdWV8CiAgICAgIHB1dHMgIlBvc3Q6ICN7a2V5fSAt # PiAje3ZhbHVlLmZyb21faHRtbC5pbnNwZWN0fSIJaWYgJHJ3ZF9kZWJ1ZwoK # ICAgICAgdmFyc1trZXldCT0gdmFsdWUuZnJvbV9odG1sCiAgICBlbmQKCgkJ # IyBTdGFjayBoYW5kbGluZyBmb3IgcndkX2FjdGlvbiwgcndkX3dpbmRvdyBh # bmQgcndkX3RhYi4KCiAgICBAcndkX2FjdGlvbgkJCT0gdmFyc1sicndkX2Fj # dGlvbiJdCQlpZiB2YXJzLmluY2x1ZGU/KCJyd2RfYWN0aW9uIikKICAgIEBy # d2RfYWN0aW9uLCBAcndkX2FyZ3MJPSBAcndkX2FjdGlvbi5zcGxpdCgvXC8v # LCAyKQl1bmxlc3MgQHJ3ZF9hY3Rpb24ubmlsPwogICAgQHJ3ZF9hY3Rpb24s # IHJlc3QJCT0gQHJ3ZF9hY3Rpb24uc3BsaXQoL1w/LykJdW5sZXNzIEByd2Rf # YWN0aW9uLm5pbD8KCiAgICBAcndkX3JlZnJlc2hfYWN0aW9uCQk9IChAcndk # X2FjdGlvbiBvciBAcndkX3JlZnJlc2hfYWN0aW9uIG9yICJtYWluIikKCiAg # ICB1bmxlc3MgcmVzdC5uaWw/CiAgICAgIHJlc3QuZWFjaCBkbyB8c3wKICAg # ICAgICBrLCB2CT0gcy5zcGxpdCgvPS8sIDIpCiAgICAgICAgdmFyc1trXQk9 # IHYKICAgICAgZW5kCiAgICBlbmQKCiAgICBpZiBAcndkX2FjdGlvbiA9PSAi # cndkX2NhbmNlbCIKICAgICAgQHJ3ZF9wcm9ncmVzc190aHJlYWQua2lsbAkJ # dW5sZXNzIEByd2RfcHJvZ3Jlc3NfdGhyZWFkLm5pbD8KICAgICAgQHJ3ZF9w # cm9ncmVzc190aHJlYWQJPSBuaWwKICAgICAgQHJ3ZF9hY3Rpb24JCT0gInJ3 # ZF9iYWNrIgogICAgZW5kCgogICAgQHJ3ZF9oaXN0b3J5CT0gW1sibWFpbiIs # IFtdLCAibWFpbiIsICIiXV0JaWYgQHJ3ZF9oaXN0b3J5LmVtcHR5PwoKICAg # IGlmIEByd2RfYWN0aW9uID1+IC9ecndkX3RhYl8vCiAgICAgIEByd2RfdGFi # CT0gQHJ3ZF9hY3Rpb24uc3ViKC9ecndkX3RhYl8vLCAiIikKICAgICAgQHJ3 # ZF9oaXN0b3J5Wy0xXVszXQk9IEByd2RfdGFiCiAgICBlbHNlCiAgICAgIGNh # c2UgQHJ3ZF9hY3Rpb24KICAgICAgd2hlbiAicndkX2JhY2siCiAgICAgICAg # QHJ3ZF9oaXN0b3J5LnBvcAogICAgICAgIEByd2RfYWN0aW9uCQkJPSAoQHJ3 # ZF9oaXN0b3J5Wy0xXSBvciBbbmlsLCBuaWwsIG5pbF0pWzBdCiAgICAgICAg # QHJ3ZF9hcmdzCQkJPSAoQHJ3ZF9oaXN0b3J5Wy0xXSBvciBbbmlsLCBuaWws # IG5pbF0pWzFdCiAgICAgICAgQHJ3ZF93aW5kb3cJCQk9IChAcndkX2hpc3Rv # cnlbLTFdIG9yIFtuaWwsIG5pbCwgbmlsXSlbMl0KICAgICAgICBAcndkX3Rh # YgkJCT0gKEByd2RfaGlzdG9yeVstMV0gb3IgW25pbCwgbmlsLCBuaWxdKVsz # XQogICAgICAgIGJhY2sJCQkJPSB0cnVlCiAgICAgIHdoZW4gInJ3ZF9oZWxw # IgogICAgICAgIGhlbHAJCQkJPSB0cnVlCiAgICAgIHdoZW4gInJ3ZF9tYWlu # IgogICAgICAgIEByd2RfYWN0aW9uCQkJPSBuaWwKICAgICAgICBAcndkX3dp # bmRvdwkJCT0gbmlsCiAgICAgICAgQHJ3ZF90YWIJCQk9IG5pbAogICAgICAg # IEByd2RfaGlzdG9yeQkJCT0gW10KICAgICAgd2hlbiAicndkX3F1aXQiCiAg # ICAgICAgZG9uZQkJCQk9IHRydWUKICAgICAgZWxzZQogICAgICBlbmQKCgkJ # IyBIaXN0b3J5IHN0dWZmCgogICAgICBAcndkX2hpc3RvcnkJPSBAcndkX2hp # c3RvcnlbLTEwMC4uLTFdCWlmIEByd2RfaGlzdG9yeS5sZW5ndGggPj0gMTAw # CiAgICAgIEByd2RfYWN0aW9uCT0gIm1haW4iCQkJaWYgQHJ3ZF9hY3Rpb24u # bmlsPwogICAgICBAcndkX2FjdGlvbgk9ICJtYWluIgkJCWlmIEByd2RfYWN0 # aW9uLmVtcHR5PwogICAgICBAcndkX3dpbmRvdwk9ICJtYWluIgkJCWlmIEBy # d2Rfd2luZG93Lm5pbD8KICAgICAgQHJ3ZF93aW5kb3cJPSAibWFpbiIJCQlp # ZiBAcndkX3dpbmRvdy5lbXB0eT8KICAgICAgQHJ3ZF90YWIJCT0gIiIJCQkJ # aWYgQHJ3ZF90YWIubmlsPwogICAgICBAcndkX2FyZ3MJCT0gW10JCQkJaWYg # QHJ3ZF9hcmdzLm5pbD8KICAgICAgQHJ3ZF9hcmdzCQk9IFtdCQkJCWlmIEBy # d2RfYWN0aW9uID09ICJtYWluIgoKICAgICAgdmFyc1sicndkX2FjdGlvbiJd # CT0gQHJ3ZF9hY3Rpb24KICAgICAgdmFyc1sicndkX3dpbmRvdyJdCT0gQHJ3 # ZF93aW5kb3cKICAgICAgdmFyc1sicndkX3RhYiJdCQk9IEByd2RfdGFiCgoJ # CSMgQ29weSB2YXJzIGZyb20gd2luZG93IHRvIGluc3RhbmNlLgoKICAgICAg # dmFycy5lYWNoIGRvIHxrLCB2fAogICAgICAgIGluc3RhbmNlX2V2YWwgIkAj # e2t9CT0gdmFyc1snI3trfSddIgkJaWYgKChub3Qgay5lbXB0eT8pIGFuZCBr # LnNjYW4oL15yd2RfLykuZW1wdHk/IGFuZCBub3QgQHJ3ZF9pZ25vcmVfdmFy # cy5pbmNsdWRlPygiQCN7a30iKSkKICAgICAgZW5kCgoJCSMgQ2FsbGJhY2su # CgogICAgICBpZiAobm90IGJhY2spIG9yIEByd2RfY2FsbF9hZnRlcl9iYWNr # LmluY2x1ZGU/KEByd2RfYWN0aW9uKQogICAgICAgIHVubGVzcyBAcndkX2Fj # dGlvbiA9fiAvXnJ3ZF8vCiAgICAgICAgICBwdXRzICJNZXRob2Q6ICN7QHJ3 # ZF9hY3Rpb259KCN7QHJ3ZF9hcmdzLmpvaW4oIiwgIil9KSIJaWYgJHJ3ZF9k # ZWJ1ZwogICAgICAgICAgaWYgbWV0aG9kcy5pbmNsdWRlPyhAcndkX2FjdGlv # bikKICAgICAgICAgICAgbWV0aG9kKEByd2RfYWN0aW9uKS5jYWxsKCpAcndk # X2FyZ3MpCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHB1dHMgIk1ldGhv # ZCAnJXMnIGlzIG5vdCBkZWZpbmVkLiIgJSBAcndkX2FjdGlvbgogICAgICAg # ICAgZW5kCiAgICAgICAgZW5kCgoJCSMgSGlzdG9yeSBzdHVmZgoKICAgICAg # ICBAcndkX2hpc3RvcnkJPSBbWyJtYWluIiwgW10sICJtYWluIiwgIiJdXQlp # ZiBAcndkX2FjdGlvbiA9PSAibWFpbiIKICAgICAgICBAcndkX2hpc3RvcnkJ # PSBbWyJtYWluIiwgW10sICJtYWluIiwgIiJdXQlpZiBAcndkX2hpc3Rvcnku # ZW1wdHk/CgogICAgICAgIGEJCT0gW0Byd2RfYWN0aW9uLCBAcndkX2FyZ3Ms # IEByd2Rfd2luZG93LCBAcndkX3RhYl0KCiAgICAgICAgQHJ3ZF9oaXN0b3J5 # LnB1c2ggYQkJCQlpZiAoQHJ3ZF9oaXN0b3J5Wy0xXSAhPSBhIG9yIG5vdCBA # cndkX21zZ3R5cGUubmlsPykKCiAgICAgICAgaWYgQHJ3ZF93aW5kb3cgPT0g # InJ3ZF9iYWNrIgogICAgICAgICAgQHJ3ZF9oaXN0b3J5LnBvcAogICAgICAg # ICAgQHJ3ZF9oaXN0b3J5LnBvcAogICAgICAgICAgQHJ3ZF9hY3Rpb24JCQk9 # IChAcndkX2hpc3RvcnlbLTFdIG9yIFtuaWwsIG5pbCwgbmlsXSlbMF0KICAg # ICAgICAgIEByd2RfYXJncwkJCT0gKEByd2RfaGlzdG9yeVstMV0gb3IgW25p # bCwgbmlsLCBuaWxdKVsxXQogICAgICAgICAgQHJ3ZF93aW5kb3cJCQk9IChA # cndkX2hpc3RvcnlbLTFdIG9yIFtuaWwsIG5pbCwgbmlsXSlbMl0KICAgICAg # ICAgIEByd2RfdGFiCQkJPSAoQHJ3ZF9oaXN0b3J5Wy0xXSBvciBbbmlsLCBu # aWwsIG5pbF0pWzNdCiAgICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5kCgoJ # CSMgQ29weSB2YXJzIGZyb20gaW5zdGFuY2UgdG8gd2luZG93LgoKICAgIGlu # c3RhbmNlX3ZhcmlhYmxlcy5lYWNoIGRvIHxrfAogICAgICBrLnN1YiEoL15A # LywgIiIpCiAgICAgIGluc3RhbmNlX2V2YWwgInZhcnNbJyN7a30nXSA9IEAj # e2t9LnRvX3MiCWlmIChrLnNjYW4oL15yd2RfLykuZW1wdHk/IGFuZCBub3Qg # QHJ3ZF9pZ25vcmVfdmFycy5pbmNsdWRlPygiQCN7a30iKSkKICAgIGVuZAoK # CQkjIGp1c3QgaWdub3JlLgoKICAgIHZhcnMuc29ydC5lYWNoIGRvIHxrZXks # IHZhbHVlfAogICAgICBwdXRzICJQcmU6ICN7a2V5fSAtPiAje3ZhbHVlLmlu # c3BlY3R9IglpZiAkcndkX2RlYnVnCiAgICBlbmQKCgoJCSMgQW5zd2VyIHRv # IGJyb3dzZXIuCgogICAgaWYgZG9uZQogICAgICByZXMgPDwgUldERG9uZS5u # ZXcoQHJ3ZF9leGl0YnJvd3NlcikucmVuZGVyKHBkYSkKICAgIGVsc2UKICAg # ICAgaWYgbm90IEByd2RfZG93bmxvYWQubmlsPwogICAgICAgIHB1dHMgIkRv # d25sb2FkOiAje0Byd2Rfd2luZG93fSIJCWlmICRyd2RfZGVidWcKCiAgICAg # ICAgZG93bmxvYWQJPDwgQHJ3ZF9kb3dubG9hZAogICAgICAgIGRvd25sb2Fk # ZmlsZQk8PCBAcndkX2Rvd25sb2FkX2ZpbGUKICAgICAgZWxzZQogICAgICAg # IGlmIG5vdCBAcndkX3Byb2dyZXNzX3RocmVhZC5uaWw/CiAgICAgICAgICBy # ZXMgPDwgUldEUHJvZ3Jlc3NCYXIubmV3KEByd2RfcHJvZ3Jlc3NfcmVmcmVz # aCwgQHJ3ZF9wcm9ncmVzc19wcm9ncmVzcykucmVuZGVyKHBkYSwgQHJ3ZF9y # ZWZyZXNoX2FjdGlvbikKICAgICAgICBlbHNlCiAgICAgICAgICBpZiBub3Qg # QHJ3ZF9tc2d0eXBlLm5pbD8KICAgICAgICAgICAgcmVzIDw8IFJXRE1lc3Nh # Z2UubmV3KEByd2RfbXNnKS5yZW5kZXIocGRhKQlpZiBAcndkX21zZ3R5cGUg # PT0gIm1lc3NhZ2UiCiAgICAgICAgICAgIHJlcyA8PCBSV0RFcnJvci5uZXco # QHJ3ZF9tc2cpLnJlbmRlcihwZGEpCWlmIEByd2RfbXNndHlwZSA9PSAiZXJy # b3IiCiAgICAgICAgICAgIHJlcyA8PCBAcndkX21zZwkJCQlpZiBAcndkX21z # Z3R5cGUgPT0gInRleHQiCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHB1 # dHMgIldpbmRvdzogI3tAcndkX3dpbmRvd30iCQlpZiAkcndkX2RlYnVnCiAg # ICAgICAgICAgIHB1dHMgIlRhYjogI3tAcndkX3RhYn0iCQlpZiAkcndkX2Rl # YnVnCgogICAgICAgICAgICByZXMgPDwgUldEV2luZG93Lm5ldyhAcndkX3ht # bCwgQHJ3ZF93aW5kb3cpLnJlbmRlcihwZGEsIEByd2RfcmVmcmVzaF9hY3Rp # b24sIHZhcnMsIEByd2Rfc3dpdGNoZXMsIGhlbHAsIEByd2RfdGFiKQogICAg # ICAgICAgZW5kCiAgICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5kCgogICAg # cmV0dXJuIGRvbmUKICBlbmQKCiAgZGVmIHNhbWV3aW5kb3c/CiAgICBAcndk # X2hpc3RvcnlbLTFdWzJdID09IEByd2Rfd2luZG93CiAgZW5kCgogIGRlZiBt # ZXNzYWdlKG1zZywgJmJsb2NrKQogICAgQHJ3ZF9tc2cJCT0gbXNnCiAgICBA # cndkX21zZ3R5cGUJPSAibWVzc2FnZSIKICBlbmQKCiAgZGVmIGVycm9yKG1z # ZywgJmJsb2NrKQogICAgQHJ3ZF9tc2cJCT0gbXNnCiAgICBAcndkX21zZ3R5 # cGUJPSAiZXJyb3IiCiAgZW5kCgogIGRlZiB0ZXh0KG1zZykKICAgIEByd2Rf # bXNnCQk9ICI8aHRtbD48Ym9keT48cHJlPiN7bXNnfTwvcHJlPjwvYm9keT48 # L2h0bWw+IgogICAgQHJ3ZF9tc2d0eXBlCT0gInRleHQiCiAgZW5kCgogIGRl # ZiBwcm9ncmVzc2JhcihyZWZyZXNoLCAqcHJvZ3Jlc3MpCiAgICBAcndkX3By # b2dyZXNzX3JlZnJlc2gJPSAocmVmcmVzaCBvciAxKQogICAgQHJ3ZF9wcm9n # cmVzc19wcm9ncmVzcwk9IFtdCgogICAgd2hpbGUgbm90IHByb2dyZXNzLmVt # cHR5PwogICAgICBzCT0gKHByb2dyZXNzLnNoaWZ0IG9yICIiKQogICAgICBp # ZiBzLmtpbmRfb2Y/KEFycmF5KQogICAgICAgIGNhcHRpb24sIHZhbHVlCT0g # cwogICAgICAgIHZhbHVlCT0gKHZhbHVlIG9yIDAuMCkudG9fZgogICAgICBl # bHNlCiAgICAgICAgY2FwdGlvbgk9IHMKICAgICAgICB2YWx1ZQk9IChwcm9n # cmVzcy5zaGlmdCBvciAwLjApLnRvX2YKICAgICAgZW5kCgogICAgICBAcndk # X3Byb2dyZXNzX3Byb2dyZXNzIDw8IFtjYXB0aW9uLCB2YWx1ZV0KICAgIGVu # ZAoKICAgIGlmIEByd2RfcHJvZ3Jlc3NfdGhyZWFkLm5pbD8KICAgICAgQHJ3 # ZF9wcm9ncmVzc19wcm9ncmVzcy5lYWNoIGRvIHxhfAogICAgICAgIGFbMV0J # PSAwLjAKICAgICAgZW5kCgogICAgICBAcndkX3Byb2dyZXNzX3RocmVhZCA9 # CiAgICAgIFRocmVhZC5uZXcgZG8KICAgICAgICB5aWVsZAogICAgICBlbmQK # ICAgICAgVGhyZWFkLnBhc3MKICAgIGVuZAoKICAgIEByd2RfcHJvZ3Jlc3Nf # dGhyZWFkCT0gbmlsCXVubGVzcyBAcndkX3Byb2dyZXNzX3RocmVhZC5hbGl2 # ZT8KICBlbmQKCiAgZGVmIGRvd25sb2FkKGRhdGEsIGZpbGVuYW1lPSIiKQog # ICAgQHJ3ZF9kb3dubG9hZAk9IGRhdGEKICAgIEByd2RfZG93bmxvYWRfZmls # ZQk9IGZpbGVuYW1lCiAgZW5kCgogIGRlZiBleGl0YnJvd3NlcgogICAgQHJ3 # ZF9leGl0YnJvd3Nlcgk9IHRydWUKICBlbmQKCiAgZGVmIHRpbWVvdXQodGlt # ZW91dCwgaW50ZXJ2YWw9MSkKICAgIEByd2RfdGltZW91dAk9IHRpbWVvdXQK # CiAgICB1bmxlc3MgQHJ3ZF90aW1lb3V0X3RocmVhZAogICAgICBAcndkX3Rp # bWVvdXRfdGhyZWFkID0KICAgICAgVGhyZWFkLm5ldyBkbwogICAgICAgIGxv # b3AgZG8KICAgICAgICAgIGlmIFRpbWUubm93IC0gQHJ3ZF90aW1lID4gQHJ3 # ZF90aW1lb3V0CiAgICAgICAgICAgICRzdGRlcnIucHV0cyAiRXhpdGluZyBk # dWUgdG8gdGltZW91dCAoI3tAcndkX3RpbWVvdXR9IHNlY29uZHMpLiIKICAg # ICAgICAgICAgZXhpdCAxCiAgICAgICAgICBlbmQKICAgICAgICAgIHNsZWVw # IGludGVydmFsCiAgICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5kCiAgZW5k # CmVuZAoKY2xhc3MgUldETG9naW4gPCBSV0RpYWxvZwogIGRlZiBpbml0aWFs # aXplKHJlYWxtKQogICAgc3VwZXIoIjx3aW5kb3cgbmFtZT0nbWFpbicgdGl0 # bGU9J1JXRCBMb2dpbiBmb3IgI3tyZWFsbX0nIG5vYmFja2J1dHRvbnMgbm9j # bG9zZWJ1dHRvbj48dGFibGU+PHJvdz48cCBhbGlnbj0ncmlnaHQnPlVzZXJu # YW1lOjwvcD48dGV4dCBuYW1lPSdyd2RfYScvPjwvcm93Pjxyb3c+PHAgYWxp # Z249J3JpZ2h0Jz5QYXNzd29yZDo8L3A+PHBhc3N3b3JkIG5hbWU9J3J3ZF9i # Jy8+PC9yb3c+PC90YWJsZT48YnV0dG9uIGNhcHRpb249J0xvZ2luJy8+PC93 # aW5kb3c+IikKICBlbmQKZW5kCgpjbGFzcyBSV0RUaW1lT3V0IDwgUldEaWFs # b2cKICBkZWYgaW5pdGlhbGl6ZQogICAgc3VwZXIoIjx3aW5kb3cgbmFtZT0n # bWFpbicgdGl0bGU9J1JXRCBFcnJvcicgbm9iYWNrYnV0dG9ucyBub2Nsb3Nl # YnV0dG9uPjxwPjxiPkVycm9yOjwvYj4gU2Vzc2lvbiBoYXMgZXhwaXJlZC48 # L3A+PGJ1dHRvbiBjYXB0aW9uPSdOZXcgc2Vzc2lvbicvPjwvd2luZG93PiIp # CiAgZW5kCmVuZAoKY2xhc3MgU2Vzc2lvbkNsZWFudXAKICBkZWYgaW5pdGlh # bGl6ZShzZXNzaW9ucywgaW50ZXJ2YWwsIHRpbWVvdXQpCiAgICBldmVyeShp # bnRlcnZhbCkgZG8KICAgICAgc2Vzc2lvbnMuZGVsZXRlX2lmIGRvIHxpZCwg # c2Vzc2lvbnwKICAgICAgICB0aW1lCT0gVGltZS5ub3cudG9faSAtIHNlc3Np # b24ubGFzdGFjY2Vzcy50b19pCgogICAgICAgIHB1dHMgIlNlc3Npb24gJXMg # ZGVsZXRlZCIgJSBpZAlpZiB0aW1lID4gdGltZW91dAoKICAgICAgICB0aW1l # ID4gdGltZW91dAogICAgICBlbmQKICAgIGVuZAogIGVuZAplbmQKCmNsYXNz # IFNlc3Npb25zCiAgZGVmIGluaXRpYWxpemUocmFjaywgY2xlYW51cCkKICAg # IEByYWNrCT0gcmFjay50b19zCiAgICBAY2xlYW51cAk9IFNlc3Npb25DbGVh # bnVwLm5ldyhzZWxmLCAzNjAwLCAyNCozNjAwKQlpZiBjbGVhbnVwCiAgICBA # c2Vzc2lvbnMJPSB7fQogIGVuZAoKICBkZWYgW10oc2Vzc2lvbmlkKQogICAg # QHNlc3Npb25zW3Nlc3Npb25pZF0KICBlbmQKCiAgZGVmIFtdPShzZXNzaW9u # aWQsIHZhbHVlKQogICAgQHNlc3Npb25zW3Nlc3Npb25pZF0JPSB2YWx1ZQog # IGVuZAoKICBkZWYgZGVsZXRlKHNlc3Npb25pZCkKICAgIEBzZXNzaW9ucy5k # ZWxldGUoc2Vzc2lvbmlkKQogIGVuZAoKICBkZWYgZGVsZXRlX2lmKCZibG9j # aykKICAgIEBzZXNzaW9ucy5kZWxldGVfaWZ7fGssIHZ8IGJsb2NrLmNhbGwo # aywgdil9CiAgZW5kCgogIGRlZiBpbmNsdWRlPyhzZXNzaW9uaWQpCiAgICBA # c2Vzc2lvbnMuaW5jbHVkZT8oc2Vzc2lvbmlkKQogIGVuZAplbmQKCmNsYXNz # IFJXRFNlc3Npb24gPCBIYXNoCiAgYXR0cl9yZWFkZXIgOnNlc3Npb25pZAog # IGF0dHJfcmVhZGVyIDpsYXN0YWNjZXNzCiAgYXR0cl9yZWFkZXIgOmF1dGhl # bnRpY2F0ZWQKICBhdHRyX3dyaXRlciA6YXV0aGVudGljYXRlZAoKICBkZWYg # aW5pdGlhbGl6ZShzZXNzaW9uaWQ9bmlsKQogICAgQHNlc3Npb25pZAkJPSBz # ZXNzaW9uaWQKICAgIEBsYXN0YWNjZXNzCQk9IFRpbWUubm93CiAgICBAYXV0 # aGVudGljYXRlZAk9IGZhbHNlCiAgZW5kCgogIGRlZiB0b3VjaAogICAgQGxh # c3RhY2Nlc3MJPSBUaW1lLm5vdwogIGVuZAoKICBkZWYgcmVuZGVyKHJlcywg # cGF0aCwgcG9zdCwgZG93bmxvYWQsIGRvd25sb2FkZmlsZSwgcGRhKQogICAg # ZG9uZQk9IHNlbGZbIm9iamVjdCJdLnJlbmRlcihyZXMsIHBhdGgsIHBvc3Qs # IGRvd25sb2FkLCBkb3dubG9hZGZpbGUsIHBkYSwgQHNlc3Npb25pZCkKCiAg # ICByZXMuZ3N1YiEoL1wkUldEX1NFU1NJT05cJC8sIGRvbmUgPyAiIiA6ICIj # e0BzZXNzaW9uaWR9IikKCiAgICByZXR1cm4gZG9uZQogIGVuZAplbmQKCmNs # YXNzIFJXRFNlcnZlcgogIGRlZiBpbml0aWFsaXplKG9iaiwgcG9ydCwgaW8s # IGF1dGgsIHJlYWxtKQogICAgQG9iamVjdAkJPSBvYmoKICAgIEBsb2NhbGJy # b3dzaW5nCT0gZmFsc2UKICAgIEBicm93c2Vyc3RhcnRlZAk9IGZhbHNlCiAg # ICBAc2Vzc2lvbnMJCT0gU2Vzc2lvbnMubmV3KG9iai5jbGFzcywgKG5vdCBh # dXRoLm5pbD8pKQoKICAgIGlmIGF1dGgubmlsPwogICAgICBAbG9jYWxicm93 # c2luZwk9IHRydWUKCiAgICAgIGlmIEVOVi5pbmNsdWRlPygiUldEQlJPV1NF # UiIpIGFuZCBub3QgRU5WWyJSV0RCUk9XU0VSIl0ubmlsPyBhbmQgbm90IEVO # VlsiUldEQlJPV1NFUiJdLmVtcHR5PwogICAgICAgIEBicm93c2Vyc3RhcnRl # ZAk9IHRydWUKICAgICAgICBAb2JqZWN0LmV4aXRicm93c2VyCgoJIyBTdGFy # dCBicm93c2VyLgoKICAgICAgICBAYnJvd3NlcnRocmVhZAk9CiAgICAgICAg # VGhyZWFkLm5ldyBkbwogICAgICAgICAgcHV0cyAiU3RhcnRpbmcgdGhlIGJy # b3dzZXIuLi4iCgogICAgICAgICAgI2lmIEVOVlsiUldEQlJPV1NFUiJdLmRv # d25jYXNlID1+IC9pZXhwbG9yZS8JIyA/Pz8KICAgICAgICAgICAgI0BpZQk9 # IElFLm5ldygiaHR0cDovL2xvY2FsaG9zdDoje3BvcnR9LyIpCiAgICAgICAg # ICAjZWxzZQogICAgICAgICAgICBicm93c2VyCT0gRU5WWyJSV0RCUk9XU0VS # Il0uZHVwCiAgICAgICAgICAgIHVybAkJPSAiaHR0cDovL2xvY2FsaG9zdDol # cy8iICUgW3BvcnRdCgogICAgICAgICAgICByZQkJPSAvWyQlXTFcYi8KICAg # ICAgICAgICAgY29tbWFuZAk9ICIlcyBcIiVzXCIiICUgW2Jyb3dzZXIsIHVy # bF0KICAgICAgICAgICAgY29tbWFuZAk9IGJyb3dzZXIuZ3N1YihyZSwgdXJs # KQlpZiBicm93c2VyID1+IHJlCgogICAgICAgICAgICBjb21tYW5kLmdzdWIh # KC8lcG9ydCUvLCBwb3J0LnRvX3MpCgogICAgICAgICAgICBzeXN0ZW0oY29t # bWFuZCkgb3IgJHN0ZGVyci5wdXRzICJTdGFydGluZyBvZiB0aGUgYnJvd3Nl # ciBmYWlsZWQsIG9yIHRoZSBicm93c2VyIHRlcm1pbmF0ZWQgYWJub3JtYWxs # eS5cbkNvbW1hbmQgPT4gI3tjb21tYW5kfSIKICAgICAgICAgICNlbmQKCiAg # ICAgICAgICBwdXRzICJUaGUgYnJvd3NlciBoYXMgdGVybWluYXRlZC4iCiAg # ICAgICAgZW5kCiAgICAgIGVuZAogICAgZW5kCgoJIyBTdGFydCBzZXJ2ZXIu # CgogICAgcG9ydGlvCQk9IHBvcnQKICAgIHBvcnRpbwkJPSBbcG9ydCwgaW9d # CXVubGVzcyBpby5uaWw/CiAgICB0aHJlYWRsaW1pdGVyCT0gVGhyZWFkTGlt # aXRlci5uZXcoMSkKCiAgICBIVFRQU2VydmVyLnNlcnZlKHBvcnRpbywgKG5v # dCBhdXRoLm5pbD8pKSBkbyB8cmVxLCByZXNwfAogICAgICB0aHJlYWRsaW1p # dGVyLndhaXQgZG8KICAgICAgICB2YXJzCT0ge30KICAgICAgICByZXEudmFy # cy5lYWNoIGRvIHxrLCB2fAogICAgICAgICAgdmFyc1trXQk9IHYuam9pbigi # XHQiKQogICAgICAgIGVuZAogICAgICAgIHBhZAk9IChyZXEucmVxdWVzdC5w # YXRoIG9yICIvIikKCiAgICAgICAgaWYgYXV0aC5raW5kX29mPyBTdHJpbmcK # ICAgICAgICAgIGZpbGUJPSAiI3tob21lfS8je2F1dGh9IgogICAgICAgICAg # YXV0aHMJPSB7fQogICAgICAgICAgYXV0aHMJPSBIYXNoLmZpbGUoZmlsZSkJ # aWYgRmlsZS5maWxlPyhmaWxlKQogICAgICAgIGVsc2UKICAgICAgICAgIGF1 # dGhzCT0gYXV0aAogICAgICAgIGVuZAoKICAgICAgICAjb2xkc2Vzc2lvbmlk # CT0gdmFyc1sicndkX3Nlc3Npb24iXQogICAgICAgIG9sZHNlc3Npb25pZAk9 # IHJlcS5jb29raWVzWyJzZXNzaW9uaWQiXQoKCQkjIFJldHJpZXZlIHNlc3Np # b24uCgogICAgICAgIHNlc3Npb24JPSBAc2Vzc2lvbnNbb2xkc2Vzc2lvbmlk # XQoKCQkjIEV2ZW50dWFsbHkgY3JlYXRlIG5ldyBzZXNzaW9uLgoKICAgICAg # ICBpZiBzZXNzaW9uLm5pbD8KICAgICAgICAgIHNlc3Npb25pZAk9IE1ENS5u # ZXcocmVxLnBlZXJhZGRyWzNdLnRvX3MgKyBAb2JqZWN0Lmluc3BlY3QudG9f # cyArICgiJTEuNmYiICUgVGltZS5ub3cudG9fZikpLnRvX3MJd2hpbGUgKHNl # c3Npb25pZCA9PSBuaWwgb3IgQHNlc3Npb25zLmluY2x1ZGU/KHNlc3Npb25p # ZCkpCiAgICAgICAgICBzZXNzaW9uCQk9IFJXRFNlc3Npb24ubmV3KHNlc3Np # b25pZCkKCiAgICAgICAgICBpZiBhdXRoLm5pbD8KICAgICAgICAgICAgc2Vz # c2lvblsib2JqZWN0Il0JCT0gQG9iamVjdAogICAgICAgICAgZWxzZQogICAg # ICAgICAgICBzZXNzaW9uWyJvYmplY3QiXQkJPSBAb2JqZWN0LmNsb25lCiAg # ICAgICAgICBlbmQKCiAgICAgICAgICBpZiBvbGRzZXNzaW9uaWQubmlsPyBv # ciBvbGRzZXNzaW9uaWQuZW1wdHk/CiAgICAgICAgICAgIGlmIG5vdCBhdXRo # Lm5pbD8gYW5kIG5vdCBhdXRoLmVtcHR5PyBhbmQgbm90IHNlc3Npb24uYXV0 # aGVudGljYXRlZCBhbmQgcGFkICF+IC9eXC9yd2RfLwoKCQkjIENoZWNrIGF1 # dGhlbnRpY2F0aW9uCgogICAgICAgICAgICAgIHVzCT0gdmFyc1sicndkX2Ei # XQogICAgICAgICAgICAgIHBhCT0gdmFyc1sicndkX2IiXQoKICAgICAgICAg # ICAgICBpZiB1cy5uaWw/IG9yIHBhLm5pbD8gb3IgYXV0aHNbdXNdICE9IHBh # CiAgICAgICAgICAgICAgICBzZXNzaW9uCQkJCT0gUldEU2Vzc2lvbi5uZXcK # ICAgICAgICAgICAgICAgIHNlc3Npb25bIm9iamVjdCJdCQk9IFJXRExvZ2lu # Lm5ldyhyZWFsbSkKICAgICAgICAgICAgICAgIHBhZAkJCQk9ICIvIgogICAg # ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHNlc3Npb24uYXV0aGVu # dGljYXRlZAkJPSB0cnVlCiAgICAgICAgICAgICAgICBAc2Vzc2lvbnNbc2Vz # c2lvbi5zZXNzaW9uaWRdCT0gc2Vzc2lvbgogICAgICAgICAgICAgIGVuZAog # ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgc2Vzc2lvbi5hdXRoZW50 # aWNhdGVkCQk9IHRydWUKICAgICAgICAgICAgICBAc2Vzc2lvbnNbc2Vzc2lv # bi5zZXNzaW9uaWRdCT0gc2Vzc2lvbgogICAgICAgICAgICBlbmQKICAgICAg # ICAgIGVsc2UKICAgICAgICAgICAgc2Vzc2lvbgkJPSBSV0RTZXNzaW9uLm5l # dwogICAgICAgICAgICBzZXNzaW9uWyJvYmplY3QiXQk9IFJXRFRpbWVPdXQu # bmV3CiAgICAgICAgICBlbmQKCiAgICAgICAgICB2YXJzCT0ge30KICAgICAg # ICBlbmQKCgkJIyBBdm9pZCB0aW1lb3V0LgoKICAgICAgICBzZXNzaW9uLnRv # dWNoCgogICAgICAgIGlmIHBhZCA9PSAiLyIKCgkJIyBTZXJ2ZSBtZXRob2Rz # L2NhbGxiYWNrcy4KCgkJIyBCdWlsZCBuZXcgcGFnZS4KCiAgICAgICAgICBk # b3dubG9hZAk9ICIiCiAgICAgICAgICBkb3dubG9hZGZpbGUJPSAiIgogICAg # ICAgICAgcmVzCQk9ICIiCgogICAgICAgICAgZG9uZQk9IHNlc3Npb24ucmVu # ZGVyKHJlcywgcGFkLCB2YXJzLCBkb3dubG9hZCwgZG93bmxvYWRmaWxlLCBy # ZXEucGRhPykKCiAgICAgICAgICBiZWdpbgogICAgICAgICAgICBpZiBkb3du # bG9hZC5lbXB0eT8KICAgICAgICAgICAgICByZXNwWyJDb250ZW50LVR5cGUi # XQkJPSAidGV4dC9odG1sIgogICAgICAgICAgICAgIGlmIGRvbmUKICAgICAg # ICAgICAgICAgIHJlc3AuY29va2llc1sic2Vzc2lvbmlkIl0JPSAiIgogICAg # ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJlc3AuY29va2llc1si # c2Vzc2lvbmlkIl0JPSBzZXNzaW9uLnNlc3Npb25pZAogICAgICAgICAgICAg # IGVuZAoKICAgICAgICAgICAgICByZXNwIDw8IHJlcwogICAgICAgICAgICBl # bHNlCiAgICAgICAgICAgICAgcmVzcFsiQ29udGVudC1UeXBlIl0JCT0gImFw # cGxpY2F0aW9uL29jdGV0LXN0cmVhbSIKICAgICAgICAgICAgICByZXNwWyJD # b250ZW50LURpc3Bvc2l0aW9uIl0JPSAiYXR0YWNobWVudDsiCiAgICAgICAg # ICAgICAgcmVzcFsiQ29udGVudC1EaXNwb3NpdGlvbiJdCT0gImF0dGFjaG1l # bnQ7IGZpbGVuYW1lPSVzIiAlIGRvd25sb2FkZmlsZQl1bmxlc3MgZG93bmxv # YWRmaWxlLmVtcHR5PwoKICAgICAgICAgICAgICByZXNwIDw8IGRvd25sb2Fk # CiAgICAgICAgICAgIGVuZAogICAgICAgICAgcmVzY3VlCiAgICAgICAgICAg # IHB1dHMgIlNlbmRpbmcgcmVzcG9uc2UgdG8gYnJvd3NlciBmYWlsZWQuIgoK # ICAgICAgICAgICAgQHNlc3Npb25zLmRlbGV0ZShzZXNzaW9uLnNlc3Npb25p # ZCkKICAgICAgICAgIGVuZAoKCQkjIEV2ZW50dWFsbHkgZGVsZXRlIHRoaXMg # c2Vzc2lvbi4KCiAgICAgICAgICBpZiBkb25lCiAgICAgICAgICAgIEBzZXNz # aW9ucy5kZWxldGUoc2Vzc2lvbi5zZXNzaW9uaWQpCgogICAgICAgICAgICBp # ZiBAbG9jYWxicm93c2luZwogICAgICAgICAgICAgIHJlc3Auc3RvcAoKICAg # ICAgICAgICAgICBpZiBAYnJvd3NlcnN0YXJ0ZWQgYW5kIG5vdCBAYnJvd3Nl # cnRocmVhZC5uaWw/IGFuZCBAYnJvd3NlcnRocmVhZC5hbGl2ZT8KICAgICAg # ICAgICAgICAgIHJlc3Auc3RvcCBkbwogICAgICAgICAgICAgICAgICBwdXRz # ICJXYWl0aW5nIGZvciB0aGUgYnJvd3NlciB0byB0ZXJtaW5hdGUuLi4iCgog # ICAgICAgICAgICAgICAgICBAYnJvd3NlcnRocmVhZC5qb2luCiAgICAgICAg # ICAgICAgICBlbmQKICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgZW5k # CiAgICAgICAgICBlbmQKCiAgICAgICAgZWxzZQoKCQkjIFNlcnZlIGZpbGVz # LgoKICAgICAgICAgIGlmIHBhZCA9PSAiL3J3ZF9waXhlbC5naWYiCiAgICAg # ICAgICAgIHJlc3BbIkNhY2hlLUNvbnRyb2wiXQk9ICJtYXgtYWdlPTg2NDAw # IgogICAgICAgICAgICByZXNwWyJDb250ZW50LVR5cGUiXQk9ICJpbWFnZS9n # aWYiCiAgICAgICAgICAgIHJlc3AgPDwgJHJ3ZF9waXhlbAogICAgICAgICAg # ZWxzZQogICAgICAgICAgICBpZiBzZXNzaW9uLmF1dGhlbnRpY2F0ZWQKICAg # ICAgICAgICAgICBwd2QJPSBEaXIucHdkCiAgICAgICAgICAgICAgZmlsZQk9 # IEZpbGUuZXhwYW5kX3BhdGgocGFkLmdzdWIoL15cLyovLCAiIiksICRyd2Rf # ZmlsZXMpCgogICAgICAgICAgICAgIGlmIG5vdCBmaWxlLmluZGV4KHB3ZCkg # PT0gMAogICAgICAgICAgICAgICAgcmVzcFsiQ29udGVudC1UeXBlIl0JPSAi # dGV4dC9odG1sIgogICAgICAgICAgICAgICAgcmVzcC5yZXNwb25zZQkJPSAi # SFRUUC8xLjAgNDAwIEJBRCBSRVFVRVNUIgogICAgICAgICAgICAgICAgcmVz # cCA8PCAiPGh0bWw+PGJvZHk+PHA+PGI+QmFkIFJlcXVlc3QuPC9iPiAoPHR0 # PiN7cGFkfTwvdHQ+KTwvcD48L2JvZHk+PC9odG1sPiIKICAgICAgICAgICAg # ICBlbHNpZiBGaWxlLmZpbGU/KGZpbGUpCiAgICAgICAgICAgICAgICByZXNw # IDw8IEZpbGUubmV3KGZpbGUsICJyYiIpLnJlYWQJcmVzY3VlIG5pbAogICAg # ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJlc3BbIkNvbnRlbnQt # VHlwZSJdCT0gInRleHQvaHRtbCIKICAgICAgICAgICAgICAgIHJlc3AucmVz # cG9uc2UJCT0gIkhUVFAvMS4wIDQwNCBOT1QgRk9VTkQiCiAgICAgICAgICAg # ICAgICByZXNwIDw8ICI8aHRtbD48Ym9keT48cD48Yj5Ob3QgZm91bmQuPC9i # PiAoPHR0PiN7cGFkfTwvdHQ+KTwvcD48L2JvZHk+PC9odG1sPiIKICAgICAg # ICAgICAgICBlbmQKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHJl # c3BbIkNvbnRlbnQtVHlwZSJdCT0gInRleHQvaHRtbCIKICAgICAgICAgICAg # ICByZXNwLnJlc3BvbnNlCQk9ICJIVFRQLzEuMCA/Pz8gTk9UIEFVVEhPUkla # RUQiCiAgICAgICAgICAgICAgcmVzcCA8PCAiPGh0bWw+PGJvZHk+PHA+PGI+ # Tm90IEF1dGhvcml6ZWQuPC9iPjwvcD48L2JvZHk+PC9odG1sPiIKICAgICAg # ICAgICAgZW5kCiAgICAgICAgICBlbmQKCiAgICAgICAgZW5kCgogICAgICBl # bmQKICAgIGVuZAogIGVuZAplbmQKCiRyd2RfaHRtbFsiREVGQVVMVCJdCT0g # Igo8IS0tIEdlbmVyYXRlZCBieSBSdWJ5V2ViRGlhbG9nLiAgICAgICAgICAg # ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+CjwhLS0g # Rm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBjb250YWN0IEVyaWsgVmVl # bnN0cmEgPHJ3ZEBlcmlrdmVlbi5kZHMubmw+LiAtLT4KPGh0bWw+CiAgPGhl # YWQ+CiAgICA8dGl0bGU+JVRJVExFJTwvdGl0bGU+CgogICAgPG1ldGEgaHR0 # cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0L2h0bWw7IGNo # YXJzZXQ9JUNIQVJTRVQlJz4KICAgIDxtZXRhIGh0dHAtZXF1aXY9J0NvbnRl # bnQtU3R5bGUtVHlwZScgY29udGVudD0ndGV4dC9jc3MnPgogICAgPG1ldGEg # aHR0cC1lcXVpdj0nUmVmcmVzaCcgY29udGVudD0nJVJFRlJFU0glLCBqYXZh # c2NyaXB0OmRvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+CgogICAgPGxp # bmsgcmVsPSdzaG9ydGN1dCBpY29uJyBocmVmPSclTE9HTyUnPgoKICAgIDxz # dHlsZSB0eXBlPSd0ZXh0L2Nzcyc+CiAgICA8IS0tCgoJYm9keSB7CgkJYmFj # a2dyb3VuZAkJOiB1cmwoJVdBVEVSTUFSSyUpIHdoaXRlIGNlbnRlciBjZW50 # ZXIgbm8tcmVwZWF0IGZpeGVkOwoJfQoKCWEgewoJCXRleHQtZGVjb3JhdGlv # bgkJOiBub25lOwoJfQoKCWE6aG92ZXIgewoJCWJhY2tncm91bmQJCTogI0FB # QUFBQTsKCX0KCgl0ZC5wYW5lbDEgewoJCWJvcmRlci1jb2xvcgkJOiAjODg4 # ODg4ICNFRUVFRUUgI0VFRUVFRSAjODg4ODg4OwoJCWJvcmRlci13aWR0aAkJ # OiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlkIHNvbGlkIHNvbGlkIHNv # bGlkOwoJfQoKCXRkLnBhbmVsMiB7CgkJYm9yZGVyLWNvbG9yCQk6ICNFRUVF # RUUgIzg4ODg4OCAjODg4ODg4ICNFRUVFRUU7CgkJYm9yZGVyLXdpZHRoCQk6 # IDFwdDsKCQlib3JkZXItc3R5bGUJCTogc29saWQgc29saWQgc29saWQgc29s # aWQ7Cgl9CgoJdGQucGFuZWwxaGlnaCB7CgkJYm9yZGVyLWNvbG9yCQk6ICNF # RUVFRUUgIzg4ODg4OCAjODg4ODg4ICNFRUVFRUU7CgkJYm9yZGVyLXdpZHRo # CQk6IDFwdDsKCQlib3JkZXItc3R5bGUJCTogc29saWQgc29saWQgc29saWQg # c29saWQ7Cgl9CgoJdGQucGFuZWwyaGlnaCB7CgkJYm9yZGVyLWNvbG9yCQk6 # ICNFRUVFRUUgIzg4ODg4OCAjODg4ODg4ICNFRUVFRUU7CgkJYm9yZGVyLXdp # ZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5bGUJCTogbm9uZSBub25lIG5vbmUg # bm9uZTsKCX0KCgl0ZC5wYW5lbDFsb3cgewoJCWJvcmRlci1jb2xvcgkJOiAj # ODg4ODg4ICNFRUVFRUUgI0VFRUVFRSAjODg4ODg4OwoJCWJvcmRlci13aWR0 # aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlkIHNvbGlkIHNvbGlk # IHNvbGlkOwoJfQoKCXRkLnBhbmVsMmxvdyB7CgkJYm9yZGVyLWNvbG9yCQk6 # ICM4ODg4ODggI0VFRUVFRSAjRUVFRUVFICM4ODg4ODg7CgkJYm9yZGVyLXdp # ZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5bGUJCTogbm9uZSBub25lIG5vbmUg # bm9uZTsKCX0KCgl0ZC50YWJibGFkIHsKCQlib3JkZXItY29sb3IJCTogI0VF # RUVFRSAjODg4ODg4ICM4ODg4ODggI0VFRUVFRTsKCQlib3JkZXItd2lkdGgJ # CTogMXB0OwoJCWJvcmRlci1zdHlsZQkJOiBub25lIHNvbGlkIHNvbGlkIHNv # bGlkOwoJfQoKCXRkLnBhc3NpdmV0YWIgewogICAgICAgICAgICAgICAgYmFj # a2dyb3VuZC1jb2xvcgk6ICNCQkJCQkI7CgkJYm9yZGVyLWNvbG9yCQk6ICNE # REREREQgI0RERERERCAjRUVFRUVFICNEREREREQ7CgkJYm9yZGVyLXdpZHRo # CQk6IDFwdDsKCQlib3JkZXItc3R5bGUJCTogc29saWQgc29saWQgc29saWQg # c29saWQ7Cgl9CgoJdGQuYWN0aXZldGFiIHsKCQlib3JkZXItY29sb3IJCTog # I0VFRUVFRSAjODg4ODg4ICM4ODg4ODggI0VFRUVFRTsKCQlib3JkZXItd2lk # dGgJCTogMXB0OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xpZCBzb2xpZCBub25l # IHNvbGlkOwoJfQoKCXRkLm5vdGFiIHsKCQlib3JkZXItY29sb3IJCTogI0VF # RUVFRSAjRUVFRUVFICNFRUVFRUUgI0VFRUVFRTsKCQlib3JkZXItd2lkdGgJ # CTogMXB0OwoJCWJvcmRlci1zdHlsZQkJOiBub25lIG5vbmUgc29saWQgbm9u # ZTsKCX0KCiAgICAvLy0tPgogICAgPC9zdHlsZT4KCiAgICA8c2NyaXB0IHR5 # cGU9J3RleHQvamF2YXNjcmlwdCc+CiAgICA8IS0tCiAgICAgIGZ1bmN0aW9u # IEJvZHlHbygpIHsKICAgICAgICAkUldEX0ZPQ1VTJAogICAgICB9CiAgICAv # Ly0tPgogICAgPC9zY3JpcHQ+CiAgPC9oZWFkPgoKICA8Ym9keSBiZ2NvbG9y # PSd3aGl0ZScgb25sb2FkPSdCb2R5R28oKScgbGluaz0nIzAwMDAwMCcgdmxp # bms9JyMwMDAwMDAnIGFsaW5rPScjMDAwMDAwJz4KICAgIDxmb3JtIG5hbWU9 # J2JvZHlmb3JtJyBhY3Rpb249Jy8nIG1ldGhvZD0ncG9zdCc+CiAgICAgIDx0 # YWJsZSBhbGlnbj0nY2VudGVyJyBib3JkZXI9JzAnIGNlbGxzcGFjaW5nPScw # JyBjZWxscGFkZGluZz0nMCcgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJSc+ # CiAgICAgICAgPHRyIGFsaWduPSdjZW50ZXInIHZhbGlnbj0nbWlkZGxlJz4K # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJz4KCiAgICAgICAgICAgIDx0 # YWJsZSBhbGlnbj0nY2VudGVyJyBib3JkZXI9JzAnIGNlbGxzcGFjaW5nPScw # JyBjZWxscGFkZGluZz0nMCc+CgogICAgICAgICAgICAgIDx0ciBhbGlnbj0n # Y2VudGVyJz4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAg # ICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1n # IHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90 # ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAg # ICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScg # d2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2Nl # bnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lm # JyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAg # ICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFj # ayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9 # JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicg # ICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWln # aHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFs # aWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3Bp # eGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAg # ICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGlt # ZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwv # dGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAg # ICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEn # IHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CgogICAgICAg # ICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3 # ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAg # ICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAg # PjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScx # Jz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJn # Y29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0 # PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhl # bC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAg # ICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcg # c3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3Rk # PgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9 # J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3 # aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2Vu # dGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYn # IGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8 # dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdy # d2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAg # ICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNr # Jz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0n # MSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAg # ICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdo # dD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgIDwvdHI+CgogICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4K # ICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAg # ICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBo # ZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndk # X3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+ # PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEn # PjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdj # b2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1n # IHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90 # ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9y # PSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScg # d2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2Nl # bnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lm # JyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAg # ICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAg # ICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9 # JzEnPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KCiAgICAgICAgICAgICAg # PHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInICAgICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVs # LmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAg # ICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBz # cmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+ # CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0n # d2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50 # ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lm # JyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNF # RUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50 # ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lm # JyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3do # aXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhl # aWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQg # YWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2Rf # cGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAg # ICAgICAgIDwvdHI+CgogICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVy # Jz4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9y # PSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScg # d2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2Nl # bnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lm # JyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAg # ICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVF # RUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhl # aWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQg # YWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2Rf # cGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAg # ICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48 # aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+ # PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2Nv # bG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0 # PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhl # bC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAg # ICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcg # c3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3Rk # PgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9 # J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3 # aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgoKICAgICAgICAg # ICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAgICA8dGQg # YWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2Rf # cGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAg # ICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48 # aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+ # PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2Nv # bG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0 # PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3Bp # eGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAg # ICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGlt # ZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwv # dGQ+CgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInPgoKICAg # ICAgICAgICAgICAgICAgPHRhYmxlIGFsaWduPSdjZW50ZXInIGJvcmRlcj0n # MCcgY2VsbHNwYWNpbmc9JzAnIGNlbGxwYWRkaW5nPScwJyAlV0lEVEgxJT4K # ICAgICAgICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAg # ICAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0n # IzQ0NDQ4OCc+CgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYWxp # Z249J2xlZnQnIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzEnIGNlbGxwYWRk # aW5nPScwJz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgYWxpZ249 # J2NlbnRlcic+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxp # Z249J2JvcmRlcic+PGltZyBzcmM9JyVMT0dPJScgd2lkdGg9JzE0JyBoZWln # aHQ9JzE0Jz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInPjxiPjxzbWFsbD48Zm9udCBjb2xvcj0nI0ZGRkZG # Ric+Jm5ic3A7JVRJVExFJSZuYnNwOzwvZm9udD48L3NtYWxsPjwvYj48L3Rk # PgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAg # ICAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAgICAgICAgICAgICAg # ICA8dGFibGUgYWxpZ249J3JpZ2h0JyBib3JkZXI9JzAnIGNlbGxzcGFjaW5n # PScxJyBjZWxscGFkZGluZz0nMCc+CiAgICAgICAgICAgICAgICAgICAgICAg # ICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAgICAgICAg # ICAgICAgPCEtLSAlSEVMUEJVVFRPTiUgIC0tPjx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPScjRUVFRUVFJz48Yj48c21hbGw+PGEgaHJlZj0namF2YXNj # cmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwicndk # X2hlbHBcIjtkb2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsnPiZuYnNwOz8m # bmJzcDs8L2E+PC9zbWFsbD48L2I+PC90ZD4KICAgICAgICAgICAgICAgICAg # ICAgICAgICAgIDwhLS0gJUJBQ0tCVVRUT05TJSAtLT48dGQgYWxpZ249J2Nl # bnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGI+PHNtYWxsPjxhIGhyZWY9J2ph # dmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1ZT1c # InJ3ZF9tYWluXCI7ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7Jz4mbmJz # cDsmbHQ7Jmx0OyZuYnNwOzwvYT48L3NtYWxsPjwvYj48L3RkPgogICAgICAg # ICAgICAgICAgICAgICAgICAgICAgPCEtLSAlQkFDS0JVVFRPTlMlIC0tPjx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48Yj48c21hbGw+ # PGEgaHJlZj0namF2YXNjcmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0 # aW9uLnZhbHVlPVwicndkX2JhY2tcIjtkb2N1bWVudC5ib2R5Zm9ybS5zdWJt # aXQoKTsnPiZuYnNwOyZsdDsmbmJzcDs8L2E+PC9zbWFsbD48L2I+PC90ZD4K # ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gJUNMT1NFQlVUVE9O # JSAtLT48dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGI+ # PHNtYWxsPjxhIGhyZWY9J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0u # cndkX2FjdGlvbi52YWx1ZT1cInJ3ZF9xdWl0XCI7ZG9jdW1lbnQuYm9keWZv # cm0uc3VibWl0KCk7Jz4mbmJzcDtYJm5ic3A7PC9hPjwvc21hbGw+PC9iPjwv # dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAg # ICAgICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgICAgICAgICAgICAg # ICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAg # ICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAg # ICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGlt # ZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JyVXSURU # SDIlJz48L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CgogICAgICAg # ICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjQ0NDQ0ND # Jz4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGFsaWduPSdjZW50 # ZXInIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzMnIGNlbGxwYWRkaW5nPScw # Jz4KICAgICAgICAgICAgICAgICAgICAgICAgICAlQk9EWSUKICAgICAgICAg # ICAgICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgICAgICAgICAgICAg # ICAgIDxpbnB1dCBuYW1lPSdyd2RfYWN0aW9uJyB2YWx1ZT0nJFJXRF9GSVJT # VEFDVElPTiQnIHR5cGU9J2hpZGRlbic+CiAgICAgICAgICAgICAgICAgICAg # ICAgIDxpbnB1dCBuYW1lPSdyd2Rfc2Vzc2lvbicgdmFsdWU9JyRSV0RfU0VT # U0lPTiQnIHR5cGU9J2hpZGRlbic+CiAgICAgICAgICAgICAgICAgICAgICA8 # L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAg # ICAgIDwvdGFibGU+CgogICAgICAgICAgICAgICAgPC90ZD4KCiAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1n # IHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90 # ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9y # PSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScg # d2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KCiAgICAgICAg # ICAgICAgPHRyIGFsaWduPSdjZW50ZXInPgogICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndk # X3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+ # PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEn # PjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdj # b2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxpbWcgc3JjPSdyd2RfcGl4 # ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAg # ICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1n # IHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90 # ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9y # PSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScg # d2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2Nl # bnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lm # JyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3do # aXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhl # aWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQg # YWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2Rf # cGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAg # ICAgICAgIDwvdHI+CgogICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVy # Jz4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAg # ICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScg # d2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2Nl # bnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lm # JyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAg # PHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAg # ICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVF # RUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0n # cndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAg # ICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVF # RUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3 # ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAg # ICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2sn # PjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScx # Jz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAg # ICAgICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0 # PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICA8L3RyPgoKICAg # ICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2Js # YWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhl # aWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQg # YWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2Rf # cGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAg # ICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48 # aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+ # PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2Nv # bG9yPScjRUVFRUVFJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0 # PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGln # bj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+PGltZyBzcmM9J3J3ZF9waXhl # bC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAg # ICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nd2hpdGUnPjxpbWcg # c3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3Rk # PgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9 # J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3 # aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2Vu # dGVyJyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYn # IGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8 # dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdy # d2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAg # ICAgICAgICAgIDwvdHI+CgogICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2Vu # dGVyJz4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAg # ICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0n # MScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249 # J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwu # Z2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAg # ICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNy # Yz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4K # ICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSdi # bGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lk # dGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nd2hpdGUnPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBo # ZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRk # IGFsaWduPSdjZW50ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndk # X3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAg # ICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPSd3aGl0ZSc+ # PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEn # PjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdj # b2xvcj0nYmxhY2snPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9 # JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWdu # PSdjZW50ZXInIGJnY29sb3I9J2JsYWNrJz48aW1nIHNyYz0ncndkX3BpeGVs # LmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAg # ICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBz # cmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+ # CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAg # ICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdp # ZHRoPScxJz48L3RkPgogICAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAg # ICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgIDx0ZCBh # bGlnbj0nY2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9w # aXhlbC5naWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAg # ICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxp # bWcgc3JjPSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48 # L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAg # ICAgICAgICAgID48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScx # JyB3aWR0aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0n # Y2VudGVyJyAgICAgICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5n # aWYnIGhlaWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAg # ICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nYmxhY2snPjxpbWcgc3Jj # PSdyd2RfcGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgog # ICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9J2Js # YWNrJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0 # aD0nMSc+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPSdibGFjayc+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhl # aWdodD0nMScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQg # YWxpZ249J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2Rf # cGl4ZWwuZ2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAg # ICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXInICAgICAgICAgICAgICAgID48 # aW1nIHNyYz0ncndkX3BpeGVsLmdpZicgaGVpZ2h0PScxJyB3aWR0aD0nMSc+ # PC90ZD4KICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nY2VudGVyJyAgICAg # ICAgICAgICAgICA+PGltZyBzcmM9J3J3ZF9waXhlbC5naWYnIGhlaWdodD0n # MScgd2lkdGg9JzEnPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249 # J2NlbnRlcicgICAgICAgICAgICAgICAgPjxpbWcgc3JjPSdyd2RfcGl4ZWwu # Z2lmJyBoZWlnaHQ9JzEnIHdpZHRoPScxJz48L3RkPgogICAgICAgICAgICAg # IDwvdHI+CgogICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgIDwvdGQ+ # CiAgICAgICAgPC90cj4KICAgICAgPC90YWJsZT4KICAgIDwvZm9ybT4KICA8 # L2JvZHk+CjwvaHRtbD4KIgoKJHJ3ZF9odG1sWyJXSU5ET1dTTE9PS0FMSUtF # Il0JPSAiCjwhLS0gR2VuZXJhdGVkIGJ5IFJ1YnlXZWJEaWFsb2cuICAgICAg # ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4K # PCEtLSBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIGNvbnRhY3QgRXJp # ayBWZWVuc3RyYSA8cndkQGVyaWt2ZWVuLmRkcy5ubD4uIC0tPgo8aHRtbD4K # ICA8aGVhZD4KICAgIDx0aXRsZT4lVElUTEUlPC90aXRsZT4KCiAgICA8bWV0 # YSBodHRwLWVxdWl2PSdDb250ZW50LVR5cGUnIGNvbnRlbnQ9J3RleHQvaHRt # bDsgY2hhcnNldD0lQ0hBUlNFVCUnPgogICAgPG1ldGEgaHR0cC1lcXVpdj0n # Q29udGVudC1TdHlsZS1UeXBlJyBjb250ZW50PSd0ZXh0L2Nzcyc+CiAgICA8 # bWV0YSBodHRwLWVxdWl2PSdSZWZyZXNoJyBjb250ZW50PSclUkVGUkVTSCUs # IGphdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7Jz4KCiAg # ICA8bGluayByZWw9J3Nob3J0Y3V0IGljb24nIGhyZWY9JyVMT0dPJSc+Cgog # ICAgPHN0eWxlIHR5cGU9J3RleHQvY3NzJz4KICAgIDwhLS0KCglib2R5IHsK # CQliYWNrZ3JvdW5kCQk6IHVybCglV0FURVJNQVJLJSkgd2hpdGUgY2VudGVy # IGNlbnRlciBuby1yZXBlYXQgZml4ZWQ7Cgl9CgoJYSB7CgkJdGV4dC1kZWNv # cmF0aW9uCQk6IG5vbmU7Cgl9CgoJYTpob3ZlciB7CgkJYmFja2dyb3VuZAkJ # OiAjQUFBQUFBOwoJfQoKCXRkLndpbmRvdyB7CgkJYm9yZGVyLWNvbG9yCQk6 # ICNFRUVFRUUgIzg4ODg4OCAjODg4ODg4ICNFRUVFRUU7CgkJYm9yZGVyLXdp # ZHRoCQk6IDNwdDsKCQlib3JkZXItc3R5bGUJCTogc29saWQgc29saWQgc29s # aWQgc29saWQ7Cgl9CgoJdGQucGFuZWwxIHsKCQlib3JkZXItY29sb3IJCTog # Izg4ODg4OCAjRUVFRUVFICNFRUVFRUUgIzg4ODg4ODsKCQlib3JkZXItd2lk # dGgJCTogMXB0OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xpZCBzb2xpZCBzb2xp # ZCBzb2xpZDsKCX0KCgl0ZC5wYW5lbDIgewoJCWJvcmRlci1jb2xvcgkJOiAj # RUVFRUVFICM4ODg4ODggIzg4ODg4OCAjRUVFRUVFOwoJCWJvcmRlci13aWR0 # aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlkIHNvbGlkIHNvbGlk # IHNvbGlkOwoJfQoKCXRkLnBhbmVsMWhpZ2ggewoJCWJvcmRlci1jb2xvcgkJ # OiAjRUVFRUVFICM4ODg4ODggIzg4ODg4OCAjRUVFRUVFOwoJCWJvcmRlci13 # aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlkIHNvbGlkIHNv # bGlkIHNvbGlkOwoJfQoKCXRkLnBhbmVsMmhpZ2ggewoJCWJvcmRlci1jb2xv # cgkJOiAjRUVFRUVFICM4ODg4ODggIzg4ODg4OCAjRUVFRUVFOwoJCWJvcmRl # ci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IG5vbmUgbm9uZSBu # b25lIG5vbmU7Cgl9CgoJdGQucGFuZWwxbG93IHsKCQlib3JkZXItY29sb3IJ # CTogIzg4ODg4OCAjRUVFRUVFICNFRUVFRUUgIzg4ODg4ODsKCQlib3JkZXIt # d2lkdGgJCTogMXB0OwoJCWJvcmRlci1zdHlsZQkJOiBzb2xpZCBzb2xpZCBz # b2xpZCBzb2xpZDsKCX0KCgl0ZC5wYW5lbDJsb3cgewoJCWJvcmRlci1jb2xv # cgkJOiAjODg4ODg4ICNFRUVFRUUgI0VFRUVFRSAjODg4ODg4OwoJCWJvcmRl # ci13aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IG5vbmUgbm9uZSBu # b25lIG5vbmU7Cgl9CgoJdGQudGFiYmxhZCB7CgkJYm9yZGVyLWNvbG9yCQk6 # ICNFRUVFRUUgIzg4ODg4OCAjODg4ODg4ICNFRUVFRUU7CgkJYm9yZGVyLXdp # ZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5bGUJCTogbm9uZSBzb2xpZCBzb2xp # ZCBzb2xpZDsKCX0KCgl0ZC5wYXNzaXZldGFiIHsKICAgICAgICAgICAgICAg # IGJhY2tncm91bmQtY29sb3IJOiAjQkJCQkJCOwoJCWJvcmRlci1jb2xvcgkJ # OiAjREREREREICNEREREREQgI0VFRUVFRSAjREREREREOwoJCWJvcmRlci13 # aWR0aAkJOiAxcHQ7CgkJYm9yZGVyLXN0eWxlCQk6IHNvbGlkIHNvbGlkIHNv # bGlkIHNvbGlkOwoJfQoKCXRkLmFjdGl2ZXRhYiB7CgkJYm9yZGVyLWNvbG9y # CQk6ICNFRUVFRUUgIzg4ODg4OCAjODg4ODg4ICNFRUVFRUU7CgkJYm9yZGVy # LXdpZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5bGUJCTogc29saWQgc29saWQg # bm9uZSBzb2xpZDsKCX0KCgl0ZC5ub3RhYiB7CgkJYm9yZGVyLWNvbG9yCQk6 # ICNFRUVFRUUgI0VFRUVFRSAjRUVFRUVFICNFRUVFRUU7CgkJYm9yZGVyLXdp # ZHRoCQk6IDFwdDsKCQlib3JkZXItc3R5bGUJCTogbm9uZSBub25lIHNvbGlk # IG5vbmU7Cgl9CgogICAgLy8tLT4KICAgIDwvc3R5bGU+CgogICAgPHNjcmlw # dCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPgogICAgPCEtLQogICAgICBmdW5j # dGlvbiBCb2R5R28oKSB7CiAgICAgICAgJFJXRF9GT0NVUyQKICAgICAgfQog # ICAgLy8tLT4KICAgIDwvc2NyaXB0PgogIDwvaGVhZD4KCiAgPGJvZHkgYmdj # b2xvcj0nd2hpdGUnIG9ubG9hZD0nQm9keUdvKCknIGxpbms9JyMwMDAwMDAn # IHZsaW5rPScjMDAwMDAwJyBhbGluaz0nIzAwMDAwMCc+CiAgICA8Zm9ybSBu # YW1lPSdib2R5Zm9ybScgYWN0aW9uPScvJyBtZXRob2Q9J3Bvc3QnPgogICAg # ICA8dGFibGUgYWxpZ249J2NlbnRlcicgYm9yZGVyPScwJyBjZWxsc3BhY2lu # Zz0nMCcgY2VsbHBhZGRpbmc9JzAnIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEw # MCUnPgogICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJyB2YWxpZ249J21pZGRs # ZSc+CiAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcic+CgogICAgICAgICAg # ICA8dGFibGUgYWxpZ249J2NlbnRlcicgYm9yZGVyPScwJyBjZWxsc3BhY2lu # Zz0nMCcgY2VsbHBhZGRpbmc9JzAnPgoKICAgICAgICAgICAgICA8dHIgYWxp # Z249J2NlbnRlcic+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRl # cicgY2xhc3M9J3dpbmRvdyc+CgogICAgICAgICAgICAgICAgICA8dGFibGUg # YWxpZ249J2NlbnRlcicgYm9yZGVyPScwJyBjZWxsc3BhY2luZz0nMCcgY2Vs # bHBhZGRpbmc9JzAnICVXSURUSDElPgogICAgICAgICAgICAgICAgICAgIDx0 # ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBh # bGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjNDQ0NDg4Jz4KCiAgICAgICAgICAg # ICAgICAgICAgICAgIDx0YWJsZSBhbGlnbj0nbGVmdCcgYm9yZGVyPScwJyBj # ZWxsc3BhY2luZz0nMScgY2VsbHBhZGRpbmc9JzAnPgogICAgICAgICAgICAg # ICAgICAgICAgICAgIDx0ciBhbGlnbj0nY2VudGVyJz4KICAgICAgICAgICAg # ICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0nYm9yZGVyJz48aW1nIHNyYz0n # JUxPR08lJyB3aWR0aD0nMTQnIGhlaWdodD0nMTQnPjwvdGQ+CiAgICAgICAg # ICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcic+PGI+PHNt # YWxsPjxmb250IGNvbG9yPScjRkZGRkZGJz4mbmJzcDslVElUTEUlJm5ic3A7 # PC9mb250Pjwvc21hbGw+PC9iPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAg # ICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4K # CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBhbGlnbj0ncmlnaHQn # IGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzEnIGNlbGxwYWRkaW5nPScwJz4K # ICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+ # CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICVIRUxQQlVUVE9O # JSAgLS0+PHRkIGFsaWduPSdjZW50ZXInIGJnY29sb3I9JyNFRUVFRUUnPjxi # PjxzbWFsbD48YSBocmVmPSdqYXZhc2NyaXB0OmRvY3VtZW50LmJvZHlmb3Jt # LnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2RfaGVscFwiO2RvY3VtZW50LmJvZHlm # b3JtLnN1Ym1pdCgpOyc+Jm5ic3A7PyZuYnNwOzwvYT48L3NtYWxsPjwvYj48 # L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAlQkFDS0JV # VFRPTlMlIC0tPjx0ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVF # Jz48Yj48c21hbGw+PGEgaHJlZj0namF2YXNjcmlwdDpkb2N1bWVudC5ib2R5 # Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwicndkX21haW5cIjtkb2N1bWVudC5i # b2R5Zm9ybS5zdWJtaXQoKTsnPiZuYnNwOyZsdDsmbHQ7Jm5ic3A7PC9hPjwv # c21hbGw+PC9iPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 # IS0tICVCQUNLQlVUVE9OUyUgLS0+PHRkIGFsaWduPSdjZW50ZXInIGJnY29s # b3I9JyNFRUVFRUUnPjxiPjxzbWFsbD48YSBocmVmPSdqYXZhc2NyaXB0OmRv # Y3VtZW50LmJvZHlmb3JtLnJ3ZF9hY3Rpb24udmFsdWU9XCJyd2RfYmFja1wi # O2RvY3VtZW50LmJvZHlmb3JtLnN1Ym1pdCgpOyc+Jm5ic3A7Jmx0OyZuYnNw # OzwvYT48L3NtYWxsPjwvYj48L3RkPgogICAgICAgICAgICAgICAgICAgICAg # ICAgICAgPCEtLSAlQ0xPU0VCVVRUT04lIC0tPjx0ZCBhbGlnbj0nY2VudGVy # JyBiZ2NvbG9yPScjRUVFRUVFJz48Yj48c21hbGw+PGEgaHJlZj0namF2YXNj # cmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVlPVwicndk # X3F1aXRcIjtkb2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsnPiZuYnNwO1gm # bmJzcDs8L2E+PC9zbWFsbD48L2I+PC90ZD4KICAgICAgICAgICAgICAgICAg # ICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxl # PgoKICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAg # ICAgICAgPC90cj4KCiAgICAgICAgICAgICAgICAgICAgPHRyIGFsaWduPSdj # ZW50ZXInPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50 # ZXInIGJnY29sb3I9J3doaXRlJz48aW1nIHNyYz0ncndkX3BpeGVsLmdpZicg # aGVpZ2h0PScxJyB3aWR0aD0nJVdJRFRIMiUnPjwvdGQ+CiAgICAgICAgICAg # ICAgICAgICAgPC90cj4KCiAgICAgICAgICAgICAgICAgICAgPHRyIGFsaWdu # PSdjZW50ZXInPgogICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSdj # ZW50ZXInIGJnY29sb3I9JyNDQ0NDQ0MnPgogICAgICAgICAgICAgICAgICAg # ICAgICA8dGFibGUgYWxpZ249J2NlbnRlcicgYm9yZGVyPScwJyBjZWxsc3Bh # Y2luZz0nMycgY2VsbHBhZGRpbmc9JzAnPgogICAgICAgICAgICAgICAgICAg # ICAgICAgICVCT0RZJQogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxl # PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9J3J3ZF9h # Y3Rpb24nIHZhbHVlPSckUldEX0ZJUlNUQUNUSU9OJCcgdHlwZT0naGlkZGVu # Jz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9J3J3ZF9z # ZXNzaW9uJyB2YWx1ZT0nJFJXRF9TRVNTSU9OJCcgdHlwZT0naGlkZGVuJz4K # ICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAg # ICAgPC90cj4KICAgICAgICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAg # ICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAg # ICA8L3RhYmxlPgoKICAgICAgICAgIDwvdGQ+CiAgICAgICAgPC90cj4KICAg # ICAgPC90YWJsZT4KICAgIDwvZm9ybT4KICA8L2JvZHk+CjwvaHRtbD4KIgoK # JHJ3ZF9odG1sWyJQREEiXQk9ICIKPCEtLSBHZW5lcmF0ZWQgYnkgUnVieVdl # YkRpYWxvZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg # ICAgICAgICAgIC0tPgo8IS0tIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVh # c2UgY29udGFjdCBFcmlrIFZlZW5zdHJhIDxyd2RAZXJpa3ZlZW4uZGRzLm5s # Pi4gLS0+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPiVUSVRMRSU8L3Rp # dGxlPgoKICAgIDxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29u # dGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PSVDSEFSU0VUJSc+CiAgICA8bWV0 # YSBodHRwLWVxdWl2PSdSZWZyZXNoJyBjb250ZW50PSclUkVGUkVTSCUsIGph # dmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7Jz4KCiAgICA8 # bGluayByZWw9J3Nob3J0Y3V0IGljb24nIGhyZWY9JyVMT0dPJSc+CgogICAg # PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPgogICAgPCEtLQogICAg # ICBmdW5jdGlvbiBCb2R5R28oKSB7CiAgICAgICAgJFJXRF9GT0NVUyQKICAg # ICAgfQogICAgLy8tLT4KICAgIDwvc2NyaXB0PgogIDwvaGVhZD4KCiAgPGJv # ZHkgYmdjb2xvcj0nd2hpdGUnIG9ubG9hZD0nQm9keUdvKCknIGxpbms9JyMw # MDAwMDAnIHZsaW5rPScjMDAwMDAwJyBhbGluaz0nIzAwMDAwMCc+CiAgICA8 # Zm9ybSBuYW1lPSdib2R5Zm9ybScgYWN0aW9uPScvJyBtZXRob2Q9J3Bvc3Qn # PgogICAgICA8dGFibGUgYWxpZ249J2NlbnRlcicgYm9yZGVyPScwJyBjZWxs # c3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzAnIHdpZHRoPScxMDAlJyBoZWln # aHQ9JzEwMCUnPgoKICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAg # ICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0nIzQ0NDQ4OCc+Cgog # ICAgICAgICAgICA8dGFibGUgYWxpZ249J2xlZnQnIGJvcmRlcj0nMCcgY2Vs # bHNwYWNpbmc9JzEnIGNlbGxwYWRkaW5nPScwJz4KICAgICAgICAgICAgICA8 # dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICAgICAgICA8dGQgYWxpZ249 # J2JvcmRlcic+PGltZyBzcmM9JyVMT0dPJScgd2lkdGg9JzE0JyBoZWlnaHQ9 # JzE0Jz48L3RkPgogICAgICAgICAgICAgICAgPHRkIGFsaWduPSdjZW50ZXIn # PjxiPjxzbWFsbD48Zm9udCBjb2xvcj0nI0ZGRkZGRic+Jm5ic3A7JVRJVExF # JSZuYnNwOzwvZm9udD48L3NtYWxsPjwvYj48L3RkPgogICAgICAgICAgICAg # IDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAgICA8dGFi # bGUgYWxpZ249J3JpZ2h0JyBib3JkZXI9JzAnIGNlbGxzcGFjaW5nPScxJyBj # ZWxscGFkZGluZz0nMCc+CiAgICAgICAgICAgICAgPHRyIGFsaWduPSdjZW50 # ZXInPgogICAgICAgICAgICAgICAgPCEtLSAlSEVMUEJVVFRPTiUgIC0tPjx0 # ZCBhbGlnbj0nY2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48Yj48c21hbGw+ # PGEgaHJlZj0namF2YXNjcmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0 # aW9uLnZhbHVlPVwicndkX2hlbHBcIjtkb2N1bWVudC5ib2R5Zm9ybS5zdWJt # aXQoKTsnPiZuYnNwOz8mbmJzcDs8L2E+PC9zbWFsbD48L2I+PC90ZD4KICAg # ICAgICAgICAgICAgIDwhLS0gJUJBQ0tCVVRUT05TJSAtLT48dGQgYWxpZ249 # J2NlbnRlcicgYmdjb2xvcj0nI0VFRUVFRSc+PGI+PHNtYWxsPjxhIGhyZWY9 # J2phdmFzY3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1 # ZT1cInJ3ZF9tYWluXCI7ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7Jz4m # bmJzcDsmbHQ7Jmx0OyZuYnNwOzwvYT48L3NtYWxsPjwvYj48L3RkPgogICAg # ICAgICAgICAgICAgPCEtLSAlQkFDS0JVVFRPTlMlIC0tPjx0ZCBhbGlnbj0n # Y2VudGVyJyBiZ2NvbG9yPScjRUVFRUVFJz48Yj48c21hbGw+PGEgaHJlZj0n # amF2YXNjcmlwdDpkb2N1bWVudC5ib2R5Zm9ybS5yd2RfYWN0aW9uLnZhbHVl # PVwicndkX2JhY2tcIjtkb2N1bWVudC5ib2R5Zm9ybS5zdWJtaXQoKTsnPiZu # YnNwOyZsdDsmbmJzcDs8L2E+PC9zbWFsbD48L2I+PC90ZD4KICAgICAgICAg # ICAgICAgIDwhLS0gJUNMT1NFQlVUVE9OJSAtLT48dGQgYWxpZ249J2NlbnRl # cicgYmdjb2xvcj0nI0VFRUVFRSc+PGI+PHNtYWxsPjxhIGhyZWY9J2phdmFz # Y3JpcHQ6ZG9jdW1lbnQuYm9keWZvcm0ucndkX2FjdGlvbi52YWx1ZT1cInJ3 # ZF9xdWl0XCI7ZG9jdW1lbnQuYm9keWZvcm0uc3VibWl0KCk7Jz4mbmJzcDtY # Jm5ic3A7PC9hPjwvc21hbGw+PC9iPjwvdGQ+CiAgICAgICAgICAgICAgPC90 # cj4KICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgICA8L3RkPgogICAg # ICAgIDwvdHI+CgogICAgICAgIDwhLS0KICAgICAgICA8dHIgYWxpZ249J2Nl # bnRlcic+CiAgICAgICAgICA8dGQgYWxpZ249J2NlbnRlcicgYmdjb2xvcj0n # I0ZGRkZGRic+Jm5ic3A7PC90ZD4KICAgICAgICA8L3RyPgogICAgICAgIC0t # PgoKICAgICAgICA8dHIgYWxpZ249J2NlbnRlcic+CiAgICAgICAgICA8dGQg # YWxpZ249J2NlbnRlcicgYmdjb2xvcj0nI0ZGRkZGRic+CgogICAgICAgICAg # ICAgIDx0YWJsZSBhbGlnbj0nY2VudGVyJyBib3JkZXI9JzAnIGNlbGxzcGFj # aW5nPScwJyBjZWxscGFkZGluZz0nMCc+CiAgICAgICAgICAgICAgICAlQk9E # WSUKICAgICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICA8aW5w # dXQgbmFtZT0ncndkX2FjdGlvbicgdmFsdWU9JyRSV0RfRklSU1RBQ1RJT04k # JyB0eXBlPSdoaWRkZW4nPgogICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSdy # d2Rfc2Vzc2lvbicgdmFsdWU9JyRSV0RfU0VTU0lPTiQnIHR5cGU9J2hpZGRl # bic+CiAgICAgICAgICA8L3RkPgogICAgICAgIDwvdHI+CgogICAgICA8L3Rh # YmxlPgogICAgPC9mb3JtPgogIDwvYm9keT4KPC9odG1sPgoiCgokcndkX3Bp # eGVsCT0gIgpSMGxHT0RsaEFRQUJBTUlBQUFBQUFQLy8vKzd1N2tSRWlQLy8v # Ly8vLy8vLy8vLy8veUg1QkFFS0FBTUEKTEFBQUFBQUJBQUVBQUFNQ09Ba0FP # dz09CiIudW5wYWNrKCJtIikuc2hpZnQKCiRyd2RfbG9nbwk9ICIKUjBsR09E # bGhFQUFRQU1JQUFBQUFBUC8vLys3dTdrUkVpUC8vLy8vLy8vLy8vLy8vL3lI # NUJBRUtBQVFBCkxBQUFBQUFRQUJBQUFBTkNTRXJRL2syMVFLdWxySXJOdTho # ZXVBR1VjSjBCdVFWRDY3NkRhc0swek5LdgpqZWZCK29vNmw2QXhCQXg3TTJI # UmVQUXBoNXhnYTBSc0pxZkVMUEkyRFNVQUFEcz0KIi51bnBhY2soIm0iKS5z # aGlmdAoKCiRyd2RfaHRtbF8xLCAkcndkX2h0bWxfMgkJPSAkcndkX2h0bWxb # RU5WWyJSV0RUSEVNRSJdXS5zcGxpdCgvXlxzKiVCT0RZJVxzKlxyKiQvKQok # cndkX2h0bWxfUERBXzEsICRyd2RfaHRtbF9QREFfMgk9ICRyd2RfaHRtbFsi # UERBIl0uc3BsaXQoL15ccyolQk9EWSVccypcciokLykKCiNlbmQKIwojY2xh # c3MgUldEaWFsb2cgPCBSV0Q6OlJXRGlhbG9nCiNlbmQKAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRtcC5lYXIycnVieXNj # cmlwdC5mLjExNTEwLnRhci9ldi94bWwucmIAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAw # NzU1ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDAwNTMxNQAxMDI1MDMyMDYxMgAw # MTc3NTcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABlcmlrAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # MDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAcmVxdWlyZSAiZXYvc2dtbCIKCmNsYXNzIFNHTUxPYmplY3QKICBkZWYg # dG9feChjbG9zZXRhZ3M9dHJ1ZSkKICAgIHJlcwk9ICIiCgogICAgcGFyc2V0 # cmVlKCJwcmVjaGlsZHJlbl90b194IiwgInBvc3RjaGlsZHJlbl90b194Iiwg # cmVzLCBjbG9zZXRhZ3MpCgogICAgcmVzCiAgZW5kCmVuZAoKY2xhc3MgVGV4 # dCA8IFNHTUxPYmplY3QKICBkZWYgcHJlY2hpbGRyZW5fdG9feChyZXMsIGNs # b3NldGFncykKICAgIHJlcyA8PCBAdGV4dC5zdHJpcAl1bmxlc3MgQHRleHQu # c3RyaXAuZW1wdHk/CiAgZW5kCmVuZAoKY2xhc3MgQ29tbWVudCA8IFNHTUxP # YmplY3QKICBkZWYgcHJlY2hpbGRyZW5fdG9feChyZXMsIGNsb3NldGFncykK # ICAgIHJlcyA8PCAiXG4iCWlmIG5vdCBwcmV2aW91cyhbXSwgW1RleHRdKS5r # aW5kX29mPyhDb21tZW50KQogICAgbGluZXMJPSBAdGV4dC5nc3ViKC8oPCEt # LXwtLT4pLywgIiIpLmxmLnNwbGl0KC9cbi8pCiAgICBpZiBsaW5lcy5sZW5n # dGggPT0gMQogICAgICByZXMgPDwgIiAgIiooQGxldmVsLTEpICsgIjwhLS0g # IiArIGxpbmVzWzBdLnN0cmlwICsgIiAtLT4iICsgIlxuIgogICAgZWxzZQog # ICAgICByZXMgPDwgIiAgIiooQGxldmVsLTEpICsgIjwhLS0iICsgIlxuIgog # ICAgICByZXMgPDwgbGluZXMuY29sbGVjdHt8c3wgIiAgIiooQGxldmVsLTEp # ICsgcy5zdHJpcH0uZGVsZXRlX2lme3xzfCBzLmNvbXByZXNzLmVtcHR5P30u # am9pbigiXG4iKQogICAgICByZXMgPDwgIlxuIgogICAgICByZXMgPDwgIiAg # IiooQGxldmVsLTEpICsgIi0tPiIgKyAiXG4iCiAgICAgIHJlcyA8PCAiXG4i # CiAgICBlbmQKICBlbmQKZW5kCgpjbGFzcyBTcGVjaWFsIDwgU0dNTE9iamVj # dAogIGRlZiBwcmVjaGlsZHJlbl90b194KHJlcywgY2xvc2V0YWdzKQogICAg # cmVzIDw8ICIgICIqKEBsZXZlbC0xKSArIEB0ZXh0LmNvbXByZXNzICsgIlxu # IgogIGVuZAplbmQKCmNsYXNzIEluc3RydWN0aW9uIDwgU0dNTE9iamVjdAog # IGRlZiBwcmVjaGlsZHJlbl90b194KHJlcywgY2xvc2V0YWdzKQogICAgcmVz # IDw8ICIgICIqKEBsZXZlbC0xKSArIEB0ZXh0LmNvbXByZXNzICsgIlxuIgog # IGVuZAplbmQKCmNsYXNzIE9wZW5UYWcgPCBUYWcKICBkZWYgcHJlY2hpbGRy # ZW5fdG9feChyZXMsIGNsb3NldGFncykKICAgIGEJPSBbQHN1YnR5cGVdCgog # ICAgYXJncwk9IEBhcmdzLmR1cAogICAgYXJncy5kZWxldGUoImlkIikKICAg # IGFyZ3MuZGVsZXRlKCJuYW1lIikKICAgIGFyZ3MJPSBhcmdzLnNvcnQKICAg # IGFyZ3MudW5zaGlmdChbImlkIiwgQGFyZ3NbImlkIl1dKQkJaWYgQGFyZ3Mu # aW5jbHVkZT8oImlkIikKICAgIGFyZ3MudW5zaGlmdChbIm5hbWUiLCBAYXJn # c1sibmFtZSJdXSkJaWYgQGFyZ3MuaW5jbHVkZT8oIm5hbWUiKQoKICAgIGFy # Z3MuZWFjaCBkbyB8aywgdnwKICAgICAgaWYgbm90IHYuaW5jbHVkZT8oIici # KQogICAgICAgIGEgPDwgIiN7a309JyN7dn0nIgogICAgICBlbHNlCiAgICAg # ICAgaWYgbm90IHYuaW5jbHVkZT8oJyInKQogICAgICAgICAgYSA8PCAiI3tr # fT1cIiN7dn1cIiIKICAgICAgICBlbHNlCiAgICAgICAgICBhIDw8ICIje2t9 # PScje3YuZ3N1YigvXCcvLCAnIicpfSciCiAgICAgICAgZW5kCiAgICAgIGVu # ZAogICAgZW5kCgogICAgaWYgQGNoaWxkcmVuLmxlbmd0aCA9PSAwIG9yIChA # Y2hpbGRyZW4ubGVuZ3RoID09IDEgYW5kIEBjaGlsZHJlblswXS5raW5kX29m # PyhUZXh0KSBhbmQgQGNoaWxkcmVuWzBdLnRleHQuY29tcHJlc3MuZW1wdHk/ # KQogICAgICByZXMgPDwgIiAgIiooQGxldmVsLTEpICsgIjwje2Euam9pbigi # ICIpfS8+IiArICJcbiIKICAgIGVsc2UKICAgICAgaWYgQGNoaWxkcmVuLmxl # bmd0aCA9PSAxIGFuZCBAY2hpbGRyZW5bMF0ua2luZF9vZj8oVGV4dCkgYW5k # IEBjaGlsZHJlblswXS50ZXh0LmxmLnNwbGl0KC9cbi8pLmxlbmd0aCA9PSAx # CiAgICAgICAgcmVzIDw8ICIgICIqKEBsZXZlbC0xKSArICI8I3thLmpvaW4o # IiAiKX0+IgogICAgICBlbHNlCiAgICAgICAgcmVzIDw8ICIgICIqKEBsZXZl # bC0xKSArICI8I3thLmpvaW4oIiAiKX0+IiArICJcbiIKICAgICAgZW5kCiAg # ICBlbmQKICBlbmQKCiAgZGVmIHBvc3RjaGlsZHJlbl90b194KHJlcywgY2xv # c2V0YWdzKQogICAgaWYgY2xvc2V0YWdzCiAgICAgIHVubGVzcyBAY2hpbGRy # ZW4ubGVuZ3RoID09IDAgb3IgKEBjaGlsZHJlbi5sZW5ndGggPT0gMSBhbmQg # QGNoaWxkcmVuWzBdLmtpbmRfb2Y/KFRleHQpIGFuZCBAY2hpbGRyZW5bMF0u # dGV4dC5jb21wcmVzcy5lbXB0eT8pCiAgICAgICAgcmVzIDw8ICJcbiIJCWlm # IEBjaGlsZHJlbi5sZW5ndGggPT0gMSBhbmQgQGNoaWxkcmVuWzBdLmtpbmRf # b2Y/KFRleHQpIGFuZCBAY2hpbGRyZW5bMF0udGV4dC5sZi5zcGxpdCgvXG4v # KS5sZW5ndGggPiAxCiAgICAgICAgcmVzIDw8ICIgICIqKEBsZXZlbC0xKQl1 # bmxlc3MgQGNoaWxkcmVuLmxlbmd0aCA9PSAxIGFuZCBAY2hpbGRyZW5bMF0u # a2luZF9vZj8oVGV4dCkgYW5kIEBjaGlsZHJlblswXS50ZXh0LmxmLnNwbGl0 # KC9cbi8pLmxlbmd0aCA9PSAxCiAgICAgICAgcmVzIDw8ICI8LyN7QHN1YnR5 # cGV9PiIKICAgICAgICByZXMgPDwgIlxuIgogICAgICBlbmQKICAgIGVuZAog # IGVuZAplbmQKCmNsYXNzIFhNTCA8IFNHTUwKICBkZWYgdG9feChjbG9zZXRh # Z3M9dHJ1ZSkKICAgIHJlcwk9ICIiCgogICAgcGFyc2V0cmVlKCJwcmVjaGls # ZHJlbl90b194IiwgInBvc3RjaGlsZHJlbl90b194IiwgcmVzLCBjbG9zZXRh # Z3MpCgogICAgcmVzCiAgZW5kCmVuZAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAdG1wLmVhcjJydWJ5c2NyaXB0LmYuMTE1MTAudGFy # L2V2L3NnbWwucmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMTc1MAAwMDAx # NzUwADAwMDAwMDEwMTI1ADEwMjUwMzIwNjEyADAyMDExNAAgMAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAB1c3RhciAgAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZXJp # awAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByZXF1aXJlICJldi90 # cmVlIgoKY2xhc3MgU0dNTE9iamVjdCA8IFRyZWVPYmplY3QKICBkZWYgdG9f # cwogICAgcmVzCT0gIiIKCiAgICBwYXJzZXRyZWUoInByZWNoaWxkcmVuX3Rv # X3MiLCAicG9zdGNoaWxkcmVuX3RvX3MiLCByZXMpCgogICAgcmVzCiAgZW5k # CgogIGRlZiB0b19oCiAgICByZXMJPSAiIgoKICAgIHBhcnNldHJlZSgicHJl # Y2hpbGRyZW5fdG9fc2dtbCIsICJwb3N0Y2hpbGRyZW5fdG9fc2dtbCIsIHJl # cykKCiAgICByZXMKICBlbmQKZW5kCgpjbGFzcyBUZXh0IDwgU0dNTE9iamVj # dAogIGRlZiBpbml0aWFsaXplKHRleHQpCiAgICBzdXBlcigpCiAgICBAdGV4 # dCA9IHRleHQKICBlbmQKCiAgZGVmIHByZWNoaWxkcmVuX3RvX3MocmVzKQog # ICAgI3JlcyA8PCAiI3tDR0kudW5lc2NhcGVIVE1MKEB0ZXh0KX0gIgogICAg # cmVzIDw8IEB0ZXh0CiAgZW5kCgogIGRlZiBwcmVjaGlsZHJlbl90b19zZ21s # KHJlcykKICAgICNyZXMgPDwgIiN7Q0dJLnVuZXNjYXBlSFRNTChAdGV4dCl9 # IgogICAgcmVzIDw8IEB0ZXh0CiAgZW5kCmVuZAoKY2xhc3MgQ29tbWVudCA8 # IFNHTUxPYmplY3QKICBkZWYgaW5pdGlhbGl6ZSh0ZXh0KQogICAgc3VwZXIo # KQogICAgQHRleHQgPSB0ZXh0CiAgZW5kCgogIGRlZiBwcmVjaGlsZHJlbl90 # b19zZ21sKHJlcykKICAgIHJlcyA8PCAiI3tAdGV4dH0iCiAgZW5kCmVuZAoK # Y2xhc3MgU3BlY2lhbCA8IFNHTUxPYmplY3QKICBkZWYgaW5pdGlhbGl6ZSh0 # ZXh0KQogICAgc3VwZXIoKQogICAgQHRleHQgPSB0ZXh0CiAgZW5kCgogIGRl # ZiBwcmVjaGlsZHJlbl90b19zZ21sKHJlcykKICAgIHJlcyA8PCAiI3tAdGV4 # dH0iCiAgZW5kCmVuZAoKY2xhc3MgSW5zdHJ1Y3Rpb24gPCBTR01MT2JqZWN0 # CiAgZGVmIGluaXRpYWxpemUodGV4dCkKICAgIHN1cGVyKCkKICAgIEB0ZXh0 # ID0gdGV4dAogIGVuZAoKICBkZWYgcHJlY2hpbGRyZW5fdG9fc2dtbChyZXMp # CiAgICByZXMgPDwgIiN7QHRleHR9IgogIGVuZAplbmQKCmNsYXNzIFRhZyA8 # IFNHTUxPYmplY3QKICBhdHRyX3JlYWRlciA6YXJncwogIGF0dHJfd3JpdGVy # IDphcmdzCgogIGRlZiBpbml0aWFsaXplKHN1YnR5cGUsIGFyZ3M9e30pCiAg # ICBzdXBlcihzdWJ0eXBlKQogICAgQGFyZ3MgPSBhcmdzCiAgICBAdGV4dCA9 # ICIiCiAgZW5kCmVuZAoKY2xhc3MgT3BlblRhZyA8IFRhZwogIGRlZiBpbml0 # aWFsaXplKCphcmdzKQogICAgc3VwZXIKICAgIEB1cG9yZG93biA9IERvd24K # ICBlbmQKCiAgZGVmIHByZWNoaWxkcmVuX3RvX3NnbWwocmVzKQogICAgYQk9 # IFtAc3VidHlwZV0KCiAgICBAYXJncy5zb3J0LmVhY2ggZG8gfGssIHZ8CiAg # ICAgIGlmIG5vdCB2LmluY2x1ZGU/KCInIikKICAgICAgICBhIDw8ICIje2t9 # PScje3Z9JyIKICAgICAgZWxzZQogICAgICAgIGlmIG5vdCB2LmluY2x1ZGU/ # KCciJykKICAgICAgICAgIGEgPDwgIiN7a309XCIje3Z9XCIiCiAgICAgICAg # ZWxzZQogICAgICAgICAgYSA8PCAiI3trfT0nI3t2LmdzdWIoL1wnLywgJyIn # KX0nIgogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAoKICAgIHJlcyA8 # PCAiPCN7YS5qb2luKCIgIil9PiIgKyBAdGV4dAogIGVuZAoKICBkZWYgcG9z # dGNoaWxkcmVuX3RvX3NnbWwocmVzKQogICAgcmVzIDw8ICI8LyN7QHN1YnR5 # cGV9PiIJaWYgQGNsb3NlZAogIGVuZAplbmQKCmNsYXNzIENsb3NlVGFnIDwg # VGFnCiAgZGVmIGluaXRpYWxpemUoKmFyZ3MpCiAgICBzdXBlcgogICAgQHVw # b3Jkb3duID0gRHVtbXkKICBlbmQKZW5kCgpjbGFzcyBTR01MIDwgVHJlZQog # IGRlZiBpbml0aWFsaXplKCphcmdzKQogICAgQHRhZ2NhY2hlCT0ge30KCiAg # ICBzdXBlcgogIGVuZAoKICBkZWYgYnVpbGRvYmplY3RzKHN0cmluZykKICAg # IEBvYmplY3RzID0gW10KCiAgICB2ZXJ3ZXJrMwk9CiAgICBsYW1iZGEgZG8g # fHN0cmluZ3wKICAgICAgYQk9IFtdCiAgCiAgICAgIHN0cmluZ1sxLi4tMl0u # c3BsaXRibG9ja3MoWyInIiwgIiciXSwgWyciJywgJyInXSkuY29sbGVjdCBk # byB8dHlwZSwgc3wKICAgICAgICBjYXNlIHR5cGUKICAgICAgICB3aGVuIDAK # ICAgICAgICAgIGlmIHNlbGYuY2xhc3MudG9fcyA9PSAiSFRNTCIKICAgICAg # ICAgICAgcy5zcGxpdHdvcmRzLmVhY2ggZG8gfHd8CiAgICAgICAgICAgICAg # ZAk9IHcuc3BsaXQoIj0iLCAyKQogIAogICAgICAgICAgICAgIGlmIGQubGVu # Z3RoID09IDEKICAgICAgICAgICAgICAgIGEgPDwgZFswXQogICAgICAgICAg # ICAgIGVsc2UKICAgICAgICAgICAgICAgIGEgPDwgZFswXQlpZiBub3QgZFsw # XS5uaWw/IGFuZCBub3QgZFswXS5lbXB0eT8KICAgICAgICAgICAgICAgIGEg # PDwgIj0iCiAgICAgICAgICAgICAgICBhIDw8IGRbMV0JaWYgbm90IGRbMV0u # bmlsPyBhbmQgbm90IGRbMV0uZW1wdHk/CiAgICAgICAgICAgICAgZW5kCiAg # ICAgICAgICAgIGVuZAogICAgICAgICAgZWxzZQogICAgICAgICAgICBhLmNv # bmNhdCBzLnNwbGl0d29yZHMoWyIvIiwgIj0iXSkKICAgICAgICAgIGVuZAog # ICAgICAgIHdoZW4gMSwgMgl0aGVuIGEgPDwgcwogICAgICAgIGVuZAogICAg # ICBlbmQKICAKICAgICAgb3Blbgk9IGZhbHNlCiAgICAgIGNsb3NlCT0gZmFs # c2UKICAKICAgICAgYSA9IGFbMF0uc3BsaXR3b3JkcygiLyIpICsgYVsxLi4t # MV0KICAKICAgICAgaWYgYVswXSA9PSAiLyIKICAgICAgICBjbG9zZQk9IHRy # dWUKICAgICAgICBhLnNoaWZ0CiAgICAgIGVsc2UKICAgICAgICBvcGVuCT0g # dHJ1ZQogICAgICBlbmQKICAKICAgICAgaWYgYVstMV0gPT0gIi8iCiAgICAg # ICAgY2xvc2UJPSB0cnVlCiAgICAgICAgYS5wb3AKICAgICAgZW5kCiAgCiAg # ICAgIHRhZwk9IGEuc2hpZnQuZG93bmNhc2UKICAgICAgYXJncwk9IHt9CiAg # CiAgICAgIHdoaWxlIG5vdCBhLmxlbmd0aC56ZXJvPwogICAgICAgIGlmIGEu # bGVuZ3RoID49IDMgYW5kIGFbMV0gPT0gIj0iCiAgICAgICAgICBrZXkJPSBh # LnNoaWZ0LmRvd25jYXNlCiAgICAgICAgICBkdW1teQk9IGEuc2hpZnQKICAg # ICAgICAgIHZhbHVlCT0gYS5zaGlmdC5ub3F1b3RlcwogICAgICAgICAgYXJn # c1trZXldCT0gdmFsdWUKICAgICAgICBlbHNlCiAgICAgICAgICBrZXkJPSBh # LnNoaWZ0LmRvd25jYXNlCiAgICAgICAgICBhcmdzW2tleV0JPSAiIgogICAg # ICAgIGVuZAogICAgICBlbmQKICAKICAgICAgW3RhZywgYXJncywgb3Blbiwg # Y2xvc2VdCiAgICBlbmQKCiAgICB2ZXJ3ZXJrMgk9CiAgICBsYW1iZGEgZG8g # fHN0cmluZ3wKICAgICAgaWYgQHRhZ2NhY2hlLmluY2x1ZGU/IHN0cmluZwog # ICAgICAgIHJlcwk9IEB0YWdjYWNoZVtzdHJpbmddCiAgICAgIGVsc2UKICAg # ICAgICByZXMJPSB2ZXJ3ZXJrMy5jYWxsKHN0cmluZykKCiAgICAgICAgQHRh # Z2NhY2hlW3N0cmluZ10gPSByZXMKICAgICAgZW5kCgogICAgICByZXMKICAg # IGVuZAoKICAgIHZlcndlcmsxID0KICAgIGxhbWJkYSBkbyB8c3RyaW5nfAog # ICAgICB0YWcsIGFyZ3MsIG9wZW4sIGNsb3NlCT0gdmVyd2VyazIuY2FsbChz # dHJpbmcpCgogICAgICBAb2JqZWN0cyA8PCBPcGVuVGFnLm5ldyh0YWcuZHVw # LCBhcmdzLmR1cCkJaWYgb3BlbgogICAgICBAb2JqZWN0cyA8PCBDbG9zZVRh # Zy5uZXcodGFnLmR1cCwgYXJncy5kdXApCWlmIGNsb3NlCiAgICBlbmQKCiAg # ICBzdHJpbmcuc3BsaXRibG9ja3MoWyI8IS0tIiwgIi0tPiJdLCBbIjwhIiwg # Ij4iXSwgWyI8PyIsICI/PiJdLCBbIjwiLCAiPiJdKS5lYWNoIGRvIHx0eXBl # LCBzfAogICAgICBjYXNlIHR5cGUKICAgICAgd2hlbiAwCQl0aGVuIEBvYmpl # Y3RzIDw8IFRleHQubmV3KHMpCiAgICAgIHdoZW4gMQkJdGhlbiBAb2JqZWN0 # cyA8PCBDb21tZW50Lm5ldyhzKQogICAgICB3aGVuIDIJCXRoZW4gQG9iamVj # dHMgPDwgU3BlY2lhbC5uZXcocykKICAgICAgd2hlbiAzCQl0aGVuIEBvYmpl # Y3RzIDw8IEluc3RydWN0aW9uLm5ldyhzKQogICAgICB3aGVuIDQJCXRoZW4g # dmVyd2VyazEuY2FsbChzKQogICAgICBlbmQKICAgIGVuZAogIGVuZAoKICBk # ZWYgdG9fcwogICAgcmVzCT0gIiIKCiAgICBwYXJzZXRyZWUoInByZWNoaWxk # cmVuX3RvX3MiLCAicG9zdGNoaWxkcmVuX3RvX3MiLCByZXMpCgogICAgcmVz # CiAgZW5kCgogIGRlZiB0b19oCiAgICByZXMJPSAiIgoKICAgIHBhcnNldHJl # ZSgicHJlY2hpbGRyZW5fdG9fc2dtbCIsICJwb3N0Y2hpbGRyZW5fdG9fc2dt # bCIsIHJlcykKCiAgICByZXMKICBlbmQKZW5kCgAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4xMTUxMC50YXIvZXYvdHJlZS5y # YgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAxNzUwADAwMDE3NTAAMDAwMDAw # MTcxNjMAMTAyNTAzMjA2MTIAMDIwMTIyACAwAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAA # ZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlcmlrAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcXVpcmUgImV2L3J1YnkiCnJlcXVp # cmUgImV2L25ldCIKcmVxdWlyZSAibWQ1IgpyZXF1aXJlICJ0aHJlYWQiCgpT # YW1lCT0gMApEb3duCT0gMQpVcAk9IDIKRHVtbXkJPSAzCgptb2R1bGUgVGV4 # dEFycmF5CiAgZGVmIHRleHRhcnJheQogICAgQGNoaWxkcmVuLmNvbGxlY3Qg # ZG8gfG9ianwKICAgICAgW29iai50ZXh0XSA8PCBvYmoudGV4dGFycmF5CiAg # ICBlbmQuZmxhdHRlbi5jb21wYWN0CiAgZW5kCmVuZAoKCm1vZHVsZSBQYXJz # ZVRyZWUKICBkZWYgcGFyc2V0cmVlKHByZW1ldGhvZD0icHJlY2hpbGRyZW4i # LCBwb3N0bWV0aG9kPSJwb3N0Y2hpbGRyZW4iLCAqYXJncykKICAgIGlmIEB2 # aXNpYmxlCiAgICAgIG1ldGhvZChwcmVtZXRob2QpLmNhbGwoKmFyZ3MpCWlm # IHJlc3BvbmRfdG8/KHByZW1ldGhvZCkKCiAgICAgIEBjaGlsZHJlbi5lYWNo # IGRvIHxvYmp8CiAgICAgICAgb2JqLnBhcnNldHJlZShwcmVtZXRob2QsIHBv # c3RtZXRob2QsICphcmdzKQogICAgICBlbmQKCiAgICAgIG1ldGhvZChwb3N0 # bWV0aG9kKS5jYWxsKCphcmdzKQlpZiByZXNwb25kX3RvPyhwb3N0bWV0aG9k # KQogICAgZW5kCiAgZW5kCgogICNkZWYgcGFyc2V0cmVlKHByZW1ldGhvZD0i # cHJlY2hpbGRyZW4iLCBwb3N0bWV0aG9kPSJwb3N0Y2hpbGRyZW4iLCAqYXJn # cykKICAjICBzdGFjawk9IFtzZWxmXQogICMgIGRvbmUJPSBbXQogICMKICAj # ICB3aGlsZSBub3Qgc3RhY2suZW1wdHk/CiAgIyAgICBvYmoJPSBzdGFjay5w # b3AKICAjCiAgIyAgICBpZiBub3QgZG9uZS5pbmNsdWRlPyhvYmopCiAgIyAg # ICAgIG9iai5tZXRob2QocHJlbWV0aG9kKS5jYWxsKCphcmdzKQlpZiBvYmou # cmVzcG9uZF90bz8ocHJlbWV0aG9kKQogICMKICAjICAgICAgc3RhY2sucHVz # aChvYmopCiAgIyAgICAgIGRvbmUucHVzaChvYmopCiAgIwogICMgICAgICBz # dGFjay5jb25jYXQgb2JqLmNoaWxkcmVuLnJldmVyc2UKICAjICAgICAgI29i # ai5jaGlsZHJlbi5yZXZlcnNlLmVhY2ggZG8gfGNvYmp8CiAgIyAgICAgICAg # I3N0YWNrLnB1c2goY29iaikKICAjICAgICAgI2VuZAogICMgICAgZWxzZQog # ICMgICAgICBvYmoubWV0aG9kKHBvc3RtZXRob2QpLmNhbGwoKmFyZ3MpCWlm # IG9iai5yZXNwb25kX3RvPyhwb3N0bWV0aG9kKQogICMgICAgZW5kCiAgIyAg # ZW5kCiAgI2VuZAplbmQKCmNsYXNzIFRyZWVPYmplY3QKICBhdHRyX3JlYWRl # ciA6c3VidHlwZQogIGF0dHJfd3JpdGVyIDpzdWJ0eXBlCiAgYXR0cl9yZWFk # ZXIgOnVwb3Jkb3duCiAgYXR0cl93cml0ZXIgOnVwb3Jkb3duCiAgYXR0cl9y # ZWFkZXIgOmxldmVsCiAgYXR0cl93cml0ZXIgOmxldmVsCiAgYXR0cl9yZWFk # ZXIgOnBhcmVudAogIGF0dHJfd3JpdGVyIDpwYXJlbnQKICBhdHRyX3JlYWRl # ciA6Y2hpbGRyZW4KICBhdHRyX3dyaXRlciA6Y2hpbGRyZW4KICBhdHRyX3Jl # YWRlciA6Y2xvc2VkCiAgYXR0cl93cml0ZXIgOmNsb3NlZAogIGF0dHJfcmVh # ZGVyIDp0ZXh0CiAgYXR0cl93cml0ZXIgOnRleHQKICBhdHRyX3JlYWRlciA6 # dmlzaWJsZQogIGF0dHJfd3JpdGVyIDp2aXNpYmxlCgogIGluY2x1ZGUgVGV4 # dEFycmF5CiAgaW5jbHVkZSBQYXJzZVRyZWUKCiAgZGVmIGluaXRpYWxpemUo # c3VidHlwZT1uaWwpCiAgICBAc3VidHlwZQk9IHN1YnR5cGUKICAgIEB1cG9y # ZG93bgk9IFNhbWUKICAgIEBsZXZlbAk9IG5pbAogICAgQHBhcmVudAk9IG5p # bAogICAgQGNoaWxkcmVuCT0gW10KICAgIEBjbG9zZWQJPSBuaWwKICAgIEB2 # aXNpYmxlCT0gdHJ1ZQogIGVuZAoKICBkZWYgaW5zcGVjdAogICAgcGFyZW50 # LCBjaGlsZHJlbgk9IEBwYXJlbnQsIEBjaGlsZHJlbgoKICAgIEBwYXJlbnQs # IEBjaGlsZHJlbgk9IHBhcmVudC5vYmplY3RfaWQsIGNoaWxkcmVuLmNvbGxl # Y3R7fG9ianwgb2JqLm9iamVjdF9pZH0KCiAgICByZXMgPSAiICAiICogKGxl # dmVsLTEpICsgIiN7c2VsZi5jbGFzc30oI3tAc3VidHlwZX0pICN7c3VwZXJ9 # IgoKICAgIEBwYXJlbnQsIEBjaGlsZHJlbgk9IHBhcmVudCwgY2hpbGRyZW4K # CiAgICByZXMKICBlbmQKCiAgZGVmIHByZXZpb3VzKGtsYXNzPVtdLCBza2lw # PVtdKQogICAga2xhc3MJPSBba2xhc3NdLmZsYXR0ZW4KICAgIHNraXAJPSBb # c2tpcF0uZmxhdHRlbgoKICAgIHBvCT0gQHBhcmVudAogICAgcmV0dXJuIG5p # bAlpZiBwby5uaWw/CgogICAgY2gJPSBwby5jaGlsZHJlbgogICAgcmV0dXJu # IG5pbAlpZiBjaC5uaWw/CgogICAgbgk9IGNoLmluZGV4KHNlbGYpCiAgICBy # ZXR1cm4gbmlsCWlmIG4ubmlsPwoKICAgIHJlcwk9IG5pbAogICAgaWYga2xh # c3MubmlsPwogICAgICBuIC09IDEKICAgICAgcmVzCT0gY2hbbl0KICAgIGVs # c2UKICAgICAgYmVnaW4KICAgICAgICBuIC09IDEKICAgICAgICByZXMJPSBj # aFtuXQogICAgICBlbmQgd2hpbGUgKGtsYXNzLmVtcHR5PyBvciBrbGFzcy5j # b2xsZWN0e3xrfCBjaFtuLTFdLmtpbmRfb2Y/KGspfS5zb3J0LnVuaXEgPT0g # W3RydWVdKSBcCiAgICAgICAgICAgIGFuZCAoc2tpcC5lbXB0eT8gb3Igc2tp # cC5jb2xsZWN0e3xrfCBjaFtuLTFdLmtpbmRfb2Y/KGspfS5zb3J0LnVuaXEg # PT0gW2ZhbHNlXSkKICAgIGVuZAoKICAgIHJlcwogIGVuZAplbmQKCmNsYXNz # IFRyZWUKICBAQHZlcnNpZQk9IDEKICBAQG11dGV4CT0gTXV0ZXgubmV3Cgog # IGF0dHJfcmVhZGVyIDpkYXRhCiAgYXR0cl93cml0ZXIgOmRhdGEKICBhdHRy # X3JlYWRlciA6cGFyZW50CiAgYXR0cl93cml0ZXIgOnBhcmVudAogIGF0dHJf # cmVhZGVyIDpjaGlsZHJlbgogIGF0dHJfd3JpdGVyIDpjaGlsZHJlbgogIGF0 # dHJfcmVhZGVyIDp2aXNpYmxlCiAgYXR0cl93cml0ZXIgOnZpc2libGUKCiAg # aW5jbHVkZSBUZXh0QXJyYXkKICBpbmNsdWRlIFBhcnNlVHJlZQoKICBkZWYg # aW5pdGlhbGl6ZShzdHJpbmcpCiAgICBzdHJpbmcgPSBzdHJpbmcuam9pbigi # IikgaWYgc3RyaW5nLmtpbmRfb2Y/KEFycmF5KQoKICAgIEBkYXRhCQk9IHN0 # cmluZwogICAgQHBhcmVudAkJPSBuaWwKICAgIEBjaGlsZHJlbgkJPSBbXQog # ICAgQG9iamVjdHMJCT0gW10KICAgIEB2aXNpYmxlCQk9IHRydWUKICAgIEBj # aGVja3Zpc2liaWxpdHkJPSBmYWxzZQoKICAgIGJ1aWxkb2JqZWN0cyhzdHJp # bmcpCiAgICBidWlsZHBhcmVudHMKICAgIGJ1aWxkY2hpbGRyZW4KICAgIG1h # cmtjbG9zZWQKICAgIGRlbGV0ZWR1bW1pZXMKCiAgICBAY2hlY2t2aXNpYmls # aXR5CT0gdHJ1ZQogIGVuZAoKICBkZWYgc2VsZi5maWxlKGZpbGUpCiAgICBu # ZXcoRmlsZS5uZXcoZmlsZSkucmVhZGxpbmVzKQogIGVuZAoKICBkZWYgc2Vs # Zi5sb2NhdGlvbih1cmwsIGZvcm09SGFzaC5uZXcpCiAgICBzCT0gSFRUUENs # aWVudC5nZXQodXJsLCB7fSwgZm9ybSkKICAgIHMJPSAiIglpZiBzLm5pbD8K # ICAgIG5ldyhzKQogIGVuZAoKICBkZWYgc2VsZi5uZXdfZnJvbV9jYWNoZTIo # ZGF0YSkKICAgIG5ldyhkYXRhKQogIGVuZAoKICBkZWYgc2VsZi5uZXdfZnJv # bV9jYWNoZShkYXRhKQogICAgaGFzaAk9IE1ENS5uZXcoIiN7QEB2ZXJzaWV9 # ICN7ZGF0YX0iKQoKICAgIGRpcgkJPSAiI3t0ZW1wfS9ldmNhY2hlLiN7dXNl # cn0vdHJlZS5uZXciCiAgICBmaWxlCT0gIiN7ZGlyfS8je2hhc2h9IgoKICAg # IHRyZWUJPSBuaWwKCiAgICBGaWxlLm1rcGF0aChkaXIpCgogICAgaWYgRmls # ZS5maWxlPyhmaWxlKQogICAgICBAQG11dGV4LnN5bmNocm9uaXplIGRvCiAg # ICAgICAgdHJlZQk9IE1hcnNoYWwucmVzdG9yZShGaWxlLm5ldyhmaWxlLCAi # cmIiKSkKICAgICAgZW5kCiAgICBlbHNlCiAgICAgIHRyZWUJPSBuZXcoZGF0 # YSkKCiAgICAgIGlmIG5vdCB0cmVlLm5pbD8KICAgICAgICBAQG11dGV4LnN5 # bmNocm9uaXplIGRvCiAgICAgICAgICBGaWxlLm9wZW4oZmlsZSwgIndiIikg # e3xmfCBNYXJzaGFsLmR1bXAodHJlZSwgZil9CiAgICAgICAgZW5kCiAgICAg # IGVuZAogICAgZW5kCgogICAgcmV0dXJuIHRyZWUKICBlbmQKCiAgZGVmIGlu # c3BlY3QKICAgIEBvYmplY3RzLmNvbGxlY3QgZG8gfG9ianwKICAgICAgb2Jq # Lmluc3BlY3QKICAgIGVuZC5qb2luKCJcbiIpCiAgZW5kCgogIGRlZiBidWls # ZG9iamVjdHMoc3RyaW5nKQogICAgcmFpc2UgIkhhcyB0byBiZSBkZWZpbmVk # IGluIHRoZSBzdWJjbGFzcy4iCiAgZW5kCgogIGRlZiBidWlsZHBhcmVudHMK # ICAgIGxldmVsCT0gMQogICAgbGV2ZWxzCT0gSGFzaC5uZXcKICAgIGxldmVs # c1swXQk9IG5pbAogICAgcGFyc2UgZG8gfHR5cGUsIG9ianwKICAgICAgY2Fz # ZSBvYmoudXBvcmRvd24KICAgICAgd2hlbiBEb3duCiAgICAgICAgb2JqLmxl # dmVsCT0gbGV2ZWwKICAgICAgICBvYmoucGFyZW50CT0gbGV2ZWxzW2xldmVs # LTFdCiAgICAgICAgbGV2ZWxzW2xldmVsXQk9IG9iagogICAgICAgIGxldmVs # ICs9IDEKICAgICAgd2hlbiBVcCwgRHVtbXkKICAgICAgICBwbCA9IGxldmVs # CiAgICAgICAgMS51cHRvKGxldmVsLTEpIGRvIHxsfAogICAgICAgICAgcG8g # PSBsZXZlbHNbbF0KICAgICAgICAgIHBsID0gbCBpZiBwby5zdWJ0eXBlID09 # IG9iai5zdWJ0eXBlCiAgICAgICAgZW5kCiAgICAgICAgbGV2ZWwgPSBwbAog # ICAgICAgIG9iai5sZXZlbAk9IGxldmVsCiAgICAgICAgb2JqLnBhcmVudAk9 # IGxldmVsc1tsZXZlbC0xXQogICAgICB3aGVuIFNhbWUKICAgICAgICBvYmou # bGV2ZWwJPSBsZXZlbAogICAgICAgIG9iai5wYXJlbnQJPSBsZXZlbHNbbGV2 # ZWwtMV0KICAgICAgZW5kCiAgICBlbmQKICBlbmQKCiAgZGVmIGJ1aWxkY2hp # bGRyZW4KICAgIEBvYmplY3RzLmVhY2ggZG8gfG9ianwKICAgICAgb2JqLmNo # aWxkcmVuID0gW10KICAgIGVuZAoKICAgIHBhcnNlIGRvIHx0eXBlLCBvYmp8 # CiAgICAgIGlmIG5vdCBvYmoucGFyZW50Lm5pbD8KICAgICAgICBwbyA9IG9i # ai5wYXJlbnQKICAgICAgICBwby5jaGlsZHJlbiA8PCBvYmoKICAgICAgZWxz # ZQogICAgICAgIEBjaGlsZHJlbiA8PCBvYmoKICAgICAgZW5kCiAgICBlbmQK # ICBlbmQKCiAgZGVmIG1hcmtjbG9zZWQKICAgIChbc2VsZl0gKyBAb2JqZWN0 # cykuZWFjaCBkbyB8b2JqfAogICAgICBvYmouY2hpbGRyZW4uZWFjaF9pbmRl # eCBkbyB8aXwKICAgICAgICBjbzEJCT0gb2JqLmNoaWxkcmVuW2ldCiAgICAg # ICAgY28yCQk9IG9iai5jaGlsZHJlbltpKzFdCgogICAgICAgIGNvMS5jbG9z # ZWQJPSAobm90IGNvMi5uaWw/IGFuZCBjbzEudXBvcmRvd24gPT0gRG93biBh # bmQgKGNvMi51cG9yZG93biA9PSBVcCBvciBjbzIudXBvcmRvd24gPT0gRHVt # bXkpIGFuZCBjbzEuc3VidHlwZSA9PSBjbzIuc3VidHlwZSkKICAgICAgZW5k # CiAgICBlbmQKICBlbmQKCiAgZGVmIGRlbGV0ZWR1bW1pZXMKICAgIChbc2Vs # Zl0gKyBAb2JqZWN0cykuZWFjaCBkbyB8b2JqfAogICAgICBvYmouY2hpbGRy # ZW4uZGVsZXRlX2lmIGRvIHxvYmoyfAogICAgICAgIG9iajIudXBvcmRvd24g # PT0gRHVtbXkKICAgICAgZW5kCiAgICBlbmQKCiAgICBAb2JqZWN0cy5kZWxl # dGVfaWYgZG8gfG9ianwKICAgICAgb2JqLnVwb3Jkb3duID09IER1bW15CiAg # ICBlbmQKICBlbmQKCiAgZGVmIHBhcnNlKHR5cGVzPVtdLCBzdWJ0eXBlcz1b # XSwgb25jZT1mYWxzZSkKICAgIHR5cGVzCT0gW3R5cGVzXQlpZiB0eXBlcy5j # bGFzcyA9PSBDbGFzcwogICAgc3VidHlwZXMJPSBbc3VidHlwZXNdCWlmIHN1 # YnR5cGVzLmNsYXNzID09IFN0cmluZwogICAgaGlkZWxldmVsCT0gbmlsCgog # ICAgY2F0Y2ggOm9uY2UgZG8KICAgICAgQG9iamVjdHMuZWFjaCBkbyB8b2Jq # fAogICAgICAgIGlmIChAY2hlY2t2aXNpYmlsaXR5IGFuZCBoaWRlbGV2ZWwu # bmlsPyBhbmQgKG5vdCBvYmoudmlzaWJsZSkpCiAgICAgICAgICBoaWRlbGV2 # ZWwJPSBvYmoubGV2ZWwKICAgICAgICBlbHNlCiAgICAgICAgICBpZiAoQGNo # ZWNrdmlzaWJpbGl0eSBhbmQgKG5vdCBoaWRlbGV2ZWwubmlsPykgYW5kIG9i # ai52aXNpYmxlIGFuZCBvYmoubGV2ZWwgPD0gaGlkZWxldmVsKQogICAgICAg # ICAgICBoaWRlbGV2ZWwJPSBuaWwKICAgICAgICAgIGVuZAogICAgICAgIGVu # ZAoKICAgICAgICBpZiBoaWRlbGV2ZWwubmlsPwogICAgICAgICAgb2sgPSBm # YWxzZQogICAgICAgICAgY2F0Y2ggOnN0b3AgZG8KICAgICAgICAgICAgaWYg # dHlwZXMuZW1wdHk/CiAgICAgICAgICAgICAgaWYgc3VidHlwZXMuZW1wdHk/ # CiAgICAgICAgICAgICAgICBvayA9IHRydWUKICAgICAgICAgICAgICAgIHRo # cm93IDpzdG9wCiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg # c3VidHlwZXMuZWFjaCBkbyB8c3R8CiAgICAgICAgICAgICAgICAgIGlmIG9i # ai5zdWJ0eXBlID09IHN0CiAgICAgICAgICAgICAgICAgICAgb2sgPSB0cnVl # CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgOnN0b3AKICAgICAgICAgICAg # ICAgICAgZW5kCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICBl # bmQKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIGlmIHN1YnR5cGVz # LmVtcHR5PwogICAgICAgICAgICAgICAgdHlwZXMuZWFjaCBkbyB8dHwKICAg # ICAgICAgICAgICAgICAgaWYgb2JqLmtpbmRfb2Y/KHQpCiAgICAgICAgICAg # ICAgICAgICAgb2sgPSB0cnVlCiAgICAgICAgICAgICAgICAgICAgdGhyb3cg # OnN0b3AKICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICBl # bmQKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB0eXBlcy5l # YWNoIGRvIHx0fAogICAgICAgICAgICAgICAgICBzdWJ0eXBlcy5lYWNoIGRv # IHxzdHwKICAgICAgICAgICAgICAgICAgICBpZiBvYmoua2luZF9vZj8odCkg # YW5kIG9iai5zdWJ0eXBlID09IHN0CiAgICAgICAgICAgICAgICAgICAgICBv # ayA9IHRydWUKICAgICAgICAgICAgICAgICAgICAgIHRocm93IDpzdG9wCiAg # ICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgIGVuZAog # ICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgZW5kCiAgICAgICAg # ICAgIGVuZAogICAgICAgICAgZW5kCgogICAgICAgICAgaWYgb2sKICAgICAg # ICAgICAgeWllbGQob2JqLmNsYXNzLnRvX3MsIG9iaikKCiAgICAgICAgICAg # IHRocm93IDpvbmNlCWlmIG9uY2UKICAgICAgICAgIGVuZAogICAgICAgIGVu # ZAogICAgICBlbmQKICAgIGVuZAogIGVuZAoKICBkZWYgcGF0aChwYWQpCiAg # ICBwMQk9IHNlbGYKCiAgICB1bmxlc3MgcGFkLm5pbD8KICAgICAgcGFkLnNw # bGl0KC9cLy8pLmVhY2ggZG8gfGRlZWx8CiAgICAgICAgdGFnLCB2b29ya29t # ZW4JPSBkZWVsLnNwbGl0KC86LykKCiAgICAgICAgaWYgKG5vdCB0YWcubmls # PykgYW5kIChub3QgcDEubmlsPykKICAgICAgICAgIHZvb3Jrb21lbgk9IDEJ # aWYgdm9vcmtvbWVuLm5pbD8KICAgICAgICAgIHZvb3Jrb21lbgk9IHZvb3Jr # b21lbi50b19pCgogICAgICAgICAgdGVsbGVyCT0gMAogICAgICAgICAgcDIJ # PSBuaWwKICAgICAgICAgIHAxLmNoaWxkcmVuLmVhY2hfaW5kZXggZG8gfGl8 # CiAgICAgICAgICAgICNpZiBwMS5jaGlsZHJlbltpXS51cG9yZG93biA9PSBE # b3duCiAgICAgICAgICAgICAgdW5sZXNzICBwMS5jaGlsZHJlbltpXS5zdWJ0 # eXBlLm5pbD8KICAgICAgICAgICAgICAgIGlmIHAxLmNoaWxkcmVuW2ldLnN1 # YnR5cGUubm9xdW90ZXMgPT0gdGFnLm5vcXVvdGVzCiAgICAgICAgICAgICAg # ICAgIHRlbGxlciArPSAxCiAgICAgICAgICAgICAgICAgIHAyCT0gcDEuY2hp # bGRyZW5baV0JaWYgdGVsbGVyID09IHZvb3Jrb21lbgogICAgICAgICAgICAg # ICAgZW5kCiAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICNlbmQKICAg # ICAgICAgIGVuZAogICAgICAgICAgcDEJPSBwMgogICAgICAgIGVuZAogICAg # ICBlbmQKICAgIGVuZAoKICAgIHAxCiAgZW5kCmVuZAoAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdG1wLmVhcjJydWJ5c2NyaXB0LmYu # MTE1MTAudGFyL2V2L2Jyb3dzZXIucmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAw # MTc1MAAwMDAxNzUwADAwMDAwMDA1MjA3ADEwMjUwMzIwNjEyADAyMDY0MgAg # MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAB1c3RhciAgAGVyaWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAw # ADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByZXF1 # aXJlICJldi9ydWJ5IgpyZXF1aXJlICJldi9uZXQiCgpiZWdpbgogIHJlcXVp # cmUgIndpbjMyb2xlIgogIHJlcXVpcmUgIndpbjMyL3JlZ2lzdHJ5IgpyZXNj # dWUgTG9hZEVycm9yCiAgJCIucHVzaCAid2luMzJvbGUuc28iCiAgJCIucHVz # aCAid2luMzIvcmVnaXN0cnkucmIiCmVuZAoKZGVmIHdpbmRvd3Nicm93c2Vy # CiAgJHN0ZGVyci5wdXRzICJMb29raW5nIGZvciBkZWZhdWx0IGJyb3dzZXIu # Li4iCgogIGZpbGV0eXBlCT0gImh0bWxmaWxlIgogIGFwcGxpY2F0aW9uCT0g # bmlsCgogIGJlZ2luCiAgICBXaW4zMjo6UmVnaXN0cnk6OkhLRVlfQ0xBU1NF # U19ST09ULm9wZW4oIi5odG1sIikgZG8gfHJlZ3wKICAgICAgZmlsZXR5cGUJ # CT0gcmVnWyIiXQogICAgZW5kCgogICAgV2luMzI6OlJlZ2lzdHJ5OjpIS0VZ # X0NMQVNTRVNfUk9PVC5vcGVuKGZpbGV0eXBlICsgIlxcc2hlbGxcXG9wZW5c # XGNvbW1hbmQiKSBkbyB8cmVnfAogICAgICBhcHBsaWNhdGlvbgk9IHJlZ1si # Il0KICAgIGVuZAogIHJlc2N1ZSBOYW1lRXJyb3IKICAgICRzdGRlcnIucHV0 # cyAiT25seSBhdmFpbGFibGUgZm9yIFdpbmRvd3MgYW5kIEN5Z3dpbi4iCiAg # ZW5kCgogIGFwcGxpY2F0aW9uCmVuZAoKZGVmIGN5Z3dpbmJyb3dzZXIKICBi # cm93c2VyLCAqYXJncwk9IHdpbmRvd3Nicm93c2VyLnNwbGl0d29yZHMKICBi # cm93c2VyCQk9IGJyb3dzZXIuZ3N1YigvXFwvLCAiLyIpCiAgI2Jyb3dzZXIJ # CT0gYnJvd3NlcgoKICBhcmdzLmNvbGxlY3Qhe3xhfCBhLmdzdWIoL1xcLywg # Ii8iKX0KICAjYXJncy5jb2xsZWN0IXt8YXwgIlwiJXNcIiIgJSBbYS5nc3Vi # KC9cXC8sICIvIildfQogICNhcmdzLmNvbGxlY3Qhe3xhfCAiXCIlc1wiIiAl # IFthXX0KCiAgcmVzCT0gIlwiJXNcIiAlcyIgJSBbYnJvd3NlciwgYXJncy5q # b2luKCIgIildCiAgcmVzCmVuZAoKZGVmIGxpbnV4YnJvd3NlcgogIGFwcGxp # Y2F0aW9uCT0gIiIKCiAgYXBwbGljYXRpb24JPSBgd2hpY2ggZ2FsZW9uCQky # PiAvZGV2L251bGxgLmNob21wCWlmIGFwcGxpY2F0aW9uLmVtcHR5PwogIGFw # cGxpY2F0aW9uCT0gYHdoaWNoIG1vemlsbGEJMj4gL2Rldi9udWxsYC5jaG9t # cAlpZiBhcHBsaWNhdGlvbi5lbXB0eT8KICBhcHBsaWNhdGlvbgk9IGB3aGlj # aCBmaXJlZm94CTI+IC9kZXYvbnVsbGAuY2hvbXAJaWYgYXBwbGljYXRpb24u # ZW1wdHk/CiAgYXBwbGljYXRpb24JPSBgd2hpY2ggb3BlcmEJCTI+IC9kZXYv # bnVsbGAuY2hvbXAJaWYgYXBwbGljYXRpb24uZW1wdHk/CiAgYXBwbGljYXRp # b24JPSBgd2hpY2gga29ucXVlcm9yCTI+IC9kZXYvbnVsbGAuY2hvbXAJaWYg # YXBwbGljYXRpb24uZW1wdHk/CiAgYXBwbGljYXRpb24JPSBgd2hpY2ggaHRt # bHZpZXcJMj4gL2Rldi9udWxsYC5jaG9tcAlpZiBhcHBsaWNhdGlvbi5lbXB0 # eT8KICBhcHBsaWNhdGlvbgk9IG5pbAkJCQkJCWlmIGFwcGxpY2F0aW9uLmVt # cHR5PwoKICBhcHBsaWNhdGlvbgplbmQKCmRlZiBkZWZhdWx0YnJvd3Nlcgog # IHJlcwk9IG5pbAogIHJlcwk9IHdpbmRvd3Nicm93c2VyCWlmIHdpbmRvd3M/ # CiAgcmVzCT0gY3lnd2luYnJvd3NlcgkJaWYgY3lnd2luPwogIHJlcwk9IGxp # bnV4YnJvd3NlcgkJaWYgbGludXg/CiAgcmVzCmVuZAoKZGVmIHNob3d1cmxp # bmJyb3dzZXIodXJsLCBicm93c2VyPWRlZmF1bHRicm93c2VyKQogIGNvbW1h # bmQJPSAiI3ticm93c2VyfSBcIiN7dXJsfVwiIgoKICBzeXN0ZW0oY29tbWFu # ZCkJb3IgJHN0ZGVyci5wdXRzICJTdGFydGluZyBvZiB0aGUgYnJvd3NlciBm # YWlsZWQsIG9yIHRoZSBicm93c2VyIHRlcm1pbmF0ZWQgYWJub3JtYWxseS5c # bkNvbW1hbmQgPT4gI3tjb21tYW5kfSIKZW5kCgpkZWYgc2hvd2luYnJvd3Nl # cihodG1sLCBicm93c2VyPWRlZmF1bHRicm93c2VyKQogIHBvcnQsIGlvCT0g # VENQU2VydmVyLmZyZWVwb3J0KDc3MDEsIDc3MDkpCgogIHVubGVzcyBicm93 # c2VyLm5pbD8KICAgIFRocmVhZC5uZXcgZG8KICAgICAgYmVnaW4KCVRocmVh # ZC5wYXNzCgogICAgICAgIHNob3d1cmxpbmJyb3dzZXIoImh0dHA6Ly9sb2Nh # bGhvc3Q6I3twb3J0fS8iLCBicm93c2VyKQogICAgICByZXNjdWUKICAgICAg # ZW5kCiAgICBlbmQKICBlbmQKCiAgSFRUUFNlcnZlci5zZXJ2ZShbcG9ydCwg # aW9dKSBkbyB8cmVxLCByZXNwfAogICAgcmVzcCA8PCBodG1sCgogICAgcmVz # cC5zdG9wCiAgZW5kCmVuZAoKZGVmIHRhYjJodG1sKHRhYikKICByZXMJPSAi # IgoKICB0YWIJPSB0YWIudG9faHRtbChmYWxzZSkKCiAgcmVzIDw8ICI8aHRt # bD5cbiIKICByZXMgPDwgIjxib2R5PlxuIgogIHJlcyA8PCAiPHRhYmxlIGFs # aWduPSdjZW50ZXInIGJvcmRlcj0nMScgY2VsbHNwYWNpbmc9JzAnIGNlbGxw # YWRkaW5nPSczJz5cbiIKICByZXMgPDwgIjx0Ym9keT5cbiIKCiAgdGFiLnNw # bGl0KC9ccipcbi8pLmVhY2ggZG8gfGxpbmV8CiAgICByZXMgPDwgIjx0cj5c # biIKCiAgICBsaW5lLnNwbGl0KC9cdC8sIC0xKS5lYWNoIGRvIHx2ZWxkfAog # ICAgICB2ZWxkCT0gIiZuYnNwOyIJaWYgdmVsZC5jb21wcmVzcy5lbXB0eT8K # CiAgICAgIHJlcyA8PCAiPHRkPiVzPC90ZD5cbiIgJSB2ZWxkCiAgICBlbmQK # CiAgICByZXMgPDwgIjwvdHI+XG4iCiAgZW5kCgogIHJlcyA8PCAiPC90Ym9k # eT5cbiIKICByZXMgPDwgIjwvdGFibGU+XG4iCiAgcmVzIDw8ICI8L2JvZHk+ # XG4iCiAgcmVzIDw8ICI8L2h0bWw+XG4iCgogIHJlcwplbmQKAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAB0bXAuZWFyMnJ1YnlzY3JpcHQuZi4xMTUxMC50YXIvZXYvdGhy # ZWFkLnJiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAxNzUwADAwMDE3NTAAMDAw # MDAwMDE2NDEAMTAyNTAzMjA2MTIAMDIwNDI0ACAwAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFy # ICAAZXJpawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlcmlrAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcXVpcmUgImV2L3J1YnkiCnJl # cXVpcmUgInRocmVhZCIKCmNsYXNzIEZha2VUaHJlYWQKICBkZWYgaW5pdGlh # bGl6ZSgqYXJncykKICAgIHlpZWxkKCphcmdzKQogIGVuZAoKICBkZWYgam9p # bgogIGVuZAplbmQKCmNsYXNzIFRocmVhZExpbWl0ZXIKICBkZWYgaW5pdGlh # bGl6ZShsaW1pdCkKICAgIEBsaW1pdAk9IGxpbWl0CiAgICBAY291bnQJPSAw # CiAgICBAdGhyZWFkcwk9IFtdCiAgICBAbXV0ZXgJPSBNdXRleC5uZXcKICAg # IEBjdgkJPSBDb25kaXRpb25WYXJpYWJsZS5uZXcKCiAgICBldmVyeSgxKSBk # bwogICAgICBAbXV0ZXguc3luY2hyb25pemUgZG8KICAgICAgICBAdGhyZWFk # cy5kdXAuZWFjaCBkbyB8dHwKICAgICAgICAgIHVubGVzcyB0LmFsaXZlPwog # ICAgICAgICAgICAkc3RkZXJyLnB1dHMgIkZvdW5kIGRlYWQgdGhyZWFkLiIK # CiAgICAgICAgICAgIEB0aHJlYWRzLmRlbGV0ZSh0KQoKICAgICAgICAgICAg # QGNvdW50IC09IDEKCiAgICAgICAgICAgIEBjdi5zaWduYWwKICAgICAgICAg # IGVuZAogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAogIGVuZAoKICBk # ZWYgd2FpdAogICAgaWYgYmxvY2tfZ2l2ZW4/CiAgICAgIHNlbGYud2FpdAog # ICAgICB5aWVsZAogICAgICBzZWxmLnNpZ25hbAogICAgZWxzZQogICAgICBA # bXV0ZXguc3luY2hyb25pemUgZG8KICAgICAgICBAdGhyZWFkcyA8PCBUaHJl # YWQuY3VycmVudAoKICAgICAgICBAY291bnQgKz0gMQoKICAgICAgICBAY3Yu # d2FpdChAbXV0ZXgpCWlmIEBjb3VudCA+IEBsaW1pdAogICAgICBlbmQKICAg # IGVuZAogIGVuZAoKICBkZWYgc2lnbmFsCiAgICBAbXV0ZXguc3luY2hyb25p # emUgZG8KICAgICAgQHRocmVhZHMuZGVsZXRlKFRocmVhZC5jdXJyZW50KQoK # ICAgICAgQGNvdW50IC09IDEKCiAgICAgIEBjdi5zaWduYWwKICAgIGVuZAog # IGVuZAplbmQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # AAAAAAAAAAAAAAAAAAAA