�PNG  IHDR22?�� pHYs  �� OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*! J�!��Q�EEȠ�����Q, � ��!���������{�kּ������>���� �H3Q5� �B�������.@� $p�d!s�#�~<<+"��x� �M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH���� � 0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4���������x����6��_-��"bb���ϫp@�t~��,/��;�m��%�h^ �u��f�@����W�p�~<�5�j>{�-�]c�K'Xt����o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A��,���� �`6�B$��BB d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(�� A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=� �C��7�F� �dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8, �c˱"� ���V����cϱw�E� 6wB aAHXLXN�H� $4� 7 �Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[ �b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w ��Ljg(�gw��L�Ӌ�T071���oUX*�*|�� �J�&�*/T����ު U�U�T��^S}�FU3S� Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k ��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN �(���~���)�)�4L�1e\k����X�H�Q�G�6������E�Y��A�J'\'Gg����S�Sݧ �M=:��.�k���Dw�n��^��Lo��y���}/�T�m���G X� $� �<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��= ���Z~s�r:V:ޚΜ�?}����/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z���������ۯ�6�i�ܟ�4�)�Y3s���C�Q��? ��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�������!h�쐭!��Α�i�P~���a�a��~ '���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl������� �{�/�]py�����.,:�@L�N8��A*��%�w%� y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y- �B��TZ(�*�geWf�͉�9���+��̳�ې7�����ᒶ��KW-X潬j9�������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n �ڴ �V����E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa��n��{��4���[���>ɾ�UUM�f�e�I���?�������m]�Nmq����#�׹���=TR��+�G�����w- 6 U����#pDy��� �� :�v�{���vg/jB��F�S��[b[�O�>����z�G��499�?r����C�d�&����ˮ/~�����јѡ�򗓿m|������������x31^�V���w�w��O�| (�h���SЧ��������c3-� cHRMz%������u0�`:�o�_�F5IDATx��ytUս�?�;���fN$$��@B�!�k��� -*�gE���j�O�kQ�ʠ`U�B_ �AÐ0%�Ȕ�@r3ޛ;߳��$�@��v����^�s����������$��ߢ !�W��5�̱'-٘������4�>�Rƫ$�G��0U�H}�_ _� #��k�MJ/=�9Du *ڲ�k�PQ;0��j|�*�$�^컂脛y���>�z×� B��� ��(�:$�ʔ_�6��C!B����MVx��a��ζyY����j��ƋY2�9�F�{r��r�딟F��Q��hY6��� x��[l��RC��������nt@��;P��3��� F�w��7��:�P���ɋ'���mj���Bƪ�$�Q�L��y��߷g��\���z����v5�p�v$�v櫻�`6~K �Y�X����,�:��"�o�e0II"(��,������l_�C���/4�+f�E�!q��:����u����c��樼.UE�@� �]K�W���$-�h]�JG���Dz)�`��.�A/ ���mᏣc�3jK� �!�>���$�Q�!�_�? \�C2(E �M$Z I{�U���s�ǣ���=��@Բe ޻��W�����@ �w����}�9v,)��.}*|"�s��di���,���G�]W�AC�������|<����[��ߕ������K�*�G nߴ!��‹��J�!��6(L�a)��Am��������;adf��:�xm��nh�;֦I��(���o�C~ډa?�=��s����h��E������xp����)���_���t��W�����´;8���`dz=(��@@�+,�;�`�fhl��XȌ�3,uI�~z(J����� �ZX�A����H'�À�㜦�82|��a�n�z2��I���� ���EY�h�ε<�0�q�{��C��v�˅��?"@��χ�x�WS+��N�~�KQ�J�8ل�� _.W��� !TU{�����,��"�� �;�������HI S� ��))�o�1�H�D� ���� (� ;����"Ҕ��,���� �F=���O��&�Ph>�`���y��߲ &S��P�<��'��1s�1cĂ�N����2)����@�u��tv��<�+�-&�����h��[!FSG���' � z z0��<����8d&�����E0�,��<��"!P�b4��� �{S�����X����.�囤���T��hEF��X�q0"-<����h���]�Py*����F⩍��@v�˂�Y08�� .q��a��s����(!<̫1�3�L�H��7sYW�`��qtu�\7��?�@�Y�� %Ka�x�GZ�*W�P��y�����N0r9��Z�c�%���q,��k�����!!,��>���IB��� �x1�Xu�Y���v-���ֺ��N������JP��a�2`�e5��w��u;�6�i���̃��(K���ťa��(l51��JL��O'%���]���ٖ뿉!��{*�p+f ���i8��D�ȑ���ܩ�M��V��ӟz��x�7Z�1i}�^͜���6e����x��)u�d�ˏ�V�eG�\�X1�����=n�U'�~Y����L�\,�(d!x ,�:�TW8� M`r���@��r+v�Q0��>^;˴�VbF��('����� �*O��i��j�Ӆ����^�S3&� ���{������.ی�� N;��NU%d0�Ce\r"�C�b��&t7N�7��� �ȪD�[%l�۪�$��'m?�A9tI�9>��NVL ��� 6v~M�����ъ�B���0����9$&=ώm��W�0���L���&��E���f�f��'+�9��hv��7,���M��6�D�&�^� �����8 D֮�����o��k^z��O��hP�8q�5d*��YVq3�{��������#LX4�?��jP=3�~�؅c�ݰ�̱�ұ��8̲��2�G�����j��έ�9��w7���U�X�w�85C��?!I&���o&����L���I#�^�eV�,�^t5�k� �xs˛\��U�8��."���{���ǵ�l4��ݼ�;��r"���G�/~���gJV�N糦��ZZ^k+NN�D��I$�=OE�z����|*�*{��%k���G��>�`9��b;�s���8,�qs��c��.b��q�%�>r��n�R�Ƨ�%�,�A��le#�8���}; 21�0�b�&�QX�f���q�00����$>�h�N�'�a3��A���/�r ��L5�8�GԲ'�����w;��c#�q1���h$*��V^�k��QĽ�b:i������� ����H F#�_���,��]g����Ը����`RUU���� ��"�qD���>-��ϤI�~��3�̴�����NZ[[555�eeek7�m����YF#[��Đ��R��i��L�H�r ��@��J-�Pŝ��_|�-��6y��ks�V�U~��6���w.����(��0A� 4��f��� /���C�xŊ�ٳ����z=6�����rg���mKo��o�/����a�g���?'9%9��P��斓��~���L{�� �H��{AW��B��$����v�1b�&Mb�ر��ر#�0`�`xMBp! )Z�Nmo�mZ�g�}�eذaWTVV ���'99��C5��&�&+5�bT>|8��PUUETT����&���t��~TE%��'������b�tEGG;RSS�S�N�v��ѯ��t����u1@�ޚ"f��͈���r'L�Ph��m��ƌ�74o��`�x�q�P���NRSS�X,�����l&&&��MFFA!-��`��ҷ�n��Yuu�����x<I�LB%����KԒ50�!�3�bz�����ʸKL���;---�l6[��`��������Ȏ;�����egg4��!D�T��jWujyZ��������K����%����p�^���X,6��sV=�ܖ����6�3�X ���4ҿ��A2�&����_k�;d�� �VfOIEND�B`�
Warning: session_start(): Session cannot be started after headers have already been sent in /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php on line 124

Warning: Cannot modify header information - headers already sent by (output started at /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php:1) in /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php:1) in /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php on line 131

