���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!PKE\֡P P $user-interface/free-sparks-route.phpnuW+A The conditionals. */ public static function get_conditionals() { return [ AI_Conditional::class ]; } /** * Class constructor. * * @param Free_Sparks_Handler_Interface $free_sparks_handler The free sparks handler instance. */ public function __construct( Free_Sparks_Handler_Interface $free_sparks_handler ) { $this->free_sparks_handler = $free_sparks_handler; } /** * Registers routes with WordPress. * * @return void */ public function register_routes() { \register_rest_route( self::ROUTE_NAMESPACE, self::ROUTE_PREFIX, [ 'methods' => 'POST', 'callback' => [ $this, 'start' ], 'permission_callback' => [ $this, 'can_edit_posts' ], ] ); } /** * Runs the callback to start the free sparks. * * @return WP_REST_Response The response of the callback action. */ public function start(): WP_REST_Response { $result = $this->free_sparks_handler->start( null ); if ( ! $result ) { new WP_REST_Response( 'Failed to start free sparks.', 500 ); } return new WP_REST_Response( 'Free sparks successfully started.' ); } /** * Checks whether the user is logged in and can edit posts. * * @return bool Whether the user is logged in and can edit posts. */ public function can_edit_posts(): bool { $user = \wp_get_current_user(); if ( $user === null || $user->ID < 1 ) { return false; } return \user_can( $user, 'edit_posts' ); } } PKE\4Ë1infrastructure/endpoints/free-sparks-endpoint.phpnuW+Aget_namespace() . $this->get_route() ); } } PKE\{zz#application/free-sparks-handler.phpnuW+Aoptions_helper = $options_helper; } /** * Retrieves the timestamp. * * @param string $format The format in which to return the timestamp. Defaults to 'Y-m-d H:i:s'. * * @return ?string The timestamp when the user started using free sparks, or null if not set. */ public function get( string $format = 'Y-m-d H:i:s' ): ?string { $timestamp = $this->options_helper->get( self::OPTION_KEY, null ); if ( $timestamp === null ) { return null; } return \gmdate( $format, (int) $timestamp ); } /** * Registers the starting of the free sparks. * * @param ?int $timestamp The timestamp when the user started using free sparks. If null, the current time will be * used. * * @return bool True if the operation was successful, false otherwise. */ public function start( ?int $timestamp = null ): bool { return (bool) $this->options_helper->set( self::OPTION_KEY, ( $timestamp === null ) ? \time() : $timestamp, 'wpseo' ); } } PKE\(kXMcc-application/free-sparks-handler-interface.phpnuW+A