�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`� 0x0x
PHP 8.1.34
Preview: video.js Size: 10.18 KB
/home2/astrociv/public_html/miyakamalkhan.com/wp-content/plugins/facebook-conversion-pixel/video.js
if ( typeof fcaPcOptions === 'object' && fcaPcOptions.video_enabled ) {

	class EventEmitter {

		constructor() {
			this.events = {}
		}

		on(event, listener) {
			if (typeof this.events[event] !== 'object') {
				this.events[event] = []
			}
			this.events[event].push(listener)
			return () => this.removeListener(event, listener)
		}

		removeListener(event, listener) {
			if (typeof this.events[event] === 'object') {
				const idx = this.events[event].indexOf(listener)
				if (idx > -1) {
					this.events[event].splice(idx, 1)
				}
			}
		}

		emit(event, ...args) {
			if (typeof this.events[event] === 'object') {
				this.events[event].forEach(listener => listener.apply(this, args))
			}
		}

		once(event, listener) {
			const remove = this.on(event, (...args) => {
				remove()
				listener.apply(this, args)
			})
		}
	}

	class FCA_PC_Video extends EventEmitter {

		constructor(selector) {
			super()

			this.video_ready = false

			if (typeof selector === undefined) {
				return
			}

			this.element = selector
			this.init()

		}

		init() {
			
			this.setup_events()
			this.type = this.video_type()
			this.load_api()
		}

		load_api() {
			switch (this.type) {
				case 'YOUTUBE':
					this.api_youtube_load()
					break
				case 'WISTIA':
					this.api_wistia_load()
					break
				case 'VIMEO':
					this.api_vimeo_load()
					break
			}
		}

		setup_events() {
			this.on( 'api_youtube_loaded', this.api_youtube_setup )
			this.on( 'api_vimeo_loaded', this.api_vimeo_setup )
			this.on( 'api_wistia_loaded', this.api_wistia_setup )
		}

		video_type() {
			let src = this.element.attr('src')

			if (src === '') {
				this.revoke( 'pixel cat video: video link not found.' )
				return false
			}

			if (src.indexOf('youtube.com') > -1) return 'YOUTUBE'
			if (src.indexOf('vimeo.com') > -1) return 'VIMEO'
			if (src.indexOf('fast.wistia.com') > -1) return 'WISTIA'
		}

		revoke( message ) {
			if ( fcaPcOptions.debug ) {
				console.log( message )
				console.log( 'pixel cat video: revoked ')
			}
			// Do some code that revoke video JS here.
		}

		//VIMEO

		api_vimeo_load() {
			jQuery.getScript( 'https://player.vimeo.com/api/player.js', () => {
				this.emit( 'api_vimeo_loaded' )
			} )
		}

		api_vimeo_setup() {
			let player_dom = this.element[0]
			try {
				this.api = new Vimeo.Player(player_dom)
				this.api.ready().then( () => {
					this.api_vimeo_ready()
				} )
			} catch ( e ) {
				if ( fcaPcOptions.debug)
					console.log( e.message )
				return
			}
		}

		api_vimeo_ready() {
			if (fcaPcOptions.debug) {
				console.log( 'Pixel Cat video: Vimeo video ready' )
			}

			this.video_ready = true

			this.api.getVideoId().then( id => {
				this.video_id = id
			} )

			this.api.getVideoTitle().then( title => {
				this.title = title
			} )

			this.api.getVideoUrl().then( url => {
				this.url = url
			} )

			this.api.getDuration().then( duration => {
				this.duration = duration
			} )

			this.events_triggered = {}

			this.api_vimeo_state_change()
		}

		api_vimeo_state_change() {
			this.api.on( 'play', event => {
				this.trigger_event( 'VideoPlay' )
				this.timer = setInterval( this.track_progress.bind(this), 1000 )
			} )

			this.api.on( 'pause', event => {
				this.trigger_event( 'VideoPause', { percentage_watched: this.percentage_watched() + '%' } )
				clearInterval( this.timer )
			} )

			this.api.on( 'ended', event => {
				this.trigger_event( 'VideoWatchToEnd' )
				clearInterval( this.timer )
			} )
		}

		//WISTIA

		api_wistia_load() {
			jQuery.getScript( '//fast.wistia.net/assets/external/E-v1.js', () => {
				this.emit( 'api_wistia_loaded' )
			} )
		}

		api_wistia_setup() {

			let player_dom = this.element

			let video_src = player_dom.attr('src')

			if (typeof video_src === 'undefined') {
				return
			}

			//GET VIDEO ID FROM URL

			const pattern = /(https:\/\/fast\.wistia\.com\/embed\/medias)\/(.*)\.jsonp/

			let match = video_src.match(pattern)

			if (match === null) {

				if ( fcaPcOptions.debug ) {
					console.log('no video id match')
				}

				return
			}

			this.url = match[1]

			let video_id = match[2]

			if ( typeof video_id === 'undefined' ) {
				if ( fcaPcOptions.debug ) {
					console.log ( 'pixel cat video: wistia video_id not found.' )
				}
				return
			}

			window._wq = window._wq || []

			this.api = window._wq

			this.api.push( {
				id: video_id,
				onReady: this.api_wistia_ready.bind(this)
			} )
		}

		api_wistia_ready( video ) {

			if ( fcaPcOptions.debug ) {
				console.log ( 'pixel cat video: wistia video ready.' )
			}

			this.video_ready = true
			this.api = video

			this.video_id = video.data.media.hashedId
			this.title = video.data.media.name !== undefined ? video.data.media.name : 'Untitled'
			this.url = this.url + '/' + this.video_id
			this.events_triggered = {}
			this.api_wistia_state_change.bind(this)()
		}

		api_wistia_state_change() {
			this.api.bind( 'play', event => {
				this.trigger_event( 'VideoPlay' )
			} )

			this.api.bind( 'pause', event => {
				this.trigger_event( 'VideoPause', { percentage_watched: this.percentage_watched() + '%' } )
			} )

			this.api.bind( 'percentwatchedchanged', ( percent, lastPercent ) => {
				this.track_progress()
			} )

			this.api.bind( 'end', event => {
				this.trigger_event( 'VideoWatchToEnd' )
			} )
		}

		//YOUTUBE

		api_youtube_load() {
			this.load_async_script( 'https://www.youtube.com/iframe_api' )
		}

		api_youtube_setup() {
			let player_dom = this.element[0]
			this.api = new YT.Player(player_dom, {
				events: {
					'onReady': this.api_youtube_ready.bind(this),
					'onStateChange': this.api_youtube_state_change.bind(this)
				}
			})
		}

		api_youtube_ready( event ) {

			if ( fcaPcOptions.debug ) {
				console.log( 'pixel cat video: youtube video ready')
			}

			// @todo: we will need to build this one in future to make sure the video is ready to use the object
			this.video_ready = true
			this.data = this.api.getVideoData()
			this.video_id = this.data.video_id
			this.title = this.data.title
			this.url = this.api.getVideoUrl()

			this.events_triggered = {}
		}

		api_youtube_state_change( event ) {
			if ( fcaPcOptions.debug ) {
				console.log( event )
			}

			switch ( event.data ) {
				case 0:
					// end video
					this.trigger_event( 'VideoWatchToEnd' )
					clearInterval( this.timer )
					break

				case 1:
					// play video
					this.trigger_event( 'VideoPlay' )
					// Since we check progress using range: ( percent >= 10 && percent < 25 )
					// So we do not need to set interval too fast. 1 - 2 seconds should be fine
					this.timer = setInterval( this.track_progress.bind(this), 1000 )
					break

				case 2:
					// pause video
					this.trigger_event( 'VideoPause',  { percentage_watched: this.percentage_watched() + '%' } )
					clearInterval( this.timer )
					break
			}
		}

		video_youtube_end() {
			if ( fcaPcOptions.debug ) {
				console.log( 'end' )
			}
		}

		load_async_script( url ) {
			let new_script = document.createElement('script')
			let first_script = document.getElementsByTagName('script')[0]
		
			new_script.src = url

	        first_script.parentNode.insertBefore(new_script, first_script)

			if ( fcaPcOptions.debug ) {
				console.log('pixel cat video: ' + url + ' has been loaded.')
			}
		}

		track_progress() {
			switch( this.video_type() ) {
				case 'YOUTUBE':
				case 'VIMEO':
				case 'WISTIA':
					this.video_track_progress()
					break

				// Other cases
			}
		}

		video_track_progress() {
			let percent = this.percentage_watched()

			if ( fcaPcOptions.debug ) {
				console.log( this.percentage_watched() )
			}

			// Need to cover all the cases and reduce interval time -> better performance
			// Use switch here for better code readable
			switch ( true ) {
				// 10% milestone
				case ( percent >= 10 && percent < 25 ):
					this.trigger_event('VideoWatch10Percent')
					break

				// 25% milestone
				case ( percent >= 25 && percent < 50 ):
					this.trigger_event('VideoWatch25Percent')
					break

				case ( percent >= 50 && percent < 75 ):
					this.trigger_event('VideoWatch50Percent')
					break

				case ( percent >= 75 && percent < 90 ):
					this.trigger_event('VideoWatch75Percent')
					break

				case ( percent >= 90 && percent < 100 ):
					this.trigger_event('VideoWatch90Percent')
					break
			}
		}

		video_params() {
			return {
				video_title: this.title,
				video_url: this.url,
				video_id: this.video_id
			}
		}

		percentage_watched() {
			switch( this.type ) {
				case 'YOUTUBE':
					return  Math.round( this.api.getCurrentTime() / this.api.getDuration() * 100 )
				
				case 'VIMEO':
					this.api.getCurrentTime().then( current_time => {
						this.current_time = current_time
					} )
					return  Math.round( this.current_time / this.duration * 100 )
					
				case 'WISTIA':
					return Math.round( this.api.time() / this.api.duration() * 100 )

				default:
					return false
			}
		}

		trigger_event( action, additional_params = {} ) {

			if ( this.events_triggered[action] ) { 
				return
			}

			let params = Object.assign( {}, this.video_params(), additional_params )

			this.emit( 'pixel_event', 'trackCustom', action, params )

			// Add exception for VideoPause event
			if (  action !== 'VideoPause' ) {
				this.events_triggered[action] = true
			}
		}


	}

	FCA_PC_Video.prototype.__proto__ = EventEmitter.prototype;

	function onYouTubeIframeAPIReady() {

		fcaPcVideos.forEach(video => {
			if (video.type !== 'YOUTUBE') {
				return
			}

			video.emit('api_youtube_loaded')	
		})
		
	}

	window.fcaPcVideos = [];

	// detect all videos on the page
	function detect_videos() {

		let videos = [];

		jQuery( 'iframe' ).each(function () {
			var char = jQuery(this)[0].src.includes( '?' ) ? '&' : '?'
			jQuery(this)[0].src = jQuery(this)[0].src + char + 'enablejsapi=1'
			videos.push(jQuery(this))
		})

		jQuery( 'script' ).each(function () {

			let src = jQuery(this).attr('src')

			if (typeof src === 'undefined') {
				return
			}

			if (src.indexOf('https://fast.wistia.com/embed/medias/') === -1) {
				return
			}

			videos.push(jQuery(this))

		})

		if (videos.length === 0) {

			if ( fcaPcOptions.debug ) {
				console.log('No videos detected')	
			}

			return
		}

		videos.forEach(function (video) {
			window.fcaPcVideos.push(new FCA_PC_Video(video))
		})

		
	}


	detect_videos()
	
}

Directory Contents

Dirs: 4 × Files: 10
Name Size Perms Modified Actions
assets DIR
- drwxr-xr-x 2026-07-29 12:34:06
Edit Download
includes DIR
- drwxr-xr-x 2026-07-29 12:34:06
Edit Download
languages DIR
- drwxr-xr-x 2026-07-29 12:34:06
Edit Download
readmes DIR
- drwxr-xr-x 2026-07-29 12:34:06
Edit Download
131 B lrw-r--r-- 2026-07-29 12:34:06
Edit Download
12.06 KB lrw-r--r-- 2026-07-29 12:34:06
Edit Download
54.96 KB lrw-r--r-- 2026-07-29 12:34:06
Edit Download
30.67 KB lrw-r--r-- 2026-07-29 12:34:06
Edit Download
17.92 KB lrw-r--r-- 2026-07-29 12:34:06
Edit Download
33.73 KB lrw-r--r-- 2026-07-29 12:34:06
Edit Download
24.75 KB lrw-r--r-- 2026-07-29 12:34:06
Edit Download
48.55 KB lrw-r--r-- 2026-07-29 12:34:06
Edit Download
49.02 KB lrw-r--r-- 2026-07-29 12:34:06
Edit Download
10.18 KB lrw-r--r-- 2026-07-29 12:34:06
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