From 860db58c9483c04ecb90a761119f312ad3cb6734 Mon Sep 17 00:00:00 2001 From: Undercova PSWG Date: Tue, 18 Aug 2015 16:19:27 +0000 Subject: [PATCH 01/18] Added new file for starting locations --- serverdata/map/starting_locations.sdb | 31 +++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 serverdata/map/starting_locations.sdb diff --git a/serverdata/map/starting_locations.sdb b/serverdata/map/starting_locations.sdb new file mode 100644 index 000000000..4e80ff632 --- /dev/null +++ b/serverdata/map/starting_locations.sdb @@ -0,0 +1,31 @@ +description planet building cell x y z +TEXT PRIMARY KEY TEXT NOT NULL INTEGER NOT NULL INTEGER NOT NULL INTEGER NOT NULL INTEGER NOT NULL INTEGER NOT NULL +coronet corellia -177 28 -4725 +vreni_island corellia -5459 23 -6239 +mining_outpost dantooine -614 3 2527 +warren dantooine -560 1 -3808 +aurilia dathomir 5304 78 -4135 +imperial_prison dathomir -6253 120 967 +dwb endor 5996314 4 0,87 12 30,98 +kachirho kashyyyyk_main 244 41 466 +imp_outpost lok -1759 12 -3085 +nym lok 420 7 5267 +nym_sp lok 424 5 5457 +deeja_peak naboo 5170 346 -1489 +kaadara naboo 5204 -192 6677 +keren naboo 1525 25 2765 +moenia naboo 4803 4 -4700 +theed naboo -4866 6 4154 +theed_palace naboo -5496 6 4369 +restuss rori 5289 80 6131 +dearic talus 336 6 -2930 +imp_outpost talus -2185 20 2287 +bestine tatooine -1284 12 -3591 +fort_tusken tatooine -3982 60 6313 +jabbas_inside tatooine 1177465 22 -10,28 2 43,95 +jabbas_outside tatooine -5846 90 -6182 +mos_eisley tatooine 3525 4 -4807 +mos_entha tatooine 1290 7 3138 +mos_espa tatooine -2907 5 2130 +mos_taike tatooine 3865 28 2353 +dark_enclave yavin4 3435626 17 -0,32 -47,42 -74,92 \ No newline at end of file From 776f67151914e06f6506b0f5838f7cacc1e0ead0 Mon Sep 17 00:00:00 2001 From: Undercova PSWG Date: Tue, 18 Aug 2015 16:50:26 +0000 Subject: [PATCH 02/18] Added starting locations --- serverdata/map/starting_locations.sdb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serverdata/map/starting_locations.sdb b/serverdata/map/starting_locations.sdb index 4e80ff632..16254bc43 100644 --- a/serverdata/map/starting_locations.sdb +++ b/serverdata/map/starting_locations.sdb @@ -1,5 +1,5 @@ description planet building cell x y z -TEXT PRIMARY KEY TEXT NOT NULL INTEGER NOT NULL INTEGER NOT NULL INTEGER NOT NULL INTEGER NOT NULL INTEGER NOT NULL +TEXT PRIMARY KEY TEXT NOT NULL INTEGER TEXT INTEGER NOT NULL INTEGER NOT NULL INTEGER NOT NULL coronet corellia -177 28 -4725 vreni_island corellia -5459 23 -6239 mining_outpost dantooine -614 3 2527 From ab3448edee53c6dfb8f2715ed6384edf6da1ba98 Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Fri, 21 Aug 2015 17:32:59 -0500 Subject: [PATCH 03/18] Fixed logging when player is banned --- src/services/player/LoginService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/player/LoginService.java b/src/services/player/LoginService.java index ad63d82f2..903dd82a5 100644 --- a/src/services/player/LoginService.java +++ b/src/services/player/LoginService.java @@ -228,7 +228,7 @@ public class LoginService extends Service { String message = "Sorry, you're banned!"; sendPacket(player.getNetworkId(), new ErrorMessage(type, message, false)); System.err.println("[" + id.getUsername() + "] Can't login - Banned! IP: " + id.getAddress() + ":" + id.getPort()); - Log.i("LoginService", "%s cannot login due to a ban, from %s:%d", id.getAddress(), id.getPort()); + Log.i("LoginService", "%s cannot login due to a ban, from %s:%d", player.getUsername(), id.getAddress(), id.getPort()); player.setPlayerState(PlayerState.DISCONNECTED); new LoginEventIntent(player.getNetworkId(), LoginEvent.LOGIN_FAIL_BANNED).broadcast(); } From d6e6240ea23ea283153a620a1eac2b66e9a4f80d Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Mon, 24 Aug 2015 17:16:15 -0500 Subject: [PATCH 04/18] Fixed null pointer exception in handling player disappear in ObjectManager --- src/services/objects/ObjectManager.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/services/objects/ObjectManager.java b/src/services/objects/ObjectManager.java index 2d586f155..47fb7830e 100644 --- a/src/services/objects/ObjectManager.java +++ b/src/services/objects/ObjectManager.java @@ -275,6 +275,8 @@ public class ObjectManager extends Manager { Player p = ((PlayerEventIntent)i).getPlayer(); switch (((PlayerEventIntent)i).getEvent()) { case PE_DISAPPEAR: + if (p.getCreatureObject() == null) + break; p.getCreatureObject().clearAware(); objectAwareness.remove(p.getCreatureObject()); for (SWGObject obj : p.getCreatureObject().getObservers()) From 93cac8e9713f2e1162abd52331839ec04ccf109f Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Mon, 24 Aug 2015 17:27:45 -0500 Subject: [PATCH 05/18] Basic HTTPS server --- res/webserver/favicon.ico | Bin 0 -> 1150 bytes res/webserver/index.html | 81 ++++++ res/webserver/log.html | 1 + res/webserver/online_players.html | 0 res/webserver/server_info.html | 12 + server.keystore | Bin 0 -> 2252 bytes src/resources/control/Manager.java | 36 +-- src/resources/control/ServerManager.java | 222 --------------- .../control/ServerPublicInterface.java | 191 ------------- src/resources/control/Service.java | 4 +- src/services/CoreManager.java | 7 +- .../admin/OnlineInterfaceService.java | 153 ++++++++++ src/services/admin/WebserverData.java | 60 ++++ src/services/admin/WebserverHandler.java | 205 ++++++++++++++ src/services/admin/http/HttpImageType.java | 7 + src/services/admin/http/HttpServer.java | 196 +++++++++++++ src/services/admin/http/HttpSocket.java | 263 ++++++++++++++++++ src/services/admin/http/HttpStatusCode.java | 48 ++++ src/services/admin/http/HttpsServer.java | 81 ++++++ src/services/player/LoginService.java | 2 +- 20 files changed, 1124 insertions(+), 445 deletions(-) create mode 100644 res/webserver/favicon.ico create mode 100644 res/webserver/index.html create mode 100644 res/webserver/log.html create mode 100644 res/webserver/online_players.html create mode 100644 res/webserver/server_info.html create mode 100644 server.keystore delete mode 100644 src/resources/control/ServerManager.java delete mode 100644 src/resources/control/ServerPublicInterface.java create mode 100644 src/services/admin/OnlineInterfaceService.java create mode 100644 src/services/admin/WebserverData.java create mode 100644 src/services/admin/WebserverHandler.java create mode 100644 src/services/admin/http/HttpImageType.java create mode 100644 src/services/admin/http/HttpServer.java create mode 100644 src/services/admin/http/HttpSocket.java create mode 100644 src/services/admin/http/HttpStatusCode.java create mode 100644 src/services/admin/http/HttpsServer.java diff --git a/res/webserver/favicon.ico b/res/webserver/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..5d39b59fef6347c161d83ce639f12138a2b39761 GIT binary patch literal 1150 zcmZ{kA#Xxa428RF$#4U~5(LSDAPWM6Kp-9hfk0po2n2>K2m}T}GG2l~AP^V?0)gR2 zz<$bp$dc}UWnCUGfu-wR={fB=_hupw;U}Aw@cT_Zow2+wES!)oL{*7mGy;&d%3vw=ZcNe^akktJ-KZ zbT}O9U@*|hWMUb(=iTsJiNv}@B|MOJEEd}9_2}1pK5x0-@0&mFC%b@ME|FYy{=X(<8QTEb_eM9yFmwd z<}!y}@sRUov(eM(q=&=7?t?pFCRlbx5AOp!{b>F3Mwx|vG=V3BXK%0`aNq-Y_Jp4v z?gLM#qk~;I!%GjrZ1)gP!ISX^zqm7Wp#eYfhy8pe-f{m#(0pNk_H-UH{(;9+=Hrde zbgbv#-31K0I?ny0j(*-ZyQkl8k^|lB!p;P9c?Y~dG~dHIhrda@BJdL3_xApYM82Oz Zz8*#5M1+4PH=j8C9f!X7<=P7d>@R=-FeCr~ literal 0 HcmV?d00001 diff --git a/res/webserver/index.html b/res/webserver/index.html new file mode 100644 index 000000000..fafa95f75 --- /dev/null +++ b/res/webserver/index.html @@ -0,0 +1,81 @@ + + + Game Server Diagnostics + + + + + + +
+
+
+ Memory Usage:
+ +
+ +
+ +
+ + diff --git a/res/webserver/log.html b/res/webserver/log.html new file mode 100644 index 000000000..0b63a57ff --- /dev/null +++ b/res/webserver/log.html @@ -0,0 +1 @@ +${LOG} diff --git a/res/webserver/online_players.html b/res/webserver/online_players.html new file mode 100644 index 000000000..e69de29bb diff --git a/res/webserver/server_info.html b/res/webserver/server_info.html new file mode 100644 index 000000000..b3397edab --- /dev/null +++ b/res/webserver/server_info.html @@ -0,0 +1,12 @@ + +
+${ONLINE_PLAYERS} +
diff --git a/server.keystore b/server.keystore new file mode 100644 index 0000000000000000000000000000000000000000..45136856e289bcf561a29a88872453e8405ff659 GIT binary patch literal 2252 zcmc&#`8O1d8lKI_I<{-g$TyZuV#by=vJE5K$P($BkugnV-;yOmW?W=1%h+x?mg%G5AF}o56^SnbKdtn?|Yv2VC7&1004lF0Q?)!5MppR zG5CnuyR@pn001r!iUK)62|{^KL4gn;5+n=+aseO|$Ra>U^H23c`a$rLT>Nm;#Y>O) zjgy=(kMPJ0gQCd8lvI*fOQh@_0_~wji%U|VcYAuM5*O=m5Qmi6hGfv)z~a?c!# zBnB;;UYMri`dT|bSvy;6?Ktct4pUF6-+kxWv)B|fawT!T$?ukra$P!R6s3+XBM%0N?l9Ex9`uxc$;|5Y$qc2i#4^RWo)uL zF!tb?Av&r|4srZAf20{HXfVQk(kjEFM|JI~m=RT$o~gJq7N^S{uumAXLReVDGE3qU@p`&yX0imclU7#U=B z<~e+qINuBQvp6}~$Ceq)MooE2YbukL^yjJ%_+EQCu7TEcnNUbz z!NMJ}(_U~lasRJu{=f`!JN&Q-SsT(YG1a_sIzcEmj^MJa^3_eMPGVABFQUyC21qp) zZk+Y!Tc;&Gtel^M;u?Px)~;GOKO`Mu1bRG;r~s2@-To?aZks7Dj6d4WS<$@FF1I0{k?&@mG*-$ zo|LFpnFT3FL#f|0~aw zOJ53#UdU&we$%tU=!oT(x^Hdbe~~!DJpy>z1L}o;R@1(r_Y^IufzZw(3o4kp_=pBSu<2C7LZ> z4ECssik_QjwCbSQ`VDWWR_TM-{6$QLvEXi+oY26-)tlE!cd8JkWp`3GBjMF__Z-=C zGUFHW;v4E(+w|ri>qwu)o0LMWy(^i1wqo2l`WN47W(IT*Aw;7)fgIufi*7)aTSGh3 zcPVF}EbPo%KmRFcNabPldIQ!&IoEdimh=pn9$}1Zq+#ve#4aAI4A|i(TBr%B>f8?H zei1|9*0s~tAJ&P)Y;djiF(KO*T6FFL`jTTseA;$nYshXR{D?35*XU7jAye0s(ogh?msIdLk7}0b-XbcU zN`lD!c)@bHH)T<^e%fjAGK|*z^}xr))o@!-VUDBmi+Jq8%@rK}P4bP~Wj7uxgLUvP zU6nJc3;TVl1ojPaUXX3`&zuD>HPQvlmkc{uVX8V7c^0q5Nj?DS6eaLY# z7tZHgnO)96gJs=54>*}0*i5f&3}AaYhQ|b4Ti4AxL25OI28<tuh@Rl@cEiM*n`4#5G}h*v_LTrp@dl*sQ&K2bh% zVmQ$+An-cTKNJl+>UgArMWOaysXBmx1A%&D{*^N>q-`)YYIQy&*YEH5cRtaaAaR_se{pl-( zpd(|tCFgY^3#*6#&7U^vQT2ej=%Ac&v-_~EZR3cAI_Wra2OQe3N>XlfL|@80=g!b! zk%)c6HIg1FZ1EVTF$fF<0L$f3awyrORmuuN#35p_6#Fm^popTn3)N$PV#X$&H2Bgs8}E1e)j^nZP61s`AxGWB{6BMXm2W5*I^A$HD^h88 zLlMh!3RqjP6)rutnbPB9Vf6>3K<=b+sJt2NGY74#U_}k4Kk0*P^V0PV`>Q`WEFp#( z%Qz_a1ge6dAs!n(9C`e))jXl*^PhCxac7^cNz;jRbD8kW=`X$$voZ^kKL)yQjlE(p zrR?&lfv(o7zI_?b7(+i6>u1}d4%MQEN>f!{hqU0+WE&P-lOPvQoSr6UG*FBf<6v{r z#{)#8RPQ>fVN{VHw=DuwY*#XYpNs#p7L_Y%NVB9aD|f%ScqX;ncXcYLS63iHgf=iF bUDE`tiq|4kCY2zSZbyU1^CTnswFCbGeJ0e* literal 0 HcmV?d00001 diff --git a/src/resources/control/Manager.java b/src/resources/control/Manager.java index 6b1b01749..c4219e4e4 100644 --- a/src/resources/control/Manager.java +++ b/src/resources/control/Manager.java @@ -37,7 +37,6 @@ import java.util.List; */ public abstract class Manager extends Service { - private static final ServerManager serverManager = ServerManager.getInstance(); private List children; public Manager() { @@ -52,19 +51,13 @@ public abstract class Manager extends Service { */ @Override public boolean initialize() { - boolean success = super.initialize(), cSuccess = true; - long start = 0, end = 0; + boolean success = super.initialize(); synchronized (children) { for (Service child : children) { - if (!success) - break; - start = System.nanoTime(); - cSuccess = child.initialize(); - end = System.nanoTime(); - serverManager.setServiceInitTime(child, (end-start)/1E6, cSuccess); - if (!cSuccess) { + if (!child.initialize()) { System.err.println(child.getClass().getSimpleName() + " failed to initialize!"); success = false; + break; } } } @@ -79,19 +72,13 @@ public abstract class Manager extends Service { */ @Override public boolean start() { - boolean success = super.start(), cSuccess = true; - long start = 0, end = 0; + boolean success = super.start(); synchronized (children) { for (Service child : children) { - if (!success) - break; - start = System.nanoTime(); - cSuccess = child.start(); - end = System.nanoTime(); - serverManager.setServiceStartTime(child, (end-start)/1E6, cSuccess); - if (!cSuccess) { + if (!child.start()) { System.err.println(child.getClass().getSimpleName() + " failed to start!"); success = false; + break; } } } @@ -129,15 +116,10 @@ public abstract class Manager extends Service { */ @Override public boolean terminate() { - boolean success = super.terminate(), cSuccess = true; - long start = 0, end = 0; + boolean success = super.terminate(); synchronized (children) { for (Service child : children) { - start = System.nanoTime(); - cSuccess = child.terminate(); - end = System.nanoTime(); - serverManager.setServiceTerminateTime(child, (end-start)/1E6, cSuccess); - if (!cSuccess) + if (!child.terminate()) success = false; } } @@ -174,7 +156,6 @@ public abstract class Manager extends Service { if (s == child || s.equals(child)) return; } - serverManager.addChild(this, s); children.add(s); } } @@ -187,7 +168,6 @@ public abstract class Manager extends Service { if (s == null) return; synchronized (children) { - serverManager.removeChild(this, s); children.remove(s); } } diff --git a/src/resources/control/ServerManager.java b/src/resources/control/ServerManager.java deleted file mode 100644 index a1cb20412..000000000 --- a/src/resources/control/ServerManager.java +++ /dev/null @@ -1,222 +0,0 @@ -/*********************************************************************************** -* Copyright (c) 2015 /// Project SWG /// www.projectswg.com * -* * -* ProjectSWG is the first NGE emulator for Star Wars Galaxies founded on * -* July 7th, 2011 after SOE announced the official shutdown of Star Wars Galaxies. * -* Our goal is to create an emulator which will provide a server for players to * -* continue playing a game similar to the one they used to play. We are basing * -* it on the final publish of the game prior to end-game events. * -* * -* This file is part of Holocore. * -* * -* -------------------------------------------------------------------------------- * -* * -* Holocore is free software: you can redistribute it and/or modify * -* it under the terms of the GNU Affero General Public License as * -* published by the Free Software Foundation, either version 3 of the * -* License, or (at your option) any later version. * -* * -* Holocore is distributed in the hope that it will be useful, * -* but WITHOUT ANY WARRANTY; without even the implied warranty of * -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -* GNU Affero General Public License for more details. * -* * -* You should have received a copy of the GNU Affero General Public License * -* along with Holocore. If not, see . * -* * -***********************************************************************************/ -package resources.control; - -import intents.server.ServerStatusIntent; - -import java.nio.ByteBuffer; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import resources.control.Service; - -/** - * Might be best to keep this protected, from a server security standpoint - */ -final class ServerManager implements IntentReceiver { - - private static final ServerManager INSTANCE = new ServerManager(); - - private final Map serviceStats; - private ServerStatus status; - - private ServerManager() { - serviceStats = new HashMap(); - status = ServerStatus.OFFLINE; - ServerPublicInterface.initialize(this); - IntentManager.getInstance().registerForIntent(ServerStatusIntent.TYPE, this); - } - - public static final ServerManager getInstance() { - return INSTANCE; - } - - public void onIntentReceived(Intent i) { - if (i instanceof ServerStatusIntent) - processServerStatusIntent((ServerStatusIntent) i); - } - - public boolean initialize() { - ServerPublicInterface.initialize(this); - return true; - } - - public boolean terminate() { - ServerPublicInterface.terminate(); - return true; - } - - public void addChild(Service parent, Service child) { - getServiceStats(parent).addChild(getServiceStats(child)); - } - - public void removeChild(Service parent, Service child) { - getServiceStats(parent).removeChild(getServiceStats(child)); - } - - public void setServiceInitTime(Service service, double timeMilliseconds, boolean success) { - getServiceStats(service).addInitTime(timeMilliseconds, success); - } - - public void setServiceStartTime(Service service, double timeMilliseconds, boolean success) { - getServiceStats(service).addStartTime(timeMilliseconds, success); - } - - public void setServiceTerminateTime(Service service, double timeMilliseconds, boolean success) { - getServiceStats(service).addTerminateTime(timeMilliseconds, success); - } - - private void processServerStatusIntent(ServerStatusIntent i) { - status = i.getStatus(); - } - - public byte [] serializeControlTimes() { - synchronized (serviceStats) { - int size = 0; - for (ServiceStats stats : serviceStats.values()) - size += stats.getSerializeSize(); - ByteBuffer data = ByteBuffer.allocate(size); - for (ServiceStats stats : serviceStats.values()) - data.put(stats.serialize()); - return data.array(); - } - } - - public ServerStatus getServerStatus() { - return status; - } - - private ServiceStats getServiceStats(Service service) { - synchronized (serviceStats) { - ServiceStats stats = serviceStats.get(service.getClass().getName()); - if (stats == null) { - stats = new ServiceStats(service); - serviceStats.put(service.getClass().getName(), stats); - } - return stats; - } - } - - private static class ServiceStats { - private final Service service; - private final List initTimes; - private final List startTimes; - private final List terminateTimes; - private final List children; - - public ServiceStats(Service service) { - this.service = service; - initTimes = new ArrayList(); - startTimes = new ArrayList(); - terminateTimes = new ArrayList(); - children = new ArrayList(); - } - - public void addChild(ServiceStats service) { - children.add(service); - } - - public void removeChild(ServiceStats service) { - children.remove(service); - } - - public void addInitTime(double time, boolean success) { - initTimes.add(new ServiceControlTime(time, success)); - } - - public void addStartTime(double time, boolean success) { - startTimes.add(new ServiceControlTime(time, success)); - } - - public void addTerminateTime(double time, boolean success) { - terminateTimes.add(new ServiceControlTime(time, success)); - } - - public int getSerializeSize() { - return 2 + service.getClass().getName().length() + 9*3; - } - - public byte [] serialize() { - String name = service.getClass().getName(); - ByteBuffer data = ByteBuffer.allocate(getSerializeSize()); - data.putShort((short) name.length()); - data.put(name.getBytes(Charset.forName("UTF-8"))); - serializeLastControlTime(data, initTimes); - serializeLastControlTime(data, startTimes); - serializeLastControlTime(data, terminateTimes); - return data.array(); - } - - private void serializeLastControlTime(ByteBuffer data, List times) { - if (initTimes.size() > times.size() || times.size() == 0) - serializeControlTime(data, null); - else - serializeControlTime(data, times.get(initTimes.size()-1)); - } - - private void serializeControlTime(ByteBuffer data, ServiceControlTime time) { - if (time == null) { - data.put((byte) 0); - data.putDouble(Double.NaN); - } else { - data.put((byte) (time.isSuccess() ? 1 : 0)); - data.putDouble(time.getTime()); - } - } - - public String toString() { - return "ServiceStats[" + service.getClass().getName() + "]"; - } - } - - private static class ServiceControlTime { - private final double time; - private final boolean success; - - public ServiceControlTime(double time, boolean success) { - this.time = time; - this.success = success; - } - - public double getTime() { - return time; - } - - public boolean isSuccess() { - return success; - } - - public String toString() { - return "[" + (isSuccess()?"Success":"Failure") + " in " + getTime() + "ms]"; - } - } - -} diff --git a/src/resources/control/ServerPublicInterface.java b/src/resources/control/ServerPublicInterface.java deleted file mode 100644 index d27de8456..000000000 --- a/src/resources/control/ServerPublicInterface.java +++ /dev/null @@ -1,191 +0,0 @@ -/*********************************************************************************** -* Copyright (c) 2015 /// Project SWG /// www.projectswg.com * -* * -* ProjectSWG is the first NGE emulator for Star Wars Galaxies founded on * -* July 7th, 2011 after SOE announced the official shutdown of Star Wars Galaxies. * -* Our goal is to create an emulator which will provide a server for players to * -* continue playing a game similar to the one they used to play. We are basing * -* it on the final publish of the game prior to end-game events. * -* * -* This file is part of Holocore. * -* * -* -------------------------------------------------------------------------------- * -* * -* Holocore is free software: you can redistribute it and/or modify * -* it under the terms of the GNU Affero General Public License as * -* published by the Free Software Foundation, either version 3 of the * -* License, or (at your option) any later version. * -* * -* Holocore is distributed in the hope that it will be useful, * -* but WITHOUT ANY WARRANTY; without even the implied warranty of * -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -* GNU Affero General Public License for more details. * -* * -* You should have received a copy of the GNU Affero General Public License * -* along with Holocore. If not, see . * -* * -***********************************************************************************/ -package resources.control; - -import java.io.ByteArrayInputStream; -import java.io.DataInputStream; -import java.io.IOException; -import java.net.InetAddress; -import java.net.SocketException; -import java.net.UnknownHostException; -import java.nio.ByteBuffer; - -import resources.config.ConfigFile; -import resources.network.UDPServer; -import resources.network.UDPServer.UDPCallback; -import resources.network.UDPServer.UDPPacket; -import resources.server_info.Config; -import resources.server_info.DataManager; - -final class ServerPublicInterface { - - private static final int PORT = 44452; - private static final int PACKET_SIZE = 1024; - - private static ServerPublicInterface publicInterface = null; - - private ServerManager serverManager; - private UDPServer server; - private boolean initialized = false; - private boolean terminated = false; - - private ServerPublicInterface() { - serverManager = null; - } - - public static final void initialize(ServerManager instance) { - if (publicInterface == null) - publicInterface = new ServerPublicInterface(); - publicInterface.initializeInterface(instance); - } - - public static final void terminate() { - publicInterface.terminateInterface(); - } - - private void initializeInterface(ServerManager instance) { - if (!initialized) { - serverManager = instance; - server = createUdpServer(); - initialized = true; - terminated = false; - } - } - - private void terminateInterface() { - if (!terminated) { - serverManager = null; - if (server != null) - server.close(); - initialized = false; - terminated = true; - } - } - - private void onReceivedPacket(UDPPacket packet) { - if (packet.getData().length == 0) - return; - InetAddress sender = packet.getAddress(); - int port = packet.getPort(); - DataInputStream dis = new DataInputStream(new ByteArrayInputStream(packet.getData())); - try { - while (dis.available() > 0) { - processPacket(sender, port, dis); - } - } catch (IOException e) { - - } - } - - private void processPacket(InetAddress sender, int port, DataInputStream is) throws IOException { - RequestType type = getType(is.readByte()); - switch (type) { - case PING_PONG: processPing(sender, port, is); break; - case STATUS: processServerStatus(sender, port, is); break; - case CONTROL_TIMES: processControlTimes(sender, port, is); break; - default: - break; - } - } - - private void processPing(InetAddress sender, int port, DataInputStream is) { - server.send(port, sender, new byte[]{RequestType.PING_PONG.getType()}); - } - - private void processServerStatus(InetAddress sender, int port, DataInputStream is) { - ServerStatus status = serverManager.getServerStatus(); - ByteBuffer data = ByteBuffer.allocate(3 + status.name().length()); - data.put(RequestType.STATUS.getType()); - data.putShort((short) status.name().length()); - data.put(status.name().getBytes()); - server.send(port, sender, data.array()); - } - - private void processControlTimes(InetAddress sender, int port, DataInputStream is) { - byte [] controlTimes = serverManager.serializeControlTimes(); - byte [] timePacket = new byte[controlTimes.length+1]; - timePacket[0] = RequestType.CONTROL_TIMES.getType(); - System.arraycopy(controlTimes, 0, timePacket, 1, controlTimes.length); - server.send(port, sender, timePacket); - } - - private UDPServer createUdpServer() { - UDPServer server = null; - InetAddress bindAddr = getBindAddr(); - try { - if (bindAddr == null) - server = new UDPServer(PORT, PACKET_SIZE); - else - server = new UDPServer(bindAddr, PORT, PACKET_SIZE); - server.setCallback(new UDPCallback() { - public void onReceivedPacket(UDPPacket packet) { - ServerPublicInterface.this.onReceivedPacket(packet); - } - }); - } catch (SocketException e) { - // Keep it quiet - nobody needs to know this class exists - } - return server; - } - - private InetAddress getBindAddr() { - Config c = DataManager.getInstance().getConfig(ConfigFile.NETWORK); - try { - if (c.containsKey("BIND-ADDR")) - return InetAddress.getByName(c.getString("BIND-ADDR", "127.0.0.1")); - if (c.containsKey("INTERFACE-BIND-ADDR")) - return InetAddress.getByName(c.getString("INTERFACE-BIND-ADDR", "127.0.0.1")); - } catch (UnknownHostException e) { - - } - return null; - } - - private RequestType getType(byte b) { - for (RequestType type : RequestType.values()) - if (type.getType() == b) - return type; - return RequestType.UNKNOWN; - } - - public enum RequestType { - PING_PONG (0x00), - STATUS (0x01), - CONTROL_TIMES (0x02), - UNKNOWN (0xFF); - - private byte type; - - RequestType(int type) { - this.type = (byte) type; - } - - public byte getType() { return type; } - } - -} diff --git a/src/resources/control/Service.java b/src/resources/control/Service.java index 49fba0b06..7ea7c0de3 100644 --- a/src/resources/control/Service.java +++ b/src/resources/control/Service.java @@ -50,7 +50,7 @@ public abstract class Service implements IntentReceiver { */ public boolean initialize() { IntentManager.getInstance().initialize(); - return DataManager.getInstance().isInitialized() && ServerManager.getInstance().initialize(); + return DataManager.getInstance().isInitialized(); } /** @@ -78,7 +78,7 @@ public abstract class Service implements IntentReceiver { * @return TRUE if termination was successful, FALSE otherwise */ public boolean terminate() { - return ServerManager.getInstance().terminate(); + return true; } /** diff --git a/src/services/CoreManager.java b/src/services/CoreManager.java index a5e567a34..d96797291 100644 --- a/src/services/CoreManager.java +++ b/src/services/CoreManager.java @@ -55,6 +55,7 @@ import resources.control.Intent; import resources.control.Manager; import resources.control.ServerStatus; import resources.server_info.Config; +import services.admin.OnlineInterfaceService; import services.galaxy.GalacticManager; import utilities.ThreadUtilities; @@ -63,6 +64,8 @@ public class CoreManager extends Manager { private static final int galaxyId = 1; private final ScheduledExecutorService shutdownService; + + private OnlineInterfaceService onlineInterfaceService; private EngineManager engineManager; private GalacticManager galacticManager; private PrintStream packetOutput; @@ -76,9 +79,11 @@ public class CoreManager extends Manager { shutdownRequested = false; galaxy = getGalaxy(); if (galaxy != null) { + onlineInterfaceService = new OnlineInterfaceService(); engineManager = new EngineManager(galaxy); galacticManager = new GalacticManager(galaxy); - + + addChildService(onlineInterfaceService); addChildService(engineManager); addChildService(galacticManager); } diff --git a/src/services/admin/OnlineInterfaceService.java b/src/services/admin/OnlineInterfaceService.java new file mode 100644 index 000000000..29eab83b5 --- /dev/null +++ b/src/services/admin/OnlineInterfaceService.java @@ -0,0 +1,153 @@ +package services.admin; + +import intents.PlayerEventIntent; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.URL; +import java.net.UnknownHostException; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +import resources.config.ConfigFile; +import resources.control.Intent; +import resources.control.Service; +import resources.server_info.Config; +import resources.server_info.Log; +import services.admin.http.HttpServer; +import services.admin.http.HttpServer.HttpServerCallback; +import services.admin.http.HttpSocket; +import services.admin.http.HttpSocket.HttpRequest; +import services.admin.http.HttpStatusCode; +import services.admin.http.HttpsServer; +import utilities.ThreadUtilities; + +public class OnlineInterfaceService extends Service implements HttpServerCallback { + + private static final String TAG = "OnlineInterfaceService"; + + private final WebserverData data; + private final WebserverHandler handler; + private final Runnable dataCollectionRunnable; + private ScheduledExecutorService executor; + private HttpsServer httpsServer; + private HttpServer httpServer; + private boolean authorized; + + public OnlineInterfaceService() { + data = new WebserverData(); + handler = new WebserverHandler(data); + dataCollectionRunnable = () -> collectData(); + authorized = false; + } + + @Override + public boolean initialize() { + Config network = getConfig(ConfigFile.NETWORK); + authorized = !network.getString("HTTPS-KEYSTORE-PASSWORD", "").isEmpty(); + if (!authorized) + return super.initialize(); + httpServer = new HttpServer(getBindAddr(network, "HTTP-BIND-ADDR", "BIND-ADDR"), network.getInt("HTTP-PORT", 8080)); + httpsServer = new HttpsServer(getBindAddr(network, "HTTPS-BIND-ADDR", "BIND-ADDR"), network.getInt("HTTPS-PORT", 8081)); + httpServer.setMaxConnections(network.getInt("HTTP-MAX-CONNECTIONS", 2)); + httpsServer.setMaxConnections(network.getInt("HTTPS-MAX-CONNECTIONS", 5)); + if (!httpsServer.initialize(network)) { + System.err.println("Failed to initialize HTTPS server! Incorrect password?"); + httpServer.stop(); + httpsServer.stop(); + super.initialize(); + return false; + } + executor = Executors.newSingleThreadScheduledExecutor(ThreadUtilities.newThreadFactory("ServerInterface-DataCollection")); + registerForIntent(PlayerEventIntent.TYPE); + return super.initialize(); + } + + @Override + public boolean start() { + if (authorized) { + httpServer.setServerCallback(this); + httpsServer.setServerCallback(this); + httpServer.start(); + httpsServer.start(); + executor.scheduleAtFixedRate(dataCollectionRunnable, 0, 1, TimeUnit.SECONDS); + } + return super.start(); + } + + @Override + public boolean stop() { + if (authorized) { + httpServer.stop(); + httpsServer.stop(); + executor.shutdownNow(); + try { + executor.awaitTermination(1, TimeUnit.SECONDS); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + return super.stop(); + } + + @Override + public void onSocketCreated(HttpSocket socket) { + Log.i(TAG, "Received connection from: %s:%d [%s]", socket.getInetAddress(), socket.getPort(), socket.isSecure() ? "secure" : "insecure"); + } + + @Override + public void onRequestReceived(HttpSocket socket, HttpRequest request) { + try { + if (!request.getType().equals("GET")) { + socket.send(HttpStatusCode.METHOD_NOT_ALLOWED); + return; + } + if (!socket.isSecure()) { + socket.redirect(new URL("https", httpsServer.getBindAddress().getHostName(), httpsServer.getBindPort(), request.getURI().getPath()).toString()); + return; + } + handler.handleRequest(socket, request); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onIntentReceived(Intent i) { + if (i instanceof PlayerEventIntent) { + PlayerEventIntent pei = (PlayerEventIntent) i; + switch (pei.getEvent()) { + case PE_ZONE_IN: + data.addOnlinePlayer(pei.getPlayer()); + break; + case PE_LOGGED_OUT: + data.removeOnlinePlayer(pei.getPlayer()); + break; + default: + break; + } + } + } + + private void collectData() { + Runtime r = Runtime.getRuntime(); + double memUsage = 1 - ((double) r.totalMemory() / r.maxMemory()); + data.addMemoryUsageData(memUsage); + } + + private InetAddress getBindAddr(Config c, String firstTry, String secondTry) { + String t = firstTry; + try { + if (c.containsKey(firstTry)) + return InetAddress.getByName(c.getString(firstTry, "127.0.0.1")); + t = secondTry; + if (c.containsKey(secondTry)) + return InetAddress.getByName(c.getString(secondTry, "127.0.0.1")); + } catch (UnknownHostException e) { + System.err.println("NetworkListenerService: Unknown host for IP: " + t); + } + return null; + } + +} diff --git a/src/services/admin/WebserverData.java b/src/services/admin/WebserverData.java new file mode 100644 index 000000000..5ce3c162e --- /dev/null +++ b/src/services/admin/WebserverData.java @@ -0,0 +1,60 @@ +package services.admin; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.Charset; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +import resources.player.Player; + +class WebserverData { + + private static final Charset ASCII = Charset.forName("ASCII"); + + private final double [] memoryUsage; + private final Set onlinePlayers; + + public WebserverData() { + memoryUsage = new double[60 * 5]; + onlinePlayers = new HashSet<>(); + } + + public void addMemoryUsageData(double percent) { + for (int i = 1; i < memoryUsage.length; i++) + memoryUsage[i-1] = memoryUsage[i]; + memoryUsage[memoryUsage.length-1] = percent; + } + + public void addOnlinePlayer(Player player) { + onlinePlayers.add(player); + } + + public void removeOnlinePlayer(Player player) { + onlinePlayers.remove(player); + } + + public double [] getMemoryUsage() { + return Arrays.copyOf(memoryUsage, memoryUsage.length); + } + + public Set getOnlinePlayers() { + return Collections.unmodifiableSet(onlinePlayers); + } + + public String getLog() throws IOException { + BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(new File("log.txt")), ASCII)); + StringBuilder builder = new StringBuilder(); + while (reader.ready()) { + builder.append(reader.readLine() + System.lineSeparator()); + } + reader.close(); + return builder.toString(); + } + +} diff --git a/src/services/admin/WebserverHandler.java b/src/services/admin/WebserverHandler.java new file mode 100644 index 000000000..6cb36926c --- /dev/null +++ b/src/services/admin/WebserverHandler.java @@ -0,0 +1,205 @@ +package services.admin; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.image.BufferedImage; +import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.Charset; +import java.util.Locale; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import resources.player.Player; +import resources.server_info.Log; +import services.admin.http.HttpImageType; +import services.admin.http.HttpSocket; +import services.admin.http.HttpSocket.HttpRequest; +import services.admin.http.HttpStatusCode; + +class WebserverHandler { + + private static final String TAG = "WebserverHandler"; + private static final Charset ASCII = Charset.forName("ASCII"); + + private final WebserverData data; + private final Pattern variablePattern; + + public WebserverHandler(WebserverData data) { + this.data = data; + variablePattern = Pattern.compile("\\$\\{.+\\}"); // Looks for variables: ${VAR_NAME} + } + + public void handleRequest(HttpSocket socket, HttpRequest request) throws IOException { + Log.i(TAG, "Requested: " + request.getURI()); + String file = request.getURI().toASCIIString(); + if (file.contains("?")) + file = file.substring(0, file.indexOf('?')); + switch (file) { + case "/memory_usage.png": + socket.send(createMemoryUsage(), HttpImageType.PNG); + break; + default: { + byte [] response = parseFile(file); + if (response == null) + socket.send(HttpStatusCode.NOT_FOUND, request.getURI() + " is not found!"); + else + socket.send(getFileType(file), response); + break; + } + } + } + + private BufferedImage createMemoryUsage() { + double [] memoryUsage = data.getMemoryUsage(); + final int graphHeight = 300; + BufferedImage image = new BufferedImage(900, graphHeight + 25, BufferedImage.TYPE_3BYTE_BGR); + Graphics2D g = image.createGraphics(); + int prevX = -1; + int prevY = -1; + Font font = g.getFont(); + g.setFont(font.deriveFont(Math.min(image.getHeight()/10.0f, 25.0f))); + RenderingHints rh = new RenderingHints(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + g.setRenderingHints(rh); + g.setColor(Color.WHITE); + g.drawRect(0, 0, image.getWidth()-1, graphHeight-1); + g.drawLine(0, image.getHeight()-1, image.getWidth(), image.getHeight()-1); + for (int i = 1; i < 10; i++) { + g.drawLine(0, (int) ((i/10.0)*graphHeight), 10, (int) ((i/10.0)*graphHeight)); + } + String inUse = getMemoryInUse(); + int width = g.getFontMetrics().stringWidth(inUse); + g.drawString("Current: " + (int) (memoryUsage[memoryUsage.length-1] * 100) + "%", 5, image.getHeight() - 5); + g.drawString(inUse, image.getWidth()-width - 5, image.getHeight() - 5); + g.setColor(Color.RED); + int start = 0; + for (double d : memoryUsage) { + if (d == 0) + start++; + else + break; + } + for (int i = start; i < memoryUsage.length; i++) { + int x = (int) ((double) i / memoryUsage.length * image.getWidth()); + int y = (int) ((1-memoryUsage[i]) * graphHeight); + if (prevX != -1 && prevY != -1) + g.drawLine(prevX, prevY, x, y); + prevX = x; + prevY = y; + } + return image; + } + + private String getMemoryInUse() { + double memory = Runtime.getRuntime().totalMemory(); + String [] types = new String[]{"B", "KB", "MB", "GB"}; + String type = types[0]; + for (int i = 0; i < types.length && memory >= 1024; i++) { + memory /= 1024; + type = types[i]; + } + return String.format("In-Use: %.2f%s", memory, type); + } + + private String getFileType(String filepath) { + if (!filepath.contains(".")) + return "text/html"; + String type = filepath.substring(filepath.lastIndexOf('.')+1).toLowerCase(Locale.US); + switch (type) { + case "png": + case "gif": + case "jpg": + case "jpeg": + case "ico": + return "image/" + type; + default: + return "text/" + type; + } + } + + private byte [] parseFile(String filepath) throws IOException { + File file = new File("res/webserver" + filepath); + if (file.isDirectory()) + file = new File(file, "index.html"); + String type = getFileType(filepath); + if (!verifyPath(file)) + return null; + if (type.equalsIgnoreCase("text/html")) + return parseHtmlFile(file).getBytes(ASCII); + try (InputStream is = new FileInputStream(file)) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(is.available()); + byte [] buffer = new byte[Math.min(1024, is.available())]; + while (is.available() > 0) { + if (is.available() > buffer.length && buffer.length < 1024) + buffer = new byte[Math.min(1024, is.available())]; + int len = is.read(buffer); + baos.write(buffer, 0, len); + } + return baos.toByteArray(); + } + } + + private boolean verifyPath(File file) { + File parent = new File("res/webserver"); + if (!file.getAbsolutePath().startsWith(parent.getAbsolutePath())) + return false; + if (!file.isFile()) + return false; + return true; + } + + private String parseHtmlFile(File file) throws IOException { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), ASCII))) { + String line = null; + StringBuilder builder = new StringBuilder(); + while (reader.ready()) { + line = reader.readLine(); + if (line == null) + break; + Matcher matcher = variablePattern.matcher(line); + while (matcher.find()) { + String var = matcher.group(); + var = var.substring(2, var.length()-1); + line = line.replaceAll("\\$\\{"+var+"\\}", getVariable(var)); + matcher.reset(line); + } + builder.append(line + System.lineSeparator()); + } + return builder.toString(); + } + } + + private String getVariable(String var) throws IOException { + var = var.toLowerCase(Locale.US); + switch (var) { + case "log": + return data.getLog().replace("\n", "\n
"); + case "online_players": { + Set players = data.getOnlinePlayers(); + StringBuilder ret = new StringBuilder("Online Players: ["+players.size()+"]
"); + ret.append(""); + for (Player p : players) { + ret.append(""); + ret.append(String.format("", p.getUsername())); + ret.append(String.format("", p.getUserId())); + ret.append(String.format("", p.getCharacterName())); + ret.append(String.format("", p.getCreatureObject().getObjectId())); + ret.append(""); + } + ret.append("
UsernameUser IDCharacterCharacter ID
%s%d%s%d
"); + return ret.toString(); + } + default: + return ""; + } + } + +} diff --git a/src/services/admin/http/HttpImageType.java b/src/services/admin/http/HttpImageType.java new file mode 100644 index 000000000..025018dec --- /dev/null +++ b/src/services/admin/http/HttpImageType.java @@ -0,0 +1,7 @@ +package services.admin.http; + +public enum HttpImageType { + GIF, + PNG, + JPG +} diff --git a/src/services/admin/http/HttpServer.java b/src/services/admin/http/HttpServer.java new file mode 100644 index 000000000..b5f824e1d --- /dev/null +++ b/src/services/admin/http/HttpServer.java @@ -0,0 +1,196 @@ +package services.admin.http; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.ServerSocket; +import java.net.Socket; +import java.net.SocketException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; + +import resources.server_info.Log; +import services.admin.http.HttpSocket.HttpRequest; +import utilities.ThreadUtilities; + +public class HttpServer { + + private static final String TAG = "HttpServer"; + + private final InetAddress addr; + private final int port; + + private ExecutorService executor; + private ServerSocket serverSocket; + private AtomicInteger currentConnections; + private HttpServerCallback callback; + private int maxConnections; + private boolean secure; + + protected HttpServer(InetAddress addr, int port, boolean secure) { + this.addr = addr; + this.port = port; + this.currentConnections = new AtomicInteger(0); + this.callback = null; + this.maxConnections = 2; + this.secure = secure; + } + + public HttpServer(InetAddress addr, int port) { + this(addr, port, false); + } + + public void start() { + executor = Executors.newCachedThreadPool(ThreadUtilities.newThreadFactory(getThreadFactoryName())); + try { + serverSocket = createSocket(); + startAcceptThread(serverSocket, secure); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void stop() { + if (serverSocket != null) { + try { + serverSocket.close(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + if (executor != null) { + executor.shutdownNow(); + try { + executor.awaitTermination(1, TimeUnit.SECONDS); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + + public void setServerCallback(HttpServerCallback callback) { + this.callback = callback; + } + + public void setMaxConnections(int maxConnections) { + this.maxConnections = maxConnections; + } + + public final InetAddress getBindAddress() { + return addr; + } + + public final int getBindPort() { + return port; + } + + protected String getThreadFactoryName() { + return "HttpServer-%d"; + } + + protected ServerSocket createSocket() throws IOException { + return new ServerSocket(port, 0, addr); + } + + private void startAcceptThread(ServerSocket serverSocket, boolean secure) { + executor.submit(() -> { + try { + acceptThread(serverSocket, secure); + } catch (Throwable t) { + t.printStackTrace(); + } + }); + } + + private void startSocketThread(HttpSocket socket) { + executor.submit(() -> { + try { + socketThread(socket); + } catch (Throwable t) { + t.printStackTrace(); + } + try { + socket.close(); + } catch (IOException e) { + e.printStackTrace(); + } + synchronized (currentConnections) { + currentConnections.decrementAndGet(); + } + }); + } + + private void acceptThread(ServerSocket serverSocket, boolean secure) { + Log.i(TAG, "Now listening over HTTP%s. Address: %s:%d", secure?"S":"", serverSocket.getInetAddress(), serverSocket.getLocalPort()); + while (serverSocket.isBound() && !serverSocket.isClosed()) { + try { + Socket socket = serverSocket.accept(); + HttpSocket httpSocket = new HttpSocket(socket, secure); + if (!httpSocket.isOpened()) { + httpSocket.close(); + continue; + } + if (currentConnections.get() >= maxConnections) { + httpSocket.send(HttpStatusCode.SERVICE_UNAVAILABLE, "The server has reached it's maximum connection limit: " + maxConnections); + socket.close(); + } else { + if (currentConnections.incrementAndGet() > maxConnections) { + socket.close(); + currentConnections.decrementAndGet(); + } else { + startSocketThread(httpSocket); + } + } + } catch (SocketException e) { + if (serverSocket.isClosed()) + break; + e.printStackTrace(); + } catch (Throwable t) { + t.printStackTrace(); + } + } + Log.i(TAG, "No longer listening over HTTP%s!", secure?"S":""); + } + + private void socketThread(HttpSocket socket) throws IOException { + onSocketCreated(socket); + HttpRequest request; + while (socket.isOpened() && !socket.isClosed()) { + request = socket.waitForRequest(); + if (request == null) + break; + if (request.getType() == null || request.getURI() == null || request.getHttpVersion() == null) { + socket.send(HttpStatusCode.BAD_REQUEST); + continue; + } + onRequestReceived(socket, request); + } + } + + private void onSocketCreated(HttpSocket socket) { + if (callback == null) + return; + try { + callback.onSocketCreated(socket); + } catch (Throwable t) { + t.printStackTrace(); + } + } + + private void onRequestReceived(HttpSocket socket, HttpRequest request) { + if (callback == null) + return; + try { + callback.onRequestReceived(socket, request); + } catch (Throwable t) { + t.printStackTrace(); + } + } + + public interface HttpServerCallback { + void onSocketCreated(HttpSocket socket); + void onRequestReceived(HttpSocket socket, HttpRequest request); + } + +} diff --git a/src/services/admin/http/HttpSocket.java b/src/services/admin/http/HttpSocket.java new file mode 100644 index 000000000..68ec22c99 --- /dev/null +++ b/src/services/admin/http/HttpSocket.java @@ -0,0 +1,263 @@ +package services.admin.http; + +import java.awt.image.BufferedImage; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.ByteArrayOutputStream; +import java.io.Closeable; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.net.InetAddress; +import java.net.Socket; +import java.net.URI; +import java.nio.charset.Charset; +import java.util.Collections; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; + +import javax.imageio.ImageIO; + +import resources.server_info.Log; + +public class HttpSocket implements Closeable { + + private static final Charset ASCII = Charset.forName("ASCII"); + + private final Socket socket; + private final BufferedReader reader; + private final BufferedWriter writer; + private final OutputStream rawOutputStream; + private final boolean secure; + + public HttpSocket(Socket socket, boolean secure) { + this.socket = socket; + this.reader = createBufferedReader(); + this.writer = createBufferedWriter(); + this.rawOutputStream = getOutputStream(); + this.secure = secure; + } + + /** + * Waits for the next HTTP request to come in, then returns the request + * sent by the client - or null if the client closes the connection. + * @return the HttpRequest sent by the client, or null if the connection is + * closed + */ + public HttpRequest waitForRequest() { + while (!socket.isClosed()) { + String line = readLine(); + boolean hasData = line != null && !line.isEmpty(); + String [] req = null; + Map params = new HashMap<>(); + while (line != null && !line.isEmpty()) { + if (req == null) + req = line.split(" ", 3); + String [] parts = line.split(": ", 2); + if (parts.length == 2) + params.put(parts[0], parts[1]); + hasData = !line.isEmpty(); + line = readLine(); + } + if (hasData) { + String type = null; + URI uri = null; + String version = null; + if (req.length >= 1) + type = req[0]; + if (req.length >= 2) + uri = URI.create(req[1]); + if (req.length >= 3) + version = req[2]; + return new HttpRequest(type, uri, version, params); + } + if (line == null) + break; + } + return null; + } + + public void redirect(String url) throws IOException { + Map params = new HashMap<>(); + params.put("Location", url); + send(HttpStatusCode.MOVED_PERMANENTLY, params, "text/html", ""); + } + + public void send(HttpStatusCode code) throws IOException { + send(code, ""); + } + + public void send(String response) throws IOException { + send(HttpStatusCode.OK, response); + } + + public void send(String contentType, byte [] response) throws IOException { + send(HttpStatusCode.OK, new HashMap<>(), contentType, response); + } + + public void send(BufferedImage image, HttpImageType type) throws IOException { + String contentType = "image"; + switch (type) { + case GIF: + contentType = "image/gif"; + break; + case JPG: + contentType = "image/jpeg"; + break; + case PNG: + contentType = "image/png"; + break; + } + ByteArrayOutputStream baos = new ByteArrayOutputStream(image.getWidth() * image.getHeight() * 3); + if (!ImageIO.write(image, type.name().toLowerCase(Locale.US), baos)) + throw new IllegalArgumentException("Cannot write image with type: " + type); + send(HttpStatusCode.OK, new HashMap<>(), contentType, baos.toByteArray()); + } + + public void send(HttpStatusCode code, String response) throws IOException { + if (code == HttpStatusCode.OK && response.isEmpty()) + code = HttpStatusCode.NO_CONTENT; + send(code, new HashMap<>(), "text/html", response); + } + + private void send(HttpStatusCode code, Map params, String contentType, String response) throws IOException { + params.put("Content-Length", Integer.toString(response.length())); + params.put("Content-Type", contentType); + sendHeader(code, params); + writer.write(response); + writer.flush(); + } + + private void send(HttpStatusCode code, Map params, String contentType, byte [] data) throws IOException { + params.put("Content-Length", Integer.toString(data.length)); + params.put("Content-Type", contentType); + sendHeader(code, params); + writer.flush(); + rawOutputStream.write(data); + rawOutputStream.flush(); + } + + private void sendHeader(HttpStatusCode code, Map params) throws IOException { + write("HTTP/1.1 %d %s", code.getCode(), code.getName()); + for (Entry param : params.entrySet()) + write(param.getKey() + ": " + param.getValue()); + writer.newLine(); + } + + private String readLine() { + try { + return reader.readLine(); + } catch (Exception e) { + return null; + } + } + + @Override + public void close() throws IOException { + socket.close(); + } + + public boolean isOpened() { + return reader != null && writer != null; + } + + public boolean isClosed() { + return socket.isClosed(); + } + + public boolean isSecure() { + return secure; + } + + public InetAddress getInetAddress() { + return socket.getInetAddress(); + } + + public int getPort() { + return socket.getPort(); + } + + private void write(String str, Object ... args) throws IOException { + writer.write(String.format(str, args) + System.lineSeparator()); + Log.d("HttpSocket", str, args); + } + + private BufferedReader createBufferedReader() { + try { + return new BufferedReader(new InputStreamReader(socket.getInputStream(), ASCII)); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + + private BufferedWriter createBufferedWriter() { + try { + return new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), ASCII)); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + + private OutputStream getOutputStream() { + try { + return socket.getOutputStream(); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + + public static class HttpRequest { + private final String type; + private final URI uri; + private final String httpVersion; + private final Map params; + + private HttpRequest(String requestType, URI uri, String httpVersion, Map params) { + this.type = requestType; + this.uri = uri; + this.httpVersion = httpVersion; + this.params = params; + } + + /** + * Gets the type of HTTP request sent. It could be one of: GET, POST, + * HEAD. + * @return the type of HTTP request + */ + public String getType() { + return type; + } + + /** + * Gets the requested URI sent + * @return the requested URI + */ + public URI getURI() { + return uri; + } + + /** + * Gets the HTTP version of the client, typical format is: HTTP/1.1 + * @return the HTTP version of the client + */ + public String getHttpVersion() { + return httpVersion; + } + + /** + * Gets all the paramters sent in the HTTP request, such as: + * "User-Agent", "Accept", etc. + * @return the HTTP request parameters + */ + public Map getParams() { + return Collections.unmodifiableMap(params); + } + } + +} diff --git a/src/services/admin/http/HttpStatusCode.java b/src/services/admin/http/HttpStatusCode.java new file mode 100644 index 000000000..0f9de5cfc --- /dev/null +++ b/src/services/admin/http/HttpStatusCode.java @@ -0,0 +1,48 @@ +package services.admin.http; + +public enum HttpStatusCode { + /** The request is OK (this is the standard response for successful HTTP requests) */ + OK (200, "OK"), + /** The request has been successfully processed, but is not returning any content */ + NO_CONTENT (204, "No Content"), + /** The requested page has moved to a new URL */ + MOVED_PERMANENTLY (301, "Moved Permanently"), + /** The requested page has moved temporarily to a new URL */ + FOUND (302, "Found"), + /** The requested page can be found under a different URL */ + SEE_OTHER (303, "See Other"), + /** The requested page has moved temporarily to a new URL */ + TEMPORARY_REDIRECT (307, "Temporary Redirect"), + /** The request cannot be fulfilled due to bad syntax */ + BAD_REQUEST (400, "Bad Request"), + /** The request was a legal request, but the server is refusing to respond to it. + For use when authentication is possible but has failed or not yet been provided */ + UNAUTHORIZED (401, "Unauthorized"), + /** The request was a legal request, but the server is refusing to respond to it */ + FORBIDDEN (403, "Forbidden"), + /** The requested page could not be found but may be available again in the future */ + NOT_FOUND (404, "Not Found"), + /** A request was made of a page using a request method not supported by that page */ + METHOD_NOT_ALLOWED (405, "Method Not Allowed"), + /** A generic error message, given when no more specific message is suitable */ + INTERNAL_ERROR (500, "Internal Error"), + /** The server is currently unavailable (overloaded or down) */ + SERVICE_UNAVAILABLE (503, ""); + + private int code; + private String name; + + HttpStatusCode(int code, String name) { + this.code = code; + this.name = name; + } + + public int getCode() { + return code; + } + + public String getName() { + return name; + } + +} diff --git a/src/services/admin/http/HttpsServer.java b/src/services/admin/http/HttpsServer.java new file mode 100644 index 000000000..449c57022 --- /dev/null +++ b/src/services/admin/http/HttpsServer.java @@ -0,0 +1,81 @@ +package services.admin.http; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.InetAddress; +import java.net.ServerSocket; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.UnrecoverableKeyException; +import java.security.cert.CertificateException; + +import javax.net.ssl.KeyManager; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLServerSocketFactory; + +import resources.server_info.Config; +import resources.server_info.Log; + +public class HttpsServer extends HttpServer { + + private static final String SERVER_KEYSTORE = "server.keystore"; + + private SSLContext sslContext; + private SSLServerSocketFactory sslServerSocketFactory; + + public HttpsServer(InetAddress addr, int port) { + super(addr, port, true); + } + + public boolean initialize(Config config) { + String pass = config.getString("HTTPS-KEYSTORE-PASSWORD", ""); + System.setProperty("javax.net.ssl.keyStore", SERVER_KEYSTORE); + System.setProperty("javax.net.ssl.keyStorePassword", pass); + try { + sslContext = SSLContext.getInstance("TLSv1.2"); + KeyManager [] managers = createKeyManagers(pass.toCharArray()); + if (managers == null) + return false; + sslContext.init(managers, null, null); + sslServerSocketFactory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault(); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + protected String getThreadFactoryName() { + return "HttpsServer-%d"; + } + + protected ServerSocket createSocket() throws IOException { + try { + return sslServerSocketFactory.createServerSocket(getBindPort(), 0, getBindAddress()); + } catch (IOException e) { + System.err.println("Failed to start HTTPS server!"); + Log.e("HttpsServer", "Failed to start HTTPS server!"); + e.printStackTrace(); + } + return null; + } + + private KeyManager [] createKeyManagers(char [] password) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException, UnrecoverableKeyException { + KeyStore ks = KeyStore.getInstance("JKS"); + InputStream ksIs = new FileInputStream(SERVER_KEYSTORE); + try { + ks.load(ksIs, password); + } catch (IOException e) { + return null; // Password invalid + } finally { + ksIs.close(); + } + KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); + kmf.init(ks, password); + return kmf.getKeyManagers(); + } + +} diff --git a/src/services/player/LoginService.java b/src/services/player/LoginService.java index ad63d82f2..903dd82a5 100644 --- a/src/services/player/LoginService.java +++ b/src/services/player/LoginService.java @@ -228,7 +228,7 @@ public class LoginService extends Service { String message = "Sorry, you're banned!"; sendPacket(player.getNetworkId(), new ErrorMessage(type, message, false)); System.err.println("[" + id.getUsername() + "] Can't login - Banned! IP: " + id.getAddress() + ":" + id.getPort()); - Log.i("LoginService", "%s cannot login due to a ban, from %s:%d", id.getAddress(), id.getPort()); + Log.i("LoginService", "%s cannot login due to a ban, from %s:%d", player.getUsername(), id.getAddress(), id.getPort()); player.setPlayerState(PlayerState.DISCONNECTED); new LoginEventIntent(player.getNetworkId(), LoginEvent.LOGIN_FAIL_BANNED).broadcast(); } From 6bc119dbc147b7d4db5ec9709498d6a263ca025f Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Thu, 27 Aug 2015 12:43:47 -0500 Subject: [PATCH 06/18] Added additional constraints to nge.backup and changed user access_level to 'csr' --- nge.backup | Bin 5441 -> 19456 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/nge.backup b/nge.backup index e1c0fa569d7d4a534eea20608c12ef80abe0d110..a65cc13a030effb9a527b14f8f9dfea9a76e94e4 100644 GIT binary patch literal 19456 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 delta 1153 zcmZ{jYe*DP6vywKS>0V%*B0H?)Y^?qQ@3^Jv8$Uzr1n5+HLyS^Wy;YOZPtBA50E12 zOHxoLD0+h-6w-q}^q~(HC?-f&(CdRmW*I?7U`bHay|c5niXE6UhdJl|@9*4u=I}ZE zuy}jj#_BC~I2Gv(7-K|i6?I1Htkf-`E}6Orb!rJq0;N?(N#yNwi7qiAveBwBz$PoS zF?PHZx|tl^w)zd_u#PRkEd12j;XAXhfNI3-tv(*)&b8)vYRJoUrZ|XoM&xjy*%45pa;qGMTB8jVVkCd0%gyHs?5aWFTd&QoFQ2AV*Zn`gN6?*CU3mevW`mU8xf6OSNam2s(lt zo$XRI5L9L;+mUcGw+J6Dhg@?G z^BF;z*$;hY2Ygw*0@kK4fv$>t?L>A-iXt~Vb_Ij&vZTPD^o9hH+o#Qo8BTy8a9=M_0GL^8(Hy@=i+z!bxA2N?q5d4yxwQ!v-8?L^Jtz`YAm)Bt=k)$E(Gcq!S-R{6ZV8GflG&q=q@C9S7CZKlU zL8yYr3lk%cMu%%3m)3l6ZgRR@qop Date: Thu, 27 Aug 2015 12:51:22 -0500 Subject: [PATCH 07/18] Added sessions to the HttpServer --- src/services/admin/WebserverData.java | 13 +- src/services/admin/http/HttpCookie.java | 212 +++++++++++++++++++++++ src/services/admin/http/HttpServer.java | 41 +++++ src/services/admin/http/HttpSession.java | 25 +++ src/services/admin/http/HttpSocket.java | 60 +++++-- 5 files changed, 330 insertions(+), 21 deletions(-) create mode 100644 src/services/admin/http/HttpCookie.java create mode 100644 src/services/admin/http/HttpSession.java diff --git a/src/services/admin/WebserverData.java b/src/services/admin/WebserverData.java index 5ce3c162e..727c9dac3 100644 --- a/src/services/admin/WebserverData.java +++ b/src/services/admin/WebserverData.java @@ -48,13 +48,14 @@ class WebserverData { } public String getLog() throws IOException { - BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(new File("log.txt")), ASCII)); - StringBuilder builder = new StringBuilder(); - while (reader.ready()) { - builder.append(reader.readLine() + System.lineSeparator()); + try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(new File("log.txt")), ASCII))) { + StringBuilder builder = new StringBuilder(); + while (reader.ready()) { + builder.append(reader.readLine() + System.lineSeparator()); + } + reader.close(); + return builder.toString(); } - reader.close(); - return builder.toString(); } } diff --git a/src/services/admin/http/HttpCookie.java b/src/services/admin/http/HttpCookie.java new file mode 100644 index 000000000..58c9fcba6 --- /dev/null +++ b/src/services/admin/http/HttpCookie.java @@ -0,0 +1,212 @@ +package services.admin.http; + +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Collections; +import java.util.EnumSet; +import java.util.Set; + +public class HttpCookie implements Comparable { + + private static final String EXPIRES_FORMAT = "EEE, dd-MM-yyyy HH:mm:ss zzz"; // Wed, 18-05-2015 16:00:00 GMT + + private String key; + private String value; + private String domain; + private String path; + private long expires; + private Set flags; + + public HttpCookie(String value, CookieFlag ... flags) { + if (value == null) + throw new IllegalArgumentException("Value for cookie cannot be null!"); + this.key = null; + this.value = value; + if (flags.length == 0) + this.flags = EnumSet.noneOf(CookieFlag.class); + else + this.flags = EnumSet.copyOf(Arrays.asList(flags)); + this.domain = null; + this.path = null; + this.expires = 0; + } + + public HttpCookie(String key, String value, CookieFlag ... flags) { + this(value, flags); + this.key = key; + } + + public HttpCookie(String key, String value, long expires, CookieFlag ... flags) { + this(key, value, flags); + this.expires = expires; + } + + public String getKey() { + return key; + } + + public String getValue() { + return value; + } + + public String getDomain() { + return domain; + } + + public String getPath() { + return path; + } + + public long getExpires() { + return expires; + } + + public Set getFlags() { + return Collections.unmodifiableSet(flags); + } + + public boolean hasFlag(CookieFlag flag) { + return flags.contains(flag); + } + + public boolean hasExpired() { + return expires != 0 && System.currentTimeMillis() >= expires; + } + + public void setKey(String key) { + this.key = key; + } + + public void setValue(String value) { + this.value = value; + } + + public void setDomain(String domain) { + this.domain = domain; + } + + public void setPath(String path) { + this.path = path; + } + + public void setExpires(long expires) { + this.expires = expires; + } + + public void addFlag(CookieFlag flag) { + flags.add(flag); + } + + public void removeFlag(CookieFlag flag) { + flags.remove(flag); + } + + @Override + public int compareTo(HttpCookie c) { + if (key != null && c.key == null) + return 1; + if (key == null && c.key != null) + return -1; + if (!value.equals(c.value)) + return value.compareTo(c.value); + if (expires < c.expires) + return -1; + if (expires > c.expires) + return 1; + return 0; + } + + @Override + public int hashCode() { + int code = 0; + if (key != null) + code += key.hashCode(); + code ^= value.hashCode(); + if (expires != 0) + code ^= Long.valueOf(expires).hashCode(); + return code; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) + return false; + if (!(obj instanceof HttpCookie)) + return false; + HttpCookie c = (HttpCookie) obj; + if (key != null && c.key == null) + return false; + if (c.key != null && key == null) + return false; + if (!c.value.equals(value)) + return false; + return c.expires == expires; + } + + public String encode() { + StringBuilder str = new StringBuilder(""); + if (key == null) + str.append(value); + else + str.append(encodeCookieString(key) + "=" + encodeCookieString(value)); + if (expires != 0) + str.append("; expires=" + encodeCookieString(new SimpleDateFormat(EXPIRES_FORMAT).format(expires))); + if (domain != null) + str.append("; domain=" + encodeCookieString(domain)); + if (path != null) + str.append("; path=" + encodeCookieString(path)); + for (CookieFlag flag : flags) + str.append("; " + flag.encode()); + return str.toString(); + } + + private String encodeCookieString(String str) { + return str.replace(" ", "%20").replace("\t", "%09").replace("\n", "%0A").replace("&", "%26").replace(";", "%3B"); + } + + public static HttpCookie [] decodeCookies(String str) { + String [] parts = str.split("; "); + HttpCookie [] cookies = new HttpCookie[parts.length]; + for (int i = 0; i < parts.length; i++) { + cookies[i] = decodeCookie(decodeCookieString(parts[i])); + } + return cookies; + } + + private static HttpCookie decodeCookie(String str) { + String [] parts = str.split("=", 2); + if (parts.length == 0) + return new HttpCookie(""); + if (parts.length == 1) + return new HttpCookie(parts[0]); + return new HttpCookie(parts[0], parts[1]); + } + + private static String decodeCookieString(String str) { + return str.replace("%20", " ").replace("%09", "\t").replace("%0A", "\n").replace("%26", "&").replace("%3B", ";"); + } + + public static enum CookieFlag { + /** + * Security feature where this cookie is only sent from the client + * over a secure HTTPS connection. + */ + SECURE ("secure"), + /** + * Security feature to avoid Cross Site Scripting (XSS), where this + * cookie is unable to be accessed through javascript - only via HTTP. + */ + HTTP_ONLY ("HttpOnly"); + + private String encoded; + + CookieFlag(String encoded) { + this.encoded = encoded; + } + + protected String encode() { + return encoded; + } + } + +} diff --git a/src/services/admin/http/HttpServer.java b/src/services/admin/http/HttpServer.java index b5f824e1d..ea4726456 100644 --- a/src/services/admin/http/HttpServer.java +++ b/src/services/admin/http/HttpServer.java @@ -5,6 +5,9 @@ import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketException; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; @@ -20,6 +23,7 @@ public class HttpServer { private final InetAddress addr; private final int port; + private final Map sessions; private ExecutorService executor; private ServerSocket serverSocket; @@ -31,6 +35,7 @@ public class HttpServer { protected HttpServer(InetAddress addr, int port, boolean secure) { this.addr = addr; this.port = port; + this.sessions = new HashMap<>(); this.currentConnections = new AtomicInteger(0); this.callback = null; this.maxConnections = 2; @@ -168,6 +173,41 @@ public class HttpServer { } } + private HttpSession getSessionForRequest(HttpRequest request) { + String token = null; + for (HttpCookie cookie : request.getCookies()) { + if (cookie.getKey() != null && cookie.getKey().equals("sessionToken")) { + if (sessions.containsKey(cookie.getValue())) + token = cookie.getValue(); + } + } + if (token == null) + token = generateSessionToken(); + HttpSession session = null; + if (!sessions.containsKey(token)) { + session = new HttpSession(token); + sessions.put(token, session); + } else + session = sessions.get(token); + return session; + } + + private String generateSessionToken() { + Random r = new Random(); + StringBuilder builder = new StringBuilder(24); + int rand; + for (int i = 0; i < 24; i++) { + rand = r.nextInt(26*2+10); + if (rand < 26) + builder.append((char) ('A' + rand)); + else if (rand < 52) + builder.append((char) ('a' + (rand-26))); + else + builder.append((char) ('0' + (rand-52))); + } + return builder.toString(); + } + private void onSocketCreated(HttpSocket socket) { if (callback == null) return; @@ -182,6 +222,7 @@ public class HttpServer { if (callback == null) return; try { + socket.setSession(getSessionForRequest(request)); callback.onRequestReceived(socket, request); } catch (Throwable t) { t.printStackTrace(); diff --git a/src/services/admin/http/HttpSession.java b/src/services/admin/http/HttpSession.java new file mode 100644 index 000000000..9d40bcfb4 --- /dev/null +++ b/src/services/admin/http/HttpSession.java @@ -0,0 +1,25 @@ +package services.admin.http; + +public class HttpSession { + + private final String token; + private boolean authenticated; + + public HttpSession(String token) { + this.token = token; + this.authenticated = false; + } + + public String getToken() { + return token; + } + + public boolean isAuthenticated() { + return authenticated; + } + + public void setAuthenticated(boolean authenticated) { + this.authenticated = authenticated; + } + +} diff --git a/src/services/admin/http/HttpSocket.java b/src/services/admin/http/HttpSocket.java index 68ec22c99..46a277ce9 100644 --- a/src/services/admin/http/HttpSocket.java +++ b/src/services/admin/http/HttpSocket.java @@ -13,15 +13,19 @@ import java.net.InetAddress; import java.net.Socket; import java.net.URI; import java.nio.charset.Charset; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Locale; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import javax.imageio.ImageIO; import resources.server_info.Log; +import services.admin.http.HttpCookie.CookieFlag; public class HttpSocket implements Closeable { @@ -32,6 +36,7 @@ public class HttpSocket implements Closeable { private final BufferedWriter writer; private final OutputStream rawOutputStream; private final boolean secure; + private HttpSession session; public HttpSocket(Socket socket, boolean secure) { this.socket = socket; @@ -39,6 +44,7 @@ public class HttpSocket implements Closeable { this.writer = createBufferedWriter(); this.rawOutputStream = getOutputStream(); this.secure = secure; + this.session = null; } /** @@ -53,12 +59,18 @@ public class HttpSocket implements Closeable { boolean hasData = line != null && !line.isEmpty(); String [] req = null; Map params = new HashMap<>(); + Set cookies = new HashSet<>(); while (line != null && !line.isEmpty()) { if (req == null) req = line.split(" ", 3); String [] parts = line.split(": ", 2); - if (parts.length == 2) - params.put(parts[0], parts[1]); + if (parts.length == 2) { + if (parts[0].equals("Cookie")) { + cookies.addAll(Arrays.asList(HttpCookie.decodeCookies(parts[1]))); + } else { + params.put(parts[0], parts[1]); + } + } hasData = !line.isEmpty(); line = readLine(); } @@ -72,7 +84,7 @@ public class HttpSocket implements Closeable { uri = URI.create(req[1]); if (req.length >= 3) version = req[2]; - return new HttpRequest(type, uri, version, params); + return new HttpRequest(type, uri, version, params, cookies); } if (line == null) break; @@ -80,10 +92,14 @@ public class HttpSocket implements Closeable { return null; } + public void setSession(HttpSession session) { + this.session = session; + } + public void redirect(String url) throws IOException { Map params = new HashMap<>(); params.put("Location", url); - send(HttpStatusCode.MOVED_PERMANENTLY, params, "text/html", ""); + send(HttpStatusCode.MOVED_PERMANENTLY, params, new HashSet<>(), "text/html", ""); } public void send(HttpStatusCode code) throws IOException { @@ -95,7 +111,7 @@ public class HttpSocket implements Closeable { } public void send(String contentType, byte [] response) throws IOException { - send(HttpStatusCode.OK, new HashMap<>(), contentType, response); + send(HttpStatusCode.OK, new HashMap<>(), new HashSet<>(), contentType, response); } public void send(BufferedImage image, HttpImageType type) throws IOException { @@ -114,36 +130,41 @@ public class HttpSocket implements Closeable { ByteArrayOutputStream baos = new ByteArrayOutputStream(image.getWidth() * image.getHeight() * 3); if (!ImageIO.write(image, type.name().toLowerCase(Locale.US), baos)) throw new IllegalArgumentException("Cannot write image with type: " + type); - send(HttpStatusCode.OK, new HashMap<>(), contentType, baos.toByteArray()); + send(HttpStatusCode.OK, new HashMap<>(), new HashSet<>(), contentType, baos.toByteArray()); } public void send(HttpStatusCode code, String response) throws IOException { if (code == HttpStatusCode.OK && response.isEmpty()) code = HttpStatusCode.NO_CONTENT; - send(code, new HashMap<>(), "text/html", response); + send(code, new HashMap<>(), new HashSet<>(), "text/html", response); } - private void send(HttpStatusCode code, Map params, String contentType, String response) throws IOException { + private void send(HttpStatusCode code, Map params, Set cookies, String contentType, String response) throws IOException { params.put("Content-Length", Integer.toString(response.length())); params.put("Content-Type", contentType); - sendHeader(code, params); + sendHeader(code, params, cookies); writer.write(response); writer.flush(); } - private void send(HttpStatusCode code, Map params, String contentType, byte [] data) throws IOException { + private void send(HttpStatusCode code, Map params, Set cookies, String contentType, byte [] data) throws IOException { params.put("Content-Length", Integer.toString(data.length)); params.put("Content-Type", contentType); - sendHeader(code, params); + sendHeader(code, params, cookies); writer.flush(); rawOutputStream.write(data); rawOutputStream.flush(); } - private void sendHeader(HttpStatusCode code, Map params) throws IOException { + private void sendHeader(HttpStatusCode code, Map params, Set cookies) throws IOException { + if (session == null) + throw new IllegalStateException("HttpSession is null!"); + cookies.add(new HttpCookie("sessionToken", session.getToken(), CookieFlag.SECURE, CookieFlag.HTTP_ONLY)); write("HTTP/1.1 %d %s", code.getCode(), code.getName()); for (Entry param : params.entrySet()) write(param.getKey() + ": " + param.getValue()); + for (HttpCookie cookie : cookies) + write("Set-Cookie: " + cookie.encode()); writer.newLine(); } @@ -179,10 +200,9 @@ public class HttpSocket implements Closeable { public int getPort() { return socket.getPort(); } - + private void write(String str, Object ... args) throws IOException { writer.write(String.format(str, args) + System.lineSeparator()); - Log.d("HttpSocket", str, args); } private BufferedReader createBufferedReader() { @@ -217,12 +237,14 @@ public class HttpSocket implements Closeable { private final URI uri; private final String httpVersion; private final Map params; + private final Set cookies; - private HttpRequest(String requestType, URI uri, String httpVersion, Map params) { + private HttpRequest(String requestType, URI uri, String httpVersion, Map params, Set cookies) { this.type = requestType; this.uri = uri; this.httpVersion = httpVersion; this.params = params; + this.cookies = cookies; } /** @@ -258,6 +280,14 @@ public class HttpSocket implements Closeable { public Map getParams() { return Collections.unmodifiableMap(params); } + + /** + * Gets all the cookies sent in the HTTP request + * @return the cookies + */ + public Set getCookies() { + return Collections.unmodifiableSet(cookies); + } } } From 3b0047021459c39155e446b56e55200c94aaf675 Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Thu, 27 Aug 2015 13:09:12 -0500 Subject: [PATCH 08/18] Fixed null session error when max connections is reached --- src/services/admin/WebserverHandler.java | 3 --- src/services/admin/http/HttpServer.java | 9 ++++----- src/services/admin/http/HttpSocket.java | 6 ++---- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/services/admin/WebserverHandler.java b/src/services/admin/WebserverHandler.java index 6cb36926c..dbc4c295b 100644 --- a/src/services/admin/WebserverHandler.java +++ b/src/services/admin/WebserverHandler.java @@ -19,7 +19,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import resources.player.Player; -import resources.server_info.Log; import services.admin.http.HttpImageType; import services.admin.http.HttpSocket; import services.admin.http.HttpSocket.HttpRequest; @@ -27,7 +26,6 @@ import services.admin.http.HttpStatusCode; class WebserverHandler { - private static final String TAG = "WebserverHandler"; private static final Charset ASCII = Charset.forName("ASCII"); private final WebserverData data; @@ -39,7 +37,6 @@ class WebserverHandler { } public void handleRequest(HttpSocket socket, HttpRequest request) throws IOException { - Log.i(TAG, "Requested: " + request.getURI()); String file = request.getURI().toASCIIString(); if (file.contains("?")) file = file.substring(0, file.indexOf('?')); diff --git a/src/services/admin/http/HttpServer.java b/src/services/admin/http/HttpServer.java index ea4726456..244cbc84f 100644 --- a/src/services/admin/http/HttpServer.java +++ b/src/services/admin/http/HttpServer.java @@ -183,12 +183,11 @@ public class HttpServer { } if (token == null) token = generateSessionToken(); - HttpSession session = null; - if (!sessions.containsKey(token)) { + HttpSession session = sessions.get(token); + if (session == null) { session = new HttpSession(token); sessions.put(token, session); - } else - session = sessions.get(token); + } return session; } @@ -219,10 +218,10 @@ public class HttpServer { } private void onRequestReceived(HttpSocket socket, HttpRequest request) { + socket.setSession(getSessionForRequest(request)); if (callback == null) return; try { - socket.setSession(getSessionForRequest(request)); callback.onRequestReceived(socket, request); } catch (Throwable t) { t.printStackTrace(); diff --git a/src/services/admin/http/HttpSocket.java b/src/services/admin/http/HttpSocket.java index 46a277ce9..11b793dd5 100644 --- a/src/services/admin/http/HttpSocket.java +++ b/src/services/admin/http/HttpSocket.java @@ -24,7 +24,6 @@ import java.util.Set; import javax.imageio.ImageIO; -import resources.server_info.Log; import services.admin.http.HttpCookie.CookieFlag; public class HttpSocket implements Closeable { @@ -157,9 +156,8 @@ public class HttpSocket implements Closeable { } private void sendHeader(HttpStatusCode code, Map params, Set cookies) throws IOException { - if (session == null) - throw new IllegalStateException("HttpSession is null!"); - cookies.add(new HttpCookie("sessionToken", session.getToken(), CookieFlag.SECURE, CookieFlag.HTTP_ONLY)); + if (session != null) + cookies.add(new HttpCookie("sessionToken", session.getToken(), CookieFlag.SECURE, CookieFlag.HTTP_ONLY)); write("HTTP/1.1 %d %s", code.getCode(), code.getName()); for (Entry param : params.entrySet()) write(param.getKey() + ": " + param.getValue()); From 3e71418bf8ef4ebcb3a628e7c7f8b0dff626acc2 Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Thu, 27 Aug 2015 17:03:49 -0500 Subject: [PATCH 09/18] Added in CPU and Memory details to online graph, including for overall system --- res/webserver/index.html | 2 +- .../admin/OnlineInterfaceService.java | 4 +- src/services/admin/WebserverData.java | 51 +++++++++++++-- src/services/admin/WebserverHandler.java | 64 ++++++++++++++----- 4 files changed, 96 insertions(+), 25 deletions(-) diff --git a/res/webserver/index.html b/res/webserver/index.html index fafa95f75..f5ba90e5b 100644 --- a/res/webserver/index.html +++ b/res/webserver/index.html @@ -66,7 +66,7 @@
- Memory Usage:
+ Resource Usage:
+
+ +
+ + diff --git a/res/webserver/index.html b/res/webserver/index.html index f5ba90e5b..7303a387d 100644 --- a/res/webserver/index.html +++ b/res/webserver/index.html @@ -7,75 +7,26 @@ background-color: #FFFFFF; } .main_container { - width: 75%; - color: #000000; - margin: 0 auto; - } - .memory_container { - width: 50%; - max-width: 50%; - max-height: 500px; - float: left; - color: #000000; - display: inline-block; - } - .log_container { - width: 100%; - height: 500px; - max-height: 500px; - color: #000000; - font-family: 'Courier New', Courier, 'Lucida Sans Typewriter', 'Lucida Typewriter', monospace; - font-size: 13px; - overflow: visible; - } - .server_info { - width: 50%; - max-width: 50%; - max-height: 500px; - float: right; - display: inline-block; - overflow: scroll; + width: 300px; + height: 75px; + background-color: #000000; + color: #FFFFFF; + margin: auto; + padding: 15px; + text-align: center; + position: relative; + top: 50%; + transform: translateY(-50%); } - -
-
-
- Resource Usage:
- -
- -
- +
+ Username:
+ Password:
+ +
diff --git a/src/services/admin/OnlineInterfaceService.java b/src/services/admin/OnlineInterfaceService.java index 5a94b1cca..2105c45c5 100644 --- a/src/services/admin/OnlineInterfaceService.java +++ b/src/services/admin/OnlineInterfaceService.java @@ -6,10 +6,16 @@ import java.io.IOException; import java.net.InetAddress; import java.net.URL; import java.net.UnknownHostException; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import network.encryption.MD5; import resources.config.ConfigFile; import resources.control.Intent; import resources.control.Service; @@ -19,17 +25,19 @@ import services.admin.http.HttpServer; import services.admin.http.HttpServer.HttpServerCallback; import services.admin.http.HttpSocket; import services.admin.http.HttpSocket.HttpRequest; -import services.admin.http.HttpStatusCode; +import services.admin.http.HttpSession; import services.admin.http.HttpsServer; import utilities.ThreadUtilities; public class OnlineInterfaceService extends Service implements HttpServerCallback { private static final String TAG = "OnlineInterfaceService"; + private static final String GET_USER_SQL = "SELECT password, password_salt, banned FROM users WHERE username = ? AND password = ?"; private final WebserverData data; private final WebserverHandler handler; private final Runnable dataCollectionRunnable; + private final PreparedStatement getUser; private ScheduledExecutorService executor; private HttpsServer httpsServer; private HttpServer httpServer; @@ -39,6 +47,7 @@ public class OnlineInterfaceService extends Service implements HttpServerCallbac data = new WebserverData(); handler = new WebserverHandler(data); dataCollectionRunnable = () -> collectData(); + getUser = getLocalDatabase().prepareStatement(GET_USER_SQL); authorized = false; } @@ -99,9 +108,18 @@ public class OnlineInterfaceService extends Service implements HttpServerCallbac @Override public void onRequestReceived(HttpSocket socket, HttpRequest request) { try { - if (!request.getType().equals("GET")) { - socket.send(HttpStatusCode.METHOD_NOT_ALLOWED); - return; + if (request.getType().equals("POST")) { + String [] variables = request.getBody().split("&"); + if (variables.length == 2) { + Map varMap = new HashMap<>(); + for (String str : variables) { + String [] var = str.split("="); + if (var.length == 2) + varMap.put(var[0], var[1]); + } + if (varMap.containsKey("username") && varMap.containsKey("password")) + login(socket, varMap.get("username"), varMap.get("password")); + } } if (!socket.isSecure()) { socket.redirect(new URL("https", httpsServer.getBindAddress().getHostName(), httpsServer.getBindPort(), request.getURI().getPath()).toString()); @@ -148,4 +166,43 @@ public class OnlineInterfaceService extends Service implements HttpServerCallbac return null; } + private void login(HttpSocket socket, String username, String password) { + HttpSession session = socket.getSession(); + if (session == null) + return; + synchronized (getUser) { + try { + getUser.setString(1, username); + getUser.setString(2, password); + session.setAuthenticated(false); + try (ResultSet cursor = getUser.executeQuery()) { + session.setAuthenticated(cursor.next() && isUserValid(cursor, password)); + if (session.isAuthenticated()) { + Log.i(TAG, "[%s] Successfully logged in to online interface", username); + } else { + Log.w(TAG, "[%s] Failed to login to online interface. Incorrect user/pass", username); + socket.redirect(new URL("https", httpsServer.getBindAddress().getHostName(), httpsServer.getBindPort(), "/").toString()); + } + } catch (IOException e) { + e.printStackTrace(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private boolean isUserValid(ResultSet set, String password) throws SQLException { + if (password.isEmpty()) + return false; + if (set.getBoolean("banned")) + return false; + String psqlPass = set.getString("password"); + String psqlSalt = set.getString("password_salt"); + if (psqlPass.length() != 32 && psqlSalt.length() == 0) + return psqlPass.equals(password); + password = MD5.digest(MD5.digest(psqlSalt) + MD5.digest(password)); + return psqlPass.equals(password); + } + } diff --git a/src/services/admin/WebserverData.java b/src/services/admin/WebserverData.java index 77473e1b2..2f989087d 100644 --- a/src/services/admin/WebserverData.java +++ b/src/services/admin/WebserverData.java @@ -58,7 +58,7 @@ class WebserverData { public double [] getCpuUsage() { return Arrays.copyOf(cpuUsage, cpuUsage.length); } - + public double [] getSystemMemoryUsage() { return Arrays.copyOf(systemMemoryUsage, systemMemoryUsage.length); } diff --git a/src/services/admin/WebserverHandler.java b/src/services/admin/WebserverHandler.java index 96ba02355..a88c9c776 100644 --- a/src/services/admin/WebserverHandler.java +++ b/src/services/admin/WebserverHandler.java @@ -22,7 +22,9 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import resources.player.Player; +import resources.server_info.Log; import services.admin.http.HttpImageType; +import services.admin.http.HttpSession; import services.admin.http.HttpSocket; import services.admin.http.HttpSocket.HttpRequest; import services.admin.http.HttpStatusCode; @@ -43,12 +45,17 @@ class WebserverHandler { String file = request.getURI().toASCIIString(); if (file.contains("?")) file = file.substring(0, file.indexOf('?')); + if (file.contains("#")) + file = file.substring(0, file.indexOf('#')); switch (file) { case "/memory_usage.png": - socket.send(createMemoryUsage(), HttpImageType.PNG); + if (socket.getSession().isAuthenticated()) + socket.send(createMemoryUsage(), HttpImageType.PNG); + else + socket.send(HttpStatusCode.NOT_FOUND, request.getURI() + " is not found!"); break; default: { - byte [] response = parseFile(file); + byte [] response = parseFile(socket.getSession(), file); if (response == null) socket.send(HttpStatusCode.NOT_FOUND, request.getURI() + " is not found!"); else @@ -82,7 +89,7 @@ class WebserverHandler { g.setColor(Color.WHITE); x += drawStr(g, image.getHeight(), x, " Sys:"); x += drawDataSet(g, Color.YELLOW, " M:", image.getWidth(), image.getHeight(), graphHeight, x, data.getSystemMemoryUsage()); - x += drawDataSet(g, Color.GREEN, " C:", image.getWidth(), image.getHeight(), graphHeight, x, data.getSystemCpuUsage()); + drawDataSet(g, Color.GREEN, " C:", image.getWidth(), image.getHeight(), graphHeight, x, data.getSystemCpuUsage()); return image; } @@ -152,12 +159,20 @@ class WebserverHandler { } } - private byte [] parseFile(String filepath) throws IOException { + private byte [] parseFile(HttpSession session, String filepath) throws IOException { File file = new File("res/webserver" + filepath); if (file.isDirectory()) file = new File(file, "index.html"); String type = getFileType(filepath); - if (!verifyPath(file)) + if (!verifyPath(file)) { + Log.e("WebserverHandler", "Cannot access %s - not a valid path", file); + return null; + } + if (file.toString().equals("res/webserver/index.html")) { + if (session.isAuthenticated()) { + file = new File("res/webserver/authenticated.html"); + } + } else if (!session.isAuthenticated()) return null; if (type.equalsIgnoreCase("text/html")) return parseHtmlFile(file).getBytes(ASCII); diff --git a/src/services/admin/http/HttpSocket.java b/src/services/admin/http/HttpSocket.java index 11b793dd5..9c5b19f9e 100644 --- a/src/services/admin/http/HttpSocket.java +++ b/src/services/admin/http/HttpSocket.java @@ -24,6 +24,7 @@ import java.util.Set; import javax.imageio.ImageIO; +import resources.server_info.Log; import services.admin.http.HttpCookie.CookieFlag; public class HttpSocket implements Closeable { @@ -59,6 +60,7 @@ public class HttpSocket implements Closeable { String [] req = null; Map params = new HashMap<>(); Set cookies = new HashSet<>(); + StringBuilder body = new StringBuilder(""); while (line != null && !line.isEmpty()) { if (req == null) req = line.split(" ", 3); @@ -73,6 +75,19 @@ public class HttpSocket implements Closeable { hasData = !line.isEmpty(); line = readLine(); } + if (params.containsKey("Content-Length")) { + Integer i = Integer.valueOf(params.get("Content-Length")); + if (i.intValue() > 0) { + String bodyStr = readBytes(i.intValue()); + if (bodyStr == null) + Log.e("HttpSocket", "Failed to read data in %s request: %s - returned null", req.length==0?"null":req[0], req.length<2?"null":req[1]); + else { + if (bodyStr.length() != i.intValue()) + Log.w("HttpSocket", "Failed to read all data in %s request: %s", req.length==0?"null":req[0], req.length<2?"null":req[1]); + body.append(bodyStr); + } + } + } if (hasData) { String type = null; URI uri = null; @@ -83,7 +98,7 @@ public class HttpSocket implements Closeable { uri = URI.create(req[1]); if (req.length >= 3) version = req[2]; - return new HttpRequest(type, uri, version, params, cookies); + return new HttpRequest(type, uri, version, params, cookies, body.toString()); } if (line == null) break; @@ -95,6 +110,10 @@ public class HttpSocket implements Closeable { this.session = session; } + public HttpSession getSession() { + return session; + } + public void redirect(String url) throws IOException { Map params = new HashMap<>(); params.put("Location", url); @@ -174,6 +193,21 @@ public class HttpSocket implements Closeable { } } + private String readBytes(int length) { + try { + if (length == 0) + return ""; + char [] data = new char[length]; + int read = reader.read(data); + if (read == -1) + return null; + return new String(data, 0, read); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + @Override public void close() throws IOException { socket.close(); @@ -236,13 +270,15 @@ public class HttpSocket implements Closeable { private final String httpVersion; private final Map params; private final Set cookies; + private final String body; - private HttpRequest(String requestType, URI uri, String httpVersion, Map params, Set cookies) { + private HttpRequest(String requestType, URI uri, String httpVersion, Map params, Set cookies, String body) { this.type = requestType; this.uri = uri; this.httpVersion = httpVersion; this.params = params; this.cookies = cookies; + this.body = body; } /** @@ -286,6 +322,14 @@ public class HttpSocket implements Closeable { public Set getCookies() { return Collections.unmodifiableSet(cookies); } + + /** + * Gets the request body + * @return the request body + */ + public String getBody() { + return body; + } } } From 8fbcfa38b54fd958bf0cf6793630076a94f54ebe Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Fri, 28 Aug 2015 03:36:37 -0500 Subject: [PATCH 11/18] Fixed bug where MD5'd pass doesn't work for webserver login --- src/services/admin/OnlineInterfaceService.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/services/admin/OnlineInterfaceService.java b/src/services/admin/OnlineInterfaceService.java index 2105c45c5..e4464fa6e 100644 --- a/src/services/admin/OnlineInterfaceService.java +++ b/src/services/admin/OnlineInterfaceService.java @@ -32,7 +32,7 @@ import utilities.ThreadUtilities; public class OnlineInterfaceService extends Service implements HttpServerCallback { private static final String TAG = "OnlineInterfaceService"; - private static final String GET_USER_SQL = "SELECT password, password_salt, banned FROM users WHERE username = ? AND password = ?"; + private static final String GET_USER_SQL = "SELECT password, password_salt, banned FROM users WHERE username = ?"; private final WebserverData data; private final WebserverHandler handler; @@ -173,7 +173,6 @@ public class OnlineInterfaceService extends Service implements HttpServerCallbac synchronized (getUser) { try { getUser.setString(1, username); - getUser.setString(2, password); session.setAuthenticated(false); try (ResultSet cursor = getUser.executeQuery()) { session.setAuthenticated(cursor.next() && isUserValid(cursor, password)); From 418584e20a40186ad148e63f99d60f2c86d6b647 Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Fri, 28 Aug 2015 10:30:47 -0500 Subject: [PATCH 12/18] Fixed some FindBugs warnings in ObjectManager --- src/services/objects/ObjectManager.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/services/objects/ObjectManager.java b/src/services/objects/ObjectManager.java index 18746e2c1..31176e40d 100644 --- a/src/services/objects/ObjectManager.java +++ b/src/services/objects/ObjectManager.java @@ -149,8 +149,8 @@ public class ObjectManager extends Manager { if (Terrain.doesTerrainExistForName(terrainStr)) terrain = Terrain.getTerrainFromName(terrainStr); else if (!terrainStr.isEmpty()) { - System.err.println("ObjectManager: Unknown terrain '" + terrain + "'"); - Log.e("ObjectManager", "Unknown terrain: %s", terrain); + System.err.println("ObjectManager: Unknown terrain '" + terrainStr + "'"); + Log.e("ObjectManager", "Unknown terrain: %s", terrainStr); } loadBuildouts(terrain); loadSnapshots(terrain); @@ -261,12 +261,7 @@ public class ObjectManager extends Manager { @Override public boolean terminate() { - database.traverse(new Traverser() { - @Override - public void process(SWGObject obj) { - obj.setOwner(null); - } - }); + database.traverse((obj) -> obj.setOwner(null)); database.close(); return super.terminate(); } From a43d3f9d869ccf6bba79ea2b4115602e82cdeb8b Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Fri, 28 Aug 2015 16:24:12 -0500 Subject: [PATCH 13/18] Added in online player information to interface --- res/webserver/authenticated.html | 44 +++++---- res/webserver/index.html | 1 - res/webserver/log.html | 1 - res/webserver/online_players.html | 0 res/webserver/server_info.html | 12 --- src/services/admin/WebserverHandler.java | 111 +++++++++++++++++++---- 6 files changed, 119 insertions(+), 50 deletions(-) delete mode 100644 res/webserver/log.html delete mode 100644 res/webserver/online_players.html delete mode 100644 res/webserver/server_info.html diff --git a/res/webserver/authenticated.html b/res/webserver/authenticated.html index f5ba90e5b..a88c3fc3b 100644 --- a/res/webserver/authenticated.html +++ b/res/webserver/authenticated.html @@ -1,7 +1,6 @@ Game Server Diagnostics - @@ -50,9 +57,10 @@ return undefined; }; function updateServerInfo() { - d = new Date(); - $("#memory_usage").attr("src", "memory_usage.png?"+d.getTime()) - $("#server_info").attr("src", "server_info.html"); +// d = new Date(); +// $("#memory_usage").attr("src", "memory_usage.png?"+d.getTime()); +// $("#server_info").attr("src", $("#server_info").attr("src")); + location.reload(true); } $(document).ready(function() { var time = getUrlParameter("refresh"); @@ -64,18 +72,20 @@
-
+
Resource Usage:
- + +
+
+ ${ONLINE_PLAYERS} +
+ ${CHARACTER_INFO}
-
- +
+ ${LOG} +
diff --git a/res/webserver/index.html b/res/webserver/index.html index 7303a387d..43dbf43e5 100644 --- a/res/webserver/index.html +++ b/res/webserver/index.html @@ -1,7 +1,6 @@ Game Server Diagnostics - -
-${ONLINE_PLAYERS} -
diff --git a/src/services/admin/WebserverHandler.java b/src/services/admin/WebserverHandler.java index a88c9c776..c39b71b23 100644 --- a/src/services/admin/WebserverHandler.java +++ b/src/services/admin/WebserverHandler.java @@ -17,10 +17,15 @@ import java.nio.charset.Charset; import java.util.HashMap; import java.util.Locale; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; +import resources.Location; +import resources.objects.SWGObject; +import resources.objects.building.BuildingObject; +import resources.objects.cell.CellObject; import resources.player.Player; import resources.server_info.Log; import services.admin.http.HttpImageType; @@ -43,8 +48,17 @@ class WebserverHandler { public void handleRequest(HttpSocket socket, HttpRequest request) throws IOException { String file = request.getURI().toASCIIString(); - if (file.contains("?")) + Map getVariables = new HashMap<>(); + if (file.contains("?")) { + String vars = file.substring(file.indexOf('?')+1); + String [] variables = vars.split("&"); + for (String var : variables) { + String [] parts = var.split("=", 2); + if (parts.length == 2) + getVariables.put(parts[0], parts[1]); + } file = file.substring(0, file.indexOf('?')); + } if (file.contains("#")) file = file.substring(0, file.indexOf('#')); switch (file) { @@ -55,7 +69,7 @@ class WebserverHandler { socket.send(HttpStatusCode.NOT_FOUND, request.getURI() + " is not found!"); break; default: { - byte [] response = parseFile(socket.getSession(), file); + byte [] response = parseFile(socket.getSession(), file, getVariables); if (response == null) socket.send(HttpStatusCode.NOT_FOUND, request.getURI() + " is not found!"); else @@ -159,7 +173,7 @@ class WebserverHandler { } } - private byte [] parseFile(HttpSession session, String filepath) throws IOException { + private byte [] parseFile(HttpSession session, String filepath, Map getVariables) throws IOException { File file = new File("res/webserver" + filepath); if (file.isDirectory()) file = new File(file, "index.html"); @@ -175,7 +189,7 @@ class WebserverHandler { } else if (!session.isAuthenticated()) return null; if (type.equalsIgnoreCase("text/html")) - return parseHtmlFile(file).getBytes(ASCII); + return parseHtmlFile(file, getVariables).getBytes(ASCII); try (InputStream is = new FileInputStream(file)) { ByteArrayOutputStream baos = new ByteArrayOutputStream(is.available()); byte [] buffer = new byte[Math.min(1024, is.available())]; @@ -198,7 +212,7 @@ class WebserverHandler { return true; } - private String parseHtmlFile(File file) throws IOException { + private String parseHtmlFile(File file, Map getVariables) throws IOException { try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), ASCII))) { String line = null; StringBuilder builder = new StringBuilder(); @@ -210,7 +224,7 @@ class WebserverHandler { while (matcher.find()) { String var = matcher.group(); var = var.substring(2, var.length()-1); - line = line.replaceAll("\\$\\{"+var+"\\}", getVariable(var)); + line = line.replaceAll("\\$\\{"+var+"\\}", getVariable(var, getVariables)); matcher.reset(line); } builder.append(line + System.lineSeparator()); @@ -219,29 +233,88 @@ class WebserverHandler { } } - private String getVariable(String var) throws IOException { + private String getVariable(String var, Map getVariables) throws IOException { var = var.toLowerCase(Locale.US); switch (var) { case "log": return data.getLog().replace("\n", "\n
"); case "online_players": { - Set players = data.getOnlinePlayers(); - StringBuilder ret = new StringBuilder("Online Players: ["+players.size()+"]
"); - ret.append(""); - for (Player p : players) { - ret.append(""); - ret.append(String.format("", p.getUsername())); - ret.append(String.format("", p.getUserId())); - ret.append(String.format("", p.getCharacterName())); - ret.append(String.format("", p.getCreatureObject().getObjectId())); - ret.append(""); + return getOnlinePlayerData(); + } + case "character_info": { + if (!getVariables.containsKey("character_id")) + return ""; + long i = Long.parseLong(getVariables.get("character_id")); + for (Player p : data.getOnlinePlayers()) { + if (p.getCreatureObject().getObjectId() == i) { + return getCreatureData(p.getCreatureObject()); + } } - ret.append("
UsernameUser IDCharacterCharacter ID
%s%d%s%d
"); - return ret.toString(); + return "No Creature Found!"; } default: return ""; } } + private String getOnlinePlayerData() { + Set players = data.getOnlinePlayers(); + StringBuilder ret = new StringBuilder("Online Players: ["+players.size()+"]
"); + ret.append(""); + for (Player p : players) { + ret.append(""); + long id = p.getCreatureObject().getObjectId(); + ret.append(String.format("", id, p.getUsername())); + ret.append(String.format("", id, p.getUserId())); + ret.append(String.format("", id, p.getCharacterName())); + ret.append(String.format("", id, p.getCreatureObject().getObjectId())); + ret.append(""); + } + ret.append("
UsernameUser IDCharacterCharacter ID
%s%d%s%d
"); + return ret.toString(); + } + + private String getCreatureData(SWGObject creature) { + StringBuilder str = new StringBuilder(""); + Location world = creature.getWorldLocation(); + str.append(String.format(" Object ID: %s
", creature.getObjectId())); + str.append(String.format(" Name: %s
", creature.getName())); + str.append(String.format("World:
")); + str.append(addLocationData(world)); + if (creature.getParent() != null) { + Location cell = creature.getLocation(); + str.append(String.format("Local:
")); + str.append(addLocationData(cell)); + SWGObject parent = creature.getParent(); + if (parent != null) { + str.append(String.format(" Parent:
")); + str.append(addParentData(parent, " ")); + parent = parent.getParent(); + if (parent != null) { + str.append(String.format(" Grandparent:
")); + str.append(addParentData(parent, " ")); + } + } + } + return str.toString().replace(" ", " ").replace("", "
"); + } + + private String addParentData(SWGObject obj, String indent) { + StringBuilder str = new StringBuilder(""); + str.append(indent + String.format(" Object ID: %d
", obj.getObjectId())); + str.append(indent + String.format(" Template: %s
", obj.getTemplate())); + if (obj instanceof CellObject) { + str.append(indent + String.format(" Cell Index: %d
", ((CellObject) obj).getNumber())); + str.append(indent + String.format(" Cell Name: %s
", ((CellObject) obj).getCellName())); + } + return str.toString(); + } + + private String addLocationData(Location l) { + StringBuilder str = new StringBuilder(""); + str.append(String.format(" Location: %.2f, %.2f, %.2f [%s]
", l.getX(), l.getY(), l.getZ(), l.getTerrain())); + str.append(String.format("Orientation: %.2f, %.2f, %.2f, %.2f
", l.getOrientationX(), l.getOrientationY(), l.getOrientationZ(), l.getOrientationW())); + return str.toString(); + } + } From 9a7e158318f2700f9e662caded9796f91554d465 Mon Sep 17 00:00:00 2001 From: Undercova PSWG Date: Fri, 28 Aug 2015 21:56:14 +0000 Subject: [PATCH 14/18] Added spawners for all planets except Kashyyyk + Mustafar. Spawners inside buildings not included atm --- serverdata/spawn/static.sdf | 2812 ++++++++++++++++++++++++++++++++++- 1 file changed, 2810 insertions(+), 2 deletions(-) diff --git a/serverdata/spawn/static.sdf b/serverdata/spawn/static.sdf index 7f7b8bf94..79727e87e 100644 --- a/serverdata/spawn/static.sdf +++ b/serverdata/spawn/static.sdf @@ -1,2 +1,2810 @@ -SpawnID TerrainName SpawnerType BuildingID Cell x y z oX oY oZ oW active -i s s i s f f f f f f f i +SpawnID TerrainName SpawnerType BuildingID Cell x y z oX oY oZ oW active creature_name +i s s i s f f f f f f f i s +50 CORELLIA EGG 0 0 -7340.49 213.36 -4001.55 0.00 0.27 0.00 0.96 1 Draykken Bender (a Meatlump Leader) +51 CORELLIA EGG 0 0 -6384.38 2.95 -2953.04 0.00 0.06 0.00 1.00 1 a Deflarian guard +52 CORELLIA EGG 0 0 -6160.08 36.46 -2849.27 0.00 0.24 0.00 0.97 1 a Deflarian enforcer +53 CORELLIA EGG 0 0 -6401.31 20.53 -2126.87 0.00 0.97 0.00 -0.23 1 a slaver guard +54 CORELLIA EGG 0 0 -6412.16 26.61 -2178.02 0.00 0.98 0.00 -0.21 1 an elite slaver guard +55 CORELLIA EGG 0 0 -6431.87 26.53 -2127.01 0.00 0.81 0.00 -0.58 1 a slaver guard +56 CORELLIA EGG 0 0 -6390.66 22.07 -2210.26 0.00 0.18 0.00 0.98 1 a slaver guard +149 CORELLIA EGG 0 0 -6456.13 28.13 -2156.28 0.00 0.99 0.00 0.17 1 a slaver guard +150 CORELLIA EGG 0 0 -6374.43 23.85 -2157.12 0.00 0.93 0.00 0.36 1 a slaver guard +151 CORELLIA EGG 0 0 -6426.88 27.38 -2177.43 0.00 -0.41 0.00 0.91 1 a slaver guard +152 CORELLIA EGG 0 0 -6154.37 36.46 -2817.47 0.00 0.97 0.00 -0.25 1 a Deflarian enforcer +153 CORELLIA EGG 0 0 -6150.17 36.46 -2834.71 0.00 0.99 0.00 0.11 1 a Deflarian lieutenant +154 CORELLIA EGG 0 0 -6172.32 36.46 -2825.77 0.00 0.90 0.00 0.44 1 a Deflarian enforcer +169 CORELLIA EGG 0 0 -6152.11 29.73 -2005.09 0.00 0.73 0.00 0.68 1 Zorajas Garamin (a farmer) +170 CORELLIA EGG 0 0 -7169.23 71.85 137.16 0.00 0.93 0.00 -0.36 1 Bechdo Ervekk (a rogue CorSec officer) +171 CORELLIA EGG 0 0 -7147.52 313.86 1134.53 0.00 -0.04 0.00 1.00 1 a Fallen padawan +172 CORELLIA EGG 0 0 -7131.76 296.77 1163.69 0.00 0.71 0.00 -0.70 1 a mis-guided mercenary officer +173 CORELLIA EGG 0 0 -7151.14 299.44 1151.35 0.00 -0.11 0.00 0.99 1 a mis-guided mercenary +209 CORELLIA EGG 0 0 -7144.33 298.55 1151.49 0.00 -0.05 0.00 1.00 1 a mis-guided mercenary +210 CORELLIA EGG 0 0 -7166.31 72.48 140.33 0.00 0.38 0.00 0.93 1 Berinn Ebonette (a rogue CorSec officer) +211 CORELLIA EGG 0 0 -6438.44 405.00 6036.31 0.00 0.17 0.00 0.99 1 a Rebel guard +212 CORELLIA EGG 0 0 -6430.63 405.00 6033.71 0.00 0.01 0.00 1.00 1 a Rebel guard +213 CORELLIA EGG 0 0 -6482.10 405.00 5914.92 0.00 0.95 0.00 0.31 1 a Rebel guard +214 CORELLIA EGG 0 0 -6478.36 405.00 5916.57 0.00 0.92 0.00 0.40 1 a Rebel guard +215 CORELLIA EGG 0 0 -6570.11 405.00 5942.90 0.00 0.92 0.00 -0.40 1 a Rebel guard +216 CORELLIA EGG 0 0 -6529.17 405.00 5910.89 0.00 1.00 0.00 -0.08 1 a Rebel guard +217 CORELLIA EGG 0 0 -6435.16 405.00 6032.51 0.00 0.34 0.00 0.94 1 a Rebel guard captain +218 CORELLIA EGG 0 0 -7412.72 414.13 7520.10 0.00 -0.63 0.00 0.78 1 a zealot of Lord Nyax +219 CORELLIA EGG 0 0 -7389.08 413.40 7503.81 0.00 -0.51 0.00 0.86 1 a zealot of Lord Nyax +220 CORELLIA EGG 0 0 -7397.61 413.38 7505.74 0.00 -0.47 0.00 0.88 1 a fiend of Lord Nyax +221 CORELLIA EGG 0 0 -7399.40 412.95 7522.50 0.00 -0.11 0.00 0.99 1 a fiend of Lord Nyax +222 CORELLIA EGG 0 0 -7388.06 413.02 7524.34 0.00 0.99 0.00 0.16 1 a fiend of Lord Nyax +223 CORELLIA EGG 0 0 -7399.48 414.19 7515.49 0.00 0.94 0.00 -0.35 1 a fiend of Lord Nyax +224 CORELLIA EGG 0 0 -7414.34 414.55 7501.98 0.00 0.91 0.00 -0.41 1 a fiend of Lord Nyax +225 CORELLIA EGG 0 0 -5544.92 23.40 -6161.93 0.00 -0.29 0.00 0.96 1 Isbel +226 CORELLIA EGG 0 0 -5315.00 21.00 -2397.00 0.00 0.73 0.00 0.68 1 Bandor Mokk +227 CORELLIA EGG 0 0 -6015.02 12.97 -3238.39 0.00 0.93 0.00 -0.37 1 a Ragtag Mercenary +228 CORELLIA EGG 0 0 -5096.19 21.00 -2445.25 0.00 0.90 0.00 -0.44 1 Edbr Yamagh (aide to Lt. Col. Quelsh) +229 CORELLIA EGG 0 0 -5067.19 27.55 -2784.16 0.00 0.54 0.00 0.84 1 a Meatlump donk +230 CORELLIA EGG 0 0 -5097.18 23.50 -2729.59 0.00 -0.29 0.00 0.96 1 a Meatlump donk +231 CORELLIA EGG 0 0 -5150.46 21.00 -2361.35 0.00 0.91 0.00 0.41 1 Major Alana Walden (a CorSec officer) +232 CORELLIA EGG 0 0 -4405.75 13.39 -2084.16 0.00 -0.01 0.00 1.00 1 Deflaros(a Deflarian Leader) +233 CORELLIA EGG 0 0 -5673.05 16.21 -2860.86 0.00 0.30 0.00 0.95 1 a Ragtag Thug +234 CORELLIA EGG 0 0 -5260.38 21.00 -2319.41 0.00 0.78 0.00 0.62 1 a Braggan's Fist thug +235 CORELLIA EGG 0 0 -5010.00 21.00 -2468.00 0.00 0.09 0.00 1.00 1 Sinis +236 CORELLIA EGG 0 0 -4430.92 11.71 -2057.31 0.00 -0.01 0.00 1.00 1 a Deflarian Security Guard +237 CORELLIA EGG 0 0 -5132.55 22.13 -2740.05 0.00 -0.43 0.00 0.90 1 a Meatlump donk +238 CORELLIA EGG 0 0 -5303.11 18.86 -2078.94 0.00 0.15 0.00 0.99 1 Sergeant Sola Hus (a CorSec agent) +239 CORELLIA EGG 0 0 -5691.86 15.53 -2885.06 0.00 0.33 0.00 0.94 1 a Ragtag Mercenary +240 CORELLIA EGG 0 0 -4293.39 5.34 -2575.57 0.00 0.65 -0.01 0.76 1 a CorSec agent +241 CORELLIA EGG 0 0 -4359.84 8.40 -2549.84 0.00 0.56 0.00 0.83 1 a Deflarian scavenger +242 CORELLIA EGG 0 0 -5217.39 21.00 -2334.55 0.00 0.78 0.00 0.63 1 a Braggan's Fist thug +243 CORELLIA EGG 0 0 -4398.44 13.39 -2074.03 0.00 -0.65 0.00 0.76 1 a Deflarian Bodyguard +244 CORELLIA EGG 0 0 -4295.03 6.22 -2496.42 0.00 0.45 0.00 0.89 1 a Deflarian scavenger +245 CORELLIA EGG 0 0 -4245.97 2.38 -2511.88 0.00 0.96 0.00 -0.27 1 a Deflarian scavenger +246 CORELLIA EGG 0 0 -5523.42 21.00 -2644.10 0.00 0.64 0.00 0.76 1 Matarmeno Krahnn (an adventuresome Jedi) +247 CORELLIA EGG 0 0 -5706.56 15.91 -2865.37 0.00 0.52 0.00 0.85 1 a Ragtag Mercenary +248 CORELLIA EGG 0 0 -4409.96 13.30 -2066.72 0.00 -0.12 0.00 0.99 1 a Deflarian Bodyguard +249 CORELLIA EGG 0 0 -5967.62 39.73 -2367.36 0.00 0.68 0.00 0.74 1 a Deflarian guard +250 CORELLIA EGG 0 0 -5469.49 27.90 -2981.80 0.00 0.98 0.00 0.19 1 Professor Cornelius Wagglehorn +251 CORELLIA EGG 0 0 -5086.57 24.73 -2743.40 0.00 -0.50 0.00 0.87 1 a Meatlump donk +252 CORELLIA EGG 0 0 -5240.01 21.00 -2397.94 0.00 0.32 0.00 0.95 1 a Braggan's Fist thug +253 CORELLIA EGG 0 0 -6028.26 12.97 -3249.95 0.00 0.90 0.00 0.44 1 Jori +254 CORELLIA EGG 0 0 -5099.63 21.00 -2442.71 0.00 0.93 0.00 -0.37 1 Lt. Col. Wilfred Quelsh (a retired CorSec officer) +255 CORELLIA EGG 0 0 -5692.51 15.83 -2865.79 0.00 0.38 0.00 0.93 1 a Ragtag Thug +256 CORELLIA EGG 0 0 -5289.62 21.00 -2523.21 0.00 -0.09 0.00 1.00 1 Faye Patrick +257 CORELLIA EGG 0 0 -5658.83 44.81 -2332.98 0.00 -0.27 0.00 0.96 1 Teilo Monnro +258 CORELLIA EGG 0 0 -5692.30 43.20 -2313.59 0.00 0.65 0.01 0.76 1 Meatlump Dunder (Outpost Guard) +294 CORELLIA EGG 0 0 -5275.50 21.00 -2379.41 0.00 0.99 0.00 -0.12 1 a Braggan's Fist thug +295 CORELLIA EGG 0 0 -4351.74 4.89 -2571.83 0.00 -0.50 0.00 0.87 1 a Deflarian scavenger +296 CORELLIA EGG 0 0 -5132.00 21.00 -2633.00 0.00 0.94 0.00 -0.33 1 Madison Silene +297 CORELLIA EGG 0 0 -5678.96 17.90 -2827.74 0.00 0.71 0.00 0.70 1 a Ragtag Thug +298 CORELLIA EGG 0 0 -4415.62 13.39 -2077.61 0.00 0.32 0.00 0.95 1 a Deflarian Bodyguard +299 CORELLIA EGG 0 0 -5718.09 47.04 -2325.14 0.00 -0.36 0.01 0.93 1 Meatlump Donk (Outpost Guard) +300 CORELLIA EGG 0 0 -6036.58 12.15 -3280.31 0.00 0.09 0.00 1.00 1 a Ragtag Mercenary +301 CORELLIA EGG 0 0 -5225.11 21.00 -2381.07 0.00 0.57 0.00 0.82 1 a Braggan's Fist thug +302 CORELLIA EGG 0 0 -5950.21 39.73 -2381.53 0.00 0.28 0.00 0.96 1 a Deflarian guard +303 CORELLIA EGG 0 0 -5091.00 27.77 -2793.06 0.00 0.93 0.00 -0.38 1 a Meatlump donk +304 CORELLIA EGG 0 0 -5173.50 21.00 -2545.31 0.00 0.97 0.00 -0.25 1 Captain Jark +305 CORELLIA EGG 0 0 -4286.85 4.39 -2548.43 0.00 0.93 0.00 0.38 1 a CorSec agent +306 CORELLIA EGG 0 0 -5197.00 21.00 -2273.00 0.00 0.48 0.00 0.88 1 Yorick +307 CORELLIA EGG 0 0 -6055.02 12.66 -3268.06 0.00 0.47 0.00 0.88 1 a Ragtag Mercenary +308 CORELLIA EGG 0 0 -6025.69 12.97 -3242.05 0.00 0.96 0.00 0.27 1 a Deflarian Agent +309 CORELLIA EGG 0 0 -5707.53 42.43 -2339.90 -0.01 0.83 0.00 -0.56 1 Meatlump Donk (Outpost Guard) +310 CORELLIA EGG 0 0 -5969.27 39.73 -2384.09 0.00 0.38 0.00 0.93 1 a Deflarian guard +311 CORELLIA EGG 0 0 -6051.30 12.97 -3244.81 0.00 1.00 0.00 0.05 1 a Ragtag Mercenary +312 CORELLIA EGG 0 0 -5210.35 21.00 -2578.05 0.00 0.89 0.00 0.45 1 Osto Grissom (a starship captain) +313 CORELLIA EGG 0 0 -6031.13 12.97 -3262.47 0.00 -0.06 0.00 1.00 1 a Deflarian Agent +314 CORELLIA EGG 0 0 -6032.58 12.97 -3231.60 0.00 1.00 0.00 0.03 1 a Ragtag Mercenary +315 CORELLIA EGG 0 0 -5290.37 21.00 -2345.56 0.00 0.45 0.00 0.89 1 a Braggan's Fist thug +316 CORELLIA EGG 0 0 -4327.94 3.10 -2595.85 0.00 0.77 0.00 -0.64 1 a Deflarian scavenger +317 CORELLIA EGG 0 0 -5445.20 21.00 -2738.03 0.00 0.94 0.00 0.35 1 Serina +318 CORELLIA EGG 0 0 -5684.77 16.71 -2843.10 0.00 0.39 0.00 0.92 1 a Ragtag Thug +319 CORELLIA EGG 0 0 -5672.55 15.28 -2894.07 0.00 0.17 0.00 0.98 1 a Ragtag Mercenary +320 CORELLIA EGG 0 0 -5713.54 16.56 -2846.80 0.00 0.55 0.00 0.84 1 a Ragtag Mercenary +321 CORELLIA EGG 0 0 -5119.61 24.36 -2763.41 0.00 0.52 0.00 0.85 1 a Meatlump donk +322 CORELLIA EGG 0 0 -4309.00 5.42 -2539.00 0.00 0.81 0.00 0.59 1 Cora (a CorSec inspector) +323 CORELLIA EGG 0 0 -5267.13 21.00 -2419.55 0.00 0.57 0.00 0.82 1 a Braggan's Fist thug +324 CORELLIA EGG 0 0 -5145.02 21.00 -2291.90 0.00 0.93 0.00 -0.38 1 a Braggan's Fist thug +325 CORELLIA EGG 0 0 -5289.20 0.41 -2942.59 0.00 0.76 0.00 0.65 1 a Braggan's Fist thug +326 CORELLIA EGG 0 0 -5291.60 15.07 -2017.27 0.00 0.98 0.00 0.21 1 a Braggan's Fist thug +327 CORELLIA EGG 0 0 -5757.27 24.11 -1666.52 0.00 0.31 0.00 0.95 1 a Drennic Scout +328 CORELLIA EGG 0 0 -5757.62 22.15 -1709.76 0.00 0.98 0.00 -0.22 1 a Drennic Scout +346 CORELLIA EGG 0 0 -4389.68 16.77 -2016.54 0.00 -0.69 0.00 0.73 1 a Deflarian Security Guard +347 CORELLIA EGG 0 0 -5280.42 17.92 -2030.68 0.00 0.97 0.00 0.24 1 a Braggan's Fist thug +348 CORELLIA EGG 0 0 -4694.07 16.51 -1883.30 0.00 -0.68 0.00 0.74 1 an escaped slave +349 CORELLIA EGG 0 0 -4795.52 4.32 -1951.86 0.00 -0.08 0.00 1.00 1 Hoolar Freeb +350 CORELLIA EGG 0 0 -4411.81 15.57 -2016.61 0.00 -0.63 0.00 0.78 1 a Deflarian Mechanic +351 CORELLIA EGG 0 0 -4703.52 16.51 -1907.76 0.00 0.98 0.00 0.18 1 Vermon Skeetz +352 CORELLIA EGG 0 0 -4707.87 16.51 -1873.04 0.00 0.97 0.00 0.23 1 Zorgom Z'all +353 CORELLIA EGG 0 0 -4715.09 16.51 -1889.62 0.00 0.46 0.00 0.89 1 Anyza Ekull +354 CORELLIA EGG 0 0 -4417.70 13.66 -2033.88 0.00 -0.12 0.00 0.99 1 a Deflarian Mechanic +355 CORELLIA EGG 0 0 -4697.27 16.51 -1880.17 0.00 0.99 0.00 0.11 1 Kyran Silene +356 CORELLIA EGG 0 0 -5278.19 11.43 -2002.52 0.00 0.99 0.00 0.14 1 a Braggan's Fist thug +357 CORELLIA EGG 0 0 -5307.99 12.04 -2016.48 0.00 0.97 0.00 0.23 1 a Braggan's Fist thug +358 CORELLIA EGG 0 0 -4727.17 16.51 -1902.42 0.00 0.94 0.00 -0.34 1 Bannoc G'noc +359 CORELLIA EGG 0 0 -4724.64 10.96 -1889.50 0.00 0.93 0.00 0.38 1 a Braggan's Fist thug +360 CORELLIA EGG 0 0 -4411.39 11.52 -1994.08 0.00 0.98 0.00 -0.18 1 a Deflarian Security Guard +361 CORELLIA EGG 0 0 -5266.24 12.51 -2016.63 0.00 0.45 0.00 0.89 1 a Deflarian Mechanic +362 CORELLIA EGG 0 0 -4697.49 16.51 -1885.54 0.00 0.84 0.00 -0.54 1 an escaped slave +363 CORELLIA EGG 0 0 -4429.27 22.89 -2005.85 0.00 0.71 0.00 -0.71 1 a Drennic Scout +364 CORELLIA EGG 0 0 -4706.03 16.51 -1873.92 0.00 0.76 0.00 0.65 1 an escaped slave +365 CORELLIA EGG 0 0 -4702.65 16.28 -1891.92 0.00 0.95 0.00 -0.30 1 a Deflarian Security Guard +366 CORELLIA EGG 0 0 -3614.19 16.50 -354.17 0.00 0.99 0.00 -0.11 1 a Braggan's Fist thug +367 CORELLIA EGG 0 0 -3617.97 16.51 -376.40 0.00 0.19 0.00 0.98 1 an escaped slave +368 CORELLIA EGG 0 0 -3633.58 14.10 -359.63 0.00 0.94 0.00 0.34 1 a Deflarian Mechanic +369 CORELLIA EGG 0 0 -3590.74 16.51 -344.42 0.00 0.97 0.00 -0.24 1 Norith Z'all +370 CORELLIA EGG 0 0 -3615.12 16.51 -321.40 0.00 -0.46 0.00 0.89 1 an escaped slave +371 CORELLIA EGG 0 0 -3602.15 21.64 -328.23 0.00 1.00 0.00 -0.07 1 Major Zyyacah Kolzaar +372 CORELLIA EGG 0 0 -3586.42 20.84 -361.53 0.00 0.06 0.00 1.00 1 a gravestone bandit +373 CORELLIA EGG 0 0 -3599.05 21.94 -376.17 0.00 0.62 0.00 0.79 1 a gravestone bandit +374 CORELLIA EGG 0 0 -3632.99 24.00 -382.67 0.00 0.88 0.00 -0.48 1 a gravestone bandit +375 CORELLIA EGG 0 0 -3630.30 27.23 -334.37 0.00 -0.69 0.00 0.72 1 a gravestone bandit +376 CORELLIA EGG 0 0 -2949.77 24.55 3426.60 0.00 0.97 0.00 0.24 1 a Rebel trooper +377 CORELLIA EGG 0 0 -2275.59 23.81 2706.36 0.00 -0.65 0.00 0.76 1 a Rebel trooper +378 CORELLIA EGG 0 0 -3612.39 21.08 3125.75 0.00 0.71 0.00 -0.71 1 a Rebel trooper +379 CORELLIA EGG 0 0 -2958.08 20.68 3375.03 0.00 0.24 0.00 0.97 1 a Rebel trooper +380 CORELLIA EGG 0 0 -3638.21 25.63 2841.63 0.00 0.99 0.00 0.16 1 a Rebel trooper +381 CORELLIA EGG 0 0 -3692.76 30.00 3401.13 0.00 0.46 0.00 0.89 1 Vuul's guard +382 CORELLIA EGG 0 0 -3468.54 24.83 3022.99 0.00 1.00 0.00 0.00 1 a red circle guard +385 CORELLIA EGG 0 0 -2962.58 29.55 3401.37 0.00 0.96 0.00 -0.26 1 Vuul's guard +386 CORELLIA EGG 0 0 -2243.79 101.00 2718.39 0.00 1.00 0.00 0.02 1 a Frosch Guard +387 CORELLIA EGG 0 0 -2283.10 78.00 2647.63 0.00 1.00 0.00 -0.01 1 Menchi Lerann (a ryll addict) +388 CORELLIA EGG 0 0 -2984.69 25.89 3369.27 0.00 0.72 0.00 0.70 1 a red circle guard +389 CORELLIA EGG 0 0 -3969.94 16.96 3171.95 0.00 -0.53 0.00 0.85 1 Ladonna Poe (a ryll smuggler) +390 CORELLIA EGG 0 0 -3660.92 30.60 2887.69 0.00 0.52 0.00 0.85 1 Vuul Sarlin (a ryll seller) +391 CORELLIA EGG 0 0 -3674.41 28.69 3437.11 0.00 -0.33 0.00 0.94 1 Vuul's guard +392 CORELLIA EGG 0 0 -3669.86 26.93 2844.13 0.00 -0.07 0.00 1.00 1 a red circle guard +393 CORELLIA EGG 0 0 -3007.95 23.28 3412.87 0.00 1.00 0.00 0.01 1 a red circle guard +394 CORELLIA EGG 0 0 -3101.82 26.69 2799.81 0.00 -0.04 0.00 1.00 1 Vuul's guard +395 CORELLIA EGG 0 0 -2903.26 23.68 3406.03 -0.01 0.85 0.00 -0.53 1 Meatlump Donk (Outpost Guard) +396 CORELLIA EGG 0 0 -2203.59 101.00 3301.17 0.00 0.71 0.00 -0.70 1 a Frosch Guard +397 CORELLIA EGG 0 0 -2316.89 101.02 2687.09 0.00 0.76 0.00 -0.65 1 a fiendish durni +398 CORELLIA EGG 0 0 -3963.50 26.68 3139.93 0.00 0.71 0.00 0.71 1 Vuul's guard +399 CORELLIA EGG 0 0 -2309.37 22.95 1358.03 0.00 0.93 0.00 0.36 1 Vuul's guard +400 CORELLIA EGG 0 0 -2277.78 86.00 1195.00 0.00 0.33 0.00 0.94 1 Wardell +401 CORELLIA EGG 0 0 -2934.19 18.70 1253.17 0.00 0.58 0.00 0.81 1 a ryll smuggler sentry +402 CORELLIA EGG 0 0 -3649.39 21.56 639.09 0.00 -0.31 0.00 0.95 1 a red circle guard +403 CORELLIA EGG 0 0 -3116.90 18.41 1091.93 0.00 0.67 0.01 0.74 1 Meatlump Dunder (Outpost Guard) +404 CORELLIA EGG 0 0 -3301.00 101.00 3243.00 0.00 0.97 0.00 0.26 1 a fiendish durni +405 CORELLIA EGG 0 0 -2982.73 101.00 3401.58 0.00 0.98 0.00 -0.21 1 a fiendish durni +406 CORELLIA EGG 0 0 -3366.35 31.00 3326.49 0.00 -0.47 0.00 0.88 1 Lieutenant Lon Cope (a CorSec officer) +419 CORELLIA EGG 0 0 979.10 31.00 744.02 0.00 -0.66 0.00 0.75 1 Ha'adj +451 CORELLIA EGG 0 0 -3660.24 101.00 3408.16 0.00 0.77 0.00 0.64 1 a Frosch Guard +452 CORELLIA EGG 0 0 -3679.41 101.00 3379.83 0.00 0.96 0.00 0.29 1 a Frosch Guard +453 CORELLIA EGG 0 0 -3631.96 101.00 2861.23 0.00 1.00 0.00 0.02 1 a fiendish durni +454 CORELLIA EGG 0 0 -2934.19 29.40 3375.74 0.00 0.89 0.00 0.47 1 Vuul's guard +455 CORELLIA EGG 0 0 -2948.40 29.73 3455.96 0.00 -0.06 0.00 1.00 1 Vuul's guard +456 CORELLIA EGG 0 0 -3939.11 24.56 3175.04 0.00 0.40 0.01 0.92 1 Meatlump Donk (Outpost Guard) +457 CORELLIA EGG 0 0 -3323.82 101.00 3410.51 0.00 0.89 0.00 -0.46 1 Jaylon Geissler (Vuul Sarlin's right-hand) +469 CORELLIA EGG 0 0 -2325.25 18.71 3280.43 0.00 0.57 0.00 0.82 1 Olivia Bain +470 CORELLIA EGG 0 0 -2265.45 16.85 3296.05 0.00 0.77 0.00 -0.64 1 a ryll smuggler sentry +471 CORELLIA EGG 0 0 -2215.52 17.84 3308.93 0.00 0.77 0.00 -0.63 1 a ryll smuggler refiner +472 CORELLIA EGG 0 0 -2207.94 17.89 3286.31 0.00 0.88 0.00 0.47 1 a ryll smuggler sentry +500 CORELLIA EGG 0 0 -2935.13 29.68 3409.78 0.00 0.07 0.00 1.00 1 Vuul's guard +501 CORELLIA EGG 0 0 -2266.13 25.06 2676.27 0.00 0.87 0.00 0.49 1 a red circle guard +502 CORELLIA EGG 0 0 -2233.03 26.17 2675.83 0.00 0.78 0.00 0.63 1 a red circle guard +503 CORELLIA EGG 0 0 -2256.00 26.18 2656.35 0.00 0.80 0.00 0.61 1 a red circle guard +504 CORELLIA EGG 0 0 -2309.37 22.38 2645.98 0.00 -0.64 0.00 0.77 1 a red circle guard +505 CORELLIA EGG 0 0 -2277.78 24.28 2724.18 0.00 1.00 0.00 0.02 1 a red circle guard +512 CORELLIA EGG 0 0 -2975.39 28.68 3422.70 0.00 0.21 0.00 0.98 1 Vuul's guard +513 CORELLIA EGG 0 0 -2282.24 24.22 2706.31 0.00 1.00 0.00 0.00 1 a red circle guard +514 CORELLIA EGG 0 0 -3131.00 101.44 3162.00 0.00 0.82 0.00 -0.57 1 Voba Duey (a Meatlump lieutenant) +537 CORELLIA EGG 0 0 -2639.03 44.06 2941.84 0.00 0.99 0.00 0.10 1 Louis Bender (a Meatlump Leader) +538 CORELLIA EGG 0 0 -2638.11 44.13 2939.08 0.00 1.00 0.00 -0.02 1 Bossk +539 CORELLIA EGG 0 0 -2701.73 43.88 2867.08 0.00 0.92 0.00 0.39 1 a Bofa Treat Gang thug +540 CORELLIA EGG 0 0 -2701.26 43.78 2870.21 0.00 0.76 0.00 0.65 1 a Bofa Treat Gang thug +541 CORELLIA EGG 0 0 -2705.21 43.66 2872.51 0.00 0.21 0.00 0.98 1 a Bofa Treat Gang thug +542 CORELLIA EGG 0 0 -16.05 1.77 -5207.84 0.00 -0.41 0.00 0.91 1 a Troeman lackey +543 CORELLIA EGG 0 0 -64.91 15.38 -5263.44 0.00 0.04 0.00 1.00 1 a Troeman lackey +544 CORELLIA EGG 0 0 -33.66 28.00 -4424.27 0.00 0.57 0.00 0.82 1 Stregand +545 CORELLIA EGG 0 0 -34.51 6.62 -5215.89 0.00 -0.25 0.00 0.97 1 a Troeman lackey +546 CORELLIA EGG 0 0 -422.00 28.00 -4652.00 0.00 0.86 0.00 -0.51 1 Beast Trainer +547 CORELLIA EGG 0 0 -284.00 28.00 -4696.00 0.00 -0.10 0.00 0.99 1 Lt. Joth +548 CORELLIA EGG 0 0 -274.30 28.00 -4144.89 0.00 0.64 0.00 0.77 1 Kaiya Merel (a Meatlump lieutenant) +549 CORELLIA EGG 0 0 -175.00 28.00 -4435.00 0.00 0.98 0.00 -0.20 1 Halden Wes (a Corellia Times reporter) +550 CORELLIA EGG 0 0 -32.80 28.00 -4417.63 0.00 0.73 0.00 0.69 1 Borgan +623 CORELLIA EGG 0 0 -15.32 2.59 -5160.68 0.00 0.81 0.00 -0.58 1 a Troeman lackey +624 CORELLIA EGG 0 0 -30.04 5.87 -5183.66 0.00 -0.43 0.00 0.90 1 a Troeman lackey +625 CORELLIA EGG 0 0 -172.32 28.00 -4436.82 0.00 0.96 0.00 -0.28 1 a Corellia Times vendor +626 CORELLIA EGG 0 0 -29.71 3.88 -5245.29 0.00 -0.29 0.00 0.96 1 a Troeman lackey +627 CORELLIA EGG 0 0 -129.47 28.00 -4758.75 0.00 0.71 0.00 -0.71 1 a profession counselor +628 CORELLIA EGG 0 0 -529.00 28.00 -4517.00 0.00 0.76 0.00 0.65 1 Dustin +629 CORELLIA EGG 0 0 -408.00 28.00 -4462.00 0.00 0.67 0.00 0.75 1 Ja'inn +630 CORELLIA EGG 0 0 -58.94 15.23 -5223.14 0.00 0.11 0.00 0.99 1 a Troeman lackey +631 CORELLIA EGG 0 0 -69.16 28.00 -4634.16 0.00 0.97 0.00 -0.23 1 Lieutenant Mack Jasper (a CorSec officer) +632 CORELLIA EGG 0 0 -452.07 28.00 -4467.64 0.00 0.33 0.00 0.94 1 Demmi Wot (an ex-Ragtag) +633 CORELLIA EGG 0 0 -500.21 28.00 -4410.67 0.00 -0.45 0.00 0.89 1 an armor thief +634 CORELLIA EGG 0 0 -542.16 28.00 -4399.83 0.00 -0.48 0.00 0.88 1 an armor thief +635 CORELLIA EGG 0 0 -555.88 28.00 -4358.99 0.00 0.00 0.00 1.00 1 an armor thief +636 CORELLIA EGG 0 0 -571.77 28.00 -4405.13 0.00 0.99 0.00 0.16 1 an armor thief +637 CORELLIA EGG 0 0 -583.40 28.00 -4345.14 0.00 -0.02 0.00 1.00 1 an armor thief +638 CORELLIA EGG 0 0 -530.52 28.00 -4374.40 0.00 0.99 0.00 0.10 1 an armor thief +639 CORELLIA EGG 0 0 -694.36 3.45 -4175.44 0.00 0.33 0.00 0.94 1 a rogue CorSec trooper +640 CORELLIA EGG 0 0 -685.97 3.06 -4155.48 0.00 -0.04 0.00 1.00 1 a rogue CorSec trooper +641 CORELLIA EGG 0 0 -669.29 7.06 -4172.25 0.00 1.00 0.00 0.06 1 a rogue CorSec trooper +642 CORELLIA EGG 0 0 -707.89 0.81 -4160.38 0.00 0.21 0.00 0.98 1 a rogue CorSec trooper +645 CORELLIA EGG 0 0 -403.73 28.28 -3619.34 0.00 0.57 0.00 0.82 1 a Mon'Shallok Cadet +646 CORELLIA EGG 0 0 -364.82 29.72 -3611.67 0.00 -0.26 0.00 0.97 1 a Mon'Shallok Supervisor +647 CORELLIA EGG 0 0 -353.92 28.97 -3608.39 0.00 0.78 0.00 0.63 1 a Mon'Shallok Supervisor +648 CORELLIA EGG 0 0 -95.00 8.10 -3963.00 0.00 0.88 0.00 0.47 1 Moril +649 CORELLIA EGG 0 0 -1764.35 0.05 -3269.10 0.00 -0.37 0.00 0.93 1 Echdo Bervekk (a rogue CorSec officer) +650 CORELLIA EGG 0 0 -338.96 28.75 -3629.28 0.00 0.07 0.00 1.00 1 a Mon'Shallok Supervisor +651 CORELLIA EGG 0 0 -1761.49 0.06 -3267.51 0.00 0.97 0.00 0.24 1 Erinn Bonette (a rogue CorSec officer) +652 CORELLIA EGG 0 0 -334.04 27.00 -3598.54 0.00 0.36 0.00 0.93 1 a Mon'Shallok Supervisor +653 CORELLIA EGG 0 0 -597.95 24.26 -3926.74 0.00 -0.48 0.00 0.88 1 Talan Joben (a crate manufacturer) +654 CORELLIA EGG 0 0 -204.25 0.14 -3842.90 0.00 0.86 0.00 0.50 1 Aldalad +682 CORELLIA EGG 0 0 -1853.62 7.00 -1231.86 0.00 0.79 0.00 0.61 1 a Stormtrooper +683 CORELLIA EGG 0 0 -1878.00 7.00 -1225.94 0.00 0.39 0.00 0.92 1 a Stormtrooper +684 CORELLIA EGG 0 0 -1802.52 3.60 -1175.55 0.00 0.26 0.00 0.97 1 T'licl Zanedi (a scientist) +685 CORELLIA EGG 0 0 -1898.65 7.00 -1250.07 0.00 0.96 0.00 -0.28 1 a Stormtrooper +686 CORELLIA EGG 0 0 -1935.74 20.05 -135.81 -0.01 -0.01 -0.01 1.00 1 Riyan Kiner (a retired adventurer) +732 CORELLIA EGG 0 0 405.99 34.19 -4941.07 0.00 -0.19 0.00 0.98 1 a vicious thug +733 CORELLIA EGG 0 0 441.12 33.83 -4979.31 0.00 -0.47 0.00 0.88 1 a vicious thug +734 CORELLIA EGG 0 0 409.53 35.68 -4989.14 0.00 0.04 0.00 1.00 1 a vicious thug +735 CORELLIA EGG 0 0 438.83 3.23 -4646.03 0.00 -0.24 0.00 0.97 1 a rogue CorSec trooper +736 CORELLIA EGG 0 0 434.72 7.23 -4625.86 0.00 0.52 0.00 0.85 1 a rogue CorSec trooper +737 CORELLIA EGG 0 0 407.06 39.67 -4972.18 0.00 -0.51 0.00 0.86 1 Preens B'oola +738 CORELLIA EGG 0 0 451.59 2.70 -4639.91 0.00 -0.27 0.00 0.96 1 a rogue CorSec trooper +739 CORELLIA EGG 0 0 164.41 27.94 -4778.49 0.00 0.05 0.00 1.00 1 Ames Miss'd (a Ragtag Gang Member) +740 CORELLIA EGG 0 0 27.62 28.00 -4344.52 0.00 0.67 0.00 0.74 1 Alliin Mepou (a Meatlump) +741 CORELLIA EGG 0 0 463.72 2.23 -4627.59 0.00 -0.53 0.00 0.85 1 a rogue CorSec trooper +742 CORELLIA EGG 0 0 385.05 30.82 -4968.08 0.00 0.00 0.00 1.00 1 a vicious thug +743 CORELLIA EGG 0 0 405.01 37.65 -4963.78 0.00 -0.42 0.00 0.91 1 a vicious thug +744 CORELLIA EGG 0 0 452.31 0.50 -4654.64 0.00 -0.21 0.00 0.98 1 a rogue CorSec trooper +745 CORELLIA EGG 0 0 646.00 0.11 -4439.00 0.00 0.79 0.00 -0.61 1 Maerzen +746 CORELLIA EGG 0 0 428.65 42.45 -4945.53 0.00 -0.32 0.00 0.95 1 a vicious thug +747 CORELLIA EGG 0 0 14.44 28.00 -4577.37 0.00 0.89 0.00 -0.45 1 Frye Troeman (a businessman) +758 CORELLIA EGG 0 0 324.55 31.14 -4453.69 0.00 -0.51 0.00 0.86 1 A Nedgarr Bandit +759 CORELLIA EGG 0 0 364.12 31.61 -4428.90 0.00 1.00 0.00 0.03 1 A Nedgarr Bandit +760 CORELLIA EGG 0 0 363.84 28.28 -4376.60 0.00 0.94 0.00 0.35 1 A Nedgarr Bandit +761 CORELLIA EGG 0 0 329.58 41.21 -4333.41 0.00 0.97 0.00 0.26 1 A Nedgarr Bandit +762 CORELLIA EGG 0 0 297.81 30.33 -4366.73 0.00 -0.61 0.00 0.79 1 A Nedgarr Bandit +763 CORELLIA EGG 0 0 309.87 30.78 -4418.15 0.00 0.97 0.00 -0.25 1 A Nedgarr Bandit +764 CORELLIA EGG 0 0 330.88 32.48 -4399.72 0.00 -0.50 0.00 0.87 1 A Nedgarr Bandit +780 CORELLIA EGG 0 0 185.01 27.99 -4261.43 0.00 0.87 0.00 -0.49 1 Pol Handerin (a farmer) +781 CORELLIA EGG 0 0 304.01 4.34 -3983.22 0.00 -0.37 0.00 0.93 1 an enraged carrion spat +782 CORELLIA EGG 0 0 315.38 3.69 -3991.76 0.00 0.82 0.00 0.57 1 Gravefeather (an enraged carrion spat) +783 CORELLIA EGG 0 0 333.08 9.57 -3938.50 0.00 0.15 0.00 0.99 1 an enraged carrion spat +784 CORELLIA EGG 0 0 308.14 1.73 -4012.96 0.00 0.90 0.00 -0.43 1 an enraged carrion spat +785 CORELLIA EGG 0 0 347.48 3.15 -3982.35 0.00 0.34 0.00 0.94 1 an enraged carrion spat +786 CORELLIA EGG 0 0 259.41 3.87 -3992.63 0.00 0.79 0.00 -0.62 1 an enraged carrion spat +787 CORELLIA EGG 0 0 264.12 12.35 -3940.36 0.00 0.41 0.00 0.91 1 an enraged carrion spat +788 CORELLIA EGG 0 0 1881.14 1.71 -226.77 0.00 0.37 0.00 0.93 1 a zealot of Lord Nyax +789 CORELLIA EGG 0 0 100.28 16.74 1689.50 0.00 0.31 0.00 0.95 1 Kiyan Riner (a retired adventurer) +790 CORELLIA EGG 0 0 142.19 48.00 4543.93 0.00 -0.06 0.00 1.00 1 a Rebel trooper +791 CORELLIA EGG 0 0 151.51 48.00 4515.36 0.00 0.86 0.00 -0.51 1 a Rebel trooper +792 CORELLIA EGG 0 0 164.35 48.00 4505.91 0.00 0.92 0.00 0.40 1 a Rebel trooper +793 CORELLIA EGG 0 0 112.81 55.01 4523.97 0.00 0.77 0.00 -0.64 1 a Rebel trooper +794 CORELLIA EGG 0 0 125.67 48.00 4509.39 0.00 0.24 0.00 0.97 1 a Rebel trooper +795 CORELLIA EGG 0 0 130.27 48.00 4537.98 0.00 -0.42 0.00 0.91 1 a Rebel trooper +796 CORELLIA EGG 0 0 141.91 48.00 4482.43 0.00 0.96 0.00 0.28 1 a Rebel trooper +797 CORELLIA EGG 0 0 150.28 48.00 4531.16 0.00 -0.64 0.00 0.77 1 a Rebel trooper +818 CORELLIA EGG 0 0 118.17 48.00 4536.69 0.00 -0.55 0.00 0.84 1 a Rebel trooper +819 CORELLIA EGG 0 0 118.86 55.01 4528.86 0.00 -0.05 0.00 1.00 1 a Rebel trooper +820 CORELLIA EGG 0 0 153.68 48.00 4492.25 0.00 0.93 0.00 0.36 1 a Rebel trooper +821 CORELLIA EGG 0 0 3782.15 380.00 -4078.71 0.00 1.00 0.00 -0.10 1 a Stormtrooper +822 CORELLIA EGG 0 0 3744.11 387.01 -4062.64 0.00 0.96 0.00 -0.29 1 a Stormtrooper +823 CORELLIA EGG 0 0 3770.20 387.01 -4000.89 0.00 0.74 0.00 -0.67 1 a Stormtrooper +824 CORELLIA EGG 0 0 3765.35 380.00 -4011.89 0.00 -0.32 0.00 0.95 1 a Stormtrooper +843 CORELLIA EGG 0 0 3744.15 387.01 -4054.08 0.00 -0.47 0.00 0.88 1 a Stormtrooper +844 CORELLIA EGG 0 0 3818.71 380.00 -4050.95 0.00 0.68 0.00 0.73 1 a Stormtrooper +845 CORELLIA EGG 0 0 3791.06 380.00 -4077.41 0.00 1.00 0.00 -0.02 1 a Stormtrooper +846 CORELLIA EGG 0 0 3775.98 387.01 -3994.85 0.00 -0.16 0.00 0.99 1 a Stormtrooper +847 CORELLIA EGG 0 0 3752.14 380.00 -4042.81 0.00 -0.46 0.00 0.89 1 a Stormtrooper +848 CORELLIA EGG 0 0 3808.24 380.00 -4020.23 0.00 0.35 0.00 0.94 1 a Stormtrooper +849 CORELLIA EGG 0 0 2546.51 41.45 5094.45 0.00 0.85 0.00 -0.53 1 Cara Raeth +850 CORELLIA EGG 0 0 3001.98 310.21 4981.12 0.00 0.43 0.00 0.90 1 a Ragtag cudgel +851 CORELLIA EGG 0 0 3871.14 269.27 5626.53 0.00 -0.55 0.00 0.83 1 Myron Beech +852 CORELLIA EGG 0 0 3360.20 456.87 6022.67 0.00 0.04 0.00 1.00 1 a Grey Shroud terrorist +853 CORELLIA EGG 0 0 3050.61 363.76 5406.37 0.00 0.98 0.00 -0.18 1 a rogue CorSec miscreant +854 CORELLIA EGG 0 0 2994.35 313.69 5014.23 0.00 0.91 0.00 0.42 1 a Ragtag cudgel +855 CORELLIA EGG 0 0 2936.51 356.30 5848.91 0.00 0.31 0.00 0.95 1 a Chirq Council ruffian +856 CORELLIA EGG 0 0 3222.11 290.00 4933.59 0.00 0.82 0.00 -0.58 1 a Ragtag cudgel +857 CORELLIA EGG 0 0 3327.09 349.67 4812.24 0.00 -0.11 0.00 0.99 1 a Drall patriot tactician +858 CORELLIA EGG 0 0 3686.04 198.55 5344.20 0.00 0.49 0.00 0.87 1 Genovin Jasha (a Chirq Council adjutant) +859 CORELLIA EGG 0 0 3178.36 300.00 5371.88 0.00 0.92 0.00 -0.40 1 Captain Vitala Baize (a CorSec officer) +860 CORELLIA EGG 0 0 2450.25 35.89 5034.73 0.00 -0.06 0.00 1.00 1 Teniel Waray (a CorSec agent) +861 CORELLIA EGG 0 0 2978.99 348.61 5900.14 0.00 1.00 0.00 0.05 1 a Monumenter poacher +862 CORELLIA EGG 0 0 3316.93 447.37 5940.75 0.00 1.00 0.00 -0.04 1 a Grey Shroud terrorist +863 CORELLIA EGG 0 0 4005.47 1.55 4852.44 0.00 0.99 0.00 0.16 1 a Chirq Council sentinel +864 CORELLIA EGG 0 0 2976.54 343.33 5850.63 0.00 -0.08 0.00 1.00 1 a Chirq Council ruffian +865 CORELLIA EGG 0 0 3354.35 457.57 5998.57 0.00 1.00 0.00 0.07 1 Ebela Puckett (a Grey Shroud crew leader) +866 CORELLIA EGG 0 0 3084.07 280.00 4979.36 0.00 0.13 0.00 0.99 1 Lilith Laughlin (a small-time thug) +867 CORELLIA EGG 0 0 3656.66 201.63 5379.43 0.00 0.95 0.00 -0.33 1 a Chirq Council assassin +868 CORELLIA EGG 0 0 3921.26 0.25 4833.59 0.00 0.68 0.00 0.73 1 Hurley Klakk (a CorSec agent) +869 CORELLIA EGG 0 0 3272.22 365.61 4811.19 0.00 0.61 0.00 0.80 1 Dayana (a Selonian peacekeeper) +870 CORELLIA EGG 0 0 3071.81 364.21 5392.40 0.00 0.98 0.00 0.17 1 a rogue CorSec miscreant +871 CORELLIA EGG 0 0 4022.29 1.55 4841.15 0.00 -0.46 0.00 0.89 1 a Chirq Council sentinel +872 CORELLIA EGG 0 0 2994.39 350.77 5884.34 0.00 0.96 0.00 0.28 1 a Monumenter poacher +873 CORELLIA EGG 0 0 3276.87 300.00 5384.97 0.00 0.93 0.00 0.37 1 Gwhirrye Baric (a hospital owner) +874 CORELLIA EGG 0 0 3096.29 279.97 5011.30 0.00 0.97 0.00 -0.25 1 Commander Talte +902 CORELLIA EGG 0 0 3166.38 290.00 4989.97 0.00 0.69 0.00 0.73 1 Angela +903 CORELLIA EGG 0 0 3801.64 208.00 5420.51 0.00 0.48 0.00 0.88 1 a Sleepless Brotherhood Rogue +904 CORELLIA EGG 0 0 2609.96 154.58 5643.73 0.00 0.99 0.00 0.10 1 a Chirq Council lookout +905 CORELLIA EGG 0 0 3244.74 290.11 4941.27 0.00 -0.31 0.00 0.95 1 Ventil Tamplin (a Ragtag cudgel) +906 CORELLIA EGG 0 0 3258.71 290.00 4964.77 0.00 -0.30 0.00 0.96 1 a Ragtag cudgel +907 CORELLIA EGG 0 0 3235.82 290.00 4952.83 0.00 -0.60 0.00 0.80 1 a Ragtag cudgel +908 CORELLIA EGG 0 0 3656.71 196.57 5328.47 0.00 0.99 0.00 -0.11 1 Seyda Shae (a Chirq Council adjutant) +920 CORELLIA EGG 0 0 3061.26 364.72 5427.62 0.00 0.96 0.00 0.29 1 Xyrias Undea (a rogue CorSec officer) +921 CORELLIA EGG 0 0 3676.76 186.83 5309.71 0.00 1.00 0.00 0.10 1 a Chirq Council assassin +922 CORELLIA EGG 0 0 3699.98 204.46 5363.92 0.00 0.39 0.00 0.92 1 a Chirq Council assassin +923 CORELLIA EGG 0 0 4007.92 5.28 4864.33 0.00 0.01 0.00 1.00 1 a Chirq Council sentinel +924 CORELLIA EGG 0 0 3994.58 1.98 4842.12 0.00 0.44 0.00 0.90 1 a Chirq Council sentinel +925 CORELLIA EGG 0 0 4013.92 1.00 4851.86 0.00 0.99 0.00 -0.11 1 a Chirq Council sentinel +955 CORELLIA EGG 0 0 2656.40 151.90 5642.59 0.00 0.71 0.00 0.70 1 a Chirq Council lookout +956 CORELLIA EGG 0 0 3340.43 453.31 5969.40 0.00 0.96 0.00 0.28 1 a Grey Shroud terrorist +957 CORELLIA EGG 0 0 3355.87 350.73 4827.45 0.00 0.39 0.00 0.92 1 a Drall patriot tactician +958 CORELLIA EGG 0 0 2946.17 356.90 5870.02 0.00 0.94 0.00 -0.34 1 a Monumenter poacher +959 CORELLIA EGG 0 0 2995.17 344.07 5863.83 0.00 -0.25 0.00 0.97 1 a Chirq Council ruffian +960 CORELLIA EGG 0 0 2444.90 40.75 5074.91 0.00 -0.05 0.00 1.00 1 a Chirq Council watcher +961 CORELLIA EGG 0 0 2438.52 40.75 5069.58 0.00 -0.70 0.00 0.72 1 a Chirq Council watcher +962 CORELLIA EGG 0 0 2480.42 43.30 5065.87 0.00 0.70 0.00 0.71 1 a Chirq Council watcher +991 CORELLIA EGG 0 0 3326.61 344.35 4836.38 0.00 -0.30 0.00 0.95 1 a Drall patriot warrior +992 CORELLIA EGG 0 0 4030.40 5.30 4831.04 0.00 0.92 0.00 0.40 1 Dain Pax (a Chirq Council sub-councilor) +993 CORELLIA EGG 0 0 3331.68 454.53 5987.93 0.00 1.00 0.00 -0.09 1 a Grey Shroud terrorist +994 CORELLIA EGG 0 0 3052.68 366.52 5444.08 0.00 -0.07 0.00 1.00 1 a rogue CorSec miscreant +995 CORELLIA EGG 0 0 3646.06 198.64 5352.62 0.00 0.85 0.00 0.53 1 a Chirq Council assassin +996 CORELLIA EGG 0 0 3299.81 446.37 5955.14 0.00 -0.44 0.00 0.90 1 a Grey Shroud terrorist +997 CORELLIA EGG 0 0 2958.42 349.16 5906.64 0.00 0.30 0.00 0.95 1 a Monumenter poacher +998 CORELLIA EGG 0 0 2634.74 157.26 5681.50 0.00 -0.69 0.00 0.72 1 a Chirq Council lookout +999 CORELLIA EGG 0 0 2672.48 160.54 5612.74 0.00 -0.47 0.00 0.88 1 Galvain Tark (an animal handler) +1000 CORELLIA EGG 0 0 3000.44 327.73 5815.36 0.00 -0.24 0.00 0.97 1 a Chirq Council ruffian +1001 CORELLIA EGG 0 0 3097.51 364.71 5456.12 0.00 0.39 0.00 0.92 1 a rogue CorSec miscreant +1002 CORELLIA EGG 0 0 3078.01 300.00 5175.80 0.00 1.00 0.00 0.01 1 Yaron +1005 CORELLIA EGG 0 0 3291.04 454.42 5926.47 0.00 0.95 0.00 -0.31 1 a Grey Shroud terrorist +1006 CORELLIA EGG 0 0 3258.73 290.00 4983.08 0.00 -0.31 0.00 0.95 1 a Ragtag cudgel +1023 CORELLIA EGG 0 0 3003.22 334.78 5836.62 0.00 -0.34 0.00 0.94 1 a Chirq Council ruffian +1024 CORELLIA EGG 0 0 3987.86 6.02 4828.82 0.00 0.92 0.00 -0.38 1 a Chirq Council sentinel +1025 CORELLIA EGG 0 0 2455.32 34.33 5047.45 0.00 -0.02 0.00 1.00 1 a Chirq Council watcher +1026 CORELLIA EGG 0 0 2459.89 35.61 5079.24 0.00 0.08 0.00 1.00 1 a Chirq Council watcher +1027 CORELLIA EGG 0 0 3070.76 364.28 5473.42 0.00 0.65 0.00 0.76 1 a rogue CorSec miscreant +1028 CORELLIA EGG 0 0 2475.62 43.30 5072.57 0.00 -0.02 0.00 1.00 1 a Chirq Council watcher +1032 CORELLIA EGG 0 0 2998.89 354.27 5903.71 0.00 0.60 0.00 0.80 1 a Monumenter poacher +1033 CORELLIA EGG 0 0 2629.76 144.37 5621.23 0.00 0.99 0.00 -0.12 1 a Chirq Council lookout +1034 CORELLIA EGG 0 0 2461.56 34.52 5047.28 0.00 0.06 0.00 1.00 1 a Chirq Council watcher +1035 CORELLIA EGG 0 0 2609.63 158.00 5665.03 0.00 0.22 0.00 0.98 1 a Chirq Council lookout +1036 CORELLIA EGG 0 0 3085.88 364.10 5429.59 0.00 0.98 0.00 0.18 1 a rogue CorSec miscreant +1049 CORELLIA EGG 0 0 3137.00 300.00 5295.68 0.00 0.71 0.00 0.71 1 Jade McDonagh (a Chirq Council adjutant) +1050 CORELLIA EGG 0 0 3021.90 353.44 5423.10 0.00 -0.57 0.00 0.82 1 a rogue CorSec miscreant +1051 CORELLIA EGG 0 0 2986.72 310.33 4996.12 0.00 0.78 0.00 0.62 1 Lilea Norith (a Ragtag cudgel) +1052 CORELLIA EGG 0 0 3816.22 206.19 5422.12 0.00 0.63 0.00 0.77 1 a Sleepless Brotherhood Rogue +1053 CORELLIA EGG 0 0 2970.68 347.89 5871.54 0.00 0.60 0.00 0.80 1 a Monumenter poacher +1054 CORELLIA EGG 0 0 3920.91 0.21 4827.51 0.00 0.59 0.00 0.81 1 Chun Solso (a CorSec agent) +1055 CORELLIA EGG 0 0 4007.65 1.28 4869.78 0.00 -0.01 0.00 1.00 1 Jaalib Rigel (an evironmentalist) +1056 CORELLIA EGG 0 0 2969.30 337.65 5831.73 0.00 0.07 0.00 1.00 1 a Chirq Council ruffian +1057 CORELLIA EGG 0 0 3610.92 430.79 5809.92 -0.01 0.85 0.00 -0.53 1 Meatlump Dunder (Outpost Guard) +1058 CORELLIA EGG 0 0 3594.45 436.23 5832.27 0.00 -0.01 0.01 1.00 1 Meatlump Dunder (Outpost Guard) +1059 CORELLIA EGG 0 0 3627.36 434.92 5832.42 -0.01 0.98 0.00 0.22 1 Meatlump Donk (Outpost Guard) +1060 CORELLIA EGG 0 0 3642.99 420.06 6638.22 0.00 -0.54 0.00 0.84 1 a hunter +1091 CORELLIA EGG 0 0 3866.23 380.11 6525.31 0.00 0.83 0.00 0.56 1 a psychotic cave-dweller elder +1092 CORELLIA EGG 0 0 3626.57 415.25 6644.77 0.00 0.91 0.00 0.43 1 a hunter +1093 CORELLIA EGG 0 0 3858.60 380.59 6514.47 0.00 0.83 0.00 0.55 1 a psychotic cave-dweller elder +1094 CORELLIA EGG 0 0 6691.20 315.00 -5578.48 0.00 0.68 0.00 0.73 1 a Stormtrooper +1095 CORELLIA EGG 0 0 6712.78 315.00 -5810.38 0.00 0.83 0.00 0.56 1 an Imperial sergeant +1096 CORELLIA EGG 0 0 6691.46 315.00 -5570.32 0.00 0.70 0.00 0.72 1 a Stormtrooper +1097 CORELLIA EGG 0 0 6826.70 315.00 -5820.68 0.00 -0.43 0.00 0.90 1 a Stormtrooper +1098 CORELLIA EGG 0 0 6825.35 315.00 -5620.37 0.00 -0.66 0.00 0.75 1 a Stormtrooper +1099 CORELLIA EGG 0 0 6908.17 330.00 -5608.54 0.00 0.24 0.00 0.97 1 an Imperial Sergeant Major +1100 CORELLIA EGG 0 0 6699.38 315.00 -5809.72 0.00 0.94 0.00 -0.35 1 a Stormtrooper +1101 CORELLIA EGG 0 0 6646.02 330.00 -5932.05 0.00 -0.33 0.00 0.94 1 a Stormtrooper guard +1102 CORELLIA EGG 0 0 6644.26 330.00 -5937.08 0.00 0.86 0.00 -0.51 1 a Stormtrooper guard +1103 CORELLIA EGG 0 0 6800.57 314.97 -5623.70 0.00 0.48 0.00 0.88 1 Dalya +1104 CORELLIA EGG 0 0 6842.92 315.00 -5604.11 0.00 0.47 0.00 0.88 1 a Stormtrooper +1105 CORELLIA EGG 0 0 6649.56 330.00 -5935.60 0.00 0.26 0.00 0.96 1 a Stormtrooper guard +1106 CORELLIA EGG 0 0 6852.00 315.00 -5831.51 0.00 0.90 0.00 0.43 1 a Stormtrooper +1107 CORELLIA EGG 0 0 6707.89 315.00 -5814.25 0.00 0.91 0.00 0.41 1 a Stormtrooper +1108 CORELLIA EGG 0 0 6837.95 315.00 -5806.84 0.00 -0.48 0.00 0.88 1 a Stormtrooper +1109 CORELLIA EGG 0 0 6823.92 315.00 -5597.88 0.00 0.87 0.00 0.49 1 an Imperial sergeant +1110 CORELLIA EGG 0 0 6909.29 330.00 -5606.48 0.00 0.98 0.00 -0.22 1 an Imperial Staff Sergeant +1111 CORELLIA EGG 0 0 6795.22 315.00 -5702.92 0.00 0.53 0.00 0.85 1 an Imperial sergeant +1112 CORELLIA EGG 0 0 6794.42 315.00 -5696.60 0.00 0.71 0.00 0.70 1 a Stormtrooper +1113 CORELLIA EGG 0 0 6938.68 330.00 -5523.16 0.00 0.77 0.00 -0.64 1 Rogan Fel +1114 CORELLIA EGG 0 0 6984.66 436.39 -5669.18 0.00 1.00 0.00 -0.09 1 an Imperial courier +1132 CORELLIA EGG 0 0 6362.50 338.00 7362.71 0.00 0.29 0.00 0.96 1 a Ragtag goon +1133 CORELLIA EGG 0 0 6364.12 338.00 7371.39 0.00 0.84 0.00 0.54 1 a Ragtag goon +1151 CORELLIA EGG 0 0 7346.02 310.00 6922.59 0.00 -0.01 0.00 1.00 1 a Ragtag goon +1152 CORELLIA EGG 0 0 7343.89 310.02 6935.89 0.00 0.74 0.00 0.67 1 a Ragtag goon +1156 CORELLIA EGG 0 0 -6905.00 448.00 4533.00 0.00 0.00 0.00 0.00 1 a vicious slice hound +1157 CORELLIA EGG 0 0 4992.00 5.00 2914.00 0.00 0.00 0.00 0.00 1 a vicious slice hound +1158 CORELLIA EGG 0 0 746.00 395.00 2511.00 0.00 0.00 0.00 0.00 1 a vicious slice hound +1159 CORELLIA EGG 0 0 -4735.00 28.00 -1511.00 0.00 0.00 0.00 0.00 1 a Flail slayer +1160 CORELLIA EGG 0 0 -4735.00 28.00 -1511.00 0.00 0.00 0.00 0.00 1 a Flail cutthroat +1161 DANTOOINE EGG 0 0 -7245.53 2.31 -823.40 0.00 -0.40 0.00 0.92 1 a Kunga scout +1162 DANTOOINE EGG 0 0 -7124.68 3.00 -941.23 0.00 1.00 0.00 0.09 1 a Kunga scout +1163 DANTOOINE EGG 0 0 -7199.33 3.00 -908.15 0.00 0.54 0.00 0.84 1 a Kunga warrior +1164 DANTOOINE EGG 0 0 -7195.49 3.00 -913.13 0.00 0.33 0.00 0.94 1 a Kunga warrior +1165 DANTOOINE EGG 0 0 -7209.88 3.00 -923.01 0.00 0.39 0.00 0.92 1 a Kunga clan leader +1166 DANTOOINE EGG 0 0 -6599.08 19.56 5654.78 0.00 0.08 0.00 1.00 1 an enforcer +1167 DANTOOINE EGG 0 0 -6817.92 46.00 5511.86 0.00 1.00 0.00 0.07 1 a Rebel recruiter +1168 DANTOOINE EGG 0 0 -6594.00 18.40 5689.00 0.00 0.96 0.00 -0.28 1 Nola +1169 DANTOOINE EGG 0 0 -6567.25 16.88 5685.90 0.00 -0.65 0.00 0.76 1 an enforcer +1170 DANTOOINE EGG 0 0 -6628.21 22.13 5704.44 0.00 0.83 0.00 0.55 1 an enforcer +1197 DANTOOINE EGG 0 0 -5650.71 15.52 1948.79 0.00 0.74 0.00 -0.67 1 a Stormtrooper +1198 DANTOOINE EGG 0 0 -5650.71 15.23 1956.05 0.00 0.72 0.00 -0.70 1 a Stormtrooper +1199 DANTOOINE EGG 0 0 -5677.28 15.44 1950.34 0.00 0.82 0.00 -0.57 1 a Stormtrooper +1200 DANTOOINE EGG 0 0 -5652.44 8.40 1922.08 0.00 0.97 0.00 -0.24 1 a Stormtrooper +1201 DANTOOINE EGG 0 0 -5618.96 15.10 1950.99 0.00 0.65 0.00 0.76 1 a Stormtrooper +1202 DANTOOINE EGG 0 0 -5634.40 28.22 1981.98 0.00 -0.21 0.00 0.98 1 a Stormtrooper +1203 DANTOOINE EGG 0 0 -3865.15 2.50 -5704.09 0.00 1.00 0.00 -0.05 1 a Janta warrior +1204 DANTOOINE EGG 0 0 -3824.38 1.16 -5659.03 0.00 0.14 0.00 0.99 1 a Janta scout +1205 DANTOOINE EGG 0 0 -3870.56 2.50 -5690.56 0.00 1.00 0.00 0.09 1 a Janta clan leader +1206 DANTOOINE EGG 0 0 -3871.68 2.50 -5705.37 0.00 0.98 0.00 0.18 1 a Janta warrior +1207 DANTOOINE EGG 0 0 -3917.98 2.70 -5697.53 0.00 0.45 0.00 0.90 1 a Janta scout +1208 DANTOOINE EGG 0 0 -3756.43 3.41 -5717.92 0.00 0.26 0.00 0.96 1 a Janta scout +1209 DANTOOINE EGG 0 0 -3825.14 2.43 -5788.01 0.00 0.83 0.00 -0.55 1 a Janta scout +1215 DANTOOINE EGG 0 0 4051.79 10.86 -5127.00 0.00 0.97 0.00 -0.23 1 a Mokk hunter +1216 DANTOOINE EGG 0 0 4069.95 10.65 -5144.73 0.00 0.39 0.00 0.92 1 a Mokk hunter +1217 DANTOOINE EGG 0 0 4054.05 12.52 -5141.72 0.00 0.95 0.00 -0.31 1 a Mokk hunter +1221 DANTOOINE EGG 0 0 4042.77 1.96 5426.95 0.00 0.98 0.00 0.22 1 a Rebel trooper +1222 DANTOOINE EGG 0 0 4057.65 2.03 5410.56 0.00 0.84 0.00 0.54 1 a Rebel trooper +1223 DANTOOINE EGG 0 0 4041.85 2.00 5411.06 0.00 0.99 0.00 -0.17 1 a Rebel trooper +1237 DANTOOINE EGG 0 0 2911.92 2.21 4517.31 0.00 0.84 0.00 -0.55 1 a Dark Jedi Sentinel +1238 DANTOOINE EGG 0 0 2099.37 80.82 7435.46 0.00 0.43 0.00 0.90 1 Lepwalk C'han +1239 DANTOOINE EGG 0 0 4501.84 1.99 -6496.45 0.00 -0.42 0.00 0.91 1 a Mokk hunter +1240 DANTOOINE EGG 0 0 4517.93 3.03 -6494.32 0.00 0.67 0.00 0.74 1 a Mokk hunter +1241 DANTOOINE EGG 0 0 4491.90 3.72 -6481.56 0.00 0.97 0.00 -0.25 1 a Mokk hunter +1242 DANTOOINE EGG 0 0 5479.57 12.23 -675.30 0.00 0.71 0.00 0.71 1 a Mokk scout +1243 DANTOOINE EGG 0 0 5566.81 0.16 -644.43 0.00 0.98 0.00 -0.21 1 a Mokk warrior +1244 DANTOOINE EGG 0 0 5573.73 0.24 -646.79 0.00 0.99 0.00 -0.13 1 a Mokk warrior +1245 DANTOOINE EGG 0 0 5574.36 0.32 -634.73 0.00 0.96 0.00 -0.27 1 a Mokk clan leader +1246 DANTOOINE EGG 0 0 5474.17 1.37 5841.03 0.00 -0.20 0.00 0.98 1 an Imperial master sergeant +1247 DANTOOINE EGG 0 0 5472.35 1.87 5847.51 0.00 0.99 0.00 0.11 1 a Stormtrooper +1279 DATHOMIR EGG 0 0 -6304.16 554.02 -7279.93 0.00 1.00 0.00 -0.07 1 Death Trooper +1280 DATHOMIR EGG 0 0 -6969.52 550.00 -6502.71 0.00 0.99 0.00 0.17 1 Soon Dom +1281 DATHOMIR EGG 0 0 -6176.67 537.65 -6951.74 0.00 0.94 0.00 -0.34 1 Undead +1282 DATHOMIR EGG 0 0 -7305.73 570.00 -7323.70 0.00 0.82 0.00 -0.57 1 Death Trooper +1283 DATHOMIR EGG 0 0 -7128.29 540.00 -7312.91 0.00 0.84 0.00 0.55 1 Death Trooper +1284 DATHOMIR EGG 0 0 -7441.35 557.36 -6581.64 0.00 0.17 0.00 0.98 1 Undead +1285 DATHOMIR EGG 0 0 -7361.51 560.01 -7178.04 0.00 0.68 0.00 0.73 1 Undead +1286 DATHOMIR EGG 0 0 -6278.81 561.55 -7523.66 0.00 1.00 0.00 -0.09 1 Junk Dealer +1287 DATHOMIR EGG 0 0 -6750.00 540.00 -7486.00 0.00 0.86 0.00 -0.51 1 Undead +1288 DATHOMIR EGG 0 0 -7269.96 560.00 -6983.86 0.00 0.68 0.00 0.74 1 Undead +1289 DATHOMIR EGG 0 0 -6625.01 540.00 -7370.91 0.00 -0.70 0.00 0.71 1 Tal Freykaa +1290 DATHOMIR EGG 0 0 -6415.16 544.05 -6527.51 0.00 -0.43 0.00 0.90 1 Undead +1291 DATHOMIR EGG 0 0 -7421.47 570.00 -7313.11 0.00 0.96 0.00 0.27 1 Klex Fulgor +1292 DATHOMIR EGG 0 0 -7250.13 569.38 -7480.44 0.00 0.07 0.00 1.00 1 Treena Moldovia +1293 DATHOMIR EGG 0 0 -6854.96 551.33 -6594.92 0.00 0.97 0.00 0.24 1 Death Trooper +1294 DATHOMIR EGG 0 0 -6843.94 552.25 -6463.33 0.00 -0.56 0.00 0.83 1 Camp Guard +1295 DATHOMIR EGG 0 0 -6710.87 556.47 -6444.48 0.00 0.76 0.00 -0.65 1 Undead +1296 DATHOMIR EGG 0 0 -7308.49 551.00 -6468.49 0.00 0.76 0.00 -0.65 1 Undead +1297 DATHOMIR EGG 0 0 -7427.54 570.00 -7334.35 0.00 0.70 0.00 0.71 1 HX-138 +1298 DATHOMIR EGG 0 0 -7266.01 568.60 -7231.41 0.00 0.76 0.00 0.65 1 Death Trooper +1299 DATHOMIR EGG 0 0 -7466.45 560.00 -6678.87 0.00 0.89 0.00 0.45 1 Wertsnik +1300 DATHOMIR EGG 0 0 -7283.74 560.00 -7080.80 0.00 0.99 0.00 0.15 1 Undead +1301 DATHOMIR EGG 0 0 -6443.46 564.79 -7204.89 0.00 0.92 0.00 -0.39 1 Undead +1302 DATHOMIR EGG 0 0 -6295.34 555.42 -6688.35 0.00 0.98 0.00 0.20 1 Death Trooper +1303 DATHOMIR EGG 0 0 -6402.12 566.22 -6818.26 0.00 0.99 0.00 0.12 1 Undead +1304 DATHOMIR EGG 0 0 -7354.89 570.00 -7392.98 0.00 0.34 0.00 0.94 1 Death Trooper +1305 DATHOMIR EGG 0 0 -7315.65 574.30 -7482.99 0.00 0.97 0.00 0.24 1 Vina Maljazara +1306 DATHOMIR EGG 0 0 -7394.99 570.00 -7489.04 0.00 0.72 0.00 0.69 1 Death Trooper +1307 DATHOMIR EGG 0 0 -7029.70 540.00 -7216.08 0.00 -0.43 0.00 0.90 1 Undead +1308 DATHOMIR EGG 0 0 -7503.71 560.06 -6720.04 0.00 -0.12 0.00 0.99 1 Undead +1309 DATHOMIR EGG 0 0 -6949.63 540.00 -7504.10 0.00 0.72 0.00 0.69 1 Undead +1310 DATHOMIR EGG 0 0 -6984.04 550.00 -6558.20 0.00 0.73 0.00 0.69 1 Death Trooper +1311 DATHOMIR EGG 0 0 -7113.19 540.00 -7240.51 0.00 0.99 0.00 -0.12 1 Undead +1312 DATHOMIR EGG 0 0 -7197.21 553.76 -6664.00 0.00 0.95 0.00 0.32 1 Undead +1313 DATHOMIR EGG 0 0 -7405.02 560.00 -6974.56 0.00 0.86 0.00 0.51 1 Undead +1314 DATHOMIR EGG 0 0 -7317.43 570.00 -7467.02 0.00 -0.60 0.00 0.80 1 Death Trooper +1315 DATHOMIR EGG 0 0 -7216.26 561.73 -7191.73 0.00 -0.70 0.00 0.71 1 Undead +1316 DATHOMIR EGG 0 0 -6320.65 551.41 -6493.57 0.00 0.63 0.00 0.77 1 Undead +1317 DATHOMIR EGG 0 0 -7204.63 558.17 -6763.06 0.00 0.96 0.00 -0.27 1 Undead +1318 DATHOMIR EGG 0 0 -6403.08 563.99 -7175.56 0.00 -0.48 0.00 0.88 1 Undead +1319 DATHOMIR EGG 0 0 -7433.95 569.98 -7257.15 0.00 0.06 0.00 1.00 1 Undead +1320 DATHOMIR EGG 0 0 -6834.12 553.06 -6473.01 0.00 -0.29 0.00 0.96 1 Camp Guard +1321 DATHOMIR EGG 0 0 -7265.34 570.00 -7429.86 0.00 0.85 0.00 -0.52 1 Undead +1322 DATHOMIR EGG 0 0 -6262.26 559.39 -6609.41 0.00 0.97 0.00 -0.24 1 Salek Panaka +1323 DATHOMIR EGG 0 0 -7095.56 540.00 -7405.51 0.00 -0.51 0.00 0.86 1 Undead +1324 DATHOMIR EGG 0 0 -6721.77 540.00 -7411.85 0.00 0.23 0.00 0.97 1 Undead +1325 DATHOMIR EGG 0 0 -6332.23 559.09 -7093.83 0.00 0.97 0.00 0.24 1 Death Trooper +1326 DATHOMIR EGG 0 0 -6363.70 559.97 -7196.28 0.00 0.23 0.00 0.97 1 Undead +1327 DATHOMIR EGG 0 0 -7223.19 560.00 -7088.16 0.00 -0.21 0.00 0.98 1 Undead +1328 DATHOMIR EGG 0 0 -6982.01 540.00 -7387.46 0.00 0.95 0.00 0.31 1 Undead +1329 DATHOMIR EGG 0 0 -7457.90 570.00 -7314.03 0.00 0.98 0.00 0.19 1 a 2-1B surgical droid +1330 DATHOMIR EGG 0 0 -6995.67 550.00 -6618.01 0.00 -0.65 0.00 0.76 1 Undead +1331 DATHOMIR EGG 0 0 -7149.99 562.77 -6936.83 0.00 0.87 0.00 0.49 1 Camp Guard +1332 DATHOMIR EGG 0 0 -7101.31 540.00 -7416.82 0.00 0.42 0.00 0.91 1 Undead +1333 DATHOMIR EGG 0 0 -7430.55 570.00 -7336.69 0.00 0.92 0.00 0.39 1 Camp Guard +1352 DATHOMIR EGG 0 0 -6743.44 551.86 -6473.86 0.00 -0.65 0.00 0.76 1 Undead +1353 DATHOMIR EGG 0 0 -7182.67 559.16 -7144.53 0.00 0.92 0.00 0.39 1 Death Trooper +1354 DATHOMIR EGG 0 0 -6530.94 570.00 -6919.25 0.00 0.81 0.00 -0.58 1 Death Trooper +1355 DATHOMIR EGG 0 0 -7435.35 570.00 -7383.57 0.00 0.10 0.00 1.00 1 Undead +1356 DATHOMIR EGG 0 0 -7453.42 570.00 -7331.77 0.00 1.00 0.00 -0.08 1 Camp Guard +1357 DATHOMIR EGG 0 0 -6438.90 570.00 -6996.34 0.00 0.94 0.00 0.35 1 Death Trooper +1358 DATHOMIR EGG 0 0 -7497.37 560.00 -6955.57 0.00 0.76 0.00 0.66 1 Wesk Kit'pay +1359 DATHOMIR EGG 0 0 -7437.12 570.00 -7392.09 0.00 0.99 0.00 -0.17 1 Death Trooper +1360 DATHOMIR EGG 0 0 -7427.17 570.00 -7427.94 0.00 0.18 0.00 0.98 1 Death Trooper +1361 DATHOMIR EGG 0 0 -7008.96 550.00 -6489.91 0.00 -0.35 0.00 0.94 1 Undead +1362 DATHOMIR EGG 0 0 -6870.52 540.00 -7355.85 0.00 -0.41 0.00 0.91 1 Undead +1363 DATHOMIR EGG 0 0 -6295.17 558.82 -6886.99 0.00 -0.07 0.00 1.00 1 Undead +1364 DATHOMIR EGG 0 0 -6683.05 540.28 -7105.23 0.00 -0.64 0.00 0.77 1 Undead +1365 DATHOMIR EGG 0 0 -7449.28 570.00 -7352.42 0.00 0.51 0.00 0.86 1 Zsu Val +1366 DATHOMIR EGG 0 0 -7348.18 570.00 -7359.54 0.00 0.33 0.00 0.94 1 Death Trooper +1367 DATHOMIR EGG 0 0 -6801.99 547.90 -6773.44 0.00 0.81 0.00 0.58 1 Undead +1368 DATHOMIR EGG 0 0 -7149.59 562.73 -6911.57 0.00 0.83 0.00 0.56 1 Camp Guard +1369 DATHOMIR EGG 0 0 -7007.04 540.00 -7478.87 0.00 0.93 0.00 -0.38 1 Undead +1370 DATHOMIR EGG 0 0 -7134.56 561.30 -6907.17 0.00 -0.44 0.00 0.90 1 Camp Guard +1371 DATHOMIR EGG 0 0 -7450.29 570.00 -7344.61 0.00 0.80 0.00 -0.61 1 Camp Guard +1372 DATHOMIR EGG 0 0 -6854.03 551.40 -6464.14 0.00 1.00 0.00 0.02 1 Kyra 'Naa +1373 DATHOMIR EGG 0 0 -6966.31 550.00 -6610.10 0.00 0.45 0.00 0.89 1 Ool Awmod +1374 DATHOMIR EGG 0 0 -6755.46 550.17 -6567.44 0.00 -0.52 0.00 0.85 1 Undead +1375 DATHOMIR EGG 0 0 -6567.33 568.14 -7006.19 0.00 -0.27 0.00 0.96 1 Death Trooper +1376 DATHOMIR EGG 0 0 -6286.58 561.70 -7531.01 0.00 0.99 0.00 -0.17 1 Stephon Sprocketfire +1377 DATHOMIR EGG 0 0 -6262.10 559.39 -7245.23 0.00 -0.14 0.00 0.99 1 Death Trooper +1378 DATHOMIR EGG 0 0 -7417.91 570.00 -7472.36 0.00 0.04 0.00 1.00 1 Undead +1379 DATHOMIR EGG 0 0 -7137.86 540.10 -7472.35 0.00 0.94 0.00 -0.34 1 Undead +1380 DATHOMIR EGG 0 0 -6901.10 545.00 -7082.49 0.00 0.88 0.00 0.48 1 Undead +1381 DATHOMIR EGG 0 0 -7301.45 570.00 -7408.89 0.00 -0.65 0.00 0.76 1 Death Trooper +1382 DATHOMIR EGG 0 0 -7158.62 563.60 -6915.36 0.00 -0.34 -0.01 0.94 1 TR-522 +1383 DATHOMIR EGG 0 0 -6547.28 540.00 -7449.11 0.00 -0.01 0.00 1.00 1 Undead +1384 DATHOMIR EGG 0 0 -6281.45 561.09 -7519.04 0.00 1.00 0.00 -0.05 1 Camp Guard +1385 DATHOMIR EGG 0 0 -7473.35 560.00 -7154.14 0.00 0.78 0.00 -0.63 1 Undead +1386 DATHOMIR EGG 0 0 -6701.42 542.21 -6731.19 0.00 0.29 0.00 0.96 1 Undead +1387 DATHOMIR EGG 0 0 -6689.00 540.00 -7231.00 0.00 1.00 0.00 -0.01 1 Undead +1388 DATHOMIR EGG 0 0 -7388.39 560.00 -6668.84 0.00 0.90 0.00 0.44 1 Death Trooper +1389 DATHOMIR EGG 0 0 -7219.08 570.00 -7383.37 0.00 0.99 0.00 0.14 1 Undead +1390 DATHOMIR EGG 0 0 -6360.43 545.47 -6558.18 0.00 -0.06 0.00 1.00 1 Navik Geelo +1391 DATHOMIR EGG 0 0 -7343.82 570.00 -7481.45 0.00 0.57 0.00 0.82 1 Death Trooper +1392 DATHOMIR EGG 0 0 -7148.16 562.59 -6941.05 0.00 0.79 0.00 0.61 1 Lieutenant Erlem Marh +1393 DATHOMIR EGG 0 0 -7147.40 550.03 -6554.20 0.00 0.09 0.00 1.00 1 Undead +1394 DATHOMIR EGG 0 0 -6243.00 557.94 -7375.00 0.00 0.01 0.00 1.00 1 Undead +1395 DATHOMIR EGG 0 0 -6713.59 540.84 -6893.40 0.00 0.01 0.00 1.00 1 Death Trooper +1396 DATHOMIR EGG 0 0 -6240.75 557.56 -7047.76 0.00 -0.12 0.00 0.99 1 Undead +1397 DATHOMIR EGG 0 0 -6503.14 551.05 -6489.41 0.00 0.78 0.00 0.62 1 Undead +1398 DATHOMIR EGG 0 0 -6806.51 554.36 -6454.56 0.00 0.83 0.00 -0.55 1 Camp Guard +1399 DATHOMIR EGG 0 0 -7337.25 570.00 -7418.67 0.00 -0.25 0.00 0.97 1 Death Trooper +1400 DATHOMIR EGG 0 0 -6946.57 548.00 -6796.48 0.00 0.48 0.00 0.88 1 Undead +1401 DATHOMIR EGG 0 0 -7392.91 560.00 -6760.70 0.00 0.91 0.00 0.41 1 Undead +1402 DATHOMIR EGG 0 0 -6163.27 535.40 -7273.13 0.00 0.99 0.00 0.12 1 Undead +1403 DATHOMIR EGG 0 0 -6818.56 540.00 -7453.41 0.00 0.19 0.00 0.98 1 Undead +1404 DATHOMIR EGG 0 0 -7417.41 570.00 -7313.26 0.00 0.99 0.00 -0.11 1 Camp Guard +1405 DATHOMIR EGG 0 0 -6900.08 550.00 -6550.37 0.00 0.80 0.00 0.61 1 Death Trooper +1406 DATHOMIR EGG 0 0 -6893.89 540.00 -7197.27 0.00 0.86 0.00 0.52 1 Undead +1407 DATHOMIR EGG 0 0 -6286.69 560.98 -7518.14 0.00 0.99 0.00 0.13 1 a 2-1B surgical droid +1408 DATHOMIR EGG 0 0 -6750.70 540.00 -7326.58 0.00 1.00 0.00 0.03 1 Undead +1409 DATHOMIR EGG 0 0 -6820.05 553.97 -6467.97 0.00 0.74 0.00 -0.68 1 Camp Guard +1410 DATHOMIR EGG 0 0 -6714.27 540.85 -6959.74 0.00 0.20 0.00 0.98 1 Death Trooper +1411 DATHOMIR EGG 0 0 -6832.17 545.22 -7164.61 0.00 0.94 0.00 0.34 1 Undead +1412 DATHOMIR EGG 0 0 -7342.53 570.00 -7459.03 0.00 0.15 0.00 0.99 1 Undead +1413 DATHOMIR EGG 0 0 -6510.59 540.00 -7510.95 0.00 1.00 0.00 0.08 1 Death Trooper +1414 DATHOMIR EGG 0 0 -6876.10 540.00 -7500.06 0.00 0.71 0.00 0.71 1 Undead +1415 DATHOMIR EGG 0 0 -7336.91 570.00 -7331.73 0.00 -0.60 0.00 0.80 1 Death Trooper +1416 DATHOMIR EGG 0 0 -6921.53 540.00 -7243.79 0.00 0.03 0.00 1.00 1 Undead +1417 DATHOMIR EGG 0 0 -6364.58 563.41 -6978.90 0.00 0.81 0.00 -0.59 1 Death Trooper +1418 DATHOMIR EGG 0 0 -7442.48 570.00 -7421.74 0.00 0.45 0.00 0.89 1 Undead +1419 DATHOMIR EGG 0 0 -6719.26 546.40 -6509.70 0.00 -0.60 0.00 0.80 1 Undead +1420 DATHOMIR EGG 0 0 -6496.25 563.55 -7089.60 0.00 -0.22 0.00 0.97 1 Death Trooper +1421 DATHOMIR EGG 0 0 -6575.80 540.00 -7406.42 0.00 0.91 0.00 0.42 1 Undead +1422 DATHOMIR EGG 0 0 -7050.91 553.84 -6743.23 0.00 0.67 0.00 0.74 1 Undead +1423 DATHOMIR EGG 0 0 -6370.37 544.11 -7324.85 0.00 0.77 0.00 0.63 1 Undead +1424 DATHOMIR EGG 0 0 -7458.73 570.00 -7337.41 0.00 1.00 0.00 0.07 1 Camp Guard +1425 DATHOMIR EGG 0 0 -7483.38 568.61 -7284.29 0.00 0.67 0.00 0.74 1 Chak Krist +1426 DATHOMIR EGG 0 0 -7000.86 540.00 -7284.94 0.00 -0.63 0.00 0.78 1 Undead +1427 DATHOMIR EGG 0 0 -6840.47 552.54 -6455.26 0.01 0.89 0.00 -0.47 1 Tripp D'jek +1428 DATHOMIR EGG 0 0 -6577.11 565.61 -6817.66 0.00 0.99 0.00 -0.13 1 Undead +1429 DATHOMIR EGG 0 0 -7353.64 570.00 -7324.67 0.00 0.90 0.00 -0.43 1 Undead +1430 DATHOMIR EGG 0 0 -6499.41 540.00 -7411.34 0.00 -0.34 0.00 0.94 1 Death Trooper +1431 DATHOMIR EGG 0 0 -6218.46 551.89 -6615.27 0.00 1.00 0.00 0.08 1 Undead +1432 DATHOMIR EGG 0 0 -6280.57 561.71 -7528.56 0.00 0.95 0.00 -0.31 1 Camp Guard +1433 DATHOMIR EGG 0 0 -7367.33 570.00 -7362.22 0.00 -0.66 0.00 0.75 1 Undead +1434 DATHOMIR EGG 0 0 -7135.19 561.35 -6917.74 0.00 -0.10 0.00 0.99 1 a 2-1B surgical droid +1435 DATHOMIR EGG 0 0 -7385.34 545.00 -6479.18 0.00 1.00 0.00 0.07 1 Jaina Nassin +1436 DATHOMIR EGG 0 0 -6453.01 544.18 -7331.11 0.00 0.85 0.00 0.53 1 Undead +1437 DATHOMIR EGG 0 0 -6271.04 558.90 -7007.96 0.00 0.96 0.00 -0.29 1 Undead +1438 DATHOMIR EGG 0 0 -6379.70 556.01 -6447.49 0.00 -0.62 0.00 0.78 1 Death Trooper +1439 DATHOMIR EGG 0 0 -7150.34 562.80 -6931.61 0.00 0.59 0.00 0.81 1 Camp Guard +1440 DATHOMIR EGG 0 0 -7438.80 560.00 -6788.02 0.00 0.11 0.00 0.99 1 Undead +1441 DATHOMIR EGG 0 0 -6937.13 553.37 -6440.71 0.00 0.75 0.00 0.66 1 Undead +1442 DATHOMIR EGG 0 0 -6962.57 550.00 -6530.16 0.00 -0.56 0.00 0.83 1 Undead +1443 DATHOMIR EGG 0 0 -7152.88 563.05 -6927.64 0.00 0.88 0.00 0.48 1 Oona Wran +1444 DATHOMIR EGG 0 0 -7436.33 560.00 -7093.41 0.00 1.00 0.00 -0.05 1 Undead +1445 DATHOMIR EGG 0 0 -7499.43 560.00 -6777.07 0.00 -0.23 0.00 0.97 1 Undead +1446 DATHOMIR EGG 0 0 -6680.49 549.76 -6487.18 0.00 0.98 0.00 0.20 1 Undead +1447 DATHOMIR EGG 0 0 -6198.95 545.08 -7271.28 0.00 0.91 0.00 0.42 1 Death Trooper +1448 DATHOMIR EGG 0 0 -7366.06 570.00 -7415.07 0.00 0.07 0.00 1.00 1 Undead +1449 DATHOMIR EGG 0 0 -6431.15 570.00 -7004.73 0.00 0.17 0.00 0.99 1 Dugo Evnul +1450 DATHOMIR EGG 0 0 -6578.93 569.66 -6952.24 0.00 0.98 0.00 0.17 1 Death Trooper +1451 DATHOMIR EGG 0 0 -7412.18 570.00 -7415.35 0.00 0.18 0.00 0.98 1 Undead +1587 DATHOMIR EGG 0 0 -7458.24 570.00 -7329.31 0.01 0.98 0.00 0.20 1 Sogan Varga +1588 DATHOMIR EGG 0 0 -6259.36 559.38 -7267.15 0.00 1.00 0.00 -0.05 1 Snotharr +1589 DATHOMIR EGG 0 0 -6406.67 564.74 -7101.99 0.00 -0.28 0.00 0.96 1 Undead +1590 DATHOMIR EGG 0 0 -6145.80 535.14 -6861.00 0.00 -0.11 0.00 0.99 1 Death Trooper +1591 DATHOMIR EGG 0 0 -6416.13 540.00 -7439.79 0.00 0.61 0.00 0.79 1 Undead +1592 DATHOMIR EGG 0 0 -7424.79 560.00 -6835.37 0.00 0.97 0.00 0.24 1 Undead +1593 DATHOMIR EGG 0 0 -7385.06 570.00 -7345.91 0.00 -0.64 0.00 0.77 1 Undead +1594 DATHOMIR EGG 0 0 -7411.61 570.00 -7381.52 0.00 0.92 0.00 0.40 1 Undead +1595 DATHOMIR EGG 0 0 -7101.40 553.63 -7135.75 0.00 0.84 0.00 0.54 1 Undead +1596 DATHOMIR EGG 0 0 -7454.54 570.00 -7345.15 0.00 0.98 0.00 -0.22 1 KD-121 +1597 DATHOMIR EGG 0 0 -6828.67 553.46 -6462.55 0.00 0.70 0.00 0.71 1 Junk Dealer +1598 DATHOMIR EGG 0 0 -7339.40 570.00 -7237.34 0.00 -0.60 0.00 0.80 1 Undead +1599 DATHOMIR EGG 0 0 -6586.27 553.82 -6468.76 0.00 0.49 0.00 0.87 1 Undead +1600 DATHOMIR EGG 0 0 -6950.65 550.00 -6624.14 0.00 -0.41 0.00 0.91 1 Undead +1601 DATHOMIR EGG 0 0 -7381.28 545.00 -6506.95 0.00 1.00 0.00 0.02 1 Undead +1602 DATHOMIR EGG 0 0 -7231.05 569.36 -7275.18 0.00 0.95 0.00 0.32 1 Death Trooper +1603 DATHOMIR EGG 0 0 -6840.72 552.52 -6466.84 0.00 0.67 0.00 0.75 1 Oona Wran +1604 DATHOMIR EGG 0 0 -7385.34 569.64 -7227.37 0.00 0.44 0.00 0.90 1 Undead +1605 DATHOMIR EGG 0 0 -6540.00 561.52 -6605.00 0.00 0.95 0.00 0.31 1 Undead +1606 DATHOMIR EGG 0 0 -6488.71 540.00 -7262.95 0.00 0.93 0.00 0.36 1 Undead +1607 DATHOMIR EGG 0 0 -6290.70 561.21 -7520.08 0.00 0.73 0.00 0.69 1 Camp Guard +1608 DATHOMIR EGG 0 0 -6915.88 545.00 -7005.53 0.00 0.25 0.00 0.97 1 Undead +1609 DATHOMIR EGG 0 0 -7373.09 560.00 -7046.86 0.00 -0.65 0.00 0.76 1 Undead +1610 DATHOMIR EGG 0 0 -6955.29 550.00 -6564.52 0.00 0.18 0.00 0.98 1 Undead +1611 DATHOMIR EGG 0 0 -7373.99 570.00 -7269.43 0.00 1.00 0.00 -0.03 1 Death Trooper +1612 DATHOMIR EGG 0 0 -6244.22 558.13 -6484.73 0.00 0.72 0.00 0.70 1 Undead +1613 DATHOMIR EGG 0 0 -7047.35 551.18 -6693.71 0.00 0.98 0.00 -0.19 1 Death Trooper +1614 DATHOMIR EGG 0 0 -7034.60 550.00 -6633.52 0.00 0.80 0.00 0.60 1 Death Trooper +1615 DATHOMIR EGG 0 0 -7445.82 560.00 -7143.97 0.00 -0.11 0.00 0.99 1 Undead +1616 DATHOMIR EGG 0 0 -6681.29 541.04 -6597.93 0.00 0.16 0.00 0.99 1 Undead +1617 DATHOMIR EGG 0 0 -6831.50 553.25 -6450.67 0.00 0.75 0.00 0.66 1 a 2-1B surgical droid +1618 DATHOMIR EGG 0 0 -7163.93 564.02 -6913.13 0.00 0.42 0.00 0.91 1 Junk Dealer +1619 DATHOMIR EGG 0 0 -6563.84 540.00 -7302.33 0.00 0.90 0.00 -0.43 1 Undead +1620 DATHOMIR EGG 0 0 -7294.24 553.44 -6555.88 0.00 1.00 0.00 0.00 1 Undead +1621 DATHOMIR EGG 0 0 -6182.76 539.34 -6827.36 0.00 1.00 0.00 0.05 1 Undead +1622 DATHOMIR EGG 0 0 -6335.16 549.14 -6593.87 0.00 -0.34 0.00 0.94 1 Undead +1623 DATHOMIR EGG 0 0 -7341.84 570.00 -7386.41 0.00 -0.56 0.00 0.83 1 Undead +1624 DATHOMIR EGG 0 0 -6367.04 540.18 -7401.48 0.00 0.80 0.00 0.60 1 Undead +1625 DATHOMIR EGG 0 0 -6236.78 556.79 -6795.59 0.00 0.79 0.00 0.61 1 Undead +1626 DATHOMIR EGG 0 0 -7454.77 570.00 -7314.72 0.00 1.00 0.00 0.10 1 Junk Dealer +1627 DATHOMIR EGG 0 0 -7458.02 570.00 -7351.84 0.00 0.54 0.00 0.84 1 KD-121 +1628 DATHOMIR EGG 0 0 -6165.25 536.66 -7108.51 0.00 0.99 0.00 0.11 1 Undead +1629 DATHOMIR EGG 0 0 -6916.80 540.00 -7338.41 0.00 -0.02 0.00 1.00 1 Undead +1630 DATHOMIR EGG 0 0 -7151.45 562.63 -7076.31 0.00 1.00 0.00 0.04 1 Undead +1631 DATHOMIR EGG 0 0 -7391.19 570.00 -7413.12 0.00 -0.63 0.00 0.78 1 Death Trooper +1632 DATHOMIR EGG 0 0 -6710.66 549.48 -6488.94 0.00 1.00 0.00 -0.05 1 Adol Mantid +1633 DATHOMIR EGG 0 0 -6389.71 540.00 -7502.76 0.00 0.67 0.00 0.74 1 Death Trooper +1634 DATHOMIR EGG 0 0 -6201.91 546.16 -6703.80 0.00 0.99 0.00 0.10 1 Undead +1635 DATHOMIR EGG 0 0 -6599.19 540.00 -7501.57 0.00 1.00 0.00 -0.07 1 Undead +1636 DATHOMIR EGG 0 0 -7013.22 545.00 -6929.87 0.00 -0.65 0.00 0.76 1 Undead +1637 DATHOMIR EGG 0 0 -7477.84 560.00 -6962.94 0.00 0.00 0.00 1.00 1 Undead +1638 DATHOMIR EGG 0 0 -7437.09 560.42 -7183.68 0.00 -0.64 0.00 0.77 1 Undead +1639 DATHOMIR EGG 0 0 -7441.79 570.00 -7319.98 0.00 0.84 0.00 0.54 1 Nils Cridmeen (Mechanic) +1640 DATHOMIR EGG 0 0 -6964.00 545.00 -7067.92 0.00 0.20 0.00 0.98 1 Undead +1641 DATHOMIR EGG 0 0 -6282.76 561.70 -7526.23 0.01 0.97 0.00 0.25 1 Volo Madine +1642 DATHOMIR EGG 0 0 -7400.28 560.00 -6708.61 0.00 0.25 0.00 0.97 1 Undead +1643 DATHOMIR EGG 0 0 -7452.20 560.00 -6657.51 0.00 -0.43 0.00 0.90 1 Undead +1644 DATHOMIR EGG 0 0 -7016.26 539.98 -7499.93 0.00 -0.44 0.00 0.90 1 Ghianna Hayde +1645 DATHOMIR EGG 0 0 -6862.32 550.78 -6513.03 0.00 -0.53 0.00 0.85 1 Undead +1646 DATHOMIR EGG 0 0 -7073.24 540.00 -7330.46 0.00 1.00 0.00 0.08 1 Undead +1647 DATHOMIR EGG 0 0 -6289.52 561.61 -7524.18 0.00 0.25 0.00 0.97 1 Oona Wran +1648 DATHOMIR EGG 0 0 -6216.81 485.52 -6081.98 0.00 0.83 0.00 -0.56 1 a Nightsister spell weaver +1649 DATHOMIR EGG 0 0 -6230.13 485.05 -6068.39 0.00 0.99 0.00 -0.13 1 a Nightsister spell weaver +1650 DATHOMIR EGG 0 0 -6224.74 480.45 -6108.53 0.00 -0.18 0.00 0.98 1 a Nightsister spell weaver +1651 DATHOMIR EGG 0 0 -6249.60 481.93 -6082.62 0.00 0.98 0.00 0.18 1 a Nightsister spell weaver +1652 DATHOMIR EGG 0 0 -6234.60 468.15 -6091.50 0.00 0.95 0.00 -0.31 1 a Nightsister elder +1653 DATHOMIR EGG 0 0 -6262.87 487.54 -6113.21 0.00 0.37 0.00 0.93 1 a Nightsister spell weaver +1654 DATHOMIR EGG 0 0 -6248.08 485.73 -6124.49 0.00 0.31 0.00 0.95 1 a Nightsister spell weaver +1655 DATHOMIR EGG 0 0 -6346.00 128.00 743.00 0.00 0.64 0.00 0.77 1 Tylar +1656 DATHOMIR EGG 0 0 -6390.70 120.00 933.99 0.00 0.72 0.00 -0.69 1 Lucia +1657 DATHOMIR EGG 0 0 -7000.47 343.75 3914.75 0.00 0.41 0.00 0.91 1 a muscle smuggler +1658 DATHOMIR EGG 0 0 -6990.84 342.31 3948.39 0.00 -0.30 0.00 0.95 1 a muscle smuggler +1659 DATHOMIR EGG 0 0 -7029.53 341.45 3914.37 0.00 0.76 0.00 -0.65 1 a muscle smuggler +1660 DATHOMIR EGG 0 0 -7038.04 344.45 3947.05 0.00 -0.06 0.00 1.00 1 a muscle smuggler +1661 DATHOMIR EGG 0 0 -7009.20 351.02 3973.23 0.00 0.93 0.00 0.36 1 a muscle smuggler +1662 DATHOMIR EGG 0 0 -7011.58 350.52 3956.15 0.00 0.64 0.00 0.77 1 a Dark Jedi Sentinel +1663 DATHOMIR EGG 0 0 -7000.57 340.01 3931.95 0.00 -0.56 0.00 0.83 1 a Dark Jedi Sentinel +1664 DATHOMIR EGG 0 0 -7031.98 341.72 3932.06 0.00 0.54 0.00 0.84 1 a Dark Jedi Sentinel +1665 DATHOMIR EGG 0 0 -7012.06 342.32 3942.22 0.00 0.98 0.00 0.21 1 a Dark Jedi Master +1666 DATHOMIR EGG 0 0 -5932.05 558.96 -6675.52 0.00 0.21 0.00 0.98 1 Camp Guard +1667 DATHOMIR EGG 0 0 -5916.24 558.92 -6678.39 0.00 -0.70 0.00 0.72 1 Oona Wran +1668 DATHOMIR EGG 0 0 -6142.70 530.31 -6578.58 0.00 0.90 0.00 -0.44 1 Undead +1669 DATHOMIR EGG 0 0 -6035.49 540.84 -7107.58 0.00 1.00 0.00 0.02 1 Undead +1670 DATHOMIR EGG 0 0 -5905.64 558.37 -6426.65 0.00 0.63 0.00 0.78 1 Black Sun Escort +1671 DATHOMIR EGG 0 0 -5784.61 510.77 -6544.87 0.00 0.30 0.00 0.95 1 GT-643 +1672 DATHOMIR EGG 0 0 -5891.29 544.69 -6517.31 0.00 -0.39 0.00 0.92 1 Undead +1673 DATHOMIR EGG 0 0 -5774.88 510.71 -6553.52 0.00 0.25 0.00 0.97 1 GT-643 +1674 DATHOMIR EGG 0 0 -6037.19 530.70 -6694.72 0.00 1.00 0.00 0.07 1 Undead +1675 DATHOMIR EGG 0 0 -5777.94 520.00 -6677.07 0.00 0.89 0.00 0.46 1 Undead +1676 DATHOMIR EGG 0 0 -5754.84 520.00 -6769.31 0.00 0.97 0.00 0.23 1 Death Trooper +1677 DATHOMIR EGG 0 0 -5688.20 511.18 -6490.21 0.00 0.83 0.00 -0.56 1 Illrian Nhagy +1678 DATHOMIR EGG 0 0 -5807.71 529.93 -7313.15 0.00 -0.69 0.00 0.72 1 Undead +1679 DATHOMIR EGG 0 0 -5965.18 552.27 -6524.02 0.00 0.97 0.00 -0.25 1 Undead +1680 DATHOMIR EGG 0 0 -5982.90 545.88 -7115.18 0.00 -0.16 0.00 0.99 1 Undead +1681 DATHOMIR EGG 0 0 -5802.75 517.44 -6570.75 0.00 0.55 0.00 0.83 1 Undead +1682 DATHOMIR EGG 0 0 -5828.65 523.45 -6580.90 0.00 0.52 0.00 0.86 1 Undead +1683 DATHOMIR EGG 0 0 -5749.83 520.00 -7164.21 0.00 0.05 0.00 1.00 1 Death Trooper +1684 DATHOMIR EGG 0 0 -5884.87 542.18 -7262.99 0.00 -0.43 0.00 0.90 1 Undead +1685 DATHOMIR EGG 0 0 -5929.99 559.14 -6661.15 0.00 0.44 0.00 0.90 1 Camp Guard +1686 DATHOMIR EGG 0 0 -5749.99 511.00 -6493.07 0.00 0.90 0.00 0.45 1 Captain Firmus Piett +1687 DATHOMIR EGG 0 0 -5869.41 536.21 -6639.35 0.00 0.99 0.00 0.12 1 Undead +1688 DATHOMIR EGG 0 0 -5917.23 553.21 -7443.51 0.00 0.91 0.00 0.41 1 Undead +1689 DATHOMIR EGG 0 0 -5706.19 511.19 -6509.67 0.00 -0.59 0.00 0.81 1 GT-643 +1690 DATHOMIR EGG 0 0 -5936.25 556.78 -6795.53 0.00 0.14 0.00 0.99 1 Death Trooper +1691 DATHOMIR EGG 0 0 -5916.44 553.75 -6569.67 0.00 0.98 0.00 -0.18 1 Undead +1692 DATHOMIR EGG 0 0 -5852.85 530.28 -6557.69 0.00 0.58 0.00 0.82 1 Death Trooper +1693 DATHOMIR EGG 0 0 -5745.27 511.01 -6466.06 0.01 0.90 0.00 0.44 1 Rodian Smuggler +1694 DATHOMIR EGG 0 0 -6100.98 525.55 -6467.54 0.00 -0.51 0.00 0.86 1 Undead +1695 DATHOMIR EGG 0 0 -5707.41 521.88 -7017.33 0.00 0.82 0.00 0.57 1 Undead +1696 DATHOMIR EGG 0 0 -6011.31 536.17 -6805.79 0.00 1.00 0.00 0.09 1 Undead +1697 DATHOMIR EGG 0 0 -6048.06 530.01 -6539.10 0.00 0.97 0.00 -0.23 1 Death Trooper +1698 DATHOMIR EGG 0 0 -6113.49 530.00 -6672.74 0.00 0.98 0.00 -0.20 1 Death Trooper +1699 DATHOMIR EGG 0 0 -5790.62 510.45 -6553.16 0.00 0.97 0.00 -0.26 1 GT-643 +1700 DATHOMIR EGG 0 0 -6113.75 530.00 -6616.76 0.00 0.18 0.00 0.98 1 Undead +1701 DATHOMIR EGG 0 0 -6033.69 531.15 -7319.67 0.00 0.95 0.00 0.32 1 Undead +1702 DATHOMIR EGG 0 0 -5820.36 521.84 -6879.68 0.00 0.76 0.00 0.65 1 Undead +1703 DATHOMIR EGG 0 0 -5663.16 538.27 -6817.33 0.00 -0.50 0.00 0.87 1 Han Solo +1704 DATHOMIR EGG 0 0 -5868.97 536.09 -6519.89 0.18 0.96 -0.04 0.20 1 Fenn Kay'lay +1705 DATHOMIR EGG 0 0 -6066.34 531.13 -7474.32 0.00 0.76 0.00 -0.65 1 Undead +1706 DATHOMIR EGG 0 0 -5694.61 511.03 -6467.00 0.00 0.90 0.00 0.43 1 GT-643 +1707 DATHOMIR EGG 0 0 -5803.00 529.51 -7452.00 0.00 0.41 0.00 0.91 1 Undead +1708 DATHOMIR EGG 0 0 -5780.03 530.00 -7328.08 0.00 -0.01 0.00 1.00 1 Death Trooper +1709 DATHOMIR EGG 0 0 -5663.36 538.22 -6818.35 0.00 -0.43 0.00 0.90 1 Chewbacca +1710 DATHOMIR EGG 0 0 -5888.88 543.75 -6560.10 0.00 1.00 0.00 -0.10 1 Undead +1711 DATHOMIR EGG 0 0 -5757.30 520.00 -6744.03 0.00 0.23 0.00 0.97 1 Death Trooper +1712 DATHOMIR EGG 0 0 -5994.85 541.53 -6958.09 0.00 0.00 0.00 1.00 1 Undead +1713 DATHOMIR EGG 0 0 -5924.50 559.19 -6652.49 0.00 0.77 0.00 0.63 1 Sergeant Mika Horn +1714 DATHOMIR EGG 0 0 -5795.41 511.32 -6552.23 0.00 0.99 0.00 0.17 1 outbreak_imperial_guard_aggro +1715 DATHOMIR EGG 0 0 -5763.82 520.00 -6634.55 0.00 0.96 0.00 0.29 1 Undead +1716 DATHOMIR EGG 0 0 -6125.08 543.00 -6970.36 0.00 -0.03 0.00 1.00 1 Death Trooper +1717 DATHOMIR EGG 0 0 -5753.83 520.00 -7062.45 0.00 0.54 0.00 0.84 1 Death Trooper +1718 DATHOMIR EGG 0 0 -6006.99 537.48 -6604.47 0.00 0.90 0.00 -0.44 1 Undead +1719 DATHOMIR EGG 0 0 -5850.79 529.60 -6517.22 0.00 -0.02 0.00 1.00 1 Undead +1720 DATHOMIR EGG 0 0 -5857.91 532.02 -6689.16 0.00 0.99 0.00 0.16 1 Undead +1721 DATHOMIR EGG 0 0 -5852.08 530.03 -6594.85 0.00 0.95 0.00 0.31 1 Undead +1722 DATHOMIR EGG 0 0 -5913.17 558.77 -6671.66 0.00 -0.60 0.00 0.80 1 Junk Dealer +1723 DATHOMIR EGG 0 0 -5914.40 553.16 -6500.25 0.00 0.74 0.00 0.67 1 Undead +1724 DATHOMIR EGG 0 0 -5714.88 520.82 -7159.95 0.00 0.99 0.00 -0.14 1 Undead +1725 DATHOMIR EGG 0 0 -6072.33 527.44 -6505.35 0.00 -0.09 0.00 1.00 1 Undead +1726 DATHOMIR EGG 0 0 -5687.23 529.46 -7400.13 0.00 -0.25 0.00 0.97 1 Vil Burren +1727 DATHOMIR EGG 0 0 -5820.39 521.84 -6663.47 0.00 0.41 0.00 0.91 1 Undead +1728 DATHOMIR EGG 0 0 -5939.42 558.49 -6675.99 0.00 0.55 -0.01 0.83 1 Jeb Maris +1729 DATHOMIR EGG 0 0 -5742.17 530.00 -7279.86 0.00 0.92 0.00 0.39 1 Death Trooper +1730 DATHOMIR EGG 0 0 -5744.24 510.98 -6480.28 0.00 0.93 0.00 0.37 1 GT-643 +1731 DATHOMIR EGG 0 0 -5938.50 556.73 -6522.89 0.00 0.87 0.00 -0.50 1 Undead +1732 DATHOMIR EGG 0 0 -5935.01 558.89 -6667.23 0.00 0.56 0.00 0.83 1 a 2-1B surgical droid +1733 DATHOMIR EGG 0 0 -5926.77 555.95 -6949.53 0.00 0.95 0.00 0.31 1 Death Trooper +1734 DATHOMIR EGG 0 0 -6073.84 543.00 -7161.28 0.00 -0.62 0.00 0.79 1 Death Trooper +1735 DATHOMIR EGG 0 0 -5853.51 530.51 -6714.23 0.00 0.95 0.00 0.31 1 Undead +1736 DATHOMIR EGG 0 0 -5886.00 542.63 -7060.00 0.00 0.83 0.00 0.56 1 Undead +1737 DATHOMIR EGG 0 0 -5703.98 529.58 -7372.20 0.00 0.97 0.00 0.23 1 Death Trooper +1738 DATHOMIR EGG 0 0 -5904.95 558.38 -6428.64 0.00 0.52 0.00 0.86 1 Black Sun Escort +1739 DATHOMIR EGG 0 0 -5781.05 512.12 -6568.82 0.00 0.74 0.00 -0.67 1 outbreak_imperial_guard_aggro +1740 DATHOMIR EGG 0 0 -5745.93 510.98 -6483.97 0.00 0.84 0.00 0.54 1 GT-643 +1741 DATHOMIR EGG 0 0 -6039.29 541.83 -6986.42 0.00 1.00 0.00 0.01 1 Undead +1742 DATHOMIR EGG 0 0 -5904.76 558.32 -6427.42 0.00 0.63 0.00 0.78 1 Guri +1743 DATHOMIR EGG 0 0 -6113.75 543.00 -7076.70 0.00 -0.12 0.00 0.99 1 Death Trooper +1744 DATHOMIR EGG 0 0 -5753.90 520.00 -6897.79 0.00 0.87 0.00 0.49 1 Undead +1745 DATHOMIR EGG 0 0 -5716.07 529.86 -7281.64 0.00 1.00 0.00 -0.10 1 Undead +1746 DATHOMIR EGG 0 0 -5693.17 511.08 -6464.62 0.00 0.95 0.00 0.31 1 GT-643 +1747 DATHOMIR EGG 0 0 -5947.27 556.25 -6474.25 0.00 0.95 0.00 0.31 1 Death Trooper +1748 DATHOMIR EGG 0 0 -5817.42 521.38 -6604.36 0.00 0.36 0.00 0.93 1 Undead +1749 DATHOMIR EGG 0 0 -5792.29 520.00 -7109.88 0.00 -0.35 0.00 0.94 1 Death Trooper +1750 DATHOMIR EGG 0 0 -5942.62 556.66 -6849.14 0.00 0.84 0.00 0.54 1 Undead +1751 DATHOMIR EGG 0 0 -5924.86 559.18 -6676.41 0.00 0.20 0.00 0.98 1 Trig Longo +1752 DATHOMIR EGG 0 0 -5927.15 559.19 -6657.08 0.00 0.53 0.00 0.85 1 Camp Guard +1753 DATHOMIR EGG 0 0 -5703.40 511.01 -6467.79 0.00 0.98 0.00 -0.20 1 a Junk Dealer +1754 DATHOMIR EGG 0 0 -5783.04 511.43 -6564.44 0.00 0.72 0.00 -0.69 1 outbreak_imperial_guard_aggro +1755 DATHOMIR EGG 0 0 -5864.69 534.46 -6536.12 0.00 -0.11 0.00 0.99 1 Undead +1756 DATHOMIR EGG 0 0 -6118.65 530.00 -7423.69 0.00 -0.44 0.00 0.90 1 Undead +1757 DATHOMIR EGG 0 0 -6032.87 536.01 -6450.40 0.00 0.60 0.00 0.80 1 Undead +1758 DATHOMIR EGG 0 0 -5691.90 511.09 -6488.73 0.00 0.99 0.00 0.10 1 Tk-216 +1759 DATHOMIR EGG 0 0 -5774.41 520.00 -6948.85 0.00 0.95 0.00 -0.31 1 Undead +1760 DATHOMIR EGG 0 0 -5780.14 510.72 -6549.41 0.00 0.28 0.00 0.96 1 Lieutenant Liam Waurie +1761 DATHOMIR EGG 0 0 -5664.70 533.95 -7090.04 0.00 1.00 0.00 -0.01 1 Undead +1762 DATHOMIR EGG 0 0 -5926.11 559.15 -6675.28 0.00 0.10 0.00 1.00 1 Zahara Cody +1763 DATHOMIR EGG 0 0 -5989.30 543.53 -7450.05 0.00 0.99 0.00 0.13 1 Undead +1764 DATHOMIR EGG 0 0 -5708.28 529.68 -7406.07 0.00 0.51 0.00 0.86 1 Undead +1765 DATHOMIR EGG 0 0 -5923.22 559.15 -6685.61 0.00 -0.16 0.00 0.99 1 Camp Guard +1766 DATHOMIR EGG 0 0 -5780.61 522.74 -7224.15 0.00 -0.22 0.00 0.97 1 Death Trooper +1767 DATHOMIR EGG 0 0 -5745.82 530.00 -7351.48 0.00 -0.35 0.00 0.94 1 Death Trooper +1768 DATHOMIR EGG 0 0 -6103.66 530.00 -6725.60 0.00 0.99 0.00 0.15 1 Undead +1769 DATHOMIR EGG 0 0 -5784.09 510.30 -6558.71 0.00 0.95 0.00 -0.30 1 GT-643 +1770 DATHOMIR EGG 0 0 -5982.82 545.91 -6750.53 0.00 -0.56 0.00 0.83 1 Death Trooper +1771 DATHOMIR EGG 0 0 -5919.89 559.08 -6660.92 0.00 -0.21 0.00 0.98 1 Camp Guard +1772 DATHOMIR EGG 0 0 -6039.62 541.27 -6879.27 0.00 1.00 0.00 -0.02 1 Undead +1773 DATHOMIR EGG 0 0 -5987.68 544.12 -6798.75 0.00 -0.02 0.00 1.00 1 Undead +1774 DATHOMIR EGG 0 0 -6039.70 530.44 -6667.19 0.00 -0.14 0.00 0.99 1 Death Trooper +1775 DATHOMIR EGG 0 0 -5800.43 512.33 -6551.40 0.00 0.98 0.00 0.20 1 outbreak_imperial_guard_aggro +1776 DATHOMIR EGG 0 0 -5752.72 520.00 -6987.80 0.00 0.01 0.00 1.00 1 Death Trooper +1777 DATHOMIR EGG 0 0 -5984.43 545.31 -6450.24 0.00 0.91 0.00 -0.42 1 Jawiin Danod +1778 DATHOMIR EGG 0 0 -5691.50 511.10 -6491.91 0.00 -0.08 0.00 1.00 1 Tyla Gallamby +1815 DATHOMIR EGG 0 0 -2420.21 48.24 -5083.00 0.00 0.93 0.00 0.35 1 a Dark Jedi Sentinel +1816 DATHOMIR EGG 0 0 -2420.18 51.11 -3101.17 0.00 -0.26 0.00 0.96 1 a Dark Jedi Elder +1817 DATHOMIR EGG 0 0 -2425.71 50.43 -3102.94 0.00 1.00 0.00 0.07 1 a Dark Jedi Elder +1818 DATHOMIR EGG 0 0 -3930.58 130.06 -227.44 0.00 0.99 0.00 -0.13 1 Morris +1819 DATHOMIR EGG 0 0 -2169.36 18.00 -3658.42 0.00 -0.42 0.00 0.91 1 Kam +1820 DATHOMIR EGG 0 0 -1138.00 111.58 6303.00 0.00 0.87 0.00 0.50 1 Gib +1821 DATHOMIR EGG 0 0 -1149.07 107.64 6332.40 0.00 0.98 0.00 0.21 1 a cut-throat +1822 DATHOMIR EGG 0 0 -1113.76 107.72 6343.87 0.00 0.06 0.00 1.00 1 a cut-throat +1823 DATHOMIR EGG 0 0 -1106.86 125.55 6268.64 0.00 -0.35 0.00 0.94 1 a cut-throat +1824 DATHOMIR EGG 0 0 543.00 6.21 5102.00 0.00 0.83 0.00 -0.56 1 Russell +1825 DATHOMIR EGG 0 0 631.40 6.00 5139.94 0.00 0.89 0.00 -0.46 1 Loisya Starkos +1826 DATHOMIR EGG 0 0 736.25 107.23 4989.38 0.00 0.98 0.00 0.22 1 a Sith Shadow outlaw +1827 DATHOMIR EGG 0 0 3456.12 28.91 1378.54 0.00 0.42 0.00 0.91 1 Aramis Kariya (a Rebel pilot) +1828 DATHOMIR EGG 0 0 5200.80 442.35 -6909.92 0.00 0.18 0.00 0.98 1 a Singing Mountain clan huntress +1829 DATHOMIR EGG 0 0 5209.49 446.44 -6905.36 0.00 0.69 0.00 0.72 1 a Singing Mountain clan huntress +1830 DATHOMIR EGG 0 0 5199.02 444.38 -6896.73 0.00 0.89 0.00 0.46 1 a Singing Mountain clan initiate +1841 DATHOMIR EGG 0 0 5380.88 78.50 -4129.19 0.00 -0.09 0.00 1.00 1 an Aurilia sentinel +1842 DATHOMIR EGG 0 0 5241.83 98.40 -4211.26 0.00 0.92 0.00 -0.40 1 an Aurilia sentinel +1843 DATHOMIR EGG 0 0 5242.03 78.50 -4182.72 0.00 -0.15 0.00 0.99 1 an Aurilia citizen +1844 DATHOMIR EGG 0 0 5246.80 98.40 -4212.67 0.00 1.00 0.00 0.08 1 an Aurilia sentinel +1847 DATHOMIR EGG 0 0 5363.56 78.50 -4105.85 0.00 0.98 0.00 0.18 1 an Aurilia citizen +1848 DATHOMIR EGG 0 0 5476.62 98.40 -4132.26 0.00 0.39 0.00 0.92 1 an Aurilia sentinel +1849 DATHOMIR EGG 0 0 5470.03 98.40 -4130.31 0.00 -0.19 0.00 0.98 1 an Aurilia sentinel +1850 DATHOMIR EGG 0 0 5461.01 79.00 -4169.15 0.00 0.82 0.00 -0.58 1 Quharek +1854 DATHOMIR EGG 0 0 5381.02 78.50 -4150.03 0.00 1.00 0.00 0.02 1 an Aurilia sentinel +1855 DATHOMIR EGG 0 0 5417.54 78.50 -4138.08 0.00 0.96 0.00 0.30 1 an Aurilia sentinel +1858 DATHOMIR EGG 0 0 5418.87 78.87 -4187.46 0.00 -0.60 0.00 0.80 1 Torvin +1859 DATHOMIR EGG 0 0 5439.98 78.50 -4172.11 0.00 -0.70 0.00 0.71 1 Maximillian (Aurilian travel consultant) +1862 DATHOMIR EGG 0 0 5232.15 78.50 -4156.87 0.00 1.00 0.00 0.05 1 an Aurilia citizen +1863 DATHOMIR EGG 0 0 5440.12 78.50 -4163.61 0.00 0.80 0.00 -0.60 1 an Aurilia sentinel +1866 DATHOMIR EGG 0 0 5367.15 98.40 -4210.23 0.00 0.91 0.00 0.41 1 an Aurilia sentinel +1867 DATHOMIR EGG 0 0 5205.00 78.50 -4148.62 0.00 -0.02 0.00 1.00 1 Lieutenant Thulough (a Rebel intelligence officer) +1868 DATHOMIR EGG 0 0 5304.31 78.50 -4151.78 0.00 1.00 0.00 0.03 1 Paemos (Mayor of Aurilia) +1869 DATHOMIR EGG 0 0 5306.08 78.50 -4213.75 0.00 1.00 0.00 0.00 1 Shaneeka (chief engineer of Aurilia) +1870 DATHOMIR EGG 0 0 5378.91 98.40 -4073.01 0.00 0.32 0.00 0.95 1 Captain Sarguillo +1871 DATHOMIR EGG 0 0 5377.35 98.40 -4066.70 0.00 -0.11 0.00 0.99 1 an Aurilia sentinel +1874 DATHOMIR EGG 0 0 5291.33 78.50 -4073.85 0.00 0.91 0.00 0.41 1 an Aurilia sentinel +1875 DATHOMIR EGG 0 0 5339.05 78.50 -4069.72 0.00 -0.34 0.00 0.94 1 an Aurilia citizen +1876 DATHOMIR EGG 0 0 5336.36 78.50 -4069.42 0.00 0.42 0.00 0.91 1 an Aurilia citizen +1877 DATHOMIR EGG 0 0 5287.68 78.50 -4077.45 0.00 0.92 0.00 0.40 1 an Aurilia sentinel +1878 DATHOMIR EGG 0 0 5330.22 78.50 -4047.71 0.00 0.91 0.00 0.41 1 an Aurilia citizen +1879 DATHOMIR EGG 0 0 5343.49 78.50 -4058.10 0.00 0.84 0.00 -0.54 1 an Aurilia citizen +1882 DATHOMIR EGG 0 0 5751.45 124.66 1826.28 0.00 -0.70 0.00 0.72 1 a pirate +1883 DATHOMIR EGG 0 0 5711.00 125.00 1824.00 0.00 -0.16 0.00 0.99 1 Kirby +1884 DATHOMIR EGG 0 0 5693.48 127.78 1797.68 0.00 0.15 0.00 0.99 1 a pirate +1885 DATHOMIR EGG 0 0 5727.25 121.68 1791.54 0.00 -0.18 0.00 0.98 1 a pirate +1886 DATHOMIR EGG 0 0 5729.82 125.00 1854.70 0.00 -0.23 0.00 0.97 1 a pirate +1972 ENDOR EGG 0 0 -6878.00 15.18 618.00 0.00 0.80 0.00 0.60 1 Lavina +1973 ENDOR EGG 0 0 -4669.66 98.01 -2173.32 0.00 0.60 0.00 0.80 1 a mercenary +1974 ENDOR EGG 0 0 -4654.37 94.91 -2140.39 0.00 0.99 0.00 0.13 1 a mercenary +1975 ENDOR EGG 0 0 -4612.02 73.74 -2184.01 0.00 0.77 0.00 -0.63 1 a mercenary +1976 ENDOR EGG 0 0 -4645.00 88.81 -2163.00 0.00 0.99 0.00 -0.13 1 Quinton +1977 ENDOR EGG 0 0 -4610.77 177.20 -2549.98 0.00 0.31 0.00 0.95 1 Zalbar Jyvun +2015 ENDOR EGG 0 0 -2864.26 17.66 -4638.55 0.00 -0.63 0.00 0.77 1 a Dark Jedi +2016 ENDOR EGG 0 0 -2869.70 16.70 -4621.73 0.00 1.00 0.00 0.01 1 a Dark Jedi +2017 ENDOR EGG 0 0 -2888.46 21.55 -4640.48 0.00 0.65 0.00 0.76 1 a Dark Jedi +2018 ENDOR EGG 0 0 -2872.37 19.43 -4634.57 0.00 0.93 0.00 -0.37 1 a Dark Jedi Elder +2019 ENDOR EGG 0 0 -834.96 80.10 1605.95 0.00 0.99 0.00 -0.15 1 Otonon Tracks +2020 ENDOR EGG 0 0 -833.01 80.30 1603.80 0.00 0.96 0.00 -0.28 1 The Ice Cream Man +2021 ENDOR EGG 0 0 -838.00 80.59 1617.00 0.00 0.47 0.00 0.88 1 Harding +2025 ENDOR EGG 0 0 -1228.37 12.00 2935.95 0.00 0.98 0.00 -0.18 1 a Donkuwah scout +2026 ENDOR EGG 0 0 -1215.12 12.00 2932.08 0.00 0.96 0.00 -0.27 1 a Donkuwah scout +2027 ENDOR EGG 0 0 -212.14 207.69 3522.83 0.00 0.77 0.00 0.64 1 a Dark Jedi +2028 ENDOR EGG 0 0 -222.29 207.98 3517.26 0.00 0.93 0.00 -0.36 1 a Dark Jedi +2029 ENDOR EGG 0 0 -235.70 208.47 3521.44 0.00 -0.69 0.00 0.72 1 Captured old man +2030 ENDOR EGG 0 0 -226.12 208.51 3543.06 0.00 -0.56 0.00 0.83 1 a Jedi Padawan +2031 ENDOR EGG 0 0 -235.89 208.20 3534.84 0.00 0.80 0.00 -0.61 1 a Jedi Padawan +2032 ENDOR EGG 0 0 -208.36 207.02 3511.30 0.00 0.82 0.00 -0.57 1 a Dark Jedi Elder +2033 ENDOR EGG 0 0 1192.96 10.67 1919.00 0.00 0.02 0.00 1.00 1 a Meatlump moop +2034 ENDOR EGG 0 0 1213.04 9.64 1930.84 0.00 0.94 0.00 0.34 1 a Meatlump moop +2035 ENDOR EGG 0 0 1201.88 10.98 1943.24 0.00 0.95 0.00 0.32 1 a Meatlump moop +2036 ENDOR EGG 0 0 1189.21 10.84 1947.51 0.00 1.00 0.00 0.07 1 a Meatlump moop +2037 ENDOR EGG 0 0 1171.25 8.50 1947.97 0.00 -0.65 0.00 0.76 1 a Meatlump moop +2038 ENDOR EGG 0 0 1167.16 9.71 1931.80 0.00 0.98 0.00 0.17 1 a Meatlump moop +2039 ENDOR EGG 0 0 1154.81 10.79 1932.63 0.00 0.83 0.00 0.56 1 a Meatlump moop +2040 ENDOR EGG 0 0 1140.13 11.86 1945.47 0.00 -0.15 0.00 0.99 1 a Meatlump moop +2041 ENDOR EGG 0 0 1150.53 11.08 1960.94 0.00 0.02 0.00 1.00 1 a Meatlump moop +2042 ENDOR EGG 0 0 1157.51 12.71 1974.02 0.00 0.78 0.00 0.62 1 a Meatlump moop +2043 ENDOR EGG 0 0 1179.57 20.81 1978.01 0.00 0.65 0.00 0.76 1 a Meatlump moop +2044 ENDOR EGG 0 0 1201.45 21.51 1973.95 0.00 -0.36 0.00 0.93 1 a Meatlump moop +2045 ENDOR EGG 0 0 1214.22 19.61 1987.71 0.00 0.87 0.00 -0.49 1 a Meatlump moop +2046 ENDOR EGG 0 0 1195.09 19.03 1994.74 0.00 0.99 0.00 -0.11 1 a Meatlump moop +2047 ENDOR EGG 0 0 1161.25 8.20 1999.26 0.00 0.72 0.00 -0.69 1 a Meatlump moop +2048 ENDOR EGG 0 0 1140.98 11.40 1990.05 0.00 0.83 0.00 -0.56 1 a Meatlump moop +2049 ENDOR EGG 0 0 1126.33 8.69 1971.60 0.00 0.97 0.00 0.25 1 a Meatlump moop +2050 ENDOR EGG 0 0 1117.33 8.50 1983.74 0.00 0.16 0.00 0.99 1 a Meatlump moop +2051 ENDOR EGG 0 0 1107.63 8.26 1998.81 0.00 0.29 0.00 0.96 1 a Meatlump moop +2052 ENDOR EGG 0 0 1104.28 10.66 2019.14 0.00 0.80 0.00 0.60 1 a Meatlump moop +2053 ENDOR EGG 0 0 1112.12 11.13 2032.54 0.00 0.91 0.00 0.42 1 a Meatlump moop +2054 ENDOR EGG 0 0 1137.28 8.41 2042.07 0.00 1.00 0.00 -0.07 1 a Meatlump moop +2055 ENDOR EGG 0 0 1135.45 8.29 2017.40 0.00 0.85 0.00 0.53 1 a Meatlump moop +2056 ENDOR EGG 0 0 1161.27 9.41 2018.82 0.00 -0.66 0.00 0.75 1 a Meatlump moop +2057 ENDOR EGG 0 0 667.00 207.80 4972.00 0.00 0.71 0.00 0.71 1 Carter +2058 ENDOR EGG 0 0 3327.81 24.99 -3543.82 0.00 -0.02 0.00 1.00 1 a mercenary +2059 ENDOR EGG 0 0 3346.54 25.66 -3501.79 0.00 0.96 0.00 -0.27 1 a mercenary +2060 ENDOR EGG 0 0 3309.59 24.37 -3518.16 0.00 0.75 0.00 0.66 1 a mercenary +2061 ENDOR EGG 0 0 3278.48 24.00 -3498.35 0.00 -0.47 0.00 0.88 1 Jener Mich (Endor Collector) +2062 ENDOR EGG 0 0 3334.00 25.70 -3521.00 0.00 -0.63 0.00 0.78 1 Alec +2118 ENDOR EGG 0 0 2584.92 199.11 6654.78 0.00 0.57 0.00 0.82 1 Tao-Ni Security Battle Droid +2119 ENDOR EGG 0 0 6054.38 262.00 -2508.48 0.00 -0.69 0.00 0.73 1 a Dulok outcast raider +2120 ENDOR EGG 0 0 6097.32 265.00 -2461.88 0.00 0.89 0.00 -0.45 1 a Dulok outcast raider +2121 ENDOR EGG 0 0 6068.64 263.00 -2448.37 0.00 0.17 0.00 0.99 1 a Dulok outcast raider +2122 ENDOR EGG 0 0 6039.19 262.00 -2455.34 0.00 0.60 0.00 0.80 1 a Dulok outcast raider +2123 ENDOR EGG 0 0 6107.20 265.00 -2451.55 0.00 0.85 0.00 -0.53 1 the Dulok outcast leader +2124 ENDOR EGG 0 0 6094.16 265.00 -2454.76 0.00 0.86 0.00 -0.51 1 a Dulok outcast raider +2125 ENDOR EGG 0 0 6092.30 263.00 -2511.00 0.00 0.72 0.00 0.70 1 a Dulok outcast +2126 ENDOR EGG 0 0 6092.86 263.00 -2485.46 0.00 0.61 0.00 0.79 1 a Dulok outcast raider +2127 ENDOR EGG 0 0 6018.00 212.15 6146.00 0.00 0.77 0.00 0.64 1 Dreda +2128 ENDOR EGG 0 0 6401.71 220.21 -254.76 0.00 -0.62 0.00 0.79 1 Macchbraus +2356 LOK EGG 0 0 -7487.25 50.98 -7093.04 0.00 -0.58 0.00 0.82 1 a mercenary elite +2357 LOK EGG 0 0 -7496.67 54.53 -7105.00 0.00 0.64 0.00 0.76 1 a mercenary elite +2358 LOK EGG 0 0 -7509.71 54.13 -7090.87 0.00 0.00 0.00 1.00 1 a mercenary elite +2359 LOK EGG 0 0 -7470.93 61.94 -7078.96 0.00 -0.69 0.00 0.72 1 a strong mercenary +2360 LOK EGG 0 0 -7499.55 62.13 -7073.90 0.00 0.71 0.00 -0.70 1 a strong mercenary +2361 LOK EGG 0 0 -7512.42 61.83 -7108.22 0.00 0.97 0.00 -0.22 1 a strong mercenary +2362 LOK EGG 0 0 -7479.54 62.09 -7120.55 0.00 0.73 0.00 0.69 1 a strong mercenary +2363 LOK EGG 0 0 -7454.56 62.13 -7105.42 0.00 0.73 0.00 0.69 1 a strong mercenary +2364 LOK EGG 0 0 -7494.81 50.91 -7088.04 0.00 0.75 0.00 -0.66 1 a mercenary warlord +2365 LOK EGG 0 0 -6479.09 11.61 3856.44 0.00 1.00 0.00 0.00 1 a Blood Razor pirate +2366 LOK EGG 0 0 -6485.83 17.07 3903.24 0.00 0.83 0.00 0.56 1 a Blood Razor pirate +2367 LOK EGG 0 0 -6302.73 13.02 4090.28 0.00 -0.62 0.00 0.79 1 a Jedi Padawan +2368 LOK EGG 0 0 -6294.01 13.06 4080.92 0.00 0.08 0.00 1.00 1 a Jedi Padawan +2369 LOK EGG 0 0 -6283.39 13.02 4080.64 0.00 -0.50 0.00 0.87 1 a Jedi Padawan +2370 LOK EGG 0 0 -6302.82 13.00 4080.74 0.00 0.56 0.00 0.83 1 a Jedi Padawan +2371 LOK EGG 0 0 -6290.15 12.91 4093.46 0.00 0.92 0.00 -0.40 1 a Jedi Padawan +2372 LOK EGG 0 0 -6223.26 13.61 3389.98 0.00 0.84 0.00 0.55 1 a Jedi Padawan +2373 LOK EGG 0 0 -6441.53 16.59 3913.88 0.00 0.11 0.00 0.99 1 a Blood Razor pirate +2374 LOK EGG 0 0 -6414.30 13.09 3855.35 0.00 -0.40 0.00 0.92 1 a Blood Razor pirate +2375 LOK EGG 0 0 -6504.93 19.50 3854.31 0.00 0.84 0.00 -0.54 1 a Blood Razor pirate +2376 LOK EGG 0 0 -6428.46 13.12 3878.30 0.00 0.91 0.00 0.42 1 a Blood Razor pirate +2377 LOK EGG 0 0 -6468.12 16.11 3886.43 0.00 0.99 0.00 0.16 1 Jorund Saleem (a Blood Razor captain) +2378 LOK EGG 0 0 -6501.70 16.22 3883.78 0.00 -0.39 0.00 0.92 1 a Blood Razor pirate +2379 LOK EGG 0 0 -6461.57 16.60 3874.20 0.00 0.99 0.00 0.13 1 a Blood Razor pirate +2380 LOK EGG 0 0 -6442.76 12.91 3846.97 0.00 0.56 0.00 0.83 1 a Blood Razor pirate +2381 LOK EGG 0 0 -6472.38 15.36 3921.17 0.00 0.09 0.00 1.00 1 a Blood Razor pirate +2382 LOK EGG 0 0 -7667.21 92.06 3484.03 0.00 0.41 0.00 0.91 1 Tao-Ni Security Elite Protector +2383 LOK EGG 0 0 -7658.22 92.15 3489.35 0.00 -0.45 0.00 0.89 1 Tao-Ni Security Elite Protector +2384 LOK EGG 0 0 -7648.56 91.95 3511.14 0.00 0.98 0.00 -0.22 1 Tao-Ni Security Elite Protector +2385 LOK EGG 0 0 -7657.30 91.97 3517.77 0.00 1.00 0.00 -0.07 1 Tao-Ni Security Elite Protector +2386 LOK EGG 0 0 -7668.05 92.05 3528.92 0.00 1.00 0.00 0.03 1 Tao-Ni Security Elite Protector +2387 LOK EGG 0 0 -7628.95 92.03 3500.72 0.00 -0.67 0.00 0.74 1 Tao-Ni Security Elite Protector +2388 LOK EGG 0 0 -7629.02 106.63 3534.14 0.00 0.95 0.00 -0.31 1 Tao-Ni Security Elite Protector +2389 LOK EGG 0 0 -7648.18 92.04 3496.66 0.00 0.73 0.00 -0.68 1 Tao-Ni Security Elite Protector +2401 LOK EGG 0 0 -6090.87 61.96 5937.50 0.00 0.92 0.00 0.39 1 a Rebel trooper +2402 LOK EGG 0 0 -6086.50 62.13 5941.89 0.00 0.94 0.00 0.34 1 a Rebel trooper +2403 LOK EGG 0 0 -6074.71 62.13 5938.66 0.00 0.92 0.00 -0.40 1 a Rebel trooper +2404 LOK EGG 0 0 -6079.12 61.94 5921.17 0.00 -0.14 0.00 0.99 1 a Rebel trooper +2405 LOK EGG 0 0 -6116.88 61.87 5948.04 0.00 0.76 0.00 0.65 1 a Rebel trooper +2406 LOK EGG 0 0 -6094.00 59.55 5970.40 0.00 0.94 0.00 0.34 1 a Rebel trooper +2407 LOK EGG 0 0 -6069.94 61.94 5965.03 0.00 0.97 0.00 -0.26 1 a Rebel trooper +2408 LOK EGG 0 0 -6048.62 60.41 5943.93 0.00 0.79 0.00 -0.61 1 a Rebel trooper +2409 LOK EGG 0 0 -3922.00 12.03 -3922.00 0.00 0.82 0.00 0.58 1 Marla +2410 LOK EGG 0 0 -783.51 14.25 -4980.35 0.00 -0.34 0.00 0.94 1 a Jedi Padawan +2411 LOK EGG 0 0 -785.70 14.68 -4965.36 0.00 1.00 0.00 0.10 1 a Jedi Padawan +2412 LOK EGG 0 0 -796.43 15.37 -4974.22 0.00 0.46 0.00 0.89 1 a Jedi Padawan +2413 LOK EGG 0 0 -1991.73 11.24 -3345.88 0.00 0.46 0.00 0.89 1 Nym's elite enforcer +2414 LOK EGG 0 0 -1967.00 11.94 -3365.00 0.00 0.07 0.00 1.00 1 Emmett +2415 LOK EGG 0 0 -1981.52 11.12 -3407.14 0.00 0.20 0.00 0.98 1 Nym's elite enforcer +2416 LOK EGG 0 0 -1936.50 12.09 -3386.84 0.00 -0.34 0.00 0.94 1 Nym's elite enforcer +2417 LOK EGG 0 0 -1969.48 12.00 -3001.60 0.00 0.81 0.00 0.59 1 a Stormtrooper +2418 LOK EGG 0 0 -1900.43 12.00 -2984.39 0.00 0.85 0.00 0.53 1 a Stormtrooper +2419 LOK EGG 0 0 -1903.74 12.00 -3058.05 0.00 0.03 0.00 1.00 1 a Stormtrooper +2420 LOK EGG 0 0 -1905.50 12.00 -3109.29 0.00 0.93 0.00 -0.37 1 a Stormtrooper +2421 LOK EGG 0 0 -1916.42 12.00 -3135.65 0.00 0.99 0.00 -0.13 1 a Stormtrooper +2422 LOK EGG 0 0 -1828.21 12.00 -3126.61 0.00 0.81 0.00 -0.59 1 a Stormtrooper +2423 LOK EGG 0 0 -1939.65 12.00 -3101.75 0.00 -0.65 0.00 0.76 1 a Stormtrooper +2424 LOK EGG 0 0 -1976.19 12.00 -3030.87 0.00 0.93 0.00 -0.37 1 a Stormtrooper +2425 LOK EGG 0 0 -1832.53 12.00 -3049.33 0.00 0.85 0.00 0.53 1 a Stormtrooper +2426 LOK EGG 0 0 -1830.43 12.00 -3086.94 0.00 0.81 0.00 0.58 1 a Stormtrooper +2427 LOK EGG 0 0 -1866.59 12.00 -3114.77 0.00 0.76 0.00 -0.65 1 a Stormtrooper +2428 LOK EGG 0 0 -1917.27 12.00 -3175.72 0.00 1.00 0.00 0.05 1 a Stormtrooper +2429 LOK EGG 0 0 -1957.70 12.00 -3149.53 0.00 -0.27 0.00 0.96 1 a Stormtrooper +2430 LOK EGG 0 0 -2004.01 12.00 -3074.15 0.00 -0.44 0.00 0.90 1 a Stormtrooper +2431 LOK EGG 0 0 -1887.32 12.00 -3175.29 0.00 0.61 0.00 0.79 1 a Stormtrooper +2432 LOK EGG 0 0 -83.47 12.00 2719.78 0.00 0.33 0.00 0.94 1 Cale Serasai +2433 LOK EGG 0 0 -113.27 12.00 2713.99 0.00 0.18 0.00 0.98 1 Vekis Kiyanu (a bounty hunter) +2434 LOK EGG 0 0 -2036.34 42.26 5969.93 0.00 0.96 0.00 0.29 1 Cale Herron (a Slicer) +2440 LOK EGG 0 0 1854.72 12.04 -2233.07 0.00 0.99 0.00 -0.17 1 a Canyon Corsair pirate +2441 LOK EGG 0 0 1848.35 12.17 -2253.36 0.00 0.99 0.00 -0.11 1 a Canyon Corsair pirate +2442 LOK EGG 0 0 1840.01 12.01 -2302.35 0.00 1.00 0.00 -0.09 1 a Canyon Corsair pirate +2443 LOK EGG 0 0 1806.61 41.60 -2285.14 0.00 0.85 0.00 -0.53 1 a Canyon Corsair pirate +2444 LOK EGG 0 0 1879.79 39.19 -2286.23 0.00 0.61 0.00 0.79 1 a Canyon Corsair pirate +2445 LOK EGG 0 0 1858.11 11.82 -2323.52 0.00 1.00 0.00 -0.09 1 a Canyon Corsair destroyer +2446 LOK EGG 0 0 1827.67 12.09 -2337.41 0.00 0.78 0.00 -0.63 1 a Canyon Corsair destroyer +2447 LOK EGG 0 0 1793.59 31.87 -2313.45 0.00 -0.60 0.00 0.80 1 a Canyon Corsair destroyer +2448 LOK EGG 0 0 1875.20 12.15 -2209.25 0.00 0.47 0.00 0.88 1 a Canyon Corsair destroyer +2449 LOK EGG 0 0 1845.84 11.99 -2201.16 0.00 -0.47 0.00 0.88 1 a Canyon Corsair destroyer +2450 LOK EGG 0 0 1850.31 12.03 -2174.77 0.00 0.27 0.00 0.96 1 a Canyon Corsair cutthroat +2451 LOK EGG 0 0 1880.61 12.15 -2183.04 0.00 0.57 0.00 0.82 1 a Canyon Corsair cutthroat +2452 LOK EGG 0 0 1894.49 11.92 -2208.96 0.00 0.66 0.00 0.75 1 a Canyon Corsair cutthroat +2453 LOK EGG 0 0 1804.43 34.83 -2257.86 0.00 0.17 0.00 0.98 1 a Canyon Corsair cutthroat +2454 LOK EGG 0 0 351.45 12.06 4862.06 0.00 0.66 0.00 0.75 1 Bedhead +2455 LOK EGG 0 0 104.36 11.89 4891.24 0.00 -0.62 0.00 0.78 1 a Slicer sentry +2456 LOK EGG 0 0 241.81 11.99 4628.48 0.01 -0.51 0.01 0.86 1 Meatlump Dunder (Outpost Guard) +2457 LOK EGG 0 0 480.93 22.84 4921.16 0.00 0.04 0.00 1.00 1 Nym's guard +2458 LOK EGG 0 0 464.00 23.00 4950.00 0.00 0.63 0.00 0.78 1 a disgruntled townsperson +2459 LOK EGG 0 0 351.66 12.14 4846.00 0.00 0.70 0.00 0.72 1 Scarecrow +2460 LOK EGG 0 0 580.94 3.00 5352.85 0.00 0.93 0.00 -0.37 1 Balfur Jhcor (associate bounty hunter) +2461 LOK EGG 0 0 351.66 11.87 4854.02 0.00 0.71 0.00 0.70 1 Blinky +2462 LOK EGG 0 0 281.74 11.96 4618.07 -0.01 1.00 0.00 0.09 1 Meatlump Dunder (Outpost Guard) +2463 LOK EGG 0 0 490.20 11.97 5021.58 0.00 0.92 0.00 0.39 1 Kaibe +2464 LOK EGG 0 0 272.34 12.04 4656.36 0.00 0.42 0.01 0.91 1 Meatlump Dunder (Outpost Guard) +2465 LOK EGG 0 0 463.67 23.00 4967.00 0.00 -0.61 0.00 0.80 1 Ran Machado +2466 LOK EGG 0 0 401.00 11.98 5226.00 0.00 0.03 0.00 1.00 1 Baldwin +2467 LOK EGG 0 0 477.89 23.00 4952.12 0.00 0.78 0.00 -0.62 1 a disgruntled townsperson +2468 LOK EGG 0 0 135.63 11.87 4889.73 0.00 0.71 0.00 0.70 1 a Slicer sentry +2469 LOK EGG 0 0 580.77 3.00 5345.92 0.00 0.00 0.00 1.00 1 Joti Laike +2470 LOK EGG 0 0 684.90 45.69 4987.94 0.00 -0.57 0.00 0.82 1 Troubles +2471 LOK EGG 0 0 111.18 11.70 4906.17 0.00 0.16 0.00 0.99 1 a Slicer sentry +2472 LOK EGG 0 0 362.00 12.07 4837.00 0.00 0.00 0.00 1.00 1 Ralia Reeven (Nym's Quartermaster) +2473 LOK EGG 0 0 477.00 23.00 4947.00 0.00 0.78 0.00 -0.62 1 a disgruntled townsperson +2474 LOK EGG 0 0 484.17 23.00 4948.35 0.00 -0.24 0.00 0.97 1 a disgruntled townsperson +2475 LOK EGG 0 0 361.59 11.98 4878.93 0.00 -0.54 0.00 0.84 1 Runt +2476 LOK EGG 0 0 470.00 23.00 4952.00 0.00 0.63 0.00 0.78 1 a disgruntled townsperson +2477 LOK EGG 0 0 473.00 23.00 4956.00 0.00 0.78 0.00 -0.62 1 a disgruntled townsperson +2478 LOK EGG 0 0 472.83 22.78 4920.99 0.00 -0.05 0.00 1.00 1 Nym's guard +2479 LOK EGG 0 0 467.18 34.47 4810.25 0.00 0.70 0.00 0.71 1 Arena Referee +2494 LOK EGG 0 0 351.17 12.07 4838.05 0.00 0.69 0.00 0.72 1 Slobbers +2495 LOK EGG 0 0 711.00 11.39 5265.00 0.00 0.90 0.00 0.43 1 Phor Cl-lan (A Water Treatment Tech) +2496 LOK EGG 0 0 470.00 23.00 4946.00 0.00 1.00 0.00 -0.04 1 a disgruntled townsperson +2497 LOK EGG 0 0 3012.16 286.55 -4402.43 0.00 0.79 0.00 -0.62 1 Raphael Mar-Shayal (a Rebel pilot) +2498 LOK EGG 0 0 2963.00 325.04 -4500.00 0.00 0.94 0.00 -0.34 1 Edwyn +2499 LOK EGG 0 0 2965.03 330.36 -4523.87 0.00 -0.36 0.00 0.93 1 Dak Vox +2500 LOK EGG 0 0 2921.43 345.00 -4589.13 0.00 -0.67 0.00 0.75 1 a pirate +2501 LOK EGG 0 0 2882.75 334.61 -4568.83 0.00 0.71 0.00 0.71 1 a pirate +2502 LOK EGG 0 0 2896.97 328.48 -4533.27 0.00 0.79 0.00 0.61 1 a pirate +2503 LOK EGG 0 0 3033.91 337.48 -4545.86 0.00 0.56 0.00 0.83 1 a pirate +2504 LOK EGG 0 0 3037.39 325.16 -4489.41 0.00 0.89 0.00 0.46 1 a pirate +2505 LOK EGG 0 0 2890.10 307.39 -4472.50 0.00 0.87 0.00 -0.49 1 a pirate +2506 LOK EGG 0 0 3821.67 63.00 -542.40 0.00 0.43 0.00 0.90 1 Rei Reeven (injured) +2507 LOK EGG 0 0 3529.67 2.54 2137.61 0.00 0.75 0.00 0.66 1 Nym's elite enforcer +2508 LOK EGG 0 0 3519.94 6.74 2058.30 0.00 0.11 0.00 0.99 1 Nym's elite enforcer +2509 LOK EGG 0 0 3562.30 0.88 2086.41 0.00 -0.30 0.00 0.96 1 Nym's elite enforcer +2510 LOK EGG 0 0 3511.00 6.88 2116.00 0.00 0.61 0.00 0.79 1 Briscoe +2511 LOK EGG 0 0 4568.00 13.09 -1168.00 0.00 0.30 0.00 0.96 1 Oono Mor'in +2512 LOK EGG 0 0 5065.85 97.20 406.36 0.00 -0.39 0.00 0.92 1 a Jedi Padawan +2513 LOK EGG 0 0 5065.91 96.78 412.12 0.00 1.00 0.00 -0.02 1 a Jedi Padawan +2514 LOK EGG 0 0 6018.00 11.99 5182.00 0.00 -0.64 0.00 0.77 1 Etta +2515 LOK EGG 0 0 4155.52 98.14 7594.58 0.00 0.83 0.00 0.56 1 Hunde Decan +2516 LOK EGG 0 0 6192.58 61.93 909.65 0.00 0.97 0.00 -0.25 1 a Jedi Padawan +2517 LOK EGG 0 0 6189.33 61.97 913.42 0.00 0.83 0.00 -0.56 1 a strong mercenary +2518 LOK EGG 0 0 6199.27 61.78 916.43 0.00 0.91 0.00 -0.42 1 a mercenary elite +2519 LOK EGG 0 0 6199.10 62.11 900.91 0.00 -0.42 0.00 0.91 1 a mercenary elite +2522 LOK EGG 0 0 -2129.00 104.00 5939.00 0.00 0.00 0.00 0.00 1 a langlatch giant +2708 NABOO EGG 0 0 -7385.89 6.48 -7234.55 0.00 0.95 0.00 0.31 1 a gungan reject +2709 NABOO EGG 0 0 -7370.64 4.86 -7220.74 0.00 0.98 0.00 -0.17 1 a gungan reject +2710 NABOO EGG 0 0 -7377.44 5.89 -7238.08 0.00 0.86 0.00 -0.50 1 a gungan reject +2711 NABOO EGG 0 0 -6589.45 -209.81 5985.28 0.00 0.99 0.00 -0.17 1 an elder female swamp tusk-cat +2712 NABOO EGG 0 0 -6600.16 -209.86 5992.89 0.00 0.25 0.00 0.97 1 an elder female swamp tusk-cat +2713 NABOO EGG 0 0 -6582.05 -209.94 5989.27 0.00 0.80 0.00 0.61 1 an elder female swamp tusk-cat +2714 NABOO EGG 0 0 -6601.17 -209.84 5981.00 0.00 0.51 0.00 0.86 1 an elder female swamp tusk-cat +2715 NABOO EGG 0 0 -4886.45 6.37 -6875.75 0.00 0.99 0.00 0.14 1 a Rebel trooper +2716 NABOO EGG 0 0 -4890.03 6.18 -6866.27 0.00 -0.11 0.00 0.99 1 a Rebel trooper +2717 NABOO EGG 0 0 -4894.77 6.32 -6870.54 0.00 0.79 0.00 -0.61 1 a Rebel trooper +2718 NABOO EGG 0 0 -4882.72 6.03 -6869.62 0.00 0.61 0.00 0.80 1 a Rebel trooper +2719 NABOO EGG 0 0 -4868.55 6.23 -6857.00 0.00 0.26 0.00 0.97 1 a Rebel trooper +2720 NABOO EGG 0 0 -4892.82 6.11 -6839.45 0.00 -0.18 0.00 0.98 1 a Rebel trooper +2721 NABOO EGG 0 0 -4890.24 7.07 -6887.59 0.00 1.00 0.00 -0.01 1 a Rebel trooper +2722 NABOO EGG 0 0 -4933.99 4.14 -6870.19 0.00 0.80 0.00 -0.60 1 a Rebel trooper +2723 NABOO EGG 0 0 -4938.25 5.12 -6830.68 0.00 0.79 0.00 -0.61 1 a Rebel trooper +2724 NABOO EGG 0 0 -4932.23 6.44 -6791.95 0.00 -0.16 0.00 0.99 1 a Rebel trooper +2725 NABOO EGG 0 0 -4914.79 4.82 -6770.99 0.00 -0.09 0.00 1.00 1 a Rebel trooper +2726 NABOO EGG 0 0 -4832.16 4.99 -6815.89 0.00 0.40 0.00 0.92 1 a Rebel trooper +2727 NABOO EGG 0 0 -4822.02 5.02 -6856.67 0.00 0.94 0.00 -0.34 1 a Rebel trooper +2728 NABOO EGG 0 0 -4813.54 4.70 -6888.80 0.00 0.90 0.00 0.43 1 a Rebel trooper +2729 NABOO EGG 0 0 -4843.27 5.00 -6914.86 0.00 0.86 0.00 -0.51 1 a Rebel trooper +2730 NABOO EGG 0 0 -4875.22 5.40 -6921.47 0.00 0.57 0.00 0.82 1 a Rebel trooper +2731 NABOO EGG 0 0 -4890.77 5.09 -6933.57 0.00 -0.52 0.00 0.85 1 a Rebel trooper +2732 NABOO EGG 0 0 -4917.84 4.17 -6913.23 0.00 -0.36 0.00 0.93 1 a Rebel trooper +2733 NABOO EGG 0 0 -4895.06 3.41 -6821.45 0.00 -0.07 0.00 1.00 1 a Rebel trooper +2734 NABOO EGG 0 0 -4452.00 294.43 -3450.00 0.00 -0.47 0.00 0.88 1 a giant peko peko +2735 NABOO EGG 0 0 -4428.09 304.75 -3424.81 0.00 0.81 0.00 -0.59 1 a giant peko peko +2736 NABOO EGG 0 0 -4471.61 295.36 -3479.47 0.00 0.07 0.00 1.00 1 a giant peko peko +2737 NABOO EGG 0 0 -5476.60 -150.00 -77.79 0.00 -0.22 0.00 0.98 1 Layton +2738 NABOO EGG 0 0 -5562.97 -150.00 -43.23 0.00 0.94 0.00 -0.33 1 Mikfa Faaus +2739 NABOO EGG 0 0 -5912.21 24.71 695.22 0.00 -0.10 0.00 1.00 1 a peko peko albatross +2740 NABOO EGG 0 0 -4759.00 6.00 3582.00 0.00 0.99 0.00 -0.13 1 Jak Chucka +2747 NABOO EGG 0 0 -5236.46 6.00 3652.36 0.01 -0.68 0.00 0.73 1 Meatlump Donk (Outpost Guard) +2748 NABOO EGG 0 0 -5990.13 8.14 3904.14 0.00 -0.54 0.00 0.84 1 a Muskeg fanatic +2749 NABOO EGG 0 0 -5401.42 10.16 3601.44 0.00 0.93 0.00 -0.38 1 a Mystril Skirmisher +2750 NABOO EGG 0 0 -5415.82 12.88 3559.00 0.00 0.46 0.00 0.89 1 A Mystril Assault Trooper +2751 NABOO EGG 0 0 -5995.05 9.17 3867.73 0.00 0.78 0.00 0.63 1 a Muskeg fanatic +2752 NABOO EGG 0 0 -6080.95 8.80 3837.69 0.00 0.59 0.00 0.81 1 Dubbin Sharr (a Muskeg zealot chief) +2753 NABOO EGG 0 0 -5440.36 6.00 3929.11 0.00 -0.12 0.00 0.99 1 Jorgellansel (a Darkwalker adjutant) +2754 NABOO EGG 0 0 -5099.04 10.56 3020.92 0.00 1.00 0.00 0.06 1 a wild-eyed fambaa +2755 NABOO EGG 0 0 -5412.97 11.60 3587.63 0.00 -0.18 0.00 0.98 1 A Mystril Assault Trooper +2756 NABOO EGG 0 0 -4558.28 9.97 3668.68 0.00 0.76 0.00 -0.65 1 a Mummer brute +2757 NABOO EGG 0 0 -5772.45 10.16 3739.90 0.00 -0.37 0.00 0.93 1 a Peddler fence.a Peddler frontman +2758 NABOO EGG 0 0 -4708.54 6.00 3607.39 0.00 0.17 0.00 0.99 1 a wild-eyed fambaa +2759 NABOO EGG 0 0 -4518.99 13.69 3703.48 0.00 0.63 0.00 0.78 1 a Mummer brute +2760 NABOO EGG 0 0 -4968.10 6.00 3645.78 0.00 0.66 0.00 0.75 1 a nightspider +2761 NABOO EGG 0 0 -4553.42 6.00 4080.88 0.00 0.97 0.00 -0.24 1 a terrorist +2762 NABOO EGG 0 0 -4663.29 6.00 4021.46 0.00 0.95 0.00 -0.30 1 a terrorist +2763 NABOO EGG 0 0 -4670.50 6.00 3976.41 0.00 -0.55 0.00 0.83 1 a terrorist +2764 NABOO EGG 0 0 -4567.65 10.00 3630.34 0.00 0.97 0.00 0.24 1 a Mummer brute +2765 NABOO EGG 0 0 -5015.35 16.34 3038.65 0.00 0.72 0.00 0.69 1 a wild-eyed fambaa +2766 NABOO EGG 0 0 -5963.45 6.58 3887.37 0.00 0.44 0.00 0.90 1 a Muskeg fanatic +2778 NABOO EGG 0 0 -4192.85 45.56 3872.65 0.00 1.00 0.00 0.01 1 Borvo's thug +2779 NABOO EGG 0 0 -4470.00 10.30 3674.96 0.00 -0.63 0.00 0.78 1 a Mummer brute +2780 NABOO EGG 0 0 -4629.79 6.00 3938.34 0.00 0.41 0.00 0.91 1 a terrorist +2781 NABOO EGG 0 0 -5899.49 8.70 3916.58 0.00 0.64 0.00 0.77 1 a Muskeg radical +2782 NABOO EGG 0 0 -4554.47 14.45 3590.12 0.00 0.98 0.00 0.19 1 a Mummer brute +2783 NABOO EGG 0 0 -5708.95 10.18 3739.70 0.00 0.19 0.00 0.98 1 a Peddler fence.a Peddler frontman +2784 NABOO EGG 0 0 -4513.28 10.05 3654.54 0.00 0.92 0.00 0.40 1 a Mummer brute +2785 NABOO EGG 0 0 -5907.77 7.45 3941.59 0.00 0.69 0.00 0.72 1 a Muskeg radical +2786 NABOO EGG 0 0 -4249.41 38.78 3929.37 0.00 0.72 0.00 -0.69 1 Borvo's thug +2787 NABOO EGG 0 0 -4165.85 41.20 3864.89 0.00 0.98 0.00 0.22 1 Borvo's thug +2788 NABOO EGG 0 0 -4701.87 6.00 4014.20 0.00 -0.44 0.00 0.90 1 an R5 unit +2789 NABOO EGG 0 0 -4622.31 6.00 4084.30 0.00 0.26 0.00 0.97 1 a terrorist +2790 NABOO EGG 0 0 -4703.40 6.00 3933.60 0.00 0.96 0.00 -0.26 1 a terrorist +2791 NABOO EGG 0 0 -4922.39 6.00 3662.44 0.00 0.42 0.00 0.91 1 a nightspider +2792 NABOO EGG 0 0 -4704.20 6.00 4015.52 0.00 -0.07 0.00 1.00 1 Major Harvin Franchels (an RSF officer) +2793 NABOO EGG 0 0 -4457.20 5.48 3618.95 0.00 0.62 0.00 0.78 1 a Mummer brute +2794 NABOO EGG 0 0 -4228.64 44.35 3877.18 0.00 -0.36 0.00 0.93 1 Borvo's thug +2795 NABOO EGG 0 0 -5241.16 6.00 3669.96 -0.01 0.88 0.00 0.47 1 Meatlump Dunder (Outpost Guard) +2796 NABOO EGG 0 0 -4644.42 6.00 3991.87 0.00 0.43 0.00 0.90 1 a terrorist +2797 NABOO EGG 0 0 -4664.04 6.00 3904.07 0.00 0.53 0.00 0.85 1 a terrorist +2798 NABOO EGG 0 0 -4975.06 10.47 3121.07 0.00 0.59 0.00 0.81 1 a wild-eyed fambaa +2799 NABOO EGG 0 0 -6057.14 9.44 3815.11 0.00 0.64 0.00 0.77 1 a Muskeg zealot +2800 NABOO EGG 0 0 -4204.28 38.25 3937.16 0.00 0.24 0.00 0.97 1 Borvo's thug +2801 NABOO EGG 0 0 -4506.81 7.29 3596.34 0.00 0.63 0.00 0.78 1 a Mummer brute +2802 NABOO EGG 0 0 -4577.34 6.00 4042.21 0.00 0.77 0.00 -0.64 1 a terrorist +2803 NABOO EGG 0 0 -5023.71 6.00 3745.03 0.00 -0.24 0.00 0.97 1 a nightspider +2804 NABOO EGG 0 0 -4996.57 6.00 3710.34 0.00 0.28 0.00 0.96 1 a nightspider +2805 NABOO EGG 0 0 -4146.54 45.19 3923.15 0.00 0.80 0.00 0.59 1 Borvo's thug +2806 NABOO EGG 0 0 -5252.86 6.50 3651.86 -0.01 0.91 0.00 -0.41 1 Meatlump Dunder (Outpost Guard) +2807 NABOO EGG 0 0 -5052.96 12.32 3069.58 0.00 0.94 0.00 -0.34 1 a wild-eyed fambaa +2808 NABOO EGG 0 0 -5441.32 13.17 3562.62 0.00 0.92 0.00 0.40 1 A Mystril Assault Trooper +2859 NABOO EGG 0 0 -5946.84 6.06 3944.06 0.00 0.96 0.00 -0.27 1 a Muskeg radical +2860 NABOO EGG 0 0 -5929.22 7.61 3919.52 0.00 0.91 0.00 0.41 1 a Muskeg radical +2861 NABOO EGG 0 0 -4959.30 6.00 4048.02 0.00 0.90 0.00 -0.44 1 Toff Henrou (a Skaak Tipper) +2862 NABOO EGG 0 0 -5790.48 13.80 3696.89 0.00 0.73 0.00 0.69 1 a Peddler fence.a Peddler frontman +2863 NABOO EGG 0 0 -5038.73 6.00 3693.18 0.00 0.82 0.00 0.57 1 a nightspider +2864 NABOO EGG 0 0 -5019.00 6.00 4012.00 0.00 0.38 0.00 0.93 1 Beast Trainer +2865 NABOO EGG 0 0 -4822.17 11.54 3360.81 0.00 0.11 0.00 0.99 1 a wild-eyed fambaa +2866 NABOO EGG 0 0 -4123.81 45.43 3889.46 0.00 0.86 0.00 0.52 1 Borvo's thug +2867 NABOO EGG 0 0 -5955.56 11.11 3849.82 0.00 0.93 0.00 -0.38 1 a Muskeg fanatic +2868 NABOO EGG 0 0 -5747.16 12.67 3721.52 0.00 -0.43 0.00 0.90 1 a Peddler fence.a Peddler frontman +2869 NABOO EGG 0 0 -6076.23 7.94 3855.97 0.00 0.90 0.00 -0.43 1 a Muskeg zealot +2870 NABOO EGG 0 0 -6113.90 8.93 3846.42 0.00 0.84 0.00 0.54 1 a Muskeg zealot +2871 NABOO EGG 0 0 -4599.41 6.00 3981.18 0.00 -0.68 0.00 0.73 1 a terrorist +2872 NABOO EGG 0 0 -5757.42 18.42 3659.95 0.00 0.09 0.00 1.00 1 a Peddler fence.a Peddler frontman +2873 NABOO EGG 0 0 -6107.27 8.52 3881.77 0.00 -0.59 0.00 0.81 1 a Muskeg zealot +2874 NABOO EGG 0 0 -4661.54 37.52 3517.84 0.00 0.19 0.00 0.98 1 a nesting kaadu +2875 NABOO EGG 0 0 -5921.88 6.40 3964.33 0.00 -0.43 0.00 0.90 1 a Muskeg radical +2876 NABOO EGG 0 0 -4203.40 47.44 3854.72 0.00 0.98 0.00 -0.22 1 Borvo's thug +2877 NABOO EGG 0 0 -6105.93 10.56 3811.82 0.00 0.46 0.00 0.89 1 a Muskeg zealot +2878 NABOO EGG 0 0 -5729.11 12.77 3684.43 0.00 -0.63 0.00 0.77 1 a Peddler fence.a Peddler frontman +2879 NABOO EGG 0 0 -5434.29 12.55 3594.92 0.00 0.81 0.00 -0.59 1 A Mystril Assault Trooper +2880 NABOO EGG 0 0 -5029.52 10.92 3104.72 0.00 0.93 0.00 -0.37 1 a wild-eyed fambaa +2881 NABOO EGG 0 0 -5005.26 6.00 3666.03 0.00 0.96 0.00 0.28 1 a nightspider +2882 NABOO EGG 0 0 -4906.12 6.37 3208.92 0.00 0.35 0.00 0.94 1 a wild-eyed fambaa +2883 NABOO EGG 0 0 -4616.42 37.07 3496.76 0.00 0.65 0.00 0.76 1 a nesting kaadu +2884 NABOO EGG 0 0 -6034.40 -199.06 4860.16 0.00 0.18 0.00 0.98 1 a Naboo pirate mugger +2885 NABOO EGG 0 0 -4341.33 -201.84 4328.97 0.00 0.66 0.00 0.75 1 a Darkwalker grinder +2886 NABOO EGG 0 0 -4941.36 -196.37 4716.53 0.00 0.84 0.00 0.54 1 a devious looking Ankura Gungan +2887 NABOO EGG 0 0 -4825.90 -197.56 4875.78 0.00 -0.50 0.00 0.87 1 a Skaak Tipper bruiser +2888 NABOO EGG 0 0 -4310.77 -202.10 4369.69 0.00 0.96 0.00 0.29 1 a Darkwalker grinder +2889 NABOO EGG 0 0 -4261.68 -171.77 4325.96 0.00 0.83 0.00 -0.56 1 a Darkwalker grinder +2890 NABOO EGG 0 0 -4799.97 -195.83 4848.04 0.00 0.73 0.00 -0.69 1 a Skaak Tipper bruiser +2891 NABOO EGG 0 0 -6036.68 -197.78 4825.12 0.00 0.70 0.00 0.71 1 a Naboo pirate butcher +2892 NABOO EGG 0 0 -4821.03 6.00 4139.96 0.00 0.94 0.00 -0.35 1 a profession counselor +2958 NABOO EGG 0 0 -4561.00 6.00 4116.77 0.00 0.82 0.00 0.57 1 a terrorist +2959 NABOO EGG 0 0 -6025.16 -199.63 4760.04 0.00 0.21 0.00 0.98 1 a Naboo pirate savage +2960 NABOO EGG 0 0 -4944.53 -196.42 4717.78 0.00 0.84 0.00 0.54 1 Gungan Light Scout +2961 NABOO EGG 0 0 -4698.46 -196.19 4851.88 0.00 -0.40 0.00 0.92 1 a Skaak Tipper bruiser +2962 NABOO EGG 0 0 -6097.73 6.00 4284.81 0.00 0.88 0.00 0.48 1 Kermollus Preen (a freelance thief) +2963 NABOO EGG 0 0 -6080.19 -209.14 5943.29 0.00 0.86 0.00 -0.51 1 a treasure hunter bodyguard +2964 NABOO EGG 0 0 -4662.97 -197.31 4553.95 0.00 0.46 0.00 0.89 1 a nesting kaadu +2965 NABOO EGG 0 0 -6072.41 -196.37 4832.82 0.00 0.64 0.00 0.77 1 a Naboo pirate butcher +2966 NABOO EGG 0 0 -4248.08 -166.62 4373.21 0.00 0.97 0.00 0.24 1 a Darkwalker drudge +2967 NABOO EGG 0 0 -4289.40 -175.06 4298.34 0.00 0.04 0.00 1.00 1 a Darkwalker drudge +2968 NABOO EGG 0 0 -4663.91 -197.19 4507.58 0.00 0.99 0.00 0.11 1 a nesting kaadu +2969 NABOO EGG 0 0 -6085.91 -196.81 4788.30 0.00 0.84 0.00 -0.54 1 a Naboo pirate savage +2970 NABOO EGG 0 0 -4303.79 -196.73 4339.96 0.00 0.96 0.00 -0.27 1 a Darkwalker grinder +2971 NABOO EGG 0 0 -6080.43 -197.49 4684.18 0.00 0.85 0.00 0.53 1 a Naboo pirate butcher +2972 NABOO EGG 0 0 -5832.20 6.00 4121.04 0.00 -0.28 0.00 0.96 1 Broma Lak +2973 NABOO EGG 0 0 -6078.66 -196.46 4724.66 0.00 0.99 0.00 -0.15 1 a Naboo pirate savage +2974 NABOO EGG 0 0 -6101.50 -199.70 4872.12 0.00 -0.36 0.00 0.93 1 a Naboo pirate mugger +2975 NABOO EGG 0 0 -5112.49 4.75 4597.09 0.00 -0.42 0.00 0.91 1 Ados Jarkey +2976 NABOO EGG 0 0 -4608.60 -198.20 4548.60 0.00 0.70 0.00 0.71 1 a nesting kaadu +2977 NABOO EGG 0 0 -4790.78 -197.00 4899.96 0.00 -0.26 0.00 0.97 1 a Skaak Tipper bruiser +2978 NABOO EGG 0 0 -6038.03 -197.32 4788.81 0.00 -0.60 0.00 0.80 1 a Naboo pirate savage +2979 NABOO EGG 0 0 -4262.15 -174.57 4386.30 0.00 0.74 0.00 0.68 1 a Darkwalker grinder +2980 NABOO EGG 0 0 -4733.63 -195.95 4811.35 0.00 0.82 0.00 0.57 1 a Skaak Tipper bruiser +2981 NABOO EGG 0 0 -6045.35 -195.62 4718.29 0.00 0.72 0.00 0.70 1 a Naboo pirate savage +2982 NABOO EGG 0 0 -4887.71 6.00 4187.64 0.00 0.97 0.00 -0.26 1 Lieutenant Sundria Khartoor (an RSF violent crimes officer) +2983 NABOO EGG 0 0 -5312.14 6.00 4415.56 0.00 0.98 0.00 -0.22 1 Colten +2984 NABOO EGG 0 0 -6023.13 -201.16 4640.12 0.00 1.00 0.00 -0.02 1 a Naboo pirate mugger +2985 NABOO EGG 0 0 -6045.77 -195.51 4676.38 0.00 0.91 0.00 0.41 1 a Naboo pirate butcher +2986 NABOO EGG 0 0 -4812.38 -197.97 4925.08 0.00 0.95 0.00 0.33 1 a Skaak Tipper bruiser +2987 NABOO EGG 0 0 -4317.35 -187.98 4307.93 0.00 0.82 0.00 -0.57 1 a Darkwalker grinder +2988 NABOO EGG 0 0 -6033.49 -200.56 4899.07 0.00 0.57 0.00 0.82 1 a Naboo pirate mugger +2989 NABOO EGG 0 0 -4280.77 -186.61 4382.36 0.00 0.61 0.00 0.79 1 a Darkwalker drudge +2990 NABOO EGG 0 0 -4719.05 -195.69 4500.11 0.00 -0.24 0.00 0.97 1 a nesting kaadu +3032 NABOO EGG 0 0 -4245.42 -183.51 4414.45 0.00 0.56 0.00 0.83 1 a Darkwalker drudge +3033 NABOO EGG 0 0 -6064.62 -196.43 4876.89 0.00 -0.52 0.00 0.85 1 Hunnos Jarkey +3034 NABOO EGG 0 0 -6014.40 -199.46 4697.47 0.00 0.56 0.00 0.83 1 a Naboo pirate mugger +3035 NABOO EGG 0 0 -4679.64 -196.64 4595.25 0.00 -0.02 0.00 1.00 1 a Naboo pirate butcher +3036 NABOO EGG 0 0 -5148.73 6.00 4286.17 0.00 0.58 0.00 0.81 1 a nesting kaadu +3037 NABOO EGG 0 0 -6125.46 -205.17 4891.94 0.00 0.40 0.00 0.92 1 Loruna Scathe +3038 NABOO EGG 0 0 -4209.11 -180.85 4385.94 0.00 -0.64 0.00 0.77 1 a Naboo pirate mugger +3039 NABOO EGG 0 0 -4709.57 -196.76 4896.06 0.00 1.00 0.00 -0.08 1 a Darkwalker grinder +3040 NABOO EGG 0 0 -4303.17 -201.44 4405.10 0.00 1.00 0.00 -0.07 1 a Darkwalker drudge +3041 NABOO EGG 0 0 -4755.36 -196.31 4941.68 0.00 0.62 0.00 0.78 1 a Darkwalker drudge +3042 NABOO EGG 0 0 -5479.36 14.00 4467.15 0.00 1.00 0.00 0.02 1 a Skaak Tipper bruiser +3043 NABOO EGG 0 0 -6066.18 -205.51 4642.80 0.00 -0.69 0.00 0.73 1 Pooja Naberrie +3044 NABOO EGG 0 0 -4713.94 -196.44 4613.51 0.00 0.74 0.00 -0.68 1 a Naboo pirate mugger +3045 NABOO EGG 0 0 -4739.79 -196.60 4866.58 0.00 0.76 0.00 0.65 1 a nesting kaadu +3046 NABOO EGG 0 0 -6116.23 -203.06 4822.39 0.00 0.72 0.00 0.69 1 a Skaak Tipper bruiser +3047 NABOO EGG 0 0 -4805.87 6.00 4130.64 0.00 0.93 0.00 -0.36 1 a Naboo pirate butcher +3048 NABOO EGG 0 0 -4280.14 -187.89 4418.49 0.00 -0.39 0.00 0.92 1 a Darkwalker drudge +3049 NABOO EGG 0 0 -4761.19 -195.89 4849.80 0.00 0.90 0.00 -0.43 1 a Skaak Tipper bruiser +3050 NABOO EGG 0 0 -4610.18 6.00 4148.70 0.00 -0.27 0.00 0.96 1 a terrorist +3051 NABOO EGG 0 0 -6102.56 -200.23 4751.75 0.00 0.81 0.00 -0.58 1 a Naboo pirate savage +3089 NABOO EGG 0 0 -2749.83 5.75 -7239.50 0.00 -0.36 0.00 0.93 1 a Mummer scout +3090 NABOO EGG 0 0 -2719.65 5.88 -7228.09 0.00 -0.02 0.00 1.00 1 a Mummer scout +3091 NABOO EGG 0 0 -2695.54 6.33 -7224.11 0.00 0.13 0.00 0.99 1 a Mummer scout +3092 NABOO EGG 0 0 -2715.22 6.29 -7246.50 0.00 0.94 0.00 -0.34 1 a Mummer guard +3093 NABOO EGG 0 0 -2727.56 6.29 -7247.87 0.00 0.64 0.00 0.77 1 a Mummer guard +3094 NABOO EGG 0 0 -2721.81 6.29 -7237.60 0.00 0.15 0.00 0.99 1 a Mummer guard +3095 NABOO EGG 0 0 -2712.53 22.29 -7260.24 0.00 1.00 0.00 -0.06 1 a Mummer guard +3096 NABOO EGG 0 0 -2711.33 22.29 -7266.92 0.00 -0.09 0.00 1.00 1 a Mummer guard +3097 NABOO EGG 0 0 -2725.01 22.29 -7254.74 0.00 -0.53 0.00 0.85 1 a Mummer Captain +3098 NABOO EGG 0 0 -2720.11 22.29 -7253.40 0.00 0.84 0.00 0.55 1 a Mummer officer +3099 NABOO EGG 0 0 -2722.09 22.29 -7257.93 0.00 0.76 0.00 0.65 1 a Mummer officer +3100 NABOO EGG 0 0 -2716.86 22.29 -7255.88 0.00 0.74 0.00 0.67 1 a Mummer officer +3101 NABOO EGG 0 0 -2341.68 7.44 -5523.76 0.00 1.00 0.00 0.01 1 a Mauler fanatic +3102 NABOO EGG 0 0 -2372.95 7.21 -5464.67 0.00 -0.50 0.00 0.87 1 a Mauler zealot +3103 NABOO EGG 0 0 -2341.65 7.12 -5491.44 0.00 0.56 0.00 0.83 1 a Mauler zealot +3104 NABOO EGG 0 0 -2161.88 9.04 -5140.11 0.00 -0.20 0.00 0.98 1 a Darkwalker preylord +3105 NABOO EGG 0 0 -2256.02 11.01 -5155.17 0.00 1.00 0.00 -0.04 1 a Darkwalker preylord +3106 NABOO EGG 0 0 -2070.85 16.39 -5070.52 0.00 0.96 0.00 0.27 1 an Ultragungan foot soldier +3107 NABOO EGG 0 0 -2404.33 8.33 -5473.32 0.00 0.73 0.00 -0.68 1 a Mauler zealot +3108 NABOO EGG 0 0 -2169.61 10.89 -5231.63 0.00 0.99 0.00 -0.13 1 a Darkwalker preylord +3123 NABOO EGG 0 0 -2208.43 13.91 -5191.05 0.00 0.98 0.00 0.20 1 a Darkwalker deathraven +3124 NABOO EGG 0 0 -2192.41 8.77 -5118.30 0.00 0.85 0.00 -0.53 1 a Darkwalker preylord +3125 NABOO EGG 0 0 -2258.24 12.23 -5176.30 0.00 0.99 0.00 0.11 1 a Darkwalker preylord +3126 NABOO EGG 0 0 -2370.52 6.73 -5507.76 0.00 0.58 0.00 0.82 1 a Mauler fiend +3127 NABOO EGG 0 0 -2422.88 7.14 -5508.29 0.00 0.22 0.00 0.97 1 a Mauler fanatic +3128 NABOO EGG 0 0 -2063.98 17.01 -5059.14 0.00 0.91 0.00 0.41 1 an Ultragungan foot soldier +3129 NABOO EGG 0 0 -2347.99 7.22 -5436.38 0.00 0.22 0.00 0.98 1 a Mauler zealot +3130 NABOO EGG 0 0 -2459.08 5.38 -5533.88 0.00 0.83 0.00 -0.56 1 a Mauler fanatic +3131 NABOO EGG 0 0 -2164.29 11.54 -5184.41 0.00 -0.47 0.00 0.88 1 a Darkwalker preylord +3132 NABOO EGG 0 0 -2197.25 12.93 -5211.92 0.00 0.95 0.00 0.31 1 a Darkwalker deathraven +3133 NABOO EGG 0 0 -2257.59 12.47 -5213.93 0.00 0.89 0.00 0.46 1 a Darkwalker preylord +3134 NABOO EGG 0 0 -2212.55 11.22 -5149.93 0.00 0.96 0.00 -0.29 1 a Darkwalker preylord +3135 NABOO EGG 0 0 -2368.35 4.90 -5544.97 0.00 0.77 0.00 0.64 1 a Mauler fanatic +3147 NABOO EGG 0 0 -2154.57 9.67 -5163.63 0.00 0.26 0.00 0.97 1 a Darkwalker preylord +3148 NABOO EGG 0 0 -2203.79 13.67 -5190.97 0.00 0.97 0.00 -0.24 1 a Darkwalker deathraven +3149 NABOO EGG 0 0 -2406.66 4.78 -5553.62 0.00 0.77 0.00 -0.64 1 a Mauler fanatic +3150 NABOO EGG 0 0 -2405.57 9.01 -5442.85 0.00 -0.01 0.00 1.00 1 a Mauler zealot +3151 NABOO EGG 0 0 -2232.99 9.56 -5134.40 0.00 -0.47 0.00 0.88 1 a Darkwalker preylord +3152 NABOO EGG 0 0 -2248.34 11.41 -5243.92 0.00 0.61 0.00 0.79 1 a Darkwalker preylord +3161 NABOO EGG 0 0 -3678.23 5.96 -5294.26 0.00 -0.30 0.00 0.95 1 a Stormtrooper +3162 NABOO EGG 0 0 -3658.54 5.29 -5293.93 0.00 0.12 0.00 0.99 1 a Stormtrooper +3178 NABOO EGG 0 0 -4061.04 67.05 -644.50 0.00 1.00 0.00 0.04 1 a Nikto Blood Cult Fanatic +3179 NABOO EGG 0 0 -3983.06 61.00 -644.67 0.00 -0.55 0.00 0.84 1 a Nikto Blood Cult Fanatic +3184 NABOO EGG 0 0 -4029.93 61.00 -642.76 0.00 -0.61 0.00 0.79 1 a Nikto Blood Cult Fanatic +3185 NABOO EGG 0 0 -4061.40 84.54 -691.85 0.00 0.93 0.00 0.37 1 a Nikto Blood Cult Fanatic +3186 NABOO EGG 0 0 -3977.19 -134.45 4384.40 0.00 0.94 0.00 0.33 1 a mauler gore master +3187 NABOO EGG 0 0 -1992.23 5.20 -5422.23 0.00 0.72 0.00 -0.69 1 Boss Nass +3210 NABOO EGG 0 0 -2033.69 9.97 -5148.10 0.00 -0.52 0.00 0.86 1 an Ultragungan foot soldier +3211 NABOO EGG 0 0 -2021.66 10.09 -5159.91 0.00 0.91 0.00 0.42 1 an Ultragungan foot soldier +3212 NABOO EGG 0 0 -1995.53 11.91 -5066.23 0.00 0.88 0.00 0.48 1 an Ultragungan foot soldier +3213 NABOO EGG 0 0 -1979.24 11.18 -5068.60 0.00 0.94 0.00 0.34 1 an Ultragungan foot soldier +3214 NABOO EGG 0 0 -1966.32 7.97 -4997.47 0.00 -0.44 0.00 0.90 1 an Ultragungan foot soldier +3215 NABOO EGG 0 0 -1955.09 7.42 -5012.96 0.00 1.00 0.00 0.08 1 an Ultragungan foot soldier +3216 NABOO EGG 0 0 -1836.84 3.50 -5084.80 0.00 0.87 0.00 0.49 1 an ultragungan droidtech +3217 NABOO EGG 0 0 -1822.61 4.29 -5086.31 0.00 -0.62 0.00 0.78 1 an ultragungan droidtech +3218 NABOO EGG 0 0 -1820.34 4.48 -5077.22 0.00 0.97 0.00 -0.24 1 an ultragungan droidtech +3219 NABOO EGG 0 0 -1826.63 4.16 -5094.81 0.00 0.71 0.00 -0.70 1 an ultragungan droidtech +3220 NABOO EGG 0 0 -1837.22 3.79 -5096.24 0.00 1.00 0.00 0.09 1 an ultragungan droidtech +3221 NABOO EGG 0 0 -1836.83 4.55 -5108.52 0.00 1.00 0.00 0.06 1 an ultragungan droidtech +3222 NABOO EGG 0 0 -1820.72 5.82 -5119.04 0.00 0.82 0.00 0.58 1 an ultragungan droidtech +3223 NABOO EGG 0 0 -1855.33 4.60 -5077.12 0.00 -0.17 0.00 0.99 1 an ultragungan droidtech +3224 NABOO EGG 0 0 -1838.27 4.34 -5059.46 0.00 0.46 0.00 0.89 1 an ultragungan droidtech +3225 NABOO EGG 0 0 -1800.02 5.52 -5069.66 0.00 0.96 0.00 0.26 1 an ultragungan droidtech +3226 NABOO EGG 0 0 -1844.60 11.91 -5200.77 0.00 0.90 0.00 0.43 1 an Ultragungan flawed battle droid +3227 NABOO EGG 0 0 -1861.44 9.82 -5216.01 0.00 0.99 0.00 -0.15 1 an Ultragungan flawed battle droid +3228 NABOO EGG 0 0 -1839.36 9.39 -5235.08 0.00 -0.09 0.00 1.00 1 an Ultragungan flawed battle droid +3229 NABOO EGG 0 0 -1753.92 7.66 -5239.26 0.00 -0.06 0.00 1.00 1 an Ultragungan flawed battle droid +3230 NABOO EGG 0 0 -1769.47 5.61 -5252.96 0.00 0.96 0.00 -0.29 1 an Ultragungan flawed battle droid +3231 NABOO EGG 0 0 -1746.62 7.05 -5268.31 0.00 0.75 0.00 0.66 1 an Ultragungan flawed battle droid +3232 NABOO EGG 0 0 -1735.24 7.55 -5249.01 0.00 0.70 0.00 0.71 1 an Ultragungan flawed battle droid +3233 NABOO EGG 0 0 -1808.13 5.62 -5324.69 0.00 0.82 0.00 0.57 1 an Ultragungan flawed battle droid +3234 NABOO EGG 0 0 -1811.52 5.70 -5299.80 0.00 -0.11 0.00 0.99 1 an Ultragungan flawed battle droid +3235 NABOO EGG 0 0 -1832.01 5.20 -5307.65 0.00 0.83 0.00 -0.55 1 an Ultragungan flawed battle droid +3236 NABOO EGG 0 0 -1830.94 4.94 -5329.92 0.00 0.98 0.00 -0.18 1 an Ultragungan flawed battle droid +3237 NABOO EGG 0 0 -1642.19 5.86 -5349.69 0.00 0.10 0.00 0.99 1 a Skaak Tipper pariah +3238 NABOO EGG 0 0 -1618.03 9.07 -5360.50 0.00 0.90 0.00 0.44 1 a Skaak Tipper pariah +3239 NABOO EGG 0 0 -1610.93 10.58 -5379.56 0.00 0.96 0.00 -0.28 1 a Skaak Tipper pariah +3240 NABOO EGG 0 0 -1625.06 7.37 -5403.45 0.00 -0.46 0.00 0.89 1 a Skaak Tipper pariah +3241 NABOO EGG 0 0 -1663.38 5.34 -5401.94 0.00 -0.03 0.00 1.00 1 a Skaak Tipper pariah +3242 NABOO EGG 0 0 -1680.30 6.46 -5372.46 0.00 -0.28 0.00 0.96 1 a Skaak Tipper pariah +3243 NABOO EGG 0 0 -1680.24 5.53 -5341.46 0.00 0.02 0.00 1.00 1 a Skaak Tipper pariah +3244 NABOO EGG 0 0 -1730.24 7.27 -5765.45 0.00 -0.44 0.00 0.90 1 Flossin Noz (a Muskeg zealot chief) +3245 NABOO EGG 0 0 -1712.41 5.07 -5755.11 0.00 0.24 0.00 0.97 1 a Muskeg reactionary +3246 NABOO EGG 0 0 -1731.85 5.67 -5740.58 0.00 -0.60 0.00 0.80 1 a Muskeg reactionary +3247 NABOO EGG 0 0 -1754.87 7.82 -5737.61 0.00 -0.64 0.00 0.77 1 a Muskeg reactionary +3248 NABOO EGG 0 0 -1768.37 7.08 -5769.02 0.00 0.99 0.00 -0.11 1 a Muskeg reactionary +3249 NABOO EGG 0 0 -1754.09 5.45 -5801.74 0.00 0.94 0.00 0.34 1 a Muskeg reactionary +3250 NABOO EGG 0 0 -1797.88 4.05 -5762.94 0.00 0.59 0.00 0.80 1 a Muskeg reactionary +3251 NABOO EGG 0 0 -1789.59 5.57 -5734.56 0.00 0.13 0.00 0.99 1 a Muskeg reactionary +3252 NABOO EGG 0 0 -1748.55 7.51 -5697.16 0.00 0.43 0.00 0.90 1 a Muskeg extremist +3253 NABOO EGG 0 0 -1720.53 5.05 -5709.98 0.00 0.64 0.00 0.77 1 a Muskeg extremist +3254 NABOO EGG 0 0 -1708.92 4.96 -5694.91 0.00 0.57 0.00 0.82 1 a Muskeg extremist +3255 NABOO EGG 0 0 -1712.62 5.83 -5674.89 0.00 -0.29 0.00 0.96 1 a Muskeg extremist +3256 NABOO EGG 0 0 -1734.89 4.99 -5659.63 0.00 0.93 0.00 -0.37 1 a Muskeg extremist +3257 NABOO EGG 0 0 -1769.50 6.67 -5665.22 0.00 1.00 0.00 -0.08 1 a Muskeg extremist +3258 NABOO EGG 0 0 -1781.12 5.80 -5682.09 0.00 0.72 0.00 0.70 1 a Muskeg extremist +3259 NABOO EGG 0 0 -1632.12 6.34 -5600.84 0.00 0.87 0.00 -0.49 1 a Muskeg anarchist +3260 NABOO EGG 0 0 -1632.59 6.47 -5539.24 0.00 0.22 0.00 0.98 1 a Muskeg anarchist +3261 NABOO EGG 0 0 -1590.29 9.06 -5538.84 0.00 0.77 0.00 0.64 1 a Muskeg anarchist +3262 NABOO EGG 0 0 -1581.97 10.38 -5595.58 0.00 1.00 0.00 -0.02 1 a Muskeg anarchist +3263 NABOO EGG 0 0 -1596.74 8.23 -5628.21 0.00 0.97 0.00 -0.25 1 a Muskeg anarchist +3264 NABOO EGG 0 0 -1671.00 186.49 -2611.00 0.00 0.48 0.00 0.88 1 a peko peko albatross +3271 NABOO EGG 0 0 372.15 12.58 2036.08 0.00 0.83 0.00 -0.55 1 a Drennic guardian +3272 NABOO EGG 0 0 369.23 12.66 2048.50 0.00 -0.34 0.00 0.94 1 a Drennic guardian +3273 NABOO EGG 0 0 1776.12 12.00 2623.83 0.00 0.99 0.00 -0.14 1 Cam'doen +3274 NABOO EGG 0 0 1907.00 12.00 2352.00 0.00 1.00 0.00 0.06 1 Ogden +3275 NABOO EGG 0 0 324.50 11.90 2051.94 0.00 0.05 0.00 1.00 1 a Drennic Hunter +3276 NABOO EGG 0 0 397.38 10.90 2106.52 0.00 0.66 0.00 0.75 1 a Drennic Hunter +3277 NABOO EGG 0 0 314.78 10.59 2121.25 0.00 -0.25 0.00 0.97 1 a Drennic Hunter +3278 NABOO EGG 0 0 1790.66 12.00 2712.38 0.00 0.94 0.00 -0.34 1 Captain Typho +3279 NABOO EGG 0 0 1373.09 13.00 2726.41 0.00 -0.48 0.00 0.88 1 Keren Shipping Master +3280 NABOO EGG 0 0 1249.87 10.61 4287.95 0.00 -0.69 0.00 0.72 1 Officer Nok +3281 NABOO EGG 0 0 1040.03 -165.80 4816.57 0.00 -0.02 0.00 1.00 1 Doogal Belstar +3282 NABOO EGG 0 0 1131.49 -187.95 4866.35 0.00 -0.15 0.00 0.99 1 Doogal Belstar +3306 NABOO EGG 0 0 4050.87 413.03 -1667.21 0.00 -0.45 0.00 0.89 1 a Mummer flailer +3307 NABOO EGG 0 0 4090.13 391.75 -1704.15 0.00 0.75 0.00 0.66 1 a Mummer flailer +3308 NABOO EGG 0 0 4067.93 406.70 -1728.17 0.00 1.00 0.00 0.09 1 a Mummer flailer +3309 NABOO EGG 0 0 4016.27 459.54 -1717.82 0.00 0.87 0.00 -0.50 1 a Mummer flailer +3310 NABOO EGG 0 0 4022.90 452.07 -1690.37 0.00 0.00 0.00 1.00 1 a Mummer flailer +3311 NABOO EGG 0 0 2526.48 18.47 1889.21 0.00 0.15 0.00 0.99 1 a Mauler apprentice +3312 NABOO EGG 0 0 2522.97 18.47 1911.25 0.00 -0.47 0.00 0.88 1 A Mauler champion +3313 NABOO EGG 0 0 2557.89 18.47 1910.30 0.00 -0.57 0.00 0.82 1 a Mauler apprentice +3314 NABOO EGG 0 0 2538.86 18.47 1897.13 0.00 0.11 0.00 0.99 1 A Mauler champion +3315 NABOO EGG 0 0 2270.86 12.48 1894.38 0.00 0.73 0.00 -0.68 1 a Mauler apprentice +3316 NABOO EGG 0 0 2268.39 12.24 1916.64 0.00 0.90 0.00 0.43 1 a Mauler apprentice +3317 NABOO EGG 0 0 2275.96 12.24 1902.91 0.00 -0.63 0.00 0.78 1 a Mauler apprentice +3318 NABOO EGG 0 0 2900.71 94.01 1125.37 0.00 0.76 0.00 0.65 1 a Mauler lord +3319 NABOO EGG 0 0 2495.85 13.97 2277.41 0.00 0.08 0.00 1.00 1 a Mauler lord +3320 NABOO EGG 0 0 2513.58 13.97 2284.70 0.00 -0.07 0.00 1.00 1 a Mauler lord +3321 NABOO EGG 0 0 2481.84 13.97 2291.21 0.00 0.05 0.00 1.00 1 a Mauler lord +3322 NABOO EGG 0 0 2467.47 16.23 2269.22 0.00 0.51 0.00 0.86 1 a Mauler lord +3323 NABOO EGG 0 0 2489.96 15.60 2228.90 0.00 0.15 0.00 0.99 1 a mauler gore master +3324 NABOO EGG 0 0 5773.52 5.03 -7297.69 0.00 -0.25 0.00 0.97 1 Bounty Hunter +3325 NABOO EGG 0 0 4424.29 5.00 -5075.07 0.00 0.66 0.00 0.76 1 Ahnyx Pollard +3326 NABOO EGG 0 0 4928.00 3.75 -4816.00 0.00 0.81 0.00 -0.59 1 Brigham +3327 NABOO EGG 0 0 5359.69 4.45 -4697.66 0.00 0.89 0.00 0.45 1 Frangee +3328 NABOO EGG 0 0 4316.03 4.61 -4784.66 0.00 0.01 0.00 1.00 1 Borvo's guard +3329 NABOO EGG 0 0 4503.55 6.74 -5196.16 0.00 0.90 0.00 0.43 1 Borvo's champion +3330 NABOO EGG 0 0 4470.81 4.00 -4714.20 0.00 0.82 0.00 -0.57 1 Dagorel +3331 NABOO EGG 0 0 4628.05 6.46 -5044.50 0.00 -0.46 0.01 0.89 1 Meatlump Donk (Outpost Guard) +3332 NABOO EGG 0 0 4648.63 6.53 -5041.35 0.00 0.63 0.01 0.78 1 Meatlump Donk (Outpost Guard) +3333 NABOO EGG 0 0 4645.96 5.00 -5070.18 -0.01 0.96 0.00 -0.28 1 Meatlump Donk (Outpost Guard) +3334 NABOO EGG 0 0 4986.83 287.06 -2070.92 0.00 -0.49 0.00 0.87 1 a Darkwalker triop +3335 NABOO EGG 0 0 4711.68 187.38 -2618.90 0.00 -0.44 0.00 0.90 1 a Strehkforce mercenary +3336 NABOO EGG 0 0 4719.59 253.71 -2347.94 0.00 0.84 0.00 0.55 1 a feral shaupaut +3337 NABOO EGG 0 0 5045.04 242.20 -2140.27 0.00 0.86 0.00 0.51 1 a Darkwalker triop +3338 NABOO EGG 0 0 5513.29 442.70 -2126.36 0.00 -0.06 0.00 1.00 1 a Mountaintop smuggler +3339 NABOO EGG 0 0 4811.09 186.71 -2542.83 0.00 -0.21 0.00 0.98 1 a Strehkforce soldier +3340 NABOO EGG 0 0 4814.94 151.91 -2656.81 0.00 0.78 0.00 -0.63 1 a Strehkforce mercenary +3341 NABOO EGG 0 0 5493.44 448.63 -2111.15 0.00 -0.15 0.00 0.99 1 a Mountaintop smuggler +3342 NABOO EGG 0 0 4844.70 182.08 -2568.87 0.00 0.90 0.00 0.44 1 a Strehkforce soldier +3343 NABOO EGG 0 0 4756.93 264.41 -2337.24 0.00 0.58 0.00 0.82 1 a feral shaupaut +3344 NABOO EGG 0 0 4704.65 243.88 -2277.72 0.00 0.67 0.00 0.74 1 Blot (a feral shaupaut) +3345 NABOO EGG 0 0 5408.19 320.19 -2413.50 0.00 -0.29 0.00 0.96 1 a mountain spineflap +3346 NABOO EGG 0 0 5532.87 441.94 -2260.61 0.00 -0.12 0.00 0.99 1 a Mountaintop spice runner +3347 NABOO EGG 0 0 4809.55 181.85 -2597.76 0.00 -0.65 0.00 0.76 1 a Strehkforce soldier +3348 NABOO EGG 0 0 5585.79 444.68 -2268.98 0.00 -0.51 0.00 0.86 1 a Mountaintop spice runner +3349 NABOO EGG 0 0 5505.66 447.30 -2200.92 0.00 1.00 0.00 0.07 1 a Mountaintop spice runner +3350 NABOO EGG 0 0 4854.33 184.86 -2432.32 0.00 0.60 0.00 0.80 1 a Strehkforce mercenary +3351 NABOO EGG 0 0 5517.93 450.63 -2246.45 0.00 -0.24 0.00 0.97 1 a Mountaintop spice runner +3352 NABOO EGG 0 0 4955.25 290.28 -2158.34 0.00 1.00 0.00 -0.03 1 a Darkwalker triop +3353 NABOO EGG 0 0 5006.24 272.08 -2108.97 0.00 0.93 0.00 0.36 1 a Darkwalker triop +3354 NABOO EGG 0 0 5402.21 322.92 -2397.80 0.00 0.27 0.00 0.96 1 Sprywing (a mountain spineflap) +3355 NABOO EGG 0 0 5473.50 437.91 -2068.65 0.00 0.18 0.00 0.98 1 a Mountaintop smuggler +3356 NABOO EGG 0 0 5444.42 334.98 -2384.15 0.00 0.80 0.00 -0.60 1 a mountain spineflap +3357 NABOO EGG 0 0 5076.60 292.86 -2050.24 0.00 0.00 0.00 1.00 1 a Darkwalker technick +3358 NABOO EGG 0 0 4730.19 234.61 -2289.43 0.00 0.82 0.00 -0.57 1 a feral shaupaut +3359 NABOO EGG 0 0 4958.45 304.42 -2100.71 0.00 0.13 0.00 0.99 1 a Darkwalker triop +3360 NABOO EGG 0 0 5507.37 463.86 -2083.51 0.00 0.85 0.00 -0.52 1 a Mountaintop smuggler +3361 NABOO EGG 0 0 4705.83 248.76 -2264.88 0.00 -0.09 0.00 1.00 1 a feral shaupaut +3362 NABOO EGG 0 0 4891.89 185.14 -2433.24 0.00 0.77 0.00 0.63 1 a Strehkforce mercenary +3363 NABOO EGG 0 0 5510.55 452.89 -2227.48 0.00 -0.47 0.00 0.88 1 Janelle (the Mountaintop smuggler chief) +3364 NABOO EGG 0 0 5629.40 443.24 -2279.78 0.00 -0.44 0.00 0.90 1 a Mountaintop spice runner +3365 NABOO EGG 0 0 5065.06 263.71 -2207.61 0.00 0.96 0.00 -0.26 1 a Darkwalker systol +3366 NABOO EGG 0 0 4870.52 154.38 -2624.93 0.00 0.85 0.00 -0.52 1 a Strehkforce mercenary +3367 NABOO EGG 0 0 5104.18 261.61 -2186.09 0.00 1.00 0.00 -0.01 1 a Darkwalker systol +3368 NABOO EGG 0 0 5560.88 413.86 -2306.42 0.00 -0.41 0.00 0.91 1 a Mountaintop spice runner +3369 NABOO EGG 0 0 5237.67 295.75 -2073.07 0.00 0.77 0.00 0.64 1 a Darkwalker technick +3370 NABOO EGG 0 0 5135.88 265.67 -2106.48 0.00 -0.58 0.00 0.82 1 a Darkwalker technick +3371 NABOO EGG 0 0 5110.84 303.46 -2062.18 0.00 0.99 0.00 0.11 1 a Darkwalker technick +3372 NABOO EGG 0 0 4898.88 151.66 -2593.10 0.00 0.99 0.00 -0.16 1 a Strehkforce mercenary +3373 NABOO EGG 0 0 5031.88 263.83 -2097.18 0.00 0.67 0.00 0.74 1 a Darkwalker triop +3374 NABOO EGG 0 0 4761.96 262.37 -2242.57 0.00 -0.60 0.00 0.80 1 a feral shaupaut +3375 NABOO EGG 0 0 4994.21 276.14 -2147.66 0.00 0.90 0.00 0.44 1 a Darkwalker triop +3376 NABOO EGG 0 0 4777.08 189.37 -2579.38 0.00 0.99 0.00 -0.14 1 a Strehkforce soldier +3377 NABOO EGG 0 0 4863.40 160.66 -2480.45 0.00 -0.23 0.00 0.97 1 a Strehkforce mercenary +3378 NABOO EGG 0 0 4781.03 195.07 -2550.81 0.00 0.90 0.00 -0.43 1 a Strehkforce soldier +3379 NABOO EGG 0 0 5447.55 454.49 -2074.37 0.00 0.79 0.00 -0.61 1 a Mountaintop smuggler +3380 NABOO EGG 0 0 5462.71 448.11 -2178.34 0.00 0.82 0.00 0.58 1 a Mountaintop smuggler +3381 NABOO EGG 0 0 5426.09 327.23 -2351.83 0.00 0.92 0.00 -0.39 1 a mountain spineflap +3382 NABOO EGG 0 0 5194.79 263.06 -2121.16 0.00 0.84 0.00 0.55 1 a Darkwalker technick +3383 NABOO EGG 0 0 5126.84 266.48 -2218.31 0.00 0.70 0.00 0.71 1 a Darkwalker systol +3384 NABOO EGG 0 0 4755.46 157.02 -2650.88 0.00 -0.46 0.00 0.89 1 a Strehkforce mercenary +3385 NABOO EGG 0 0 4743.48 189.85 -2564.47 0.00 0.27 0.00 0.96 1 a Strehkforce soldier +3386 NABOO EGG 0 0 4679.99 262.72 -2331.10 0.00 0.98 0.00 -0.19 1 a feral shaupaut +3387 NABOO EGG 0 0 5056.45 270.86 -2097.46 0.00 0.97 0.00 0.23 1 a Darkwalker systol +3388 NABOO EGG 0 0 5372.75 319.46 -2413.01 0.00 0.79 0.00 -0.61 1 a mountain spineflap +3389 NABOO EGG 0 0 4813.10 186.74 -2562.47 0.00 0.00 0.00 1.00 1 Maris Fahrs (a Strehkforce commander) +3390 NABOO EGG 0 0 5155.37 271.20 -2163.07 0.00 -0.07 0.00 1.00 1 a Darkwalker systol +3391 NABOO EGG 0 0 4657.81 245.15 -2275.83 0.00 -0.11 0.00 0.99 1 a feral shaupaut +3392 NABOO EGG 0 0 4779.89 195.99 -2525.26 0.00 -0.02 0.00 1.00 1 a Strehkforce soldier +3393 NABOO EGG 0 0 5089.93 245.93 -2113.54 0.00 0.88 0.00 0.48 1 a Darkwalker systol +3431 NABOO EGG 0 0 5478.47 442.15 -2158.20 0.00 0.29 0.00 0.96 1 a Mountaintop smuggler +3432 NABOO EGG 0 0 4819.17 184.83 -2455.49 0.00 0.23 0.00 0.97 1 a Strehkforce mercenary +3433 NABOO EGG 0 0 4906.22 151.57 -2554.80 0.00 0.92 0.00 -0.39 1 a Strehkforce mercenary +3434 NABOO EGG 0 0 4705.46 258.63 -2244.03 0.00 0.74 0.00 -0.67 1 a feral shaupaut +3435 NABOO EGG 0 0 4812.80 185.69 -2575.46 0.00 1.00 0.00 0.09 1 Evan Strehk (a Strehkforce commander) +3436 NABOO EGG 0 0 5537.68 445.50 -2238.36 0.00 0.81 0.00 0.59 1 a Mountaintop spice runner +3437 NABOO EGG 0 0 4899.21 153.27 -2507.45 0.00 0.92 0.00 0.38 1 a Strehkforce mercenary +3438 NABOO EGG 0 0 4716.32 239.41 -2309.45 0.00 -0.69 0.00 0.73 1 a feral shaupaut +3439 NABOO EGG 0 0 4777.19 241.55 -2284.50 0.00 0.72 0.00 0.69 1 a feral shaupaut +3440 NABOO EGG 0 0 5355.39 316.41 -2391.39 0.00 -0.27 0.00 0.96 1 a mountain spineflap +3441 NABOO EGG 0 0 4764.10 182.33 -2604.03 0.00 0.96 0.00 0.27 1 a Strehkforce soldier +3442 NABOO EGG 0 0 5377.27 327.14 -2362.28 0.00 0.88 0.00 0.47 1 a mountain spineflap +3443 NABOO EGG 0 0 5507.69 448.44 -2051.91 0.00 0.98 0.00 0.21 1 a Mountaintop smuggler +3444 NABOO EGG 0 0 5102.97 250.82 -2150.84 0.00 0.76 0.00 0.66 1 a Darkwalker systol +3445 NABOO EGG 0 0 5451.82 473.12 -2112.20 0.00 0.78 0.00 -0.63 1 a Mountaintop smuggler +3446 NABOO EGG 0 0 5033.19 262.48 -2183.34 0.00 -0.50 0.00 0.87 1 a Darkwalker systol +3447 NABOO EGG 0 0 4806.83 184.52 -2497.87 0.00 0.27 0.00 0.96 1 a Strehkforce soldier +3448 NABOO EGG 0 0 5433.35 320.74 -2423.18 0.00 -0.37 0.00 0.93 1 a mountain spineflap +3449 NABOO EGG 0 0 4750.34 13.57 -3903.67 0.00 -0.64 0.00 0.77 1 Montrus +3450 NABOO EGG 0 0 4871.03 360.77 -1442.23 0.00 -0.10 0.00 1.00 1 Herman Pate +3451 NABOO EGG 0 0 5353.99 301.82 -1284.53 0.00 0.42 0.00 0.91 1 a Naboo pirate raider +3452 NABOO EGG 0 0 4265.53 324.86 -1260.38 0.00 0.54 0.00 0.84 1 a starving flewt +3453 NABOO EGG 0 0 4302.65 300.55 -1256.11 0.00 0.38 0.00 0.92 1 a starving flewt +3454 NABOO EGG 0 0 4562.93 289.63 -1840.23 0.00 0.99 0.00 0.15 1 a rabid narglatch +3455 NABOO EGG 0 0 5155.18 346.50 -1535.21 0.00 -0.27 0.00 0.96 1 Vance Groten +3456 NABOO EGG 0 0 5788.70 233.08 -1952.73 0.00 0.74 0.00 0.68 1 a Stonewall Labs watchman droid +3457 NABOO EGG 0 0 5160.14 339.73 -2003.40 0.00 -0.54 0.00 0.84 1 a Darkwalker technick +3458 NABOO EGG 0 0 5364.94 314.27 -1336.95 0.00 0.55 0.00 0.83 1 a Naboo pirate swashbuckler +3459 NABOO EGG 0 0 4558.59 91.49 -928.65 0.00 0.25 0.00 0.97 1 a Skaak Tipper bootjack +3460 NABOO EGG 0 0 5351.98 319.67 -1309.52 0.00 -0.42 0.00 0.91 1 a Naboo pirate swashbuckler +3461 NABOO EGG 0 0 5030.63 308.08 -1982.16 0.00 -0.53 0.00 0.85 1 a Darkwalker technick +3462 NABOO EGG 0 0 5753.86 153.33 -1172.46 0.00 0.92 0.00 -0.39 1 a Mauler warblaster +3463 NABOO EGG 0 0 5731.70 150.36 -1171.61 0.00 0.88 0.00 0.47 1 a Mauler battlesword +3464 NABOO EGG 0 0 4548.81 295.77 -1854.48 0.00 0.98 0.00 -0.18 1 a rabid narglatch +3465 NABOO EGG 0 0 4536.58 316.46 -1812.51 0.00 0.74 0.00 -0.68 1 a rabid narglatch +3466 NABOO EGG 0 0 5862.89 229.03 -1949.44 0.00 0.83 0.00 -0.56 1 a Stonewall Labs watchman droid +3467 NABOO EGG 0 0 5025.60 294.08 -2045.55 0.00 -0.17 0.00 0.99 1 a Darkwalker triop +3468 NABOO EGG 0 0 4578.30 307.80 -1808.54 0.00 0.91 0.00 0.41 1 a rabid narglatch +3469 NABOO EGG 0 0 4448.05 219.24 -1896.18 0.00 1.00 0.00 0.06 1 a rabid narglatch matriarch +3470 NABOO EGG 0 0 4506.64 263.06 -1901.99 0.00 1.00 0.00 -0.07 1 a rabid narglatch matriarch +3471 NABOO EGG 0 0 5720.26 145.04 -1202.17 0.00 -0.59 0.00 0.81 1 a Mauler warblaster +3472 NABOO EGG 0 0 4474.08 257.77 -1935.46 0.00 0.88 0.00 -0.48 1 a rabid narglatch matriarch +3473 NABOO EGG 0 0 5296.42 301.49 -1301.44 0.00 -0.66 0.00 0.76 1 a Naboo pirate swashbuckler +3474 NABOO EGG 0 0 4550.47 303.15 -1779.18 0.00 0.21 0.00 0.98 1 a rabid narglatch +3475 NABOO EGG 0 0 5316.19 292.37 -1267.47 0.00 -0.66 0.00 0.75 1 a Naboo pirate swashbuckler +3476 NABOO EGG 0 0 5871.71 232.37 -1982.91 0.00 -0.45 0.00 0.89 1 a Stonewall Labs watchman droid +3477 NABOO EGG 0 0 4415.55 233.58 -1814.34 0.00 -0.12 0.00 0.99 1 a rabid narglatch matriarch +3478 NABOO EGG 0 0 5754.20 152.21 -1267.35 0.00 0.80 0.00 -0.59 1 a Mauler warblaster +3479 NABOO EGG 0 0 4329.18 294.10 -1237.67 0.00 -0.13 0.00 0.99 1 a starving flewt +3480 NABOO EGG 0 0 4448.17 264.08 -1801.11 0.00 0.58 0.00 0.81 1 a rabid narglatch matriarch +3481 NABOO EGG 0 0 5731.87 150.78 -1232.55 0.00 0.93 0.00 0.36 1 a Mauler battlesword +3482 NABOO EGG 0 0 5682.97 139.96 -1184.35 0.00 -0.36 0.00 0.93 1 a Mauler warblaster +3483 NABOO EGG 0 0 4367.26 290.84 -1246.62 0.00 -0.68 0.00 0.73 1 a starving flewt +3484 NABOO EGG 0 0 5752.45 152.19 -1201.22 0.00 -0.61 0.00 0.79 1 a Mauler battlesword +3485 NABOO EGG 0 0 5385.26 301.01 -1327.31 0.00 1.00 0.00 0.05 1 a Naboo pirate raider +3486 NABOO EGG 0 0 5071.32 323.76 -1977.33 0.00 -0.70 0.00 0.72 1 a Darkwalker technick +3487 NABOO EGG 0 0 4321.31 294.64 -1251.25 0.00 0.92 0.00 0.40 1 Kippy Martin +3488 NABOO EGG 0 0 4243.30 293.61 -1214.82 0.00 0.62 0.00 0.78 1 a starving flewt +3489 NABOO EGG 0 0 4419.18 227.41 -1850.11 0.00 0.01 0.00 1.00 1 a rabid narglatch +3490 NABOO EGG 0 0 5841.58 234.31 -1893.77 0.00 0.99 0.00 -0.11 1 a Stonewall Labs watchman droid +3491 NABOO EGG 0 0 5802.87 169.71 -1172.87 0.00 0.88 0.00 -0.47 1 a Mauler battlesword +3492 NABOO EGG 0 0 4540.13 93.41 -929.65 0.00 0.61 0.00 0.79 1 a Skaak Tipper bootjack +3535 NABOO EGG 0 0 4744.09 330.00 -1319.59 0.00 0.86 0.00 -0.52 1 Tanoa Vills +3536 NABOO EGG 0 0 4587.31 92.67 -940.25 0.00 0.96 0.00 0.29 1 a Skaak Tipper bootjack +3537 NABOO EGG 0 0 5267.19 299.93 -1306.98 0.00 -0.38 0.00 0.92 1 a Naboo pirate raider +3538 NABOO EGG 0 0 5321.32 306.84 -1310.72 0.00 -0.64 0.00 0.77 1 a Naboo pirate raider +3539 NABOO EGG 0 0 4365.37 283.74 -1212.73 0.00 0.96 0.00 -0.28 1 a starving flewt +3540 NABOO EGG 0 0 5007.06 300.90 -2046.20 0.00 -0.20 0.00 0.98 1 a Darkwalker triop +3541 NABOO EGG 0 0 5764.90 158.52 -1135.86 0.00 0.32 0.00 0.95 1 a Mauler warblaster +3542 NABOO EGG 0 0 4323.99 289.78 -1288.47 0.00 0.98 0.00 -0.19 1 a starving flewt +3543 NABOO EGG 0 0 4998.40 360.00 -1485.45 0.00 -0.33 0.00 0.94 1 Ruab +3544 NABOO EGG 0 0 5103.85 328.92 -2012.58 0.00 0.90 0.00 0.44 1 a Darkwalker technick +3545 NABOO EGG 0 0 4410.54 231.59 -1883.52 0.00 0.58 0.00 0.81 1 Grizzlefur (a rabid narglatch) +3546 NABOO EGG 0 0 4517.35 320.39 -1778.64 0.00 -0.36 0.00 0.93 1 a rabid narglatch +3589 NABOO EGG 0 0 5184.22 325.73 -2044.98 0.00 -0.55 0.00 0.83 1 a Darkwalker technick +3590 NABOO EGG 0 0 5715.08 151.40 -1137.22 0.00 0.43 0.00 0.90 1 a Mauler battlesword +3591 NABOO EGG 0 0 4992.45 360.00 -1503.54 0.00 0.89 0.00 -0.45 1 Walker Luskeske +3592 NABOO EGG 0 0 4291.81 283.33 -1216.50 0.00 0.90 0.00 0.44 1 a starving flewt +3593 NABOO EGG 0 0 4478.08 271.41 -1855.19 0.00 0.94 0.00 0.34 1 a rabid narglatch matriarch +3594 NABOO EGG 0 0 4694.54 330.53 -1395.64 0.00 0.08 0.00 1.00 1 Professor Zanier Hudmasse +3595 NABOO EGG 0 0 4325.62 295.19 -1261.68 0.00 0.97 0.00 0.26 1 a starving flewt +3596 NABOO EGG 0 0 4350.87 66.24 -729.42 0.00 1.00 0.00 0.08 1 a narglatch guardian +3597 NABOO EGG 0 0 4781.78 83.76 -836.53 0.00 0.93 0.00 0.38 1 a naboo shaupaut elder +3598 NABOO EGG 0 0 4785.42 87.30 -867.51 0.00 0.52 0.00 0.85 1 a naboo shaupaut elder +3599 NABOO EGG 0 0 4810.24 89.25 -852.85 0.00 0.97 0.00 0.25 1 a naboo shaupaut elder +3600 NABOO EGG 0 0 4382.40 77.97 -792.29 0.00 -0.46 0.00 0.89 1 a narglatch protector +3601 NABOO EGG 0 0 4381.81 68.71 -761.90 0.00 0.21 0.00 0.98 1 a narglatch protector +3602 NABOO EGG 0 0 4357.01 72.67 -776.10 0.00 -0.70 0.00 0.71 1 a narglatch protector +3603 NABOO EGG 0 0 5349.00 186.95 -1095.42 0.00 -0.63 0.00 0.78 1 a Mummer mercenary +3604 NABOO EGG 0 0 5307.67 186.08 -1120.71 0.00 -0.70 0.00 0.71 1 a Mummer mercenary +3605 NABOO EGG 0 0 5328.47 186.36 -1108.39 0.00 -0.59 0.00 0.81 1 a Mummer marauder +3606 NABOO EGG 0 0 5022.59 91.34 -930.80 0.00 1.00 0.00 -0.02 1 a Skaak Tipper thug +3607 NABOO EGG 0 0 5013.73 90.84 -945.49 0.00 0.51 0.00 0.86 1 a Skaak Tipper thug +3608 NABOO EGG 0 0 6123.80 168.19 82.69 0.00 0.91 0.00 -0.41 1 a Gungan outcast +3609 NABOO EGG 0 0 6117.55 165.38 61.27 0.00 -0.66 0.00 0.75 1 a Gungan outcast +3610 NABOO EGG 0 0 6102.34 159.66 77.38 0.00 0.98 0.00 0.19 1 a Gungan outcast +3611 NABOO EGG 0 0 6107.34 161.51 63.25 0.00 0.77 0.00 0.64 1 a Gungan outcast +3612 NABOO EGG 0 0 5869.73 38.48 3051.94 0.00 0.75 0.00 -0.67 1 a gungan reject +3613 NABOO EGG 0 0 5869.52 40.16 3060.67 0.00 0.73 0.00 -0.68 1 a gungan reject +3614 NABOO EGG 0 0 5868.06 39.26 3056.24 0.00 0.87 0.00 -0.50 1 a gungan reject +3615 NABOO EGG 0 0 5233.89 -195.53 6345.99 0.00 0.45 0.00 0.89 1 Soris +3616 NABOO EGG 0 0 4938.85 -192.00 6693.31 0.00 0.20 0.00 0.98 1 Special Agent Wilson Tchorshel +3617 NABOO EGG 0 0 5083.98 -192.00 6789.64 0.00 0.89 0.00 0.45 1 an Imperial operative +3618 NABOO EGG 0 0 5120.59 -192.00 6788.51 0.00 -0.60 0.00 0.80 1 Fenton +3619 NABOO EGG 0 0 5150.96 -192.00 6620.45 0.00 0.89 0.00 -0.45 1 Sgt. Eom Nia +3620 NABOO EGG 0 0 5167.58 -192.00 6674.86 0.00 0.87 0.00 0.49 1 Dakk +3621 NABOO EGG 0 0 5140.37 -192.00 6753.47 0.00 0.91 0.00 0.42 1 Lieutenant Maximilian Vox +3622 NABOO EGG 0 0 5148.57 -192.00 6623.48 0.00 0.97 0.00 -0.22 1 a CLL-8 binary load lifter +3623 NABOO EGG 0 0 5002.49 -189.71 6199.18 0.00 0.57 0.00 0.82 1 a nightspider fleshrender +3624 NABOO EGG 0 0 5026.83 -189.43 6201.94 0.00 0.82 0.00 0.57 1 a nightspider fleshrender +3625 NABOO EGG 0 0 5236.88 -195.53 6324.79 0.00 0.35 0.00 0.94 1 Borvo's soldier +3626 NABOO EGG 0 0 5219.85 -195.53 6369.54 0.00 -0.09 0.00 1.00 1 Borvo's soldier +3627 NABOO EGG 0 0 5217.73 -195.53 6347.91 0.00 -0.54 0.00 0.84 1 Borvo's thug +3628 NABOO EGG 0 0 5240.66 -195.53 6350.79 0.00 0.10 0.00 0.99 1 Borvo's thug +3629 NABOO EGG 0 0 5720.54 -192.90 6609.99 0.00 0.76 0.00 0.65 1 Borvo's soldier +3630 NABOO EGG 0 0 5725.66 -192.90 6599.77 0.00 -0.28 0.00 0.96 1 Borvo's thug +3631 NABOO EGG 0 0 4899.64 -203.34 6443.42 0.00 0.07 0.00 1.00 1 Lonnley Bolgar (a Beachcomber smuggler) +3632 NABOO EGG 0 0 5694.38 -209.57 6951.44 0.00 0.85 0.00 0.52 1 a Beachcomber scoundrel +3633 NABOO EGG 0 0 5432.84 -209.71 6959.86 0.00 0.46 0.00 0.89 1 a Beachcomber scoundrel +3634 NABOO EGG 0 0 5305.92 -205.85 6908.71 0.00 0.12 0.00 0.99 1 a Beachcomber smuggler +3635 NABOO EGG 0 0 5250.41 -204.92 6931.38 0.00 0.79 0.00 0.61 1 a Beachcomber smuggler +3636 NABOO EGG 0 0 5183.02 -209.50 6954.90 0.00 -0.55 0.00 0.83 1 a Beachcomber smuggler +3637 NABOO EGG 0 0 5088.04 -205.85 6923.04 0.00 0.37 0.00 0.93 1 a Beachcomber smuggler +3638 NABOO EGG 0 0 4903.74 -208.44 6577.55 0.00 -0.02 0.00 1.00 1 a Beachcomber smuggler +3639 NABOO EGG 0 0 4897.98 -206.05 6511.78 0.00 0.31 0.00 0.95 1 a Beachcomber smuggler +3640 NABOO EGG 0 0 4893.67 -204.65 6446.61 0.00 0.70 0.00 0.72 1 a Beachcomber smuggler +3641 NABOO EGG 0 0 4846.97 -206.28 6289.04 0.00 0.99 0.00 -0.16 1 a Beachcomber scoundrel +3642 NABOO EGG 0 0 4863.48 -207.30 6340.65 0.00 0.99 0.00 -0.13 1 a Beachcomber scoundrel +3643 NABOO EGG 0 0 4877.26 -207.61 6398.79 0.00 0.99 0.00 -0.12 1 a Beachcomber smuggler +3644 NABOO EGG 0 0 4896.60 -204.26 6433.90 0.00 0.98 0.00 -0.20 1 a Beachcomber smuggler +3645 NABOO EGG 0 0 4957.19 -193.11 6410.44 0.00 0.98 0.00 0.20 1 a nightspider bloodsipper +3646 NABOO EGG 0 0 5002.28 -190.51 6388.42 0.00 -0.39 0.00 0.92 1 a nightspider bloodsipper +3647 NABOO EGG 0 0 4974.17 -191.35 6369.33 0.00 -0.01 0.00 1.00 1 a nightspider bloodsipper +3648 NABOO EGG 0 0 4975.08 -190.87 6392.11 0.00 0.22 0.00 0.97 1 Noctur'lan (a nightspider) +3649 NABOO EGG 0 0 5503.89 -197.16 6487.35 0.00 0.22 0.00 0.98 1 a Skaak Tipper maniac +3650 NABOO EGG 0 0 5541.60 -196.15 6438.00 0.00 -0.07 0.00 1.00 1 a Skaak Tipper maniac +3651 NABOO EGG 0 0 5512.88 -195.72 6369.33 0.00 0.79 0.00 0.62 1 a Skaak Tipper crasher +3652 NABOO EGG 0 0 5470.87 -197.86 6430.94 0.00 -0.61 0.00 0.79 1 a Skaak Tipper maniac +3653 NABOO EGG 0 0 5497.19 -196.98 6419.98 0.00 0.16 0.00 0.99 1 a Skaak Tipper crasher +3654 NABOO EGG 0 0 5487.09 -197.11 6397.47 0.00 0.98 0.00 0.17 1 a Skaak Tipper maniac +3655 NABOO EGG 0 0 5583.66 -206.28 6904.44 0.00 0.79 0.00 -0.61 1 a Skaak Tipper maniac +3656 NABOO EGG 0 0 5605.77 -207.21 6923.85 0.00 0.95 0.00 0.32 1 a Skaak Tipper maniac +3657 NABOO EGG 0 0 5582.08 -209.52 6946.89 0.00 0.68 0.00 0.74 1 a Skaak Tipper maniac +3658 NABOO EGG 0 0 5533.36 -208.66 6935.14 0.00 -0.19 0.00 0.98 1 a Skaak Tipper maniac +3659 NABOO EGG 0 0 5540.60 -207.17 6916.90 0.00 0.86 0.00 -0.52 1 a Skaak Tipper maniac +3668 NABOO EGG 0 0 5196.75 -192.00 6713.07 0.00 0.98 0.00 0.19 1 Colonel Panaka +3689 NABOO EGG 0 0 6334.94 4.54 -6975.58 0.00 -0.51 0.00 0.86 1 a Mummer scout +3690 NABOO EGG 0 0 6342.83 3.24 -6988.51 0.00 1.00 0.00 -0.09 1 a Mummer scout +3691 NABOO EGG 0 0 6353.98 4.08 -6985.55 0.00 0.24 0.00 0.97 1 a Mummer guard +3692 NABOO EGG 0 0 6354.29 4.08 -6979.64 0.00 0.96 0.00 -0.28 1 a Mummer guard +3693 NABOO EGG 0 0 6902.63 447.27 90.07 0.00 1.00 0.00 0.08 1 General Jacen Nire +3694 NABOO EGG 0 0 6895.70 440.43 77.96 0.00 1.00 0.00 -0.06 1 a Rebel trooper +3695 NABOO EGG 0 0 6916.23 443.42 80.18 0.00 0.95 0.00 0.32 1 a Rebel trooper +3696 NABOO EGG 0 0 6917.07 452.61 104.86 0.00 -0.37 0.00 0.93 1 a Rebel trooper +3697 NABOO EGG 0 0 6902.10 447.99 97.39 0.00 -0.47 0.00 0.88 1 a Rebel trooper +3698 NABOO EGG 0 0 6784.68 -202.58 7131.05 0.00 0.54 0.00 0.84 1 a Skaak Tipper crasher +3699 NABOO EGG 0 0 6787.21 -204.83 7186.64 0.00 0.82 0.00 0.58 1 a Skaak Tipper maniac +3700 NABOO EGG 0 0 6655.18 -207.01 7235.31 0.00 0.50 0.00 0.86 1 a Skaak Tipper maniac +3701 NABOO EGG 0 0 6606.12 -203.30 7190.28 0.00 -0.43 0.00 0.90 1 a Skaak Tipper crasher +3702 NABOO EGG 0 0 6641.09 -207.04 7135.32 0.00 -0.60 0.00 0.80 1 a Skaak Tipper maniac +3703 NABOO EGG 0 0 6706.03 -208.27 7134.30 0.00 0.85 0.00 -0.53 1 a Skaak Tipper maniac +3704 NABOO EGG 0 0 6714.99 -207.45 7237.23 0.00 0.76 0.00 0.65 1 a Skaak Tipper maniac +3705 NABOO EGG 0 0 6742.05 -207.64 7159.26 0.00 0.92 0.00 0.39 1 a Skaak Tipper maniac +3706 NABOO EGG 0 0 6702.37 -209.00 7190.05 0.00 0.97 0.00 -0.22 1 a Skaak Tipper crasher +3707 NABOO EGG 0 0 6689.18 -209.00 7178.74 0.00 0.92 0.00 0.39 1 a Skaak Tipper crasher +3708 NABOO EGG 0 0 6688.45 -209.00 7209.69 0.00 -0.11 0.00 0.99 1 a Skaak Tipper crasher +3709 NABOO EGG 0 0 6698.98 -209.00 7174.20 0.00 -0.13 0.00 0.99 1 a Skaak Tipper crasher +3924 RORI EGG 0 0 -6954.16 227.48 -3136.51 0.00 0.90 0.00 0.43 1 a Rorgunagan Guard +3925 RORI EGG 0 0 -6949.71 221.63 -3124.33 0.00 0.40 0.00 0.92 1 a Rorgunagan Guard +3926 RORI EGG 0 0 -6965.06 219.93 -3120.58 0.00 -0.53 0.00 0.85 1 a Rorgunagan Guard +3927 RORI EGG 0 0 -6962.79 216.00 -3144.61 0.00 1.00 0.00 -0.01 1 a Rorgunagan Guard +3928 RORI EGG 0 0 -6983.69 180.00 -3127.11 0.00 -0.58 0.00 0.82 1 a Rorgunagan Guard +3929 RORI EGG 0 0 -6981.66 180.26 -3152.22 0.00 0.87 0.00 -0.49 1 a Rorgunagan Guard +3930 RORI EGG 0 0 -6951.45 181.26 -3164.11 0.00 0.79 0.00 0.62 1 a Rorgunagan Guard +3931 RORI EGG 0 0 -6905.99 189.92 -3143.53 0.00 0.14 0.00 0.99 1 a Rorgunagan Guard +3932 RORI EGG 0 0 -6939.81 206.35 -3116.09 0.00 -0.03 0.00 1.00 1 a Rorgunagan Guard +3933 RORI EGG 0 0 -6949.42 197.63 -3097.18 0.00 -0.21 0.00 0.98 1 a Rorgunagan Guard +3934 RORI EGG 0 0 -6946.50 199.72 -3109.41 0.00 -0.07 0.00 1.00 1 a Rorgungan Lieutenant +3935 RORI EGG 0 0 -6957.66 224.41 -3119.93 0.00 0.13 0.00 0.99 1 a Rorgungan Lieutenant +3936 RORI EGG 0 0 -6945.82 225.01 -3141.89 0.00 0.91 0.00 0.41 1 a Rorgungan Lieutenant +3937 RORI EGG 0 0 -6960.48 231.76 -3133.66 0.00 1.00 0.00 -0.02 1 a Rorgungan Lieutenant +3938 RORI EGG 0 0 -6925.08 181.43 -3156.69 0.00 0.95 0.00 0.31 1 a Rorgungan Lieutenant +3939 RORI EGG 0 0 -6972.22 180.85 -3162.33 0.00 0.79 0.00 -0.62 1 a Rorgungan Lieutenant +3940 RORI EGG 0 0 -6971.89 180.00 -3101.57 0.00 0.42 0.00 0.91 1 a Rorgungan Lieutenant +3941 RORI EGG 0 0 -6959.56 231.89 -3128.53 0.00 0.00 0.00 1.00 1 Captain Pir'pwn +3956 RORI EGG 0 0 -4616.50 180.46 -7554.64 0.00 0.92 0.00 0.38 1 a Garyn Raider shiv.a Garyn Raider shooter +3957 RORI EGG 0 0 -4651.67 180.81 -7533.80 0.00 0.94 0.00 -0.33 1 a Garyn Raider shiv.a Garyn Raider shooter +3958 RORI EGG 0 0 -4648.48 180.57 -7536.98 0.00 1.00 0.00 0.00 1 a Garyn Raider shiv.a Garyn Raider shooter +3959 RORI EGG 0 0 -4632.70 182.33 -7495.49 0.00 0.45 0.00 0.89 1 a Garyn Raider shiv.a Garyn Raider shooter +3960 RORI EGG 0 0 -5577.00 75.50 -5787.00 0.00 0.08 0.00 1.00 1 Carlton +3961 RORI EGG 0 0 -5601.61 75.64 -5773.12 0.00 0.67 0.00 0.74 1 a thief +3962 RORI EGG 0 0 -5576.28 75.62 -5755.60 0.00 1.00 0.00 -0.05 1 a thief +3963 RORI EGG 0 0 -5590.61 75.64 -5809.16 0.00 0.26 0.00 0.97 1 a thief +3964 RORI EGG 0 0 -4968.00 79.99 -2399.00 0.00 0.93 0.00 -0.36 1 a courier +3965 RORI EGG 0 0 -5686.52 77.00 -2144.22 0.00 1.00 0.00 -0.06 1 a Cobral brute.a Cobral killer +3966 RORI EGG 0 0 -5697.50 75.90 -2115.82 0.00 0.86 0.00 0.52 1 a Cobral brute.a Cobral killer +3967 RORI EGG 0 0 -5130.31 80.00 -2270.00 0.00 0.96 0.00 0.27 1 Seldair Keeloo +3978 RORI EGG 0 0 -5686.63 75.70 -2126.22 0.00 1.00 0.00 -0.02 1 a Cobral brute.a Cobral killer +3979 RORI EGG 0 0 -5154.00 80.00 -2268.00 0.00 0.73 0.00 -0.68 1 Ria +3980 RORI EGG 0 0 -5126.32 80.00 -2249.32 0.00 0.02 0.00 1.00 1 Horace Korr (a retired Corellia Times reporter) +3981 RORI EGG 0 0 -5219.56 80.00 -2313.55 0.00 1.00 0.00 0.04 1 Wernell Covington +3982 RORI EGG 0 0 -5725.69 77.01 -2108.55 0.00 0.75 0.00 0.67 1 a Cobral brute.a Cobral killer +3983 RORI EGG 0 0 -5165.15 80.00 -2534.27 0.01 -0.65 0.00 0.76 1 Meatlump Donk (Outpost Guard) +3984 RORI EGG 0 0 -5163.32 79.28 -2562.23 0.00 0.55 0.01 0.84 1 Meatlump Dunder (Outpost Guard) +3985 RORI EGG 0 0 -5143.84 79.97 -2541.67 0.00 -0.22 0.01 0.97 1 Meatlump Donk (Outpost Guard) +3986 RORI EGG 0 0 -4831.35 79.99 -2304.40 0.00 0.82 0.00 -0.57 1 a thief +3987 RORI EGG 0 0 -4818.97 77.76 -2241.92 0.00 0.99 0.00 -0.15 1 a thief +3988 RORI EGG 0 0 -5120.20 80.00 -2514.52 0.00 -0.07 0.00 1.00 1 Lieutenant Orden Tarc +4004 RORI EGG 0 0 -4812.00 76.21 -2270.00 0.00 0.85 0.00 -0.52 1 Alwynn +4005 RORI EGG 0 0 -4846.70 81.31 -2561.48 0.00 -0.40 0.00 0.92 1 Ponda Baba +4006 RORI EGG 0 0 -4784.06 77.04 -2257.27 0.00 0.84 0.00 -0.54 1 a thief +4028 RORI EGG 0 0 -5299.00 80.07 -2098.49 0.00 0.99 0.00 -0.11 1 Major Geg Winthazen +4029 RORI EGG 0 0 -5698.44 76.76 -2158.49 0.00 -0.44 0.00 0.90 1 a Cobral brute.a Cobral killer +4042 RORI EGG 0 0 -5447.74 76.13 -1785.25 0.00 -0.22 0.00 0.98 1 a Gundark flunky.a Gundark hoodlum.a Gundark overseer +4043 RORI EGG 0 0 -5433.13 76.62 -1786.47 0.00 0.72 0.00 -0.69 1 a Gundark flunky.a Gundark hoodlum.a Gundark overseer +4044 RORI EGG 0 0 -5426.48 77.22 -1765.38 0.00 0.92 0.00 -0.39 1 a Gundark flunky.a Gundark hoodlum.a Gundark overseer +4045 RORI EGG 0 0 -5429.00 77.55 -1760.63 0.00 0.96 0.00 -0.28 1 a Gundark flunky.a Gundark hoodlum.a Gundark overseer +4046 RORI EGG 0 0 -5441.44 76.35 -1745.42 0.00 0.98 0.00 -0.18 1 a Gundark flunky.a Gundark hoodlum.a Gundark overseer +4047 RORI EGG 0 0 -5445.43 75.82 -1741.72 0.00 1.00 0.00 -0.05 1 a Gundark flunky.a Gundark hoodlum.a Gundark overseer +4048 RORI EGG 0 0 -5469.33 77.53 -1753.27 0.00 0.92 0.00 0.39 1 a Gundark flunky.a Gundark hoodlum.a Gundark overseer +4049 RORI EGG 0 0 -5470.50 77.46 -1758.15 0.00 0.83 0.00 0.56 1 a Gundark flunky.a Gundark hoodlum.a Gundark overseer +4050 RORI EGG 0 0 -5197.00 77.02 5067.00 0.00 0.76 0.00 -0.65 1 Ike +4051 RORI EGG 0 0 -5217.08 75.80 5102.35 0.00 0.99 0.00 0.13 1 a thief +4052 RORI EGG 0 0 -5186.05 77.33 5038.37 0.00 1.00 0.00 0.07 1 a thief +4053 RORI EGG 0 0 -5182.99 77.66 5091.85 0.00 1.00 0.00 -0.06 1 a thief +4091 RORI EGG 0 0 -182.34 78.06 1902.44 0.00 0.37 0.00 0.93 1 Vladlun's henchman +4092 RORI EGG 0 0 -180.32 78.01 1928.56 0.00 0.77 0.00 0.64 1 Vladlun's henchman +4093 RORI EGG 0 0 -161.25 76.92 1946.05 0.00 0.98 0.00 0.19 1 Vladlun's henchman +4094 RORI EGG 0 0 -142.42 76.34 1928.19 0.00 -0.63 0.00 0.78 1 Vladlun's henchman +4095 RORI EGG 0 0 -114.53 78.19 1870.51 0.00 0.54 0.00 0.84 1 Vladlun's henchman +4096 RORI EGG 0 0 -158.71 77.65 1876.40 0.00 0.40 0.00 0.92 1 Vladlun's henchman +4097 RORI EGG 0 0 -122.65 78.23 1899.42 0.00 -0.05 0.00 1.00 1 Vladlun's henchman +4098 RORI EGG 0 0 -1110.00 75.88 4418.00 0.00 -0.06 0.00 1.00 1 Jeanna +4099 RORI EGG 0 0 -1081.69 78.02 4396.16 0.00 -0.37 0.00 0.93 1 a thief +4100 RORI EGG 0 0 -1112.10 77.34 4453.12 0.00 0.99 0.00 -0.11 1 a thief +4101 RORI EGG 0 0 -1136.98 79.31 4412.58 0.00 0.64 0.00 0.77 1 a thief +4102 RORI EGG 0 0 773.57 81.93 -2084.98 0.00 0.99 0.00 -0.11 1 Tombl Blaus +4103 RORI EGG 0 0 300.56 81.48 -982.39 0.00 0.01 0.00 1.00 1 Antaria Wellos (a melodramatic Jedi) +4127 RORI EGG 0 0 200.59 90.00 -994.50 0.00 0.99 0.00 0.14 1 a CLL-8 binary load lifter +4128 RORI EGG 0 0 210.07 90.00 -964.94 0.00 0.96 0.00 0.29 1 a Jurgen's bandit +4129 RORI EGG 0 0 218.68 90.00 -965.65 0.00 0.63 0.00 0.77 1 a Jurgen's bandit +4130 RORI EGG 0 0 221.17 90.00 -981.26 0.00 0.71 0.00 0.70 1 a Jurgen's bandit +4131 RORI EGG 0 0 218.89 90.00 -1000.06 0.00 0.93 0.00 0.37 1 a Jurgen's bandit +4132 RORI EGG 0 0 172.77 90.00 -1016.48 0.00 1.00 0.00 0.09 1 a Jurgen's bandit +4133 RORI EGG 0 0 180.86 90.10 -1010.60 0.00 0.97 0.00 0.25 1 a Jurgen's bandit +4134 RORI EGG 0 0 164.82 108.00 -978.54 0.00 -0.57 0.00 0.82 1 a Jurgen's bandit +4135 RORI EGG 0 0 171.13 108.00 -970.04 0.00 -0.38 0.00 0.93 1 a Jurgen's bandit +4136 RORI EGG 0 0 3664.73 96.00 -6427.16 0.00 0.85 0.00 -0.52 1 Staff Sergeant Levardio +4137 RORI EGG 0 0 2879.00 106.95 -1277.00 0.00 -0.17 0.00 0.99 1 Zola +4138 RORI EGG 0 0 2892.49 106.90 -1240.86 0.00 0.98 0.00 -0.21 1 a thief +4139 RORI EGG 0 0 2922.85 107.84 -1266.49 0.00 0.76 0.00 -0.65 1 a thief +4140 RORI EGG 0 0 2883.97 106.87 -1305.73 0.00 -0.05 0.00 1.00 1 a thief +4141 RORI EGG 0 0 5916.43 80.82 5551.91 0.00 0.00 0.00 1.00 1 an Imperial recruiter +4142 RORI EGG 0 0 4827.97 80.00 5843.40 0.00 0.67 0.00 0.74 1 a Rebel recruiter +4143 RORI EGG 0 0 5398.00 82.00 6124.00 0.00 1.00 0.00 -0.02 1 Emory +4144 RORI EGG 0 0 5427.49 80.00 6125.39 0.00 -0.70 0.00 0.72 1 a thief +4145 RORI EGG 0 0 5409.66 80.00 6097.57 0.00 -0.33 0.00 0.94 1 a thief +4146 RORI EGG 0 0 5368.53 80.89 6140.09 0.00 0.85 0.00 0.52 1 a thief +4147 RORI EGG 0 0 5241.64 80.00 6149.71 0.00 0.69 0.00 0.72 1 Junk Dealer +4148 RORI EGG 0 0 5310.77 80.00 6206.38 0.00 0.93 0.00 -0.36 1 restuss_marles_jacobe +4149 RORI EGG 0 0 7020.89 90.53 -5278.65 0.00 0.84 0.00 -0.54 1 a Rorgungan scout +4161 RORI EGG 0 0 7068.28 83.16 -5266.90 0.00 0.73 0.00 -0.69 1 a Rorgunagan Guard +4162 RORI EGG 0 0 7031.27 80.30 -5316.32 0.00 0.97 0.00 -0.23 1 a Rorgungan scout +4163 RORI EGG 0 0 7056.51 96.55 -5277.03 0.00 -0.64 0.00 0.77 1 Captain Meh'ur +4164 RORI EGG 0 0 7046.37 79.60 -5257.21 0.00 1.00 0.00 -0.06 1 a Rorgungan scout +4165 RORI EGG 0 0 7055.09 90.95 -5275.98 0.00 -0.09 0.00 1.00 1 a Rorgunagan Guard +4197 RORI EGG 0 0 7271.66 82.39 105.93 0.00 0.93 0.00 0.37 1 a Rebel commando +4198 RORI EGG 0 0 7267.82 79.80 119.61 0.00 -0.12 0.00 0.99 1 a Rebel commando +4199 RORI EGG 0 0 7281.25 80.49 117.48 0.00 -0.05 0.00 1.00 1 a Rebel commando +4200 RORI EGG 0 0 7293.48 79.42 112.61 0.00 0.87 0.00 -0.49 1 a Rebel commando +4201 RORI EGG 0 0 7287.85 78.55 100.54 0.00 -0.44 0.00 0.90 1 a Rebel commando +4202 RORI EGG 0 0 7280.49 78.22 88.56 0.00 -0.18 0.00 0.98 1 a Rebel commando +4203 RORI EGG 0 0 7265.72 83.69 93.02 0.00 0.44 0.00 0.90 1 a Rebel commando +4207 RORI EGG 0 0 -2643.00 81.00 -3208.00 0.00 0.00 0.00 0.00 1 Garyn's prowler +4208 RORI EGG 0 0 -2643.00 81.00 -3208.00 0.00 0.00 0.00 0.00 1 Garyn's thief +4209 RORI EGG 0 0 5586.00 74.00 2435.00 0.00 0.00 0.00 0.00 1 Garyn's raider +4210 RORI EGG 0 0 -5.00 77.00 1992.00 0.00 0.00 0.00 0.00 1 a Rebel trooper +4211 TALUS EGG 0 0 -6681.98 680.50 7267.21 0.00 0.77 0.00 -0.64 1 a Jedi Padawan +4212 TALUS EGG 0 0 -5808.94 5.12 -6401.20 0.00 -0.64 0.00 0.77 1 a Jedi Padawan +4213 TALUS EGG 0 0 -4628.86 18.00 -3254.16 0.00 0.18 0.00 0.98 1 N.S.H. enforcer +4214 TALUS EGG 0 0 -4668.37 32.61 -3271.23 0.00 0.49 0.00 0.87 1 N.S.H. enforcer +4215 TALUS EGG 0 0 -4644.09 18.00 -3220.40 0.00 0.92 0.00 0.40 1 N.S.H. enforcer +4216 TALUS EGG 0 0 -4608.93 25.30 -3250.03 0.00 -0.23 0.00 0.97 1 Imperial Captain +4217 TALUS EGG 0 0 -4602.14 18.80 -3253.63 0.00 0.90 0.00 0.44 1 Imperial Stormtrooper Escort +4218 TALUS EGG 0 0 -4609.46 25.30 -3247.64 0.00 0.98 0.00 0.18 1 N.S.H. officer +4219 TALUS EGG 0 0 -4611.48 25.30 -3243.66 0.00 0.92 0.00 0.39 1 Imperial Stormtrooper Escort +4220 TALUS EGG 0 0 -4605.69 25.30 -3254.69 0.00 -0.40 0.00 0.91 1 Imperial Stormtrooper Escort +4221 TALUS EGG 0 0 -4582.96 19.03 -3226.85 0.00 -0.69 0.00 0.72 1 N.S.H. enforcer +4222 TALUS EGG 0 0 -4604.55 25.30 -3253.26 0.00 -0.40 0.00 0.92 1 Imperial Stormtrooper Escort +4223 TALUS EGG 0 0 -4608.20 25.30 -3239.57 0.00 0.95 0.00 -0.30 1 Imperial Stormtrooper Escort +4224 TALUS EGG 0 0 -4599.35 25.30 -3246.77 0.00 -0.41 0.00 0.91 1 Imperial Stormtrooper Escort +4225 TALUS EGG 0 0 -4612.62 21.60 -3196.00 0.00 0.83 0.00 -0.56 1 N.S.H. enforcer +4226 TALUS EGG 0 0 -4614.18 25.30 -3248.15 0.00 0.67 0.00 0.75 1 Imperial Stormtrooper Escort +4227 TALUS EGG 0 0 -4626.70 18.00 -3206.48 0.00 1.00 0.00 -0.08 1 N.S.H. enforcer +4228 TALUS EGG 0 0 -4614.57 23.27 -3278.83 0.00 0.07 0.00 1.00 1 N.S.H. enforcer +4229 TALUS EGG 0 0 -4599.81 18.37 -3249.74 0.00 0.91 0.00 0.41 1 Imperial Stormtrooper Escort +4230 TALUS EGG 0 0 -4616.31 18.00 -3241.19 0.00 -0.45 0.00 0.89 1 N.S.H. enforcer +4280 TALUS EGG 0 0 -4603.98 18.00 -3225.93 0.00 0.84 0.00 -0.54 1 N.S.H. enforcer +4282 TALUS EGG 0 0 -3480.04 21.99 -3246.98 0.00 -0.43 0.00 0.90 1 a Rebel trooper +4283 TALUS EGG 0 0 -3475.76 22.00 -3242.65 0.00 -0.41 0.00 0.91 1 a Rebel trooper +4297 TALUS EGG 0 0 -2489.38 45.01 3725.55 0.00 0.91 0.00 -0.41 1 a Stormtrooper +4312 TALUS EGG 0 0 -2444.67 45.01 3657.18 0.00 0.95 0.00 0.31 1 a Stormtrooper +4313 TALUS EGG 0 0 -2401.85 38.00 3751.54 0.00 0.89 0.00 -0.45 1 a Stormtrooper +4314 TALUS EGG 0 0 -2171.04 20.00 2314.00 0.00 0.89 0.00 -0.45 1 Officer Edgar +4315 TALUS EGG 0 0 -2473.41 38.00 3754.52 0.00 0.49 0.00 0.87 1 a Stormtrooper +4316 TALUS EGG 0 0 -2472.20 38.00 3693.03 0.00 0.92 0.00 -0.40 1 a Stormtrooper +4317 TALUS EGG 0 0 -2431.74 38.00 3769.00 0.00 -0.26 0.00 0.97 1 a Stormtrooper +4318 TALUS EGG 0 0 -2452.56 45.01 3659.41 0.00 0.89 0.00 -0.46 1 a Stormtrooper +4319 TALUS EGG 0 0 -2403.30 38.00 3695.10 0.00 0.56 0.00 0.83 1 a Stormtrooper +4320 TALUS EGG 0 0 -2382.27 38.00 3715.18 0.00 0.71 0.00 -0.70 1 a Stormtrooper +4321 TALUS EGG 0 0 -2462.19 38.00 3784.61 0.00 0.96 0.00 0.27 1 a Stormtrooper +4326 TALUS EGG 0 0 -2486.67 45.01 3733.68 0.00 -0.37 0.00 0.93 1 a Stormtrooper +4327 TALUS EGG 0 0 -2123.43 20.00 2364.45 0.00 -0.37 0.00 0.93 1 Simon +4328 TALUS EGG 0 0 -2419.27 38.00 3648.40 0.00 1.00 0.00 0.06 1 a Stormtrooper +4329 TALUS EGG 0 0 -2313.02 19.06 2236.53 0.00 0.56 0.00 0.83 1 a Rebel trooper +4330 TALUS EGG 0 0 -2305.14 17.76 2211.51 0.00 0.37 0.00 0.93 1 a Rebel trooper +4331 TALUS EGG 0 0 -2291.18 18.21 2197.54 0.00 0.32 0.00 0.95 1 a Rebel trooper +4332 TALUS EGG 0 0 -2302.61 11.45 2181.77 0.00 0.13 0.00 0.99 1 a Rebel trooper +4333 TALUS EGG 0 0 -2319.25 10.46 2197.13 0.00 0.39 0.00 0.92 1 a Rebel trooper +4334 TALUS EGG 0 0 -2327.92 13.09 2220.29 0.00 0.52 0.00 0.85 1 a Rebel trooper +4335 TALUS EGG 0 0 -2334.49 14.32 2239.20 0.00 0.68 0.00 0.73 1 a Rebel trooper +4336 TALUS EGG 0 0 -2351.08 6.22 2223.41 0.00 0.60 0.00 0.80 1 a Rebel trooper +4337 TALUS EGG 0 0 -2346.86 1.95 2190.41 0.00 0.34 0.00 0.94 1 a Rebel trooper +4338 TALUS EGG 0 0 -2324.59 1.68 2171.24 0.00 0.28 0.00 0.96 1 a Rebel trooper +4339 TALUS EGG 0 0 -2333.47 6.63 2200.62 0.00 0.41 0.00 0.91 1 Commando Horchoba Tuain +4340 TALUS EGG 0 0 -2231.94 20.00 2221.08 0.00 0.30 0.00 0.95 1 Staff Sergeant Rothax +4341 TALUS EGG 0 0 -3165.21 689.69 6827.62 0.00 1.00 0.00 -0.01 1 a Jedi Padawan +4401 TALUS EGG 0 0 -456.15 31.00 4455.92 0.00 0.96 0.00 -0.28 1 a dead researcher +4412 TALUS EGG 0 0 -1835.14 34.00 6625.32 0.00 1.00 0.00 -0.03 1 Magnus Grenz (a cultist coadjutor) +4417 TALUS EGG 0 0 431.00 6.00 -3014.00 0.00 0.11 0.00 0.99 1 Dak Ralter +4423 TALUS EGG 0 0 433.15 6.00 -3040.97 0.00 0.99 0.00 0.10 1 Erisi Plmary +4424 TALUS EGG 0 0 7.39 42.83 -3543.46 0.00 -0.54 0.00 0.84 1 Jana T'bayr +4425 TALUS EGG 0 0 649.03 6.00 -3190.21 0.00 0.82 0.00 -0.57 1 Dathnaeya Loessin +4426 TALUS EGG 0 0 1278.80 34.43 -3117.37 0.00 0.99 -0.01 0.16 1 A.C.L.O. soldier +4427 TALUS EGG 0 0 1266.80 42.02 -3164.59 -0.01 -0.09 0.00 1.00 1 A.C.L.O. personnel +4428 TALUS EGG 0 0 1283.94 35.76 -3075.79 -0.01 -0.05 0.00 1.00 1 Rebel Investigator +4429 TALUS EGG 0 0 1291.64 34.42 -3189.81 -0.01 -0.12 0.00 0.99 1 A.C.L.O. technician +4430 TALUS EGG 0 0 1286.51 35.76 -3068.41 0.01 0.75 -0.01 -0.66 1 A.C.L.O. officer +4431 TALUS EGG 0 0 1294.13 35.82 -3123.84 0.00 0.86 -0.01 -0.51 1 A.C.L.O. personnel +4432 TALUS EGG 0 0 1291.14 42.11 -3187.46 -0.01 0.56 0.00 0.83 1 A.C.L.O. personnel +4433 TALUS EGG 0 0 1260.91 42.00 -3139.28 -0.01 -0.68 0.01 0.74 1 A.C.L.O. slicer +4434 TALUS EGG 0 0 1290.97 34.43 -3187.89 0.00 1.00 -0.01 0.09 1 N.S.H. technician +4435 TALUS EGG 0 0 1295.60 35.87 -3065.90 0.00 0.95 0.00 -0.32 1 Rebel Investigator +4436 TALUS EGG 0 0 1278.85 35.76 -3063.39 -0.01 0.63 -0.01 0.78 1 Rebel Investigator +4437 TALUS EGG 0 0 731.00 6.00 -3081.00 0.00 0.67 0.00 0.74 1 Shane +4492 TALUS EGG 0 0 1251.94 32.64 -3140.38 -0.01 0.63 -0.01 0.78 1 A.C.L.O. personnel +4493 TALUS EGG 0 0 1255.30 34.48 -3077.15 -0.01 0.45 0.00 0.89 1 Rebel Investigator +4497 TALUS EGG 0 0 3973.00 2.02 5083.31 0.00 0.63 0.01 0.78 1 Meatlump Dunder (Outpost Guard) +4498 TALUS EGG 0 0 3960.22 6.08 5061.24 -0.01 0.99 0.00 -0.15 1 Meatlump Donk (Outpost Guard) +4499 TALUS EGG 0 0 3954.97 16.18 5085.72 0.01 -0.63 0.00 0.78 1 Meatlump Dunder (Outpost Guard) +4500 TALUS EGG 0 0 2974.70 181.53 6377.33 0.00 0.82 0.00 0.57 1 a Meatlump moop +4501 TALUS EGG 0 0 2982.81 181.48 6379.87 0.00 0.99 0.00 0.17 1 a Meatlump moop +4502 TALUS EGG 0 0 2995.77 181.37 6388.63 0.00 0.89 0.00 0.45 1 a Meatlump moop +4503 TALUS EGG 0 0 3012.94 179.38 6373.12 0.00 0.98 0.00 0.21 1 a Meatlump moop +4504 TALUS EGG 0 0 3013.11 181.89 6393.05 0.00 0.64 0.00 0.77 1 a Meatlump moop +4505 TALUS EGG 0 0 3000.59 176.18 6358.40 0.00 0.95 0.00 0.32 1 a Meatlump moop +4506 TALUS EGG 0 0 2980.02 176.24 6341.58 0.00 0.96 0.00 0.28 1 a Meatlump moop +4507 TALUS EGG 0 0 2961.72 180.52 6336.18 0.00 0.99 0.00 0.11 1 a Meatlump moop +4508 TALUS EGG 0 0 2949.41 182.01 6336.22 0.00 0.96 0.00 0.28 1 a Meatlump moop +4509 TALUS EGG 0 0 2957.09 182.53 6362.00 0.00 0.78 0.00 0.62 1 a Meatlump moop +4510 TALUS EGG 0 0 2948.80 196.53 6380.19 0.00 0.84 0.00 0.55 1 a Meatlump moop +4511 TALUS EGG 0 0 2959.65 196.65 6393.18 0.00 0.94 0.00 0.33 1 a Meatlump moop +4512 TALUS EGG 0 0 2937.80 212.14 6395.89 0.00 0.95 0.00 0.31 1 a Meatlump moop +4513 TALUS EGG 0 0 2954.08 212.18 6410.56 0.00 0.94 0.00 0.33 1 a Meatlump moop +4514 TALUS EGG 0 0 2979.36 197.40 6406.30 0.00 0.93 0.00 0.37 1 a Meatlump moop +4515 TALUS EGG 0 0 3000.79 196.73 6410.56 0.00 0.94 0.00 0.35 1 a Meatlump moop +4516 TALUS EGG 0 0 4796.70 637.39 -6236.78 0.00 0.48 0.00 0.88 1 a Lost Aqualish Marshall +4517 TALUS EGG 0 0 4795.90 636.46 -6245.48 0.00 0.88 0.00 -0.48 1 a Lost Aqualish Marshall +4518 TALUS EGG 0 0 4783.89 637.18 -6245.68 0.00 0.92 0.00 -0.39 1 a Lost Aqualish Marshall +4519 TALUS EGG 0 0 4788.19 636.80 -6234.30 0.00 0.92 0.00 -0.39 1 a Lost Aqualish Marshall +4520 TALUS EGG 0 0 4791.47 637.94 -6240.60 0.00 0.87 0.00 -0.49 1 a Lost Aqualish warchief +4521 TALUS EGG 0 0 5587.84 103.44 -4127.98 0.00 0.78 0.00 0.63 1 a pirate +4522 TALUS EGG 0 0 5658.87 109.37 -4140.96 0.00 -0.59 0.00 0.80 1 a pirate +4523 TALUS EGG 0 0 5621.90 105.40 -4161.84 0.00 0.00 0.00 1.00 1 a pirate +4524 TALUS EGG 0 0 5618.00 105.84 -4131.00 0.00 -0.34 0.00 0.94 1 Seth +4525 TALUS EGG 0 0 4570.00 2.00 5455.00 0.00 0.76 0.00 -0.65 1 a Selonian advocate +4526 TALUS EGG 0 0 4272.18 0.64 5265.90 0.00 -0.37 0.00 0.93 1 a Stormtrooper +4527 TALUS EGG 0 0 4304.71 49.44 4751.07 0.00 0.99 0.00 -0.15 1 an EG-6 power droid +4528 TALUS EGG 0 0 4260.41 49.44 4720.64 0.00 0.85 0.00 -0.53 1 a Selonian +4529 TALUS EGG 0 0 4333.15 49.44 4751.82 0.00 -0.10 0.00 1.00 1 a Talusian smuggler guard +4530 TALUS EGG 0 0 4310.33 49.44 4769.79 0.00 0.99 0.00 0.17 1 a Selonian +4531 TALUS EGG 0 0 4287.27 63.55 4864.08 0.00 0.16 0.00 0.99 1 a Talusian smuggler guard +4532 TALUS EGG 0 0 4257.02 49.44 4760.63 0.00 0.99 0.00 -0.15 1 a Selonian +4577 TALUS EGG 0 0 4700.62 27.71 5430.53 0.00 -0.59 0.00 0.81 1 a Rebel sentry +4578 TALUS EGG 0 0 4215.60 66.79 4743.87 0.00 0.72 0.00 0.69 1 a Talusian smuggler elite guard +4579 TALUS EGG 0 0 4737.33 21.43 5564.88 0.00 0.96 0.00 -0.27 1 a Rebel sentry +4580 TALUS EGG 0 0 4657.43 18.55 5512.92 0.00 0.06 0.00 1.00 1 a Rebel sentry +4581 TALUS EGG 0 0 4287.09 49.44 4725.35 0.00 0.01 0.00 1.00 1 a Selonian +4582 TALUS EGG 0 0 4317.45 49.44 4707.03 0.00 0.51 0.00 0.86 1 a Selonian +4583 TALUS EGG 0 0 4264.41 49.44 4771.31 0.00 0.73 0.00 -0.68 1 a Selonian +4584 TALUS EGG 0 0 4284.18 49.44 4769.17 0.00 1.00 0.00 -0.04 1 a Talusian smuggler guard +4585 TALUS EGG 0 0 4334.40 49.44 4741.29 0.00 0.97 0.00 -0.23 1 a Talusian smuggler guard +4586 TALUS EGG 0 0 4218.98 63.28 4721.40 0.00 0.65 0.00 0.76 1 a Talusian smuggler guard +4587 TALUS EGG 0 0 4319.89 49.44 4708.27 0.00 0.99 0.00 -0.14 1 a CLL-8 binary load lifter +4588 TALUS EGG 0 0 4260.70 62.49 4884.91 0.00 0.04 0.00 1.00 1 a Talusian smuggler guard +4589 TALUS EGG 0 0 4258.23 49.44 4719.59 0.00 0.99 0.00 0.11 1 a CLL-8 binary load lifter +4590 TALUS EGG 0 0 4266.67 49.44 4706.57 0.00 0.90 0.00 -0.43 1 a Selonian +4591 TALUS EGG 0 0 4705.37 28.83 5420.20 0.00 0.93 0.00 0.37 1 a Rebel sentry +4592 TALUS EGG 0 0 4712.37 29.94 5425.61 0.00 0.42 0.00 0.91 1 a Rebel sentry +4593 TALUS EGG 0 0 4098.67 2.00 5314.81 0.00 0.98 0.00 0.22 1 Norris +4594 TALUS EGG 0 0 4256.61 49.44 4759.43 0.00 0.77 0.00 0.64 1 an EG-6 power droid +4595 TALUS EGG 0 0 4329.71 49.44 4760.64 0.00 0.96 0.00 0.29 1 a Talusian smuggler guard +4596 TALUS EGG 0 0 4274.87 59.18 4833.55 0.00 1.00 0.00 0.07 1 a Talusian smuggler guard +4597 TALUS EGG 0 0 4273.49 60.60 4847.03 0.00 1.00 0.00 0.07 1 a Talusian smuggler guard +4598 TALUS EGG 0 0 4352.73 69.26 4674.95 0.00 0.64 0.00 0.77 1 a Talusian smuggler guard +4599 TALUS EGG 0 0 4662.69 22.35 5524.91 0.00 0.28 0.00 0.96 1 a Rebel sentry +4600 TALUS EGG 0 0 4520.61 2.00 5236.48 0.00 0.62 0.00 0.78 1 an Imperial operative +4601 TALUS EGG 0 0 4349.93 67.65 4684.41 0.00 -0.42 0.00 0.91 1 a Talusian smuggler elite guard +4602 TALUS EGG 0 0 4756.86 33.30 5368.16 0.00 -0.07 0.00 1.00 1 a Rebel sentry +4603 TALUS EGG 0 0 4745.70 22.74 5552.11 0.00 0.99 0.00 0.17 1 a Rebel sentry +4604 TALUS EGG 0 0 4307.22 49.44 4750.66 0.00 -0.64 0.00 0.77 1 a Selonian +4605 TALUS EGG 0 0 4208.57 62.81 4702.15 0.00 0.69 0.00 0.72 1 a Talusian smuggler elite guard +4606 TALUS EGG 0 0 4652.05 19.69 5521.07 0.00 -0.35 0.00 0.94 1 a Rebel sentry +4607 TALUS EGG 0 0 4779.76 24.00 5434.19 0.00 -0.56 0.00 0.83 1 a Rebel sentry +4608 TALUS EGG 0 0 4732.74 21.35 5553.05 0.00 0.92 0.00 -0.40 1 a Rebel sentry +4609 TALUS EGG 0 0 4263.42 0.51 5263.01 0.00 0.17 0.00 0.98 1 a Stormtrooper +4610 TALUS EGG 0 0 4291.72 9.90 5433.43 0.00 0.63 0.00 0.78 1 a Rebel trooper +4613 TALUS EGG 0 0 4791.00 22.80 5437.42 0.00 0.40 0.00 0.92 1 a Rebel sentry +4614 TALUS EGG 0 0 4335.38 68.09 4668.93 0.00 -0.27 0.00 0.96 1 a Talusian smuggler guard +4615 TALUS EGG 0 0 4751.61 33.14 5360.36 0.00 0.71 0.00 -0.70 1 a Rebel sentry +4616 TALUS EGG 0 0 4759.66 33.46 5358.38 0.00 1.00 0.00 -0.08 1 a Rebel sentry +4617 TALUS EGG 0 0 4334.85 49.44 4732.38 0.00 0.10 0.00 0.99 1 a Talusian smuggler guard +4618 TALUS EGG 0 0 4783.75 24.07 5427.61 0.00 1.00 0.00 0.05 1 a Rebel sentry +4619 TALUS EGG 0 0 4268.58 49.44 4744.58 0.00 0.75 0.00 0.67 1 a Talusian smuggler guard +4620 TALUS EGG 0 0 4268.41 0.56 5264.28 0.00 0.94 0.00 -0.33 1 Nomi (an advocate) +4621 TALUS EGG 0 0 4376.69 2.00 5281.09 0.00 1.00 0.00 -0.02 1 a 3PO protocol droid +4622 TALUS EGG 0 0 4379.07 2.00 5283.15 0.00 1.00 0.00 0.07 1 Amyva Va'new +4623 TALUS EGG 0 0 6035.87 658.89 6991.80 0.00 0.04 0.00 1.00 1 a brood V aurek arachne +4624 TALUS EGG 0 0 5069.80 84.87 6367.88 0.00 -0.09 0.00 1.00 1 a brood V arachne +4625 TALUS EGG 0 0 5491.18 556.70 7067.31 0.00 -0.53 0.00 0.85 1 a brood V arachne +4626 TALUS EGG 0 0 5476.29 576.76 7036.04 0.00 0.90 0.00 0.43 1 a brood V aurek arachne +4673 TALUS EGG 0 0 5546.80 574.98 7019.11 0.00 -0.38 0.00 0.93 1 a brood V aurek arachne +4674 TALUS EGG 0 0 6139.18 688.90 7121.42 0.00 0.96 0.00 -0.29 1 a brood V arachne +4675 TALUS EGG 0 0 5569.07 575.09 7072.20 0.00 -0.16 0.00 0.99 1 a brood V aurek arachne +4676 TALUS EGG 0 0 5470.79 569.47 7066.47 0.00 -0.40 0.00 0.91 1 a brood V aurek arachne +4677 TALUS EGG 0 0 5520.67 546.54 7062.56 0.00 -0.24 0.00 0.97 1 a brood V arachne +4678 TALUS EGG 0 0 5521.51 557.14 7030.08 0.00 0.98 0.00 0.21 1 a brood V arachne +4679 TALUS EGG 0 0 6063.34 668.70 7034.85 0.00 0.83 0.00 -0.55 1 a brood V arachne +4680 TALUS EGG 0 0 5049.24 93.89 6405.29 0.00 0.93 0.00 0.36 1 a brood V arachne +4681 TALUS EGG 0 0 5084.94 88.15 6375.71 0.00 -0.24 0.00 0.97 1 a brood V aurek arachne +4682 TALUS EGG 0 0 5095.90 91.99 6382.28 0.00 -0.64 0.00 0.77 1 a brood V arachne +4683 TALUS EGG 0 0 6140.28 686.01 7128.43 0.00 0.40 0.00 0.92 1 a brood V aurek arachne +4684 TALUS EGG 0 0 6061.10 665.47 7016.78 0.00 -0.66 0.00 0.75 1 a brood V aurek arachne +4685 TALUS EGG 0 0 5098.87 99.57 6404.18 0.00 0.78 0.00 -0.62 1 a brood V aurek arachne +4686 TALUS EGG 0 0 5080.63 80.76 6415.96 0.00 0.98 0.00 -0.22 1 a brood V arachne +4687 TALUS EGG 0 0 5523.92 577.74 7111.96 0.00 -0.35 0.00 0.94 1 a brood V aurek arachne +4688 TALUS EGG 0 0 5039.81 95.69 6391.00 0.00 0.72 0.00 0.69 1 a brood V aurek arachne +4689 TALUS EGG 0 0 6043.33 660.98 6998.20 0.00 0.17 0.00 0.99 1 a brood V arachne +4690 TALUS EGG 0 0 5555.40 562.15 7057.79 0.00 0.43 0.00 0.90 1 a brood V arachne +4691 TALUS EGG 0 0 6004.33 672.39 7010.91 0.00 0.63 0.00 0.78 1 a brood V arachne +4692 TALUS EGG 0 0 6137.80 684.66 7115.06 0.00 0.35 0.00 0.94 1 a brood V aurek arachne +4693 TALUS EGG 0 0 6006.46 670.07 7000.51 0.00 0.47 0.00 0.88 1 a brood V aurek arachne +4694 TALUS EGG 0 0 5525.20 575.45 7110.45 0.00 -0.35 0.00 0.94 1 a brood V arachne +4695 TALUS EGG 0 0 5067.33 88.79 6405.18 0.00 1.00 0.00 0.02 1 a brood V aurek arachne +4696 TALUS EGG 0 0 7541.33 443.37 876.83 0.00 0.33 0.00 0.94 1 a painted spat +4697 TALUS EGG 0 0 7539.51 444.73 886.27 0.00 0.99 0.00 0.13 1 a painted spat +4698 TALUS EGG 0 0 7533.44 443.26 879.29 0.00 0.52 0.00 0.85 1 a painted spat +4699 TALUS EGG 0 0 6366.20 639.87 7346.15 0.00 0.78 0.00 -0.63 1 a brood V aurek arachne +4700 TALUS EGG 0 0 6601.08 671.83 7335.65 0.00 0.94 0.00 0.34 1 a brood II arachne +4701 TALUS EGG 0 0 7304.11 595.34 7535.14 0.00 0.99 0.00 -0.14 1 a brood I arachne +4702 TALUS EGG 0 0 6236.53 673.49 7229.41 0.00 0.88 0.00 -0.48 1 a brood V aurek arachne +4703 TALUS EGG 0 0 7325.99 595.00 7584.72 0.00 0.92 0.00 -0.38 1 a brood I arachne +4704 TALUS EGG 0 0 7331.12 615.76 7543.55 0.00 0.95 0.00 0.30 1 a brood I arachne +4705 TALUS EGG 0 0 7311.41 595.00 7549.99 0.00 0.94 0.00 -0.35 1 a brood I arachne +4706 TALUS EGG 0 0 7294.51 606.29 7595.33 0.00 -0.01 0.00 1.00 1 a brood I aurek arachne +4707 TALUS EGG 0 0 6384.04 630.43 7369.62 0.00 -0.10 0.00 0.99 1 a brood V aurek arachne +4708 TALUS EGG 0 0 6216.77 675.16 7217.12 0.00 0.49 0.00 0.87 1 a brood V arachne +4709 TALUS EGG 0 0 7327.22 605.16 7532.20 0.00 0.75 0.00 -0.66 1 a brood I aurek arachne +4710 TALUS EGG 0 0 6373.89 633.81 7339.95 0.00 -0.68 0.00 0.73 1 a brood V arachne +4711 TALUS EGG 0 0 7275.76 614.15 7569.41 0.00 0.99 0.00 -0.10 1 a brood I aurek arachne +4712 TALUS EGG 0 0 6393.65 627.55 7345.07 0.00 1.00 0.00 -0.06 1 a brood V arachne +4713 TALUS EGG 0 0 6792.50 606.86 7418.67 0.00 0.50 0.00 0.86 1 a brood II arachne +4775 TALUS EGG 0 0 6794.79 607.70 7469.04 0.00 -0.37 0.00 0.93 1 a brood II aurek arachne +4776 TALUS EGG 0 0 6812.98 610.85 7385.93 0.00 0.03 0.00 1.00 1 a brood II arachne +4777 TALUS EGG 0 0 6204.36 667.11 7221.28 0.00 0.19 0.00 0.98 1 a brood V aurek arachne +4778 TALUS EGG 0 0 6399.44 630.13 7369.53 0.00 -0.07 0.00 1.00 1 a brood V arachne +4779 TALUS EGG 0 0 6640.43 678.95 7314.78 0.00 -0.54 0.00 0.84 1 a brood II arachne +4780 TALUS EGG 0 0 7272.70 608.77 7539.36 0.00 0.83 0.00 0.56 1 a brood I aurek arachne +4781 TALUS EGG 0 0 6586.49 688.15 7325.99 0.00 0.73 0.00 0.68 1 a brood II arachne +4822 TALUS EGG 0 0 6595.81 683.77 7344.27 0.00 0.67 0.00 0.74 1 a brood II aurek arachne +4823 TALUS EGG 0 0 6588.36 677.72 7322.19 0.00 0.65 0.00 0.76 1 a brood II aurek arachne +4824 TALUS EGG 0 0 7328.57 595.00 7592.37 0.00 0.25 0.00 0.97 1 a brood I aurek arachne +4825 TALUS EGG 0 0 6637.61 686.94 7302.51 0.00 -0.36 0.00 0.93 1 a brood II aurek arachne +4826 TALUS EGG 0 0 6620.37 670.00 7305.13 0.00 -0.06 0.00 1.00 1 a brood II arachne +4827 TALUS EGG 0 0 6783.37 618.96 7410.55 0.00 0.72 0.00 -0.69 1 a brood II aurek arachne +4828 TALUS EGG 0 0 6637.33 659.54 7348.90 0.00 0.87 0.00 -0.50 1 a brood II arachne +4829 TALUS EGG 0 0 6648.31 668.76 7330.47 0.00 0.86 0.00 0.50 1 a brood II aurek arachne +4830 TALUS EGG 0 0 6812.89 593.29 7431.72 0.00 -0.62 0.00 0.79 1 a brood II aurek arachne +4831 TALUS EGG 0 0 7276.16 610.30 7550.88 0.00 -0.07 0.00 1.00 1 a brood I arachne +4832 TALUS EGG 0 0 6402.70 627.22 7332.09 0.00 1.00 0.00 0.00 1 a brood V aurek arachne +4833 TALUS EGG 0 0 6810.53 593.83 7432.26 0.00 0.80 0.00 -0.61 1 a brood II arachne +4834 TALUS EGG 0 0 7317.83 598.87 7541.20 0.00 1.00 0.00 0.03 1 a brood I aurek arachne +4835 TALUS EGG 0 0 7284.64 609.17 7584.84 0.00 0.62 0.00 0.78 1 a brood I arachne +4836 TALUS EGG 0 0 6801.18 617.82 7381.39 0.00 0.99 0.00 -0.12 1 a brood II aurek arachne +4837 TALUS EGG 0 0 6800.45 602.54 7457.85 0.00 -0.32 0.00 0.95 1 a brood II arachne +4851 TALUS EGG 0 0 -2406.00 23.00 2044.00 0.00 0.00 0.00 0.00 1 Black Sun Minion +4852 TALUS EGG 0 0 -2406.00 23.00 2044.00 0.00 0.00 0.00 0.00 1 Black Sun Initiate +4853 TALUS EGG 0 0 -2406.00 23.00 2044.00 0.00 0.00 0.00 0.00 1 Black Sun Smuggler +4854 TALUS EGG 0 0 -1623.00 23.00 620.00 0.00 0.00 0.00 0.00 1 a Binayre chief +4855 TALUS EGG 0 0 -1623.00 23.00 620.00 0.00 0.00 0.00 0.00 1 a Binayre smuggler +4856 TALUS EGG 0 0 -1623.00 23.00 620.00 0.00 0.00 0.00 0.00 1 a Binayre swindler +4857 TALUS EGG 0 0 -1623.00 23.00 620.00 0.00 0.00 0.00 0.00 1 a Binayre pirate +4858 TATOOINE EGG 0 0 -7665.18 240.36 -7386.06 0.00 -0.29 0.00 0.96 1 Eteto Topan +4871 TATOOINE EGG 0 0 -6273.99 39.29 -5915.43 0.00 0.87 0.00 0.49 1 Valarian's soldier +4901 TATOOINE EGG 0 0 -6233.84 37.25 -5947.28 0.00 0.97 0.00 0.26 1 Valarian's soldier +4902 TATOOINE EGG 0 0 -6256.15 39.05 -5913.32 0.00 1.00 0.00 0.03 1 Valarian's soldier +4903 TATOOINE EGG 0 0 -6260.20 43.14 -5894.80 0.00 1.00 0.00 -0.04 1 Valarian's soldier +4904 TATOOINE EGG 0 0 -6233.05 36.84 -5929.44 0.00 -0.63 0.00 0.77 1 Valarian's soldier +4905 TATOOINE EGG 0 0 -6270.54 35.38 -5953.54 0.00 0.11 0.00 0.99 1 Valarian's soldier +4906 TATOOINE EGG 0 0 -6278.41 35.88 -5933.67 0.00 0.37 0.00 0.93 1 Valarian's soldier +4907 TATOOINE EGG 0 0 -6152.08 23.63 1810.50 0.00 1.00 0.00 -0.04 1 C4-ZX +4908 TATOOINE EGG 0 0 -6249.46 36.67 1961.83 0.00 -0.12 0.00 0.99 1 a greater desert womp rat +4909 TATOOINE EGG 0 0 -6144.20 23.56 1872.19 0.00 0.95 0.00 0.30 1 XF-R5 +4910 TATOOINE EGG 0 0 -6205.45 23.63 1845.75 0.00 -0.41 0.00 0.91 1 XF-R5 +4911 TATOOINE EGG 0 0 -6157.95 51.10 2029.82 0.00 0.94 0.00 0.34 1 a greater desert womp rat +4912 TATOOINE EGG 0 0 -6285.12 44.68 1918.76 0.00 0.83 0.00 0.56 1 a greater desert womp rat +4913 TATOOINE EGG 0 0 -6152.01 23.63 1812.08 0.00 0.88 0.00 -0.48 1 Ji'Ni Sil +4914 TATOOINE EGG 0 0 -6158.00 23.59 1836.00 0.00 0.99 0.00 0.15 1 Protocol Droid +4915 TATOOINE EGG 0 0 -7217.39 309.79 3869.83 0.00 0.92 0.00 0.39 1 a downed pilot +4916 TATOOINE EGG 0 0 -7200.79 301.13 3802.65 0.00 0.85 0.00 -0.53 1 Tusken Follower +4917 TATOOINE EGG 0 0 -6411.07 308.48 2155.44 0.00 0.91 0.00 0.42 1 a wild bladeback boar +4918 TATOOINE EGG 0 0 -6398.04 295.01 2165.62 0.00 0.95 0.00 0.31 1 a wild zucca boar +4919 TATOOINE EGG 0 0 -6423.25 301.19 2157.23 0.00 1.00 0.00 0.07 1 a wild zucca boar +4920 TATOOINE EGG 0 0 -7211.65 301.13 3799.30 0.00 0.60 0.00 0.80 1 Tusken Follower +4921 TATOOINE EGG 0 0 -7003.34 189.22 7080.75 0.00 0.92 0.00 0.40 1 Tusken Bantha +4922 TATOOINE EGG 0 0 -6949.89 186.68 7071.89 0.00 0.84 0.00 -0.54 1 Tusken Bantha +4923 TATOOINE EGG 0 0 -6980.26 187.43 7081.17 0.00 1.00 0.00 -0.05 1 Tusken Relic Guard +4936 TATOOINE EGG 0 0 -5516.14 48.04 -6649.05 0.00 0.05 0.00 1.00 1 a Wayfar spy +4937 TATOOINE EGG 0 0 -5371.27 64.78 -6897.22 0.00 0.79 0.00 -0.61 1 Valarian's hacker +4938 TATOOINE EGG 0 0 -5543.10 38.36 -6616.68 0.00 0.87 0.00 -0.49 1 a Wayfar spy +4939 TATOOINE EGG 0 0 -5038.89 44.96 -6977.75 0.00 0.81 0.00 0.59 1 Romo Vax's henchman +4940 TATOOINE EGG 0 0 -5501.27 42.98 -6626.84 0.00 0.96 0.00 0.26 1 a Wayfar spy +4941 TATOOINE EGG 0 0 -4947.43 35.80 -6352.66 0.00 0.95 0.00 -0.30 1 a Large Rock Beetle +4942 TATOOINE EGG 0 0 -5537.18 44.71 -6642.49 0.00 0.40 0.00 0.92 1 a Wayfar spy +4943 TATOOINE EGG 0 0 -4912.09 41.43 -6359.39 0.00 -0.69 0.00 0.72 1 a Large Rock Beetle +4944 TATOOINE EGG 0 0 -5467.89 48.95 -6620.62 0.00 -0.67 0.00 0.74 1 a Wayfar spy +4945 TATOOINE EGG 0 0 -4991.89 29.69 -6343.04 0.00 0.88 0.00 0.47 1 a Large Rock Beetle +4946 TATOOINE EGG 0 0 -5217.07 71.99 -6795.03 -0.01 0.93 0.00 0.35 1 Meatlump Dunder (Outpost Guard) +4947 TATOOINE EGG 0 0 -5076.30 46.61 -6973.05 0.00 0.76 0.00 -0.66 1 Romo Vax's henchman +4948 TATOOINE EGG 0 0 -5485.75 48.08 -6646.28 0.00 -0.27 0.00 0.96 1 a Wayfar spy +4949 TATOOINE EGG 0 0 -4911.02 34.41 -6316.47 0.00 0.98 0.00 -0.21 1 a Large Rock Beetle +4950 TATOOINE EGG 0 0 -5472.44 45.58 -6585.63 0.00 0.93 0.00 -0.36 1 a Wayfar spy +4964 TATOOINE EGG 0 0 -5512.37 46.96 -6588.25 0.00 -0.15 0.00 0.99 1 a Wayfar spy +4965 TATOOINE EGG 0 0 -5144.95 75.00 -6617.71 0.00 0.52 0.00 0.86 1 Porgryn +4966 TATOOINE EGG 0 0 -5185.00 75.00 -6458.00 0.00 0.86 0.00 0.51 1 Jalen +4967 TATOOINE EGG 0 0 -5224.45 75.00 -6560.40 0.00 0.58 0.00 0.82 1 Romo Vax +4968 TATOOINE EGG 0 0 -5052.56 43.72 -6963.14 0.00 -0.16 0.00 0.99 1 Romo Vax's henchman +4969 TATOOINE EGG 0 0 -5127.11 75.00 -6577.50 0.00 0.88 0.00 0.47 1 Ozzmos Roberts +4970 TATOOINE EGG 0 0 -4962.38 40.81 -6378.64 0.00 -0.33 0.00 0.94 1 a Large Rock Beetle +4971 TATOOINE EGG 0 0 -5203.48 74.27 -6778.87 0.00 0.47 0.01 0.88 1 Meatlump Donk (Outpost Guard) +4972 TATOOINE EGG 0 0 -5226.86 75.95 -6764.64 0.00 0.85 0.01 0.53 1 Meatlump Dunder (Outpost Guard) +4973 TATOOINE EGG 0 0 -5516.17 40.80 -6610.13 0.00 0.96 0.00 0.30 1 Dewall Paez (a Wayfar spy leader) +4984 TATOOINE EGG 0 0 -4959.27 30.71 -6314.51 0.00 1.00 0.00 0.02 1 a Large Rock Beetle +4985 TATOOINE EGG 0 0 -5156.80 79.77 -6975.47 0.00 0.50 0.00 0.87 1 a hutt assassin +4986 TATOOINE EGG 0 0 -5150.12 79.77 -6955.41 0.00 1.00 0.00 0.01 1 a hutt assassin +4992 TATOOINE EGG 0 0 -5891.39 49.52 -5967.41 0.00 -0.44 0.00 0.90 1 an Elite Dune Lizzard +4993 TATOOINE EGG 0 0 -4605.92 45.44 -4737.28 0.00 -0.66 0.00 0.75 1 an Elite Dragonet +4994 TATOOINE EGG 0 0 -5481.25 44.10 -6087.65 0.00 0.98 0.00 0.18 1 an Alkhara bandit +4995 TATOOINE EGG 0 0 -5445.34 38.27 -6104.62 0.00 0.93 0.00 -0.36 1 an Alkhara bandit +4996 TATOOINE EGG 0 0 -5459.78 38.86 -6105.30 0.00 0.96 0.00 0.28 1 an Alkhara bandit +4997 TATOOINE EGG 0 0 -5969.66 53.20 -5960.45 0.00 0.70 0.00 0.72 1 an Elite Dune Lizzard +4998 TATOOINE EGG 0 0 -4690.10 39.15 -4772.28 0.00 0.81 0.00 -0.58 1 an Elite Dragonet +4999 TATOOINE EGG 0 0 -4624.03 39.83 -4707.07 0.00 0.88 0.00 -0.47 1 an Elite Dragonet +5000 TATOOINE EGG 0 0 -5927.21 49.47 -5931.22 0.00 0.14 0.00 0.99 1 an Elite Dune Lizzard +5001 TATOOINE EGG 0 0 -5473.93 39.59 -6115.12 0.00 0.74 0.00 0.67 1 an Alkhara bandit +5002 TATOOINE EGG 0 0 -4674.09 28.26 -4689.19 0.00 0.99 0.00 0.11 1 an Elite Dragonet +5003 TATOOINE EGG 0 0 -5434.25 43.20 -6086.03 0.00 0.98 0.00 -0.22 1 an Alkhara bandit +5004 TATOOINE EGG 0 0 -5430.66 37.35 -6113.18 0.00 0.69 0.00 0.73 1 an Alkhara bandit +5005 TATOOINE EGG 0 0 -5936.96 51.73 -5974.32 0.00 0.38 0.00 0.92 1 an Elite Dune Lizzard +5006 TATOOINE EGG 0 0 -4646.35 42.30 -4759.10 0.00 -0.69 0.00 0.72 1 an Elite Dragonet +5007 TATOOINE EGG 0 0 -5463.07 41.18 -6130.22 0.00 0.17 0.00 0.98 1 an Alkhara bandit +5008 TATOOINE EGG 0 0 -5444.39 41.23 -6131.12 0.00 -0.17 0.00 0.98 1 an Alkhara bandit +5009 TATOOINE EGG 0 0 -5880.49 50.47 -5932.83 0.00 -0.70 0.00 0.72 1 an Elite Dune Lizzard +5010 TATOOINE EGG 0 0 -4698.76 27.91 -4732.04 0.00 0.90 0.00 0.44 1 an Elite Dragonet +5011 TATOOINE EGG 0 0 -5424.31 44.91 -6138.65 0.00 -0.30 0.00 0.95 1 an Alkhara bandit +5012 TATOOINE EGG 0 0 -4932.42 31.00 -5542.53 0.00 -0.55 0.00 0.84 1 Tyrok +5013 TATOOINE EGG 0 0 -4331.11 22.92 -5027.13 0.00 1.00 0.00 0.08 1 Delrice Capreese +5014 TATOOINE EGG 0 0 -5024.42 41.39 -6109.46 0.00 0.97 0.00 -0.24 1 Valarian's thief +5015 TATOOINE EGG 0 0 -5009.26 39.84 -6129.91 0.00 0.75 0.00 -0.66 1 Valarian's thief +5016 TATOOINE EGG 0 0 -5943.73 58.73 -6036.86 0.00 0.91 0.00 0.41 1 Gotan +5017 TATOOINE EGG 0 0 -6112.28 27.22 -3374.95 0.00 0.76 0.00 -0.65 1 Malakili +5018 TATOOINE EGG 0 0 -4533.04 44.15 -4012.75 0.00 0.76 0.00 0.65 1 a wild zucca boar +5019 TATOOINE EGG 0 0 -4466.01 41.87 -4003.19 0.00 -0.65 0.00 0.76 1 a wild zucca boar +5020 TATOOINE EGG 0 0 -6109.88 24.84 -3360.46 0.00 1.00 0.00 -0.07 1 Malakili +5021 TATOOINE EGG 0 0 -4494.61 45.82 -4027.03 0.00 0.07 0.00 1.00 1 a wild zucca boar +5022 TATOOINE EGG 0 0 -4495.15 39.91 -3978.57 0.00 0.97 0.00 0.23 1 a wild zucca boar +5023 TATOOINE EGG 0 0 -4547.34 37.12 -3979.58 0.00 0.88 0.00 0.47 1 a wild zucca boar +5024 TATOOINE EGG 0 0 -5576.42 322.59 1736.14 0.00 -0.39 0.00 0.92 1 Tusken Follower +5025 TATOOINE EGG 0 0 -5583.09 322.60 1728.11 0.00 0.94 0.00 -0.33 1 Tusken Follower +5026 TATOOINE EGG 0 0 -5827.40 352.78 1517.93 0.00 1.00 0.00 0.00 1 a wounded miner +5027 TATOOINE EGG 0 0 -5998.23 62.91 1805.95 0.00 0.12 0.00 0.99 1 Tusken Follower +5028 TATOOINE EGG 0 0 -6076.67 52.56 2013.90 0.00 0.97 0.00 0.23 1 a wild bladeback boar +5029 TATOOINE EGG 0 0 -5812.10 345.03 1538.13 0.00 0.88 0.00 -0.48 1 a greater desert womp rat +5030 TATOOINE EGG 0 0 -6001.97 44.20 1852.10 0.00 0.95 0.00 0.31 1 a greater desert womp rat +5031 TATOOINE EGG 0 0 -5750.90 350.38 2012.49 0.00 0.94 0.00 -0.34 1 a wild zucca boar +5032 TATOOINE EGG 0 0 -5759.15 346.08 2026.91 0.00 0.87 0.00 -0.48 1 a greater desert womp rat +5033 TATOOINE EGG 0 0 -5830.54 353.67 1501.66 0.00 0.61 0.00 0.80 1 a wild bladeback boar +5034 TATOOINE EGG 0 0 -6031.30 42.31 1948.73 0.00 1.00 0.00 0.09 1 a wild zucca boar +5035 TATOOINE EGG 0 0 -5740.56 350.06 2012.28 0.00 0.79 0.00 0.61 1 a wild zucca boar +5036 TATOOINE EGG 0 0 -5813.17 343.53 3132.34 0.00 0.85 0.00 -0.53 1 a greater desert womp rat +5037 TATOOINE EGG 0 0 -5353.00 5.10 2750.00 0.00 0.61 0.00 0.79 1 a wild zucca boar +5038 TATOOINE EGG 0 0 -5824.03 343.53 3128.99 0.00 0.60 0.00 0.80 1 Tusken Follower +5039 TATOOINE EGG 0 0 -3974.62 34.63 -4819.51 0.00 0.91 0.00 0.42 1 Jubai Laetlii +5040 TATOOINE EGG 0 0 -3925.93 18.60 -4270.59 0.00 0.82 0.00 0.57 1 Tusken Follower +5041 TATOOINE EGG 0 0 -3941.07 21.28 -4297.13 0.00 0.68 0.00 0.73 1 a mountain squill +5042 TATOOINE EGG 0 0 -3946.50 21.41 -4278.91 0.00 0.85 0.00 0.52 1 Valarian's smuggler +5043 TATOOINE EGG 0 0 -3904.42 19.81 -4268.03 0.00 0.98 0.00 0.20 1 Valarian's smuggler +5044 TATOOINE EGG 0 0 -3917.58 38.53 -4818.55 0.00 0.93 0.00 0.36 1 Valarian's smuggler +5045 TATOOINE EGG 0 0 -2481.61 0.00 -5364.43 0.00 0.94 0.00 0.34 1 Valarian's smuggler +5046 TATOOINE EGG 0 0 -2451.89 0.00 -5363.11 0.00 0.98 0.00 -0.22 1 a mountain squill +5047 TATOOINE EGG 0 0 -3917.01 20.08 -4297.36 0.00 0.25 0.00 0.97 1 a greater desert womp rat +5048 TATOOINE EGG 0 0 -3972.97 41.21 -4878.23 0.00 0.64 0.00 0.77 1 a greater desert womp rat +5049 TATOOINE EGG 0 0 -2455.24 0.00 -5384.64 0.00 0.93 0.00 -0.36 1 Valarian's smuggler +5050 TATOOINE EGG 0 0 -3885.23 22.31 -4280.11 0.00 1.00 0.00 0.06 1 a mountain squill +5051 TATOOINE EGG 0 0 -3875.90 23.24 -4299.25 0.00 0.08 0.00 1.00 1 a greater desert womp rat +5052 TATOOINE EGG 0 0 -3910.30 51.78 -4878.59 0.00 -0.27 0.00 0.96 1 Valarian's smuggler +5053 TATOOINE EGG 0 0 -3938.91 40.29 -4857.64 0.00 0.55 0.00 0.83 1 Valarian's smuggler +5054 TATOOINE EGG 0 0 -3890.18 24.06 -4318.87 0.00 -0.16 0.00 0.99 1 a mountain squill +5055 TATOOINE EGG 0 0 -3883.43 45.17 -4842.94 0.00 0.77 0.00 -0.64 1 a mountain squill +5056 TATOOINE EGG 0 0 -3522.87 1.04 -4620.20 0.00 1.00 0.00 -0.07 1 Valarian's smuggler +5057 TATOOINE EGG 0 0 -3521.70 0.00 -4636.35 -0.04 0.07 -0.03 1.00 1 Valarian's smuggler +5058 TATOOINE EGG 0 0 -3810.62 27.29 -4635.60 0.00 0.99 0.00 -0.15 1 a mountain squill +5059 TATOOINE EGG 0 0 -3811.19 29.24 -4719.59 0.00 0.93 0.00 0.37 1 a Tusken Outrider +5060 TATOOINE EGG 0 0 -3804.72 30.91 -4723.62 0.00 0.85 0.00 0.53 1 a Sand Crawler crewman +5061 TATOOINE EGG 0 0 -3805.16 29.56 -4717.29 -0.07 0.96 0.14 0.24 1 Jawa Leader +5062 TATOOINE EGG 0 0 -3753.03 13.81 -4747.73 -0.45 0.62 0.37 -0.53 1 FA-2PO +5063 TATOOINE EGG 0 0 -2575.00 0.00 -5517.00 0.00 0.87 0.00 -0.50 1 Zef Ando +5085 TATOOINE EGG 0 0 -3937.41 5.36 -3984.48 0.00 0.68 0.00 0.73 1 Valarian's blood vandal +5086 TATOOINE EGG 0 0 -3920.97 7.10 -4028.88 0.00 0.68 0.00 0.73 1 Valarian's blood vandal +5087 TATOOINE EGG 0 0 -3952.27 6.82 -4015.71 0.00 0.74 0.00 0.67 1 Valarian's blood vandal +5088 TATOOINE EGG 0 0 -3953.98 6.71 -4021.11 0.00 0.72 0.00 0.70 1 Valarian's blood vandal +5089 TATOOINE EGG 0 0 -3953.51 5.57 -3999.88 0.00 0.68 0.00 0.73 1 Valarian's command enforcer +5090 TATOOINE EGG 0 0 -2409.24 56.66 1845.40 0.00 -0.44 0.00 0.90 1 an Elite Dune Lizzard +5091 TATOOINE EGG 0 0 -2418.00 22.93 1908.00 0.00 0.95 0.00 0.32 1 an Elite Dune Lizzard +5092 TATOOINE EGG 0 0 -2975.55 5.00 1910.64 0.00 -0.40 0.00 0.91 1 Peggin Dulin +5093 TATOOINE EGG 0 0 -2379.48 88.51 1849.94 0.00 0.90 0.00 0.43 1 an Elite Dune Lizzard +5094 TATOOINE EGG 0 0 -2866.54 5.00 1856.86 0.00 1.00 0.00 0.03 1 Syndil Na'Marr +5095 TATOOINE EGG 0 0 -3157.38 5.00 2197.87 0.00 -0.70 0.00 0.72 1 a slum thief +5096 TATOOINE EGG 0 0 -3163.77 5.00 2154.74 0.00 0.84 0.00 0.55 1 a slum thief +5097 TATOOINE EGG 0 0 -2799.39 5.00 2259.96 0.00 0.83 0.00 -0.56 1 Srimaur +5098 TATOOINE EGG 0 0 -3171.52 5.00 2170.10 0.00 0.38 0.00 0.93 1 a slum thief +5099 TATOOINE EGG 0 0 -3188.34 5.00 2187.88 0.00 -0.42 0.00 0.91 1 a slum thief +5100 TATOOINE EGG 0 0 -3041.38 5.00 2212.60 0.00 -0.30 0.00 0.95 1 Propti Xaroon +5101 TATOOINE EGG 0 0 -2794.62 5.00 2508.54 0.00 0.93 0.00 0.37 1 a greater Tatooinian mynock +5102 TATOOINE EGG 0 0 -2667.41 5.00 2490.64 0.00 0.71 0.00 0.71 1 a greater Tatooinian mynock +5103 TATOOINE EGG 0 0 -3085.52 5.00 2050.64 0.00 0.49 0.00 0.87 1 Caryn +5104 TATOOINE EGG 0 0 -2879.00 5.00 2579.72 0.00 -0.15 0.00 0.99 1 Tiomvo +5105 TATOOINE EGG 0 0 -3105.00 5.00 2314.00 0.00 0.99 0.00 0.10 1 Diala +5106 TATOOINE EGG 0 0 -3157.38 5.00 2197.87 0.00 -0.70 0.00 0.72 1 a slum thief +5107 TATOOINE EGG 0 0 -2743.81 5.31 2557.01 0.00 0.41 0.00 0.91 1 a greater Tatooinian mynock +5108 TATOOINE EGG 0 0 -2723.58 5.00 2493.05 0.00 0.38 0.00 0.93 1 a greater Tatooinian mynock +5127 TATOOINE EGG 0 0 -2729.91 5.00 2456.94 0.00 0.14 0.00 0.99 1 a greater Tatooinian mynock +5128 TATOOINE EGG 0 0 -3056.43 7.50 2085.34 0.00 -0.27 0.00 0.96 1 Kav Goldor +5129 TATOOINE EGG 0 0 -2980.00 5.00 2534.00 0.00 -0.24 0.00 0.97 1 Beast Trainer +5130 TATOOINE EGG 0 0 -3188.34 5.00 2187.88 0.00 -0.42 0.00 0.91 1 a slum thief +5131 TATOOINE EGG 0 0 -2701.39 5.00 2516.31 0.00 -0.14 0.00 0.99 1 a greater Tatooinian mynock +5132 TATOOINE EGG 0 0 -3163.77 5.00 2154.74 0.00 0.84 0.00 0.55 1 a slum thief +5133 TATOOINE EGG 0 0 -3171.52 5.00 2170.10 0.00 0.38 0.00 0.93 1 a slum thief +5134 TATOOINE EGG 0 0 -2883.40 5.00 2581.22 0.00 0.04 0.00 1.00 1 Guz'Ordnak +5135 TATOOINE EGG 0 0 -2873.36 5.00 2591.36 0.00 -0.48 0.00 0.87 1 Eyleen +5136 TATOOINE EGG 0 0 -2878.69 5.00 2584.96 0.00 -0.11 0.00 0.99 1 Hilbrun +5137 TATOOINE EGG 0 0 -3507.36 13.99 2058.06 0.00 0.72 0.00 0.69 1 a Jawa +5138 TATOOINE EGG 0 0 -3512.98 13.99 2058.01 0.00 0.72 0.00 0.70 1 a Jawa engineer +5139 TATOOINE EGG 0 0 -3395.89 7.43 2481.46 0.00 0.92 0.00 0.40 1 a Jawa smuggler +5140 TATOOINE EGG 0 0 -3384.37 7.43 2469.49 0.00 0.73 0.00 0.68 1 a Jawa smuggler +5145 TATOOINE EGG 0 0 -3018.41 118.46 4526.83 0.00 0.66 0.00 0.75 1 a Hoverdale bandit +5146 TATOOINE EGG 0 0 -3005.38 116.36 4507.77 0.00 -0.69 0.00 0.72 1 a Hoverdale bandit +5147 TATOOINE EGG 0 0 -3027.34 123.20 4501.64 0.00 0.00 0.00 1.00 1 a Hoverdale bandit +5148 TATOOINE EGG 0 0 -3044.00 132.02 4537.64 0.00 0.71 0.00 -0.70 1 a Hoverdale bandit +5173 TATOOINE EGG 0 0 -3005.19 112.64 4486.41 0.00 -0.46 0.00 0.89 1 a Hoverdale bandit +5174 TATOOINE EGG 0 0 -304.11 48.21 -6940.35 0.00 0.93 0.00 -0.38 1 a Darklighter guard +5210 TATOOINE EGG 0 0 -724.68 11.87 -6313.01 0.00 0.43 0.00 0.90 1 Valarian's Pod Racer +5211 TATOOINE EGG 0 0 -727.61 10.67 -6282.57 0.00 0.99 0.00 0.11 1 Valarian's Pod Racer +5212 TATOOINE EGG 0 0 -685.37 11.45 -6293.95 0.00 -0.05 0.00 1.00 1 Valarian's Pod Racer +5230 TATOOINE EGG 0 0 -705.87 12.09 -6269.47 0.00 0.97 0.00 -0.23 1 Valarian's Pod Racer +5231 TATOOINE EGG 0 0 -694.13 12.31 -6314.85 0.00 0.26 0.00 0.96 1 Valarian's Pod Racer +5232 TATOOINE EGG 0 0 -682.85 12.28 -6275.30 0.00 -0.46 0.00 0.89 1 Valarian's Pod Racer +5233 TATOOINE EGG 0 0 -649.21 14.36 -6293.11 0.00 -0.15 0.00 0.99 1 Valarian's Pod Racer +5234 TATOOINE EGG 0 0 -652.90 15.05 -6267.96 0.00 0.46 0.00 0.89 1 Valarian's Pod Racer +5235 TATOOINE EGG 0 0 -915.25 16.33 -6490.26 0.00 -0.37 0.00 0.93 1 Dera Darklighter +5236 TATOOINE EGG 0 0 -728.28 10.98 -6259.27 0.00 1.00 0.00 0.10 1 Valarian's Pod Racer +5237 TATOOINE EGG 0 0 -255.78 4.70 -6196.95 0.00 0.94 0.00 -0.35 1 a Desert Demon +5256 TATOOINE EGG 0 0 -487.37 43.65 -7119.54 0.00 0.02 0.00 1.00 1 Jem Lavar +5257 TATOOINE EGG 0 0 -951.70 11.01 -4269.85 0.00 0.39 0.00 0.92 1 an Alkhara bandit +5258 TATOOINE EGG 0 0 -981.66 14.48 -4281.57 0.00 0.83 0.00 0.56 1 an Alkhara bandit +5259 TATOOINE EGG 0 0 -961.28 10.72 -4298.35 0.00 -0.44 0.00 0.90 1 an Alkhara bandit +5260 TATOOINE EGG 0 0 -135.77 65.00 -5331.47 0.00 0.45 0.00 0.90 1 Sorna +5261 TATOOINE EGG 0 0 -1512.00 12.87 -4178.00 0.00 0.99 0.00 0.14 1 a terrorist +5262 TATOOINE EGG 0 0 -937.64 7.51 -4303.46 0.00 -0.28 0.00 0.96 1 an Alkhara bandit +5263 TATOOINE EGG 0 0 -1487.10 14.37 -4174.80 0.00 -0.27 0.00 0.96 1 a terrorist +5264 TATOOINE EGG 0 0 -971.11 13.01 -4257.31 0.00 -0.45 0.00 0.89 1 an Alkhara bandit +5265 TATOOINE EGG 0 0 -72.03 9.42 -5577.46 0.00 0.68 0.00 0.73 1 a Rebel trooper +5266 TATOOINE EGG 0 0 -54.85 9.83 -5561.62 0.00 0.90 0.00 -0.43 1 a frightened Rebel recruit +5267 TATOOINE EGG 0 0 -50.69 9.66 -5586.55 0.00 0.28 0.00 0.96 1 a frightened Rebel recruit +5268 TATOOINE EGG 0 0 -161.44 65.00 -5322.71 0.00 0.58 0.00 0.81 1 Cuan Talon +5269 TATOOINE EGG 0 0 -780.86 20.86 -4054.17 0.00 0.82 0.00 0.58 1 a bantha +5270 TATOOINE EGG 0 0 -1802.38 11.65 -3849.75 0.00 0.19 0.00 0.98 1 a dune bantha +5271 TATOOINE EGG 0 0 -1445.15 10.00 -3750.48 0.00 0.64 0.00 0.77 1 Beast Trainer +5272 TATOOINE EGG 0 0 -1845.70 8.89 -3875.70 0.00 -0.30 0.00 0.95 1 a dune bantha +5273 TATOOINE EGG 0 0 -1835.30 8.28 -3916.42 0.00 0.83 0.00 -0.56 1 a dune bantha +5274 TATOOINE EGG 0 0 -1145.42 98.00 -3893.60 0.00 0.78 0.00 0.62 1 Commander Arlan Barrezz +5275 TATOOINE EGG 0 0 -745.00 16.32 -4062.00 0.00 1.00 0.00 -0.05 1 a bantha +5276 TATOOINE EGG 0 0 -1049.00 10.00 -3538.00 0.00 0.98 0.00 0.21 1 Barak +5277 TATOOINE EGG 0 0 -1391.00 12.00 -3643.00 0.00 0.10 0.00 0.99 1 Joi +5278 TATOOINE EGG 0 0 -1801.83 7.87 -3913.50 0.00 1.00 0.00 0.06 1 a dune bantha +5279 TATOOINE EGG 0 0 -1128.67 98.00 -3900.49 0.00 -0.59 0.00 0.81 1 Jasha +5284 TATOOINE EGG 0 0 -847.56 7.17 -3320.50 0.00 0.30 0.00 0.95 1 an Imperial trooper +5285 TATOOINE EGG 0 0 -867.02 7.17 -3316.11 0.00 0.44 0.00 0.90 1 an Imperial trooper +5286 TATOOINE EGG 0 0 -856.14 7.17 -3312.48 0.00 1.00 0.00 -0.09 1 an Imperial Lance Corporal +5287 TATOOINE EGG 0 0 -1666.72 9.75 -3276.34 0.00 0.92 0.00 0.38 1 a CLL-8 binary load lifter +5288 TATOOINE EGG 0 0 -1675.91 9.76 -3290.75 0.00 -0.38 0.00 0.92 1 an LE repair droid +5289 TATOOINE EGG 0 0 -1677.83 9.91 -3290.39 0.00 0.38 0.00 0.92 1 an R5 unit +5290 TATOOINE EGG 0 0 -1619.07 10.00 -3290.48 0.00 0.71 0.00 -0.71 1 a CLL-8 binary load lifter +5291 TATOOINE EGG 0 0 -1622.49 9.93 -3292.72 0.00 0.71 0.00 0.71 1 an EG-6 power droid +5292 TATOOINE EGG 0 0 -1149.40 98.00 -3903.78 0.00 0.83 0.00 -0.55 1 Major Caleb Knolar +5293 TATOOINE EGG 0 0 -1359.76 37.62 -384.07 0.00 0.70 0.00 0.72 1 an adolescent krayt dragon +5294 TATOOINE EGG 0 0 -1359.08 34.98 -372.94 0.00 0.97 0.00 0.26 1 an adolescent krayt dragon +5295 TATOOINE EGG 0 0 -1331.78 25.72 -368.05 0.00 0.22 0.00 0.98 1 an adolescent krayt dragon +5296 TATOOINE EGG 0 0 -1323.92 24.17 -381.69 0.00 -0.37 0.00 0.93 1 an adolescent krayt dragon +5297 TATOOINE EGG 0 0 -1275.00 18.73 5074.00 0.00 0.15 0.00 0.99 1 a Large Rock Beetle +5298 TATOOINE EGG 0 0 -1226.56 20.15 5129.36 0.00 -0.31 0.00 0.95 1 a Large Rock Beetle +5299 TATOOINE EGG 0 0 -1343.34 15.58 5136.02 0.00 0.74 0.00 -0.68 1 a Large Rock Beetle +5300 TATOOINE EGG 0 0 -1377.69 29.25 5100.25 0.00 0.94 0.00 -0.35 1 a Large Rock Beetle +5301 TATOOINE EGG 0 0 -1334.08 19.76 5035.74 0.00 0.84 0.00 0.54 1 a Large Rock Beetle +5302 TATOOINE EGG 0 0 395.20 8.07 -5392.14 0.00 0.81 0.00 0.58 1 a bantha +5303 TATOOINE EGG 0 0 165.83 9.65 -5001.69 0.00 0.96 0.00 -0.27 1 a terrorist +5346 TATOOINE EGG 0 0 434.52 7.13 -5387.47 0.00 0.92 0.00 -0.39 1 a bantha +5347 TATOOINE EGG 0 0 420.00 7.48 -5413.00 0.00 1.00 0.00 0.07 1 a bantha +5348 TATOOINE EGG 0 0 150.97 9.96 -5020.56 0.00 -0.07 0.00 1.00 1 a terrorist +5349 TATOOINE EGG 0 0 107.18 52.00 -5315.62 0.00 1.00 0.00 0.00 1 Alger +5350 TATOOINE EGG 0 0 5.27 8.76 -5065.01 0.00 1.00 0.00 -0.08 1 a civil patrol captain +5351 TATOOINE EGG 0 0 23.29 9.08 -5068.81 0.00 0.91 0.00 -0.42 1 a civil patrol commander +5352 TATOOINE EGG 0 0 9.29 9.08 -5083.89 0.00 0.43 0.00 0.90 1 an Imperial cadet +5353 TATOOINE EGG 0 0 128.83 52.00 -5429.13 0.00 -0.34 0.00 0.94 1 Carh'la Bastra +5354 TATOOINE EGG 0 0 110.17 52.00 -5431.10 0.00 0.04 0.00 1.00 1 Ordo +5355 TATOOINE EGG 0 0 122.52 52.00 -5369.36 0.00 0.91 0.00 -0.40 1 Lt. Jarad Gastin +5356 TATOOINE EGG 0 0 1529.61 7.00 3313.08 0.00 0.73 0.00 0.69 1 Sarlis Beni +5357 TATOOINE EGG 0 0 1353.48 7.00 3051.41 0.00 0.43 0.00 0.90 1 RC-2X +5358 TATOOINE EGG 0 0 1124.11 6.97 2982.60 0.00 0.19 0.00 0.98 1 RC-1Z +5359 TATOOINE EGG 0 0 1282.79 7.00 3052.74 0.00 0.84 0.00 -0.55 1 Mos Entha Shipping Master +5360 TATOOINE EGG 0 0 1351.03 11.00 3108.34 0.00 0.72 0.00 0.69 1 An'Kwee +5361 TATOOINE EGG 0 0 1536.87 7.00 3051.99 0.00 0.71 0.00 0.71 1 Sarlin +5362 TATOOINE EGG 0 0 1283.42 7.00 3154.62 0.00 1.00 0.00 0.03 1 Tweego +5363 TATOOINE EGG 0 0 1514.00 7.00 3313.00 0.00 0.71 0.00 -0.70 1 Wren +5365 TATOOINE EGG 0 0 1328.70 7.00 3265.39 0.00 0.94 0.00 0.35 1 Draknus +5366 TATOOINE EGG 0 0 1539.52 7.00 3105.38 0.00 0.33 0.00 0.94 1 commando_21_reward +5367 TATOOINE EGG 0 0 1702.92 7.00 3076.48 0.00 -0.19 0.00 0.98 1 RC-3T +5368 TATOOINE EGG 0 0 930.01 0.92 3819.76 0.00 1.00 0.00 0.02 1 Tusken Follower +5369 TATOOINE EGG 0 0 938.35 0.88 3828.66 0.00 0.47 0.00 0.88 1 Tusken Follower +5370 TATOOINE EGG 0 0 919.86 0.76 3825.38 0.00 -0.44 0.00 0.90 1 Tusken Follower +5371 TATOOINE EGG 0 0 987.30 12.59 2509.25 0.00 0.19 0.00 0.98 1 an Imperial Brigadier General +5372 TATOOINE EGG 0 0 753.56 31.63 3067.30 0.00 0.04 0.00 1.00 1 a hutt assassin +5373 TATOOINE EGG 0 0 737.64 31.63 3062.56 0.00 0.21 0.00 0.98 1 a hutt assassin +5374 TATOOINE EGG 0 0 737.78 31.63 3082.41 0.00 1.00 0.00 -0.04 1 a hutt assassin +5375 TATOOINE EGG 0 0 3036.40 5.82 -5088.98 0.00 -0.17 0.00 0.99 1 a scavenger Thief +5376 TATOOINE EGG 0 0 4050.00 5.00 -4858.00 0.00 0.29 0.00 0.96 1 a Tusken zealot +5377 TATOOINE EGG 0 0 3174.58 5.08 -4939.55 0.00 0.89 0.00 -0.46 1 a city Rockmite +5378 TATOOINE EGG 0 0 3163.18 6.68 -5015.88 0.00 1.00 0.00 0.03 1 a scavenger guard +5379 TATOOINE EGG 0 0 3580.42 6.28 -5021.04 0.00 0.61 0.00 0.79 1 a Tame Rill +5380 TATOOINE EGG 0 0 3142.00 5.37 -4657.00 0.00 0.77 0.00 -0.63 1 a kreetle +5381 TATOOINE EGG 0 0 3307.07 5.88 -5148.83 0.00 0.99 0.00 -0.17 1 desert swooper +5382 TATOOINE EGG 0 0 3128.05 7.94 -4645.94 0.00 0.20 0.00 0.98 1 a rill +5383 TATOOINE EGG 0 0 3921.71 89.56 -4322.13 0.00 0.81 0.00 -0.59 1 a scavenger Punk +5384 TATOOINE EGG 0 0 3107.08 7.96 -4846.23 0.00 0.86 0.00 0.52 1 a worrt +5385 TATOOINE EGG 0 0 3717.39 18.84 -5190.76 0.00 0.76 0.00 0.65 1 a scavenger Punk +5386 TATOOINE EGG 0 0 3248.10 5.92 -5204.05 0.00 0.48 0.00 0.88 1 elite desert swooper +5387 TATOOINE EGG 0 0 3246.36 5.65 -5237.05 0.00 -0.16 0.00 0.99 1 elite desert swooper +5388 TATOOINE EGG 0 0 2882.45 15.50 -5076.45 0.00 -0.46 0.00 0.89 1 an escaped criminal +5389 TATOOINE EGG 0 0 3043.00 7.63 -5119.03 0.00 -0.42 0.00 0.91 1 a scavenger Thief +5390 TATOOINE EGG 0 0 3321.61 9.97 -5372.39 0.00 -0.22 0.00 0.98 1 Shinn's mugger +5391 TATOOINE EGG 0 0 3651.21 6.69 -4972.34 0.00 -0.09 0.00 1.00 1 a sewer worrt +5392 TATOOINE EGG 0 0 3490.20 5.00 -4871.47 0.00 -0.52 -0.01 0.86 1 Taibela +5393 TATOOINE EGG 0 0 3457.00 5.00 -4861.00 0.00 0.89 0.00 0.46 1 Beast Trainer +5394 TATOOINE EGG 0 0 3596.75 9.67 -5034.31 0.00 0.91 0.00 -0.41 1 a worrt +5395 TATOOINE EGG 0 0 3526.47 5.00 -4619.67 0.00 0.79 0.00 0.61 1 a male swamp tusk-cat +5396 TATOOINE EGG 0 0 3550.64 5.00 -4933.92 0.00 0.43 0.00 0.90 1 Mos Eisley Policeman Happer +5397 TATOOINE EGG 0 0 3710.40 18.74 -5199.34 0.00 0.14 0.00 0.99 1 a scavenger thug +5398 TATOOINE EGG 0 0 3707.45 5.00 -4612.20 0.00 0.95 0.00 -0.31 1 a tempest rill +5399 TATOOINE EGG 0 0 3094.44 8.51 -4351.80 0.00 0.72 0.00 0.69 1 a water thief +5400 TATOOINE EGG 0 0 3076.14 7.45 -5086.59 0.00 0.41 0.00 0.91 1 a scavenger Punk +5401 TATOOINE EGG 0 0 3253.62 33.74 -4276.56 0.00 -0.23 0.00 0.97 1 a scavenger Thief +5402 TATOOINE EGG 0 0 2924.98 36.16 -4802.26 0.00 0.62 0.00 0.79 1 an error-prone battle droid +5403 TATOOINE EGG 0 0 3323.27 6.57 -5164.53 0.00 0.99 0.00 0.12 1 desert swooper +5404 TATOOINE EGG 0 0 3195.51 8.69 -5226.32 0.00 -0.55 0.00 0.84 1 elite desert swooper +5405 TATOOINE EGG 0 0 3082.07 11.72 -4943.66 0.00 0.83 0.00 0.56 1 a scavenger +5406 TATOOINE EGG 0 0 3212.60 7.64 -5237.44 0.00 -0.34 0.00 0.94 1 elite desert swooper +5407 TATOOINE EGG 0 0 3074.06 8.39 -5117.69 0.00 0.87 0.00 -0.49 1 a scavenger thug +5408 TATOOINE EGG 0 0 3271.67 31.98 -4289.59 0.00 -0.55 0.00 0.83 1 a scavenger thug leader +5409 TATOOINE EGG 0 0 3702.95 19.71 -5183.99 0.00 -0.12 0.00 0.99 1 a scavenger thug +5410 TATOOINE EGG 0 0 3327.84 5.48 -5138.95 0.00 -0.29 0.00 0.96 1 desert swooper +5411 TATOOINE EGG 0 0 3048.90 7.27 -5089.61 0.00 -0.14 0.00 0.99 1 a scavenger Punk +5412 TATOOINE EGG 0 0 3049.70 7.69 -5101.76 0.00 0.65 0.00 0.76 1 a scavenger thug +5413 TATOOINE EGG 0 0 2876.67 14.27 -5106.56 0.00 0.89 0.00 0.46 1 an escaped criminal +5414 TATOOINE EGG 0 0 3295.64 37.38 -4277.14 0.00 0.85 0.00 0.53 1 a scavenger Thief +5425 TATOOINE EGG 0 0 3910.61 89.59 -4318.07 0.00 -0.34 0.00 0.94 1 a scavenger Thief +5426 TATOOINE EGG 0 0 3990.00 5.00 -4806.00 0.00 0.98 0.00 -0.20 1 a Tusken zealot +5427 TATOOINE EGG 0 0 3121.83 6.86 -4872.99 0.00 0.53 0.00 0.85 1 a Sickly Womprat +5428 TATOOINE EGG 0 0 3552.77 5.00 -4935.34 0.00 -0.06 0.00 1.00 1 Stormtrooper Groupleader +5429 TATOOINE EGG 0 0 3306.30 5.49 -5123.51 0.00 -0.08 0.00 1.00 1 desert swooper +5430 TATOOINE EGG 0 0 2888.90 38.56 -4814.63 0.00 0.60 0.00 0.80 1 an error-prone battle droid +5431 TATOOINE EGG 0 0 2794.19 8.22 -5107.30 0.00 0.77 0.00 -0.64 1 an escaped criminal +5432 TATOOINE EGG 0 0 3215.21 5.03 -4995.01 0.00 0.89 0.00 0.46 1 a rockmite +5433 TATOOINE EGG 0 0 3215.99 5.33 -5014.72 0.00 0.86 0.00 -0.51 1 a rill +5434 TATOOINE EGG 0 0 3223.00 10.16 -4450.00 0.00 0.98 0.00 -0.19 1 a carrion kreetle +5435 TATOOINE EGG 0 0 2818.69 10.65 -5128.48 0.00 -0.69 0.00 0.72 1 an escaped criminal +5436 TATOOINE EGG 0 0 3300.00 5.10 -5080.00 0.00 0.74 0.00 0.67 1 a city sewer Swamprat +5437 TATOOINE EGG 0 0 4021.00 5.00 -4804.00 0.00 0.90 0.00 -0.43 1 a Tusken zealot +5438 TATOOINE EGG 0 0 2843.00 6.76 -5101.85 0.00 -0.31 0.00 0.95 1 an escaped criminal +5439 TATOOINE EGG 0 0 3147.34 5.05 -4793.69 0.00 -0.55 0.00 0.84 1 a swoop gang rogue +5440 TATOOINE EGG 0 0 4068.67 5.00 -4757.71 0.00 0.99 0.00 -0.14 1 a Tusken zealot +5441 TATOOINE EGG 0 0 3391.05 9.27 -5306.11 0.00 0.00 0.00 1.00 1 Shinn's mugger +5442 TATOOINE EGG 0 0 3258.90 30.08 -4300.98 0.00 -0.56 0.00 0.83 1 a scavenger thug +5443 TATOOINE EGG 0 0 3963.05 83.05 -4315.42 0.00 0.99 0.00 0.14 1 a scavenger Punk +5444 TATOOINE EGG 0 0 3240.32 9.20 -4455.41 0.00 0.97 0.00 -0.22 1 a city sewer Swamprat +5445 TATOOINE EGG 0 0 3227.47 6.72 -5226.39 0.00 0.09 0.00 1.00 1 desert swooper leader +5446 TATOOINE EGG 0 0 3265.65 5.00 -4819.24 0.00 0.95 0.00 -0.30 1 a Collector +5447 TATOOINE EGG 0 0 3952.32 81.33 -4336.24 0.00 0.82 0.00 0.58 1 a scavenger thug +5448 TATOOINE EGG 0 0 3735.08 5.00 -4650.37 0.00 -0.35 0.00 0.94 1 a city Rockmite +5449 TATOOINE EGG 0 0 3161.34 5.47 -4963.90 0.00 0.74 0.00 0.68 1 a tame Worrt +5450 TATOOINE EGG 0 0 3562.72 5.00 -4938.80 0.00 0.92 0.00 0.39 1 Bib Fortuna +5451 TATOOINE EGG 0 0 3533.14 5.01 -4788.86 0.00 -0.69 0.00 0.72 1 a profession counselor +5452 TATOOINE EGG 0 0 3954.37 83.47 -4307.00 0.00 0.32 0.00 0.95 1 a scavenger thug +5453 TATOOINE EGG 0 0 3069.35 8.15 -5102.53 0.00 -0.49 0.00 0.87 1 a scavenger thug leader +5454 TATOOINE EGG 0 0 2856.98 13.27 -5095.82 0.00 0.62 0.00 0.78 1 an escaped criminal +5455 TATOOINE EGG 0 0 3713.31 22.47 -5167.25 0.00 0.26 0.00 0.96 1 a scavenger Punk +5456 TATOOINE EGG 0 0 3392.19 7.44 -5359.13 0.00 -0.43 0.00 0.90 1 Shinn's mugger +5457 TATOOINE EGG 0 0 3341.86 9.41 -5343.94 0.00 -0.28 0.00 0.96 1 Shinn's mugger +5458 TATOOINE EGG 0 0 2891.80 38.79 -4791.32 0.00 0.03 0.00 1.00 1 an error-prone battle droid +5459 TATOOINE EGG 0 0 3127.24 6.73 -4755.94 0.00 -0.19 0.00 0.98 1 a tame Worrt +5460 TATOOINE EGG 0 0 3324.68 5.20 -5116.11 0.00 0.34 0.00 0.94 1 desert swooper +5461 TATOOINE EGG 0 0 3943.46 85.14 -4333.32 0.00 0.99 0.00 -0.17 1 a scavenger Punk +5462 TATOOINE EGG 0 0 2840.07 41.39 -4804.57 0.00 1.00 0.00 0.07 1 an error-prone battle droid +5463 TATOOINE EGG 0 0 3127.00 6.27 -4855.00 0.00 0.75 0.00 -0.66 1 a tame Womprat +5464 TATOOINE EGG 0 0 4019.00 5.00 -4764.00 0.00 0.78 0.00 -0.63 1 a Tusken zealot +5465 TATOOINE EGG 0 0 3280.89 5.24 -5077.63 0.00 0.99 0.00 0.16 1 a vicious Rill +5466 TATOOINE EGG 0 0 3318.71 5.49 -5129.39 0.00 0.15 0.00 0.99 1 desert swooper +5467 TATOOINE EGG 0 0 3540.82 5.71 -5058.67 0.00 0.80 0.00 0.59 1 a desert kreetle +5468 TATOOINE EGG 0 0 2870.48 34.51 -4778.94 0.00 -0.57 0.00 0.82 1 an error-prone battle droid +5469 TATOOINE EGG 0 0 3070.39 7.90 -4350.80 0.00 -0.24 0.00 0.97 1 a water thief +5470 TATOOINE EGG 0 0 3079.82 6.89 -4370.53 0.00 -0.25 0.00 0.97 1 a water thief +5471 TATOOINE EGG 0 0 3057.86 8.22 -5116.91 0.00 0.17 0.00 0.98 1 a scavenger thug +5472 TATOOINE EGG 0 0 3123.54 6.50 -4786.25 0.00 -0.02 0.00 1.00 1 a vicious Rill +5473 TATOOINE EGG 0 0 3092.53 0.22 -4397.44 0.00 0.70 0.00 0.72 1 a water thief +5474 TATOOINE EGG 0 0 2866.79 33.05 -4881.06 0.00 0.96 0.00 0.28 1 an error-prone battle droid +5475 TATOOINE EGG 0 0 3400.58 6.89 -5472.00 0.00 0.03 0.00 1.00 1 Shinn's guard +5476 TATOOINE EGG 0 0 3221.45 11.81 -4437.17 0.00 0.96 0.00 0.29 1 a vicious Rill +5477 TATOOINE EGG 0 0 3295.29 35.98 -4297.83 0.00 0.45 0.00 0.89 1 a scavenger thug +5478 TATOOINE EGG 0 0 3063.50 7.17 -5085.39 0.00 0.01 0.00 1.00 1 a scavenger thug +5479 TATOOINE EGG 0 0 3081.80 8.09 -5098.30 0.00 0.93 0.00 0.37 1 a scavenger thug +5480 TATOOINE EGG 0 0 3963.05 82.05 -4327.85 0.00 0.97 0.00 0.25 1 a scavenger Thief +5481 TATOOINE EGG 0 0 3278.69 36.50 -4273.95 0.00 -0.56 0.00 0.83 1 a scavenger thug +5482 TATOOINE EGG 0 0 3467.00 5.00 -5030.00 0.00 -0.42 0.00 0.91 1 Kaden +5483 TATOOINE EGG 0 0 2842.06 13.05 -5133.31 0.00 0.64 0.00 0.77 1 an escaped criminal +5484 TATOOINE EGG 0 0 3282.28 34.01 -4290.37 0.00 0.30 0.00 0.95 1 a scavenger Punk +5485 TATOOINE EGG 0 0 3943.82 85.97 -4316.98 0.00 -0.42 0.00 0.91 1 a scavenger thug leader +5486 TATOOINE EGG 0 0 3157.49 5.00 -4831.77 0.00 -0.48 0.00 0.88 1 a scavenger Thief +5487 TATOOINE EGG 0 0 3710.43 18.67 -5216.57 0.00 1.00 0.00 0.04 1 a Gunrunner +5488 TATOOINE EGG 0 0 2811.27 7.12 -4297.43 0.00 0.72 0.00 -0.69 1 a lesser desert womp rat +5489 TATOOINE EGG 0 0 3430.14 5.01 -5140.44 0.00 0.99 0.00 0.15 1 Shinn's mugger +5490 TATOOINE EGG 0 0 3353.56 10.22 -5324.13 0.00 0.06 0.00 1.00 1 a worrt +5491 TATOOINE EGG 0 0 3586.00 11.94 -5058.00 0.00 -0.65 0.00 0.76 1 elite desert swooper +5492 TATOOINE EGG 0 0 3213.95 6.46 -5202.53 0.00 0.46 0.00 0.89 1 Shinn's mugger +5493 TATOOINE EGG 0 0 3309.80 9.97 -5343.80 0.00 -0.13 0.00 0.99 1 a minor worrt +5494 TATOOINE EGG 0 0 3762.00 5.00 -4901.00 0.00 -0.40 0.00 0.92 1 a scavenger Punk +5495 TATOOINE EGG 0 0 3252.04 29.61 -4292.70 0.00 0.79 0.00 -0.61 1 Kaleb +5496 TATOOINE EGG 0 0 3216.90 5.00 -4610.20 0.00 1.00 0.00 -0.10 1 a scavenger guard +5497 TATOOINE EGG 0 0 3147.06 7.11 -5039.38 0.00 0.68 0.00 0.73 1 Shinn's guard +5498 TATOOINE EGG 0 0 3357.83 6.93 -5388.91 0.00 0.01 0.00 1.00 1 a city sewer Swamprat +5499 TATOOINE EGG 0 0 3688.94 5.30 -4947.02 0.00 0.94 0.00 -0.34 1 a scavenger thug +5500 TATOOINE EGG 0 0 3914.62 83.20 -4304.40 0.00 0.98 0.00 -0.21 1 a scavenger +5501 TATOOINE EGG 0 0 3104.53 9.27 -4948.93 0.00 -0.23 0.00 0.97 1 Shinn's guard +5502 TATOOINE EGG 0 0 3445.58 9.99 -5489.89 0.00 0.78 0.00 0.63 1 a runted Rill +5503 TATOOINE EGG 0 0 3160.78 5.43 -4943.38 0.00 -0.61 0.00 0.79 1 a scavenger Punk +5504 TATOOINE EGG 0 0 3061.59 7.49 -5133.12 0.00 0.97 0.00 -0.24 1 an Unknown Lab Assistant +5505 TATOOINE EGG 0 0 3552.76 5.00 -4933.22 0.00 0.90 0.00 -0.43 1 a Tusken zealot +5506 TATOOINE EGG 0 0 4076.09 5.00 -4816.24 0.00 -0.23 0.00 0.97 1 a city sewer Swamprat +5507 TATOOINE EGG 0 0 3786.21 5.00 -4909.16 0.00 0.88 0.00 0.48 1 a scavenger Thief +5508 TATOOINE EGG 0 0 3260.71 31.10 -4315.78 0.00 0.96 0.00 -0.28 1 an error-prone battle droid +5509 TATOOINE EGG 0 0 2813.83 36.56 -4795.31 0.00 0.77 0.00 -0.64 1 a Tusken zealot +5510 TATOOINE EGG 0 0 3142.00 5.30 -4638.00 0.00 0.76 0.00 -0.65 1 a worrt +5511 TATOOINE EGG 0 0 4094.31 5.16 -4744.51 0.00 0.68 0.00 0.73 1 a Tusken zealot +5512 TATOOINE EGG 0 0 3417.00 5.67 -5151.00 0.00 0.98 0.00 -0.20 1 a minor worrt +5513 TATOOINE EGG 0 0 3490.58 5.00 -4778.20 0.00 0.90 0.00 0.44 1 Matilda Carson (Painting Allocation Engineer) +5514 TATOOINE EGG 0 0 3675.68 7.99 -4968.87 0.00 0.98 0.00 -0.19 1 a vicious Rill +5515 TATOOINE EGG 0 0 3094.14 7.12 -5089.35 0.00 0.69 0.00 0.73 1 a scavenger Thief +5516 TATOOINE EGG 0 0 3412.36 7.93 -5473.76 0.00 -0.62 0.00 0.79 1 Sleash +5517 TATOOINE EGG 0 0 3999.00 5.00 -4853.00 0.00 0.01 0.00 1.00 1 a Tusken zealot +5518 TATOOINE EGG 0 0 3930.35 83.37 -4311.12 0.00 0.88 0.00 0.48 1 a scavenger thug +5519 TATOOINE EGG 0 0 3421.48 8.65 -5505.83 0.00 0.99 0.00 0.11 1 Shinn's guard +5520 TATOOINE EGG 0 0 3274.86 31.87 -4305.59 0.00 0.58 0.00 0.81 1 a scavenger thug +5521 TATOOINE EGG 0 0 3388.50 6.73 -5337.52 0.00 -0.12 0.00 0.99 1 Shinn's mugger +5522 TATOOINE EGG 0 0 2863.97 38.87 -4848.79 0.00 -0.57 0.00 0.82 1 an error-prone battle droid +5523 TATOOINE EGG 0 0 3730.05 21.51 -5168.57 0.00 -0.16 0.00 0.99 1 a scavenger Thief +5524 TATOOINE EGG 0 0 3198.72 5.00 -4671.55 0.00 0.97 0.00 -0.23 1 a scavenger thug +5525 TATOOINE EGG 0 0 3933.89 85.02 -4328.16 0.00 0.51 0.00 0.86 1 an escaped criminal +5526 TATOOINE EGG 0 0 3376.65 51.49 -4273.77 0.00 0.96 0.00 -0.28 1 a tempest rill +5527 TATOOINE EGG 0 0 3352.89 48.83 -4315.18 0.00 1.00 0.00 0.03 1 a tempest rill +5528 TATOOINE EGG 0 0 3113.69 7.40 -4970.65 0.00 1.00 0.00 0.09 1 a scavenger +5529 TATOOINE EGG 0 0 3370.03 8.27 -5355.43 0.00 -0.51 0.00 0.86 1 Shinn's mugger +5530 TATOOINE EGG 0 0 3711.78 5.00 -4637.87 0.00 -0.24 0.00 0.97 1 a rockmite +5531 TATOOINE EGG 0 0 3183.38 5.00 -4719.76 0.00 0.77 0.00 0.64 1 a swoop gang thug +5532 TATOOINE EGG 0 0 3410.56 5.01 -5132.08 0.00 1.00 0.00 -0.04 1 a worrt +5533 TATOOINE EGG 0 0 2828.23 8.32 -4270.81 0.00 0.97 0.00 -0.25 1 a gunrunner sentry +5534 TATOOINE EGG 0 0 3262.90 32.28 -4281.16 0.00 0.96 0.00 0.27 1 a scavenger thug +5537 TATOOINE EGG 0 0 3117.97 1.57 -4381.00 0.00 0.91 0.00 0.41 1 a water thief +5538 TATOOINE EGG 0 0 3684.00 5.00 -4645.00 0.00 0.21 0.00 0.98 1 a rill +5539 TATOOINE EGG 0 0 3223.11 6.28 -5253.82 0.00 0.89 0.00 -0.45 1 elite desert swooper +5540 TATOOINE EGG 0 0 3422.75 7.63 -5461.61 0.00 -0.03 0.00 1.00 1 Shinn's guard +5541 TATOOINE EGG 0 0 2774.16 8.73 -4325.56 0.00 0.97 0.00 -0.25 1 a Gunrunner +5542 TATOOINE EGG 0 0 3130.36 6.58 -4942.45 0.00 0.63 0.00 0.77 1 a scavenger +5543 TATOOINE EGG 0 0 4046.19 5.00 -4766.07 0.00 0.81 0.00 0.58 1 a Tusken zealot +5544 TATOOINE EGG 0 0 3718.23 19.75 -5180.99 0.00 0.99 0.00 -0.16 1 a scavenger thug leader +5545 TATOOINE EGG 0 0 3123.78 6.17 -4833.80 0.00 0.83 0.00 0.55 1 a desert kreetle +5546 TATOOINE EGG 0 0 3443.22 9.11 -5461.78 0.00 -0.51 0.00 0.86 1 Shinn's guard +5547 TATOOINE EGG 0 0 3281.52 35.11 -4316.91 0.00 1.00 0.00 -0.04 1 a scavenger Punk +5548 TATOOINE EGG 0 0 3348.49 47.83 -4285.23 0.00 1.00 0.00 -0.02 1 a tempest rill +5549 TATOOINE EGG 0 0 2838.08 10.39 -4248.21 0.00 0.90 0.00 0.44 1 a Gunrunner +5550 TATOOINE EGG 0 0 3280.12 5.66 -5141.01 0.00 -0.31 0.00 0.95 1 desert swooper +5551 TATOOINE EGG 0 0 3060.03 9.75 -4938.54 0.00 0.74 0.00 -0.67 1 a scavenger +5552 TATOOINE EGG 0 0 3166.16 5.00 -4739.31 0.00 -0.09 0.00 1.00 1 a swoop gang rogue +5553 TATOOINE EGG 0 0 3711.50 5.00 -4663.98 0.00 0.84 0.00 -0.54 1 a rockmite +5554 TATOOINE EGG 0 0 3731.63 15.95 -4185.20 0.00 -0.07 0.00 1.00 1 a White Thranta security guard +5555 TATOOINE EGG 0 0 3786.76 5.48 -4929.00 0.00 0.83 0.00 -0.56 1 a rockmite +5556 TATOOINE EGG 0 0 2849.05 11.77 -5069.29 0.00 -0.12 0.00 0.99 1 an escaped criminal +5557 TATOOINE EGG 0 0 3483.87 5.00 -4786.94 0.00 0.89 0.00 0.45 1 Navari Trik (Painting Distribution Specialist) +5558 TATOOINE EGG 0 0 2837.46 41.75 -4838.16 0.00 0.90 0.00 0.45 1 an error-prone battle droid +5559 TATOOINE EGG 0 0 3387.07 10.72 -5503.09 0.00 -0.01 0.00 1.00 1 Shinn's guard +5560 TATOOINE EGG 0 0 3734.48 20.27 -5184.78 0.00 0.55 0.00 0.83 1 a scavenger thug +5561 TATOOINE EGG 0 0 3190.97 5.00 -4818.86 0.00 0.95 0.00 -0.33 1 a swoop gang rogue +5562 TATOOINE EGG 0 0 3185.63 7.53 -5050.39 0.00 -0.48 0.00 0.88 1 a scavenger guard +5563 TATOOINE EGG 0 0 2870.79 39.09 -4816.73 0.00 0.78 0.00 0.63 1 an error-prone battle droid +5564 TATOOINE EGG 0 0 3052.92 5.28 -4385.36 0.00 0.87 0.00 -0.49 1 a water thief +5565 TATOOINE EGG 0 0 3733.04 19.99 -5200.18 0.00 0.99 0.00 -0.12 1 a scavenger thug +5566 TATOOINE EGG 0 0 3719.78 18.68 -5208.16 0.00 -0.01 0.00 1.00 1 a scavenger thug +5567 TATOOINE EGG 0 0 3938.60 79.86 -4297.78 0.00 -0.46 0.00 0.89 1 a scavenger thug +5568 TATOOINE EGG 0 0 2782.94 7.39 -4286.00 0.00 -0.30 0.00 0.96 1 a gunrunner sentry +5569 TATOOINE EGG 0 0 3683.80 5.00 -4623.96 0.00 0.75 0.00 -0.66 1 a rockmite +5570 TATOOINE EGG 0 0 3101.49 10.00 -4928.35 0.00 0.84 0.00 0.55 1 a scavenger +5571 TATOOINE EGG 0 0 2850.29 7.78 -4284.55 0.00 0.96 0.00 0.27 1 a Gunrunner +5572 TATOOINE EGG 0 0 3196.79 5.42 -5007.40 0.00 0.98 0.00 0.20 1 a Tame Rill +5573 TATOOINE EGG 0 0 3701.53 18.22 -5204.10 0.00 0.84 0.00 -0.55 1 a scavenger Punk +5574 TATOOINE EGG 0 0 4049.00 5.00 -4799.00 0.00 1.00 0.00 0.01 1 a Tusken zealot +5575 TATOOINE EGG 0 0 2791.91 8.64 -4251.41 0.00 0.21 0.00 0.98 1 a gunrunner sentry +5576 TATOOINE EGG 0 0 2873.78 14.27 -5137.21 0.00 -0.50 0.00 0.86 1 an escaped criminal +5577 TATOOINE EGG 0 0 3739.00 19.89 -5210.58 0.00 0.75 0.00 0.66 1 a scavenger Thief +5578 TATOOINE EGG 0 0 2822.10 7.27 -4333.19 0.00 1.00 0.00 -0.03 1 a Gunrunner +5579 TATOOINE EGG 0 0 3931.36 92.08 -4341.56 0.00 0.86 0.00 -0.51 1 a scavenger Thief +5580 TATOOINE EGG 0 0 3477.65 5.00 -4846.09 0.00 1.00 0.00 0.07 1 a White Thranta security guard +5581 TATOOINE EGG 0 0 3386.44 5.00 -4792.40 0.00 0.17 0.00 0.98 1 Muna Skish +5582 TATOOINE EGG 0 0 3309.38 5.00 -4785.07 0.00 0.90 0.00 0.44 1 Lurval +5583 TATOOINE EGG 0 0 3520.70 5.00 -4822.18 0.00 0.18 0.00 0.98 1 Gendra +5584 TATOOINE EGG 0 0 2952.88 7.21 -4584.90 0.00 0.56 0.00 0.83 1 Vourk ver'Zremp +5585 TATOOINE EGG 0 0 2945.39 7.21 -4579.32 0.00 0.74 0.00 0.68 1 a Gunrunner +5586 TATOOINE EGG 0 0 2966.39 7.21 -4589.07 0.00 0.77 0.00 -0.63 1 a Gunrunner +5587 TATOOINE EGG 0 0 3186.23 5.00 -4781.31 0.00 0.92 0.00 -0.39 1 a Dune Stalker +5588 TATOOINE EGG 0 0 3183.17 5.00 -4774.70 0.00 0.94 0.00 -0.33 1 Jano Bix +5589 TATOOINE EGG 0 0 3185.28 5.00 -4771.46 0.00 0.95 0.00 -0.32 1 a swoop gang enforcer +5590 TATOOINE EGG 0 0 3189.33 5.00 -4796.02 0.00 1.00 0.00 -0.08 1 a swoop gang rogue +5591 TATOOINE EGG 0 0 3164.79 5.00 -4775.43 0.00 0.28 0.00 0.96 1 a swoop gang rogue +5592 TATOOINE EGG 0 0 3721.19 16.53 -4223.59 0.00 1.00 0.00 0.01 1 a White Thranta security guard +5593 TATOOINE EGG 0 0 3751.77 16.52 -4196.42 0.00 0.79 0.00 0.62 1 a White Thranta security guard +5633 TATOOINE EGG 0 0 2757.94 7.01 -4570.06 0.00 0.72 0.00 0.69 1 Toggi Bok +5634 TATOOINE EGG 0 0 3670.25 5.00 -4890.07 0.00 0.97 0.00 -0.25 1 Tori Radeen +5635 TATOOINE EGG 0 0 3619.45 5.00 -4711.25 0.00 0.32 0.00 0.95 1 Reimos Taligg +5636 TATOOINE EGG 0 0 3521.60 5.00 -4683.34 0.00 1.00 0.00 0.03 1 Dunir Signos +5637 TATOOINE EGG 0 0 3450.00 5.00 -5077.00 0.00 0.12 0.00 0.99 1 Nogri Hessen +5638 TATOOINE EGG 0 0 3260.96 5.00 -4861.56 0.00 0.12 0.00 0.99 1 Drixa Dreul +5639 TATOOINE EGG 0 0 3366.12 5.00 -4639.32 0.00 -0.66 0.00 0.75 1 Byxle Pedette +5640 TATOOINE EGG 0 0 3506.00 5.00 -4795.00 0.00 0.91 0.00 0.41 1 Niko Brehe +5641 TATOOINE EGG 0 0 2941.74 13.45 -4931.31 0.00 0.98 0.00 0.18 1 a Jawa engineer +5642 TATOOINE EGG 0 0 3223.38 5.00 -4679.78 0.00 0.96 0.00 -0.29 1 K' Cur +5643 TATOOINE EGG 0 0 3201.15 5.00 -4646.64 0.00 -0.20 0.00 0.98 1 Larit +5644 TATOOINE EGG 0 0 3196.36 5.00 -4647.71 0.00 0.45 0.00 0.89 1 Moa +5645 TATOOINE EGG 0 0 3327.81 5.00 -4604.06 0.00 0.72 0.00 0.69 1 Baboo +5646 TATOOINE EGG 0 0 3088.12 55.69 -4186.15 -0.05 0.95 -0.15 0.27 1 Keela +5647 TATOOINE EGG 0 0 3330.12 5.00 -4861.02 0.00 -0.62 0.00 0.78 1 Labria +5663 TATOOINE EGG 0 0 3535.11 65.05 -2509.88 0.00 0.33 0.00 0.94 1 Valarian's Pod Racer +5664 TATOOINE EGG 0 0 3527.12 69.03 -2522.36 0.00 0.90 0.00 0.44 1 Valarian's Pod Racer +5665 TATOOINE EGG 0 0 3580.53 56.17 -2549.70 0.00 0.79 0.00 0.62 1 Valarian's Pod Racer +5666 TATOOINE EGG 0 0 3589.21 55.15 -2515.74 0.00 -0.11 0.00 0.99 1 Valarian Crew Chief +5667 TATOOINE EGG 0 0 3577.99 54.46 -2491.57 0.00 -0.38 0.00 0.93 1 Valarian's Mechanic +5668 TATOOINE EGG 0 0 3545.91 54.56 -2464.14 0.00 -0.51 0.00 0.86 1 Valarian Crew Chief +5669 TATOOINE EGG 0 0 3527.95 63.61 -2477.50 0.00 1.00 0.00 -0.02 1 Valarian's Mechanic +5670 TATOOINE EGG 0 0 3949.82 8.93 2417.74 0.00 0.59 0.01 0.81 1 Meatlump Donk (Outpost Guard) +5671 TATOOINE EGG 0 0 3796.77 11.67 2406.15 0.00 -0.47 0.00 0.88 1 Jubai Laetlii +5672 TATOOINE EGG 0 0 3838.01 16.10 2334.56 0.00 0.98 0.00 -0.18 1 Kara +5673 TATOOINE EGG 0 0 3976.65 10.55 2417.68 0.00 -0.47 0.01 0.88 1 Meatlump Donk (Outpost Guard) +5674 TATOOINE EGG 0 0 3818.27 15.96 2386.27 0.00 0.56 0.00 0.83 1 Jubai Laetlii +5675 TATOOINE EGG 0 0 3808.42 14.31 2397.29 0.00 -0.25 0.00 0.97 1 Eyan McDermitt +5676 TATOOINE EGG 0 0 3960.05 10.90 2405.57 0.00 0.76 0.01 0.65 1 Meatlump Dunder (Outpost Guard) +5677 TATOOINE EGG 0 0 3809.44 13.99 2403.86 0.00 1.00 0.00 -0.07 1 Jubai Laetlii +5680 TATOOINE EGG 0 0 3775.01 9.11 2373.98 0.00 0.97 0.00 -0.25 1 Kerhi hi-Lak +5681 TATOOINE EGG 0 0 3820.80 16.37 2387.34 0.00 0.87 0.00 -0.50 1 Jubai Laetlii +5682 TATOOINE EGG 0 0 3797.51 12.06 2385.96 0.00 0.98 0.00 0.22 1 Jubai Laetlii +5683 TATOOINE EGG 0 0 3823.38 15.45 2413.95 0.00 0.56 0.00 0.83 1 Jubai Laetlii +5684 TATOOINE EGG 0 0 4270.00 46.50 -6996.00 0.00 0.99 0.00 -0.14 1 a wild zucca boar +5685 TATOOINE EGG 0 0 4313.43 57.95 -7010.27 0.00 0.81 0.00 0.58 1 a wild zucca boar +5686 TATOOINE EGG 0 0 5651.06 179.98 -5726.82 0.00 0.82 0.00 0.57 1 a sand slum pirate +5687 TATOOINE EGG 0 0 4192.00 6.77 -4684.19 0.00 0.73 0.00 0.69 1 Tusken Raider Soldier +5688 TATOOINE EGG 0 0 4172.44 5.70 -4654.37 0.00 -0.02 0.00 1.00 1 Tusken Raider Soldier +5689 TATOOINE EGG 0 0 5644.58 180.00 -5750.43 0.00 -0.20 0.00 0.98 1 a sand slum pirate +5690 TATOOINE EGG 0 0 4291.73 9.45 -4775.73 0.00 0.61 0.00 0.79 1 Tusken Raider Warrior +5691 TATOOINE EGG 0 0 5691.02 180.00 -5749.36 0.00 0.84 0.00 0.54 1 a sand slum pirate +5692 TATOOINE EGG 0 0 5665.38 180.00 -5742.75 0.00 -0.15 0.00 0.99 1 a sand slum pirate +5693 TATOOINE EGG 0 0 4229.05 20.81 -4834.05 0.00 0.89 0.00 0.45 1 Tusken Raider Soldier +5694 TATOOINE EGG 0 0 4162.55 8.94 -4782.22 0.00 0.98 0.00 0.17 1 Tusken Raider Soldier +5695 TATOOINE EGG 0 0 4179.57 9.05 -4718.48 0.00 0.95 0.00 0.30 1 Tusken Raider Soldier +5696 TATOOINE EGG 0 0 4153.39 8.78 -4728.05 0.00 1.00 0.00 0.03 1 Tusken Raider Soldier +5697 TATOOINE EGG 0 0 4222.40 13.85 -4805.05 0.00 0.16 0.00 0.99 1 Tusken Raider Soldier +5698 TATOOINE EGG 0 0 4103.56 13.28 -4631.02 0.00 0.01 0.00 1.00 1 Tusken Raider Soldier +5699 TATOOINE EGG 0 0 4289.72 9.28 -4732.02 0.00 -0.30 0.00 0.95 1 Tusken Raider Soldier +5700 TATOOINE EGG 0 0 5666.89 180.00 -5704.34 0.00 1.00 0.00 0.02 1 a sand slum pirate +5701 TATOOINE EGG 0 0 4185.57 9.11 -4776.12 0.00 0.80 0.00 0.60 1 Tusken Raider Soldier +5702 TATOOINE EGG 0 0 4152.18 6.73 -4674.23 0.00 0.13 0.00 0.99 1 Tusken Raider Soldier +5703 TATOOINE EGG 0 0 4291.62 11.47 -4709.63 0.00 0.56 0.00 0.83 1 Tusken Raider Warrior +5704 TATOOINE EGG 0 0 4265.33 14.97 -4647.14 0.00 0.28 0.00 0.96 1 Tusken Raider Warrior +5705 TATOOINE EGG 0 0 4220.71 10.68 -4758.58 0.00 0.02 0.00 1.00 1 Tusken Raider Soldier +5706 TATOOINE EGG 0 0 5675.75 180.00 -5735.25 0.00 -0.51 0.00 0.86 1 a sand slum pirate +5707 TATOOINE EGG 0 0 4303.99 9.28 -4751.58 0.00 -0.62 0.00 0.78 1 Tusken Raider Warrior +5708 TATOOINE EGG 0 0 4196.95 15.82 -4558.69 0.00 0.53 0.00 0.85 1 Tusken Raider Warrior +5709 TATOOINE EGG 0 0 5680.57 180.00 -5725.54 0.00 0.88 0.00 -0.48 1 a sand slum pirate +5718 TATOOINE EGG 0 0 4234.45 8.75 2490.13 0.00 -0.37 0.00 0.93 1 a Tusken guard +5719 TATOOINE EGG 0 0 4292.82 7.96 2512.67 0.00 0.78 0.00 -0.62 1 a Tusken Executioner +5720 TATOOINE EGG 0 0 7258.00 57.24 1341.00 0.00 0.66 0.00 0.75 1 an Elite Dragonet +5721 TATOOINE EGG 0 0 7280.85 54.98 1299.60 0.00 1.00 0.00 0.08 1 an Elite Dragonet +5722 TATOOINE EGG 0 0 7177.11 40.02 1376.95 0.00 -0.41 0.00 0.91 1 an Elite Dragonet +5723 TATOOINE EGG 0 0 7023.75 109.33 2417.06 0.00 0.86 0.00 0.52 1 a moisture farmer +5724 TATOOINE EGG 0 0 7016.89 96.15 2510.94 0.00 0.76 0.00 0.65 1 a Tusken warrior +5725 TATOOINE EGG 0 0 7047.34 98.11 2535.31 0.00 0.97 0.00 -0.26 1 a Tusken warrior +5726 TATOOINE EGG 0 0 7051.31 93.04 2496.84 0.00 -0.21 0.00 0.98 1 a Tusken warrior +5727 TATOOINE EGG 0 0 7028.78 97.88 2486.42 0.00 0.11 0.00 0.99 1 a Tusken warrior +5728 TATOOINE EGG 0 0 7054.37 92.70 2510.26 0.00 0.71 0.00 -0.70 1 a Tusken warlord +5729 TATOOINE EGG 0 0 7032.76 90.06 2500.25 0.00 1.00 0.00 -0.04 1 a Tusken warlord +5730 TATOOINE EGG 0 0 7030.00 89.27 2512.42 0.00 -0.59 0.00 0.81 1 a Tusken Witch Doctor +5731 TATOOINE EGG 0 0 6985.46 14.63 4368.01 0.00 0.85 0.00 -0.53 1 a krayt dragon ancient +5732 TATOOINE EGG 0 0 7484.33 8.10 4483.69 0.00 0.65 0.00 0.76 1 a krayt dragon ancient +5733 TATOOINE EGG 0 0 7090.19 95.62 7118.49 0.00 0.44 0.00 0.90 1 an adolescent krayt dragon +5734 TATOOINE EGG 0 0 7070.65 96.90 7139.95 0.00 0.61 0.00 0.79 1 a grand krayt dragon +5735 TATOOINE EGG 0 0 7049.93 97.48 7128.75 0.00 0.91 0.00 -0.42 1 an elder zucca boar +5736 TATOOINE EGG 0 0 7113.17 89.96 7108.23 0.00 -0.48 0.00 0.88 1 an elder zucca boar +5864 TATOOINE EGG 0 0 -7171.44 41.24 -2400.29 0.00 0.00 0.00 0.00 1 a rancher +5865 TATOOINE EGG 0 0 -2709.17 5.00 2180.03 0.00 0.00 0.00 0.00 1 a commoner +5866 TATOOINE EGG 0 0 -4821.32 26.39 6529.91 0.00 0.00 0.00 0.00 1 a Tusken bantha +5867 TATOOINE EGG 0 0 -5799.21 54.34 5405.51 0.00 0.00 0.00 0.00 1 a giant sand beetle +5868 TATOOINE EGG 0 0 -4690.96 30.69 5460.41 0.00 0.00 0.00 0.00 1 an Alkhara bandit +5869 TATOOINE EGG 0 0 -4466.80 32.98 5785.67 0.00 0.00 0.00 0.00 1 Valarian's assassin +5870 TATOOINE EGG 0 0 -4471.55 33.18 5781.62 0.00 0.00 0.00 0.00 1 an IG assassin droid +5871 TATOOINE EGG 0 0 -6206.75 34.46 5060.16 0.00 0.00 0.00 0.00 1 a giant sand beetle +5872 TATOOINE EGG 0 0 -6110.19 190.25 3965.17 0.00 0.00 0.00 0.00 1 a Desert Demon leader +5873 TATOOINE EGG 0 0 -6109.86 191.22 3971.77 0.00 0.00 0.00 0.00 1 a Desert Demon bodyguard +5874 TATOOINE EGG 0 0 -4880.16 94.77 2950.27 0.00 0.00 0.00 0.00 1 a spice fiend +5875 TATOOINE EGG 0 0 -6893.89 68.80 1514.35 0.00 0.00 0.00 0.00 1 a Pathfinder +5876 TATOOINE EGG 0 0 -4937.15 10.07 1264.48 0.00 0.00 0.00 0.00 1 a pirate leader +5877 TATOOINE EGG 0 0 -4927.66 10.35 1254.26 0.00 0.00 0.00 0.00 1 a pirate +5878 TATOOINE EGG 0 0 -5783.99 27.06 -560.96 0.00 0.00 0.00 0.00 1 a smuggler +5879 TATOOINE EGG 0 0 -4936.55 29.76 -5552.88 0.00 0.00 0.00 0.00 1 a mountain squill +5880 TATOOINE EGG 0 0 -6712.83 49.27 -5664.82 0.00 0.00 0.00 0.00 1 a thug +5881 TATOOINE EGG 0 0 -3982.58 16.89 -3056.33 0.00 0.00 0.00 0.00 1 Jabba's assassin +5882 TATOOINE EGG 0 0 -3326.99 7.51 -3719.56 0.00 0.00 0.00 0.00 1 an assassin +5883 TATOOINE EGG 0 0 -1630.38 0.00 -5582.63 0.00 0.00 0.00 0.00 1 a bocatt +5884 TATOOINE EGG 0 0 -3734.98 8.63 -6811.96 0.00 0.00 0.00 0.00 1 a Weequay thug +5885 TATOOINE EGG 0 0 -860.14 9.27 -1228.67 0.00 0.00 0.00 0.00 1 an Alkhara bandit +5886 TATOOINE EGG 0 0 -2607.75 8.70 -2291.55 0.00 0.00 0.00 0.00 1 a Dim-U abbot +5887 TATOOINE EGG 0 0 -2667.49 22.64 -410.87 0.00 0.00 0.00 0.00 1 Valarian's assassin +5888 TATOOINE EGG 0 0 -2129.26 6.58 674.39 0.00 0.00 0.00 0.00 1 a thief +5889 TATOOINE EGG 0 0 -3164.96 9.35 3630.87 0.00 0.00 0.00 0.00 1 a rancher +5890 TATOOINE EGG 0 0 -1263.96 10.08 5463.37 0.00 0.00 0.00 0.00 1 an Alkhara bandit +5891 TATOOINE EGG 0 0 3383.32 6.70 -6588.55 0.00 0.00 0.00 0.00 1 a grizzled dewback +5892 TATOOINE EGG 0 0 2201.12 0.00 -4458.39 0.00 0.00 0.00 0.00 1 a rancher +5893 TATOOINE EGG 0 0 5944.55 180.00 -3827.78 0.00 0.00 0.00 0.00 1 a Jawa engineer +5894 TATOOINE EGG 0 0 5676.19 180.00 -5767.41 0.00 0.00 0.00 0.00 1 a Jawa thief +5895 TATOOINE EGG 0 0 7032.81 67.65 7037.74 0.00 0.00 0.00 0.00 1 a bounty hunter +5896 TATOOINE EGG 0 0 6400.65 64.99 185.72 0.00 0.00 0.00 0.00 1 a mountain squill +5897 TATOOINE EGG 0 0 5453.05 27.12 2144.59 0.00 0.00 0.00 0.00 1 a Dim-U abbot +5898 TATOOINE EGG 0 0 -2826.82 277.96 6057.76 0.00 0.00 0.00 0.00 1 a giant sand beetle +5899 TATOOINE EGG 0 0 -2744.71 5.00 2031.26 0.00 0.00 0.00 0.00 1 a thug +5900 TATOOINE EGG 0 0 -2925.56 5.00 2014.03 0.00 0.00 0.00 0.00 1 a thug +5901 TATOOINE EGG 0 0 -5467.28 30.00 -3885.61 0.00 0.00 0.00 0.00 1 a fringer +5902 TATOOINE EGG 0 0 -5323.24 40.00 -4443.62 0.00 0.00 0.00 0.00 1 a Tusken raider +5903 TATOOINE EGG 0 0 -5340.42 40.00 -4452.43 0.00 0.00 0.00 0.00 1 a Tusken bantha +5904 TATOOINE EGG 0 0 -5289.45 40.00 -4441.29 0.00 0.00 0.00 0.00 1 a Tusken raider +5905 TATOOINE EGG 0 0 -5315.97 40.00 -4444.79 0.00 0.00 0.00 0.00 1 a Tusken sniper +5906 TATOOINE EGG 0 0 -5332.04 40.00 -4455.94 0.00 0.00 0.00 0.00 1 a Tusken raider +5907 TATOOINE EGG 0 0 -5318.30 40.00 -4427.29 0.00 0.00 0.00 0.00 1 a Tusken raider +5908 TATOOINE EGG 0 0 -5282.89 40.00 -4442.86 0.00 0.00 0.00 0.00 1 a Tusken bantha +5909 TATOOINE EGG 0 0 -5337.96 40.00 -4434.90 0.00 0.00 0.00 0.00 1 a Tusken captain +5910 TATOOINE EGG 0 0 -5417.33 41.61 -6044.50 0.00 0.00 0.00 0.00 1 a fringer +5911 TATOOINE EGG 0 0 -1487.74 41.00 -186.64 0.00 0.00 0.00 0.00 1 a Tusken sniper +5912 TATOOINE EGG 0 0 -1472.49 41.00 -192.42 0.00 0.00 0.00 0.00 1 a Tusken warrior +5913 TATOOINE EGG 0 0 5768.24 53.71 4008.83 0.00 0.00 0.00 0.00 1 a Jawa Avenger +5914 TATOOINE EGG 0 0 5760.87 50.97 4000.88 0.00 0.00 0.00 0.00 1 a Jawa Protector +5915 TATOOINE EGG 0 0 5779.83 50.46 4000.20 0.00 0.00 0.00 0.00 1 a Tusken warlord +5916 TATOOINE EGG 0 0 5777.96 50.77 3982.87 0.00 0.00 0.00 0.00 1 a Tusken raider +5917 TATOOINE EGG 0 0 5784.99 49.95 3992.93 0.00 0.00 0.00 0.00 1 a Tusken captain +5918 TATOOINE EGG 0 0 5744.92 53.04 4011.30 0.00 0.00 0.00 0.00 1 a Tusken raider +5919 TATOOINE EGG 0 0 -5725.19 23.51 6484.34 0.00 0.00 0.00 0.00 1 a dewback +5920 TATOOINE EGG 0 0 -4825.23 26.65 6528.96 0.00 0.00 0.00 0.00 1 a Tusken chief +5921 TATOOINE EGG 0 0 -4826.28 26.77 6532.40 0.00 0.00 0.00 0.00 1 a Tusken commoner +5922 TATOOINE EGG 0 0 -3971.41 22.00 6163.89 0.00 0.00 0.00 0.00 1 a Tusken raider +5957 TATOOINE EGG 0 0 -3973.70 60.00 6310.95 0.00 0.00 0.00 0.00 1 a Tusken bantha +5958 TATOOINE EGG 0 0 -3990.99 60.00 6306.52 0.00 0.00 0.00 0.00 1 a Tusken captain +5959 TATOOINE EGG 0 0 -3976.98 60.00 6281.28 0.00 0.00 0.00 0.00 1 a Tusken raider +5960 TATOOINE EGG 0 0 -3979.63 60.00 6249.63 0.00 0.00 0.00 0.00 1 a Tusken raider +5961 TATOOINE EGG 0 0 -4020.62 60.00 6225.16 0.00 0.00 0.00 0.00 1 a Tusken raider +5962 TATOOINE EGG 0 0 -3986.20 60.00 6313.30 0.00 0.00 0.00 0.00 1 a Tusken raider +5963 TATOOINE EGG 0 0 -4009.36 60.00 6243.47 0.00 0.00 0.00 0.00 1 a Tusken raider +5964 TATOOINE EGG 0 0 -4006.72 68.51 6290.50 0.00 0.00 0.00 0.00 1 a Tusken sniper +5986 TATOOINE EGG 0 0 5098.37 22.59 595.03 0.00 0.00 0.00 0.00 1 Jabba's henchman +5987 TATOOINE EGG 0 0 6547.73 102.95 -1323.07 0.00 0.00 0.00 0.00 1 a dune beetle +5988 TATOOINE EGG 0 0 7432.96 6.44 4561.59 0.00 0.00 0.00 0.00 1 a krayt dragon ancient +5989 TATOOINE EGG 0 0 7428.00 5.71 4528.97 0.00 0.00 0.00 0.00 1 a grand krayt dragon +5990 TATOOINE EGG 0 0 3329.10 6.88 -5225.49 0.00 0.00 0.00 0.00 1 a dwarf nuna +5991 TATOOINE EGG 0 0 3366.72 7.38 -5233.61 0.00 0.00 0.00 0.00 1 a dwarf nuna +5992 TATOOINE EGG 0 0 3484.39 5.00 -4808.66 0.00 0.00 0.00 0.00 1 newbie_tutorial_mentor +5995 TATOOINE EGG 0 0 3528.29 5.84 -4751.06 0.00 0.00 0.00 0.00 1 a scientist +5996 TATOOINE EGG 0 0 3288.14 5.13 -5071.38 0.00 0.00 0.00 0.00 1 a sewer worrt +5997 TATOOINE EGG 0 0 3397.34 52.31 -4292.67 0.00 0.00 0.00 0.00 1 a mound mite +5998 TATOOINE EGG 0 0 3420.20 52.57 -4273.04 0.00 0.00 0.00 0.00 1 a womp rat +5999 TATOOINE EGG 0 0 3408.92 52.65 -4304.31 0.00 0.00 0.00 0.00 1 a tempest rill +6000 TATOOINE EGG 0 0 3492.28 79.57 -4303.30 0.00 0.00 0.00 0.00 1 a mound mite +6001 TATOOINE EGG 0 0 3508.60 81.85 -4303.67 0.00 0.00 0.00 0.00 1 a womp rat +6002 TATOOINE EGG 0 0 3508.17 75.09 -4320.09 0.00 0.00 0.00 0.00 1 a tempest rill +6003 TATOOINE EGG 0 0 3583.83 56.56 -4344.33 0.00 0.00 0.00 0.00 1 a mound mite +6004 TATOOINE EGG 0 0 3605.09 54.80 -4355.88 0.00 0.00 0.00 0.00 1 a womp rat +6005 TATOOINE EGG 0 0 3590.10 55.54 -4360.81 0.00 0.00 0.00 0.00 1 a tempest rill +6006 TATOOINE EGG 0 0 3729.19 177.31 -4462.23 0.00 0.00 0.00 0.00 1 a mound mite +6007 TATOOINE EGG 0 0 3757.63 164.87 -4456.91 0.00 0.00 0.00 0.00 1 a womp rat +6008 TATOOINE EGG 0 0 3836.45 50.23 -5055.09 0.00 0.00 0.00 0.00 1 a mound mite +6009 TATOOINE EGG 0 0 3819.55 51.86 -5050.30 0.00 0.00 0.00 0.00 1 a womp rat +6010 TATOOINE EGG 0 0 3837.52 47.36 -5038.74 0.00 0.00 0.00 0.00 1 a tempest rill +6011 TATOOINE EGG 0 0 3564.88 67.00 -5192.97 0.00 0.00 0.00 0.00 1 a mound mite +6012 TATOOINE EGG 0 0 3575.71 71.31 -5218.05 0.00 0.00 0.00 0.00 1 a womp rat +6013 TATOOINE EGG 0 0 3582.84 73.41 -5243.08 0.00 0.00 0.00 0.00 1 a tempest rill +6014 TATOOINE EGG 0 0 3206.24 6.53 -5297.14 0.00 0.00 0.00 0.00 1 a mound mite +6015 TATOOINE EGG 0 0 3182.62 8.25 -5308.35 0.00 0.00 0.00 0.00 1 a womp rat +6016 TATOOINE EGG 0 0 3185.39 7.86 -5276.05 0.00 0.00 0.00 0.00 1 a tempest rill +6017 TATOOINE EGG 0 0 3061.34 8.58 -5195.66 0.00 0.00 0.00 0.00 1 a mound mite +6018 TATOOINE EGG 0 0 3025.48 7.92 -5179.37 0.00 0.00 0.00 0.00 1 a womp rat +6019 TATOOINE EGG 0 0 3053.39 7.55 -5158.81 0.00 0.00 0.00 0.00 1 a tempest rill +6020 TATOOINE EGG 0 0 2981.28 15.87 -4981.74 0.00 0.00 0.00 0.00 1 a mound mite +6021 TATOOINE EGG 0 0 2965.40 19.46 -4952.71 0.00 0.00 0.00 0.00 1 a womp rat +6022 TATOOINE EGG 0 0 2998.05 17.47 -4934.75 0.00 0.00 0.00 0.00 1 a tempest rill +6023 TATOOINE EGG 0 0 2928.00 36.94 -4790.72 0.00 0.00 0.00 0.00 1 a mound mite +6024 TATOOINE EGG 0 0 2932.28 41.29 -4759.94 0.00 0.00 0.00 0.00 1 a womp rat +6025 TATOOINE EGG 0 0 2902.35 36.45 -4768.69 0.00 0.00 0.00 0.00 1 a tempest rill +6026 TATOOINE EGG 0 0 2834.73 8.95 -4575.43 0.00 0.00 0.00 0.00 1 a mound mite +6027 TATOOINE EGG 0 0 2849.07 7.95 -4549.91 0.00 0.00 0.00 0.00 1 a womp rat +6028 TATOOINE EGG 0 0 2862.01 8.78 -4577.52 0.00 0.00 0.00 0.00 1 a tempest rill +6029 TATOOINE EGG 0 0 2895.53 9.90 -4359.12 0.00 0.00 0.00 0.00 1 a mound mite +6030 TATOOINE EGG 0 0 2960.78 10.65 -4332.13 0.00 0.00 0.00 0.00 1 a womp rat +6031 TATOOINE EGG 0 0 2945.53 11.07 -4376.92 0.00 0.00 0.00 0.00 1 a tempest rill +6032 TATOOINE EGG 0 0 3108.76 53.63 -4198.78 0.00 0.00 0.00 0.00 1 a mound mite +6033 TATOOINE EGG 0 0 3133.87 67.03 -4170.37 0.00 0.00 0.00 0.00 1 a womp rat +6034 TATOOINE EGG 0 0 3153.17 51.99 -4206.23 0.00 0.00 0.00 0.00 1 a tempest rill +6035 TATOOINE EGG 0 0 3272.37 70.80 -4195.10 0.00 0.00 0.00 0.00 1 a mound mite +6036 TATOOINE EGG 0 0 3313.76 73.78 -4195.36 0.00 0.00 0.00 0.00 1 a womp rat +6037 TATOOINE EGG 0 0 3295.18 55.88 -4221.09 0.00 0.00 0.00 0.00 1 a tempest rill +6039 TATOOINE EGG 0 0 3438.84 5.00 -4915.72 0.00 0.00 0.00 0.00 1 a commoner +6040 TATOOINE EGG 0 0 3513.14 5.00 -4814.52 0.00 0.00 0.00 0.00 1 prof_quest_artisan +6043 TATOOINE EGG 0 0 3840.20 180.00 -4498.00 0.00 0.00 0.00 0.00 1 Dewback +6044 TATOOINE EGG 0 0 3804.85 180.00 -4485.41 0.00 0.00 0.00 0.00 1 Dewback +6045 TATOOINE EGG 0 0 3866.18 180.00 -4528.88 0.00 0.00 0.00 0.00 1 an Imperial Corporal +6046 TATOOINE EGG 0 0 3883.15 180.00 -4530.00 0.00 0.00 0.00 0.00 1 an Imperial Sergeant +6047 TATOOINE EGG 0 0 3511.49 5.00 -4785.09 0.00 0.00 0.00 0.00 1 Entha Kandela +6048 TATOOINE EGG 0 0 3512.79 5.00 -4764.46 0.00 0.00 0.00 0.00 1 Purvis Arrison +6050 TATOOINE EGG 0 0 -927.63 29.58 -3789.55 0.00 0.00 0.00 0.00 1 a minor worrt +6051 TATOOINE EGG 0 0 -932.95 28.59 -3807.82 0.00 0.00 0.00 0.00 1 a lesser desert womp rat +6052 TATOOINE EGG 0 0 -944.42 28.03 -3790.79 0.00 0.00 0.00 0.00 1 a worrt +6053 TATOOINE EGG 0 0 -1049.10 51.81 -3828.11 0.00 0.00 0.00 0.00 1 a sewer worrt +6054 TATOOINE EGG 0 0 -1075.00 42.85 -3814.35 0.00 0.00 0.00 0.00 1 a city sewer Swamprat +6055 TATOOINE EGG 0 0 -1036.45 45.16 -3813.30 0.00 0.00 0.00 0.00 1 a vicious Rill +6056 TATOOINE EGG 0 0 -1171.21 64.69 -3820.28 0.00 0.00 0.00 0.00 1 a Tame Rill +6057 TATOOINE EGG 0 0 -1201.71 76.31 -3852.47 0.00 0.00 0.00 0.00 1 a rill +6058 TATOOINE EGG 0 0 -1217.51 58.23 -3823.59 0.00 0.00 0.00 0.00 1 a rockmite +6059 TATOOINE EGG 0 0 -1296.23 40.91 -3789.79 0.00 0.00 0.00 0.00 1 a runted Rill +6060 TATOOINE EGG 0 0 -1333.07 20.84 -3766.41 0.00 0.00 0.00 0.00 1 a tame Worrt +6061 TATOOINE EGG 0 0 -1303.07 31.22 -3766.41 0.00 0.00 0.00 0.00 1 a city Rockmite +6062 TATOOINE EGG 0 0 -1253.85 53.37 -3891.72 0.00 0.00 0.00 0.00 1 a tame Womprat +6063 TATOOINE EGG 0 0 -1261.85 49.27 -3929.16 0.00 0.00 0.00 0.00 1 a desert kreetle +6064 TATOOINE EGG 0 0 -1266.21 47.41 -3877.86 0.00 0.00 0.00 0.00 1 a worrt +6065 TATOOINE EGG 0 0 -1301.38 58.72 -4055.27 0.00 0.00 0.00 0.00 1 a Sickly Womprat +6066 TATOOINE EGG 0 0 -1309.81 48.11 -4035.65 0.00 0.00 0.00 0.00 1 a tame Worrt +6067 TATOOINE EGG 0 0 -1286.73 55.16 -4031.33 0.00 0.00 0.00 0.00 1 a vicious Rill +6068 TATOOINE EGG 0 0 -1405.95 30.71 -4057.75 0.00 0.00 0.00 0.00 1 a kreetle +6069 TATOOINE EGG 0 0 -1381.05 30.95 -4038.31 0.00 0.00 0.00 0.00 1 a rill +6070 TATOOINE EGG 0 0 -1369.43 34.59 -4060.60 0.00 0.00 0.00 0.00 1 a worrt +6071 TATOOINE EGG 0 0 -1425.42 30.87 -3930.55 0.00 0.00 0.00 0.00 1 a carrion kreetle +6072 TATOOINE EGG 0 0 -1406.51 32.04 -3955.90 0.00 0.00 0.00 0.00 1 a city sewer Swamprat +6073 TATOOINE EGG 0 0 -1430.88 42.50 -3963.80 0.00 0.00 0.00 0.00 1 a vicious Rill +6074 TATOOINE EGG 0 0 -1496.11 36.40 -3833.90 0.00 0.00 0.00 0.00 1 a city Rockmite +6075 TATOOINE EGG 0 0 -1492.71 25.55 -3795.42 0.00 0.00 0.00 0.00 1 a rill +6076 TATOOINE EGG 0 0 -1470.51 27.57 -3839.57 0.00 0.00 0.00 0.00 1 a city Rockmite +6077 TATOOINE EGG 0 0 -1532.33 19.74 -3646.99 0.00 0.00 0.00 0.00 1 a minor worrt +6078 TATOOINE EGG 0 0 -1515.71 18.46 -3603.32 0.00 0.00 0.00 0.00 1 a city sewer Swamprat +6079 TATOOINE EGG 0 0 -1515.99 14.74 -3664.38 0.00 0.00 0.00 0.00 1 a rockmite +6080 TATOOINE EGG 0 0 -1495.48 29.94 -3493.71 0.00 0.00 0.00 0.00 1 a sewer worrt +6081 TATOOINE EGG 0 0 -1518.92 35.14 -3504.96 0.00 0.00 0.00 0.00 1 a city sewer Swamprat +6082 TATOOINE EGG 0 0 -1493.49 44.04 -3459.11 0.00 0.00 0.00 0.00 1 a vicious Rill +6083 TATOOINE EGG 0 0 -1324.68 20.35 -3413.31 0.00 0.00 0.00 0.00 1 a Tame Rill +6084 TATOOINE EGG 0 0 -1298.51 11.83 -3434.93 0.00 0.00 0.00 0.00 1 a desert kreetle +6085 TATOOINE EGG 0 0 -1334.35 15.80 -3431.22 0.00 0.00 0.00 0.00 1 a worrt +6086 TATOOINE EGG 0 0 -1142.89 20.58 -3426.22 0.00 0.00 0.00 0.00 1 a minor worrt +6087 TATOOINE EGG 0 0 -1130.98 17.47 -3454.77 0.00 0.00 0.00 0.00 1 a lesser desert womp rat +6088 TATOOINE EGG 0 0 -1159.23 15.83 -3439.51 0.00 0.00 0.00 0.00 1 a worrt +6089 TATOOINE EGG 0 0 -992.98 31.43 -3433.60 0.00 0.00 0.00 0.00 1 a sewer worrt +6090 TATOOINE EGG 0 0 -971.40 21.52 -3464.34 0.00 0.00 0.00 0.00 1 a city sewer Swamprat +6091 TATOOINE EGG 0 0 -1013.99 25.04 -3444.64 0.00 0.00 0.00 0.00 1 a vicious Rill +6092 TATOOINE EGG 0 0 -939.90 20.88 -3577.56 0.00 0.00 0.00 0.00 1 a Tame Rill +6093 TATOOINE EGG 0 0 -911.45 20.41 -3580.84 0.00 0.00 0.00 0.00 1 a rill +6094 TATOOINE EGG 0 0 -910.66 16.86 -3557.56 0.00 0.00 0.00 0.00 1 a rockmite +6095 TATOOINE EGG 0 0 -895.11 27.02 -3674.84 0.00 0.00 0.00 0.00 1 a runted Rill +6096 TATOOINE EGG 0 0 -921.44 27.43 -3682.32 0.00 0.00 0.00 0.00 1 a tame Worrt +6097 TATOOINE EGG 0 0 -917.77 30.83 -3651.46 0.00 0.00 0.00 0.00 1 a city Rockmite +6098 TATOOINE EGG 0 0 -929.06 8.92 -3957.54 0.00 0.00 0.00 0.00 1 a womp rat +6099 TATOOINE EGG 0 0 -948.70 7.97 -3957.54 0.00 0.00 0.00 0.00 1 a tempest rill +6100 TATOOINE EGG 0 0 -1104.09 72.07 -3959.81 0.00 0.00 0.00 0.00 1 a womp rat +6101 TATOOINE EGG 0 0 -1088.63 75.09 -3924.58 0.00 0.00 0.00 0.00 1 a tempest rill +6102 TATOOINE EGG 0 0 -1162.82 46.12 -4058.21 0.00 0.00 0.00 0.00 1 a womp rat +6103 TATOOINE EGG 0 0 -1161.35 52.15 -4035.61 0.00 0.00 0.00 0.00 1 a tempest rill +6104 TATOOINE EGG 0 0 -1314.21 85.73 -4148.41 0.00 0.00 0.00 0.00 1 a womp rat +6105 TATOOINE EGG 0 0 -1295.03 89.01 -4133.85 0.00 0.00 0.00 0.00 1 a tempest rill +6106 TATOOINE EGG 0 0 -1449.69 11.23 -4116.26 0.00 0.00 0.00 0.00 1 a womp rat +6107 TATOOINE EGG 0 0 -1477.60 9.61 -4141.62 0.00 0.00 0.00 0.00 1 a tempest rill +6108 TATOOINE EGG 0 0 -1498.79 42.29 -4046.93 0.00 0.00 0.00 0.00 1 a womp rat +6109 TATOOINE EGG 0 0 -1521.05 70.57 -3993.31 0.00 0.00 0.00 0.00 1 a tempest rill +6110 TATOOINE EGG 0 0 -1509.72 69.78 -3928.71 0.00 0.00 0.00 0.00 1 a womp rat +6111 TATOOINE EGG 0 0 -1527.72 54.17 -3860.26 0.00 0.00 0.00 0.00 1 a tempest rill +6112 TATOOINE EGG 0 0 -1608.83 31.47 -3717.13 0.00 0.00 0.00 0.00 1 a womp rat +6113 TATOOINE EGG 0 0 -1601.83 31.31 -3751.24 0.00 0.00 0.00 0.00 1 a tempest rill +6114 TATOOINE EGG 0 0 -1683.44 17.43 -3609.45 0.00 0.00 0.00 0.00 1 a womp rat +6115 TATOOINE EGG 0 0 -1718.46 12.32 -3557.04 0.00 0.00 0.00 0.00 1 a tempest rill +6116 TATOOINE EGG 0 0 -1696.49 22.59 -3485.81 0.00 0.00 0.00 0.00 1 a womp rat +6117 TATOOINE EGG 0 0 -1690.92 18.41 -3465.57 0.00 0.00 0.00 0.00 1 a tempest rill +6118 TATOOINE EGG 0 0 -1587.71 45.44 -3438.87 0.00 0.00 0.00 0.00 1 a womp rat +6119 TATOOINE EGG 0 0 -1546.40 54.87 -3410.23 0.00 0.00 0.00 0.00 1 a tempest rill +6120 TATOOINE EGG 0 0 -1402.88 101.23 -3338.65 0.00 0.00 0.00 0.00 1 a womp rat +6121 TATOOINE EGG 0 0 -1461.28 107.11 -3354.89 0.00 0.00 0.00 0.00 1 a tempest rill +6122 TATOOINE EGG 0 0 -1244.85 59.39 -3316.00 0.00 0.00 0.00 0.00 1 a womp rat +6123 TATOOINE EGG 0 0 -1215.09 61.56 -3290.64 0.00 0.00 0.00 0.00 1 a tempest rill +6124 TATOOINE EGG 0 0 -1007.10 98.17 -3293.11 0.00 0.00 0.00 0.00 1 a womp rat +6125 TATOOINE EGG 0 0 -1011.21 98.19 -3327.24 0.00 0.00 0.00 0.00 1 a tempest rill +6126 TATOOINE EGG 0 0 -879.76 88.93 -3388.34 0.00 0.00 0.00 0.00 1 a womp rat +6127 TATOOINE EGG 0 0 -855.68 76.55 -3411.54 0.00 0.00 0.00 0.00 1 a tempest rill +6128 TATOOINE EGG 0 0 -743.71 46.25 -3514.80 0.00 0.00 0.00 0.00 1 a womp rat +6129 TATOOINE EGG 0 0 -716.05 40.92 -3513.37 0.00 0.00 0.00 0.00 1 a tempest rill +6130 TATOOINE EGG 0 0 -642.29 60.10 -3727.01 0.00 0.00 0.00 0.00 1 a womp rat +6131 TATOOINE EGG 0 0 -642.04 55.78 -3703.57 0.00 0.00 0.00 0.00 1 a tempest rill +6132 TATOOINE EGG 0 0 -3242.33 9.06 2733.72 0.00 0.00 0.00 0.00 1 a womp rat +6133 TATOOINE EGG 0 0 -3232.08 8.89 2754.94 0.00 0.00 0.00 0.00 1 a tempest rill +6134 TATOOINE EGG 0 0 -3120.41 5.87 2839.60 0.00 0.00 0.00 0.00 1 a womp rat +6135 TATOOINE EGG 0 0 -3109.14 6.91 2870.83 0.00 0.00 0.00 0.00 1 a tempest rill +6136 TATOOINE EGG 0 0 -2940.36 5.30 2844.10 0.00 0.00 0.00 0.00 1 a womp rat +6137 TATOOINE EGG 0 0 -2914.78 5.63 2853.26 0.00 0.00 0.00 0.00 1 a tempest rill +6138 TATOOINE EGG 0 0 -2808.59 5.02 2765.92 0.00 0.00 0.00 0.00 1 a womp rat +6139 TATOOINE EGG 0 0 -2780.17 6.46 2773.62 0.00 0.00 0.00 0.00 1 a tempest rill +6140 TATOOINE EGG 0 0 -2639.38 6.91 2679.92 0.00 0.00 0.00 0.00 1 a womp rat +6141 TATOOINE EGG 0 0 -2609.47 11.70 2691.52 0.00 0.00 0.00 0.00 1 a tempest rill +6142 TATOOINE EGG 0 0 -2561.20 10.14 2580.10 0.00 0.00 0.00 0.00 1 a womp rat +6143 TATOOINE EGG 0 0 -2531.05 9.30 2592.47 0.00 0.00 0.00 0.00 1 a tempest rill +6144 TATOOINE EGG 0 0 -2473.74 7.03 2132.97 0.00 0.00 0.00 0.00 1 a womp rat +6145 TATOOINE EGG 0 0 -2463.67 8.31 2100.39 0.00 0.00 0.00 0.00 1 a tempest rill +6146 TATOOINE EGG 0 0 -2547.93 8.91 1819.24 0.00 0.00 0.00 0.00 1 a womp rat +6147 TATOOINE EGG 0 0 -2568.63 8.80 1825.13 0.00 0.00 0.00 0.00 1 a tempest rill +6148 TATOOINE EGG 0 0 -2800.39 9.99 1649.52 0.00 0.00 0.00 0.00 1 a womp rat +6149 TATOOINE EGG 0 0 -2780.04 7.52 1625.98 0.00 0.00 0.00 0.00 1 a tempest rill +6150 TATOOINE EGG 0 0 -3061.35 11.23 1651.79 0.00 0.00 0.00 0.00 1 a womp rat +6151 TATOOINE EGG 0 0 -3049.01 7.89 1667.27 0.00 0.00 0.00 0.00 1 a tempest rill +6152 TATOOINE EGG 0 0 -3222.24 11.15 1793.39 0.00 0.00 0.00 0.00 1 a womp rat +6153 TATOOINE EGG 0 0 -3207.38 9.50 1775.71 0.00 0.00 0.00 0.00 1 a tempest rill +6154 TATOOINE EGG 0 0 -3074.37 6.70 2856.13 0.00 0.00 0.00 0.00 1 a mound mite +6155 TATOOINE EGG 0 0 -3208.30 7.84 2757.09 0.00 0.00 0.00 0.00 1 a mound mite +6156 TATOOINE EGG 0 0 -2763.38 6.10 2752.71 0.00 0.00 0.00 0.00 1 a mound mite +6157 TATOOINE EGG 0 0 -2912.18 5.12 2829.86 0.00 0.00 0.00 0.00 1 a mound mite +6158 TATOOINE EGG 0 0 -2634.00 14.53 2698.76 0.00 0.00 0.00 0.00 1 a mound mite +6159 TATOOINE EGG 0 0 -2543.46 7.66 2546.22 0.00 0.00 0.00 0.00 1 a mound mite +6160 TATOOINE EGG 0 0 -2488.84 8.87 2091.49 0.00 0.00 0.00 0.00 1 a mound mite +6161 TATOOINE EGG 0 0 -2572.27 7.36 1800.51 0.00 0.00 0.00 0.00 1 a mound mite +6162 TATOOINE EGG 0 0 -2760.97 6.22 1650.09 0.00 0.00 0.00 0.00 1 a mound mite +6163 TATOOINE EGG 0 0 -3035.05 11.47 1651.13 0.00 0.00 0.00 0.00 1 a mound mite +6164 TATOOINE EGG 0 0 -3225.02 13.16 1761.17 0.00 0.00 0.00 0.00 1 a mound mite +6165 TATOOINE EGG 0 0 -959.40 7.65 -3937.55 0.00 0.00 0.00 0.00 1 a mound mite +6166 TATOOINE EGG 0 0 -667.27 63.47 -3763.00 0.00 0.00 0.00 0.00 1 a mound mite +6167 TATOOINE EGG 0 0 -759.79 53.98 -3508.32 0.00 0.00 0.00 0.00 1 a mound mite +6168 TATOOINE EGG 0 0 -835.46 89.44 -3405.41 0.00 0.00 0.00 0.00 1 a mound mite +6169 TATOOINE EGG 0 0 -1086.45 62.75 -3952.99 0.00 0.00 0.00 0.00 1 a mound mite +6170 TATOOINE EGG 0 0 -1139.94 47.43 -4040.86 0.00 0.00 0.00 0.00 1 a mound mite +6171 TATOOINE EGG 0 0 -1287.10 84.48 -4154.08 0.00 0.00 0.00 0.00 1 a mound mite +6172 TATOOINE EGG 0 0 -1499.56 76.32 -3996.57 0.00 0.00 0.00 0.00 1 a mound mite +6173 TATOOINE EGG 0 0 -1438.30 16.83 -4154.53 0.00 0.00 0.00 0.00 1 a mound mite +6174 TATOOINE EGG 0 0 -1516.28 61.42 -3896.21 0.00 0.00 0.00 0.00 1 a mound mite +6175 TATOOINE EGG 0 0 -1606.88 33.79 -3688.06 0.00 0.00 0.00 0.00 1 a mound mite +6176 TATOOINE EGG 0 0 -1684.16 18.84 -3576.49 0.00 0.00 0.00 0.00 1 a mound mite +6177 TATOOINE EGG 0 0 -1667.96 23.72 -3464.43 0.00 0.00 0.00 0.00 1 a mound mite +6178 TATOOINE EGG 0 0 -1542.56 63.22 -3425.24 0.00 0.00 0.00 0.00 1 a mound mite +6179 TATOOINE EGG 0 0 -1433.59 111.41 -3347.85 0.00 0.00 0.00 0.00 1 a mound mite +6180 TATOOINE EGG 0 0 -1252.72 65.67 -3282.00 0.00 0.00 0.00 0.00 1 a mound mite +6181 TATOOINE EGG 0 0 -1045.28 92.25 -3306.63 0.00 0.00 0.00 0.00 1 a mound mite +6184 TATOOINE EGG 0 0 -2912.16 5.00 2138.15 0.00 0.00 0.00 0.00 1 a thug +6185 TATOOINE EGG 0 0 -2729.66 5.00 2243.34 0.00 0.00 0.00 0.00 1 a thug +6186 TATOOINE EGG 0 0 -2801.48 5.00 2325.69 0.00 0.00 0.00 0.00 1 a thug +6187 TATOOINE EGG 0 0 -2859.00 5.00 2252.72 0.00 0.00 0.00 0.00 1 a thug +6188 TATOOINE EGG 0 0 -3065.09 5.00 2142.42 0.00 0.00 0.00 0.00 1 a thug +6189 TATOOINE EGG 0 0 -2996.41 5.00 2326.36 0.00 0.00 0.00 0.00 1 a thug +6190 TATOOINE EGG 0 0 -2918.43 5.00 2400.58 0.00 0.00 0.00 0.00 1 a thug +6191 TATOOINE EGG 0 0 -2958.01 5.00 2538.51 0.00 0.00 0.00 0.00 1 a thug +6193 YAVIN4 EGG 0 0 -7091.31 67.04 -5877.41 0.00 0.28 0.00 0.96 1 an enforcer +6194 YAVIN4 EGG 0 0 -7053.08 69.85 -5831.28 0.00 0.84 0.00 -0.54 1 an enforcer +6195 YAVIN4 EGG 0 0 -7077.00 68.42 -5849.00 0.00 0.42 0.00 0.91 1 Benton +6196 YAVIN4 EGG 0 0 -7084.10 66.01 -5819.90 0.00 0.99 0.00 0.13 1 an enforcer +6197 YAVIN4 EGG 0 0 -6912.79 73.00 -5736.72 0.00 0.90 0.00 0.43 1 Nore Brrea +6201 YAVIN4 EGG 0 0 -6242.47 52.55 5355.43 0.00 0.89 0.00 -0.45 1 a Rebel trooper +6202 YAVIN4 EGG 0 0 -6243.70 52.80 5372.49 0.00 0.99 0.00 0.13 1 a Rebel trooper +6223 YAVIN4 EGG 0 0 -6260.19 51.90 5361.54 0.00 0.94 0.00 0.34 1 a Rebel trooper +6224 YAVIN4 EGG 0 0 -7088.36 124.09 4408.00 0.00 -0.07 0.00 1.00 1 a Dark Jedi Master +6225 YAVIN4 EGG 0 0 -7080.82 123.94 4408.02 0.00 0.99 0.00 0.12 1 a Dark Jedi Elder +6226 YAVIN4 EGG 0 0 -7070.74 122.83 4389.82 0.00 1.00 0.00 -0.03 1 a Dark Jedi Elder +6227 YAVIN4 EGG 0 0 -7087.73 122.48 4374.32 0.00 0.94 0.00 0.33 1 a Dark Jedi Elder +6228 YAVIN4 EGG 0 0 -7098.52 123.08 4393.96 0.00 0.97 0.00 -0.24 1 a Dark Jedi Elder +6229 YAVIN4 EGG 0 0 -7101.72 124.42 4407.50 0.00 -0.30 0.00 0.95 1 a Dark Jedi Sentinel +6230 YAVIN4 EGG 0 0 -7110.39 124.98 4426.08 0.00 -0.64 0.00 0.77 1 a Dark Jedi Sentinel +6231 YAVIN4 EGG 0 0 -7120.27 124.70 4410.81 0.00 1.00 0.00 -0.02 1 a Dark Jedi Sentinel +6232 YAVIN4 EGG 0 0 -7068.97 123.37 4372.04 0.00 0.72 0.00 -0.70 1 a Dark Jedi Sentinel +6233 YAVIN4 EGG 0 0 -7099.21 123.27 4381.65 0.00 0.99 0.00 -0.14 1 a Dark Jedi Master +6234 YAVIN4 EGG 0 0 -7141.57 122.82 4411.37 0.00 -0.63 0.00 0.78 1 a Dark Jedi Master +6235 YAVIN4 EGG 0 0 -7099.30 138.24 4435.88 0.00 0.77 0.00 -0.64 1 a Dark Jedi Master +6236 YAVIN4 EGG 0 0 -7055.37 27.29 7348.57 0.00 0.51 0.00 0.86 1 a Dark Jedi Elder +6237 YAVIN4 EGG 0 0 -5517.63 12.69 -1259.37 0.00 0.31 0.00 0.95 1 a Smuggler leader +6238 YAVIN4 EGG 0 0 -5506.67 12.98 -1259.89 0.00 -0.24 0.00 0.97 1 a Smuggler +6239 YAVIN4 EGG 0 0 -5527.03 13.16 -1262.78 0.00 0.38 0.00 0.92 1 a Smuggler +6240 YAVIN4 EGG 0 0 -4334.59 98.85 3972.36 0.00 0.75 0.00 0.66 1 a Dark Jedi Elder +6241 YAVIN4 EGG 0 0 -4342.58 98.16 3971.64 0.00 0.75 0.00 -0.66 1 a Dark Jedi Elder +6242 YAVIN4 EGG 0 0 -4338.05 97.94 3963.48 0.00 0.82 0.00 0.58 1 a Dark Jedi Elder +6243 YAVIN4 EGG 0 0 -4339.01 98.90 3980.17 0.00 0.44 0.00 0.90 1 a Dark Jedi Elder +6244 YAVIN4 EGG 0 0 -3267.66 71.20 -3112.68 0.00 -0.17 0.00 0.99 1 an enforcer +6245 YAVIN4 EGG 0 0 -3262.08 69.74 -3047.53 0.00 0.93 0.00 -0.37 1 an enforcer +6246 YAVIN4 EGG 0 0 -3294.96 68.35 -3045.38 0.00 0.82 0.00 0.58 1 an enforcer +6247 YAVIN4 EGG 0 0 -3291.00 68.01 -3077.00 0.00 0.54 0.00 0.84 1 Daren +6248 YAVIN4 EGG 0 0 -3177.26 104.62 3350.55 0.00 0.97 0.00 -0.25 1 a Dark Jedi Elder +6249 YAVIN4 EGG 0 0 -936.55 86.83 -2123.44 0.00 -0.07 0.00 1.00 1 a Stormtrooper squad leader +6250 YAVIN4 EGG 0 0 -940.61 85.97 -2114.37 0.00 -0.19 0.00 0.98 1 A Stormtrooper +6251 YAVIN4 EGG 0 0 -920.50 84.00 -2101.68 0.00 0.76 0.00 -0.65 1 A Stormtrooper +6252 YAVIN4 EGG 0 0 -912.27 84.72 -2131.02 0.00 0.87 0.00 0.49 1 A Stormtrooper +6253 YAVIN4 EGG 0 0 -962.08 84.71 -2126.91 0.00 0.91 0.00 -0.42 1 A Stormtrooper +6254 YAVIN4 EGG 0 0 -953.83 82.10 -2094.93 0.00 0.99 0.00 -0.10 1 A Stormtrooper +6255 YAVIN4 EGG 0 0 -937.48 83.69 -2080.60 0.00 0.99 0.00 0.10 1 A Stormtrooper +6256 YAVIN4 EGG 0 0 -344.29 35.00 4812.17 0.00 0.97 0.00 0.26 1 Breac Slaus (Yavin IV Collector) +6257 YAVIN4 EGG 0 0 -247.00 35.00 4877.00 0.00 1.00 0.00 0.00 1 Zelma +6258 YAVIN4 EGG 0 0 -1593.14 9.19 6757.58 0.00 0.62 0.00 0.78 1 a Dark Jedi Elder +6259 YAVIN4 EGG 0 0 -1941.72 8.26 7142.43 0.00 0.99 0.00 -0.14 1 a Smuggler bully +6260 YAVIN4 EGG 0 0 -1936.89 8.30 7139.73 0.00 0.95 0.00 -0.31 1 a Smuggler leader +6261 YAVIN4 EGG 0 0 -1581.97 9.09 6764.79 0.00 0.71 0.00 0.71 1 a Dark Jedi Elder +6262 YAVIN4 EGG 0 0 -1934.26 8.57 7135.54 0.00 0.93 0.00 -0.36 1 a Smuggler henchmen +6263 YAVIN4 EGG 0 0 661.59 83.14 -682.70 0.00 0.14 0.00 0.99 1 an enforcer +6264 YAVIN4 EGG 0 0 693.02 83.17 -613.33 0.00 0.97 0.00 -0.24 1 an enforcer +6265 YAVIN4 EGG 0 0 688.27 83.33 -672.55 0.00 -0.56 0.00 0.83 1 an enforcer +6266 YAVIN4 EGG 0 0 667.00 83.60 -650.00 0.00 0.78 0.00 -0.63 1 Lennox +6267 YAVIN4 EGG 0 0 638.15 81.00 -657.77 0.00 0.67 0.00 0.75 1 an enforcer +6268 YAVIN4 EGG 0 0 954.43 87.17 -1465.23 0.00 0.84 0.00 0.55 1 a Dark Jedi Elder +6269 YAVIN4 EGG 0 0 950.05 86.07 -1471.67 0.00 0.73 0.00 0.68 1 a Dark Jedi +6270 YAVIN4 EGG 0 0 948.05 86.82 -1459.01 0.00 0.91 0.00 -0.42 1 a Dark Jedi +6271 YAVIN4 EGG 0 0 589.18 35.23 4645.48 0.00 0.72 0.00 -0.70 1 Captain Demaia Maru +6272 YAVIN4 EGG 0 0 600.62 35.06 4647.11 0.00 0.80 0.00 -0.59 1 a Rebel trooper +6273 YAVIN4 EGG 0 0 596.23 34.49 4661.36 0.00 0.95 0.00 -0.31 1 a Rebel trooper +6274 YAVIN4 EGG 0 0 578.47 34.66 4662.93 0.00 0.96 0.00 0.27 1 a Rebel trooper +6275 YAVIN4 EGG 0 0 568.54 35.34 4646.54 0.00 0.67 0.00 0.74 1 a Rebel trooper +6276 YAVIN4 EGG 0 0 574.77 35.76 4630.89 0.00 0.20 0.00 0.98 1 a Rebel trooper +6277 YAVIN4 EGG 0 0 595.70 35.94 4623.81 0.00 -0.22 0.00 0.97 1 a Rebel trooper +6278 YAVIN4 EGG 0 0 619.15 34.89 4645.12 0.00 0.75 0.00 -0.67 1 a Rebel trooper +6279 YAVIN4 EGG 0 0 596.44 33.53 4678.17 0.00 1.00 0.00 0.07 1 a Rebel trooper +6280 YAVIN4 EGG 0 0 556.80 34.59 4665.49 0.00 0.88 0.00 0.47 1 a Rebel trooper +6281 YAVIN4 EGG 0 0 546.05 35.87 4628.68 0.00 0.54 0.00 0.84 1 a Rebel trooper +6291 YAVIN4 EGG 0 0 4369.05 93.28 972.62 0.00 0.03 0.00 1.00 1 a Dark Jedi Elder +6292 YAVIN4 EGG 0 0 5188.68 84.07 5550.87 0.00 -0.02 0.00 1.00 1 an enforcer +6293 YAVIN4 EGG 0 0 5213.19 86.89 5599.51 0.00 0.87 0.00 -0.49 1 an enforcer +6294 YAVIN4 EGG 0 0 6080.06 21.90 5435.04 0.00 -0.42 0.00 0.91 1 a Dark Jedi +6295 YAVIN4 EGG 0 0 6068.95 22.38 5440.28 0.00 0.73 0.00 0.69 1 a Dark Jedi +6296 YAVIN4 EGG 0 0 5185.00 85.05 5582.00 0.00 0.82 0.00 -0.57 1 Rolo +6297 YAVIN4 EGG 0 0 6074.33 22.19 5436.93 0.00 0.30 0.00 0.95 1 a Dark Jedi Elder +6298 YAVIN4 EGG 0 0 4927.72 103.84 5593.47 0.00 -0.59 0.00 0.80 1 a Rebel trooper +6299 YAVIN4 EGG 0 0 4877.11 103.63 5591.34 0.00 0.95 0.00 -0.30 1 an Exar Kun cultist +6300 YAVIN4 EGG 0 0 4865.42 104.88 5619.11 0.00 0.99 0.00 -0.13 1 an Exar Kun cultist +6301 YAVIN4 EGG 0 0 4837.80 102.92 5623.81 0.00 0.96 0.00 0.27 1 an Exar Kun cultist +6302 YAVIN4 EGG 0 0 4819.46 103.46 5607.67 0.00 0.99 0.00 0.15 1 an Exar Kun cultist +6303 YAVIN4 EGG 0 0 4809.46 105.78 5590.37 0.00 1.00 0.00 -0.09 1 an Exar Kun cultist +6304 YAVIN4 EGG 0 0 4813.08 107.22 5567.59 0.00 -0.05 0.00 1.00 1 an Exar Kun cultist +6305 YAVIN4 EGG 0 0 4811.34 104.37 5537.35 0.00 0.38 0.00 0.93 1 an Exar Kun cultist +6306 YAVIN4 EGG 0 0 4834.27 102.16 5514.60 0.00 -0.04 0.00 1.00 1 an Exar Kun cultist +6307 YAVIN4 EGG 0 0 4865.15 103.34 5534.06 0.00 -0.16 0.00 0.99 1 an Exar Kun cultist +6308 YAVIN4 EGG 0 0 4878.73 103.11 5562.99 0.00 -0.42 0.00 0.91 1 an Exar Kun cultist +6309 YAVIN4 EGG 0 0 4847.85 103.19 5544.97 0.00 -0.59 0.00 0.81 1 an Exar Kun cultist +6310 YAVIN4 EGG 0 0 4832.85 103.73 5545.29 0.00 0.46 0.00 0.89 1 an Exar Kun cultist +6311 YAVIN4 EGG 0 0 4838.20 100.00 5558.79 0.00 0.08 0.00 1.00 1 an Exar Kun cultist +6312 YAVIN4 EGG 0 0 4829.91 96.00 5572.64 0.00 0.51 0.00 0.86 1 an Exar Kun cultist +6313 YAVIN4 EGG 0 0 4834.06 96.00 5586.11 0.00 0.94 0.00 0.35 1 an Exar Kun cultist +6314 YAVIN4 EGG 0 0 4843.29 103.48 5606.93 0.00 0.92 0.00 0.39 1 an Exar Kun cultist +6315 YAVIN4 EGG 0 0 4852.71 104.13 5607.40 0.00 0.95 0.00 -0.32 1 an Exar Kun cultist +6316 YAVIN4 EGG 0 0 4860.10 100.00 5591.14 0.00 0.95 0.00 -0.32 1 an Exar Kun cultist +6317 YAVIN4 EGG 0 0 4820.97 100.00 5582.41 0.00 0.86 0.00 0.50 1 an Exar Kun cultist +6318 YAVIN4 EGG 0 0 6473.36 15.05 5563.86 0.00 -0.26 0.00 0.96 1 a Stormtrooper +6319 YAVIN4 EGG 0 0 6481.38 14.09 5554.78 0.00 0.97 0.00 0.26 1 a Stormtrooper +6320 YAVIN4 EGG 0 0 6468.19 14.60 5554.96 0.00 1.00 0.00 -0.02 1 a Stormtrooper \ No newline at end of file From cebb9e70a5d3df34463829e227654006873bc98b Mon Sep 17 00:00:00 2001 From: Undercova PSWG Date: Fri, 28 Aug 2015 22:00:00 +0000 Subject: [PATCH 15/18] Changed current spawner iff to "Patrol Waypoint" for better visibility --- src/resources/spawn/SpawnType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/resources/spawn/SpawnType.java b/src/resources/spawn/SpawnType.java index fa8ea7ea1..a9de28d15 100644 --- a/src/resources/spawn/SpawnType.java +++ b/src/resources/spawn/SpawnType.java @@ -29,7 +29,7 @@ package resources.spawn; public enum SpawnType { - EGG("object/tangible/spawning/shared_spawn_egg.iff"); + EGG("object/tangible/ground_spawning/shared_patrol_waypoint.iff"); private String objectTemplate; From 3dfb07fcd310d78c811fa4a20b38c8042c599fba Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Fri, 28 Aug 2015 17:04:38 -0500 Subject: [PATCH 16/18] Disables eggs by default --- src/services/admin/WebserverHandler.java | 2 -- src/services/spawn/SpawnerService.java | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/services/admin/WebserverHandler.java b/src/services/admin/WebserverHandler.java index c39b71b23..594e3631f 100644 --- a/src/services/admin/WebserverHandler.java +++ b/src/services/admin/WebserverHandler.java @@ -17,14 +17,12 @@ import java.nio.charset.Charset; import java.util.HashMap; import java.util.Locale; import java.util.Map; -import java.util.Map.Entry; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import resources.Location; import resources.objects.SWGObject; -import resources.objects.building.BuildingObject; import resources.objects.cell.CellObject; import resources.player.Player; import resources.server_info.Log; diff --git a/src/services/spawn/SpawnerService.java b/src/services/spawn/SpawnerService.java index ff89f6bbd..b4b594671 100644 --- a/src/services/spawn/SpawnerService.java +++ b/src/services/spawn/SpawnerService.java @@ -58,7 +58,7 @@ public final class SpawnerService extends Service { public boolean initialize() { registerForIntent(ConfigChangedIntent.TYPE); - if (getConfig(ConfigFile.FEATURES).getBoolean("SPAWNERS-ENABLED", true)) + if (getConfig(ConfigFile.FEATURES).getBoolean("SPAWNERS-ENABLED", false)) loadEggs(); return super.initialize(); From 1817f142587268bce9d1a9d2ad45b3aae6760e07 Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Sat, 29 Aug 2015 15:29:09 -0500 Subject: [PATCH 17/18] Minor change to allow non-authed users to request images, css, and js for styling --- src/services/admin/OnlineInterfaceService.java | 4 +++- src/services/admin/WebserverHandler.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/services/admin/OnlineInterfaceService.java b/src/services/admin/OnlineInterfaceService.java index e4464fa6e..7280a812f 100644 --- a/src/services/admin/OnlineInterfaceService.java +++ b/src/services/admin/OnlineInterfaceService.java @@ -173,11 +173,13 @@ public class OnlineInterfaceService extends Service implements HttpServerCallbac synchronized (getUser) { try { getUser.setString(1, username); + boolean prevAuthenticated = session.isAuthenticated(); session.setAuthenticated(false); try (ResultSet cursor = getUser.executeQuery()) { session.setAuthenticated(cursor.next() && isUserValid(cursor, password)); if (session.isAuthenticated()) { - Log.i(TAG, "[%s] Successfully logged in to online interface", username); + if (!prevAuthenticated) + Log.i(TAG, "[%s] Successfully logged in to online interface", username); } else { Log.w(TAG, "[%s] Failed to login to online interface. Incorrect user/pass", username); socket.redirect(new URL("https", httpsServer.getBindAddress().getHostName(), httpsServer.getBindPort(), "/").toString()); diff --git a/src/services/admin/WebserverHandler.java b/src/services/admin/WebserverHandler.java index 594e3631f..de8434fc5 100644 --- a/src/services/admin/WebserverHandler.java +++ b/src/services/admin/WebserverHandler.java @@ -184,7 +184,7 @@ class WebserverHandler { if (session.isAuthenticated()) { file = new File("res/webserver/authenticated.html"); } - } else if (!session.isAuthenticated()) + } else if (!session.isAuthenticated() && !type.equals("text/css") && !type.equals("text/js") && !type.startsWith("image")) return null; if (type.equalsIgnoreCase("text/html")) return parseHtmlFile(file, getVariables).getBytes(ASCII); From ec4181d5e83fcaccebee903b6e8de2df67f4ddfa Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Sat, 29 Aug 2015 15:29:31 -0500 Subject: [PATCH 18/18] index.html overhal to make the login page look good - committing on behalf of tacef --- res/webserver/css/style.css | 139 ++++++++++++++++++ .../images/pswg_server_management.png | Bin 0 -> 38861 bytes res/webserver/index.html | 56 ++++--- 3 files changed, 164 insertions(+), 31 deletions(-) create mode 100644 res/webserver/css/style.css create mode 100644 res/webserver/images/pswg_server_management.png diff --git a/res/webserver/css/style.css b/res/webserver/css/style.css new file mode 100644 index 000000000..033b570d3 --- /dev/null +++ b/res/webserver/css/style.css @@ -0,0 +1,139 @@ +@charset "utf-8"; +/* CSS Document */ + +body, html { + width: 100%; + height: 100%; + font-family: "Helvetica Neue", Helvetica, sans-serif; + color: #444; + -webkit-font-smoothing: antialiased; + background: #f0f0f0; +} + +.wrapper{ + min-height:100%; + height:100%; +} +.logo{ + background-image:url(../images/pswg_server_management.png); + width: 200px; + height:210px; + margin:0 auto; +} +.login_container { + /* position: fixed;*/ + width: 340px; + height: 490px; + top: 50%; + left: 50%; + margin:0 auto; + /* margin-top: -140px; + margin-left: -170px;*/ + background: #fff; + border-radius: 3px; + border: 1px solid #ccc; + box-shadow: 0 1px 2px rgba(0, 0, 0, .1); + -webkit-animation-name: bounceIn; + -webkit-animation-fill-mode: both; + -webkit-animation-duration: 1s; + -webkit-animation-iteration-count: 1; + -webkit-animation-timing-function: linear; + -moz-animation-name: bounceIn; + -moz-animation-fill-mode: both; + -moz-animation-duration: 1s; + -moz-animation-iteration-count: 1; + -moz-animation-timing-function: linear; + animation-name: bounceIn; + animation-fill-mode: both; + animation-duration: 1s; + animation-iteration-count: 1; + animation-timing-function: linear; +} + +form { + margin: 0 auto; + margin-top: 20px; +} + +label { + color: #555; + display: inline-block; + margin-left: 18px; + padding-top: 10px; + font-size: 14px; +} + + + +input { + font-family: "Helvetica Neue", Helvetica, sans-serif; + font-size: 12px; + outline: none; +} + +input[type=text], +input[type=password] { + color: #777; + padding-left: 10px; + margin: 10px; + margin-top: 12px; + margin-left: 18px; + width: 290px; + height: 35px; + border: 1px solid #c7d0d2; + border-radius: 2px; + -webkit-transition: all .4s ease; + -moz-transition: all .4s ease; + transition: all .4s ease; +} + +#lower { + background: #ecf2f5; + width: 100%; + height: 63px; + margin-top: 20px; + box-shadow: inset 0 1px 1px #fff; + border-top: 1px solid #ccc; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +input[type=submit] { + float: right; + margin-right: 20px; + margin-top: 16px; + width: 80px; + height: 30px; + background-color: #acd6ef; /*IE fallback*/ + background-image: -webkit-gradient(linear, left top, left bottom, from(#acd6ef), to(#6ec2e8)); + background-image: -moz-linear-gradient(top left 90deg, #acd6ef 0%, #6ec2e8 100%); + background-image: linear-gradient(top left 90deg, #acd6ef 0%, #6ec2e8 100%); + border-radius: 30px; + border: 1px solid #66add6; + box-shadow: 0 1px 2px rgba(0, 0, 0, .3), inset 0 1px 0 rgba(255, 255, 255, .5); + cursor: pointer; +} + +input[type=text]:hover, +input[type=password]:hover { + border: 1px solid #b6bfc0; + box-shadow: inset 0 1.5px 3px rgba(190, 190, 190, .7), 0 0 0 5px #f5f7f8; +} + +input[type=text]:focus, +input[type=password]:focus { + border: 1px solid #a8c9e4; + box-shadow: inset 0 1.5px 3px rgba(190, 190, 190, .4), 0 0 0 5px #e6f2f9; +} + +input[type=submit]:hover { + background-image: -webkit-gradient(linear, left top, left bottom, from(#b6e2ff), to(#6ec2e8)); + background-image: -moz-linear-gradient(top left 90deg, #b6e2ff 0%, #6ec2e8 100%); + background-image: linear-gradient(top left 90deg, #b6e2ff 0%, #6ec2e8 100%); +} + +input[type=submit]:active { + background-image: -webkit-gradient(linear, left top, left bottom, from(#6ec2e8), to(#b6e2ff)); + background-image: -moz-linear-gradient(top left 90deg, #6ec2e8 0%, #b6e2ff 100%); + background-image: linear-gradient(top left 90deg, #6ec2e8 0%, #b6e2ff 100%); +} \ No newline at end of file diff --git a/res/webserver/images/pswg_server_management.png b/res/webserver/images/pswg_server_management.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d6f9efa29371dd99e6af6c5eac5b975abee863 GIT binary patch literal 38861 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 literal 0 HcmV?d00001 diff --git a/res/webserver/index.html b/res/webserver/index.html index 43dbf43e5..acfb36e1e 100644 --- a/res/webserver/index.html +++ b/res/webserver/index.html @@ -1,31 +1,25 @@ - - - Game Server Diagnostics - - - -

-
- Username:
- Password:
- -
-
- - + + + + + ProjectSWG Server Management Interface + + + + +
+ + +
+ +