PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 131
// Copyright 2014 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // pprof is a tool for visualization of profile.data. It is based on // the upstream version at github.com/google/pprof, with minor // modifications specific to the Go distribution. Please consider // upstreaming any modifications to these packages. package main import ( "crypto/tls" "debug/dwarf" "fmt" "io" "net/http" "net/url" "os" "regexp" "strconv" "strings" "sync" "time" "cmd/internal/objfile" "github.com/google/pprof/driver" "github.com/google/pprof/profile" ) func main() { options := &driver.Options{ Fetch: new(fetcher), Obj: new(objTool), UI: newUI(), } if err := driver.PProf(options); err != nil { fmt.Fprintf(os.Stderr, "%v\n", err) os.Exit(2) } } type fetcher struct { } func (f *fetcher) Fetch(src string, duration, timeout time.Duration) (*profile.Profile, string, error) { sourceURL, timeout := adjustURL(src, duration, timeout) if sourceURL == "" { // Could not recognize URL, let regular pprof attempt to fetch the profile (eg. from a file) return nil, "", nil } fmt.Fprintln(os.Stderr, "Fetching profile over HTTP from", sourceURL) if duration > 0 { fmt.Fprintf(os.Stderr, "Please wait... (%v)\n", duration) } p, err := getProfile(sourceURL, timeout) return p, sourceURL, err } func getProfile(source string, timeout time.Duration) (*profile.Profile, error) { url, err := url.Parse(source) if err != nil { return nil, err } var tlsConfig *tls.Config if url.Scheme == "https+insecure" { tlsConfig = &tls.Config{ InsecureSkipVerify: true, } url.Scheme = "https" source = url.String() } client := &http.Client{ Transport: &http.Transport{ ResponseHeaderTimeout: timeout + 5*time.Second, Proxy: http.ProxyFromEnvironment, TLSClientConfig: tlsConfig, }, } resp, err := client.Get(source) if err != nil { return nil, err } if resp.StatusCode != http.StatusOK { defer resp.Body.Close() return nil, statusCodeError(resp) } return profile.Parse(resp.Body) } func statusCodeError(resp *http.Response) error { if resp.Header.Get("X-Go-Pprof") != "" && strings.Contains(resp.Header.Get("Content-Type"), "text/plain") { // error is from pprof endpoint if body, err := io.ReadAll(resp.Body); err == nil { return fmt.Errorf("server response: %s - %s", resp.Status, body) } } return fmt.Errorf("server response: %s", resp.Status) } // cpuProfileHandler is the Go pprof CPU profile handler URL. const cpuProfileHandler = "/debug/pprof/profile" // adjustURL applies the duration/timeout values and Go specific defaults. func adjustURL(source string, duration, timeout time.Duration) (string, time.Duration) { u, err := url.Parse(source) if err != nil || (u.Host == "" && u.Scheme != "" && u.Scheme != "file") { // Try adding http:// to catch sources of the form hostname:port/path. // url.Parse treats "hostname" as the scheme. u, err = url.Parse("http://" + source) } if err != nil || u.Host == "" { return "", 0 } if u.Path == "" || u.Path == "/" { u.Path = cpuProfileHandler } // Apply duration/timeout overrides to URL. values := u.Query() if duration > 0 { values.Set("seconds", fmt.Sprint(int(duration.Seconds()))) } else { if urlSeconds := values.Get("seconds"); urlSeconds != "" { if us, err := strconv.ParseInt(urlSeconds, 10, 32); err == nil { duration = time.Duration(us) * time.Second } } } if timeout <= 0 { if duration > 0 { timeout = duration + duration/2 } else { timeout = 60 * time.Second } } u.RawQuery = values.Encode() return u.String(), timeout } // objTool implements driver.ObjTool using Go libraries // (instead of invoking GNU binutils). type objTool struct { mu sync.Mutex disasmCache map[string]*objfile.Disasm } func (*objTool) Open(name string, start, limit, offset uint64, relocationSymbol string) (driver.ObjFile, error) { of, err := objfile.Open(name) if err != nil { return nil, err } f := &file{ name: name, file: of, } if start != 0 { if load, err := of.LoadAddress(); err == nil { f.offset = start - load } } return f, nil } func (*objTool) Demangle(names []string) (map[string]string, error) { // No C++, nothing to demangle. return make(map[string]string), nil } func (t *objTool) Disasm(file string, start, end uint64, intelSyntax bool) ([]driver.Inst, error) { if intelSyntax { return nil, fmt.Errorf("printing assembly in Intel syntax is not supported") } d, err := t.cachedDisasm(file) if err != nil { return nil, err } var asm []driver.Inst d.Decode(start, end, nil, false, func(pc, size uint64, file string, line int, text string) { asm = append(asm, driver.Inst{Addr: pc, File: file, Line: line, Text: text}) }) return asm, nil } func (t *objTool) cachedDisasm(file string) (*objfile.Disasm, error) { t.mu.Lock() defer t.mu.Unlock() if t.disasmCache == nil { t.disasmCache = make(map[string]*objfile.Disasm) } d := t.disasmCache[file] if d != nil { return d, nil } f, err := objfile.Open(file) if err != nil { return nil, err } d, err = f.Disasm() f.Close() if err != nil { return nil, err } t.disasmCache[file] = d return d, nil } func (*objTool) SetConfig(config string) { // config is usually used to say what binaries to invoke. // Ignore entirely. } // file implements driver.ObjFile using Go libraries // (instead of invoking GNU binutils). // A file represents a single executable being analyzed. type file struct { name string offset uint64 sym []objfile.Sym file *objfile.File pcln objfile.Liner triedDwarf bool dwarf *dwarf.Data } func (f *file) Name() string { return f.name } func (f *file) ObjAddr(addr uint64) (uint64, error) { return addr - f.offset, nil } func (f *file) BuildID() string { // No support for build ID. return "" } func (f *file) SourceLine(addr uint64) ([]driver.Frame, error) { if f.pcln == nil { pcln, err := f.file.PCLineTable() if err != nil { return nil, err } f.pcln = pcln } addr -= f.offset file, line, fn := f.pcln.PCToLine(addr) if fn != nil { frame := []driver.Frame{ { Func: fn.Name, File: file, Line: line, }, } return frame, nil } frames := f.dwarfSourceLine(addr) if frames != nil { return frames, nil } return nil, fmt.Errorf("no line information for PC=%#x", addr) } // dwarfSourceLine tries to get file/line information using DWARF. // This is for C functions that appear in the profile. // Returns nil if there is no information available. func (f *file) dwarfSourceLine(addr uint64) []driver.Frame { if f.dwarf == nil && !f.triedDwarf { // Ignore any error--we don't care exactly why there // is no DWARF info. f.dwarf, _ = f.file.DWARF() f.triedDwarf = true } if f.dwarf != nil { r := f.dwarf.Reader() unit, err := r.SeekPC(addr) if err == nil { if frames := f.dwarfSourceLineEntry(r, unit, addr); frames != nil { return frames } } } return nil } // dwarfSourceLineEntry tries to get file/line information from a // DWARF compilation unit. Returns nil if it doesn't find anything. func (f *file) dwarfSourceLineEntry(r *dwarf.Reader, entry *dwarf.Entry, addr uint64) []driver.Frame { lines, err := f.dwarf.LineReader(entry) if err != nil { return nil } var lentry dwarf.LineEntry if err := lines.SeekPC(addr, &lentry); err != nil { return nil } // Try to find the function name. name := "" FindName: for entry, err := r.Next(); entry != nil && err == nil; entry, err = r.Next() { if entry.Tag == dwarf.TagSubprogram { ranges, err := f.dwarf.Ranges(entry) if err != nil { return nil } for _, pcs := range ranges { if pcs[0] <= addr && addr < pcs[1] { var ok bool // TODO: AT_linkage_name, AT_MIPS_linkage_name. name, ok = entry.Val(dwarf.AttrName).(string) if ok { break FindName } } } } } // TODO: Report inlined functions. frames := []driver.Frame{ { Func: name, File: lentry.File.Name, Line: lentry.Line, }, } return frames } func (f *file) Symbols(r *regexp.Regexp, addr uint64) ([]*driver.Sym, error) { if f.sym == nil { sym, err := f.file.Symbols() if err != nil { return nil, err } f.sym = sym } var out []*driver.Sym for _, s := range f.sym { // Ignore a symbol with address 0 and size 0. // An ELF STT_FILE symbol will look like that. if s.Addr == 0 && s.Size == 0 { continue } if (r == nil || r.MatchString(s.Name)) && (addr == 0 || s.Addr <= addr && addr < s.Addr+uint64(s.Size)) { out = append(out, &driver.Sym{ Name: []string{s.Name}, File: f.name, Start: s.Addr, End: s.Addr + uint64(s.Size) - 1, }) } } return out, nil } func (f *file) Close() error { f.file.Close() return nil } // newUI will be set in readlineui.go in some platforms // for interactive readline functionality. var newUI = func() driver.UI { return nil }