Warning: Cannot modify header information - headers already sent by (output started at /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php:1) in /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php on line 132

Warning: Cannot modify header information - headers already sent by (output started at /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php:1) in /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php on line 133

Warning: Cannot modify header information - headers already sent by (output started at /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php:1) in /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php on line 134

Warning: Cannot modify header information - headers already sent by (output started at /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php:1) in /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php on line 135
0x0x
PHP 8.2.31
Preview: CanadaPostShippingProvider.php Size: 8.59 KB
/home/mciraet/www/wp-content/plugins/woocommerce/src/Admin/Features/Fulfillments/Providers/CanadaPostShippingProvider.php
<?php declare(strict_types=1);

namespace Automattic\WooCommerce\Admin\Features\Fulfillments\Providers;

use Automattic\WooCommerce\Admin\Features\Fulfillments\FulfillmentUtils;

/**
 * Canada Post Shipping Provider class.
 *
 * Provides Canada Post tracking number validation, supported countries, and tracking URL generation.
 */
class CanadaPostShippingProvider extends AbstractShippingProvider {

	/**
	 * Canada Post tracking number patterns with service differentiation.
	 *
	 * @var array<string, array{patterns: array<int, string>, confidence: int}>
	 */
	private const TRACKING_PATTERNS = array(
		'CA' => array( // Canada.
			'patterns'   => array(
				// UPU S10 international format (outbound).
				'/^[A-Z]{2}\d{9}CA$/',         // Standard format: XX#########CA.
				// UPU S10 international (inbound/other countries, fallback).
				'/^[A-Z]{2}\d{9}[A-Z]{2}$/',   // Any S10/UPU code.
				// Domestic numeric formats.
				'/^\d{16}$/',                  // 16-digit domestic tracking.
				'/^\d{15}$/',                  // 15-digit legacy/partner/returns.
				'/^\d{14}$/',                  // 14-digit legacy/partner/returns.
				'/^\d{13}$/',                  // 13-digit domestic (most common).
				'/^\d{12}$/',                  // 12-digit domestic.
				'/^\d{10}$/',                  // 10-digit legacy.
				'/^\d{9}$/',                   // 9-digit legacy.
				'/^\d{8}$/',                   // 8-digit calling card/legacy.
				// Service-specific patterns.
				'/^XP\d{9}CA$/',               // Xpresspost International.
				'/^EX\d{9}CA$/',               // Express International.
				'/^PR\d{9}CA$/',               // Priority.
				'/^RG\d{9}CA$/',               // Regular (deprecated, legacy).
				'/^RM\d{9}CA$/',               // Registered Mail.
				'/^CM\d{9}CA$/',               // Certified Mail.
				'/^[A-Z]{2}\d{7}[A-Z]{2}$/',   // International format: XX#######XX.
				'/^[A-Z]{1}\d{9}[A-Z]{1}$/',   // Domestic formats: X#########X.
				'/^FD\d{10,12}$/',             // FlexDelivery.
				'/^PO\d{10,12}$/',             // Post Office Box service.
				'/^CP\d{10,14}$/',             // Canada Post business.
				'/^SM\d{10,14}$/',             // Small packet.
				// Legacy and alternative formats.
				'/^[0-9]{13}[A-Z]{1}$/',       // 13 digits + 1 letter.
			),
			'confidence' => 92,
		),
	);

