Built motion from commit a11024eac.|1.0.35
[motion.git] / server / api / openchannel_queue / openchannel_queue.controller.js
index c78e79f..5de8f56 100644 (file)
@@ -1 +1 @@
-var _0xff82=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x55\x73\x65\x72\x48\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x61\x67\x65\x6E\x74","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x61\x67\x65\x6E\x74\x73","\x62\x6F\x64\x79","\x70\x65\x6E\x61\x6C\x74\x79","\x61\x64\x64\x55\x73\x65\x72\x73","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x6D\x61\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x72\x65\x6D\x6F\x76\x65\x55\x73\x65\x72\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x20\x51\x75\x65\x75\x65\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79","\x65\x72\x72","\x65\x72\x72\x6F\x72","\x71\x75\x65\x75\x65","\x68\x61\x6E\x64\x6C\x65\x46\x6F\x72\x65\x69\x67\x6E\x4B\x65\x79\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xff82[0];var _=require(_0xff82[1]);var Util=require(_0xff82[2]);var OpenchannelQueue=require(_0xff82[4])[_0xff82[3]];var User=require(_0xff82[4])[_0xff82[5]];var sequelize=require(_0xff82[4])[_0xff82[6]];var UserHasOpenchannelQueue=require(_0xff82[4])[_0xff82[7]];function handleError(_0x863cx8,_0x863cx9){return _0x863cx8[_0xff82[9]](500)[_0xff82[8]](_0x863cx9)}exports[_0xff82[10]]= function(_0x863cxa,_0x863cx8){switch(_0x863cxa[_0xff82[16]][_0xff82[23]]){case _0xff82[16]:return User[_0xff82[17]](_0x863cxa[_0xff82[16]][_0xff82[15]],{attributes:[_0xff82[15]]})[_0xff82[12]](Util[_0xff82[14]](_0x863cxa[_0xff82[13]]))[_0xff82[12]](function(_0x863cxb){_0x863cx8[_0xff82[9]](200)[_0xff82[8]](_0x863cxb)})[_0xff82[11]](function(_0x863cx9){return handleError(_0x863cx8,_0x863cx9)});default:return OpenchannelQueue[_0xff82[22]](_0xff82[21])[_0xff82[20]](_[_0xff82[19]](Util[_0xff82[18]](_0x863cxa[_0xff82[13]]),{distinct:true}))[_0xff82[12]](function(_0x863cxb){_0x863cx8[_0xff82[9]](200)[_0xff82[8]](_0x863cxb)})[_0xff82[11]](function(_0x863cx9){return handleError(_0x863cx8,_0x863cx9)})}};exports[_0xff82[24]]= function(_0x863cxa,_0x863cx8){return OpenchannelQueue[_0xff82[22]](_0xff82[21])[_0xff82[17]](_0x863cxa[_0xff82[26]][_0xff82[15]])[_0xff82[12]](function(_0x863cxc){if(!_0x863cxc){return _0x863cx8[_0xff82[25]](404)};return _0x863cx8[_0xff82[8]](_0x863cxc)})[_0xff82[11]](function(_0x863cx9){return handleError(_0x863cx8,_0x863cx9)})};exports[_0xff82[27]]= function(_0x863cxa,_0x863cx8){return OpenchannelQueue[_0xff82[17]](_0x863cxa[_0xff82[26]][_0xff82[15]])[_0xff82[12]](function(_0x863cxe){if(!_0x863cxe){return _0x863cx8[_0xff82[25]](404)};return _0x863cxe[_0xff82[33]]({where:{role:_0xff82[29]},attributes:[_0xff82[15],_0xff82[30],_0xff82[31],_0xff82[32]]})})[_0xff82[12]](function(_0x863cxd){return _0x863cx8[_0xff82[9]](200)[_0xff82[8]]({rows:_0x863cxd,count:_0x863cxd[_0xff82[28]]})})[_0xff82[11]](function(_0x863cx9){return handleError(_0x863cx8,_0x863cx9)})};exports[_0xff82[34]]= function(_0x863cxa,_0x863cx8){var _0x863cxf;return OpenchannelQueue[_0xff82[34]](_0x863cxa[_0xff82[38]])[_0xff82[12]](function(_0x863cx10){_0x863cxf= _0x863cx10;if(_0x863cxa[_0xff82[38]][_0xff82[37]]){return _0x863cxf[_0xff82[40]](_0x863cxa[_0xff82[38]][_0xff82[37]],{penalty:_0x863cxa[_0xff82[38]][_0xff82[39]]|| 0,queue:_0x863cxf[_0xff82[30]]})}})[_0xff82[12]](function(){return _0x863cx8[_0xff82[9]](201)[_0xff82[8]](_0x863cxf)})[_0xff82[11]](sequelize.UniqueConstraintError,function(_0x863cx9){return Util[_0xff82[36]][_0xff82[35]](_0x863cx8,_0x863cx9)})[_0xff82[11]](function(_0x863cx9){return handleError(_0x863cx8,_0x863cx9)})};exports[_0xff82[41]]= function(_0x863cxa,_0x863cx8){if(_0x863cxa[_0xff82[38]][_0xff82[15]]){delete _0x863cxa[_0xff82[38]][_0xff82[15]]};return OpenchannelQueue[_0xff82[17]](_0x863cxa[_0xff82[26]][_0xff82[15]])[_0xff82[12]](function(_0x863cxc){if(!_0x863cxc){return _0x863cx8[_0xff82[25]](404)};var _0x863cx11=_[_0xff82[19]](_0x863cxc,_0x863cxa[_0xff82[38]]);return _0x863cx11[_0xff82[42]]()})[_0xff82[12]](function(_0x863cxc){return _0x863cx8[_0xff82[9]](200)[_0xff82[8]](_0x863cxc)})[_0xff82[11]](sequelize.UniqueConstraintError,function(_0x863cx9){return Util[_0xff82[36]][_0xff82[35]](_0x863cx8,_0x863cx9)})[_0xff82[11]](function(_0x863cx9){return handleError(_0x863cx8,_0x863cx9)})};exports[_0xff82[43]]= function(_0x863cxa,_0x863cx8,_0x863cx12){return OpenchannelQueue[_0xff82[17]](_0x863cxa[_0xff82[26]][_0xff82[15]])[_0xff82[12]](function(_0x863cxc){if(!_0x863cxc){return _0x863cx8[_0xff82[25]](404)};var _0x863cx13=_[_0xff82[44]](_0x863cxa[_0xff82[38]][_0xff82[37]],function(_0x863cx14){return {UserId:_0x863cx14,penalty:_0x863cxa[_0xff82[38]][_0xff82[39]],OpenchannelQueueId:_0x863cxc[_0xff82[15]],queue:_0x863cxc[_0xff82[30]]}});return UserHasOpenchannelQueue[_0xff82[45]](_0x863cx13,{individualHooks:true})})[_0xff82[12]](function(){return _0x863cx8[_0xff82[25]](200)})[_0xff82[11]](function(_0x863cx9){return handleError(_0x863cx8,_0x863cx9)})};exports[_0xff82[46]]= function(_0x863cxa,_0x863cx8){return OpenchannelQueue[_0xff82[17]](_0x863cxa[_0xff82[26]][_0xff82[15]])[_0xff82[12]](function(_0x863cxc){if(_0x863cxc){return _0x863cxc[_0xff82[47]](_0x863cxa[_0xff82[13]][_0xff82[37]],{individualHooks:true})}else {throw  new Error(_0xff82[48])}})[_0xff82[12]](function(){return _0x863cx8[_0xff82[25]](202)})[_0xff82[11]](function(_0x863cx9){return handleError(_0x863cx8,_0x863cx9)})};exports[_0xff82[49]]= function(_0x863cxa,_0x863cx8){var _0x863cx15;return OpenchannelQueue[_0xff82[17]](_0x863cxa[_0xff82[26]][_0xff82[15]])[_0xff82[12]](function(_0x863cxc){_0x863cx15= _0x863cxc;if(!_0x863cxc){return _0x863cx8[_0xff82[25]](404)};return _0x863cxc[_0xff82[49]]()})[_0xff82[12]](function(){return _0x863cx8[_0xff82[25]](204)})[_0xff82[11]](sequelize.ForeignKeyConstraintError,function(_0x863cx9){return Util[_0xff82[36]][_0xff82[53]](_0x863cx8,_0xff82[52],_0x863cx15[_0xff82[30]],_0x863cx9)})[_0xff82[11]](function(_0x863cx9){console[_0xff82[51]](_0xff82[50],_0x863cx9);return handleError(_0x863cx8,_0x863cx9)})};exports[_0xff82[54]]= function(_0x863cxa,_0x863cx8){return OpenchannelQueue[_0xff82[49]]({where:{id:_0x863cxa[_0xff82[13]][_0xff82[55]]},individualHooks:true})[_0xff82[12]](function(){return _0x863cx8[_0xff82[25]](204)})[_0xff82[11]](function(_0x863cx9){return handleError(_0x863cx8,_0x863cx9)})}
\ No newline at end of file
+var _0x9400=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x70\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x6F\x67\x67\x65\x72\x2E\x6A\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x55\x73\x65\x72\x48\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x73\x74\x61\x63\x6B","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x61\x67\x65\x6E\x74","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x61\x67\x65\x6E\x74\x73","\x62\x6F\x64\x79","\x70\x65\x6E\x61\x6C\x74\x79","\x61\x64\x64\x55\x73\x65\x72\x73","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x6D\x61\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x72\x65\x6D\x6F\x76\x65\x55\x73\x65\x72\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x20\x51\x75\x65\x75\x65\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79","\x71\x75\x65\x75\x65","\x68\x61\x6E\x64\x6C\x65\x46\x6F\x72\x65\x69\x67\x6E\x4B\x65\x79\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0x9400[0];var _=require(_0x9400[1]);var Util=require(_0x9400[2]);var logger=require(_0x9400[4])(_0x9400[3]);var OpenchannelQueue=require(_0x9400[6])[_0x9400[5]];var User=require(_0x9400[6])[_0x9400[7]];var sequelize=require(_0x9400[6])[_0x9400[8]];var UserHasOpenchannelQueue=require(_0x9400[6])[_0x9400[9]];function handleError(_0xaebcx9,_0xaebcxa){logger[_0x9400[11]](_0xaebcxa[_0x9400[10]]);return _0xaebcx9[_0x9400[13]](500)[_0x9400[12]](_0xaebcxa)}exports[_0x9400[14]]= function(_0xaebcxb,_0xaebcx9){switch(_0xaebcxb[_0x9400[20]][_0x9400[27]]){case _0x9400[20]:return User[_0x9400[21]](_0xaebcxb[_0x9400[20]][_0x9400[19]],{attributes:[_0x9400[19]]})[_0x9400[16]](Util[_0x9400[18]](_0xaebcxb[_0x9400[17]]))[_0x9400[16]](function(_0xaebcxc){_0xaebcx9[_0x9400[13]](200)[_0x9400[12]](_0xaebcxc)})[_0x9400[15]](function(_0xaebcxa){return handleError(_0xaebcx9,_0xaebcxa)});default:return OpenchannelQueue[_0x9400[26]](_0x9400[25])[_0x9400[24]](_[_0x9400[23]](Util[_0x9400[22]](_0xaebcxb[_0x9400[17]]),{distinct:true}))[_0x9400[16]](function(_0xaebcxc){_0xaebcx9[_0x9400[13]](200)[_0x9400[12]](_0xaebcxc)})[_0x9400[15]](function(_0xaebcxa){return handleError(_0xaebcx9,_0xaebcxa)})}};exports[_0x9400[28]]= function(_0xaebcxb,_0xaebcx9){return OpenchannelQueue[_0x9400[26]](_0x9400[25])[_0x9400[21]](_0xaebcxb[_0x9400[30]][_0x9400[19]])[_0x9400[16]](function(_0xaebcxd){if(!_0xaebcxd){return _0xaebcx9[_0x9400[29]](404)};return _0xaebcx9[_0x9400[12]](_0xaebcxd)})[_0x9400[15]](function(_0xaebcxa){return handleError(_0xaebcx9,_0xaebcxa)})};exports[_0x9400[31]]= function(_0xaebcxb,_0xaebcx9){return OpenchannelQueue[_0x9400[21]](_0xaebcxb[_0x9400[30]][_0x9400[19]])[_0x9400[16]](function(_0xaebcxf){if(!_0xaebcxf){return _0xaebcx9[_0x9400[29]](404)};return _0xaebcxf[_0x9400[37]]({where:{role:_0x9400[33]},attributes:[_0x9400[19],_0x9400[34],_0x9400[35],_0x9400[36]]})})[_0x9400[16]](function(_0xaebcxe){return _0xaebcx9[_0x9400[13]](200)[_0x9400[12]]({rows:_0xaebcxe,count:_0xaebcxe[_0x9400[32]]})})[_0x9400[15]](function(_0xaebcxa){return handleError(_0xaebcx9,_0xaebcxa)})};exports[_0x9400[38]]= function(_0xaebcxb,_0xaebcx9){var _0xaebcx10;return OpenchannelQueue[_0x9400[38]](_0xaebcxb[_0x9400[42]])[_0x9400[16]](function(_0xaebcx11){_0xaebcx10= _0xaebcx11;if(_0xaebcxb[_0x9400[42]][_0x9400[41]]){return _0xaebcx10[_0x9400[44]](_0xaebcxb[_0x9400[42]][_0x9400[41]],{penalty:_0xaebcxb[_0x9400[42]][_0x9400[43]]|| 0,queue:_0xaebcx10[_0x9400[34]]})}})[_0x9400[16]](function(){return _0xaebcx9[_0x9400[13]](201)[_0x9400[12]](_0xaebcx10)})[_0x9400[15]](sequelize.UniqueConstraintError,function(_0xaebcxa){return Util[_0x9400[40]][_0x9400[39]](_0xaebcx9,_0xaebcxa)})[_0x9400[15]](function(_0xaebcxa){return handleError(_0xaebcx9,_0xaebcxa)})};exports[_0x9400[45]]= function(_0xaebcxb,_0xaebcx9){if(_0xaebcxb[_0x9400[42]][_0x9400[19]]){delete _0xaebcxb[_0x9400[42]][_0x9400[19]]};return OpenchannelQueue[_0x9400[21]](_0xaebcxb[_0x9400[30]][_0x9400[19]])[_0x9400[16]](function(_0xaebcxd){if(!_0xaebcxd){return _0xaebcx9[_0x9400[29]](404)};var _0xaebcx12=_[_0x9400[23]](_0xaebcxd,_0xaebcxb[_0x9400[42]]);return _0xaebcx12[_0x9400[46]]()})[_0x9400[16]](function(_0xaebcxd){return _0xaebcx9[_0x9400[13]](200)[_0x9400[12]](_0xaebcxd)})[_0x9400[15]](sequelize.UniqueConstraintError,function(_0xaebcxa){return Util[_0x9400[40]][_0x9400[39]](_0xaebcx9,_0xaebcxa)})[_0x9400[15]](function(_0xaebcxa){return handleError(_0xaebcx9,_0xaebcxa)})};exports[_0x9400[47]]= function(_0xaebcxb,_0xaebcx9,_0xaebcx13){return OpenchannelQueue[_0x9400[21]](_0xaebcxb[_0x9400[30]][_0x9400[19]])[_0x9400[16]](function(_0xaebcxd){if(!_0xaebcxd){return _0xaebcx9[_0x9400[29]](404)};var _0xaebcx14=_[_0x9400[48]](_0xaebcxb[_0x9400[42]][_0x9400[41]],function(_0xaebcx15){return {UserId:_0xaebcx15,penalty:_0xaebcxb[_0x9400[42]][_0x9400[43]],OpenchannelQueueId:_0xaebcxd[_0x9400[19]],queue:_0xaebcxd[_0x9400[34]]}});return UserHasOpenchannelQueue[_0x9400[49]](_0xaebcx14,{individualHooks:true})})[_0x9400[16]](function(){return _0xaebcx9[_0x9400[29]](200)})[_0x9400[15]](function(_0xaebcxa){return handleError(_0xaebcx9,_0xaebcxa)})};exports[_0x9400[50]]= function(_0xaebcxb,_0xaebcx9){return OpenchannelQueue[_0x9400[21]](_0xaebcxb[_0x9400[30]][_0x9400[19]])[_0x9400[16]](function(_0xaebcxd){if(_0xaebcxd){return _0xaebcxd[_0x9400[51]](_0xaebcxb[_0x9400[17]][_0x9400[41]],{individualHooks:true})}else {throw  new Error(_0x9400[52])}})[_0x9400[16]](function(){return _0xaebcx9[_0x9400[29]](202)})[_0x9400[15]](function(_0xaebcxa){return handleError(_0xaebcx9,_0xaebcxa)})};exports[_0x9400[53]]= function(_0xaebcxb,_0xaebcx9){var _0xaebcx16;return OpenchannelQueue[_0x9400[21]](_0xaebcxb[_0x9400[30]][_0x9400[19]])[_0x9400[16]](function(_0xaebcxd){_0xaebcx16= _0xaebcxd;if(!_0xaebcxd){return _0xaebcx9[_0x9400[29]](404)};return _0xaebcxd[_0x9400[53]]()})[_0x9400[16]](function(){return _0xaebcx9[_0x9400[29]](204)})[_0x9400[15]](sequelize.ForeignKeyConstraintError,function(_0xaebcxa){return Util[_0x9400[40]][_0x9400[55]](_0xaebcx9,_0x9400[54],_0xaebcx16[_0x9400[34]],_0xaebcxa)})[_0x9400[15]](function(_0xaebcxa){return handleError(_0xaebcx9,_0xaebcxa)})};exports[_0x9400[56]]= function(_0xaebcxb,_0xaebcx9){return OpenchannelQueue[_0x9400[53]]({where:{id:_0xaebcxb[_0x9400[17]][_0x9400[57]]},individualHooks:true})[_0x9400[16]](function(){return _0xaebcx9[_0x9400[29]](204)})[_0x9400[15]](function(_0xaebcxa){return handleError(_0xaebcx9,_0xaebcxa)})}
\ No newline at end of file