Built motion from commit 5ae82ce5.|2.6.7
[motion2.git] / server / services / ami / trigger / integration / sugarcrm.js
index 3e0cede..aa0f6d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73af=['slice','replace','duration_hours','parent_type','Contacts','parent_name','direction','length','forEach','variableName','push','set_entry','JSON','stringify','Calls','format','Basic\x20%s','toString','base64','get_server_info','isNil','Getting\x20agent\x20with\x20name','Employees','then','find','Agent\x20found!','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','value','user_name','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','get_entry_list','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','entry_list','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Enduser\x20created.','first_name','[HTTP]','merge','map','string','nameField','toLowerCase','content','type','idField','customField','custom_fields','variable','Variable','login','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','calleridname','calleridnum','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','user:%s','trigger:browser:url','catch','error','%s/service/v4_1/rest.php','recordingFormat','none','[OUTBOUND]','destcalleridnum','The\x20Enduser\x20ID\x20is:','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','lastevent','toUpperCase','The\x20User\x20ID\x20is:','Inbound','lodash','bluebird','md5','util','ioredis','./util','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','emit','info','Creating\x20new\x20ticket...','name','getString','Subjects','created_by','description','date_start','toISOString'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x73af,0x152));var _0xf73a=function(_0x20c512,_0x36c198){_0x20c512=_0x20c512-0x0;var _0x25236e=_0x73af[_0x20c512];return _0x25236e;};'use strict';var _=require(_0xf73a('0x0'));var rp=require('request-promise');var BPromise=require(_0xf73a('0x1'));var md5=require(_0xf73a('0x2'));var util=require(_0xf73a('0x3'));var Redis=require(_0xf73a('0x4'));var intUtil=require(_0xf73a('0x5'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0xf73a('0x6'));config[_0xf73a('0x7')]=_[_0xf73a('0x8')](config[_0xf73a('0x7')],{'host':_0xf73a('0x9'),'port':0x18eb});var io=require(_0xf73a('0xa'))(new Redis(config[_0xf73a('0x7')]));var def={'method':_0xf73a('0xb'),'json':!![]};function emit(_0x3b5cd0,_0x549cd4,_0x3ac6c3){io['to'](_0x3b5cd0)[_0xf73a('0xc')](_0x549cd4,_0x3ac6c3);}function getTicket(_0x4f0ada,_0x266d2e,_0xf8e545,_0x54998a,_0x28ea06,_0x41be30,_0x23f08a,_0x5ba14d){logger[_0xf73a('0xd')](_0xf73a('0xe'));var _0x36a64c=new Date();var _0x770ca=[{'name':_0xf73a('0xf'),'value':intUtil[_0xf73a('0x10')](_0x54998a[_0xf73a('0x11')],_0x28ea06,'\x20')},{'name':'assigned_user_id','value':_0x266d2e['id']},{'name':_0xf73a('0x12'),'value':_0x266d2e['id']},{'name':_0xf73a('0x13'),'value':intUtil[_0xf73a('0x10')](_0x54998a['Descriptions'],_0x28ea06,'\x0a')},{'name':_0xf73a('0x14'),'value':_0x36a64c[_0xf73a('0x15')]()[_0xf73a('0x16')](0x0,0x13)[_0xf73a('0x17')]('T','\x20')},{'name':_0xf73a('0x18'),'value':'0'},{'name':'duration_minutes','value':'15'},{'name':'parent_id','value':_0xf8e545['id']},{'name':_0xf73a('0x19'),'value':_0xf73a('0x1a')},{'name':_0xf73a('0x1b'),'value':_0xf8e545[_0xf73a('0xf')]},{'name':_0xf73a('0x1c'),'value':_0x5ba14d}];if(_0x41be30[_0xf73a('0x1d')]){_[_0xf73a('0x1e')](_0x41be30,function(_0x62099e){if(_0x28ea06[_0x62099e[_0xf73a('0x1f')]]){_0x770ca[_0xf73a('0x20')]({'name':_0x62099e['idField'],'value':_0x28ea06[_0x62099e['variableName']]});}});}return request({'form':{'method':_0xf73a('0x21'),'input_type':'JSON','response_type':_0xf73a('0x22'),'rest_data':JSON[_0xf73a('0x23')]({'session':_0x23f08a['id'],'module_name':_0xf73a('0x24'),'name_value_list':_0x770ca})}});}function getAuth(_0x4fb702){return util[_0xf73a('0x25')](_0xf73a('0x26'),new Buffer(_0x4fb702['apiKey']+':X')[_0xf73a('0x27')](_0xf73a('0x28')));}function getServerInfo(_0x3c9e49){return request({'form':{'method':_0xf73a('0x29'),'input_type':_0xf73a('0x22'),'response_type':_0xf73a('0x22'),'rest_data':JSON['stringify']({'session':_0x3c9e49['id']})}});}function getUser(_0x1cf64a,_0x271420,_0x383158){if(!_[_0xf73a('0x2a')](_0x271420)){logger[_0xf73a('0xd')](_0xf73a('0x2b'),_0x271420);return request({'form':{'method':'get_entry_list','input_type':_0xf73a('0x22'),'response_type':_0xf73a('0x22'),'rest_data':JSON[_0xf73a('0x23')]({'session':_0x383158['id'],'module_name':_0xf73a('0x2c'),'query':util[_0xf73a('0x25')]('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0x271420),'order_by':'','offset':'0','select_fields':['id',_0xf73a('0xf'),'user_name'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xf73a('0x2d')](function(_0x2f9569){if(_0x2f9569['entry_list'][_0xf73a('0x1d')]){var _0x552f06=_[_0xf73a('0x2e')](_0x2f9569['entry_list'],function(_0x4affb8){return _0x4affb8['name_value_list']['user_name']['value']===_0x271420;});if(_0x552f06){logger[_0xf73a('0xd')](_0xf73a('0x2f'));return BPromise[_0xf73a('0x30')]({'id':_0x552f06[_0xf73a('0x31')]['id']['value'],'name':_0x552f06['name_value_list'][_0xf73a('0xf')]['value']});}}logger[_0xf73a('0xd')](_0xf73a('0x32'));return BPromise[_0xf73a('0x30')]({'id':_0x383158[_0xf73a('0x31')][_0xf73a('0x33')][_0xf73a('0x34')],'name':_0x383158[_0xf73a('0x31')][_0xf73a('0x35')][_0xf73a('0x34')]});});}else{logger[_0xf73a('0xd')](_0xf73a('0x36'));return BPromise[_0xf73a('0x30')]({'id':_0x383158['name_value_list'][_0xf73a('0x33')][_0xf73a('0x34')],'name':_0x383158[_0xf73a('0x31')][_0xf73a('0x35')][_0xf73a('0x34')]});}}function getEndUser(_0x566388,_0x39c520,_0x2913a9,_0x1906b7){logger['info']('Searching\x20enduser\x20with\x20phone',_0x2913a9);return request({'form':{'method':_0xf73a('0x37'),'input_type':_0xf73a('0x22'),'response_type':_0xf73a('0x22'),'rest_data':JSON['stringify']({'session':_0x1906b7['id'],'module_name':_0xf73a('0x1a'),'query':util[_0xf73a('0x25')](_0xf73a('0x38'),_0x2913a9),'order_by':'','offset':'0','select_fields':['id',_0xf73a('0xf'),_0xf73a('0x39')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xf73a('0x2d')](function(_0x298c3a){if(_0x298c3a[_0xf73a('0x3a')][_0xf73a('0x1d')]){var _0x31e3f0=_[_0xf73a('0x2e')](_0x298c3a[_0xf73a('0x3a')],function(_0x34f29d){return _0x34f29d[_0xf73a('0x31')][_0xf73a('0x39')][_0xf73a('0x34')]===_0x2913a9;});if(_0x31e3f0){logger[_0xf73a('0xd')]('Enduser\x20found!');return BPromise[_0xf73a('0x30')]({'id':_0x31e3f0[_0xf73a('0x31')]['id']['value'],'name':_0x31e3f0[_0xf73a('0x31')][_0xf73a('0xf')][_0xf73a('0x34')],'phone':_0x31e3f0[_0xf73a('0x31')][_0xf73a('0x39')][_0xf73a('0x34')]});}}else{logger[_0xf73a('0xd')](_0xf73a('0x3b'));return request({'form':{'method':'set_entry','input_type':_0xf73a('0x22'),'response_type':'JSON','rest_data':JSON[_0xf73a('0x23')]({'session':_0x1906b7['id'],'module_name':_0xf73a('0x1a'),'name_value_list':[{'name':'first_name','value':_0x39c520!==_0xf73a('0x3c')?_0x39c520:util[_0xf73a('0x25')]('Caller\x20-\x20%s',_0x2913a9)},{'name':_0xf73a('0x39'),'value':_0x2913a9}]})}})['then'](function(_0x5f2453){logger[_0xf73a('0xd')](_0xf73a('0x3d'));return BPromise[_0xf73a('0x30')]({'id':_0x5f2453['id'],'name':_0x5f2453['entry_list'][_0xf73a('0x3e')]['value'],'phone':_0x5f2453[_0xf73a('0x3a')][_0xf73a('0x39')]['value']});});}});}function request(_0x335d44){logger['debug'](_0xf73a('0x3f'),JSON[_0xf73a('0x23')](_0x335d44));return rp(_[_0xf73a('0x40')](def,_0x335d44));}function getTags(_0x358015,_0x243755){var _0x5e01a9=[];if(_0x358015&&_0x358015['length']>0x0){_0x5e01a9=_[_0xf73a('0x41')](_0x358015,_0x243755);}return _0x5e01a9;}function getCustomFields(_0x3815bb,_0x1e337a){var _0x3239f5=[];var _0x34e57d={'custom_fields':[]};if(_0x3815bb[_0xf73a('0x1d')]>0x0){_[_0xf73a('0x1e')](_0x3815bb,function(_0x21ec17){if(_0x21ec17['type']===_0xf73a('0x42')&&_0x21ec17['nameField']&&!_0x21ec17['customField']){_0x34e57d[_0x21ec17[_0xf73a('0x43')][_0xf73a('0x44')]()]=_0x21ec17[_0xf73a('0x45')]['toString']();}else if(_0x21ec17[_0xf73a('0x46')]===_0xf73a('0x42')&&_0x21ec17[_0xf73a('0x47')]&&_0x21ec17[_0xf73a('0x48')]){_0x34e57d[_0xf73a('0x49')]['push']({'id':_0x21ec17[_0xf73a('0x47')],'value':_0x21ec17['content'][_0xf73a('0x27')]()});}else if(_0x21ec17['type']===_0xf73a('0x4a')&&_0x21ec17[_0xf73a('0x1f')]&&_0x21ec17[_0xf73a('0x47')]&&_0x21ec17[_0xf73a('0x48')]){_0x1e337a[_0x21ec17[_0xf73a('0x1f')]]&&_0x34e57d[_0xf73a('0x49')][_0xf73a('0x20')]({'id':_0x21ec17[_0xf73a('0x47')],'value':_0x1e337a[_0x21ec17['variableName']][_0xf73a('0x27')]()});}else if(_0x21ec17[_0xf73a('0x46')]==='customVariable'&&_0x21ec17[_0xf73a('0x4b')]&&_0x21ec17[_0xf73a('0x4b')][_0xf73a('0xf')]&&_0x21ec17[_0xf73a('0x47')]&&_0x21ec17[_0xf73a('0x48')]){_0x1e337a[_0x21ec17['Variable']['name'][_0xf73a('0x44')]()]&&_0x34e57d[_0xf73a('0x49')][_0xf73a('0x20')]({'id':_0x21ec17[_0xf73a('0x47')],'value':_0x1e337a[_0x21ec17[_0xf73a('0x4b')][_0xf73a('0xf')][_0xf73a('0x44')]()][_0xf73a('0x27')]()});}});}return _0x34e57d;}function getConnection(_0xe6aaa6){return request({'method':_0xf73a('0xb'),'form':{'method':_0xf73a('0x4c'),'input_type':_0xf73a('0x22'),'response_type':_0xf73a('0x22'),'rest_data':JSON[_0xf73a('0x23')]({'user_auth':{'user_name':_0xe6aaa6['username'],'password':_0xe6aaa6[_0xf73a('0x4d')],'encryption':_0xf73a('0x4e')},'application':_0xf73a('0x4f')})}})[_0xf73a('0x2d')](function(_0xb9e7dd){var _0x4c4274=_0xb9e7dd;if(_0x4c4274['id']){def[_0xf73a('0x50')]=_0x4c4274['id'];return BPromise['resolve'](_0x4c4274);}else{throw new Error(util[_0xf73a('0x25')]('Account\x20%d\x20is\x20not\x20valid',_0xe6aaa6['id']));}});}function setRelationship(_0x51f7bd,_0x4b81b6,_0x3d0e73,_0x533014){return request({'form':{'method':_0xf73a('0x51'),'input_type':_0xf73a('0x22'),'response_type':_0xf73a('0x22'),'rest_data':JSON['stringify']({'session':_0x51f7bd['id'],'module_name':_0xf73a('0x24'),'module_id':_0x3d0e73['id'],'link_field_name':_0x533014,'related_ids':[_0x4b81b6['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xf73a('0x52')]=function(_0x590749,_0x556320,_0x4ca6ef,_0x18cf4e,_0x3f4d15,_0x3be414){var _0x3b462c,_0xcff102,_0xfabf75,_0x48e098;_0x3be414[_0xf73a('0x53')]=intUtil[_0xf73a('0x54')](_0x3be414[_0xf73a('0x53')]);_0x3be414[_0xf73a('0x55')]=intUtil[_0xf73a('0x54')](_0x3be414[_0xf73a('0x55')]);def[_0xf73a('0x56')]=util[_0xf73a('0x25')]('%s/service/v4_1/rest.php',_0x3be414[_0xf73a('0x53')]);if(_0x3f4d15&&_0x3f4d15[_0xf73a('0x57')]){logger[_0xf73a('0xd')](_0xf73a('0x58'),_0xf73a('0x59'));_0x556320['recordingURL']=util[_0xf73a('0x25')](_0xf73a('0x5a'),_0x3be414[_0xf73a('0x55')],_0x556320[_0xf73a('0x5b')],md5(_0x556320['uniqueid']));}else{_0x556320[_0xf73a('0x5c')]='';}return getConnection(_0x3be414)['then'](function(_0x352224){_0x48e098=_0x352224;return getUser(_0x3be414,_0x18cf4e[_0xf73a('0xf')],_0x48e098);})['then'](function(_0x2dcabe){_0x3b462c=_0x2dcabe;logger[_0xf73a('0xd')]('The\x20User\x20ID\x20is:',_0x3b462c['id']);return getEndUser(_0x3be414,_0x556320[_0xf73a('0x5d')],_0x556320[_0xf73a('0x5e')],_0x48e098);})[_0xf73a('0x2d')](function(_0x1e7abd){_0xcff102=_0x1e7abd;logger[_0xf73a('0xd')]('The\x20Enduser\x20ID\x20is:',_0xcff102['id']);return getTicket(_0x3be414,_0x3b462c,_0xcff102,_0x4ca6ef,_0x556320,_0x4ca6ef[_0xf73a('0x5f')],_0x48e098,'Inbound');})['then'](function(_0x4ab59e){_0xfabf75=_0x4ab59e;logger[_0xf73a('0xd')](_0xf73a('0x60'));logger[_0xf73a('0xd')](_0xf73a('0x61'),_0xfabf75['id']);return setRelationship(_0x48e098,_0x3b462c,_0xfabf75,_0xf73a('0x62'));})[_0xf73a('0x2d')](function(){return setRelationship(_0x48e098,_0xcff102,_0xfabf75,_0xf73a('0x63'));})[_0xf73a('0x2d')](function(){return getServerInfo(_0x48e098);})[_0xf73a('0x2d')](function(_0x41c440){var _0x2cfcf3=parseInt(_0x41c440[_0xf73a('0x64')][_0xf73a('0x65')](0x0));var _0x15d3f6=util['format']('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x3be414['remoteUri'],_0xfabf75['id']);if(_0x2cfcf3>0x6){_0x15d3f6=util[_0xf73a('0x25')](_0xf73a('0x66'),_0x3be414['remoteUri'],_0xfabf75['id']);}logger['info']('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xf73a('0x25')](_0xf73a('0x67'),_0x18cf4e[_0xf73a('0xf')]),_0xf73a('0x68'),{'uri':_0x15d3f6});})[_0xf73a('0x69')](function(_0x41ff08){logger[_0xf73a('0x6a')](_0xf73a('0x58'),JSON['stringify'](_0x41ff08));});};exports['outbound']=function(_0x383966,_0x23be72,_0x25f763,_0x634c4d,_0x1fc082,_0x2df259,_0x4bbe8b){var _0x261439,_0x5d0ec3,_0x23ca23,_0x318339;_0x2df259[_0xf73a('0x53')]=intUtil[_0xf73a('0x54')](_0x2df259['remoteUri']);_0x2df259[_0xf73a('0x55')]=intUtil[_0xf73a('0x54')](_0x2df259[_0xf73a('0x55')]);def['uri']=util[_0xf73a('0x25')](_0xf73a('0x6b'),_0x2df259[_0xf73a('0x53')]);if(_0x4bbe8b&&_0x4bbe8b[_0xf73a('0x6c')]&&_0x4bbe8b[_0xf73a('0x6c')]!==_0xf73a('0x6d')){logger[_0xf73a('0xd')](_0xf73a('0x6e'),_0xf73a('0x59'));_0x23be72[_0xf73a('0x5c')]=util[_0xf73a('0x25')](_0xf73a('0x5a'),_0x2df259[_0xf73a('0x55')],_0x23be72[_0xf73a('0x5b')],md5(_0x23be72[_0xf73a('0x5b')]));}return getConnection(_0x2df259)[_0xf73a('0x2d')](function(_0x2b0818){_0x318339=_0x2b0818;return getUser(_0x2df259,_0x634c4d['name'],_0x318339);})[_0xf73a('0x2d')](function(_0x2c0ba6){_0x261439=_0x2c0ba6;logger[_0xf73a('0xd')]('The\x20User\x20ID\x20is:',_0x261439['id']);return getEndUser(_0x2df259,_0x23be72['destcalleridname'],_0x23be72[_0xf73a('0x6f')],_0x318339);})[_0xf73a('0x2d')](function(_0x22bcd2){_0x5d0ec3=_0x22bcd2;logger[_0xf73a('0xd')](_0xf73a('0x70'),_0x5d0ec3['id']);return getTicket(_0x2df259,_0x261439,_0x5d0ec3,_0x25f763,_0x23be72,_0x25f763[_0xf73a('0x5f')],_0x318339,'Outbound');})[_0xf73a('0x2d')](function(_0x233b5c){_0x23ca23=_0x233b5c;logger[_0xf73a('0xd')](_0xf73a('0x60'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x23ca23['id']);return setRelationship(_0x318339,_0x261439,_0x23ca23,'users');})['then'](function(){return setRelationship(_0x318339,_0x5d0ec3,_0x23ca23,_0xf73a('0x63'));})[_0xf73a('0x2d')](function(){return getServerInfo(_0x318339);})[_0xf73a('0x2d')](function(_0x599be7){var _0x4afcf3=parseInt(_0x599be7['version'][_0xf73a('0x65')](0x0));var _0x22a0bb=util['format'](_0xf73a('0x71'),_0x2df259['remoteUri'],_0x23ca23['id']);if(_0x4afcf3>0x6){_0x22a0bb=util['format']('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x2df259[_0xf73a('0x53')],_0x23ca23['id']);}logger['info'](_0xf73a('0x6e'),_0xf73a('0x72'));emit(util['format'](_0xf73a('0x67'),_0x634c4d[_0xf73a('0xf')]),'trigger:browser:url',{'uri':_0x22a0bb});})[_0xf73a('0x69')](function(_0x53d569){logger[_0xf73a('0x6a')](_0xf73a('0x6e'),JSON[_0xf73a('0x23')](_0x53d569));});};exports[_0xf73a('0x73')]=function(_0x574d29,_0x3efbe5,_0x3cc977,_0x4a1891,_0x2af8d5,_0x3a0403){var _0x46e3e4,_0x534d9c,_0x442079,_0x3c375f;_0x3a0403[_0xf73a('0x53')]=intUtil['stripTrailingSlash'](_0x3a0403[_0xf73a('0x53')]);_0x3a0403[_0xf73a('0x55')]=intUtil[_0xf73a('0x54')](_0x3a0403[_0xf73a('0x55')]);def[_0xf73a('0x56')]=util[_0xf73a('0x25')](_0xf73a('0x6b'),_0x3a0403[_0xf73a('0x53')]);if(_0x2af8d5&&_0x2af8d5[_0xf73a('0x57')]){logger[_0xf73a('0xd')]('['+_0x3efbe5[_0xf73a('0x74')][_0xf73a('0x75')]()+']',_0xf73a('0x59'));_0x3efbe5[_0xf73a('0x5c')]=util['format'](_0xf73a('0x5a'),_0x3a0403[_0xf73a('0x55')],_0x3efbe5['uniqueid'],md5(_0x3efbe5[_0xf73a('0x5b')]));}else{_0x3efbe5[_0xf73a('0x5c')]='';}return getConnection(_0x3a0403)[_0xf73a('0x2d')](function(_0x39f029){_0x3c375f=_0x39f029;if(!_[_0xf73a('0x2a')](_0x4a1891)){return getUser(_0x3a0403,_0x4a1891[_0xf73a('0xf')],_0x3c375f);}else{return getUser(_0x3a0403,null,_0x3c375f);}})[_0xf73a('0x2d')](function(_0x581b9e){_0x46e3e4=_0x581b9e;logger[_0xf73a('0xd')](_0xf73a('0x76'),_0x46e3e4['id']);return getEndUser(_0x3a0403,_0x3efbe5[_0xf73a('0x5d')],_0x3efbe5[_0xf73a('0x5e')],_0x3c375f);})['then'](function(_0x4a76ec){_0x534d9c=_0x4a76ec;logger['info']('The\x20Enduser\x20ID\x20is:',_0x534d9c['id']);return getTicket(_0x3a0403,_0x46e3e4,_0x534d9c,_0x3cc977,_0x3efbe5,_0x3cc977[_0xf73a('0x5f')],_0x3c375f,_0xf73a('0x77'));})[_0xf73a('0x2d')](function(_0x49cdae){_0x442079=_0x49cdae;logger['info'](_0xf73a('0x60'));logger[_0xf73a('0xd')](_0xf73a('0x61'),_0x442079['id']);return setRelationship(_0x3c375f,_0x46e3e4,_0x442079,_0xf73a('0x62'));})['then'](function(){return setRelationship(_0x3c375f,_0x534d9c,_0x442079,'contacts');})[_0xf73a('0x2d')](function(){return getServerInfo(_0x3c375f);})[_0xf73a('0x69')](function(_0x12849e){logger[_0xf73a('0x6a')]('['+_0x3efbe5[_0xf73a('0x74')]['toUpperCase']()+']',JSON[_0xf73a('0x23')](_0x12849e));});};
\ No newline at end of file
+var _0x669b=['direction','forEach','variableName','push','idField','JSON','stringify','Calls','Basic\x20%s','toString','base64','get_server_info','Getting\x20agent\x20with\x20name','get_entry_list','Employees','format','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','name','user_name','entry_list','length','find','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','value','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','set_entry','first_name','<unknown>','Caller\x20-\x20%s','then','Enduser\x20created.','debug','[HTTP]','map','type','nameField','customField','content','string','variable','custom_fields','Variable','toLowerCase','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','calleridname','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridnum','Outbound','unmanaged','isNil','lastevent','toUpperCase','lodash','request-promise','md5','util','./util','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','emit','info','Creating\x20new\x20ticket...','getString','Subjects','assigned_user_id','created_by','description','Descriptions','replace','duration_hours','duration_minutes','parent_id','Contacts','parent_name'];(function(_0x1df467,_0x3839b3){var _0x30cfff=function(_0x1a8bbb){while(--_0x1a8bbb){_0x1df467['push'](_0x1df467['shift']());}};_0x30cfff(++_0x3839b3);}(_0x669b,0x1bd));var _0xb669=function(_0x368a1e,_0x13e6ce){_0x368a1e=_0x368a1e-0x0;var _0x18d3da=_0x669b[_0x368a1e];return _0x18d3da;};'use strict';var _=require(_0xb669('0x0'));var rp=require(_0xb669('0x1'));var BPromise=require('bluebird');var md5=require(_0xb669('0x2'));var util=require(_0xb669('0x3'));var Redis=require('ioredis');var intUtil=require(_0xb669('0x4'));var config=require('../../../../config/environment');var logger=require(_0xb669('0x5'))(_0xb669('0x6'));config[_0xb669('0x7')]=_[_0xb669('0x8')](config[_0xb669('0x7')],{'host':_0xb669('0x9'),'port':0x18eb});var io=require(_0xb669('0xa'))(new Redis(config['redis']));var def={'method':_0xb669('0xb'),'json':!![]};function emit(_0x44eefe,_0x56007e,_0x248c3e){io['to'](_0x44eefe)[_0xb669('0xc')](_0x56007e,_0x248c3e);}function getTicket(_0x1ca7c0,_0x104f29,_0x3a9361,_0x519f32,_0x2287ad,_0x1c5057,_0x5dab46,_0x43d387){logger[_0xb669('0xd')](_0xb669('0xe'));var _0x3f5b77=new Date();var _0x53b20a=[{'name':'name','value':intUtil[_0xb669('0xf')](_0x519f32[_0xb669('0x10')],_0x2287ad,'\x20')},{'name':_0xb669('0x11'),'value':_0x104f29['id']},{'name':_0xb669('0x12'),'value':_0x104f29['id']},{'name':_0xb669('0x13'),'value':intUtil[_0xb669('0xf')](_0x519f32[_0xb669('0x14')],_0x2287ad,'\x0a')},{'name':'date_start','value':_0x3f5b77['toISOString']()['slice'](0x0,0x13)[_0xb669('0x15')]('T','\x20')},{'name':_0xb669('0x16'),'value':'0'},{'name':_0xb669('0x17'),'value':'15'},{'name':_0xb669('0x18'),'value':_0x3a9361['id']},{'name':'parent_type','value':_0xb669('0x19')},{'name':_0xb669('0x1a'),'value':_0x3a9361['name']},{'name':_0xb669('0x1b'),'value':_0x43d387}];if(_0x1c5057['length']){_[_0xb669('0x1c')](_0x1c5057,function(_0x39968d){if(_0x2287ad[_0x39968d[_0xb669('0x1d')]]){_0x53b20a[_0xb669('0x1e')]({'name':_0x39968d[_0xb669('0x1f')],'value':_0x2287ad[_0x39968d[_0xb669('0x1d')]]});}});}return request({'form':{'method':'set_entry','input_type':_0xb669('0x20'),'response_type':'JSON','rest_data':JSON[_0xb669('0x21')]({'session':_0x5dab46['id'],'module_name':_0xb669('0x22'),'name_value_list':_0x53b20a})}});}function getAuth(_0x18e5fa){return util['format'](_0xb669('0x23'),new Buffer(_0x18e5fa['apiKey']+':X')[_0xb669('0x24')](_0xb669('0x25')));}function getServerInfo(_0x507c7d){return request({'form':{'method':_0xb669('0x26'),'input_type':_0xb669('0x20'),'response_type':_0xb669('0x20'),'rest_data':JSON['stringify']({'session':_0x507c7d['id']})}});}function getUser(_0xe0ec07,_0x25ed69,_0x3943bd){if(!_['isNil'](_0x25ed69)){logger[_0xb669('0xd')](_0xb669('0x27'),_0x25ed69);return request({'form':{'method':_0xb669('0x28'),'input_type':_0xb669('0x20'),'response_type':_0xb669('0x20'),'rest_data':JSON[_0xb669('0x21')]({'session':_0x3943bd['id'],'module_name':_0xb669('0x29'),'query':util[_0xb669('0x2a')](_0xb669('0x2b'),_0x25ed69),'order_by':'','offset':'0','select_fields':['id',_0xb669('0x2c'),_0xb669('0x2d')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x3770a7){if(_0x3770a7[_0xb669('0x2e')][_0xb669('0x2f')]){var _0x1b9b76=_[_0xb669('0x30')](_0x3770a7[_0xb669('0x2e')],function(_0x6289b7){return _0x6289b7['name_value_list'][_0xb669('0x2d')]['value']===_0x25ed69;});if(_0x1b9b76){logger[_0xb669('0xd')]('Agent\x20found!');return BPromise[_0xb669('0x31')]({'id':_0x1b9b76[_0xb669('0x32')]['id']['value'],'name':_0x1b9b76[_0xb669('0x32')][_0xb669('0x2c')]['value']});}}logger[_0xb669('0xd')](_0xb669('0x33'));return BPromise[_0xb669('0x31')]({'id':_0x3943bd['name_value_list'][_0xb669('0x34')][_0xb669('0x35')],'name':_0x3943bd[_0xb669('0x32')][_0xb669('0x2d')][_0xb669('0x35')]});});}else{logger['info']('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise[_0xb669('0x31')]({'id':_0x3943bd[_0xb669('0x32')][_0xb669('0x34')][_0xb669('0x35')],'name':_0x3943bd[_0xb669('0x32')][_0xb669('0x2d')][_0xb669('0x35')]});}}function getEndUser(_0x216c14,_0x4657fe,_0xc95d3b,_0x591dda){logger[_0xb669('0xd')](_0xb669('0x36'),_0xc95d3b);return request({'form':{'method':_0xb669('0x28'),'input_type':_0xb669('0x20'),'response_type':_0xb669('0x20'),'rest_data':JSON[_0xb669('0x21')]({'session':_0x591dda['id'],'module_name':_0xb669('0x19'),'query':util['format'](_0xb669('0x37'),_0xc95d3b),'order_by':'','offset':'0','select_fields':['id','name',_0xb669('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x4370db){if(_0x4370db[_0xb669('0x2e')][_0xb669('0x2f')]){var _0x41119d=_[_0xb669('0x30')](_0x4370db[_0xb669('0x2e')],function(_0x804648){return _0x804648['name_value_list'][_0xb669('0x38')][_0xb669('0x35')]===_0xc95d3b;});if(_0x41119d){logger[_0xb669('0xd')]('Enduser\x20found!');return BPromise[_0xb669('0x31')]({'id':_0x41119d[_0xb669('0x32')]['id'][_0xb669('0x35')],'name':_0x41119d['name_value_list'][_0xb669('0x2c')]['value'],'phone':_0x41119d['name_value_list'][_0xb669('0x38')]['value']});}}else{logger[_0xb669('0xd')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':_0xb669('0x39'),'input_type':_0xb669('0x20'),'response_type':_0xb669('0x20'),'rest_data':JSON['stringify']({'session':_0x591dda['id'],'module_name':_0xb669('0x19'),'name_value_list':[{'name':_0xb669('0x3a'),'value':_0x4657fe!==_0xb669('0x3b')?_0x4657fe:util[_0xb669('0x2a')](_0xb669('0x3c'),_0xc95d3b)},{'name':_0xb669('0x38'),'value':_0xc95d3b}]})}})[_0xb669('0x3d')](function(_0x208bfa){logger[_0xb669('0xd')](_0xb669('0x3e'));return BPromise[_0xb669('0x31')]({'id':_0x208bfa['id'],'name':_0x208bfa[_0xb669('0x2e')][_0xb669('0x3a')][_0xb669('0x35')],'phone':_0x208bfa[_0xb669('0x2e')][_0xb669('0x38')]['value']});});}});}function request(_0x2a0974){logger[_0xb669('0x3f')](_0xb669('0x40'),JSON[_0xb669('0x21')](_0x2a0974));return rp(_['merge'](def,_0x2a0974));}function getTags(_0x160f65,_0x3dd3a2){var _0x317f42=[];if(_0x160f65&&_0x160f65[_0xb669('0x2f')]>0x0){_0x317f42=_[_0xb669('0x41')](_0x160f65,_0x3dd3a2);}return _0x317f42;}function getCustomFields(_0x4dd5ae,_0x5cd696){var _0xe20593=[];var _0x4c6451={'custom_fields':[]};if(_0x4dd5ae[_0xb669('0x2f')]>0x0){_[_0xb669('0x1c')](_0x4dd5ae,function(_0x1960cb){if(_0x1960cb[_0xb669('0x42')]==='string'&&_0x1960cb[_0xb669('0x43')]&&!_0x1960cb[_0xb669('0x44')]){_0x4c6451[_0x1960cb[_0xb669('0x43')]['toLowerCase']()]=_0x1960cb[_0xb669('0x45')][_0xb669('0x24')]();}else if(_0x1960cb[_0xb669('0x42')]===_0xb669('0x46')&&_0x1960cb[_0xb669('0x1f')]&&_0x1960cb[_0xb669('0x44')]){_0x4c6451['custom_fields'][_0xb669('0x1e')]({'id':_0x1960cb[_0xb669('0x1f')],'value':_0x1960cb[_0xb669('0x45')][_0xb669('0x24')]()});}else if(_0x1960cb[_0xb669('0x42')]===_0xb669('0x47')&&_0x1960cb[_0xb669('0x1d')]&&_0x1960cb[_0xb669('0x1f')]&&_0x1960cb[_0xb669('0x44')]){_0x5cd696[_0x1960cb[_0xb669('0x1d')]]&&_0x4c6451[_0xb669('0x48')][_0xb669('0x1e')]({'id':_0x1960cb[_0xb669('0x1f')],'value':_0x5cd696[_0x1960cb['variableName']][_0xb669('0x24')]()});}else if(_0x1960cb[_0xb669('0x42')]==='customVariable'&&_0x1960cb[_0xb669('0x49')]&&_0x1960cb[_0xb669('0x49')]['name']&&_0x1960cb[_0xb669('0x1f')]&&_0x1960cb[_0xb669('0x44')]){_0x5cd696[_0x1960cb[_0xb669('0x49')][_0xb669('0x2c')][_0xb669('0x4a')]()]&&_0x4c6451['custom_fields'][_0xb669('0x1e')]({'id':_0x1960cb[_0xb669('0x1f')],'value':_0x5cd696[_0x1960cb['Variable'][_0xb669('0x2c')][_0xb669('0x4a')]()][_0xb669('0x24')]()});}});}return _0x4c6451;}function getConnection(_0x2bc5ef){return request({'method':'POST','form':{'method':'login','input_type':_0xb669('0x20'),'response_type':'JSON','rest_data':JSON[_0xb669('0x21')]({'user_auth':{'user_name':_0x2bc5ef['username'],'password':_0x2bc5ef['password'],'encryption':'PLAIN'},'application':_0xb669('0x4b')})}})[_0xb669('0x3d')](function(_0x406a9c){var _0x266b1e=_0x406a9c;if(_0x266b1e['id']){def[_0xb669('0x4c')]=_0x266b1e['id'];return BPromise['resolve'](_0x266b1e);}else{throw new Error(util[_0xb669('0x2a')](_0xb669('0x4d'),_0x2bc5ef['id']));}});}function setRelationship(_0x12b116,_0x330cd8,_0x447f30,_0x56186e){return request({'form':{'method':'set_relationship','input_type':'JSON','response_type':'JSON','rest_data':JSON['stringify']({'session':_0x12b116['id'],'module_name':'Calls','module_id':_0x447f30['id'],'link_field_name':_0x56186e,'related_ids':[_0x330cd8['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xb669('0x4e')]=function(_0x279c26,_0x2697ce,_0x54fb54,_0xacdbf8,_0xf85d94,_0x5228ac){var _0x206f40,_0x599b2f,_0x1eb8c5,_0x3b7439;_0x5228ac[_0xb669('0x4f')]=intUtil[_0xb669('0x50')](_0x5228ac[_0xb669('0x4f')]);_0x5228ac['serverUrl']=intUtil[_0xb669('0x50')](_0x5228ac[_0xb669('0x51')]);def[_0xb669('0x52')]=util[_0xb669('0x2a')](_0xb669('0x53'),_0x5228ac[_0xb669('0x4f')]);if(_0xf85d94&&_0xf85d94[_0xb669('0x54')]){logger[_0xb669('0xd')](_0xb669('0x55'),_0xb669('0x56'));_0x2697ce['recordingURL']=util[_0xb669('0x2a')](_0xb669('0x57'),_0x5228ac['serverUrl'],_0x2697ce[_0xb669('0x58')],md5(_0x2697ce[_0xb669('0x58')]));}else{_0x2697ce[_0xb669('0x59')]='';}return getConnection(_0x5228ac)['then'](function(_0x38f0d7){_0x3b7439=_0x38f0d7;return getUser(_0x5228ac,_0xacdbf8['name'],_0x3b7439);})['then'](function(_0x25876b){_0x206f40=_0x25876b;logger[_0xb669('0xd')]('The\x20User\x20ID\x20is:',_0x206f40['id']);return getEndUser(_0x5228ac,_0x2697ce[_0xb669('0x5a')],_0x2697ce['calleridnum'],_0x3b7439);})[_0xb669('0x3d')](function(_0x333449){_0x599b2f=_0x333449;logger['info'](_0xb669('0x5b'),_0x599b2f['id']);return getTicket(_0x5228ac,_0x206f40,_0x599b2f,_0x54fb54,_0x2697ce,_0x54fb54[_0xb669('0x5c')],_0x3b7439,_0xb669('0x5d'));})[_0xb669('0x3d')](function(_0x4579a0){_0x1eb8c5=_0x4579a0;logger['info'](_0xb669('0x5e'));logger[_0xb669('0xd')](_0xb669('0x5f'),_0x1eb8c5['id']);return setRelationship(_0x3b7439,_0x206f40,_0x1eb8c5,_0xb669('0x60'));})['then'](function(){return setRelationship(_0x3b7439,_0x599b2f,_0x1eb8c5,_0xb669('0x61'));})['then'](function(){return getServerInfo(_0x3b7439);})[_0xb669('0x3d')](function(_0x1309bc){var _0x4f6d6e=parseInt(_0x1309bc[_0xb669('0x62')][_0xb669('0x63')](0x0));var _0x342a8a=util[_0xb669('0x2a')](_0xb669('0x64'),_0x5228ac[_0xb669('0x4f')],_0x1eb8c5['id']);if(_0x4f6d6e>0x6){_0x342a8a=util[_0xb669('0x2a')](_0xb669('0x65'),_0x5228ac['remoteUri'],_0x1eb8c5['id']);}logger['info'](_0xb669('0x55'),_0xb669('0x66'));emit(util[_0xb669('0x2a')](_0xb669('0x67'),_0xacdbf8[_0xb669('0x2c')]),_0xb669('0x68'),{'uri':_0x342a8a});})[_0xb669('0x69')](function(_0x1350ee){logger[_0xb669('0x6a')](_0xb669('0x55'),JSON[_0xb669('0x21')](_0x1350ee));});};exports[_0xb669('0x6b')]=function(_0x7b0dea,_0x267df6,_0x3bce56,_0x2a0c5c,_0x2f3296,_0x1127e3,_0x2ed693){var _0x29bfda,_0x3262c9,_0x5ad57e,_0x4c6447;_0x1127e3['remoteUri']=intUtil[_0xb669('0x50')](_0x1127e3['remoteUri']);_0x1127e3[_0xb669('0x51')]=intUtil[_0xb669('0x50')](_0x1127e3[_0xb669('0x51')]);def[_0xb669('0x52')]=util['format'](_0xb669('0x53'),_0x1127e3[_0xb669('0x4f')]);if(_0x2ed693&&_0x2ed693[_0xb669('0x6c')]&&_0x2ed693[_0xb669('0x6c')]!==_0xb669('0x6d')){logger[_0xb669('0xd')](_0xb669('0x6e'),_0xb669('0x56'));_0x267df6[_0xb669('0x59')]=util['format'](_0xb669('0x57'),_0x1127e3[_0xb669('0x51')],_0x267df6[_0xb669('0x58')],md5(_0x267df6[_0xb669('0x58')]));}return getConnection(_0x1127e3)[_0xb669('0x3d')](function(_0x22bde8){_0x4c6447=_0x22bde8;return getUser(_0x1127e3,_0x2a0c5c[_0xb669('0x2c')],_0x4c6447);})[_0xb669('0x3d')](function(_0x1cc9a1){_0x29bfda=_0x1cc9a1;logger['info'](_0xb669('0x6f'),_0x29bfda['id']);return getEndUser(_0x1127e3,_0x267df6['destcalleridname'],_0x267df6[_0xb669('0x70')],_0x4c6447);})[_0xb669('0x3d')](function(_0x3341ec){_0x3262c9=_0x3341ec;logger['info']('The\x20Enduser\x20ID\x20is:',_0x3262c9['id']);return getTicket(_0x1127e3,_0x29bfda,_0x3262c9,_0x3bce56,_0x267df6,_0x3bce56[_0xb669('0x5c')],_0x4c6447,_0xb669('0x71'));})[_0xb669('0x3d')](function(_0x5ed4e3){_0x5ad57e=_0x5ed4e3;logger[_0xb669('0xd')](_0xb669('0x5e'));logger[_0xb669('0xd')](_0xb669('0x5f'),_0x5ad57e['id']);return setRelationship(_0x4c6447,_0x29bfda,_0x5ad57e,'users');})[_0xb669('0x3d')](function(){return setRelationship(_0x4c6447,_0x3262c9,_0x5ad57e,'contacts');})[_0xb669('0x3d')](function(){return getServerInfo(_0x4c6447);})[_0xb669('0x3d')](function(_0x126d42){var _0x32cfc4=parseInt(_0x126d42[_0xb669('0x62')][_0xb669('0x63')](0x0));var _0x2a7efc=util[_0xb669('0x2a')](_0xb669('0x64'),_0x1127e3[_0xb669('0x4f')],_0x5ad57e['id']);if(_0x32cfc4>0x6){_0x2a7efc=util[_0xb669('0x2a')](_0xb669('0x65'),_0x1127e3['remoteUri'],_0x5ad57e['id']);}logger['info'](_0xb669('0x6e'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb669('0x2a')]('user:%s',_0x2a0c5c[_0xb669('0x2c')]),'trigger:browser:url',{'uri':_0x2a7efc});})[_0xb669('0x69')](function(_0x17c40b){logger[_0xb669('0x6a')](_0xb669('0x6e'),JSON[_0xb669('0x21')](_0x17c40b));});};exports[_0xb669('0x72')]=function(_0x32bc4f,_0x1aa7b4,_0x4a9e15,_0x241235,_0xd14ac1,_0x129ff8){var _0xa3d47d,_0x2f85b8,_0x393199,_0x103529;_0x129ff8[_0xb669('0x4f')]=intUtil[_0xb669('0x50')](_0x129ff8[_0xb669('0x4f')]);_0x129ff8[_0xb669('0x51')]=intUtil['stripTrailingSlash'](_0x129ff8[_0xb669('0x51')]);def[_0xb669('0x52')]=util[_0xb669('0x2a')](_0xb669('0x53'),_0x129ff8[_0xb669('0x4f')]);if(_0xd14ac1&&_0xd14ac1['monitor_format']){logger[_0xb669('0xd')]('['+_0x1aa7b4['lastevent']['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x1aa7b4[_0xb669('0x59')]=util[_0xb669('0x2a')](_0xb669('0x57'),_0x129ff8[_0xb669('0x51')],_0x1aa7b4[_0xb669('0x58')],md5(_0x1aa7b4[_0xb669('0x58')]));}else{_0x1aa7b4[_0xb669('0x59')]='';}return getConnection(_0x129ff8)['then'](function(_0x33dc50){_0x103529=_0x33dc50;if(!_[_0xb669('0x73')](_0x241235)){return getUser(_0x129ff8,_0x241235[_0xb669('0x2c')],_0x103529);}else{return getUser(_0x129ff8,null,_0x103529);}})[_0xb669('0x3d')](function(_0x20f7f6){_0xa3d47d=_0x20f7f6;logger[_0xb669('0xd')](_0xb669('0x6f'),_0xa3d47d['id']);return getEndUser(_0x129ff8,_0x1aa7b4[_0xb669('0x5a')],_0x1aa7b4['calleridnum'],_0x103529);})['then'](function(_0x400dd0){_0x2f85b8=_0x400dd0;logger['info'](_0xb669('0x5b'),_0x2f85b8['id']);return getTicket(_0x129ff8,_0xa3d47d,_0x2f85b8,_0x4a9e15,_0x1aa7b4,_0x4a9e15[_0xb669('0x5c')],_0x103529,_0xb669('0x5d'));})[_0xb669('0x3d')](function(_0x432fdf){_0x393199=_0x432fdf;logger[_0xb669('0xd')]('Ticket\x20created!');logger[_0xb669('0xd')](_0xb669('0x5f'),_0x393199['id']);return setRelationship(_0x103529,_0xa3d47d,_0x393199,_0xb669('0x60'));})['then'](function(){return setRelationship(_0x103529,_0x2f85b8,_0x393199,_0xb669('0x61'));})[_0xb669('0x3d')](function(){return getServerInfo(_0x103529);})[_0xb669('0x69')](function(_0x10f464){logger[_0xb669('0x6a')]('['+_0x1aa7b4[_0xb669('0x74')][_0xb669('0x75')]()+']',JSON[_0xb669('0x21')](_0x10f464));});};
\ No newline at end of file