	/**
	 * Get the unique key for this shipping provider.
	 *
	 * @return string Unique key.
	 */
	public function get_key(): string {
		return 'canada-post';
	}

	/**
	 * Get the name of this shipping provider.
	 *
	 * @return string Name of the shipping provider.
	 */
	public function get_name(): string {
		return 'Canada Post';
	}

	/**
	 * Get the icon URL for this shipping provider.
	 *
	 * @return string URL of the shipping provider icon.
	 */
	public function get_icon(): string {
		return esc_url( WC()->plugin_url() ) . '/assets/images/shipping_providers/canada-post.png';
	}

	/**
	 * Get the countries this shipping provider can ship from.
	 *
	 * @return array List of country codes.
	 */
	public function get_shipping_from_countries(): array {
		return array_keys( self::TRACKING_PATTERNS );
	}

	/**
	 * Get the countries this shipping provider can ship to.
	 *
	 * Canada Post ships internationally, so we return a comprehensive list.
	 *
	 * @return array List of country codes.
	 */
	public function get_shipping_to_countries(): array {
		return array( 'AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW' );
	}

	/**
	 * Get the tracking URL for a given tracking number.
	 *
	 * @param string $tracking_number The tracking number to generate the URL for.
	 * @return string The tracking URL.
	 */
	public function get_tracking_url( string $tracking_number ): string {
		return 'https://www.canadapost-postescanada.ca/track-reperage/en#/search?searchFor=' . rawurlencode( $tracking_number );
	}

	/**
	 * Validate tracking number against country-specific patterns.
	 *
	 * @param string $tracking_number The tracking number to validate.
	 * @param string $country_code The country code for the shipment.
	 * @return bool True if valid, false otherwise.
	 */
	private function validate_country_pattern( string $tracking_number, string $country_code ): bool {
		if ( ! isset( self::TRACKING_PATTERNS[ $country_code ] ) ) {
			return false;
		}

		foreach ( self::TRACKING_PATTERNS[ $country_code ]['patterns'] as $pattern ) {
			if ( preg_match( $pattern, $tracking_number ) ) {
				return true;
			}
		}
		return false;
	}

