Built motion from commit 857c5af.|0.0.124
[motion.git] / server / api / openchannel_room / openchannel_room.controller.js
index 021c420..189c905 100644 (file)
@@ -1 +1 @@
-var _0xe99e=["\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\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x55\x73\x65\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\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x61\x67\x65\x6E\x74","\x69\x64","\x75\x73\x65\x72","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x65\x72\x72","\x6C\x6F\x67","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x55\x73\x65\x72\x49\x64","\x53\x6D\x73\x52\x6F\x6F\x6D\x49\x64","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x61\x67\x65\x6E\x74\x73","\x73\x65\x74\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x2C","\x73\x70\x6C\x69\x74"];_0xe99e[0];var _=require(_0xe99e[1]);var Util=require(_0xe99e[2]);var OpenchannelRoom=require(_0xe99e[4])[_0xe99e[3]];var OpenchannelMessage=require(_0xe99e[4])[_0xe99e[5]];var OpenchannelAccount=require(_0xe99e[4])[_0xe99e[6]];var User=require(_0xe99e[4])[_0xe99e[7]];function handleError(_0xe368x8,_0xe368x9){return _0xe368x8[_0xe99e[9]](500)[_0xe99e[8]](_0xe368x9)}exports[_0xe99e[10]]= function(_0xe368xa,_0xe368x8){switch(_0xe368xa[_0xe99e[19]][_0xe99e[21]]){case _0xe99e[17]:return OpenchannelRoom[_0xe99e[20]](_0xe99e[16],{method:[_0xe99e[17],_0xe368xa[_0xe99e[19]][_0xe99e[18]]]})[_0xe99e[15]](Util[_0xe99e[14]](_0xe368xa[_0xe99e[13]]))[_0xe99e[12]](function(_0xe368xb){return _0xe368x8[_0xe99e[9]](200)[_0xe99e[8]](_0xe368xb)})[_0xe99e[11]](function(_0xe368x9){return handleError(_0xe368x8,_0xe368x9)});default:return OpenchannelRoom[_0xe99e[20]](_0xe99e[16])[_0xe99e[15]](Util[_0xe99e[14]](_0xe368xa[_0xe99e[13]]))[_0xe99e[12]](function(_0xe368xb){return _0xe368x8[_0xe99e[9]](200)[_0xe99e[8]](_0xe368xb)})[_0xe99e[11]](function(_0xe368x9){return handleError(_0xe368x8,_0xe368x9)})}};exports[_0xe99e[22]]= function(_0xe368xa,_0xe368x8){return OpenchannelRoom[_0xe99e[22]]()[_0xe99e[12]](function(_0xe368xc){return _0xe368x8[_0xe99e[9]](200)[_0xe99e[8]](_0xe368xc)})[_0xe99e[11]](function(_0xe368x9){return handleError(_0xe368x8,_0xe368x9)})};exports[_0xe99e[23]]= function(_0xe368xa,_0xe368x8){return OpenchannelRoom[_0xe99e[20]](_0xe99e[16])[_0xe99e[26]](_0xe368xa[_0xe99e[25]][_0xe99e[18]])[_0xe99e[12]](function(_0xe368xd){if(!_0xe368xd){return _0xe368x8[_0xe99e[24]](404)};return _0xe368x8[_0xe99e[8]](_0xe368xd)})[_0xe99e[11]](function(_0xe368x9){return handleError(_0xe368x8,_0xe368x9)})};exports[_0xe99e[27]]= function(_0xe368xa,_0xe368x8,_0xe368xe){return OpenchannelRoom[_0xe99e[26]](_0xe368xa[_0xe99e[25]][_0xe99e[18]])[_0xe99e[12]](function(_0xe368xd){if(!_0xe368xd){return _0xe368x8[_0xe99e[24]](404)};return _0xe368xd[_0xe99e[32]]({attributes:[_0xe99e[18],_0xe99e[28],_0xe99e[29],_0xe99e[30],_0xe99e[21],_0xe99e[31]]})})[_0xe99e[12]](function(_0xe368xf){return _0xe368x8[_0xe99e[8]](_0xe368xf)})[_0xe99e[11]](function(_0xe368x9){return handleError(_0xe368x8,_0xe368x9)})};exports[_0xe99e[33]]= function(_0xe368xa,_0xe368x8,_0xe368xe){return OpenchannelMessage[_0xe99e[26]](_0xe368xa[_0xe99e[25]][_0xe99e[18]])[_0xe99e[12]](function(_0xe368x10){return _0xe368x10[_0xe99e[36]]({include:[{model:OpenchannelAccount},{model:OpenchannelMessage,include:[{model:User,attributes:[_0xe99e[18],_0xe99e[28],_0xe99e[29],_0xe99e[30]]}]},{model:User,attributes:[_0xe99e[18],_0xe99e[28],_0xe99e[29],_0xe99e[30]]}]})})[_0xe99e[12]](function(_0xe368xd){return _0xe368x8[_0xe99e[8]](_0xe368xd)})[_0xe99e[11]](function(_0xe368x9){console[_0xe99e[35]](_0xe99e[34],_0xe368x9);return handleError(_0xe368x8,_0xe368x9)})};exports[_0xe99e[37]]= function(_0xe368xa,_0xe368x8){return OpenchannelRoom[_0xe99e[37]](_0xe368xa[_0xe99e[38]])[_0xe99e[12]](function(_0xe368x10){return _0xe368x8[_0xe99e[9]](201)[_0xe99e[8]](_0xe368x10)})[_0xe99e[11]](function(_0xe368x9){return handleError(_0xe368x8,_0xe368x9)})};exports[_0xe99e[39]]= function(_0xe368xa,_0xe368x8,_0xe368xe){_0xe368xa[_0xe99e[38]][_0xe99e[40]]= _0xe368xa[_0xe99e[19]][_0xe99e[18]];_0xe368xa[_0xe99e[38]][_0xe99e[41]]= _0xe368xa[_0xe99e[25]][_0xe99e[18]];return OpenchannelMessage[_0xe99e[37]](_0xe368xa[_0xe99e[38]])[_0xe99e[12]](function(_0xe368x10){return _0xe368x8[_0xe99e[9]](201)[_0xe99e[8]](_0xe368x10)})[_0xe99e[11]](function(_0xe368x9){return handleError(_0xe368x8,_0xe368x9)})};exports[_0xe99e[42]]= function(_0xe368xa,_0xe368x8){if(_0xe368xa[_0xe99e[38]][_0xe99e[18]]){delete _0xe368xa[_0xe99e[38]][_0xe99e[18]]};return OpenchannelRoom[_0xe99e[26]](_0xe368xa[_0xe99e[25]][_0xe99e[18]])[_0xe99e[12]](function(_0xe368xd){if(!_0xe368xd){return _0xe368x8[_0xe99e[24]](404)};var _0xe368x11=_[_0xe99e[43]](_0xe368xd,_0xe368xa[_0xe99e[38]]);return _0xe368x11[_0xe99e[44]]()})[_0xe99e[12]](function(_0xe368xd){return _0xe368x8[_0xe99e[9]](200)[_0xe99e[8]](_0xe368xd)})[_0xe99e[11]](function(_0xe368x9){return handleError(_0xe368x8,_0xe368x9)})};exports[_0xe99e[45]]= function(_0xe368xa,_0xe368x8,_0xe368xe){return OpenchannelRoom[_0xe99e[26]](_0xe368xa[_0xe99e[25]][_0xe99e[18]])[_0xe99e[12]](function(_0xe368xd){if(!_0xe368xd){return _0xe368x8[_0xe99e[24]](404)};return _0xe368xd[_0xe99e[47]](_0xe368xa[_0xe99e[38]][_0xe99e[46]],{individualHooks:true})})[_0xe99e[12]](function(){return _0xe368x8[_0xe99e[24]](200)})[_0xe99e[11]](function(_0xe368x9){return handleError(_0xe368x8,_0xe368x9)})};exports[_0xe99e[48]]= function(_0xe368xa,_0xe368x8){return OpenchannelRoom[_0xe99e[26]](_0xe368xa[_0xe99e[25]][_0xe99e[18]])[_0xe99e[12]](function(_0xe368xd){if(!_0xe368xd){return _0xe368x8[_0xe99e[24]](404)};return _0xe368xd[_0xe99e[48]]()})[_0xe99e[12]](function(){return _0xe368x8[_0xe99e[24]](204)})[_0xe99e[11]](function(_0xe368x9){return handleError(_0xe368x8,_0xe368x9)})};exports[_0xe99e[49]]= function(_0xe368xa,_0xe368x8){return OpenchannelRoom[_0xe99e[48]]({where:{id:_0xe368xa[_0xe99e[13]][_0xe99e[50]]},individualHooks:true})[_0xe99e[12]](function(){return _0xe368x8[_0xe99e[24]](200)})[_0xe99e[11]](function(_0xe368x9){return handleError(_0xe368x8,_0xe368x9)})};exports[_0xe99e[51]]= function(_0xe368xa,_0xe368x8,_0xe368xe){var _0xe368x12={where:{id:_0xe368xa[_0xe99e[25]][_0xe99e[18]][_0xe99e[53]](_0xe99e[52])},user:_0xe368xa[_0xe99e[19]],individualHooks:true};return OpenchannelRoom[_0xe99e[42]](_0xe368xa[_0xe99e[38]],_0xe368x12)[_0xe99e[12]](function(_0xe368x13){if(!_0xe368x13){return _0xe368x8[_0xe99e[24]](404)};return _0xe368x13})[_0xe99e[12]](function(_0xe368x13){return _0xe368x8[_0xe99e[24]](200)})[_0xe99e[11]](function(_0xe368x9){return handleError(_0xe368x8,_0xe368x9)})}
\ No newline at end of file
+var _0x5cac=["\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\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x55\x73\x65\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\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x61\x67\x65\x6E\x74","\x69\x64","\x75\x73\x65\x72","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x65\x72\x72","\x6C\x6F\x67","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x55\x73\x65\x72\x49\x64","\x53\x6D\x73\x52\x6F\x6F\x6D\x49\x64","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x61\x67\x65\x6E\x74\x73","\x73\x65\x74\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x2C","\x73\x70\x6C\x69\x74"];_0x5cac[0];var _=require(_0x5cac[1]);var Util=require(_0x5cac[2]);var OpenchannelRoom=require(_0x5cac[4])[_0x5cac[3]];var OpenchannelMessage=require(_0x5cac[4])[_0x5cac[5]];var OpenchannelAccount=require(_0x5cac[4])[_0x5cac[6]];var User=require(_0x5cac[4])[_0x5cac[7]];function handleError(_0x916bx8,_0x916bx9){return _0x916bx8[_0x5cac[9]](500)[_0x5cac[8]](_0x916bx9)}exports[_0x5cac[10]]= function(_0x916bxa,_0x916bx8){switch(_0x916bxa[_0x5cac[19]][_0x5cac[21]]){case _0x5cac[17]:return OpenchannelRoom[_0x5cac[20]](_0x5cac[16],{method:[_0x5cac[17],_0x916bxa[_0x5cac[19]][_0x5cac[18]]]})[_0x5cac[15]](Util[_0x5cac[14]](_0x916bxa[_0x5cac[13]]))[_0x5cac[12]](function(_0x916bxb){return _0x916bx8[_0x5cac[9]](200)[_0x5cac[8]](_0x916bxb)})[_0x5cac[11]](function(_0x916bx9){return handleError(_0x916bx8,_0x916bx9)});default:return OpenchannelRoom[_0x5cac[20]](_0x5cac[16])[_0x5cac[15]](Util[_0x5cac[14]](_0x916bxa[_0x5cac[13]]))[_0x5cac[12]](function(_0x916bxb){return _0x916bx8[_0x5cac[9]](200)[_0x5cac[8]](_0x916bxb)})[_0x5cac[11]](function(_0x916bx9){return handleError(_0x916bx8,_0x916bx9)})}};exports[_0x5cac[22]]= function(_0x916bxa,_0x916bx8){return OpenchannelRoom[_0x5cac[22]]()[_0x5cac[12]](function(_0x916bxc){return _0x916bx8[_0x5cac[9]](200)[_0x5cac[8]](_0x916bxc)})[_0x5cac[11]](function(_0x916bx9){return handleError(_0x916bx8,_0x916bx9)})};exports[_0x5cac[23]]= function(_0x916bxa,_0x916bx8){return OpenchannelRoom[_0x5cac[20]](_0x5cac[16])[_0x5cac[26]](_0x916bxa[_0x5cac[25]][_0x5cac[18]])[_0x5cac[12]](function(_0x916bxd){if(!_0x916bxd){return _0x916bx8[_0x5cac[24]](404)};return _0x916bx8[_0x5cac[8]](_0x916bxd)})[_0x5cac[11]](function(_0x916bx9){return handleError(_0x916bx8,_0x916bx9)})};exports[_0x5cac[27]]= function(_0x916bxa,_0x916bx8,_0x916bxe){return OpenchannelRoom[_0x5cac[26]](_0x916bxa[_0x5cac[25]][_0x5cac[18]])[_0x5cac[12]](function(_0x916bxd){if(!_0x916bxd){return _0x916bx8[_0x5cac[24]](404)};return _0x916bxd[_0x5cac[32]]({attributes:[_0x5cac[18],_0x5cac[28],_0x5cac[29],_0x5cac[30],_0x5cac[21],_0x5cac[31]]})})[_0x5cac[12]](function(_0x916bxf){return _0x916bx8[_0x5cac[8]](_0x916bxf)})[_0x5cac[11]](function(_0x916bx9){return handleError(_0x916bx8,_0x916bx9)})};exports[_0x5cac[33]]= function(_0x916bxa,_0x916bx8,_0x916bxe){return OpenchannelMessage[_0x5cac[26]](_0x916bxa[_0x5cac[25]][_0x5cac[18]])[_0x5cac[12]](function(_0x916bx10){return _0x916bx10[_0x5cac[36]]({include:[{model:OpenchannelAccount},{model:OpenchannelMessage,include:[{model:User,attributes:[_0x5cac[18],_0x5cac[28],_0x5cac[29],_0x5cac[30]]}]},{model:User,attributes:[_0x5cac[18],_0x5cac[28],_0x5cac[29],_0x5cac[30]]}]})})[_0x5cac[12]](function(_0x916bxd){return _0x916bx8[_0x5cac[8]](_0x916bxd)})[_0x5cac[11]](function(_0x916bx9){console[_0x5cac[35]](_0x5cac[34],_0x916bx9);return handleError(_0x916bx8,_0x916bx9)})};exports[_0x5cac[37]]= function(_0x916bxa,_0x916bx8){return OpenchannelRoom[_0x5cac[37]](_0x916bxa[_0x5cac[38]])[_0x5cac[12]](function(_0x916bx10){return _0x916bx8[_0x5cac[9]](201)[_0x5cac[8]](_0x916bx10)})[_0x5cac[11]](function(_0x916bx9){return handleError(_0x916bx8,_0x916bx9)})};exports[_0x5cac[39]]= function(_0x916bxa,_0x916bx8,_0x916bxe){_0x916bxa[_0x5cac[38]][_0x5cac[40]]= _0x916bxa[_0x5cac[19]][_0x5cac[18]];_0x916bxa[_0x5cac[38]][_0x5cac[41]]= _0x916bxa[_0x5cac[25]][_0x5cac[18]];return OpenchannelMessage[_0x5cac[37]](_0x916bxa[_0x5cac[38]])[_0x5cac[12]](function(_0x916bx10){return _0x916bx8[_0x5cac[9]](201)[_0x5cac[8]](_0x916bx10)})[_0x5cac[11]](function(_0x916bx9){return handleError(_0x916bx8,_0x916bx9)})};exports[_0x5cac[42]]= function(_0x916bxa,_0x916bx8){if(_0x916bxa[_0x5cac[38]][_0x5cac[18]]){delete _0x916bxa[_0x5cac[38]][_0x5cac[18]]};return OpenchannelRoom[_0x5cac[26]](_0x916bxa[_0x5cac[25]][_0x5cac[18]])[_0x5cac[12]](function(_0x916bxd){if(!_0x916bxd){return _0x916bx8[_0x5cac[24]](404)};var _0x916bx11=_[_0x5cac[43]](_0x916bxd,_0x916bxa[_0x5cac[38]]);return _0x916bx11[_0x5cac[44]]()})[_0x5cac[12]](function(_0x916bxd){return _0x916bx8[_0x5cac[9]](200)[_0x5cac[8]](_0x916bxd)})[_0x5cac[11]](function(_0x916bx9){return handleError(_0x916bx8,_0x916bx9)})};exports[_0x5cac[45]]= function(_0x916bxa,_0x916bx8,_0x916bxe){return OpenchannelRoom[_0x5cac[26]](_0x916bxa[_0x5cac[25]][_0x5cac[18]])[_0x5cac[12]](function(_0x916bxd){if(!_0x916bxd){return _0x916bx8[_0x5cac[24]](404)};return _0x916bxd[_0x5cac[47]](_0x916bxa[_0x5cac[38]][_0x5cac[46]],{individualHooks:true})})[_0x5cac[12]](function(){return _0x916bx8[_0x5cac[24]](200)})[_0x5cac[11]](function(_0x916bx9){return handleError(_0x916bx8,_0x916bx9)})};exports[_0x5cac[48]]= function(_0x916bxa,_0x916bx8){return OpenchannelRoom[_0x5cac[26]](_0x916bxa[_0x5cac[25]][_0x5cac[18]])[_0x5cac[12]](function(_0x916bxd){if(!_0x916bxd){return _0x916bx8[_0x5cac[24]](404)};return _0x916bxd[_0x5cac[48]]()})[_0x5cac[12]](function(){return _0x916bx8[_0x5cac[24]](204)})[_0x5cac[11]](function(_0x916bx9){return handleError(_0x916bx8,_0x916bx9)})};exports[_0x5cac[49]]= function(_0x916bxa,_0x916bx8){return OpenchannelRoom[_0x5cac[48]]({where:{id:_0x916bxa[_0x5cac[13]][_0x5cac[50]]},individualHooks:true})[_0x5cac[12]](function(){return _0x916bx8[_0x5cac[24]](200)})[_0x5cac[11]](function(_0x916bx9){return handleError(_0x916bx8,_0x916bx9)})};exports[_0x5cac[51]]= function(_0x916bxa,_0x916bx8,_0x916bxe){var _0x916bx12={where:{id:_0x916bxa[_0x5cac[25]][_0x5cac[18]][_0x5cac[53]](_0x5cac[52])},user:_0x916bxa[_0x5cac[19]],individualHooks:true};return OpenchannelRoom[_0x5cac[42]](_0x916bxa[_0x5cac[38]],_0x916bx12)[_0x5cac[12]](function(_0x916bx13){if(!_0x916bx13){return _0x916bx8[_0x5cac[24]](404)};return _0x916bx13})[_0x5cac[12]](function(_0x916bx13){return _0x916bx8[_0x5cac[24]](200)})[_0x5cac[11]](function(_0x916bx9){return handleError(_0x916bx8,_0x916bx9)})}
\ No newline at end of file