Built motion from commit efa66e19.|2.6.22
[motion2.git] / server / api / voiceQueuesLog / voiceQueuesLog.controller.js
index 4b0db7d..71a89d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05e0=['bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','stack','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','name','includeAll','include','findAll','rows','catch','options','find','create','body','params','rimraf','fast-json-patch','request-promise','moment'];(function(_0x99ff94,_0x47a1b1){var _0x1b5bc0=function(_0x25821f){while(--_0x25821f){_0x99ff94['push'](_0x99ff94['shift']());}};_0x1b5bc0(++_0x47a1b1);}(_0x05e0,0xd1));var _0x005e=function(_0x413b37,_0x171b29){_0x413b37=_0x413b37-0x0;var _0x515881=_0x05e0[_0x413b37];return _0x515881;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x005e('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x005e('0x1'));var rp=require(_0x005e('0x2'));var moment=require(_0x005e('0x3'));var BPromise=require(_0x005e('0x4'));var Mustache=require(_0x005e('0x5'));var util=require('util');var path=require('path');var sox=require(_0x005e('0x6'));var csv=require(_0x005e('0x7'));var ejs=require(_0x005e('0x8'));var fs=require('fs');var fs_extra=require(_0x005e('0x9'));var _=require(_0x005e('0xa'));var squel=require(_0x005e('0xb'));var crypto=require('crypto');var jsforce=require(_0x005e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x005e('0x7'));var querystring=require(_0x005e('0xd'));var Papa=require('papaparse');var Redis=require(_0x005e('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x005e('0xf'))(_0x005e('0x10'));var utils=require(_0x005e('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x005e('0x12'));var db=require(_0x005e('0x13'))['db'];function respondWithStatusCode(_0x4f9070,_0x11a249){_0x11a249=_0x11a249||0xcc;return function(_0x56bc50){if(_0x56bc50){return _0x4f9070[_0x005e('0x14')](_0x11a249);}return _0x4f9070[_0x005e('0x15')](_0x11a249)[_0x005e('0x16')]();};}function respondWithResult(_0x41f849,_0x5a762b){_0x5a762b=_0x5a762b||0xc8;return function(_0x2f1710){if(_0x2f1710){return _0x41f849[_0x005e('0x15')](_0x5a762b)[_0x005e('0x17')](_0x2f1710);}};}function respondWithFilteredResult(_0x5af960,_0xc747ec){return function(_0x42c38b){if(_0x42c38b){var _0xeee247=typeof _0xc747ec[_0x005e('0x18')]==='undefined'&&typeof _0xc747ec[_0x005e('0x19')]===_0x005e('0x1a');var _0x266b64=_0x42c38b['count'];var _0x27b4e0=_0xeee247?0x0:_0xc747ec['offset'];var _0x2eb749=_0xeee247?_0x42c38b[_0x005e('0x1b')]:_0xc747ec[_0x005e('0x18')]+_0xc747ec[_0x005e('0x19')];var _0x1c73fe;if(_0x2eb749>=_0x266b64){_0x2eb749=_0x266b64;_0x1c73fe=0xc8;}else{_0x1c73fe=0xce;}_0x5af960[_0x005e('0x15')](_0x1c73fe);return _0x5af960['set'](_0x005e('0x1c'),_0x27b4e0+'-'+_0x2eb749+'/'+_0x266b64)[_0x005e('0x17')](_0x42c38b);}return null;};}function patchUpdates(_0x256611){return function(_0x7b6db0){try{jsonpatch[_0x005e('0x1d')](_0x7b6db0,_0x256611,!![]);}catch(_0x37910b){return BPromise[_0x005e('0x1e')](_0x37910b);}return _0x7b6db0[_0x005e('0x1f')]();};}function saveUpdates(_0x5f4bcc,_0xcf07e0){return function(_0x36519f){if(_0x36519f){return _0x36519f[_0x005e('0x20')](_0x5f4bcc)[_0x005e('0x21')](function(_0x38707d){return _0x38707d;});}return null;};}function removeEntity(_0x2a7479,_0x281574){return function(_0x25bc7d){if(_0x25bc7d){return _0x25bc7d[_0x005e('0x22')]()['then'](function(){_0x2a7479['status'](0xcc)[_0x005e('0x16')]();});}};}function handleEntityNotFound(_0x5615d8,_0x3ad646){return function(_0x3cacd9){if(!_0x3cacd9){_0x5615d8[_0x005e('0x14')](0x194);}return _0x3cacd9;};}function handleError(_0x46e50e,_0x14bf18){_0x14bf18=_0x14bf18||0x1f4;return function(_0x299a48){logger['error'](_0x299a48[_0x005e('0x23')]);if(_0x299a48['name']){delete _0x299a48['name'];}_0x46e50e[_0x005e('0x15')](_0x14bf18)[_0x005e('0x24')](_0x299a48);};}exports[_0x005e('0x25')]=function(_0x548eda,_0x1ad663){var _0x2f9ae0={},_0x124242={},_0x28fdb0={'count':0x0,'rows':[]};var _0x1da9ab=_[_0x005e('0x26')](db[_0x005e('0x27')][_0x005e('0x28')],function(_0x1a17c8){return{'name':_0x1a17c8[_0x005e('0x29')],'type':_0x1a17c8[_0x005e('0x2a')][_0x005e('0x2b')]};});_0x124242[_0x005e('0x2c')]=_['map'](_0x1da9ab,'name');_0x124242[_0x005e('0x2d')]=_[_0x005e('0x2e')](_0x548eda['query']);_0x124242[_0x005e('0x2f')]=_[_0x005e('0x30')](_0x124242['model'],_0x124242['query']);_0x2f9ae0[_0x005e('0x31')]=_[_0x005e('0x30')](_0x124242['model'],qs[_0x005e('0x32')](_0x548eda[_0x005e('0x2d')][_0x005e('0x32')]));_0x2f9ae0[_0x005e('0x31')]=_0x2f9ae0[_0x005e('0x31')][_0x005e('0x33')]?_0x2f9ae0['attributes']:_0x124242[_0x005e('0x2c')];if(!_0x548eda['query'][_0x005e('0x34')](_0x005e('0x35'))){_0x2f9ae0[_0x005e('0x19')]=qs[_0x005e('0x19')](_0x548eda[_0x005e('0x2d')][_0x005e('0x19')]);_0x2f9ae0['offset']=qs[_0x005e('0x18')](_0x548eda[_0x005e('0x2d')][_0x005e('0x18')]);}_0x2f9ae0[_0x005e('0x36')]=qs['sort'](_0x548eda[_0x005e('0x2d')][_0x005e('0x37')]);_0x2f9ae0[_0x005e('0x38')]=qs[_0x005e('0x2f')](_[_0x005e('0x39')](_0x548eda[_0x005e('0x2d')],_0x124242[_0x005e('0x2f')]),_0x1da9ab);if(_0x548eda[_0x005e('0x2d')][_0x005e('0x3a')]){_0x2f9ae0[_0x005e('0x38')]=_[_0x005e('0x3b')](_0x2f9ae0[_0x005e('0x38')],{'$or':_[_0x005e('0x26')](_0x1da9ab,function(_0x3c4113){if(_0x3c4113[_0x005e('0x2a')]!=='VIRTUAL'){var _0x27bf67={};_0x27bf67[_0x3c4113[_0x005e('0x3c')]]={'$like':'%'+_0x548eda[_0x005e('0x2d')][_0x005e('0x3a')]+'%'};return _0x27bf67;}})});}_0x2f9ae0=_[_0x005e('0x3b')]({},_0x2f9ae0,_0x548eda['options']);var _0xe58ad1={'where':_0x2f9ae0[_0x005e('0x38')]};return db['VoiceQueuesLog'][_0x005e('0x1b')](_0xe58ad1)['then'](function(_0x15853f){_0x28fdb0['count']=_0x15853f;if(_0x548eda[_0x005e('0x2d')][_0x005e('0x3d')]){_0x2f9ae0[_0x005e('0x3e')]=[{'all':!![]}];}return db[_0x005e('0x27')][_0x005e('0x3f')](_0x2f9ae0);})[_0x005e('0x21')](function(_0x3119c7){_0x28fdb0[_0x005e('0x40')]=_0x3119c7;return _0x28fdb0;})[_0x005e('0x21')](respondWithFilteredResult(_0x1ad663,_0x2f9ae0))[_0x005e('0x41')](handleError(_0x1ad663,null));};exports['show']=function(_0x320642,_0x3ec2b2){var _0x4d5c75={'raw':!![],'where':{'id':_0x320642['params']['id']}},_0x186f59={};_0x186f59['model']=_[_0x005e('0x2e')](db[_0x005e('0x27')][_0x005e('0x28')]);_0x186f59[_0x005e('0x2d')]=_[_0x005e('0x2e')](_0x320642['query']);_0x186f59['filters']=_['intersection'](_0x186f59[_0x005e('0x2c')],_0x186f59[_0x005e('0x2d')]);_0x4d5c75[_0x005e('0x31')]=_[_0x005e('0x30')](_0x186f59[_0x005e('0x2c')],qs[_0x005e('0x32')](_0x320642[_0x005e('0x2d')][_0x005e('0x32')]));_0x4d5c75[_0x005e('0x31')]=_0x4d5c75[_0x005e('0x31')]['length']?_0x4d5c75[_0x005e('0x31')]:_0x186f59['model'];if(_0x320642['query'][_0x005e('0x3d')]){_0x4d5c75[_0x005e('0x3e')]=[{'all':!![]}];}_0x4d5c75=_[_0x005e('0x3b')]({},_0x4d5c75,_0x320642[_0x005e('0x42')]);return db[_0x005e('0x27')][_0x005e('0x43')](_0x4d5c75)[_0x005e('0x21')](handleEntityNotFound(_0x3ec2b2,null))[_0x005e('0x21')](respondWithResult(_0x3ec2b2,null))['catch'](handleError(_0x3ec2b2,null));};exports[_0x005e('0x44')]=function(_0x2cc938,_0x4bcaa2){return db[_0x005e('0x27')][_0x005e('0x44')](_0x2cc938[_0x005e('0x45')],{})[_0x005e('0x21')](respondWithResult(_0x4bcaa2,0xc9))['catch'](handleError(_0x4bcaa2,null));};exports[_0x005e('0x20')]=function(_0x107a75,_0x13fbc7){if(_0x107a75[_0x005e('0x45')]['id']){delete _0x107a75[_0x005e('0x45')]['id'];}return db['VoiceQueuesLog'][_0x005e('0x43')]({'where':{'id':_0x107a75['params']['id']}})[_0x005e('0x21')](handleEntityNotFound(_0x13fbc7,null))[_0x005e('0x21')](saveUpdates(_0x107a75['body'],null))[_0x005e('0x21')](respondWithResult(_0x13fbc7,null))[_0x005e('0x41')](handleError(_0x13fbc7,null));};exports[_0x005e('0x22')]=function(_0x17a0f6,_0x3b9a00){return db[_0x005e('0x27')][_0x005e('0x43')]({'where':{'id':_0x17a0f6[_0x005e('0x46')]['id']}})[_0x005e('0x21')](handleEntityNotFound(_0x3b9a00,null))[_0x005e('0x21')](removeEntity(_0x3b9a00,null))[_0x005e('0x41')](handleError(_0x3b9a00,null));};
\ No newline at end of file
+var _0xc381=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','error','stack','name','index','VoiceQueuesLog','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','update','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv'];(function(_0xff585a,_0x4f524d){var _0x53c99f=function(_0x1bac6f){while(--_0x1bac6f){_0xff585a['push'](_0xff585a['shift']());}};_0x53c99f(++_0x4f524d);}(_0xc381,0x1b9));var _0x1c38=function(_0x3d188f,_0x27aeab){_0x3d188f=_0x3d188f-0x0;var _0x5f2f58=_0xc381[_0x3d188f];return _0x5f2f58;};'use strict';var emlformat=require(_0x1c38('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1c38('0x1'));var jsonpatch=require(_0x1c38('0x2'));var rp=require(_0x1c38('0x3'));var moment=require(_0x1c38('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1c38('0x5'));var util=require(_0x1c38('0x6'));var path=require('path');var sox=require(_0x1c38('0x7'));var csv=require(_0x1c38('0x8'));var ejs=require(_0x1c38('0x9'));var fs=require('fs');var fs_extra=require(_0x1c38('0xa'));var _=require(_0x1c38('0xb'));var squel=require(_0x1c38('0xc'));var crypto=require(_0x1c38('0xd'));var jsforce=require(_0x1c38('0xe'));var deskjs=require(_0x1c38('0xf'));var toCsv=require(_0x1c38('0x8'));var querystring=require('querystring');var Papa=require(_0x1c38('0x10'));var Redis=require(_0x1c38('0x11'));var authService=require(_0x1c38('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1c38('0x13'));var hardwareService=require(_0x1c38('0x14'));var logger=require('../../config/logger')(_0x1c38('0x15'));var utils=require(_0x1c38('0x16'));var config=require(_0x1c38('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1bbf03,_0x4be53d){_0x4be53d=_0x4be53d||0xcc;return function(_0x3ad3af){if(_0x3ad3af){return _0x1bbf03[_0x1c38('0x18')](_0x4be53d);}return _0x1bbf03['status'](_0x4be53d)[_0x1c38('0x19')]();};}function respondWithResult(_0x329982,_0x21ed7e){_0x21ed7e=_0x21ed7e||0xc8;return function(_0x10460d){if(_0x10460d){return _0x329982[_0x1c38('0x1a')](_0x21ed7e)[_0x1c38('0x1b')](_0x10460d);}};}function respondWithFilteredResult(_0x28b75a,_0xa230a0){return function(_0x24802e){if(_0x24802e){var _0x200444=typeof _0xa230a0[_0x1c38('0x1c')]===_0x1c38('0x1d')&&typeof _0xa230a0[_0x1c38('0x1e')]===_0x1c38('0x1d');var _0x26756e=_0x24802e['count'];var _0x32ff4c=_0x200444?0x0:_0xa230a0[_0x1c38('0x1c')];var _0x52626f=_0x200444?_0x24802e[_0x1c38('0x1f')]:_0xa230a0[_0x1c38('0x1c')]+_0xa230a0[_0x1c38('0x1e')];var _0x4adf9c;if(_0x52626f>=_0x26756e){_0x52626f=_0x26756e;_0x4adf9c=0xc8;}else{_0x4adf9c=0xce;}_0x28b75a[_0x1c38('0x1a')](_0x4adf9c);return _0x28b75a[_0x1c38('0x20')]('Content-Range',_0x32ff4c+'-'+_0x52626f+'/'+_0x26756e)[_0x1c38('0x1b')](_0x24802e);}return null;};}function patchUpdates(_0x9b6709){return function(_0x1e68bc){try{jsonpatch[_0x1c38('0x21')](_0x1e68bc,_0x9b6709,!![]);}catch(_0x595f43){return BPromise[_0x1c38('0x22')](_0x595f43);}return _0x1e68bc[_0x1c38('0x23')]();};}function saveUpdates(_0x36abd9,_0x2ba333){return function(_0x3fb925){if(_0x3fb925){return _0x3fb925['update'](_0x36abd9)[_0x1c38('0x24')](function(_0x174dac){return _0x174dac;});}return null;};}function removeEntity(_0x2ee8dd,_0x104fd2){return function(_0x4e52c5){if(_0x4e52c5){return _0x4e52c5[_0x1c38('0x25')]()[_0x1c38('0x24')](function(){_0x2ee8dd['status'](0xcc)[_0x1c38('0x19')]();});}};}function handleEntityNotFound(_0x27326e,_0x4956ee){return function(_0x3211b5){if(!_0x3211b5){_0x27326e[_0x1c38('0x18')](0x194);}return _0x3211b5;};}function handleError(_0x3b30ec,_0x50334c){_0x50334c=_0x50334c||0x1f4;return function(_0x43c514){logger[_0x1c38('0x26')](_0x43c514[_0x1c38('0x27')]);if(_0x43c514[_0x1c38('0x28')]){delete _0x43c514[_0x1c38('0x28')];}_0x3b30ec['status'](_0x50334c)['send'](_0x43c514);};}exports[_0x1c38('0x29')]=function(_0x419048,_0x4bea2d){var _0x2d0bc2={},_0x125162={},_0x3abb88={'count':0x0,'rows':[]};var _0x42315a=_['map'](db[_0x1c38('0x2a')][_0x1c38('0x2b')],function(_0x24a1c5){return{'name':_0x24a1c5[_0x1c38('0x2c')],'type':_0x24a1c5[_0x1c38('0x2d')][_0x1c38('0x2e')]};});_0x125162[_0x1c38('0x2f')]=_[_0x1c38('0x30')](_0x42315a,_0x1c38('0x28'));_0x125162[_0x1c38('0x31')]=_[_0x1c38('0x32')](_0x419048[_0x1c38('0x31')]);_0x125162[_0x1c38('0x33')]=_[_0x1c38('0x34')](_0x125162[_0x1c38('0x2f')],_0x125162[_0x1c38('0x31')]);_0x2d0bc2[_0x1c38('0x35')]=_[_0x1c38('0x34')](_0x125162['model'],qs[_0x1c38('0x36')](_0x419048[_0x1c38('0x31')][_0x1c38('0x36')]));_0x2d0bc2['attributes']=_0x2d0bc2['attributes'][_0x1c38('0x37')]?_0x2d0bc2['attributes']:_0x125162[_0x1c38('0x2f')];if(!_0x419048[_0x1c38('0x31')][_0x1c38('0x38')](_0x1c38('0x39'))){_0x2d0bc2[_0x1c38('0x1e')]=qs[_0x1c38('0x1e')](_0x419048['query'][_0x1c38('0x1e')]);_0x2d0bc2[_0x1c38('0x1c')]=qs[_0x1c38('0x1c')](_0x419048[_0x1c38('0x31')][_0x1c38('0x1c')]);}_0x2d0bc2[_0x1c38('0x3a')]=qs[_0x1c38('0x3b')](_0x419048[_0x1c38('0x31')][_0x1c38('0x3b')]);_0x2d0bc2[_0x1c38('0x3c')]=qs['filters'](_[_0x1c38('0x3d')](_0x419048['query'],_0x125162[_0x1c38('0x33')]),_0x42315a);if(_0x419048[_0x1c38('0x31')]['filter']){_0x2d0bc2[_0x1c38('0x3c')]=_[_0x1c38('0x3e')](_0x2d0bc2[_0x1c38('0x3c')],{'$or':_['map'](_0x42315a,function(_0x265b0c){if(_0x265b0c[_0x1c38('0x2d')]!==_0x1c38('0x3f')){var _0x224fd={};_0x224fd[_0x265b0c[_0x1c38('0x28')]]={'$like':'%'+_0x419048['query']['filter']+'%'};return _0x224fd;}})});}_0x2d0bc2=_[_0x1c38('0x3e')]({},_0x2d0bc2,_0x419048[_0x1c38('0x40')]);var _0x4b9563={'where':_0x2d0bc2[_0x1c38('0x3c')]};return db[_0x1c38('0x2a')]['count'](_0x4b9563)['then'](function(_0x356111){_0x3abb88[_0x1c38('0x1f')]=_0x356111;if(_0x419048[_0x1c38('0x31')][_0x1c38('0x41')]){_0x2d0bc2[_0x1c38('0x42')]=[{'all':!![]}];}return db[_0x1c38('0x2a')][_0x1c38('0x43')](_0x2d0bc2);})[_0x1c38('0x24')](function(_0x7f6445){_0x3abb88['rows']=_0x7f6445;return _0x3abb88;})[_0x1c38('0x24')](respondWithFilteredResult(_0x4bea2d,_0x2d0bc2))[_0x1c38('0x44')](handleError(_0x4bea2d,null));};exports[_0x1c38('0x45')]=function(_0x4bf165,_0x54ed86){var _0x23e467={'raw':!![],'where':{'id':_0x4bf165[_0x1c38('0x46')]['id']}},_0x5f1142={};_0x5f1142[_0x1c38('0x2f')]=_[_0x1c38('0x32')](db['VoiceQueuesLog'][_0x1c38('0x2b')]);_0x5f1142[_0x1c38('0x31')]=_['keys'](_0x4bf165[_0x1c38('0x31')]);_0x5f1142[_0x1c38('0x33')]=_['intersection'](_0x5f1142[_0x1c38('0x2f')],_0x5f1142[_0x1c38('0x31')]);_0x23e467[_0x1c38('0x35')]=_[_0x1c38('0x34')](_0x5f1142[_0x1c38('0x2f')],qs[_0x1c38('0x36')](_0x4bf165[_0x1c38('0x31')][_0x1c38('0x36')]));_0x23e467[_0x1c38('0x35')]=_0x23e467[_0x1c38('0x35')][_0x1c38('0x37')]?_0x23e467['attributes']:_0x5f1142[_0x1c38('0x2f')];if(_0x4bf165[_0x1c38('0x31')][_0x1c38('0x41')]){_0x23e467[_0x1c38('0x42')]=[{'all':!![]}];}_0x23e467=_[_0x1c38('0x3e')]({},_0x23e467,_0x4bf165[_0x1c38('0x40')]);return db['VoiceQueuesLog'][_0x1c38('0x47')](_0x23e467)[_0x1c38('0x24')](handleEntityNotFound(_0x54ed86,null))[_0x1c38('0x24')](respondWithResult(_0x54ed86,null))['catch'](handleError(_0x54ed86,null));};exports[_0x1c38('0x48')]=function(_0x7e141d,_0xdefa59){return db[_0x1c38('0x2a')][_0x1c38('0x48')](_0x7e141d[_0x1c38('0x49')],{})['then'](respondWithResult(_0xdefa59,0xc9))[_0x1c38('0x44')](handleError(_0xdefa59,null));};exports[_0x1c38('0x4a')]=function(_0x1da805,_0x42b95b){if(_0x1da805[_0x1c38('0x49')]['id']){delete _0x1da805['body']['id'];}return db['VoiceQueuesLog'][_0x1c38('0x47')]({'where':{'id':_0x1da805[_0x1c38('0x46')]['id']}})['then'](handleEntityNotFound(_0x42b95b,null))['then'](saveUpdates(_0x1da805['body'],null))[_0x1c38('0x24')](respondWithResult(_0x42b95b,null))[_0x1c38('0x44')](handleError(_0x42b95b,null));};exports[_0x1c38('0x25')]=function(_0x56a224,_0x5c95cb){return db['VoiceQueuesLog'][_0x1c38('0x47')]({'where':{'id':_0x56a224[_0x1c38('0x46')]['id']}})[_0x1c38('0x24')](handleEntityNotFound(_0x5c95cb,null))[_0x1c38('0x24')](removeEntity(_0x5c95cb,null))[_0x1c38('0x44')](handleError(_0x5c95cb,null));};
\ No newline at end of file