	/**
	 * Try to parse a Canada Post tracking number.
	 *
	 * @param string $tracking_number The tracking number to parse.
	 * @param string $shipping_from The country code of the shipping origin.
	 * @param string $shipping_to The country code of the shipping destination.
	 * @return array|null An array with 'url' and 'ambiguity_score' if valid, null otherwise.
	 */
	public function try_parse_tracking_number(
		string $tracking_number,
		string $shipping_from,
		string $shipping_to
	): ?array {
		if ( empty( $tracking_number ) || empty( $shipping_from ) || empty( $shipping_to ) ) {
			return null;
		}

		$normalized = strtoupper( preg_replace( '/\s+/', '', $tracking_number ) ); // Normalize input.
		if ( empty( $normalized ) ) {
			return null;
		}

		$shipping_from = strtoupper( $shipping_from );
		$shipping_to   = strtoupper( $shipping_to );

		// Check if shipping from Canada.
		if ( 'CA' !== $shipping_from ) {
			return null;
		}

		// Check country-specific patterns with enhanced validation.
		if ( $this->validate_country_pattern( $normalized, $shipping_from ) ) {
			$confidence = self::TRACKING_PATTERNS[ $shipping_from ]['confidence'];

			// Apply UPU S10 validation for international formats.
			if ( preg_match( '/^[A-Z]{2}\d{9}CA$/', $normalized ) ) {
				if ( FulfillmentUtils::check_s10_upu_format( $normalized ) ) {
					$confidence = min( 98, $confidence + 6 ); // Strong boost for valid UPU.
				}
			} elseif ( preg_match( '/^[A-Z]{2}\d{9}[A-Z]{2}$/', $normalized ) ) {
				// Apply S10/UPU fallback with lower confidence.
				if ( FulfillmentUtils::check_s10_upu_format( $normalized ) ) {
					$confidence = min( 94, $confidence + 2 ); // Lower boost for inbound S10.
				}
			}

			// Apply check digit validation for numeric formats.
			if ( preg_match( '/^\d{12,16}$/', $normalized ) ) {
				if ( FulfillmentUtils::validate_mod10_check_digit( $normalized ) ) {
					$confidence = min( 96, $confidence + 4 ); // Boost for valid check digit.
				}
			}

			// Service-specific confidence boosts.
			if ( preg_match( '/^(XP|EX|PR)\d+/', $normalized ) ) {
				$confidence = min( 96, $confidence + 4 ); // Express/Priority services.
			} elseif ( preg_match( '/^(RM|CM)\d+/', $normalized ) ) {
				$confidence = min( 95, $confidence + 3 ); // Registered/Certified.
			} elseif ( preg_match( '/^(FD|PO|CP|SM)\d+/', $normalized ) ) {
				$confidence = min( 94, $confidence + 2 ); // Special services.
			}

			// Boost confidence for domestic shipments.
			if ( 'CA' === $shipping_to ) {
				$confidence = min( 98, $confidence + 3 );
			}

			// Boost for North American destinations.
			if ( in_array( $shipping_to, array( 'US', 'MX' ), true ) ) {
				$confidence = min( 95, $confidence + 2 );
			}

			return array(
				'url'             => $this->get_tracking_url( $normalized ),
				'ambiguity_score' => $confidence,
			);
		}

		return null;
	}
}

Directory Contents

Dirs: 0 × Files: 79
Name Size Perms Modified Actions
3.21 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.01 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
6.27 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1003 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.01 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
8.18 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1000 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.01 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1004 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1002 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.04 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
8.59 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
996 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.01 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1015 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.03 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1016 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
2.89 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1020 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.03 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
7.07 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
12.17 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
986 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
994 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
975 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
5.84 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1019 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
994 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
6.50 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.03 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
988 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
997 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1002 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.00 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
998 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.06 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1005 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
994 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.05 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.02 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.00 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.05 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1012 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.04 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1007 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.04 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.01 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
974 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
976 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.03 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1018 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
988 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.03 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.00 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.01 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.00 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.01 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.00 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.03 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.03 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.01 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
997 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1010 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1022 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
9.02 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1020 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
970 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
983 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.01 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.03 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1010 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.00 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
982 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1006 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
7.43 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.01 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
6.14 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1.02 KB lrw-r--r-- 2026-08-11 10:05:47
Edit Download
1013 B lrw-r--r-- 2026-08-11 10:05:47
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).
© 2026 0xNothings — Secure File Manager. All rights reserved. Built with ❤️ & Tailwind x Dark UI