From f053a63ff44a16fa38ca46f1812ae9ef34606a7f Mon Sep 17 00:00:00 2001 From: "Brandon Bowles (Brandon5)" Date: Thu, 7 Mar 2013 12:18:23 -0800 Subject: [PATCH 01/76] Box/Dropbox Private Keys --- src/org/brandroid/openmanager/util/PrivatePreferences.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/org/brandroid/openmanager/util/PrivatePreferences.java b/src/org/brandroid/openmanager/util/PrivatePreferences.java index 9084976d..fd217cfa 100644 --- a/src/org/brandroid/openmanager/util/PrivatePreferences.java +++ b/src/org/brandroid/openmanager/util/PrivatePreferences.java @@ -12,11 +12,14 @@ public static final String getKey(String name) { } public static final String getBoxAPIKey() { - return getKey("box"); + return getKey("box_api"); } static { // All Private Keys should go here like this: - // privateKeys.put("box", "superSecretKeyGoesHere"); + privateKeys.put("box_api", "zqjxn1m3i4eg4iud158e0nz7u9oi2cpu"); + privateKeys.put("box_secret", "BcTh1GpJpma1cJc58sqcfZSjDZeuiYZ2"); + privateKeys.put("dropbox_key", "vajaedmhzkkp3sw"); + privateKeys.put("dropbox_secret", "plkrfrygu17glgn"); } } From 3a4c724168eefd8fea05a37b67504f3986f9b8fe Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Thu, 7 Mar 2013 21:33:15 -0800 Subject: [PATCH 02/76] Fix Master Pass lookup --- .../activities/SettingsActivity.java | 142 ++---------------- 1 file changed, 16 insertions(+), 126 deletions(-) diff --git a/src/org/brandroid/openmanager/activities/SettingsActivity.java b/src/org/brandroid/openmanager/activities/SettingsActivity.java index bb65be82..61dc7e38 100644 --- a/src/org/brandroid/openmanager/activities/SettingsActivity.java +++ b/src/org/brandroid/openmanager/activities/SettingsActivity.java @@ -306,10 +306,8 @@ public void onStopTrackingTouch(SeekBar seekBar) { // SharedPreferences sp = // Preferences.getPreferences(getApplicationContext(), "servers"); // String servers = sp.getString("servers", ""); - OpenServers servers = prefs.LoadDefaultServers(this); // new - // OpenServers(prefs.getJSON("global", - // "servers", new - // JSONObject())); + OpenServers servers = prefs.LoadDefaultServers(this); + // new OpenServers(prefs.getJSON("global", "servers", new JSONObject())); if (path.equals("server_add")) { setTitle(getTitle() + " - Add New"); getPreferenceScreen().findPreference("server_delete").setEnabled(false); @@ -383,9 +381,9 @@ private void refreshServerList() { // for(int i = mPrefServers.getPreferenceCount() - 1; i > 0; i--) // mPrefServers.removePreference(mPrefServers.getPreference(i)); OpenServers servers = prefs.LoadDefaultServers(this); // new - // OpenServers(prefs.getSetting("global", - // "servers", new - // JSONObject())); + // OpenServers(prefs.getSetting("global", + // "servers", new + // JSONObject())); for (int i = 0; i < servers.size(); i++) { OpenServer server = servers.get(i); // Logger.LogDebug("Checking server [" + sName + "]"); @@ -459,9 +457,9 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { String sPath = data.getStringExtra("path"); Preferences prefs = new Preferences(getApplicationContext()); OpenServers servers = prefs.LoadDefaultServers(this); // new - // OpenServers(prefs.getJSON("global", - // "servers", new - // JSONObject())); + // OpenServers(prefs.getJSON("global", + // "servers", new + // JSONObject())); OpenServer server = null; int index = 0; if (sPath.equals("server_add")) { @@ -781,127 +779,19 @@ public void onClick(DialogInterface dialog, int which) { } public static String GetMasterPassword(Context context) { - Preferences prefs = new Preferences(context); - try { - OpenFile f = OpenFile.getExternalMemoryDrive(true).getChild("Android").getChild("data") - .getChild("org.brandroid.openmanager").getChild("files") - .getChild("servers.json"); - if (prefs.getSetting("global", "servers_private", false)) - { - if (f.exists()) - { - if (f.length() > f2.length()) - f2.copyFrom(f); - f.delete(); - } - return f2; - } - if (!f.exists()) - f.touch(); - if (!f.exists() || !f.canWrite()) - { - prefs.setSetting("global", "servers_private", true); - return f2; - } - else if (f2.exists()) { - if (OpenExplorer.IS_DEBUG_BUILD) - Logger.LogVerbose("Old servers.json(" + f2.length() - + ") found. Overwriting new servers.json(" + f.length() + ")!"); - if (!f.exists() || f2.length() > f.length()) - f.copyFrom(f2); - f2.delete(); - } - if (OpenExplorer.isBlackBerry() && f.exists() && f.canWrite()) { - f2 = OpenFile.getExternalMemoryDrive(true).getChild(".servers.json"); - if (f2.exists()) { - if (!f.exists() || f2.length() > f.length()) - f.copyFrom(f2); - f2.delete(); - } - } - if (!f.exists() && !f.touch()) - { - prefs.setSetting("global", "servers_private", true); - return f2; - } - return f; - } catch (Exception e) { - prefs.setSetting("global", "servers_private", true); - return f2; - } - } - - public static void SaveToDefaultServers(OpenServers servers, Context context) { - Writer w = null; - OpenFile f = GetDefaultServerFile(context); - try { - f.delete(); - f.create(); - w = new BufferedWriter(new FileWriter(f.getFile())); - String data = servers.getJSONArray(true, context).toString(); - Logger.LogDebug("Writing to " + f.getPath() + ": " + data); - // data = SimpleCrypto.encrypt(GetSignatureKey(context), data); - w.write(data); - w.close(); - Logger.LogDebug("Wrote " + data.length() + " bytes to OpenServers (" + f.getPath() - + ")."); - } catch (IOException e) { - Logger.LogError("Couldn't save OpenServers.", e); - } catch (Exception e) { - Logger.LogError("Problem encrypting servers?", e); - } finally { - try { - if (w != null) - w.close(); - } catch (IOException e2) { - Logger.LogError("Couldn't close writer during error", e2); - } - } - } - - public OpenServers LoadDefaultServers() { - if (OpenServers.DefaultServers == null) - OpenServers.DefaultServers = LoadDefaultServers(getApplicationContext()); - return OpenServers.DefaultServers; - } - - public static OpenServers LoadDefaultServers(Context context) { - if (OpenServers.DefaultServers != null) - return OpenServers.DefaultServers; - OpenFile f = GetDefaultServerFile(context); - try { - if (!f.exists() && !f.create()) { - Logger.LogWarning("Couldn't create default servers file (" + f.getPath() + ")"); - return new OpenServers(); - } else if (f.length() <= 1) - return new OpenServers(); // Empty file - else { - // Logger.LogDebug("Created default servers file (" + - // f.getPath() + ")"); - String data = f.readAscii(); - if (RootTools.debugMode) - Logger.LogDebug("Server JSON: " + data); - OpenServers.DefaultServers = new OpenServers(new JSONArray(data), - GetSignatureKey(context)); - if (RootTools.debugMode) - Logger.LogDebug("Loaded " + OpenServers.DefaultServers.size() + " servers @ " - + data.length() + " bytes from " + f.getPath()); - return OpenServers.DefaultServers; - } - } catch (IOException e) { - Logger.LogError("Error loading default server list.", e); - return new OpenServers(); - } catch (JSONException e) { - Logger.LogError("Error decoding JSON for default server list.", e); - return new OpenServers(); - } - + String pass = new Preferences(context) + .getSetting("global", "pref_master_pass", (String)null); + if (pass == null || pass.equals("")) + return GetSignatureKey(context); + else + return pass; } public static String GetSignatureKey(Context context) { String ret = ""; try { - Signature[] sigs = context.getPackageManager().getPackageInfo(context.getPackageName(), + Signature[] sigs = context.getPackageManager().getPackageInfo( + context.getPackageName(), PackageManager.GET_SIGNATURES).signatures; for (Signature sig : sigs) ret += sig.toCharsString(); From 57f03838fd4832e42078e2c50627b1f5024c96fb Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Thu, 7 Mar 2013 21:48:08 -0800 Subject: [PATCH 03/76] Encrypt Master Password --- .../activities/SettingsActivity.java | 47 +++++++++++++++---- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/src/org/brandroid/openmanager/activities/SettingsActivity.java b/src/org/brandroid/openmanager/activities/SettingsActivity.java index 61dc7e38..52082026 100644 --- a/src/org/brandroid/openmanager/activities/SettingsActivity.java +++ b/src/org/brandroid/openmanager/activities/SettingsActivity.java @@ -40,6 +40,7 @@ import org.brandroid.utils.Logger; import org.brandroid.utils.LruCache; import org.brandroid.utils.Preferences; +import org.brandroid.utils.SimpleCrypto; import org.brandroid.utils.Utils; import com.actionbarsherlock.app.ActionBar; @@ -307,7 +308,8 @@ public void onStopTrackingTouch(SeekBar seekBar) { // Preferences.getPreferences(getApplicationContext(), "servers"); // String servers = sp.getString("servers", ""); OpenServers servers = prefs.LoadDefaultServers(this); - // new OpenServers(prefs.getJSON("global", "servers", new JSONObject())); + // new OpenServers(prefs.getJSON("global", "servers", new + // JSONObject())); if (path.equals("server_add")) { setTitle(getTitle() + " - Add New"); getPreferenceScreen().findPreference("server_delete").setEnabled(false); @@ -525,7 +527,17 @@ public static void showMasterPassDialog(final Context context, boolean hilight) { final Preferences prefs = new Preferences(context); String msg = context.getResources().getString(R.string.s_master_pass_warning); - final String old = prefs.getSetting("global", "pref_master_pass", (String)null); + String pw = prefs.getSetting("global", "pref_master_pass", (String)null); + final String sigKey = GetSignatureKey(context); + if (pw != null && !pw.equals("")) + try { + pw = SimpleCrypto.decrypt(sigKey, pw); + } catch (Exception e) { + pw = ""; // corrupted? allow reset + } + else + pw = ""; + final String old = pw; final boolean isUpdate = old != null && !old.equals(""); if (isUpdate) msg += "\n\n" + context.getResources().getString(R.string.s_pass_old); @@ -544,11 +556,24 @@ public void onClick(DialogInterface dialog, int which) { return; } if (!isUpdate || old.equals(inp.getInputTopText())) - prefs.setSetting("global", "pref_master_pass", - inp.getInputText()); + { + final String newPw = inp.getInputText(); + new Thread(new Runnable() { + public void run() { + String encPw = newPw; + try { + encPw = SimpleCrypto.encrypt(sigKey, encPw); + } catch (Exception e) { + } + prefs.setSetting("global", + "pref_master_pass", encPw + ); + } + }).start(); + } } - }) - .create().show(); + }); + inp.create().show(); } @Override @@ -781,10 +806,16 @@ public void onClick(DialogInterface dialog, int which) { public static String GetMasterPassword(Context context) { String pass = new Preferences(context) .getSetting("global", "pref_master_pass", (String)null); + String sigKey = GetSignatureKey(context); if (pass == null || pass.equals("")) - return GetSignatureKey(context); - else + return sigKey; + else { + try { + pass = SimpleCrypto.decrypt(sigKey, pass); + } catch (Exception e) { + } return pass; + } } public static String GetSignatureKey(Context context) { From 57e109398b0decfb3cdddceed495a08933aae5fa Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Thu, 7 Mar 2013 21:50:00 -0800 Subject: [PATCH 04/76] Allow default returns for Private Keys --- .../openmanager/util/PrivatePreferences.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/org/brandroid/openmanager/util/PrivatePreferences.java b/src/org/brandroid/openmanager/util/PrivatePreferences.java index 9084976d..47eec273 100644 --- a/src/org/brandroid/openmanager/util/PrivatePreferences.java +++ b/src/org/brandroid/openmanager/util/PrivatePreferences.java @@ -1,14 +1,21 @@ package org.brandroid.openmanager.util; -import java.util.Hashtable; +import java.util.HashMap; import java.util.Locale; +import java.util.Map; public class PrivatePreferences { - private static final Hashtable privateKeys = new Hashtable(); + private static final Map privateKeys = new HashMap(); public static final String getKey(String name) { - return privateKeys.get(name.toLowerCase(Locale.US)); + return getKey(name, ""); + } + + public static final String getKey(String name, String defValue) { + if(privateKeys.containsKey(name.toLowerCase(Locale.US))) + return privateKeys.get(name.toLowerCase(Locale.US)); + else return defValue; } public static final String getBoxAPIKey() { From fcb0d6dea1b969c03dd79d7569135de7501dd7df Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Thu, 7 Mar 2013 21:54:40 -0800 Subject: [PATCH 05/76] Master Key --- src/org/brandroid/openmanager/util/PrivatePreferences.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/org/brandroid/openmanager/util/PrivatePreferences.java b/src/org/brandroid/openmanager/util/PrivatePreferences.java index 484fd123..36b17e93 100644 --- a/src/org/brandroid/openmanager/util/PrivatePreferences.java +++ b/src/org/brandroid/openmanager/util/PrivatePreferences.java @@ -28,5 +28,9 @@ public static final String getBoxAPIKey() { privateKeys.put("box_secret", "BcTh1GpJpma1cJc58sqcfZSjDZeuiYZ2"); privateKeys.put("dropbox_key", "vajaedmhzkkp3sw"); privateKeys.put("dropbox_secret", "plkrfrygu17glgn"); + privateKeys.put("master_key", "I'm not sure why I'm going " + + "through the trouble of making this " + + "encryption mechanism so secure. " + + "I doubt anyone will ever try to hack it."); } } From 005219c6f6b0f240b3c7b7e751ee506cbe45a983 Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Thu, 7 Mar 2013 21:57:41 -0800 Subject: [PATCH 06/76] Allow private master key --- .../brandroid/openmanager/activities/SettingsActivity.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/org/brandroid/openmanager/activities/SettingsActivity.java b/src/org/brandroid/openmanager/activities/SettingsActivity.java index 52082026..9752bf50 100644 --- a/src/org/brandroid/openmanager/activities/SettingsActivity.java +++ b/src/org/brandroid/openmanager/activities/SettingsActivity.java @@ -34,6 +34,7 @@ import org.brandroid.openmanager.fragments.DialogHandler; import org.brandroid.openmanager.interfaces.OpenApp; import org.brandroid.openmanager.util.InputDialog; +import org.brandroid.openmanager.util.PrivatePreferences; import org.brandroid.openmanager.util.RootManager; import org.brandroid.openmanager.util.ShellSession; import org.brandroid.utils.DiskLruCache; @@ -819,7 +820,9 @@ public static String GetMasterPassword(Context context) { } public static String GetSignatureKey(Context context) { - String ret = ""; + String ret = PrivatePreferences.getKey("master_key", ""); + if(!ret.equals("")) + return ret; try { Signature[] sigs = context.getPackageManager().getPackageInfo( context.getPackageName(), From 31289e30ab6023454dc377f126435c414191efaa Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Fri, 8 Mar 2013 19:02:40 -0800 Subject: [PATCH 07/76] Remove master key (too easily hackable) --- src/org/brandroid/openmanager/util/PrivatePreferences.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/org/brandroid/openmanager/util/PrivatePreferences.java b/src/org/brandroid/openmanager/util/PrivatePreferences.java index 36b17e93..484fd123 100644 --- a/src/org/brandroid/openmanager/util/PrivatePreferences.java +++ b/src/org/brandroid/openmanager/util/PrivatePreferences.java @@ -28,9 +28,5 @@ public static final String getBoxAPIKey() { privateKeys.put("box_secret", "BcTh1GpJpma1cJc58sqcfZSjDZeuiYZ2"); privateKeys.put("dropbox_key", "vajaedmhzkkp3sw"); privateKeys.put("dropbox_secret", "plkrfrygu17glgn"); - privateKeys.put("master_key", "I'm not sure why I'm going " + - "through the trouble of making this " + - "encryption mechanism so secure. " + - "I doubt anyone will ever try to hack it."); } } From 54d69917f9fd37a0d3268a4023bded78528e9940 Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Wed, 13 Mar 2013 11:36:41 -0700 Subject: [PATCH 08/76] Default servers refactor into functions --- res/layout/bookmark_layout.xml | 39 +++++++++---------- .../openmanager/activities/OpenExplorer.java | 2 +- .../activities/ServerSetupActivity.java | 13 ++++--- .../activities/SettingsActivity.java | 4 +- .../brandroid/openmanager/data/OpenSMB.java | 12 +++--- .../openmanager/data/OpenServer.java | 18 +++++---- .../openmanager/data/OpenServers.java | 7 +++- .../openmanager/util/FileManager.java | 17 ++++---- .../openmanager/util/NetworkIOTask.java | 2 +- 9 files changed, 62 insertions(+), 52 deletions(-) diff --git a/res/layout/bookmark_layout.xml b/res/layout/bookmark_layout.xml index 8bf7c2fe..7e626414 100644 --- a/res/layout/bookmark_layout.xml +++ b/res/layout/bookmark_layout.xml @@ -1,34 +1,29 @@ - - - + android:background="?attr/drawerListSelector" + android:gravity="center|left" + android:paddingLeft="8dp" + android:paddingRight="8dp" > + android:progressDrawable="@drawable/progress_horizontal" + android:visibility="gone" /> @@ -60,6 +57,7 @@ style="@style/Text.Small.Dialog" android:layout_width="wrap_content" android:layout_alignBaseline="@+id/content_text" + android:layout_marginLeft="2dp" android:layout_toRightOf="@+id/content_text" android:ellipsize="none" android:lines="1" @@ -80,19 +78,20 @@ + android:gravity="right" + android:visibility="gone" > + android:text="@string/s_size" + android:visibility="gone" /> - - \ No newline at end of file + \ No newline at end of file diff --git a/src/org/brandroid/openmanager/activities/OpenExplorer.java b/src/org/brandroid/openmanager/activities/OpenExplorer.java index 560cf618..2e54b090 100644 --- a/src/org/brandroid/openmanager/activities/OpenExplorer.java +++ b/src/org/brandroid/openmanager/activities/OpenExplorer.java @@ -827,7 +827,7 @@ public void onPasswordEntered(String password) { if (path instanceof OpenNetworkPath) { ((OpenNetworkPath)path).getServer().setPassword(password); - ServerSetupActivity.SaveToDefaultServers(OpenServers.DefaultServers, c); + ServerSetupActivity.SaveToDefaultServers(OpenServers.getDefaultServers(), c); } } catch (Exception e) { } diff --git a/src/org/brandroid/openmanager/activities/ServerSetupActivity.java b/src/org/brandroid/openmanager/activities/ServerSetupActivity.java index 52e6db7d..ca1d0c38 100644 --- a/src/org/brandroid/openmanager/activities/ServerSetupActivity.java +++ b/src/org/brandroid/openmanager/activities/ServerSetupActivity.java @@ -324,7 +324,9 @@ private void handleIntent(Intent data) { R.id.server_authenticate); ViewUtils.setViewsVisible(mBaseView, true, R.id.server_logout); AndroidAuthSession sess = OpenDropBox.buildSession(server); - sess.finishAuthentication(); + try { + sess.finishAuthentication(); + } catch(Exception e) { } getDropboxAccountInfo(); } sp.edit().clear().commit(); @@ -991,8 +993,8 @@ else if (f2.exists()) { } public static OpenServers LoadDefaultServers(Context context) { - if (OpenServers.DefaultServers != null) - return OpenServers.DefaultServers; + if (OpenServers.hasDefaultServers()) + return OpenServers.getDefaultServers(); OpenFile f = ServerSetupActivity.GetDefaultServerFile(context); try { if (!f.exists() && !f.create()) { @@ -1032,8 +1034,7 @@ public static OpenServers LoadDefaultServers(Context context) { } else if (DEBUG) Logger.LogDebug("Server setup upgraded!"); OpenServers.setDecryptKey(dk); - OpenServers.DefaultServers = new OpenServers(jarr); - return OpenServers.DefaultServers; + return OpenServers.setDefaultServers(new OpenServers(jarr)); } } catch (IOException e) { Logger.LogError("Error loading default server list.", e); @@ -1093,7 +1094,7 @@ private static boolean canDecryptPasswords(JSONArray json, String key) throws JS } public static void SaveToDefaultServers(OpenServers servers, Context context) { - OpenServers.DefaultServers = servers; + OpenServers.setDefaultServers(servers); SaveToDefaultServers(servers.getJSONArray(true, context), context); } diff --git a/src/org/brandroid/openmanager/activities/SettingsActivity.java b/src/org/brandroid/openmanager/activities/SettingsActivity.java index e16b8d86..1044e867 100644 --- a/src/org/brandroid/openmanager/activities/SettingsActivity.java +++ b/src/org/brandroid/openmanager/activities/SettingsActivity.java @@ -563,10 +563,10 @@ public void run() { } prefs.setSetting("global", "pref_master_pass", encPw); OpenServers.setDecryptKey(GetMasterPassword(context)); - JSONArray jarr = OpenServers.DefaultServers.getJSONArray(); + JSONArray jarr = OpenServers.getDefaultServers().getJSONArray(); ServerSetupActivity.encryptPasswords(jarr, newPw); ServerSetupActivity.SaveToDefaultServers(jarr, context); - OpenServers.DefaultServers = new OpenServers(jarr); + OpenServers.setDefaultServers(new OpenServers(jarr)); } }).start(); } diff --git a/src/org/brandroid/openmanager/data/OpenSMB.java b/src/org/brandroid/openmanager/data/OpenSMB.java index ca9c5e49..326ec6fe 100644 --- a/src/org/brandroid/openmanager/data/OpenSMB.java +++ b/src/org/brandroid/openmanager/data/OpenSMB.java @@ -49,7 +49,7 @@ public OpenSMB(String urlString) throws MalformedURLException { URL url = new URL(null, urlString, Handler.SMB_HANDLER); NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(url.getUserInfo()); if (auth.getPassword() == null || auth.getPassword() == "") { - OpenServers servers = OpenServers.DefaultServers; + OpenServers servers = OpenServers.getDefaultServers(); OpenServer s = servers.findByUser("smb", url.getHost(), auth.getUsername()); if (s != null) { auth.setUsername(s.getUser()); @@ -86,7 +86,7 @@ public OpenSMB(String urlString, long size, long modified) throws MalformedURLEx NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(url.getUserInfo()); if (auth.getUsername() == null || auth.getUsername() == "" || auth.getPassword() == null || auth.getPassword() == "") { - OpenServers servers = OpenServers.DefaultServers; + OpenServers servers = OpenServers.getDefaultServers(); OpenServer s = servers.findByUser("smb", url.getHost(), auth.getUsername()); if (s == null) s = servers.findByHost("smb", url.getHost()); @@ -518,18 +518,18 @@ public SmbFile getFile() { private String getServerPath(String path) { OpenServer server = null; if (getServerIndex() >= 0) - server = OpenServers.DefaultServers.get(getServerIndex()); + server = OpenServers.getDefaultServers().get(getServerIndex()); else { Uri uri = Uri.parse(path); String user = uri.getUserInfo(); if (user.indexOf(":") > -1) user = user.substring(0, user.indexOf(":")); - server = OpenServers.DefaultServers.findByPath("smb", uri.getHost(), user, + server = OpenServers.getDefaultServers().findByPath("smb", uri.getHost(), user, uri.getPath()); if (server == null) - server = OpenServers.DefaultServers.findByUser("smb", uri.getHost(), user); + server = OpenServers.getDefaultServers().findByUser("smb", uri.getHost(), user); if (server == null) - server = OpenServers.DefaultServers.findByHost("smb", uri.getHost()); + server = OpenServers.getDefaultServers().findByHost("smb", uri.getHost()); Logger.LogVerbose("User: " + user + " :: " + server.getUser() + ":" + server.getPassword().substring(0, 1) diff --git a/src/org/brandroid/openmanager/data/OpenServer.java b/src/org/brandroid/openmanager/data/OpenServer.java index 3503c6da..b9136d23 100644 --- a/src/org/brandroid/openmanager/data/OpenServer.java +++ b/src/org/brandroid/openmanager/data/OpenServer.java @@ -70,12 +70,16 @@ public int getServerIndex() { if (mServerIndex > -1) return mServerIndex; - for (int i = 0; i < OpenServers.DefaultServers.size(); i++) + if(OpenServers.hasDefaultServers()) { - if (OpenServers.DefaultServers.get(i).equals(this)) + OpenServers servers = OpenServers.getDefaultServers(); + for (int i = 0; i < servers.size(); i++) { - mServerIndex = i; - return i; + if (servers.get(i).equals(this)) + { + mServerIndex = i; + return i; + } } } return -1; @@ -182,7 +186,7 @@ public String getType() { public String get(String key) { Object o = mData.opt(key); - String ret = null; + String ret = ""; if (o instanceof String) ret = (String)o; else if (o != null) @@ -226,11 +230,11 @@ public OpenServer setSetting(String key, long value) { } public String getHost() { - return get("host"); + return get("host", ""); } public String getPath() { - String mPath = get("dir"); + String mPath = get("dir", ""); return mPath + (mPath.equals("") || mPath.endsWith("/") ? "" : "/"); } diff --git a/src/org/brandroid/openmanager/data/OpenServers.java b/src/org/brandroid/openmanager/data/OpenServers.java index 62ad2458..2a5a89c4 100644 --- a/src/org/brandroid/openmanager/data/OpenServers.java +++ b/src/org/brandroid/openmanager/data/OpenServers.java @@ -13,7 +13,8 @@ public class OpenServers implements Iterable { private static final long serialVersionUID = 6279070404986957630L; private CopyOnWriteArrayList mData; - public static OpenServers DefaultServers = null; + private static OpenServers DefaultServers = new OpenServers(); + private static boolean mDefaultServersSet = false; private static String mDecryptKey; private final boolean DEBUG = OpenExplorer.IS_DEBUG_BUILD && false; @@ -36,6 +37,10 @@ public OpenServers(JSONArray arr) { } } + public static boolean hasDefaultServers() { return mDefaultServersSet; } + public static OpenServers setDefaultServers(OpenServers servers) { mDefaultServersSet = true; DefaultServers = servers; return servers; } + public static OpenServers getDefaultServers() { return DefaultServers; } + public static void setDecryptKey(String key) { mDecryptKey = key; } protected static String getDecryptKey() { return mDecryptKey; } diff --git a/src/org/brandroid/openmanager/util/FileManager.java b/src/org/brandroid/openmanager/util/FileManager.java index 160876e4..1f354921 100644 --- a/src/org/brandroid/openmanager/util/FileManager.java +++ b/src/org/brandroid/openmanager/util/FileManager.java @@ -349,29 +349,30 @@ public static OpenPath getOpenCache(String path, Boolean bGetNetworkedFiles, Sor if (mOpenCache == null) mOpenCache = new Hashtable(); OpenPath ret = mOpenCache.get(path); + OpenServers servers = OpenServers.getDefaultServers(); if (ret == null) { - if (path.startsWith("ftp:/") && OpenServers.DefaultServers != null) { + if (path.startsWith("ftp:/") && servers != null) { Logger.LogDebug("Checking cache for " + path); FTPManager man = new FTPManager(path); FTPFile file = new FTPFile(); file.setName(path.substring(path.lastIndexOf("/") + 1)); Uri uri = Uri.parse(path); - OpenServer server = OpenServers.DefaultServers.findByHost("ftp", uri.getHost()); + OpenServer server = servers.findByHost("ftp", uri.getHost()); man.setUser(server.getUser()); man.setPassword(server.getPassword()); ret = new OpenFTP(null, file, man); } else if (path.startsWith("scp:/")) { Uri uri = Uri.parse(path); ret = new OpenSCP(uri.getHost(), uri.getUserInfo(), uri.getPath(), null); - } else if (path.startsWith("sftp:/") && OpenServers.DefaultServers != null) { + } else if (path.startsWith("sftp:/") && servers != null) { Uri uri = Uri.parse(path); - OpenServer server = OpenServers.DefaultServers.findByHost("sftp", uri.getHost()); + OpenServer server = servers.findByHost("sftp", uri.getHost()); ret = new OpenSFTP(uri); SimpleUserInfo info = new SimpleUserInfo(); if (server != null) info.setPassword(server.getPassword()); ((OpenSFTP)ret).setUserInfo(info); - } else if (path.startsWith("smb:/") && OpenServers.DefaultServers != null) { + } else if (path.startsWith("smb:/") && servers != null) { try { Uri uri = Uri.parse(path); String user = uri.getUserInfo(); @@ -379,12 +380,12 @@ public static OpenPath getOpenCache(String path, Boolean bGetNetworkedFiles, Sor user = user.substring(0, user.indexOf(":")); else user = ""; - OpenServer server = OpenServers.DefaultServers.findByPath("smb", uri.getHost(), + OpenServer server = servers.findByPath("smb", uri.getHost(), user, uri.getPath()); if (server == null) - server = OpenServers.DefaultServers.findByUser("smb", uri.getHost(), user); + server = servers.findByUser("smb", uri.getHost(), user); if (server == null) - server = OpenServers.DefaultServers.findByHost("smb", uri.getHost()); + server = servers.findByHost("smb", uri.getHost()); if (user == "") user = server.getUser(); if (server != null && server.getPassword() != null diff --git a/src/org/brandroid/openmanager/util/NetworkIOTask.java b/src/org/brandroid/openmanager/util/NetworkIOTask.java index 5394578b..a404fe9d 100644 --- a/src/org/brandroid/openmanager/util/NetworkIOTask.java +++ b/src/org/brandroid/openmanager/util/NetworkIOTask.java @@ -129,7 +129,7 @@ protected OpenPath[] doInBackground(OpenPath... params) { if (path instanceof OpenNetworkPath) { int si = ((OpenNetworkPath)path).getServerIndex(); if (si > -1) - server = OpenServers.DefaultServers.get(si); + server = OpenServers.getDefaultServers().get(si); if (server != null && server.getPassword() != null && server.getPassword() != "") info.setPassword(server.getPassword()); From c6069bc830d01a8a755dbe4109170b9e2763d3d0 Mon Sep 17 00:00:00 2001 From: "Brandon Bowles (Brandon5)" Date: Thu, 14 Mar 2013 11:13:34 -0700 Subject: [PATCH 09/76] Drive Secret --- src/org/brandroid/openmanager/util/PrivatePreferences.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/org/brandroid/openmanager/util/PrivatePreferences.java b/src/org/brandroid/openmanager/util/PrivatePreferences.java index 36b17e93..6e161425 100644 --- a/src/org/brandroid/openmanager/util/PrivatePreferences.java +++ b/src/org/brandroid/openmanager/util/PrivatePreferences.java @@ -28,6 +28,7 @@ public static final String getBoxAPIKey() { privateKeys.put("box_secret", "BcTh1GpJpma1cJc58sqcfZSjDZeuiYZ2"); privateKeys.put("dropbox_key", "vajaedmhzkkp3sw"); privateKeys.put("dropbox_secret", "plkrfrygu17glgn"); + privateKeys.put("drive_secret", "4Q7GP50Vc412WEx0T2LY40p_"); privateKeys.put("master_key", "I'm not sure why I'm going " + "through the trouble of making this " + "encryption mechanism so secure. " + From 0dd8335b924440ebe1bdd91503be9293a85ea900 Mon Sep 17 00:00:00 2001 From: "Brandon Bowles (Brandon5)" Date: Thu, 14 Mar 2013 15:18:21 -0700 Subject: [PATCH 10/76] More google secrets --- src/org/brandroid/openmanager/util/PrivatePreferences.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/org/brandroid/openmanager/util/PrivatePreferences.java b/src/org/brandroid/openmanager/util/PrivatePreferences.java index 6e161425..1ad0be10 100644 --- a/src/org/brandroid/openmanager/util/PrivatePreferences.java +++ b/src/org/brandroid/openmanager/util/PrivatePreferences.java @@ -28,7 +28,9 @@ public static final String getBoxAPIKey() { privateKeys.put("box_secret", "BcTh1GpJpma1cJc58sqcfZSjDZeuiYZ2"); privateKeys.put("dropbox_key", "vajaedmhzkkp3sw"); privateKeys.put("dropbox_secret", "plkrfrygu17glgn"); + privateKeys.put("drive_client_id", "645291897772-1a86vuv4n5vfpcecb1c26gib52a4013m.apps.googleusercontent.com"); privateKeys.put("drive_secret", "4Q7GP50Vc412WEx0T2LY40p_"); + privateKeys.put("google_api_key", "AIzaSyCaxVyRcOV5nej6x-6iONgKOsrNGmrk4ZI"); privateKeys.put("master_key", "I'm not sure why I'm going " + "through the trouble of making this " + "encryption mechanism so secure. " + From 1a6aa1fcd67644945de89f0fc29c094317e59d11 Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Thu, 14 Mar 2013 22:50:37 -0700 Subject: [PATCH 11/76] all kinds of google apis & keys --- src/org/brandroid/openmanager/util/PrivatePreferences.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/org/brandroid/openmanager/util/PrivatePreferences.java b/src/org/brandroid/openmanager/util/PrivatePreferences.java index 1ad0be10..605d375d 100644 --- a/src/org/brandroid/openmanager/util/PrivatePreferences.java +++ b/src/org/brandroid/openmanager/util/PrivatePreferences.java @@ -28,7 +28,10 @@ public static final String getBoxAPIKey() { privateKeys.put("box_secret", "BcTh1GpJpma1cJc58sqcfZSjDZeuiYZ2"); privateKeys.put("dropbox_key", "vajaedmhzkkp3sw"); privateKeys.put("dropbox_secret", "plkrfrygu17glgn"); - privateKeys.put("drive_client_id", "645291897772-1a86vuv4n5vfpcecb1c26gib52a4013m.apps.googleusercontent.com"); + privateKeys.put("oauth_drive_client_id", "645291897772.apps.googleusercontent.com"); + privateKeys.put("oauth_drive_secret", "xo9-oPP7P7Rj5er3J1qmzhoG"); + privateKeys.put("debug_drive_client_id", "645291897772-j66m64an4a8kj8he60ciarpmj12428ul.apps.googleusercontent.com"); + privateKeys.put("drive_client_id", "645291897772-c540moos4f9bo15jg7aqfat5c0cj5d0v.apps.googleusercontent.com"); privateKeys.put("drive_secret", "4Q7GP50Vc412WEx0T2LY40p_"); privateKeys.put("google_api_key", "AIzaSyCaxVyRcOV5nej6x-6iONgKOsrNGmrk4ZI"); privateKeys.put("master_key", "I'm not sure why I'm going " + From 4cf48a7ba7ef712b941c768d064259b3b0ce7651 Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Sun, 7 Apr 2013 00:09:25 -0700 Subject: [PATCH 12/76] Added stupid Guava lib back --- libs/guava-jdk5-13.0.jar | Bin 0 -> 1791384 bytes src/com/google/common/annotations/Beta.java | 50 - .../common/annotations/GwtCompatible.java | 88 -- .../common/annotations/GwtIncompatible.java | 52 -- .../common/annotations/VisibleForTesting.java | 27 - src/com/google/common/base/Absent.java | 109 --- .../google/common/base/AbstractIterator.java | 82 -- src/com/google/common/base/Ascii.java | 487 ---------- src/com/google/common/base/Charsets.java | 83 -- src/com/google/common/base/Defaults.java | 60 -- src/com/google/common/base/Enums.java | 133 --- .../base/FinalizablePhantomReference.java | 44 - .../common/base/FinalizableReference.java | 33 - .../base/FinalizableReferenceQueue.java | 296 ------ .../common/base/FinalizableSoftReference.java | 42 - .../common/base/FinalizableWeakReference.java | 42 - src/com/google/common/base/Function.java | 62 -- src/com/google/common/base/Joiner.java | 578 ------------ src/com/google/common/base/Objects.java | 442 --------- src/com/google/common/base/Optional.java | 249 ----- src/com/google/common/base/Preconditions.java | 445 --------- src/com/google/common/base/Present.java | 114 --- src/com/google/common/base/Strings.java | 233 ----- src/com/google/common/base/Supplier.java | 38 - src/com/google/common/base/Throwables.java | 220 ----- .../common/base/internal/Finalizer.java | 204 ---- src/com/google/common/base/package-info.java | 66 -- .../hash/AbstractCompositeHashFunction.java | 148 --- .../google/common/hash/AbstractHasher.java | 59 -- .../AbstractNonStreamingHashFunction.java | 158 ---- .../hash/AbstractStreamingHashFunction.java | 245 ----- src/com/google/common/hash/Funnel.java | 38 - src/com/google/common/hash/Funnels.java | 158 ---- src/com/google/common/hash/HashCode.java | 126 --- src/com/google/common/hash/HashCodes.java | 195 ---- src/com/google/common/hash/HashFunction.java | 207 ----- src/com/google/common/hash/Hasher.java | 75 -- .../hash/MessageDigestHashFunction.java | 178 ---- src/com/google/common/hash/PrimitiveSink.java | 102 -- src/com/google/common/hash/package-info.java | 26 - .../google/common/io/AppendableWriter.java | 135 --- .../google/common/io/ByteArrayDataInput.java | 65 -- .../google/common/io/ByteArrayDataOutput.java | 55 -- src/com/google/common/io/ByteProcessor.java | 49 - src/com/google/common/io/ByteStreams.java | 868 ------------------ src/com/google/common/io/CharStreams.java | 438 --------- src/com/google/common/io/Closeables.java | 104 --- .../google/common/io/CountingInputStream.java | 100 -- .../common/io/CountingOutputStream.java | 63 -- .../common/io/FileBackedOutputStream.java | 220 ----- src/com/google/common/io/Flushables.java | 80 -- src/com/google/common/io/InputSupplier.java | 40 - .../google/common/io/LimitInputStream.java | 116 --- src/com/google/common/io/LineBuffer.java | 117 --- src/com/google/common/io/LineProcessor.java | 45 - src/com/google/common/io/LineReader.java | 89 -- .../io/LittleEndianDataInputStream.java | 217 ----- .../io/LittleEndianDataOutputStream.java | 166 ---- .../google/common/io/MultiInputStream.java | 127 --- src/com/google/common/io/MultiReader.java | 98 -- .../google/common/io/NullOutputStream.java | 42 - src/com/google/common/io/OutputSupplier.java | 40 - .../common/io/PatternFilenameFilter.java | 62 -- src/com/google/common/io/Resources.java | 172 ---- src/com/google/common/io/package-info.java | 41 - .../common/primitives/AndroidInteger.java | 91 -- .../google/common/primitives/Booleans.java | 492 ---------- src/com/google/common/primitives/Bytes.java | 411 --------- src/com/google/common/primitives/Chars.java | 608 ------------ src/com/google/common/primitives/Doubles.java | 555 ----------- src/com/google/common/primitives/Floats.java | 552 ----------- src/com/google/common/primitives/Ints.java | 641 ------------- src/com/google/common/primitives/Longs.java | 596 ------------ .../common/primitives/ParseRequest.java | 57 -- .../google/common/primitives/Primitives.java | 134 --- src/com/google/common/primitives/Shorts.java | 614 ------------- .../google/common/primitives/SignedBytes.java | 193 ---- .../common/primitives/UnsignedInteger.java | 246 ----- .../common/primitives/UnsignedInts.java | 274 ------ .../common/primitives/UnsignedLong.java | 249 ----- .../common/primitives/UnsignedLongs.java | 390 -------- .../common/primitives/package-info.java | 69 -- 82 files changed, 15715 deletions(-) create mode 100644 libs/guava-jdk5-13.0.jar delete mode 100644 src/com/google/common/annotations/Beta.java delete mode 100644 src/com/google/common/annotations/GwtCompatible.java delete mode 100644 src/com/google/common/annotations/GwtIncompatible.java delete mode 100644 src/com/google/common/annotations/VisibleForTesting.java delete mode 100644 src/com/google/common/base/Absent.java delete mode 100644 src/com/google/common/base/AbstractIterator.java delete mode 100644 src/com/google/common/base/Ascii.java delete mode 100644 src/com/google/common/base/Charsets.java delete mode 100644 src/com/google/common/base/Defaults.java delete mode 100644 src/com/google/common/base/Enums.java delete mode 100644 src/com/google/common/base/FinalizablePhantomReference.java delete mode 100644 src/com/google/common/base/FinalizableReference.java delete mode 100644 src/com/google/common/base/FinalizableReferenceQueue.java delete mode 100644 src/com/google/common/base/FinalizableSoftReference.java delete mode 100644 src/com/google/common/base/FinalizableWeakReference.java delete mode 100644 src/com/google/common/base/Function.java delete mode 100644 src/com/google/common/base/Joiner.java delete mode 100644 src/com/google/common/base/Objects.java delete mode 100644 src/com/google/common/base/Optional.java delete mode 100644 src/com/google/common/base/Preconditions.java delete mode 100644 src/com/google/common/base/Present.java delete mode 100644 src/com/google/common/base/Strings.java delete mode 100644 src/com/google/common/base/Supplier.java delete mode 100644 src/com/google/common/base/Throwables.java delete mode 100644 src/com/google/common/base/internal/Finalizer.java delete mode 100644 src/com/google/common/base/package-info.java delete mode 100755 src/com/google/common/hash/AbstractCompositeHashFunction.java delete mode 100755 src/com/google/common/hash/AbstractHasher.java delete mode 100755 src/com/google/common/hash/AbstractNonStreamingHashFunction.java delete mode 100755 src/com/google/common/hash/AbstractStreamingHashFunction.java delete mode 100755 src/com/google/common/hash/Funnel.java delete mode 100755 src/com/google/common/hash/Funnels.java delete mode 100755 src/com/google/common/hash/HashCode.java delete mode 100755 src/com/google/common/hash/HashCodes.java delete mode 100755 src/com/google/common/hash/HashFunction.java delete mode 100755 src/com/google/common/hash/Hasher.java delete mode 100755 src/com/google/common/hash/MessageDigestHashFunction.java delete mode 100755 src/com/google/common/hash/PrimitiveSink.java delete mode 100755 src/com/google/common/hash/package-info.java delete mode 100755 src/com/google/common/io/AppendableWriter.java delete mode 100755 src/com/google/common/io/ByteArrayDataInput.java delete mode 100755 src/com/google/common/io/ByteArrayDataOutput.java delete mode 100755 src/com/google/common/io/ByteProcessor.java delete mode 100755 src/com/google/common/io/ByteStreams.java delete mode 100755 src/com/google/common/io/CharStreams.java delete mode 100755 src/com/google/common/io/Closeables.java delete mode 100755 src/com/google/common/io/CountingInputStream.java delete mode 100755 src/com/google/common/io/CountingOutputStream.java delete mode 100755 src/com/google/common/io/FileBackedOutputStream.java delete mode 100755 src/com/google/common/io/Flushables.java delete mode 100755 src/com/google/common/io/InputSupplier.java delete mode 100755 src/com/google/common/io/LimitInputStream.java delete mode 100755 src/com/google/common/io/LineBuffer.java delete mode 100755 src/com/google/common/io/LineProcessor.java delete mode 100755 src/com/google/common/io/LineReader.java delete mode 100755 src/com/google/common/io/LittleEndianDataInputStream.java delete mode 100755 src/com/google/common/io/LittleEndianDataOutputStream.java delete mode 100755 src/com/google/common/io/MultiInputStream.java delete mode 100755 src/com/google/common/io/MultiReader.java delete mode 100755 src/com/google/common/io/NullOutputStream.java delete mode 100755 src/com/google/common/io/OutputSupplier.java delete mode 100755 src/com/google/common/io/PatternFilenameFilter.java delete mode 100755 src/com/google/common/io/Resources.java delete mode 100755 src/com/google/common/io/package-info.java delete mode 100644 src/com/google/common/primitives/AndroidInteger.java delete mode 100644 src/com/google/common/primitives/Booleans.java delete mode 100644 src/com/google/common/primitives/Bytes.java delete mode 100644 src/com/google/common/primitives/Chars.java delete mode 100644 src/com/google/common/primitives/Doubles.java delete mode 100644 src/com/google/common/primitives/Floats.java delete mode 100644 src/com/google/common/primitives/Ints.java delete mode 100644 src/com/google/common/primitives/Longs.java delete mode 100644 src/com/google/common/primitives/ParseRequest.java delete mode 100644 src/com/google/common/primitives/Primitives.java delete mode 100644 src/com/google/common/primitives/Shorts.java delete mode 100644 src/com/google/common/primitives/SignedBytes.java delete mode 100644 src/com/google/common/primitives/UnsignedInteger.java delete mode 100644 src/com/google/common/primitives/UnsignedInts.java delete mode 100644 src/com/google/common/primitives/UnsignedLong.java delete mode 100644 src/com/google/common/primitives/UnsignedLongs.java delete mode 100644 src/com/google/common/primitives/package-info.java diff --git a/libs/guava-jdk5-13.0.jar b/libs/guava-jdk5-13.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..85881e5de49baa4e84e2c3fb595c255d39263b76 GIT binary patch literal 1791384 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%0D5%qi>ud{RrM7bakr#D#sjo)V_Kf1X< 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�bD$j1Vo0J6N--Zmz26$B&)7 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� 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 rouE1Djm_1^U$*C9X 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
p-ojNho);9-YQC+W?>y;bTh()qKQLV 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ℜ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®sn{LuW55GIoelNH0zX$n0!SOdoiW_w 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%0DcA0OS>v^FtwV1 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ɲ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
AT%iVvwSW&@2A@Hymx9-QE$E& zl2?=$3C#O`^wTED_kQowO`@t}O9$mxbb$N$C+8#aUzVWNdpm z6@Sgxc~q997y*vCt!#UB9nV&W^yiq(7y5=UJI!lnUqq9A zl7jnX%30*W@NJ2p47DmS-`Gi1RHhfWed74-+lCdb5Yw5s7n6x1t`c*aRZr}60ivor6|}nVDJ`ozMhbeEWw#+r#4ZB&(~K@@{Q&R3_>?|F{w_s z%q-6+-z*5U*U`N#`#U8ZRy4%otrAO`aSKVmft}H0$A)(ggSAnBB z0SZ?$o3W{@zQa81or_>9f|*`#uhRx1sxxoL)j%98S(> zQ1(n9wF_|<%HLof1ygd|liP%^A(N4!-SC-WZ$gPAmQ}tfVMw%a))C!(`#e1M>4mG| zM@&r(Cpn{V8iCpPRYsZPIN2&fQF%wqh#Ud(@oTFDBT_mn%0bf|)fCrd@hNgsm+0Sj zG1qeo(;6r~NM65~EQs`w{sz{w;68Cv{5!#)J*IV+<2-3*G;*wb^X0}Up|_42mL;_O z+S?UVYLHXzZt`m&F)Lvb(shYqCu2$%Eqz(Ac!EIN40CzO_{XFNhnL)&T5GO>e?yr2 z4Bv(PKol);G~_qOB#EDR)AoD_{gf=0XnkFLW=Q<`r=Yt~^F_<*6lC8e=EJ_Sq8knP zB>AIVUizvBQnz_Z>30vi$Y@?o^gg5u>|OX*D-;PW3H6Otvjsw2^95&i+RFutZyn3s zCy55Rqk7r-2R~>jMGtvVdDGtYwO9)Nt03U8fa`hjQDx&nzvmCN{76*Q^VrdlRlB5L zhes(kIlt#@Q|1(6Y%Ap#Q>L|$xDH!c(hn^^jVxN8FItwwe|g{-eK2rG8X^)PtEV0$ z`}cg=0k?iQpK2FdEuL~g3+D)}`fYrs&fgd_y@b5k5;<=CI8LQDHN4(r6g2A4j$Ppj z=e}1~CB6d>b!giztV)4pc3D)^*ugj@XkRyMvo*|k(lZB@nNKjxg=0j*V-g5MI<+pW zJ6krNb`adlY3U#=6@Kt1QV_XHm{hEkS}6$l^YiTl725)S?@on^1$!n>ETbLkOOn|V zg?mLe^wyxB@Lsei{_b*W{0;&aV_NIzo##qu`BDA+`K_E-NI&WrRZtPljXWhLt_$2H z^It%}zuGsv?tr<2#Lm3%MWTyx1D7mL@~a)^6}=@9Qm2M+k61@Tz7q8A#w(2(`r@Ki zn|x#6f{^%+^R*@PDF6CTY|DtvaGeOXu>`2&+$O2WuYSa7+9&@@F${Fqb#)I-yu}bEqCs;h^v~MGjvLWWQoHsDu-&xuv{OYvUD=^;T zH0DmZ$;GNO<4h)gIPh(1X(EPr6wY$yEw zDf!(`-Ji3r?VPI2-B->jSvBxZWRS=;) z%qraC3@&yRjnq&_%Vr2Mf&X%d6_- zlfMM#;ONZ%V6BSrQLQ@Ui{ekxC(!rplx)%0=P>hN!5!;V;3yYHIOc!xS^l|J)ydy^ z@J8XiPN%L0KQ)tr??lB068C;k=8|wL%8gBuI;KYBcEaP^=Le%aBB=uI6RScjlNFf* z*%(>O;h~}q2Wx5(aahe5f(xN^KWo;iZ1z708qr&1#?tXgRf*8Ui%Jr%@@Jz8pqh7Y zT*r6C2XVWl777@WWlhkmmSXZFG->KsiDXA%YrEE4cpp-9!~yrq-Nf@N6-!Db_gZ)LOxDPStB2CGB^*y$9c( z9PzWoml$}PW}wBcM*5T!yYb9uAxlZnDqZ$oU^-VP@W%Os(bm)s$Brrntn<@Qi%|@R za#vS&OUH7q>pji$ zgOAGOUvYAkHWp&=o|9HfrR>n#w)fg+iCfB+#C*ZMZ&}=k`hsJ}_I!!~UGvJD zY>K!qy^Ky0S!bvIiCsBCV``c^oEQDmJaLsfw{Brs=6!|l-N&3z>{L9$NiD4zmsCv* zaZOEsx2C>p?Tx?~?aiPS5?`*|P)dw0==pdE@BI*U#vC^LVx_|E+xtMlEv#(eDE(Kj zOeB?O8~fRf*V5~04-NO)52Mx4_1ro>GtA)xlvi2&Ww6;#SNg3F&*6qsQqU*H zn-v#)3`V5zS^DzN^O;ogAAMc$h6O_wX+wi*RZP9!ZA;X5u)HNpj*hq?GL$MbefMuo zo6L=jN2xXATe0;Q-3v1jJ@&Zszvp5x76CZ5B{B5k12Ytd&-5w7o}`MRh4Vl4I1OHT zxyTZclvxp9cEVxd&>;{J{()mhWgcU~Q-V(L?hmK9ZHuv$2n`)?r|~*27o&$Ags*@H6P7nlyF(ULLqh13LpAm2x)%04RwQl@l`*QHzfo!BuP2u;zh}LCAPo*G#=Sl+V)y?wZ}K+xr6hYtva4RZt6J*=A9>EOlj3zPm|lr7gLDL zO_d$g>9CMneP&)a$TWCTU9N@7Y{9)2=1#->;DGRYWs3N{8V{QjmXXkGiNo*UgEtGt zM(oZJ5^Aq%%i4m31O++2X`EC)WwM0Hcn&sD*Z#@6!U&Y4OV>ErUSPaAPZF1Fh^^23 z71648%E6EOml<<`&X2LpzC+w*?Q3hPIA6f`4fGib`3r)rG9!{g!|%tFDR9EF3IU#x z9oN6OddTRq*tKl@v) zwd3T4?n%=4^=>4?d|CP}@+8q^=Z5rsD!5KVr?j$R+yz3`cz>8q@~{Gkbx zS*Oh0*DXsm3t4wT+|N`-{emYmLxIt^^Up~=hFpYLdMG^qgiBXs*}vS99L@d~_*Ku( zevQ+Mm6(-huohe9tkev*93%gG!Umf|xT&*EBxCid+@tKYtq>0~yl9x&(!{k0rrW0< zVG{z8DS|_{8Ha{CtkI{bMg1WM+W*uN6wx@FS06jbKNXVK>&U+@7w@O!xvtQs-^nGV zxJ{CuM#w~7X0qR_d=klPrA?sQrXEn(7RseneVv^ZGB#wBClpi>^L?7!JKJ$#$mZy< z(1I7AzBP1Xwu$%q_wGiYM#h1xAv|lfpT6Hpq-_$dg1z$0l21eNq$nuZY%cRdlUyqg zyGI1mM;VPRT>&!Z&uvv!Y5tDo(VB%vqN2KF9xyFSGZ%@RpnktI^^LrjFdm**{a!97Dy zG-nPaZst#+?-s@iWsLpAhrWPedGQ8ylNew5pVFj4Vx0I_0W*$a6|mnKlO$<^Sg z*Tfz{b9)IL@zN~`Pm-Z0Ja@CB5l)P#TRAdBLw$MQPSaK%9zW*kpSZFLX2^DlY&dg# zWd46g0%|cu4Tx$u3_cVi2#L@;8@_o*FasCYNig%e#tv=yB}b6`Q7W49jSOnMiFlcs z*N~(POIX+4%PL3Ke&!xber~>eg*@KBnJ#7?arjmIIiFw0Rq4~-ys2V77GdsRkg`Eg zBha+UEFw(SG&bf=wzY1JMAGf6MCwL%uUvpv@Bd*?xp1x4Z)#Yni*5F7;Vp7Ue(8kv zx==k2f$+YnvJ7pu>RR?MWkyTmJSFI{-Qcg$e>G>F@DZ-m_;>6s%CoY!_#SCnEQfjA z@fu-wmd~OZuYbR8AYs~eG49r5DdPQ!BPuGP?b+oW#dB>WNpeUgI;I&$WB=^?xVHDb zwyqbIP|dQJ%+&G+lbKLtJK?9UCZ9cd&Lw;l#yYayDs?S1`tjW=7kvNwOZU4*zmNOt zhTC{1mx1r#tqFJ=KI1L7e50PVMC_%vG7(u~w^)PU z;gJn*+(<|=qDr8R8>9O3%LDg>RCSQ*gBP;+r2mY^H=~3FjOWf+eq#W!#!{Snea<;*?&Fregkc%Ap+l3*NDzCq70G~1B*u)SB=@u8 z*2TCV@tcy&t~68CIEahiFzq)uWdl37NZn~T6X4M0vjE4gGnx9N<Q!%r1RA>z0 zrBA16CrYukb9u#Jz8#m{1zm;5>c^#w?+16}PRj>v0n+4RFFN}QLQ2Zy%iX?{E?7<} zoVnhu&G6m~oxGr{$9HBT<68*S%^3S~I`=Ih5?=sOS`xE>Sn@vgT{*r+CO$Uex9N|6 z&0@Q!iA)siev3Oyq4j*Z`4Vfi>0hmzN~$;1rU zbvXx!iin&9(6BTdyzmzkXyfut>efytk_`rLcyyb#l7m^|tUFgV-Z*2IR#BKM) znlsfN-dfijF{cW;Z?04ZQeN?2<#wW@*n1}5O|2P445u`_peH}H4(!HCyPI26&^>ex zq*oBY%?rLeW8keHyt8;cSqv}>+F&P885@Ynuug3oPiIOSYRpSkJN@j$Bv*5O39 z!y19YGQNUei~_mrR|A2IycDM?1p(6BCT4SF`xL>V z_83%GC{jC*h?W+xX-%0YU+kLsES8Ce6%?B-X>c8l58i#!+Q6v$H(DU2Au>nUxRZ(R zgN^S~9qkj`m#TA7`RDG}q)%^RlO40k>-nZP`J%xw?FY_6P9viKlnl_7oEQclBzlR3 zU5@)&p|2|+Ix0CKvynCIg1@o7ybm|<1$MvvLLAC4JDx$MK^tCC5X?CCr&mb8&29Ss z?HU?jc)OLACU7yB+`yT8SgUfiAT8!LMi^{P6)#T)m%NmSZ?QmP_a9i|gPgC%| z@2|!|bh&HaEdK?5FiL~VUX9b3R;@SvG7X_y8>PU-$AkqI2Apo919?LEO-`&nICDbX z*y&SM#F0ANZcd4xNXS%6XiY0J1ZWy%qBXxRT4R{WNuD^z#1s%AoTxh>Xp|0OjN~A8 z?Dj(ai~O~wOHa&mEUKG@VO`kwE%m+GeAUC9=KDIpbIi-nyv>m~OSo+~}?!A3%ZGZNq0 z8ee4=`^-;OM}CWxOXhp~6R~Aa?P^)y*&g|~S;dgt__+lkASzIRGPfqha>fBmwB_UTfXTYo>P z{aT!cZo_sb;gQE;Ctu^*nn-c2`|vO{B~N%%8xcX2CYv)oJVqLj)OI|8pyqyXXAq9% zwIbm(|HNemv-QW>z8%)UK8ikL@zuh#n&I6YQqH42NrM5KUC03Ze6z=9zSwOQ-)W~R zUywOnb#g83yWQo-!!UclrOs+USf`tJ5_kW}`R%Ul>V>NBax{zuY9!`w8xvd8F0D5L zX)yK}DZ&1+XK$+DwVtZ~^hI`BDykiNc9?{U*PFJjqd`x+&s&`TZrC@% z$gvyn?A;EAbLmem#LYyfPL{Ttt^|&7N^1`=Cgb~DX1&tRmIzBmqNkCFim`={9^Goz zVlqatw024s)?8g;F33vJsCIK#14cZp|?Rnw(<6xCxj$WvR@{oN>?qU7(rR~&=n-1lD zs+ZXD80Ae1_7VdoZ*eH;dXhcE1Z@Pg;a8;6QLOdbn8?4k&sdk7*;eoCLo5aL`tzI?`csdKU4jZN_wh{US_tzzf;an3X7T6Qi*)DIOKpAxZtcM(x+}_b0#q6Ax5LNN*OR|6{Gw;f|^Z_S5 z>sRW5zs~IfCJG#B>kYG1s>F)>Mt>Lw&@2&GSKlU6yDd`VEOaFZ-miafaZpyHaqf=#+uTQIUF}JKP&1NIBcb4(DxJy5!6aIRXYI0=?NTPJN0Yvr=kwR0bQL00CX$+vEpyhdjK z-NizMEY4a~+@c%4#*&{E@&0l2lof@I$%#vM{zG0hA6s52J{Qvg4Z8zrz*_>mIhibK z>xp43%%7^NvIn^Mk;t5sUpSXD_xNj0ha6mcJWbdAyNOkH{qv9~IMBcU&iQ<2r;V}1 zb67w7>2)wG59J0S=9q2=D?awpsP0rY^52eHS=tMK?Rr&`n(QHD0h2&7PKr!9Oqp2B z)BaF+o*og>3RzK$IPaeZq87A?2XzxpuT2rHc+#ir9zw+#JJXlL#1-QLV_%^h<%uuu zi<9q(lP8MTkI2pZo)ecXK)xwNJ_-kqT1reSuMQufL_SmYlr?4~I@QMp9^<@()pe@D z($d-bnPnQ4S2C8vBOeQ1O)22<&T2E${LyDRlORKYPLfsp&R>4N5Y#ge~-Kw9$nK zf8q@e0^YATY_dA(2bA}p@mtyMh;jqPoQS9l6^MV4~^9Ic|zQ= zMZb-NqWISSCcHl3^{z4cOHg<-RoO0m%CG%Ri-&B%O-V7(i3m$98z=lAgF7|87)_v- zgrG^DO=N)KjdJ&fl$sqm8BWDue5H%azm zt3=13@}62s*fBrH_$C&A3#W1=9kn$m+%3^H>KeCRI5aEgoHw<5wSdyq*_$!hg(gxd zQpos6T}Aq*^?_ZhcAC$B?qtyO8PH1M^lWDEN?{$c?In(XhAycR8Z0RCf_O0fSbtOh z-HvK9)j6xo7_qcIi~J+azV9{T(1!2v{;j$y9{tKqtq|lvR=vx`kV0RZrif)yGRa7x#T8H)>#Nu29Sox>CWuiX7s+^oN}k1z?j(O z@p{Cv#iXXQHz7PpapFzgB1j?qE22^#Qj+u~if+i$j|y`=XOKqsx5X}h>vr3_ohuAX z9cnC-FA-Mja(;H<59n2CojeRT0)I*EmJ4luP@>0&bYra&?N4zLZ&J&v&dbovyT*#J zeiz@!(`u7T7%V7fHtYVWV%;8G=2?gqs8z*l4X0j0C0hBTnSJ?J)y;&7xQw#Ylv|02 zsYeYX9BsR)iL(>RfbN^8I`(w#$V1W6Z=YH_hWMA#($gIv-}(-3_)=(vyQ_cw@{-}t zcQ#|BWp~pk>BUaNU+An^xHZmBo?~-1Zxb{1TqmZ(3=`uSsD`$t9o2u09tdU8i9L67 zUJ-paDwD;&?TkaqWQQ0#%BLPYweCW#lBiVvN1JP!52>ARrJdJ0V?=kr{9W=bkyw6p zxd2^FLPFW#Ku{r$uLH?t{_{tr;Q94cgG+01eU&xk5Q}w3N(zxfnuxodo#SFGSR%h> z-~}E3SCQ7OZoFLPTz&_Vwcs1o6S8i$ZFii{-%G@vufJP)PQv?5+Q6Wk`7_ zXB^P29K!5Wn(*=azJxMJ2BZZiemKEd5K)E=_rm`+{el$qloL=dM^h>kkN{eneDel*5)`;|jq6JkOBO3#Nv z?h0z>`<)-{1k$BHT3?)VSVBh95n4tW*m4p<&ed`bRPbKN{#f)`(HKRbGcXIKrZBKn= z1muZYXBPV%o}VQ)?Yi}cZqYqFGpi%*_KH13DaRa%u#mlKpBsCaSvs=732hG_M{n;r zuKR6=yW3s=gOltWC3ZX9o3xPfk=I@WW#&DigdxqvT+7sq66)7B_YYf$n}*}NQlco1 zU&T;%KedGamcaSPF=-hX7(V*<32E0TItqEF3Kor7sd~wel{{q9^l@xn|NNIh@3kR2xpYxG>uN=QXzZIYR)D^=efio$bLw>< z*=2#kkMjooxPJ=kW(VKyn|`Cbu;r)U7(YfPXs<5#JxipOGlP|+#YW@x#r3>#aPdH~ z-%)6UZpxK>P3u1BIbGF~6XXy?~O%$kvB!#jc zC3o@GJt(2FK8w$iG`hn*4Yk-Y4o*kQt2DCfQgNO_l5t{q|K)7rQsHlOq{QG;TC2zj zCyE3V`R~MyFNNram-RbCr|V5WWOLjk*2;V3GY_Qj+j0utd(C|7{=lRsdsgxavzV5f z>D2n~>uFJ@6cMhL08=bQC*pztYe$B&%HeqCUWGrhsmCi8<1d0SYcDOerg&RlV%qZ! zLBFypuHi96Q7oZD1qNFezH2R@7kPl`c%*suCbUP8`JVrhWvxB`mA{&&kxnmqM&()%MNn(ap|x zX{n@-@FIK@US)Qme1iB!_h#6mz$2AI(S3 za36-VwpAX6Gq&k((&UE~FU7v5rmgw0iil0Zggt!|Vced+b+DWBdkh%*&P~GO`0kC? zBjMOt`2$?kQ`<^ZB9-d zK5h<39X>xw-zL0+c9QJ`I^Fz3amIG}eR0lq+^xaeVYaj8*i?fFy0ZDm1h2p9huuxOv$6Q=D?d1-)hO!K%8 ze|WwOcbxecfp{Me!-Xq8S$^se2c2&5F$qq8A3CKVY!I&aY8l}e8CD1ijb|{7^`19QzA-IRZRN(9{{76>lAKVZd2Ai>04jzZ$8ror6{%4QF z@D1ZI4}Z5CLO9<(7?OY5r6119;v*aU!ZwVvW%#-o;kf*<7~wt{W(_BH1QTpQg7Lxm zw!-B74bJ`0SK{uMk*`f*B5=)X&4eo&56ke^JTNzS-$j^+|MIaPWCquh(3T)%~} z!7UxZXj>?6pglE)1;Y8Q`8{1xe85K3Jr_ebHh+|Ye_Vhu`8OZKNLJV$n&GegVbySy z=P<05w~xz+-ZL;1|A=eY(_hos#5xcUdALr`j{2z$hZ~Cv2vlLf1G6{y1PuiNXxkP0ivCS3tY|L zN$QnYbTZ9Vv!{K*)9FKs=fn&Qbxe-v#IjN=daUlDJ$MG!t%U%YSW zue>E{VXC;*Y+15JJi_at-^=BO*8+%p$8Jv%P1ynWF!Ji15hpO!z#1uv$U z&xY)ssBVC8eWSgIb&aGgf_}WK?ZdD_Xmw%gZ;&+^hba0szZlLtN8Jt1w^ZE#^_o^& zg!I_8unFy0OWTKMCC=)C$KN1lavH(6R^0&Q8v6NZe>V#r_xxjgX7zlem1#?SL}YCiczSJGf0aVzmIQTT!#`?R{L^`G-zym53AIy@zE|eK z#c5Cahp1y3=Bc5_TUH_rR0<+6R|ukLT2&$o=TCANW=~EdPHFof8fH%NAyjGm;I7Ez z+an8)?FsmAS9r3nXyW%78h)E}t_Yx2 zAD%?ZfqrC)Y3AdFH}nkxljs!zJnC!{Xj__%@0n(dFFqC;{+yJp2#`=;&cK%|^Zct` z(z|D>-TEp&&KfDdK>s)XK-sN&p<&!)wIxz}L6aVnrr8C#b}M)O(F9tRmQS2I`_Nu} zWq^x%F%+uh6QN!*yysOJ@L7F17oWMpGe(_#bnmV*;D@?cI{x7Ae_54sTl{4?#=fP6PAB;2B|hHEC~&RA1z)!$jnI zK~ZQpI|;RGsnMK?Z&QD(S7^8}d1Q&SU*v1R6z_I{qTSk*e`Se;SbR8*MxZZ}jxX16 z`?k<VJ3v=z(iF~nXv?~3FV0HG( zJ+{h#N)5^pv@Ly~4@@&&7u1D@$CFF&B-+C1q-b{*FAdMG4DlyIYUMOm}Ug!Hwp-mY)gsHQ`_6#Zm9yDM% zA~Sv$M{|Kt`5TmJ|CQOGT>h`j1f^dE%3blJhF1w}i58l@ioP_2i70|$HW;#wQ~Yao zlL2GPgVskcQZUI|iE?*jYl(fiJU;~;t_DH&S>WlvoKz^H(FbT0ps|3y0aXP!&<}=s zpra!hU^GBZy*4;QJJidOh%P8;{wtM1*=+%VJ569C#-P((S^QUyg7SZ}pvNnBFiV*W za#6v_MD@X9TyQoKX;4P}S4x1A9z>E_gA+@FaV1zV1Sabh!1w};?M9$jw@lD;66j{J z0Av$@(^OjlD*s;;D82H4Qv9#G-v3Vi-)VBeu{&ps81I=27TVE{Hf0j|3fL^Qnv>;ROh;1xcS{clCWe=DW| z!w1I>!6jYA{KpCb%m1&TO2CT$+tB}Zq6ut*emVr~Gr&_GcmlT*8#p5$$Rh-=nhw~p zFmNUo@busPqYOIx@4Vo3)CaF~F<9lM4u+t&VsOt)gQeDBRUv4B9K;EM7tj8`zBIw* zOoJEb4jBY4U&B7AV%reKq7Z%A_ZcXzE3=)yB&cF%BQ>_0t+Jg5kJ5EfSVwO!@R8Ehcm&pdh;i#T6DSVD_Tt=u8L=Thi2WOckPkp?5V{2D5kma_5JG{_Diwst z1|aknLJqGWgayzlKmibv0_YV$AjudYW(b7?bOO+42+;%d5<X8bZP#NeV*8V4o-e zS_cU9qzDiLKp@E+Ah1uV0G$B@dSU~J7D5dmNdq9TPx=7u0|a`q2Z#kAkmLps*rz3c z?jUpxdZGk~214E-Nf98hPoe;A0|a_90Eh`7kYo=KizEzt*$65`phC0!LxU(6RN8=gq{}nXtiYq6d3AD3XgB5+Tq^x$n?9oq6AhZzq3&;l+4He8}bl3!2&kvtOaZS5Pqp7STbAD#0QscMBVuef$O$il6{7Y@i5* z3VTq5LwV#--ag0!S8xl>@`4z!n?Il!8*l}<5J`f_EVzO#h*SXrcC!!=a3)F+2feym z2A}{lVxRyGlR~TK!D?`Em(Z*$SPeEh1zP1$g&$@kTTdY(1qd2MMj;Xo2s1?10Rbsb zAVLoabOR3dLPP-&Mu?0$g^fCw$J3zp`%tK@Wq+mhB4G_@FB18@W z0sC?X2uOj42sT7KKrihOp@7I4*q3gI2!j+Za^>H5D^6g?8`7jyg>>&L<|4{ zy-Y)-2@n=_Skh4mL?R|(TPOvOd}1Fjnr~3^VS~e(&~4wk=Xb`W4x8tINO;I3%(Z3D z&l;+=3m&Vn@?nMDdw!(QP!bwKYizsr{B)q9IyA(DhR{)=Hs}ullu%j7k3HGx`EYT zqf?;OhoCDzFbmx%_25QX1hb$sY-phuScncST!P3IAZ!qM00g?-F5w`80uhm?5NU-7 zHblH$L8Kib6i~|LQ;0|bf(DUMh(rLw43Tv}K*|${&;tV9fCs%0Q3Qk$BI6KA1t}O1 zF$Vn5U?-v5Lp5#SP*do1oW~9kt0CBzT5!h;i5@O7dg1 z*xGsX18OepV3;4e?OS*K?wAx{^&AlS5i$<5YuWWPhia|lM>nioSW5SCib}(+ z%#x(YP^L;~FeFJbg=ET-2rnN(2Ob#s9|30Zlc}va^sl2K)dOnBeDArb>&I3 z_)s$GLusa2>Wm#5J!m5fHnxC_6OjX%C4$dwU>*oF$c`l-c_3^cZW18*ApA%fSOTI> zWEn^mNFWhukai-J!UQ5t1Rr2?35YI{4Inijk(9C=#F_~8(g^aEh%Cqm5lUGA!VQv5 zy%d7T5|IQc136A9%Rr2YP%pJ0DMauGl-*B+QWk?K5}{toLF|dpxio<^Qwn|mZbYb; zW{?3QbS~3GC}lnfJBSDMk`E#PGC}8345CaaOF{IAP%kwgQAFrmx`|NAA`m$u)JqwN z84)^{dXOASVFhs@LcKJBv=E_lnIJ+b3qb@yrm2@=5EUYHE)^hGD1`;YoCx(&5AuPC zj2R<)@GnSEJ!63R{hXU>+gR@O(o{xs#YKGfdHtRfQf7?lO&~!&^^B_@`#l{nHhDic z!IsL%Dem_aM5&Gvd#)7qdzzy(M#+j2tE!)HaUtQ=5E5?IGX${Kj%Nt6r!rE|vI7k)|N}*mxh)^#xAlx9i>p;9fZJxGnh2dsHxWu%1R_U-dMN`jCqm~^50XnMtRN0VsFx;?pG4?fCWuhVLJ&a^ z2K7=5qDq9$r2@p0QdmIDiBK=~Ah|?jb~C02mw@P1GUk|X%uT4S8qH<+#4u(nnDE&P z^>{L*b~A2oTJlfTU$c^NVqFiz0^=h$=GX&c7&pax7%NcjMTtFXVm%Cfl!hn+P-1nX zFfJ}6yjqF`wMxc(thKKi^;{Da!^odxniUj7zBGk(;h!GKCkWi2pNNH8X>{TsTPS_-})KnkM zs$+QqgF4zIhE3_T3AwH8n4QzWK#v9#BS(V+7&y>C7kT{1>!&<=gMXOaN-=br0f@1s zH{bw?0BN8%=mNkXa)5+*;>>FoP(0gXDp*fjCNl|c z8HgDXI+uEo_msj4;y{FYX#!~>Lgz9;gi;oQ2!c#fFU24#MCe>9KrT}X3y3)p>ZKm! z0}+{njN60WAbQ^zt;|p6*i~1Jc~1H~W#m`v#b+>VV-p5#jaz9G!u@viL96@P>G5{r3m4tC|A>ow|64bsiR${Fk&)^Gs%4na& zGsF?8Bn07uox0k1#ww5ykVpO?9UzHBL_wYr(E;HBsUdCvx*c$rx}14dwK&7kO+_;^afoZnMCL`lZnui1St-`?vObR zXhxL=)G#l0H_>i-xpB<8(QZ2ENbDY@2_hm5(oTd@m_Wpd-~((g0nsC} z0i*^bic*$?SQDXM8bKFxN(6sE z#r;GmWif~%5$dHJ#DNH%OA|;7rLcjx5usk1K?aG?xl9wGl=&d+AeX6^d=Np9NjjHe z5EV*U3Zh4ZdZ_`4CPL@ZO@vYwfyfb|UdlksiO{*!gM6SARuBgw)Jqe{Pa=Ymx4j(X1c#4*|{ z*5k7m>SatyX)+Qwfdpt)Gi=uNGEQN9^zNKqU>qYvyqB>W4|eKk;~A?!LO{a(K{`MZh=_tb zBccPs15!f-P1KBnSP>Bcc?eQYDO@0Lh@g|2-ymH?#6hx%P>KM^2odUK280VFZ5@ag zhzzBy1n~noM!mFw+$XXgB%TPRtOY3}LcI)w7!eT$2?a?;O0ObjuWG?^!X}ZWrut}B z9m^9K)X^p}Y)Yq1$n9mv?3@M$dNiOIIT{?mz<~z3$m2&|KjqOI{KM>4ilNgCK#U!| z0S8C~$ai{!E|3f&q9Dmc=t+VUhhMkXoCY+bN&{+`7rUEiH@)0AW-rigI_OC3{zF}P z(kwodH2P4QX_h);$3_p@=!cChAmc>jKxT>HbL*W4!VI$A8zc{e4a8LfBp-wyDZNWT z)QR|lRDlE%kp^ieLMcoj;zaNP*5Lm=KU$Z_29O$%NJ?1_Voij4X$1L7L>6R(2&F6l z;Rbm}y%d7T5|IQc136A9%Rr2YP%pJ0DMauGl-N&%QWk?K5}{toLF|dpxio<^Qwkf1 z8xiWI8DxM6oy#;4N|_JB4&qL|+Z{G(oqK~#v)xm18$p%fMnb0XAB zJ;(KMJuujlks?~Zx?^LfFjsW^qtUZ|fjDs`06y$K{pvyO3TT|dJX zW0Ti&6@f1pZ^ZiNKz zp0$a;Mla%h13;j|LPY zM}q?xIM6^BdHl%hr#yOtf0$LI7&^@W#5m9!aDYUBw9p%Lfn*Y)(@Z8pPZFd!{JK-- zG@uz(8c@T$*xf|C>E*^T>qfijpd+z+kh=1uS$rt(=|gFzS?Y`(8$D>FA2zmtOc0R+ znI(eHZE79}Gl+^eNFE3~$YlwTd=NpTOf3OXC*liI1rkI=8l;^Fr7(er6Tt^KQUan! zWCKVINHnD^2eBqXy)=SU5RnBLAwnq&K)69ZP%nibazrFS%0SF1Wf_Pu5$dHDB$WvM zfV%sMP|9KuMIzKoIfw%hI+rGppOnG|;zopeX$Bc2Lgz9~gi_{%u!CHsUh+W%L1yS& zia}HOpde$n0Zu4@!XORWYWRedj7v4~=@x`8;8a zRIJ8l|G0-SBejnawn^e&uD@m#<8(|9<0QsMeCOl>pD_Fqdl;)w?nQ|`S_wUjLnsYV z2B5_1<|nwgknlzBGk(;h!GKCkWi2pNa<9>>{TsTPS_-} z)KnkMs$+QqgF4zIhE3_T3Avr@n4QzWK#v9#BS(V+7&y>C7kT{1>!&<=gMXOaN-=br z0f@1sH{bw?0BNK*=mNydbLMilz zCP##NDFZPhLg!Ks@}5#yK^%xsFHImVMCe>5h)~Kx5J8YB>ZKS&g$SKX1;}MeVF58G zLcP?3d>|rom=QMk6hyC<(aHRLPEPgEnCFzwb4FQ(AwK)ZeT-qL!;Jb(Ac2~-jPo&l zjI$UYdp?&M_?(fH*vH^OxgRC=oJ;6q97Ab@G5{r3w?Dzfg@jknkf2t};KW)xp1~jV zoY6mtXNV(myAXsAcIs;58LL1-KqCD?IzSSMh=M#Lq65MMQbPny^pApA6A=M<2=bLu zxIo?zK_~scLAr^EgJcn*6akPCBGk(a2sg;Pbs%0KvXrtC#1G^+_0k3sMr1umJP}G+ z3sOdedKm^WCL#WJ4Gv)7Km%Rm@guLF^5_lzVOEi1=rjWmV^43u0TKbyOmENyl1YS4GnoiINs!|3 z>yDYzfM!%_Kn?R^cN6WVmm9~d8||ipj>PT(>dKR5@u9q<52cxAsWWzL^q`G?*w_Lx zK|~H@mIyw#v3VfOAj;k#c_8c{?h+vRAOc7kTLPj^#22IrB#4MKNIMZqVFD2+f)B92 z1VoR>29O$%C`wrlVoij4X#}YtA`3D?gi;oOaD(JfFNGj-L?l7VK+Gs*8Hh0v>ZKMW zl?eWT>idaM%3=^jBGgMchyxKRkS358N?`+WBSO72gA5X(bD1VWDf2ZJxGnh2dsHxWu%1R_U-dMN`jC$a&g9^?b1u!1-cp!yN{5lT2_!(XhG7@e%do=uX!x8%U;-l|v6sPxavw_UF-hoU7@<6j zG5{r3w?4teg@ji&NKmU`uwtzp&)^M8U^Gq2&;Arc7XOA z`ww;HNwfG+GU!8TrdjHY9UDDpqaQZ5fQ%E71DPd)&+X4V5N41a-XM7(Y#WjTm75$dH84@6{+GcpHzK=kSvf0*CRIjB~Tc~1MJ;Ge8>#b^JxpD`|VoH4NpBuKNKaV4go zVUMxNySc%@6h?MpKSKbeI!f&ENa$ynp)^JrfD)@JPjGP|;Z-jZ)an`hSZl{K1cOo- z)023HI3iVqAbhY>PaDrz1rh=h?GMrcl1M}pgMXM+q!>EQ0K_=Z8*qR`fc&I4=mN7JzVriBQU75Je)?OF4)G5jvM9ke`&o2I5A9dT9n3BtqvhO@vbBgRp~mQZM-+f*^Br zF2x|Kl(G~=j|lZr0}@Sy&ZV0Or7QxGBSO8DftVAabEyZ(r4&{W2O`u<6Ua{@bS@J_ zC}kmtAP9qcDF#s`Lg!Ke;z=niAm&7?KUB#>Bx>nDD{G zX-pW>1c?AloX3RxNfefwsu{7b*7h>0l>A2-OK4h_!h)&~Jq1yE;J z5t9T9_XpGY3YI|3fY>u)--z)L!~3X)Q&T#WW<_iZv4_OI5aS|7Zxl|Ql~Y<5F&AQ4 z#C{MHASOqQdMl?iE@CXiyoh}wwh}B&0_+&|CPQiWiD?mwCss{tEiq|g)SC>Y84;5r z77E75G!5I`RC{=Jk>K{z$0NMFmn_MMdD74<^EmD4f4(>VTXQYV)y>VVTMPf=nZ^MT z)`79PS?7UmTP6~f&vm)+&wlo0{Cma87~_zdJ9h%tN?ZqVZIYVnPc)jTuXr(;T9`bU zDvG-(?(w+C<9-_V)3`^Q44Ic59Wu{-*_M0NrqFY?)R%Fr1y>%fDqJOaKsp}4i@;0- zmf{-3=AYP@bOhJ2A#+b`HhP0Avn{s{XNC9sUz>R=ZZ2pdGJFa)Q zej;d$E_A|*J1g!1xCh{_gL^I>5`hOqpu-4^P4GYy)F!A+P&c7&LfwSA3H1)tJ5cXH zy#sYN>TJ~6sIyUfp!PuRf!YK0H0o*8)2OFWGoxlk&5W8E^=;I*QQt;=8?`!Wb=2yp z)lnCtE=FC9x)`-MYH`%!sKrqyqE1Aeh&mCqHEL_r)~G}9esA!eF1WkkK7#uQ?ku>o z;O>XJAMRSXYvEpodl~LhxJ%)lgnJV1=WsuVdq3{|xbx!9i+cp_5xAS+Zi0Ig?oGJw zzzm2;mdS=iMiXT(?B!18)UxxcPTwieg!1W1N zH7w+!1V;zU0mk)5KeP2#(aGk?zIJ;IaY1CW{N}R4i6?% z6?JCnO~mHbz zkQSR0;b7zycw&c@!jNFZWQDER+=wnzbAe~e={8jtsBE1XYfN1V@?m_TDX5)LW>ED7 zo?Tmpq9-0sR!r;6bT7p8ZVtxO9UsQ!h5}EOlWnSk3PaIT2$+xQ2blhW=@V_LEa8(C z;@DvzHur|~cT8KhsYXLrAgmipEC}0&U3anESm5~qVdhv)#d1BCd9kd6<@;D}!ZLRM z#PT4PC$P+nWi>1Z`!HtE%2n)ULF2-B-cuijv{jp`Ds(h-8>arlluete7RqXr{wU8u z;M6*`XS%tOrG>0eOgprxO5sd=q0rb2`o4-M=OQZB7Ni{8ZqXAwLwIjPe}HB9vJDgA#o-;-|fU)ku`qDACphtTv-`Lz!RTIgZsF zlnyA1QDSu#r6&ht+s6V=Hmu&n0a&0cK#A3Sl#VFz+(4|xqCA5V&ke+CJIaeF@myW3 zhM+u!63^AeY7I(Plz8q}tiHj6aE6cU+Elx7P+4MgE>S3P!rUmmP~yikwQW-kLm7|q zAxir;Rb!N)DDiWcVsAalbd-@Ou~!jg07@M25A4lEnT#?5CHA_Zj6@lR5_>05=Aev5 ziM{M7Z{jD!7r7IA8Tgy>#BY|1zE|Qm%f$5AHq{{f8tqW{Xm;YG(L?D8VS_&r977ad zv>W9mlsE=6yl5E8Tx@tPH8p8A)T<>t*!j*vQKCTR@x%&TbtxlOVH+a|PsnhAp zP)NswJSJ*rq8k%Am{^X9Etn|pz{DF&>@Xe5wQ?$C%zaFq{8?!{lj>Z^2(RU2lmWiU zYV*vg;bfeQH-xMk|6H%IQNb#+^MxU5;okk!piKfNh(cdf14 zqQgneD-8oKDC(y-M((OTGhGSwWe;fhUc1x3ZR94s?-{~ zO&Mx6w;HgXchgI+iBzuDb{jL4YOXQ}a8=YxuZrARyVq^Vkfk}#fYo(EH@zZqN9|6x zKZgB3UKs?qWa_4uM{ci`ck4AQ`|;R-)x}LWy)1HDt+ZRGVbYIag8*km-Sm=3rP}pw zt%iO-t{bpAPw1o!WWKs4v z)Y)5_WCz*(!H({RIx|ZX4-{K6(gz#ru3DN*2ifs&%sBt6p>DUO2{Ve#8RvT%>P}di z+(xk}<9tU$-9bwebrf4N&i`(xbFwrk4zi2Hp0j(uY5Ji8=2q`&G_NwMz32M-=R zG5g&u&0#P$a?^z0Sj&FL@yJb^PUn0dG^jf_=FZS@hIS72a`vZP<#bM;vN>UR$?>$TrR@n9 zmvob*79sn_J-66|r?$q*To>+qac!Bh#JY9&)zo;_RhEhA`<~Hhs@(rQPE2yq;PjFD zF_ph&a&?xRyR|sEE6(TCSt^fz%V|D7;XGJ7HpytY93n6CtbpOk7}z+dSU=tJ{?bUx zm$>O_>!3mLCzmn~>N@x|6ZU8C^m~sQmCEwm z;vx^qS_keN@{wQDdE!EKNpdV-wdTNxrtRauHY|W)xk19qr)MPE*Ro?M?AaMF~p?1*LQ=B!T zw@gc29}0zSQ7*buy!kw@^CE*Fp`?fItXX$^H>jmp^=;|kNjS%PG(WBG&Ux*A*2a&c zN@`m-kMVB)=o%?hzr}8I$Kr(YM|K^*FMi#+c9@w6m8tmdl^~EKwt%7WGNq>a$YKe?lG)?G;W5*4W+p@paVjtL~PL zUhRsF9S^lDHg_~?S8VFY(yrLjF{LfHvBOJSZgWSWw%n!;;|FGEKc{Za`EtkH(mhKk z)xteqDD|X!x=`u~_hg||OZOZh2a9+4LJqFg9w!wyU*fP<+|emBY^2swGT^f^N6nD7t8r%{$w&%WubuGo#5zxc@G5u6@M!gXhKXW&5{p znDsfLRQ+miq~z#nkU^}N^jRiPgS23q#MOqVj`2oyi-k-e&Qz=D0Udn%tl*y4%e z;uanA3p3RVMO9u}ZL1L0&#g15Kh)25(a3{$QTdm@@pTqE4SRc+7oEN7lkru5d47>V zW{S$MWc#HT6`2+@XP>=%-ptKXtLCiv$EG$1M~|5Id)(C20xH_sCj0u2EhuMw>in+$ z@N{3uBJ*UAP-E`l)oRTzTa5qcjBgIVtWYc9W~mU9opQ8ZAbj_C4T*zCdC#&lFKqJI zvs111${jnEu$tUw8>&SQarO!dCc5)&3~&-q>Aq`pE z^-V&gSN}VChjxw?fSuzU|gy?#s_A3OcN*>tSaXP^x%RE`^*_v<8v1*Z^^&P`@6u{QX!IcZ0=gTgv9HW->Y~w{7p@ncwy(9I+5|> zh10aLrQTG%`zxRNS2;{S9yB~hCja_k4}AkZ#~V@ZU+N7Awu-AFmUljH`rlzb@wceUyV$T}k+hKne3P zeyfCcZ6;Y-`N57Svtn4^ymrbm-_G`>sOa<1-lk1{H+U|;Ny*GsSk2<7I-XgTVNw6j zLi)?;;}1i6mRp9m-_F?0{%-aQgM0Uz-FpU zS4Et7-)>d@b#-pgqfnpryeG~hVS=IOrDfO18@Tc9zm*fYI!AHk!1J`NHC?UeA5L1o z`FZ61MTy`Olg^@nv8+OZ{7mJam2A>Q`#e^)o>|{ec-?5ixcl+N`)r>C4_KT@2#9`m zZvW9m{4S1Dqn|aDjy)?h6z9<|JfUr_RJHbxj(prU-!E?j?474}Zobm+TrPa#*N3k+ z&L_NSnD5V&T=K-EZfiqiz-XiWxUH_W+PB*pZ$#7ht5jEO7Cdm5IVS(D&HDLS|NE^E z8-CgZsBBy+_T=}&ksC{wRDX}SR`JFm{cDeRNVUqSOzr4rK>P z&l9&A?v~3hlh17#cl_2CckXg?Uf`X>u?vr`OOx3YSN6}*LxcVMuqSJVdFhD`_VCQH zsZBRI=Q>XGlrrvXF!sr9lz98@0n7HC?XORJw~ha&@axX%+xNCqO$-+vjgsBGY4AjT zq3EuxpnH}QDlvn2RBd9Ve9kMy8}a|;73KdG zmMqT_2|lyOPWWYX+XtGastDPV>`BM zVLhmuutNFi(~F(H`oc>jH?URP9X9{O@n>LnNp;^!=DznbJU0CSg)7!DH_xpy_#rL3 zu~%=@+Tg{CiSUz4XX{pLZ8O=Q%Ps$B-QvzWZsEhS2a98s#jfniRqSjY7I^SCPueMJ z-6x5x8ll`1r5>GE65gAu{JQf~zVqg=kio#J9el$l3?qFlv^*(#$g~?O-dHeN4v*Yxb>sF1A zh}xB2IB-l&G-pWPV`=f^T?@_iJkK=7Y9=fV=Je-23weGqnDtTn(0^y};c()xwJF2p z_KcULr=;x1WTkW6r%KIB%p-=cOz|4baeaT1`%$HH@a@3Dr7Y76xqpUvcBD^+XbM(G zxB9Xjad&$Wo5|Z1b?l1S#)eBbmF&GmkG6bSt@xS!RespLQzzb!@DIz`rgRE zeC?G2ai4WFhxfT{T-CzoYq?orXP1lp>-55Qv8@q{GQ%e~Tj*Lp$u3)c_tkZes}j`$ z{trJDo%YZ(-niVZ(=o5a*Eh59lk%^##^olLhIE3SfC;d@|J2Rq)7>SFT(_w6;X~F`L1Iv%B<|9Oc#2FP~F? z*cP7ZF8V1VFKJin2Yo4(gHQLnPDpPoTywZNc}hVav;N(ZB(Jq&`PyD+~HBT*{6#O&J}Kc=c~W*e$S&f z@!4hnzCHe-BC9t2Ea8E@PNu@U^3_|`L>$N-@?G&oz|z{edCl>9jz27g?oV2m)D3SG zHE??`SL%1^Ef0^K)_({K5?v}Pc@~J&m`SFs1){;dWL%uy-<*ga|9%(vu zueW_k5a;SVvNZL3vx0czN#DjVCmZvQjuz~3((g?DxGv|6?;)$#e}8GWt>Ll_a=W!> z$r4i8My~tyGzFoum&L4I~OPX)_8sr^M460PnS#0p7H7aC( zPl-yy>d^Z+nfXt~nC>qO*RtsBRGc~averE90A7HsHw%IF+3)b9-ATRJGv{N;M3JFisvfaq6u`LeF7 zKC!>P$-Nz8@^EaC(kQqQtkh&b99pJ)u7Ralqq{mZCwS}mN!7oa6?MT^M+BS$E5^s! zWp7(g+$sv|I#V(3{&cv(wNcr~TR2iL=ir-zxr`c%#$jbeZ$X4>wk`F!8C}Phrbk`TKsb!-I!EWx1@fcIHR# zb8+&&S@uzMUDA#}zYf0^Zf8~>Fu&)c>i>OZphvdHs-{;g`|o53aqU^*z}~MF;PXbK z>HfPjHwG`|545fA(CEEV66VRP=ds!4Z-n`S`m1IaE>|z-D*bn8q2sD0{b74{x8L6R zG%;u0JGK{I58nQ*dlu`ayEpi;s$AT?P41t?Zm<0qQ$O64P_^>FT*);Z<@sr+DhC;P z9H;b?k1IP`bqn2lxppSzblm~2t-qxZt)2O(ZR3-VCpJiOuz7EVg zZ=br{vEkdJx0Ww;ls|QU8U8YUB*Ba~;8}fbTI$qR#Us{|pZ^P~u5)}ERQ$Yqwg2nv zS%GMFb?@JMKY5o-{@|WWU)o#B;#&0N%Kd)xigTWqZ>3LMIdMlbMfru&+&X+#XtP_^xBG#$ydg%%kJ1VcynKN>#@?p^YJ28C4SwOwI5B7R16%Eej6!eJ(B-j z+I;S|(zvAgMeXi|F8_Js(KlNNkA z{1>+flQie^8KF6wV}-e=&7(}d3u;&Hbk@J--De{_d+Vy!jjOls#x1y~8uK%DhWYTE zNU7%&)rEQ;%=ky9pY)p76v^zLaGA zO}|tq_|B=<;GZ)xtf`Qn{qbZ*Blc;f;n}k_^6CcJ30dLWkono6~alIFH*sEM`Bov10esjH>5TX$Iq}Na<(dO8b-pAp(^{%%P zwkRlT*W@cG@2NQ&{iAF6c zf%qS{4?1v|b+ni0GAVcLV!rgiQ>9DA=nI!rmC@M%?xcH${`V!OPZiwN@H)a3afH>j zFXQx`l7#q);E-s3O^Js;CV7H*a)S8E<4-R<^*jFk@#i8eA!W<=X8oJIm=qheJvP3t zUH5A6moN5;+qS%nnD+Yp-x1-n3fTu_Z+_PjeEg`@mTSY-y48P1B!&-VvZ{oq}&$dP1g9Kt`TBVh3q>I^3 zG%m@S5so>k!gT*drj=FihMvSv^LY#m>hw~kL%F2xEjq@~Y1{USldZDh_>u2UdIziK z1qjBdUHB8bw0!#M+e>mft~z~*B^DdwqZ0<=ZS>f-6wKqY;t%x`3zrJF$x>3W8wyX4 ziG8;J1xLTond+Vw;R)aFH(txIdUY^WTVekj3l5o_d%xGI_v)5*@9RqEiBY?ql&Gwu z%wbS={(VDSZQJcjQZ5IEKe{Fk9?&T~S*=_!aM$CEywU7`@>R*<90pG^WB$a&UAI*D zeJW;d*=39U2HUK6ZRua!^YS_0x$UJXQ z8g@RFxG-uk70|KatKC@#MLv{fpXMFJ9YnCRi!N$otKiWTl9$zAn8?P6A$q zQ?B>l>i3@J=&V{6zV1eY7hA!*hffZtskw-zY5!MXwRQ13;rMi^y|>4A8hh(@URu_} zw{r38Dy8kmA4$JE@yxnv&C0wb+0_FVIn^FItiGIVru=?ifuwMPj%B*p=RNU14;jyw zcG;~e!zaH)Jku{JZzMczOj=vh$h&!!@zwQ0?gpkZHzWFv6+AaQE2qC^yY%g;&fjr- zO$+n=?bXApbad7>8&xG{MX{vJ{CT(eudB=<)8czawL)VjW%rgu)t%J4;&eA7^mSYb zpTgbM9yL}+!@^HTHY{GhLMS8g(ctFf?46y(V~aJc$833$-rs94uL-PQk@(3}+Gr&0 z6JJVU{Mw9mDVuPoo;7E@Yql&`-CpxIa|@fQNdDjF+W9}rlxDsx&ksArGZ*2XUs1a8 zvQ0v(pw*gz4nc1j4j;J zlznn$Hf`TuY3cf6U73x9@#_b{7eoV3s#k|@)QfE}v;F1C*16yCbbP0FlqK__`GS`9 zA4I~gsLM_V{%HMRxsp%O$J4@Lmc!*A_vPZ;)*UK0%4Qz~u8OWaG$fhsT_GW?lE`AQ zk6X)I)b4;t#H%eLuHM5ei_ZQg>u>ethWE9dEI%9H@=w-y_p@WW#Et51DoFEM$yRGO zxyZ)z9eQe@qpD|mH*H6rL3ibF)aFN549l$-Ik2)Fd>w66cc1g*ZexYsC!CJI_>2c* zB1)Hq^@y3PCTm`J_BxDHw*B9y-k!|y3)>&RaNHht{#UB=5!TGAV6TW50vu(_6rF-j zGGF{QYG9{YoA=+C#7%U0Qp_v6FMIA1n!)DFbn z>Ke{*{Soruyh@IyLlu*q>!$GK%ACQ+0~0TAyIxdwGF(`^`h@eU(9#llJ>AEJ&Kvlp z5`*>b>)(8&TkgC#a=rDTBLe$3T~dk^3yN{+lzw;Mel`E=8v~&(XTn~@DLcz53w76w z3~RU_l#R*k*yC;@dtj~Y10$bQZ>;Fuyy#Rq6y-0vMd`vl@pko&-nz@|eXl#Ec&-0%L-y|9l^MAQqR%FF zT=iQ}zLl%`=Ziq`IjbFhoq{pv^PfD}scfgFqghzZYjAr^*`oC9)A}MCugVhJk@H5C zk4$6r{1mHSY_50D*qhRzuJc}R>vDaUKla~`SY7&hb^C{yMJJ;g6=|BsR_vhoGT z+w7HdOV0LsJHM=Pdse6=BRf?!5_L~(ajNdZ^|!LrhS{^W|M`|T!P{nb&T&Ba^rBN0 zZh2anzkV}kZr>&TM@XEn+J4!%!8z4*&il*tcRZDn-xaZY;?CYTNg_v|yPap#zsNpi z>SyY=xTixotuTFWtgLb9{^pce1>d*#&#pc%Q}>ivM0agWgMjZs(bav6zCYI&tla9A zu`u#^rOmEHDc8l750^zQa?RM&Jufn;^3twuDcAX@vh=U~5svZWe8&~r70dG$ZBJMlM}uL~SH!(EyG z{JdhNfS160cf-e5V{(?U&QngPY~MA#+I>Nf$+ADpuh(B$)g$Q@wb*_CW9#ct20cx? zDx^mFW4Kqluj~=^GF$Av@A2S*oadG2cBM*Vt4h&g9~SOJr-Or zt1&jcsZ!6dIeWTCdGclSK!S|M?C6{3Z(eb`6z?urxqi_Tjb)?jBv+^(is9D0uCjhn zhKQsi&)o&q>m(hy?k?!YP2lbVZroPhT@Z$wByK{Ij@#}oFcy|{RJgmK9yjH?3wGRD z{dTG5brak;HLo|}#;HC^r?Kq4f80kmY-QEFu6Sql zMZ{(Xubx!7yFhjCpxy;uIxCq4D@wQr-Nbj57QFK94tw{_y%mCTQ_d#(Ugdg*_)-tgVOYM}sJ=q`6sLUM} zvM_4@nd%g=ZGX#+wVVdeCbQ0zm2;RlmJRG_T;HE7rt_0SFh*t2bKd{`AF^twUS8?8 zXx=M%tAXQbOB*Yj)6W0#iLU zy7nxi<>U7oz6p!su1OrTyWMeT`T8wRRyWSbWn3BTOim9={}(5>v!Ryj$mwJ=vwxL> zwc|TNG&@#3PkHfZTiBJU@s^*BTRa&f{SNa2e?{Hub`tWHkUgu>rnBvR{D~#`&Rd_f zuG)Y2eey|d-C~7hx@X?{Yi=_Q&Ogj)z{BJCn618JGw=r@Rpiox`!A3y?0^tJA3oks4ty+i$0I- zczDw6NXwMhJ&B76cA8=KNA<27ZR9hKi&t30JXdU-8!C{_AJq5wg&g1JY8#$2vQzg? zYO>A#Se+tO6P_`0%SO`M;e>+CrBAILkK`0jc6iCl);zYzW=~phEU)D*ub%WppQ`iL zhSeKb#LN_$*F_%gzZCGfAo)qKi{cW~@F-5n3T}&~tozqwk)7qfvMnPg zt6g>KA|I@ox3Di$x@pS->FLYmUjH3z)b?NPvQ2Y!_|q~T`;3C*?}1;}EAGr@GT3dP zZmp1Vw*5ktrqAx0#Gl*Q`0ls4uKji3*of$<{(0%f&k8La?N9EyxIa2@_CeLq0yD#4 z{Ck>bmRv3yoVO3ZbZuCpf3VVt<%@1p$ToE=eF!n*c6R*p5u8lDk z6GgVmSC^X}yWf4$XV)gbMc(mttwn3}q|bfvd$7`FZ|T<~UB`n1IelxkZQ*qB+p?u= zkArqG|Bu?Lp!xiAt#@uHn{4t||B}#QsC`J)C`+aK^VRpM?F%nIZ4==acREnqe^D(j zFyP+Mxi41L{|cmvHk4`UTYd7ewp|t^_x!-s(B;(%Hq9T7+I)B1chXR-zH%Lt~s7|c@yc(H}u@ewrXd_rSa3nKc2ojn9|4D zd-1z{?5{6d;xf)=p1ren+(u#Gjc>{8%VjHL^;d9t=vUMobm-bFv(-3QuXI$sQ>*XA zL06j`kL1d|b*~(z`QzX84Q!XaFFjn#*BPJ63@hQGrv76s~OABJl|6+c~#o`qu0wlpRMe2k^OMv`{NYR z|2|yjarf5$v+R@U{#&8J1DsDq*jEm)j?H-8I=na09sgaumQ5m2Jvoo>SFY+Cw7k7D zc;wIU8P4+tNoO7$D+(;?zF*l;&RBIpHn!L8T}yEc+h32zOmj+o+X7d77L`A-TINAq z!QoQV#BZxxf9?{uZ(CE{lfV3{u-dbus-L%bPqv=d7hb<`_Yb|}51fzpB&2frKfdju zkhaY?Ut{CpD;FQ;ihT2a9natPP`jwuv`oI}q5tuqTSir;OHU}a7HbK8leMgHRCK9v zjyEY8hLYP*LH9=&{%z5^c;vK>lt2VZjh3`tfs z+|#@?QhR5QnnUu-m!T!9IuogyS4UWUIPaZlh`xCyXwOh^UE!6?X@MO9lhf>%ncX$T zHYR;m+#eIYWHkQ}qiS(ybe+WQg`GUB4g_{Ps@&manp^mP{?%I%|A@>pf9u>vrg`&{ zmd~3f^8fr-?~^B7PRs2+>2liM^?(0$JJRU53Gd+*Q965GYi4+z+&vwy^;n@*%5ITX z(~^_d!hPo-4PSP+zr4Oa+p@*AUfV7S%4$&F zVciw^(5>rB$xp`I9P_*%i)9uH8y@Wk{9pix$T?x%Jg7Hm{k1X`7K9{%dH;Uho6t+a%_|j*b~r@ z_R{ptv(}v}EIudP-#@w`-L_m_Ak3I)g}_qBlv6wzYReN3xQ4OKV=TQRefCzD^s*Hd zokvGhi}BDdJ1TUIQ0>VE6^y`H!8!STy= zk|}as!~GQ{^Cf!QoLlX*5tMrC1zibYyRM9s*I9`myJ(4<0UN|=?AQaG$s#1Wi5qt4BbJrijjSj@*#~r3i z^}*U_nF@E!@2a-o@y?vG??LZsZ>Yb3zZ_TO$O!K)%h5js>OA-etGX>71TVG|Hyq-9 z&XI7TnUQ{fxoZ6GY64j9sOXTOo-c%JY9FU&4c)vELxam^gu+pBpq?rXDT$#Qf~ZF$ z@zh#meFSbqiYT83-}(6FR>vH2rb(){xL7g!6yTmmZN75R}*6RRcqEqrapQ=<&O|P`^uw{A&Fe91Z!$y9 zA93{vb4g~MB_6j$Ap1@SZk37Bm04@HhHKUwbX|Ul#N1W4+TVVFEjQnOp)GDOTZYEF zXN=l`h@F4Mcuq6y@wQi3$=m!ZfVx4w;HB~WZ^o6{!eo_6S|65odx zHrUa=DU9741{l%Q4Xx}aI6^%=)0Pp|F{AMX_hu0Koxuf3`7uHuqi+D3j9z4AVBv8D z?v7($ac8_1)pn1pe*+64bLYA`!~m+?L|B9=iN(G_3kRcI^S3Yi5rc^n9{h@VPY{Te zW(=yZpo_AFMA9*sW+G=A0R9i3;dx)Ax7OzanKNyaVf zk1>`Qowy({Zc%AdM`c3#`b*p$QBCTGz_oF(Y)V$<3!rQ;CYF6Jk_*?i-Y(h9%2E58%9=?|BH?uqxmo4DEjXH z4t*LEsca>OEP%qZKy%@u0Wu+l2SsTJ-S6MI z$ON9?k+r(~vS@cWHA?|6mr4 zgV)-(YMZp~ckTp6G|;BB^;9W2R7Ov2X47Mg=G}9`K?*Cy%Lc7F#PBVuT&%^R2y^zZ ztNNr*Hd1?6P2_*2G*J=$VHIX<1~X^#J!)_=(Y~=-kqjlvVTa0HUmEZ64Looz{ItT^ zBt5ey!i1ivqbp6qC5blk)_jPoX`*%jfh^Ld;s~;o9JrL?(uQqK53`+1kicDdvQr>+ z9&@-s*y3-QmYNs{&|aBv^}%;4B#f3X5sX2--p-=iUnI}6m49A`iu*C|n)+}tI9 zQUc}`q9%0;2h|kUPD8#~-LP3NF#eFKN3%X%O-1QllI~|U|jJZ1|uIZ2TI~5p*vWm6Y#~=wlFH^oNprSA>cgR zgn6@YYxp8Vfd)};;gw@e(9SrR0TyOsgo2S&(#%~*Q^9C=4)Da*HOaeffncO~b2mzn z(AnRVbuYs`L~pFs6l$S5f-zsYX^sLVk4P7tx)M5;9JyJe$Qm{*ki;f@5xl1YbO31f zW=B)!6n>lh zHX&AWcXBqdk+w51{#Qv?q^$LiVE-!CZmxjcD=Rqq~_>#!r0t15b$+8P+rE=As2iV;%|LVRoe5$G5d(51)f!wX~+dax}(}2AmWt@NURpwRx z#sB4AvAh>5FrIfncvbcHg2K2%o5VGt;y+~?A%t5!!Z0C4-E~LtGUPG#Ep(C z&F&cq&JN)6@Q^)e1i*z)5ZB{po^L4lxr<`nuVr9 zqhUYs2*li7n-8cKAvq8^Tkhu9fKq@$rw`W-5!6Iwa;xSdJ}w<(B3gH_gN?}D^212KCTwqc!F`YI!^2AKWDD8UAXAX6hK1tTayunnTjpsDop z)B)~*+m2I|LOpg}9jqmv-5 zZ&Z9(kp{kkA;UO>lagzCgz8huk-Wdm6T(K%Aub7XUy$x<3bd=2M)+=XreYJB;hcCz zCK&4yB{mWIv+sogs?puX%%Q@br=Mq}?J?&5yy*(PD!zhsP@&wc*v>SIe{NL_N{jUV3*dicz3T z`mpul@gp#t4E_p{1e@V*$*sLuB0geR*QZZmjl2jCG35N&az?U4AWzv6A6$^C?yi3(!@k;j^Y3N z*dpkgZTRJ7^CsU;qh7i>neFKJ`{{ty7a^B~Lm>eTnFH+B4qn#0B^!-k$US z$qgGN&g$;=xjtu&OKhy6Sy8gP<33a|j3sb`v-MY>8#kHV~Xditp(gHUt- z#H#5uvUvqDxB(S7JVy-~n$L6B{C%{e09???H_U!8-NzmPb(Os5nMyA7rr+W&&2Z;f zDHe&RfA%}jBAWs06YSr^!E*93^!=yGl7IjJp#9I`@Q;}Yziouf4IE_*oQ=%?g{o01 zI!?$c7(T44#2Lm~xh7f*{8bPvu=s!!3Tr^cry+Tu!_CU%l-3DFIub7DrUS?7A($AQ zx3XfObQrcC3(#3{6a})r0Ipk}yHQNKZ_t%99FR0naE(mw+4tGc`|jEIS4X$od{sc~ zf9f!tal#103-%nOxwpayLi%p%wh6usoezmHkX+QcMF}xfesW6|2cJeNrfMz<3iF{( z$yr7;pG~rrDgs0`1;p!-^{OHQdx}~vy3PojO$n!wJ8gm~N+8{u$@X0fBc+6J^Y3nNB^MnU=Sis`#fm zNSfD}ZMl}lG)61)_`8jjqw#q5wdjZ?dV_%pVQ6+T&+8WzL-81wp+Hu!U$_7D zc$Ro?SK%wPjVnJ~##Qj$r{_>`^6D@|&75%gTg-LLUTqgXE$qF+Q92d%XVRI+Z1AzT zvV5Drc}D|Ar}R}-Lcq2B_&fDGqrqd&i3;kC{KLuEw+#!5PLGAhj!b6N(Hw{spJ1Ir zL(L*0l9Z}RbGgV+l};fgd=mXjS+{g$@bnHOO^}C%^>nE-U!*E+@oCcg64@N}!rM=| zK<$HDWjEUY@mzdI2Ulx0e}F$DTGcu#H+P@C{r81ni~r&TTx99rJR@*jwc7n5P6~R( z8T<@EL&EhoZei>>Se_AiPNtVZvPW394#71&)=<~+oThBo32eOY zceI3ONQ*mnoPo8}ZDP%p=r%fbtKnISureFCGs1IF>tUrjxM$vhf)luwr-*`QfBg=! zsvz{vTJNV^LrL27G~cP(=8A=&82JOmLMg?H10IgUe!rA0b(9J)U79jVk1g@QhFWNX zc0e{x%cui#$9{eBDa(#~cziYrhz#gnRG3lfHTWWXKj*hSSgOi^d*+13!xp{whuv7R zB28Kbn+oIQ@*uJ{Zdo@{nF`lzPHxU87B%s~J|Z^i2{NkEm=K-v(&SZ{7W7$9>Tdw! zNScdQvSG9Bi5fFhGz3qR%JgI1E=a8ypPYfZH#RL^^SQ1AuykYIuQQlk)DKQHHnrMYIZiqd!1#;MGp!A#I1j zm~}orSe~(xR=O?Sylvy)W!F5e0oNCL?oEE70S;jLpgVlLa$@5OU|8 zBnjZtGj(-xrWa23MnHnMw;M>{`%M}i;QN1A4gV0UHqq5_jDHxb#t&otf43U`i?J%% zTU$6gn>Z3P5i|UsELx;IWs9VM@9Z$x29?K{9s1g~IgUGykF%M)K3`v<|3Kl* z@DH`4v?$HmlLZk;i7WE=+9y|(`>X4@yNNsSWQJU(R)NMGz1FR@2rSsc=ns)Y878Yx71P@ElRIH zAKDVMk?a2m>=$*R#)Gs|dkd-tuQX)wx^ z3{(+ar7PxOpsunEcsREOL9t+9&z&C-L8lBt4cs+?VI1)|OzK>5*-ji+%LSoe7l8@& zLo17_!*jg5q!=(L!{g38$c&hZH)ZCnBg)CFPHbF%tTWQ^^mT96g<3wt1#Y{xb5>31 z;5MkwG6W<>GrOp4EI8o9J8O?*M~AEwXz1AH5C@DoKLBl;}f9H zN*(|?DIAL@k?mndJH?(x;3Vb|Fe~nKfKr{NC<#qsYvCpM64)9hiI>;|+O|(SID7E{ zQ>z7uR6v^;Odt=bI51J~Ym#^{JBaJHekC%bGLzpjlNm({H1y4Rfz8^Jl`*ll|)B06o-FrXAmU|$_bT9Mm(`hCXJe!OM@YK zhW_sv|Mre9Wf}|sU=S7nfb>6Sd?jZ)d)I&D`u`KBQEFCB*k-6cOUa#g9>^t@=~l>G z(KyB->Jpkz7PL`DB_h>yB#w%ijlGgkA7-jA5q=oj=v zFB%GLqWqG9tD>W7utwZuSTfPN6JsX&rzBaqJuF;yr6r-KFqmF2znJ-sDvDC+1UKD4 z5DG8VeE}yP(+!80E;Byc4G1mNU;-oe-!MRKnp!>a-3SUViXgg@8&q69mRe{LT)hPc z31H?__vNO~xNuYum)txeXUSt5J)s%5v5F&89=m44;cy=(#cgTin*AyTdz zfmmcfHl#>N^3!!cTuSodHB=M6OJy6>0S>FJ@xMYPg6u8I&)(~>PInK)7VM?c<1RZd zKdO%4%M=ZBWtg@!ds29998{O!$JOLhAplrc>W{OkgTPs=wWr7G+Lb7zpe@ev8E+YN<91c> z9Mh`QOMWG@qTR^mHCB{rwl`m=3-d+_Sa8+Q>&dCH=$baXl8Fm3 zS>~|`Qz&$trO`l@iBKKU(h26W31$sDu7T+iPoGtXs&Eg7gV$q%311j~Ad9wW?WVCP zWhT44^ydn9*zKjxO&q@dO`XJh(CEb-q(&?A_oDgEh=M-M)ZplZ7jiXIA$a@&Knt{a zQo=|F%kZoAJ}Yzljjq7K>)6ilXwoH3@c@p26FfmSJXJSrELOzqN@CkBpia1fn|RkPmU&PsA++2U6L!p|MG=le4_R+Nz2ZONT~3MBtc& zX|j_G!YrP!EVuHY)UQzusC9dIc-c^PtPUQeLsK{xs9MJ*VY}H+7;o+gBd=-_P$t2o ze2nPY;nYU%^Q2k5zF~4?RMrsMbH+Z7Z$r%QnU#sj5wD!o-k~=<;q+MhWY@ceLmf!6s<()g$fdK#bv zKjrfJE!M}4hP#$WRXHtkf$^3m8Jqnq;D8uE44Okv9 z4)ec=izmnYSq*5}TAiLREXkOBKzfnW=8m(!0e>lo{0l4qOq`$a@Nlm7NLkZ@+isLV%Euwf>+|NC4#GgKXVAp%~zTAFTE(;C^IWj!g-LkhEPVTP0O zn~*a-tu9$6$TmXz^_~T@RY(Paztjek=$?fpT#)g;E@_SWN@IP2(KJ;9*;SZezf0Ri zg));G&4o*h@i*I`AQJ&h_`Z?1XzI(twu)i>OA`MQR~s^6=f*X53FE42kfD_)A$poK zqaMpJ=WZg)g=MjF_V8YCr0bjJyKd{?jo;;Q*@kj=!<${f^^YI|`(J{Hjg+f-2Mb6l ziPuYvsL&*0`Zu*Pd`l|Aec(ZNi&yU_8}j!K-B-G}+v6WYDyh<&($|`Ps@`96B1va7Sh}=iiHF`%0HR_Plb`;n}^$w_AsvgQC zY9t3oY56neBbm-{k zp#0CYNW|f{g^PjpKcwb=QTU)J890A>gdjaskvQRKeHbh3X?=PJ18p~dMKTBqo5J2* zZ8rdT6P&%_ET*)al+M?qM;~rL<4~bM0z$u&y*Jf`JVxT!gXeCnM1l$nwF&{qN~emb z`y?8<#mx#zwE#KA}8X1 zor&802tf9-cETp62EVQUWxK0r*|MkrDf#>`l5gMA0b}uH2=iF_}%j z9&sHM1oT+k6y(QN}UhU^ESm zsQVf(QzVTNPSExELMG1Y6)00#pL=cDjkgWh?Yl@UI_zoz?P{iwzpW!#8WZ(Aq&(#8 zL=IjB4f16*Khr@+(Pv%LI@U|m%}G0ip=M~^qYYG0VNBr~7G~$;z!xTzE?ucyXQvt~ zqB|T@TZa_}mZa(hBHsabjK`j`p!Ar9FCT)Wb&!s*hHt{cwXj$fa!D;IAz_6umTH6i zgV$RH2dVG79tPcA31tQg&lA;c-7N+rCxY?JgQ|Cxyo&dnK-J{ZSz+yV!hLb#w7x$cxj2hd*>Aw&=3|I$afqDJB(XVfo+v8U-+2Hg@x*Kl19s7g}@Vx`ixX(E*kz4He^bt;}LP) zb%5ps=dpKy%oa|ueSw*i*(1DExO2ecoFYUzhOV$SXTj9eA*}%0Tb2+b!T1^%<*jT{#!c)iO_3-bWftvMBR?Too;ls0!J;p4Ol_+b5CSHd^vVZu9xS&` z5x=3W6a14+FaK`kZyzGIcQ=Zp{8wIGpADqL5g`T9_54UMg?zv^CO5h0>wTaoiFygc zG^E&%|7A<`>~SYu{s<`SKLQHXe@3MLp+FNeu>P|&O_Y*DRzMkQY4R= z=%5)z5%B_`ROK)11(H(KNj;^vkXn;v!i~Jzc;Q)TbI1z|9>gfn>WRbN=U4!Ppf+~! z{dStke7|mco_=`Vw&MfP2Q=+R06+x797e$?84CnTfRbj2)hSSJzat(q?*!v2+=%%cz;0U4bzjy_=3Yk*2M#Io!Nu zJoX{U1e4gV7GkSNnc~y;Cym`6Ij-0!&+LAs2@X@bWPbUD;UOW)wBhM#e(70KEcui+ z!TZ57UBGRd*G1Z@Kyv*rEylDG1Ky&?K;`6~Atn~zN-Bbq|g;pABwnSPcb>;9;f^ZqnmY~o&iU2Yw3 z4a*08Y6c^?P{0(Km z|CSwz2;jZ{k;m~M0RZ^^^Qif6@6L%>z{$zN%=RCaxu~O^&41tcKO-qiWm^eb1?9`u z$0puZsu!p^3(CeKsL&*W?+l(?GH+2CN?o&2#mcT?8B|GQ- zqS`mKxBLjY-r}vu$hB=VU_8C^r1Vvr=hMc0)_s=K)z{56+cqGE07V3IasA2QU+Q89 znE@?K%Ww^1d!4fFC3~R(Ycx!486(*-_s6>|X4~=*(8HbN;B_oCmQJcz>UBpWp8GbkJzAHHP#5{YRx9;vm6;$y99rw(?KU)9h!+0M9p zv9h(~m+5K356I$C8quhc3)}k8JG1%xhVwdvnj?{isSQn*V-L1t@iH>Yky@nD#8^2* zCWPwEUVdAU+iG!&Y?p0+-DkAx#~E||be(Y)pf@v^ak3~nR0{UmQP-JUtJY z?-SA+)1;oSn4F4G8*l>2M#BmxTD3G4Dw|dyGP^aLfGR9$HM@sij*G}DO!YmGqxZoW z^>I(XgxwrBV_}OJv>I%Z=yeK#T?uZeOY#-5*FY7Q=LwsA6b3v6|9&(r9pvQ05fS*+ zJtF!w$eGaE_pq!3%SAUC`FJ%}H)$IYT-aF=Npg4WEOpj%*p#)qUhKeAdDf#TXgM#P z9bD}$nj=ra^>jO2F65rb_lzHNYCFnI!E4dM*sR<=yOcyHxXIGEGH?97<>l3vmw7#5 z54Xj|HxwUn*PgYHL4Dme>eaQOeM(9kxCeB+(D?8JRC>fd)htQKN^bxMK__#Q; z!#o|F;z`@jJ<=tsvHZZA@0QKA#M_@4LC^FmCXUt|yJr2TXwl$yoiBMxa&yX3Vt<{SQ3D#m_<_7(W9Hg;+EaWHG&6&qBU|x_+ZVJ953_ z*KZunJ!s;+j9c6mosUJq4?vj@NS%+MguQEo{2W{7rDH+@WkK(#z_%9_HG}TauHt-e zib%f%q(k`wKvcc$meGw>(dP46v<^~0 zK{UsyjgMCN@0wD3C;j(Mytedkb;(2Mbp-f~kB`M){1(|S5_58{7}`(;82e$u%6$_U z@Q2uL33muKq%S>tMo7Q}0}RQQU}mvH6^Wxo-~X#^muqm!*!BmKs(&Df@IOP6fRmAh z#XnIeX-4e_bw;j<2=WN{b5SH;6e=}=1&M4vA@j$W{Z?Y-`|W%eB`^kNjlmKi&Ht)e zeJcDuoGxlV85XG!TPqMt(fob7R7Ld-{^*Hs@t#X@d@?pR`TVnPjQ8{V-Q8A=ukSMv zV$>`duVsFC46FHqRL$$CNDWiweO%6#zE=XB9Ygl<1Za2XWsz&AvqCHtOA5+Q3rjll zIwe>8;pBNx_^zN$|Gu68o^+E&nCbd$D#*&a|qY^bw?3{Xhk(#^? z^FTSErDAs@JSC>tVSr>_T)X>gE+Qo@{!3mXrmBp58gqrIDx@k+sV^g@5vG1wRIPQ8 zwseW{4hHyIA@{Un&#z}gPP~*jWE_iQiO^9O_}YmglnJ;~#_@V&#fZ@pfk>PT!@omi zPIvCHN=#T2wpUu|7k=rn<>;28<-DaFWpH%?7OJ2AXG{x-G{dkqGmD_3Wgu(lSQVrB zzh+V`(x%zznd#xd)4L2IEG5#D0DjHQ?bH40*W(nqV@vYgS|k@-EO23W7Wq=? z#a;$~j0xs0sim_47y2{uzzHQSaIbJSEa zj%)QWloZ{OIuwVItz$>t^P38I67tW|LynXAakZ?I^dBWU(P2q+=B>jZr>;o- z$QjY5=*t3bPK$Cg3(&eA%W@UY67t79o%U;K`-7bP(#MtoHXmnDQF z)b*f`7mxQ4P#c)PvUHdnr=#VIIiJ<>A+wV~=#b@XRp>-AZHBEqoTcNN{PXB-Jf(dC zjJC^{@yc&Aj23QqApTYp_U>2clmE8DRb#{Sw;DWgNz)`RI$x7|nTE%vC z?Q{A=dOxAI!FelhK6k)Td=R{h(fJDL-!bLg5I$=Ag?0>rV*Cf7_<-;fUNBx-`^kD^ zuJ%Syd~iMj`{n#|)`kk8V*GMc-Ecl4`)B-#pv3yp`^owkg7$YHgUI?IgK~g#6xkuO z71=>$skmWzt8QS}3vQ_0Y|&?^IstSGi*V1aG#1 zas(OK`ORLqS7mckB#wb0zQ?p54=313He2E0Z51|Go)0w7x@E5@mfh^0(H9w*S2{!< z*+v^gwt}Q+9S(DPf}2Zs&n^Z0F@gtGGJTfq`MskW4zM{RJ;lAK!107{0aV|iFb6w6 z=(_~nS0y31Lj6e7>#}7ug?Mbwt(&S8=vy|hItAW&3x@S`zxPViMsYtZOZaXB_G*%# zQc0iGK4QMSJm23TzkGswGH#xsKQ;qE%WLu^P2Vf zzcbVQ{hajTm!l-BHA;@DLc|L zrvE8B*nY|mvj2=$|Lxl{{vXIHO0=;<5eC6UiMHweEI!Z?jrLQ-|)HF}u5nzp(>kzVE?ZjSroX@49t{hz)IkL(Ao zY6u{S?7Ql!;U)R9JSrN-k?{sF!dTVo(ck^@Z%H=gq{p#E6^E@e_6}$TlI?XrYYLJ2 ztvMZ^LEpkcXiA}-%OJ(k ziz3CG9%qvqDm9xWNjV(&vvkemjCfBa8>?KbyDQi&uVCef)(pa$=1>!P_Q>xI{_>Z^ zS~jB#IFoZP+0htv_K3`Bf>$}>pSFoH2Q4CsZnP@x5wK5Fc|ptx+T7LAh9AB8_9yWEFH+~|78wZRBk_3XbZ=0iE|j}qQ+g>N8^ zeBZ1x^4~2}l2CsbP``>1<4MB_(;ZA|uK_~DjUZlpEi^X{peOmW;}va`<`yTeG?oO* zCr{K;qs$jiYbQqO;z^iP&4w_RJ?if#y;jo^*q?%1CoHg$x9WgV%>* zW;S=I4GrFv2UA~t^!GXi@+l9C%ex3oQ4@9 zs>kC^4AGd;q1GQg@aelz!u&Hsv^2P^hSn`K5+S`|QzqsRtPVKg=UGJHn#cBQZfwy( zef;KKjGl++eIr$LqdNCN;W8MQ%#wZo z2Rr)5y1#@DBJ$rq?8y8_c%}Kj;Ej!ewe|n_{{Q^?|J`l3>BTHap;Id{cSlgDB?)p) zNn-<>7vv(TqDfddJ!?~+7-Y<5%j(4$%EYeiehdqP4#(ED3uIQwe)fQ5_5u0@K-am* z_lx(K7)=-_H7nD5``#z>*n8{Q*!T53gazQ8Ax#*G2y)O~oVvge6M4cde!`RCVCcP8 z9f|=*0f8@@@3*OKIddL=n&ORQ-!oR;Wspe6nsfdnN40*yP1+28c3Nz<;d8LR`pzP- z@0fwUgdf_Pl*)KqkiWn3>a*bbBNhqS4eE*6rsWBUb7ryQ=;MaHv;b#^d@5~{>GV4K zrS{*aWG5$s9ghj3PZ3bdz8d=VVa#PG(~Kq(vQ)dn>-5_RmnL)Y>e=-SOSfqo@{=5j z_oj{dYdWAnF zXREz66d0!1*$V+FR1!@A`sjKpBl}c)j&tKQy_N%AXQ76L4J)H)Abw*UJ(!8O^O6;} z)@DzT#86;*@-uT%27a))!{wriZm7r<)}pRZTD2^oz&aGxNE5af3bn^1BZ3E~5(Zo@ z1!#Wj7+st7jyW64B)DW4DYIlEU-VjMOv6w%y!3>F=;QrfIrz!A&K%Oq)T)C(Y-i? z$4Gdx@zMn@B<3eqL>dt*BnBu`M3QHr=!)irjFN83!zH2L?cqpc?h#>jx@@Sq`c+)b zAGM_iUN~{U;r^1G{QkC^QK!UMppU*~PPR$)TQmbcd+fG(GR{(ContS5by4^L-=;YH zG^cU3v*@i-6dm5Ji6%f(Ds=*etpG zJ~bH?hiKe(_}VyvSro2LhGGe0z=4&DB#f@!gknq~F0v6zIdLj<)<=+)CcKZ8?VT8z zBb%B-d3=$x)s-raZJC}VeWmI|5cj(G# zwt7w;=3B4OV2(T+4Y+sm+B?V>Aks^$N%l@{4zY;{&VeURiTI9%N74-<+6_Yv(;_bQ z9=CO%dOwLWagrLQ_n$#X%7l&8u^I!m$4i`O;Km^ib<9o?3O@IL84k;QSV-*@Hh}^cnfMyy)j(ptVGQW&#*in({Xuj`UMFyeEzrmAH1|*t zGb#^0A)b0w{L8M0Xk7}r=y0{`Smu_&$>mvP0;`s})e72XBUQZbw?!38*e!R$4t{GE z!n@ES*>$o?!X1&;QN-54aXKgJ8hhdzq|1_n=XT?YnjnYIw<)Qumo$QFLl7dbt)voM zZTu>O9lL)|q8ViU5V=1{+WS*y^8a6u^tb&_&z*^*6S0V!y@jKNt(lC8jh%(Z&xz7M zZ~c?fscJYasG@wK(ADDx6;cGI^ItYnG));MS4)VGt&zfl8In;4p$&Dj18LliDr&yq zx>H;}B+=422eSj3{z-0m;`{xkvzj^vWU4u%e!Nl8;APhKd{*O&#|vhUlZ5d`k2e59 zsv<2?2fo1I6-`IXMl{qA|IQf9k$EZ%z|qECv8N4#HB7`#ciQQ7KtwLyj?kB1h_0-y z=%6vA21Q6>5MF-;1q$pW(h*Oy?y`!aQIEPlPJ7A{H|6=a+ycT(U4Ypxk!JG|=M3Mv zginziCT700;((*wYDHDHeOEvSA{p|yjLXzJO=6kTow8>%Zz1f;J{-nQq;=) zWA=W>2G9aRv=d|YuF_xZ1}UK}p3}9$(-qW^CAoBIK430!sm_G^?G!NW6JUTNCB{&} zD!fFL%?=rp_o+~gm=j3Tfo02<{^dlM@=IWPXV&UZbs9#)PoWwD`7(-7Z>&T;D&EmP z7ry%LTMuc?CU)lCvX{UneSt0|^IWhI{b~di48H&;zLG1H*YI;gt&Vjd9V={vB%|iV z4a_@c<}UM>CyETrR#rRtN``GTWP`&FZDuIKErifq)ha^8irW3Z+-Drqt|FTZ7hyCb zHIgsiri>*=Tp_A@$eOEWZRh&4RTDw;-rF$OJ@_z`i^1 z3n7xg0<-4|nzu&R2gBdS1-Hb>*ScEaj_?dnkA=y0k5=ye7?S#}6G~M&ne(+ULcF%* zC+wMt8#2wO_Ka-FTp4m!7{j4ZN`14wIeghjS{)-#*NYg@Qj)UEJ5v5xP9Wg*#?07x zs3{`1rqeD?*%G1PO6w)YBd^>yc#3Ji$ zMaj|A-a|9D_?@{Cbw2U3fFXZ=0G-mLg!1^1?+(v!afo1f`6E5aGQ&caOGPEr`Lgon za7!8Xfv1i7O3)qtmP9dT?xX z*QLs+wR>)fk+)*4^gACU4U5FF9_9^F$ngnYkbyTU6nlw@+aA!w6+QT0-3rA6<5&Ms z*&=?>kNrQR-@k189|QltjC(Z;XY>DM-P`<3;6U-QWgROXOHN+Vv+p;KGd-WLeSKbWdpQ>4#SJLKEIKKSilHGpNzz-CV(F>UD;SSJO$ow8v=i!x z-&~EU$>yTUK*IC&5T_nNBq28t23$=l$6LpK{cVB`&VF5ABh&2OJrng2SWneIp*&Mj za>8acW8di1R8PwotxhB*g)CNnXh&N@1SUo0!ovJ*lsoFd;NuftF!1TbiJx^EI zYc9|_dR(;tb4kkc9B0H;WAcV)0O1RE6JY!88gHO(L$HizR5*x`RZpp%Da`h2SkOIu ziE1--!>(ZxUZLQe4nAC}wSXHOz?3XQYj-Q;MQIpo+3%XGDdj|jUGLU>r7psg!g z)*bS^(rtWSZ=(8;+n?kZm2yq3SzT(i_G9AfQ3$rC+j2VP>xMingxjv;A?RTO4R(&3 zvM=P-a;3cGdQ=Pmp;~3y;<8DcDl~N|u1B!N`sRaf@20cvGYIR&pb-8{kM-v95Fwd! zdgtb8N5skFKviMq6HVS{7q};|`yw2K_J$g0WRfYM8zoiXi**M{9=rN=2Qn`t%+wYV z%99HUSyFZ>l(<$?_6f%Gg7*0WXEw@sU>6)-`FsWsVmv558~STG5DQj8OmLAw@YQ&R zP|jOz@ZBrY{gNYc!C(K)q?bAC6?5*wXpl&K^fPEnpHi$AlEW3A5z|nM;GQ_J<65E? z--SUoByz!REP+ZSa=L~7=MU)FA;M$gEtPS>1iJhOWiEU2CvupKalKruI>LwJ!?x%$ z>6r9^Ioi5F{E6r_0p(`ORm;f-k+HQvAF$#GY$B6yhKAk%Je0oee zgo1yMyozaFF{pOFDuQmYJt1sB-FB>I63E{@OJ#fND}HxLs;fLaPh}KeG5%l6#+Z*E z3q*)7H3+bE#b4o9f5q5mmm4n0tg*r0-##3qBXbIFS>IYT3BT&7^4HK5U=244m1s|5J6|7PHTE zJo)kYe9rbqhgn;>_98zL72HndcDm0K93LXdJE`>J4}HT{I|^HWj0n=}v3q%ZX`6#U zEzo9MU|6!`LCU$VR`Iql*U_}HR0v@=LK)-l9*aYrBt-rj*#zNY0qS~bN3$x_vuu0| z+@bm7#uDTn8pcy_ow)2U?u+rpx^?12TUVH8CK`|uwcgZ8O?cLBWb%Wby(U}R!>>iD zy=?Tx>FuyK7Vla6c$Swf$mJ5_bg&icY-x+?wrzFNvDL9VzV+QXGiPSjowLrZwcfSr-?!@7c=rBb_a`lW&yJI~1=eVt z)W81Uu6oo`QXq(>3p5xQ{eP}m|1|a>7jZEATX$ZiF`@dGR)N4i4*)foT2@^=*$g%M zQVT3J90?}eM5kDTkur$|fXKFJc6Ch?5QK-NTRfOZ8`VU|rF&qyH=fdClxNEL3>`zCmv2jHeQm+TrN1rs4B_S)`TZ?8$3m%P0l$ z8)He-S=>e#6Ie`EOSp!av+WKn=mg90070EZ>>P_wo6qD7&)GbF*FemdS+p&jJ_EIN$g$D_h&0`}WOaIPwVh zrvYo36bhB!HOHJV>_&=9@RIwBf+xQ3F0j{GJk!i32ZLL*et_j#473&)A!^}3amFe1 zY2H!)0ullts_rqUPBh}hBlBOKmMS{31(uiMN5{PHa zs)QdgH(+uZ2d|6uM?HKBtgF?SydOG=D~%%}@^e5&!c} zuCYeUI|z~Ec47S{if-D!7zsv}2qj4{U+I~i`zJ1NCjE*BP0$kjg;{zP`(aNw+dul^ zn#~&lWYFe@QCBLc6~2|$4fATx!9-*@9N%l%DR!#ux=-e{cyxUHMPiw3aBN+bZ6Ig_ zrcuCJ^kenwW|@J6ZrO}cYpkHm{f>dYC=H8~6)L_x=4;ib`iZbJ)V_va+;0x`?xS<< z+hrLBQk{_(7VeICc?E*%=wZiO$%Ih&DDP5rU(7-x6xSf1p#L=>9l_FOfS|?4K1gAS z`9BAwvaz*`r?sp3KS5vr7L*{FJWo*b_^xO%y3bln0bY!SV#^@oBa=`t-Xy$SvF4y5x?Hl;A z*24DomYW+0>GT=NB>qYSK(w0?e5x{dt%Cn@<&4jD1xqA&0M12GTex+VQep(M*n;z$ zEoR$#E2jQK4^%{)kN61_>BsrUNv`i4n4_Wy%_?(#8ahec8mxRwaF1dF`vFQ#A<7Fk(=Q& z<1quUirWyX383rqOJ<;^8y`C=#SDbq^J!FxV>B|g5#*>9fiH}D{c?%JW@S<%u_nw4 zqSIJl8Go)vSn3%)=O~$%)q`Nh0^=?e5#gHN{OSVo|!&F3GO5j{6 zF~T{iA#2O}vv-|us`)yMT?}u}fy;0dyBFtrNPsM&(|0B*MCyGZ7EQf_C1r$I;KiZC8v2?($uH zYUhnA89^NmS;!5|YshZ1@VF}2aI;7v|KeSKM&)HYrLU2mSJjay(W>{KDf+5deafNM z5}NKi%`pKeHXMeFw=J%z19Yjz)MYopK3uB4-p3-<7|y4s$-e?*9l@K#6t|r8ayq3H zJQvnsyVJjKUafjG!71B)o}hV?t|((V`s5yv%{mo7 z7yw4$9xnm}_>%K)_{(-B85i^K`aLt2-<`^ML+*QEGXv+-fVsw4Vh)4Zlm~N`Fl_vT z%5n6XZzojSBXIrd zUhAz~XoS#PnH13^V$n}FS(+sCozfqnT@qf|+%biXiTZ}88PBhm{| zgKLci7AOf`q@*l4;fhg4i@{E_uD+@lTZK9jgkgl<@O7CBaR#p|hL5ZwUc~AV$}cdU zfTV6u|K!lU#xxW%Tb*UJ`U7A7Sej+i2v)WjoZVy>S4P;WN4+!WEhR>wouj+YRmUtS zIerRkQkMkp2-ji1_+Ig^qq6Q{-t0yE>6=^xMN~3EWnrMHCB^#dWqVu)nf5Jeha0g< zN8@~oy;V#7X{Ij$Zz{dm(>E=tLeA_iHkLBcR8%=0g;E4N0u)e9Sk17_gosrLK7u{({-9)+MlO;!e|$@(9(q5eMmbS3}$ zx4(}H{+8OaHEh*TjnM-PF!g$Wj(&+u*0uUdlaWRrPTaWkvrtcN` zY|@$S)yWMRdgas@z)-zD>Y*s0%3?A%gB*}>D~V3_m9-w#VOSbuwzMICF{PVhe6249 zrXN;s;rxCe-N^RYbIGfQd40URz1}?KA^9e@vvdw`4!HT=TZ=MwJ`v`kmvnE!@0hC5 z^*!7}d?}3$uD+QrO=Efoxy`+;$Z3rOb)2dEcSX7hwoSexB-ydW+Lp(Mlwg@fLJgr>d0<5IPEj>WP2snR_5SnVq&oDWn#P}_ zZ@S}m8In!-0Eh&uAGnGV)gw(IF8&#|{6Jip`aB-!>$d6ck}t((&_trN&T6y8a$nR9 z;!b6~8Q#1HXt9#rQ=Jay}gIQG>P9n1Rl)c-rPLKe=fY zx)Z1ewDF)|jpcd0KHVi94ufw+E89xu1X~=--eNhq`|X`4Haf~M%wE_;Xr^_m;EKRY z49U-^tert}ptR1D@xu}$?-!Q{(yRU;=qIR0T(}UNdcDs5nhjE^+krpFmb5zC<>Zuo z7m4P5mvdS{*?4mr>F#&^#D(O<@j1kbL1V)S>(P!cC283BB~Cbx2sT0?YhI zO^>g9Ul8e-fFK6qHp7GQg6$1~6hez+u`hasSxf^98dy_u6@Qk%8%ZN>tx+64XM-D; zWoBu0C@7lS!ZS9;n<9!K7*FEPrg-dnbGX?3>kiV-@~Wj;RU`LOHW#TOJZU3}hfg2z zJ_IpIs8DD-U~QQpON>_{?uF_+1nq8LsV}x>dUEEI4vc^}F}KXrUY!6_-poTDp+a8E zLSN5+w@aL$-EE5FhoS)}tQs-Ez}WtCyYx4?99MF6M>V&<_6^eJc20lSOQ}lJ(Z*ZG z82P{=M?n2X{5c7^mons6y*9e^LNZ4k2{z1dtTXX!(G;-)NZ1M}P4;_Op`mHzkziyc zYe=Vu>BKUs{k_{Sz~=U#_}uk2YroCkVb!&!dg!YpcCz5{WOm2vblYQ=@AUC0(fcdK zS4BTeVYb~*df!68*}kfhzb=|O*J1YxNYhGRV`VDIzo^6&gV|i$GR8Vz;|V%3IT9T0 zw&<;o3|+Ri=Ee!;ZHv6$DDw~wUrt;@^Y?=QNrZd7BNJDji2@R%O2HRz*>nFy2OpvH z&mi;LDXhv2WD(8nMfoI(5O636@L(^i(g+MG3l}K!~jgk6T-_QSc)74MOPHK+vGFz8kVIL5(p3Kb1Rzx-VXy56+E=viY{IcYy7pKf- zoSwkLP%MQwNibLFQDI(H$AGxz107D#hzb-)h#eUMJF#p4bPEo!pM3(_=lex@DzSJ$ zRbk_(@i=^c7UyLtr9!fGb*>Ymt3aW%zVci-slx)0N;O;1;w10#Kl~*U(vg_UO9IrJ%-v{ja`@g?W%?_R&!!A!F`mz+ z6=t!P&!!P(v5e2A5@r!wLc&cXj_|lHpk)_7gaTWP7Ge3IQix$uP zTmFaCu}5fRcwV(K%Jn=3Eh%fesKlVKRvC<=XK3V=Z90Q5wvFghz#g0Gvw-zRbmBm@ zTQm}*)tC&AXv26~7DmaVR5BP4wJ@~OSv^H%oHfJ#x^A^;$asDcQw=^5F|sF9sPR%iYcK2|75#eL)?h~iz(4E>tK_=V#I4ss}9c?P^S57L{gNCY)K!4S(|duGlbMO90Rg#&8e0W1G>#rsmvm-T(VkhpwA!Tx zYDc6swYlF9#;7kzEr-DsFU3^$a5lEF*G^3to2@^@Xf5RCT0E~oJWr@iIWjg?JaLpJ zFUp>yHqOO4@He%nM6rI3ahv}Vt(iRAK+_qVc;%fuUD@l3x#@JG^QXTmFxcgjx#iA> zsB*jXQor1d)@3TQJ`_N-Mt#4opmJ&d^b%?glDQ3!_i9} zu`q{W{-FFNmgpb#V}k)l{iuP7%43T1*Fa)d&1||}&djFb89}B|ob*H4X*#>Pa?;GE z!r2w&FH`o8kTjXFjdjDO6>j}LPRsAr%k!U@qPVNo?G@#!7DWROA(I*&WjrWaz5oN6 zx9%L&YYCwnS)r@You|dK=;*NyKr1|5A$pF_#XI*7&eOpBdVfU7zO3N9@Qccy(C}=x zdzlKTw@xC524kHJBlH*sZKLZ4xXYesYILLciIZZGXPv_wIcS6I@T_4JuJu=&`n!J& zObD4q@e?KoARoF1I0A?$4oxA`O@n1}6?G`p!pmm0dHtZeyXW6;%d*RDbo(&wE{^(q zv$8lvm^NKo6Z1#Zj(Ea&f#!GDOBw(y<*mIcLrL%KM*yzk_HUrMdZQNC{O-xZmCv(x zpm$tN*K}In!^y%&*Q|j%kqFzbIvXD>eVSUV6V*=f>nB#+l^@tfHOA2lroq|01ZU(H zD>PPT`t-GrPRahn&D^5Hws)Ds1nT@yWrWj4sV;%x^V>7drLAYy-e3mwyNoDBaPqIB z1#Y3QORlZ$pBJi5Z4h3t10G;)ew8vVuf)L_ zqoBQ(bxt?14*hhJx^T38qeGvu_9`RgYOE>^RJ6Q-tXLr;ped(30-1)?bh!;!eqQz- z_#sRL-jkS#n<(qgA6EO*Hpref%sq|?$YpW`&)=tK+E?4QyEb9jj za8@>3UbsS)u#gWyw%C%~&k`(fzI6ch+QxIbYtra9s?(bNmK#sa6(%m3M>EvO_N9j! zpOQQp#y9M{Y!WCnoB}cfa^#!@ z9qK;?4CZm$JIY@qzjZXw{V<0*iILtl;|9n!d?VxJDLpV$)`X%FxY*+ISL%Zsa2j$p zX!#<-Y}+Q11(Y8r-6`8@G7zj{X>)ALimz&(u?5_=y@H{eVgCHWaLO>C-3qJp!*~5^ zf^=$8hC|F`!ny-0&@56riKL(6QwdO@h?9>{!y)Mfp|r#V!^!t-gtnrB(WbtOk16yQd(Hf5e9}gU{@lql zDgkAGo&iqTyLQPVX5k|hMN)wu*!h5oRB`}@rPb<8;vE>O*=kbg8H%>?Zy42lujo-K z<0ur}Fc?^CJekCWA~O2v9sb#bVQDG07-#v<(Q&Y3$|wDnwUeJDS;?iLmG{L)6OjBn zXT&;B2pw^;s5RS1$V z_7Y=d%9oruH;PYqCbmf#6OuqGHKg9SX%H<@*>~ZUS9MHo4Fe?}jvaPmzU)C-;1l9fQBPIV2jQL31=NhN5-=m*@&eS0s=zrqp5?1D zbWxKKB&{?4aMP=0S){WJRI|L(`d7?}Z@sAu^T9V4{ro;0w&8oU={nP8DH!njdV|m_ zw$4Nxhv&Uczm2)1zwV(zM;yk-$f;-7{>#M4qbTv3QLJQ+-)!{aB*=&wQZ>SX^*6k0 z?+c0qZ4jcj+h|PVsWmfRPl73Mm(5xn8#)6iB>%v*IAkU2j~6}l3pdRDD3OgobcoW0 zG+ockNdKku5ZP0oY8R?hKMY1>T7>lAA-!Ryu^_2qWHUlFM@An@;K*C}kNjLtQuM;0 z-$#4;1fFgMP%oEa*PN-kC|9ydh!}BbVvuxL@JQrS9#VQ6Tlq ztrEE%3l=hu?uB(Gn^H@)6ZvW89Ajrrr+#f;rFqqz><|o&1p|anHxon-W;VFF9hM5*qe! z;b%Cn%IyYj9ZfXtf%aeo$lRzY1{QRTWYpHLQY`!^t~vn2!CHnx0>}>VQ#nXOnm@XI zTmWZ>_9+Q5+a_$rstapq-Rap$pJ}!O>z=Y@g(+wIX=c>*T)LE-+x=ua=P%3AtSw*K z%>`-bS!zcBSXc}V2UaC&OMo;a;dd7CBR4hALmXhK4>g-PaI`>!tUF(0WB=5lq5nKl zlVvnfx2a;V5CyNQm}QsUO;u>W&W>N-d8$H;6?-w*+GXwA!9H_?Zc|2EyZKLqoWhY3 z^FvzQsH0RG$f~j4>(20&sB^0iioNV*QJ?hU9|C>Pe5AXd>;t#BO}?Mq(eO4qEZwFf zCJ_@;OOjIZO+pTAyH9D?o;oCDPTv@(Tuu-}A%@^4v=bTu>E4c|(e+V2`hEh&R}U1^ zV#Wz;c%LR2#eP+sxfhNr03#Td-R>xvP8qUqn#xynllayRm_Y;I5XSzli){W$YkO0N z4GutpQE)g%qvk+O@RfRrFx1G+eMG_7UDSc3Q2yI~D54|XpVSD^&b2RrmWJn*o?r3@ zbb!~l{5Y|PvX2mHM}|*+HPu@AO+U)GERe>zPBp8K@AKXZCyffM+B{Nfjth*?a!PP^ zDopSlqjvZp8_TvoH7OFq(pDR(i)ct7xcTh9imF{D?;M`Gg+}tV{@68LFJ%P)A7+2X z;I`mE`R_o#uh3w)vk&H}A(^S~vq(ASZd+q;IscfrIQqU*<(eoz^phzYaMEzO`a_jA zdQ7X;eznskokM@ATi5>T_v2|Q8EsDR86ygm#PEbujZ)BiF4o{L9iQ@!6Ze5B+<_|B zO)mZA1f)NY*7Xj7>m@Z)%%ZK)D7b0`m1U>Z^HRhiws#$|EV?}>RSU{iMY~1L!So0j zV(e56r7-5Dfnt9kNqbDTc~<(p!iGgMf*8b=2a#pJ7yS$mgt{~tfB8jDVOe6!w6@u? zw8W;Mq|TMNk*AaQW5tkJcz!$Y1hFMPMCQLT?t$0NSCy3{Dk4whHoTh>Tvb5mJz zoKCsKeXV-=kk*ypN*PU2a7MI{0Ei(n!~7f8I|y5WDqQFr>Jx0j)y%n_xPW*S8T<*S zEAHc!2$riZYoPQ890!``ibI#ELO zPDhnHv-7zRA#ft)oSX~cQ9J2>kY;2HLi%oEd9OcOkx9XNFRsPyl3>E_2*sAkt7&WY zqNa9vLtf5h6_jFgI)AIUL(52re)~6Y0kawSh6E@_nSgTC{|X@W4=VJ(W~yvW`@bmB z0S@3R$ju}n%ixMM^PEifYPGs+#AM3lFQ0%7)K zg6uykbp?h8*Svp|=HgYBhulYe5vr1WOU9Gj|3`K@j$#oFat*Fq^9o_0H=n|z5v~Pt zK(E_`(Ck6pRS65Hou4^IK7Co-;&hQp?h~Z_%(lly!B;u~h}6iTGggTqoBsJ$15`}~ zwiv0l4#1h8RMXjsJNxzu*?e$7IP?1A+|M7_}XRfU-ZH4|aDl%JvGhI_b4NLEE z(ym-Hj7=5##-8~KvL3FA|)im6mV9)2{DvFeG;1B$ANh%@>$NX69@M|@Q+L|L~ zaeWt42)Vgd6EM)&hBnT8UgVU#)6LSLvg}SHBogwYQ`6m-;=Ay2BsavDUC!W{;nO!J`CIkW ze5NctJ-DH;DOUhw)Y0IeG1yMo!T;ORUBCTD>sK8fevPZ_$jiDx<~2DYjJ@y53Bv{8 zqSS>2Mq$R+A6#*=md79ls&l4sL09h&cZDq!%xsB{l7lcxb(pj9pyyx;jdc;tLzk4; zdJhI1#=Fr7-5;4Yi?dx(zwc<=`(9UkG~`XCZrcs3)FlqW5EfDel&JKiU~!TyZ)!Kz zi`8iBHvGkMHSmR)R&U+9VZOn+FwC`C^FAg}xi(MrOnBJbkI;A3N+S1C4_ie~l;pi} z$T&uTO`Aq`FSrTqt@l8OO8(}+WlAiTb^Us%{rhu}`ZGmv&Fmxevtc|#I1g?i`?t{9 z5p+Nu^Cs0=E8aJ6J?BkHmN>S#`qaDS>6fRX<4B)D)4<<#QffVgLT^-}pE^TsGG_>a z`DvjtxeEm?(U+aNLfL-1jyFZmcz>%d>k^nYv?`(MSARAP2^_L|#^^^P|Im2mV0Oai ze|Xxvd;DaF4HqS5PWIi*RFScvv3mXyVqAh%=}AXn$3jlCdO55+ZSs=rnWoXwX~H{U zp`=iy!~<&{E<{a{HervGq=dlb=lwM`8bfN)H)*~(F+cf17yCm;fFMs0uF$g6kb@C5 zVc{thaP6S`*C6XcAM0NIpk`UL9HHDMohfyS1My}omL09(C>Cvql3%{weta0fW=2V1 zKT(TbRPdAU9ESJOy_HDL6|z>XEDQlY`cCsOt~KM)jMEB@=U4UhK??C&c{YTrV{clez%YbN9YhF@EJrzFU|fRpPsEUV&-or3l8$$e2p>WypB z)ln2S9yjaS{Icz6&vRP9aI7WJ|AFGG2)#rtRw>!9Z*K4^mZaE2AV-7!gHB)_40{n7 z%&sUMqe&+Q+UV#^5l}Ai%>`Qxw|@T2h0Z{PF`Dkik0aPx@268tzAJqa9u5&78(T&j zKZgJtOU6`e7M^){?944i4r`l+y!l3?F-929>U{G->$;2U`rYRZ`x%UsvjXc@H&%SY znY9D;x#p-6X%wC2szrKFaT_rS6PSsr_0>k$YN)Tev53zL_cf8tfYbQ>gXC9p*;GtD&jycPtaADUD+UQt?;XY(4t!OLv2L zWY)kOaedSU3WKpoyqww_lh#t&E4=~v1csHyipDIC5FO$;0{0sh@PlfGpf~tk%swWK z1|oGzfM8)1$=PBp&V$e>-KXTI0{JPAOW&4~!=+tGA5;Wzp0)-KMU>%L%|$5Pm~-8F z$+_KXEfUY9j;UXaa~z$+V8Hp0*)Iy2M#@dOmxo_p0pl~yK(Y>I({MBUnnWy1g!J2H z1eG2?lz||c8JC!P?1ogpNM3z3hzaeooM&uyY_t8rEd& z;WpNQxw{<8ySxWPE0x~kS7fk9-)#a`H)LgHV|iXK@eCqJN_;CE2pySyAv#QL)>@FA1EVmD=^)JWE+@Td)?l_Np1Y+;FdY5mFwCX^ zym&sW7PKp@I@JNZO_d14E^@1K#f!L6rEvzUWNP7FiYx7fqHc_t&&sZkg=bd#oNMSN zq_(?}<3i!>Jasx{RR;xq;^iMz&*E9NA#%qs{X&S)<&1 z?-2g@^e|r|v|U=a5%$(NZsK;EPoTmxDlT;pLW_`#?=sIV-h$KqbaE!oIFNSM1s_;{ zNeFHWvng?G3W=gM{7E;?kfgU;68;5>z>Xj+f~W>}4;CL1og$k>LdH|DpyQf6dq27> z0=b|3%Lo4I9cw?@n9}y;8#)7BII~%7RbI-DzMpW&bS?$A+>YePeJL(xnLex=1gPe^Cj}>g+3*Ys{qSDje@?tLj1*QsdC! z^wvUh!E~HDqq$40Sm}s=81oCE%mW1QS6pjvfN1O+Anh%NdDq!H{%(JpysCM{W zeJr!U46wsMJ}dUo=R!>?lLEiP>Fg6RfBcU491f@KE;Pt8pLAl-lY8NQM-` z2q72=S#@pthpENO2bu{B|$7-wTE5r?TYnnX15k;cPIsXw_3?KkUEDOK2dIDDZ-Y8*cwg z!uCI8w%7h5&I)7}tt>iQQ$vn7*`r!97At;jAtgu0K&L525=rn9#q&&Qb?F@Pp#2jq z>j%RxOcDPFOc0Lcw6&2o5??rVxxtl(t-*3cC?MbsF)u>ucC^6m>mK2VKZLa%c2T*L zI*$#$JMe&PCl$h*+7E>`P%Gp?`5AB!TP3+9TpmQnfGRcK@C@Qw+fplbHRIGP;m^S4 zvf8Ozz?MB=vobU>;b8K`QW?fd`JeQl`lqqW5tzfbQ29w+nwnGM^L~QBo@_pn={blb zjxVB7m{=BY%VtgvXp^}=z)y5D#Ye(sRI-cZvKq00aYmUhT)1 zn#0iYBZA^JK`9M=P!o7RxCr1^pNlm%*Chb>ek_QaVTZ-qX8&Nlug*`S{5Gdyx|KRZ zpfJ);vzZ!8is{L}rt!(Wm2Mz^_2@6&wy_D}U%c(SWNG!ba($u{-Ga@%z@%Wx5(y<-5iDy4l_Hma^GDT1*=o8e*dGLnzol-oOStUa_=FscXIRgI4 zdh4$p@Ci@0ZVjkruYn$#|6IGBj7@EgEzKFM9V{IGR=5qAbLNaBO8aO3R^l(@E;b>)6ep$ z`4uFGjgx!06~V*ac@{gmCcHd9t2<`RK@UBh_kZLQ=V)e+vYRFn%`mTEV zWZwsyvZ??HRX1g3V_%`;lkp@i4mt5L1HMtAWy4y&E-n?TkA@6$l?~Q3Q(d@IcY?vx z^G|R6*C@S0i42Dvgw!Si1s=tJe(Qg|IoT`q$qxMW#%o1Ynm=|$_+bc(1dexqVv2-> zE34aGZQG-z#@DY@jg|ba@&4=Oo#&Tq>@k7q-Y=VzoijC$NMM$~-0RLw!tyDHP49=D z)^VZ-#hobJ1}}pX0QNNTh-&ZN3l(0r(Q>FkaDT~9iGt*&r0Ezvib0t z^9tc#8$$wS>dya9U4Z}c;)zjFP+I%Hx&SQBm8jDBL3dHeB*dx;#RjsvMdRSGG>y=3 zVVj)Ov@9;23FqnuOvLxOck^f(NEns@=)WuRid9^|zU*zJKfXRpotTGkSDE$$CP)2p6IrNODG5y>)!%zZljauqo zZlRuRu^UtuVk6PYN%<;Rb4GNB4W(kV$WH&DgiU=UG#I@-EBssAPA_Fr(^gsH!_R-rS0s66x+8bi_Ngo99(GbFMYRp>ZVg%iN_ zzqW&MqFE-laub^IQJVy5qr(<;3+H}S;7ZXY$*(}_6(hOeri^SS@nXsGok^cLiVb{w z_l7mXLn6Tb0u-;NTW_0H@jMKB{KO2=dZ(>UYoF= zMebuuYEs3E)i9Y0p%U7M zu|Bl(W8?^JkGbYRLL@9&fbpSIVBqwfcFURpot2_-zAK4-)LgChLqIXx{XE)nyrfR% zbYS7nn3>t`OfDoxRubb_yop}r-zI8>$Af2-t)*YY&iLRW|Aa9Z<+c9!&<;(S*JgA3 z+4R?I3j)LQ2IbB45hj#p;56aq*`5)-RUEQJYF3H1IAebQx!u%Q)S^Gxa#>s*6qHDDCg5`M3vGmL zL=f=QfGaZz0PS)8O2w(v+++wA;w)-YXqs93RE_sEgZ$+k4_K{jJbWNsxxcZLVxygw z9ga90z4Ikwv3E*h`NT1r5pcQYzWp0!+cNK^rx|omR6rNV|7ouE-`04_R>lr)j`sg> z$onsVpPIfBE@-0z@q-S%Pgkx7y{;Jn=0tN1nl1zj&5tBN#G7b|CVC}%$h<}7r6z;j ze)pSDo>0XJfpWo6JY#wo&*OBq?~DN3<74gw9oU*zQm<>LvPRdqUw@m9Ut-p1pvR#d#Q-J4fn#;HCv9&PmIrY4L#Fg#p>j_(4BPgZ24OgM{ zLo(E&Dm2YF(f*h6%x1W%5d*X5Fg?X&IH`C!Q`wx4#mzO@lCwz=K%@_q)7BAnsnTxS9tBl4x%IIp!!w z=34p-8tb|FHolm}FRQn?MekuF2CKgv+LO-fOiIE9gsFs(4BeFg_ zaQ#jbTNY*2$O}uu!sIG018r;n%|D6lJ~n`N!Q-=5?(-cP+)#7fr*FeahY3)rz+kg4 z!T{L%=kNva`7gycNVSIHDS@Q#+5FDrO@UszMZXy63qqjH4y3r^Ns)lmF@S@gR+_UcBqMZ;=0*G*oqvPa!}hSre2rsQ+`)_=l6nKLo22 zw-iBSn&BSnG>0#mW!t%t#28r5QszVA4(yagjWT=93flX?A15C3jOiEg=Zt?OH`B`^ zScb2_y1zP_@-M_+q$Ju+KLsT59Ayfy^}N5fg4c#&NhDwAeFa~FD)5^~kPk=Ff;r<@}XpGEerpO0);_3##Y_Xcz z-lIVkmIH&0R}e(!7VaQ6UJuc+@J=oBZlBN z7f4Ig;6&!gk{UKb=-2KK{eDecfc11o!D$jTtguFoZ6_uCkso1?#)nx^rlTEVo*xSg zE%h3%eQ+d#pSf?=C%|XNZuaAFmXwVta*|e5KL-3!=XMSB1#QqZsQ?m-$$q>TYCu(+ zIif7s+(S^$i#9M^DI2#cBXwR>IIZuLe*EyI>AC!6Yl^*gXj7!-vMJ+jGk>JkdoMsu zVt{zx#Us?MRI_D)UltF!-N7>Uu!&aVSOMcCrcPA{NtbTl8D1_qEkck)4$dkNy5m{r z738_~X5Q1s{7hurnQ0vBL?V&IoMw_Uo3&$!z3&PASSNgW59>j#b&Xm>eYpn~mdr+- zVCZo8jMqZLSymzM4fzB8hij9NR#n@$s;6>XN2}BdF;zU$F%b?ATFOn}KlOKiE%aKZ z9;v^8E>un+A_&!gK1k|TE{>jm)f?Bp<&a`c1(4k~dH~gDD3De&FfR3ZZeCY3I7V3r zuLxWbf6ABpb-pAs7_=`$ z4Wk0C7f)U@zB6rXaqrI$d|+a&`PD?v(C{6W67s8EkHp@bQ`@Quc ze?qdCDH@Lea=A1Z%kGv5RhdORsSO+!jBF#@GeN8u_PEs{Y&=tp7I4k_%=dr@iM8=c zHmw&Z=1&Guo4U_&nkDX= z>9HZByeY!?OQbZJB*Ag~>+4@XLrg4NrOa{}*7FyZ{iWT#G~7$Dn&S&z`P>HF*AVbL;9NlHCpl<5S6_~ z_Cstgs~Yjcu-f~AH)03}U|w@g#k&U=gUYx_!c>GXT{Tb9i3H!y<+!%_nXU~TM5+_% z*IzGtae-Le( z^-d)>?Rnk@SqS1ed#dBDO+}v)?xjJ`)o!z#KNk$J`%mg$;SbO*cJcRDK9{@->ycD( zLn)}6FCp;NUfugGVVxxwo}?iNa-aX?JL7NBat7~WWykP7rsWhSMnyp$ZK%k0!(UTz zhAXAGTXMw3nAz)$R=|LQd);B5@h}*|tWIly=^w!l+t{tV^;eTr35C=LR+-=t$sI>m zRDz_xU5oDh7~+Hj8L2g4`A`*w9vDl36-&$=-Nm+>K{i9mC^5h<-G?Wy{YU#RX3*91 zc;cpv-nmh$f|Ugx<=-5p=Q!5J@kF%BS4*n(bL#{GSY)jbf#F~8$WImY_<4pL8=JrR zD=&ZvFTxDT<<2pOJPRH={j*!+d;h`N=}q{HWkGLSBMnlE2iIA-qYaqsW4^5{@o~E}oii{6zxtfZE*_d9pRX!bgSU zSIetPr_!ZjCFqMRs#EN$jq|iF?ar7pDkZKd(RvF?s)_sDRn7nyKbn3CZj&Nh0BwOzJ_4dOfMsVrM>g+TFvBXr zx?JbM?V{HSi?pc?9cwwyiAk7%liB12p)!LL#|Lbh1^KsjPO zkcI`V_ZJC7PNnIUpsuDLJvprg^T;UbpOD`567*bE^ITZrQokO!Jj707FlX!VqVHc1 z2M&D)Qo7)afx{cgp6B;(ao&4`Ra5O99-1|xL64CQxVbKLEFP88~8TYy>&?W6s2zBYF@dG>Pu@`41W;DzYo^*t;` z%DZx>E~b8^a?Q)c^jja#o{G+08zHM%yP(*GcUiw#rg7W6;Ev^bRO@f=Z1J#)<=@Xg z$)G0U;wT18_|$KV*kOtSroM&q7JJZpxedBoJtUQ++=-Dwf9n82Vgm-l#ALE#n!}+D zm|}es?#l27$Kn4d`v{J$97P<<={sYACx=H^J6 z0y7sF5x=3)B&PPIFt*^_WP25b`eER1gwo)Afs&8)ObOp5(eGkP3h+BC2(F0o=4QMp zTPf@KHK+zG4%`QZMv2>CwbTvO22d;jY(GYD(roTlItuvAXkNb9TpvYLfiWsj*;X4X+j zDNY#)PKT{9AWibXw8=E=v$=OQ6I|f@W_ve<0+S9^t>z!)^Lc<&R#=x|2P!)$fcHhN zSq}Rf?NayGssOPE2)k3V%Cl0OaZ9!2A^369)H+dF&*P>Gd1^y>>TKONs!G?%DOH6Z zu8d{)sx7idI_nD8k50Mom=f1tt64rN`_Q<&BmHY1DW$Ue2^n;!Xa_z2gCpEOHspV+ z{^qePN&_Ie~JneG|%X2o61BO}I{@|aXE>-X_TCQo3goWk%> zmNXRanaMAy5oGpi4Y(H0^(;?I1dJ3! z{qcLdGul8sj@D17`mKuxJc)I=uSC1~-57b(Wmxuw&(Nr9HVc53Hn!NdNIkX{?fgCp z=Y9LTMvv39X`4?kPN_`U#akoqk%$Eu*(%Q`rlc1tqf$3T^lQAWHYDdKhvqgKP5Eh% zQk30KcRW5lhzpOPe+t>Z28H}p5a*?!-%}hEvj2lJ`~RCP@;A_ww4>cW?8~!N_2uwD z*ELTxw)X0b63scAj8*X}BP}9|U9r#tcMYdLDa>XGc` z=p2`u?4CA7m}E)0EbM~5HLJT>)bG{o9D)#k z+ZV~uGekRlNmh*=Yqw&bfyO8Gswe0+hFQ|Dv#a=2^=lpk-iDqqwtID-KPD|?l>Fzb zn~dCU`=(fgzvA@o8d~5Qp{j*+eKuBxpmnG=m!YbzfCTwK?4(DzJ1O@~mYikH=nRWC9 z7vXqRSPf#xVkheHQ26GC)-OB;V;;1FhQVS9;qlye&{u`X4T|a-$Rb*+>DPa{TG%>n zZy0oKN%z@OBU{rNM+#Bckq&J>9qbP%mgctMFZdm! z9Y7i*-|&;{6#lnM+luX!Ejwtr@Mp9aMu$H+;Fx?by!D*MD{Hhj;9^*2-%G}Dcx-cv zRNvn)%m&|kw|KEBt+bebR@&x|#4#joYJMPbA{obIp>+Y|gg7B2nnbdEauW+Ee?R12 zU{~D2n`*yNrId(Ll4fjPh}^Q)a30k$Z5lgLF3ULjd<|m{0Z(# zXZ2QNSYV`Qh-xH;*@es(X6g;zO^Hg3gp~<` z1|U%i%BMMZm~}+0G0fHMVlk8Rm!T*Vg(C?*jHb33(SZiRrw0AafA7dh~s4F&Vw3{XYH1MgWPjUdJhAQz?k3WRV_7~ruOD=U{ zdA4NL9il{N+Sh{fJIr`Yx(pcLFL{{O%uZ<9pjuj5Eyw(=)c0Sog`cW;W3M7PYkq## zq10_wLcftZ>jk;2^}h% zC_tjlmZQ#elD3m20WtmtvpF?{Uh5P2b6sb^T9wMiQi!2*3rDo6s2CTc^>HF;C?tYd zYl$)X0Iq|H_D}(kf`2K#4_oYVOU7jYD+frQ!yMhTC<{!8dLy+Ct4eiU{{b2`W8WBLNt>Oxd*1TnoQ?+$1}&%-g?s)?Yw}Q{(Ye`1RP?+>YggbPlr6I^lD^(jeQSZ zX){Jny*N&C^D*P|ca-SubQ^QjoNx?J+o=Wbj}A1|{?am&?lo->;Q(YsQ)-Y#=v@{qp!;F?(#y;~*l3L6?Mtv&qov-jE!AbGfY-BztpVdiU zE*EbHC^AP<&d#1-2XRjEbHeJ5vW!`|ULZ0jLJk&PAM%rI;%&>ezVsm1;~zQa7S1Y4 zIM^FQInpW@Qpe6Mip*LuAN^RPpA)JTsTj*RM}Ak^23e#jK(%2sh7!@YET(-)t2K70 zfGE2YX45z#Syu-W)*8Dxhfc(vZgrVLTkj}j+;t0$<&7}G2)u5i@<`iJ{T5Q>zrBb(I$6Dl*{-h zy_Vbzl;$Q(M|ftU-7g!dUT)zl_b$ zJ1~l`bN?aU4}VFjn92t!_ctjUpug}TIj|M(x0TWrs_W9-E@p0Vkg|=1Z3*#((&UtA z!YBcH2#paQA^NeUXWD_nwNtG{xI)7OkssJg+P_X7fe6{R`sGiV0y9FE>Kw+6*ce3-PuQ3U5a!`#SEICnY%2cfI6aXd!pP(dRmYCS3JC z7%KdeYH0_LNww7bHI^CHg-wF!p(p**5$^HP0`TW;fqVOxeU)tI5$NXE z8EyI13km=Gv-;nYk^cV1$o_xwkrHEi%z^lz0iPusjT)7pJq9vd%Q);8t@45Xzrgdj z`J8_yC)$A-Z{WO`a{c-4Su$IZ;2wj+PD_~j=5tH;S{*I(E&6ysRNoOo>+IP{p0#P9 z9faSh2-8fRuwOhvk&(BxkKM;GzeaQ@i`dfefw#9R2< z`2B}2Le^5x(b&e`>hE2Ig2k679z0hwm8DuzFsC5SX!!tY5DM-SDPF7+bU|J%Oz3UT zx;4#3+(x@0F1k+wgej0P(w>P=f}JxJGC9~oUk69M$>exO>ihlc8r(N1(h}L&3*H~b zitB>XeA)w))}<|xY@m1K$c8ACq%C7PoF3ZbT{LJIfG`fv=riVIrVhK zRGd;gCpcFRtvk25*_bM^;cFaGrEV%->X;3E0d%uC9hZ;vrg-Go(1fspTr5@o$84nDYx(!vcyloIBPV;Mkg}kBUrw_ zgv0sqRmKa&$|>&z_S2M!t^O>^{n3HRo=etJyu*z{OV|Vr8jgvhui8TZ6MYj1=Gfy& z4;68oQz=Hq*>~7UQ_^w+m51)0o_=3eM=W>e6H04 z`1voupP3aLj-hFp;s-R}@6fZEgG$g${>8gAzAqS|0)#&Jjkv{@^pfx&n1G*8bo$X* z^C}Hq=6uEwZ2mJoqwIpO-V$ozCZm{r_bnAaNw}m~W*xnQZy&%;`#8s_;XGr6NrA*PNs)Moj*A@x88|e>!gDr<3k_*tf(?G|!M_|rh4caC0D=L9sJYrc-L_54u&do;Q zL^mI=>}{eKUc^HMrBS${d_P7HeOX%*yoFTKhakBs92PDPMU?M>$6jjU@yK~)gf2LR zsW=0zi*9%Z(jsjUKl0-2=#h;zmMux8uFSHhpMD>-(3s(YG#e=&hc#~|IhVlUgQSGlgi(KK z=1skm(o;wU5^)m#`4}SByWgTs$|+M+Kis6VQLLiWb6edpv|tXUdh+}tt=ZQocKS1$ zOwDYgnOa$D`*zwc@*bOK0T;LQZWZ!?3#L?Ks2^`*PCf5WW8ZP^E#$r>R-0x_O=n2W zJRxD?F4cmc{yrRuq?;J4&3G6*gkz-H{+cIJn9G!`R+y$9Nv&7hG}rW&t8jFVBHWHw z$2$CLPb$qevt{@-^05B$xcCneME@KoIuQQX6zrc5{_6+=bqty6XHz5)3pc#ghf=>Q0dF{S4EUB@AUyA=t!i*Yx~{Jgj%7PgjGGL|I3g|#ZL9eUV+ z=DvwXo&6bwt~X#*RDlEE@HmzIP-vTTtkmujketEV6795gm$6VT-s`A|j?nSWi?qD- zTtWWhJ<{Srt{wwW@BG$ch;FWiauf2!Cuf~NV{OhGy%+KBoCwATF25aN@4F4^p4TfB zrr>PWkr7*VdcBwhaiSEN1)R4uT+y9sH%s{qRKM5Lpb(+6KW zCF^P92dQkkT|cAcW#iaXq6>>F1EQru%Y)}A(9;_@Ed`1J+u_;N0G)c*f}TV@%?Hh& zf6%(0S(N2dUIWcCNu<}}(DwYUQp$cwWzP)iL?Uo?Qts$d#kbrxcm@=c33tJ7%CJs+ zEFq)rug5Y5TE4=1RD_rURF_16EmkLCb)Q;C6kzxuUHP-OCJ|5NY{ z1q3!E<9o%dCd7KoP+FJFyYOD!=Rw#k9Q>Wdk_fy`CouIc>Qa>dmBZSP>R?8ek$_jh zTN_AKjsbYKzM9zmmUcaAr#J)-gx*1@kss7}Fxg(h7@)h{Lui59^&YaJlKi29VEbLq ztlg{t!=j=*f?)wkTmd?TWPJin9DKWog47pYbUdd1ak^RK)4nJ0dI3#@Pk^rQkCerU zpwA@wX3 zZT|V}AGxccFeeNDA*~VDB-|Z#{EHmYoW@iTn+CZYT)Qm9v^KvpGl_vnGEFy*{WRXE z4-NOrG!(aA4&7;RM#U##FN+bx)XC7axc%sS<-B?8GV9OMRrS{Qh@6B#e<(4>yqKH? zq1HCSftD}`lz6cc(tbOk({g#u@V&NqAruzHbw#>?9M|_ZDTdoDm{(Iuz2Wmu)YU~HG3{=HzR9i!5{u`1Go&7 zeH66k;?2N@qtLYw9#MHNQW!}o*7Fp-sRt+u!-41I-|hVKy>uho?f?=dLXV^QU@RsV z7$V~sN|!UK$_pwAhpWvfmd#%oLp#|;&0N!mMA(|scAxev60wJrqLa|24( zZ%O!3avPAy%3^c;^q1S=;fHfRiu-sAa~e)XQl44ucN2(0bE){5;22x?5EI4|NsDE_1b`maLX42~fE8d)$X_UhHcqsQ!`Z z9HWqsW-nEKKFURAbPmgUbg4&@9ay*9ue1s$(=DKxKTFSD}QDMXi_I2UP|K@L$Wb9f_=}u z?BmTIeF9!|L2nfGQ(w-C8>tFs+%eX88j!cg+JOEvqvUi!tWfn#fsh{Ld=qDG25Oo| zyfPA%RaZ76V?CRTD|cX(L0F_s@Kt6s-6p;5#OdSf3PiYVkwl1RmBQS(;rZV=531v6 zKmL{P9LV3k(fs?IH?wv$vbWZ=r1@t%_FsvfsQRjdyoB-z`>Q@8U^fq6)KQ>f7pNUm z$~=z=51h)W2P6W_$^c-bsvL}wktrk?z z4T|F09PvmRbEA!Mr63zr+`sp}d*eqg?IYV0e65EuG%zMob}i>g=^IV)1j0?`n1wo* zEnkD0opgf%>a_ca0ea7hM@V9nAwL~56_z{&adR}FtrK%2gfSJi;{e$iNJC-Tt77P> z)N_{tpYBQJix&8@6jW+6{AB!X3lY{+W6;GgL%HTV3D7Zuf(c0P$hS#IS(>mRHa%7X z1MxvOh?pGb^df5)banE=VnUD?k=aSuvk`=nTB}AJbh|2;ygN) zCZ*oGs>{s>)yK|_i|PLIB|d@1a9XaupX<iiP1gYq-!0OaGO~yqdYkI>_ z!}WFXq9F%%E%=TZdV=2m6C6P!|JlR3GfMnJxg8Ad)NW|Qv}dP*`c0e3qP6StJ6`eb z#T|JhRS|tsmiLForMd?og&BhRj+DvL11pE!`iTb?; zr%Ug%>LWg(U?xEsw4u17&2${>`HKyp9w{G-8Ml z5{JBrvXhpmw>06YiWpgT^+c%6!ub$m;^^)PeR5+Fu;yf3X^hw#Me6g>5Gu;-*1S*` z?tDd#Zn-i;gZAE3RKjc!uZMxE<6D*q64N>M8ncq@YeW?txq_E^RT;5_0j(dxa&}^^ znZ}`{HmC+>i>W85-y7x(qPXYX7^|Y$#Ks7#ct>fd(rq{&EbKu;QTJPNEe-<=5HZsw zga(CFjHWUUU*ginHKO2F#EL~+ge&m6_EE6VWd@ZZ3n|@4lst2Y$hU) zYww$o;-i*7QETt!>eCZwYyWlOSI1W2i>MAZgk9|bt?}ZxKnuv23b$v9M$^N0k|16l zbFvHTzQ`UEKYWQy*~ZRy>UD;K1|XUnXWP^Hhz%HND&Ejnl^pX`M_iRZeb{le!=qY7(rQDBa-A}GO&kKq8 zTI68!$ln-1m%CCpLwfcZj(dUzv}P4^K|=A!&G=zk%HB1zKTkec0ie1C;|BG8zx$Qyz&P6kEs>CJXas&ZH-tVo$LJqj8{t*6FB@#)b~dV^6R zjBr*pGZ@x93T$xIlquxL>BA>lbs?Nri32a4jxEsJH&uv`N9c*~Du4R%QMwBrRTnU! zdoGb)v{a&Q&B^prEksSxy-{vv8!{}|XQn)rYpAIJSGqkp)@VXVeY8{UPE8_@cky8A z2)-SWEipiDUNz%q}FP8D(J+Qx0HBb@ENvFZM1 zYzW>^zv#(CxYzxTvbSK>!O)&oiC}=K!&`)PcZccGx))aRjgG7%Vy8>nm6oST`}J1) z^JLXQ*HB9qcA`OQ_GG&)&k@e{n$I&vr*D@!D=?XA65lhKqD;R2uNGa%#N;A8xIm2} z_~TUJ1>Q5{gv}=P;rR(&Jq;nSQ^GQx0e3-9tF%pzAXNnnO?w0gcfVW2O#JOC6c*+>)*0sl`6NUD~!dJGeGPD=}Eb z7xo`bfZ`fX&d4@DvI^E$nz+3|zeU>jv|g&Cnp5a|uIi-r9mWvzl&mOy zBG`P;rf~NC6`_ol?I;lQ5p0NgBR6mjt-#hlFm?rVdHeW`T0q|<`hfVr%8TLCS{|~O z`x||RCR^fyR0R?J2*LA08N4o41yAWlagLrK=6A(#7xX`fY589pv54%Z2Wl9@8zk3x zN{Ajh#VLBFIr1GeWF){W)WP)^?qrK+7=KCaz$B|{jMC^@ft@`_=M*g&2{_nth031w zz`*raX?t8iH=A~2R@^}#0D6xUpttQpK10;}i%V~youuW?K+^2uLVc2sw%O2JQ+U%b zsQG{pmYsQOE}(yly+YN%pbkO;Q5XiZ)v;A=+bA&ilYQJ!ClK|BsUtJ5fx8)jQ6X(+Dz%rP0~hh9bTVguI#yrfVqel zYh@0U?C7ZB^g=Z_g=Vx$j*LOSp)l^EpzYY7hJNzhg$>1>rvd}99^TQNs)L$$%-Z7E zaE7PdE!(3m?COeM3WuF-6SFh)&g5HnH74Tl=Mb%Z$4rCjI=E!SyIbtF!Re z04wclfb}1U7XNo)M5tiu5H1x`xgxkav&_^*OSxD_IJiM-QVaDXbJs+ zu06Ior(j75T63sG9~3ggIB(xyvcKG7vN)GF47oRdv!t%PKe>DSnC{IAhc2VGRK&Jq zTQ(lnBCX7m07!Pw>DF)@YSULdCL}f2pU8r_=pQ4=Ut-8S0V9;K>i9b|D&q-s@?;6A z9Evd@TQ?-}4Wa3gmfA1gjVDA$U_8euurj5=36ZwW#zHq-yQ#z~P0_PHnaw)a^nC*u za|N|6L=80`N&)s1>A}AIV*N&O$pAd!&?JKv$GNG`}ANtfuBsfeMX1h=gPOV}-G zK+cYDPSSs9ZfW{O*)P`MXOCY__$Flz$4{A74N%%e8Ocxh{FenVm!uzI`B$-e`*r^Z z1%>~|fAbGiWP}uC?-zD$>j|wgkINs51s|O=fV2f3E$dgMfRq@LX&F@XVK1;Nshyzh z1?S;WPx{q!8_%~2T6tMW2s}1`MCRQhJ8?ww;!hJBO&SRYrofTGBWl63a4wc3TX}Ru zRJRgG1pXb>F*VR?1|&6&EnBM37m?IT@Lv(mn+_e$#KKX5fBF_DpZIa>;_d*npFdNj zL6>`*SMfv6awysZvc~-!@iAUn8vgZ{%NdfcK%jm5rt>90O#1K3_5Z;W`>!Z$REKa? zTv+j*TK8};Ax@?Q1}049T_%YSgirFV0MtYV5)#FrYwC)Ep=XZwj|g@b<_KA60XqY0 zM3zvJheZRaUbln;CiTs~AYeY#9`I51!k8@=#MWgn$_JlMERJ$fB+ z{P6y>QeXTnq4v>oxf}9%$iP6TVtG(pwRW^fL#-4WGX0AhYe`%^QCGL}J0ri&o`aEj zYLr@j#gl`6<+o##FI7Ws4ApMqfO8p@+{%Ema*qmSW1TohhGixS&&gjd#D5p;1f>bXu z;|~~hkCC!->uA+>z|V?vaSr3UNb)s95w^Qh%X;j)l&Q%y)p`&x(eCbVUt-AhRF)Lg zR(siO&b|1$B$Pnp?W0lR&P-RZWfcQaD3k?tHQ43LVBE8#B2_!t;Api{MsigK99OML zOHFsHu-Y2K1FIuEOE;ZoZ0ankE1DcVKKY~EQyea8E7sbZ{X8rhD`>8*!9LbIFB|4Y zI{OD!$`3>o?U^c9vMZU&&dJzo%g~#h8b*(*YQfli9UUr0uNCLo9P0NE$x06>6t892 zavkqXiC!C{4{NmoHn=r)uddH96tBeJ|42m5k^n0^cO`OlzjBnmPpQAWS@?2iH{QZk z!#q75VN-a-OtF{L1y`Kwaa_)qa_7|vC_67l!7>XNiBz1IU_YJ;M35!&!{V=@ZMku}MnE(nsA*@ZjI(gJ+GjY=i`ay#H zl!6&E(s8Clz0-Q*wh=miSN*5O;vlh6*yVj=5AXxgch zg+&><<>sloO{R+(3XFvlq1VD~B+RDKnX+AD*-wo9(=>BT37dyzCLy588D7@@?UJ@p zm&$6!V<;=C%5Y(z+{%IgE^QkL-|5uDDoRNypH}*H$zx+>Q2vk8hop&*5WnVp^7VbF z#aI0Ao6PKqsGTu>O7dLO%GgozCr}p^E4?+#*d#wqRkW|6UsU$p#y*LX%)2p=4NQz-0!qtBj zguMXaX_fs6>0&yzpf{w%P#zpD;2%_OerjzS18BYDnq?t~G>ppFiu2uUtV?U8I&6j& zUij(OSGgM{K%fLdNHtGlc$4LXp!3Vr*-UCjcY0~n z*f-C5k?p!Zbzj%ef#4ZmT$?;tavVA^PzWhEG1k_Df=5F`BY@-NkA$EwT;jT?l~gS; zXm3G%3wM!9ls(CSr6_piif3XM8F`6@^Ei5%Bf5d0gPy{4NEf|}D7k0suwhgJ4`b?? zIBsDo5OGhEb0!bsVXe#ka{;xdG_=R|@>%Z%LS4tVXiYUc1U+^gzD@JxHWo)KL<^ZD zJXm#ajT3o#2Yq>aKQoGE5el+y`S4)eNbJ5jOb;NL@^i6B?4fGK2jspKy^1JiF70#P zbdA0-S0SUVSyeOw{;3*k`c(eNNIe6wePsU~&bASFghhd$ED6ko7MJs;(^{8-0G_&d zOq_vtOpl~{b5|f4dPy-oCybTxVb?``0Y{nrRZfv4y4skrN2|!pUW~-d#pS#6AY`&+ zJ4~9}0~)hq;b=hiE=;1Ah{2Z87Qq=#UQO1wxY49tAeiDC`7lXi^Yhp99|_`GuJoV@ zu3yujtn}~~fsbdoFi#V^4)1Z8Z6%m!zbf9S``mJYor_#NEQLI#bo@R?u0A`c7M&tN zlAs{ugr{>Ac>@I`xfL142lCDNYfNpG6$?y{%y-4UHP-xEmgOn*qEC|}7LyML7~EYK zGII9dYS;KG&H$Vy?)k;dRm>>aQH8nFXmB2_&ioOYOIgfU(APo$&o%+f(RJH7#k*B+9#2VdVeB<*|Ht!bT`LZ8{?>XmlPGlO@-OELb0LE$>N{TF7BHs-wT z0gV^9b8nl+*hgnvudAXTn_C^}8vA#cS|wsnH#fow`|RaA%}>028m;T#`aod59HTYTiwN9oZK33%Hz-Jrq+)cP#;yIjM{Z6lV(7ZZvD3;0M zct3BQ>u{VMs%F{x#fWtXH8cn}$Rlpb8drvS0AZpoFk}t_NcR!%_7}Mr{@FlG5e$1_7cUIMFl~&?RJ>oS5qo&eRDbod*${w!X z6sFd~2BVJLLss3}Zf*2+Hh)Ly1G`pp^5lV7=AF#q&)ut;*eu2JHN^EX;T^?ukh$aS zo5p(Ob4Tz|4hp9PaVYsfCDlQoSIldQ;X0^?e7Ztuh@dBj!P+to42XnKbju^)*-P9` zhxqX5?v`i2pc-pZ(BhejeIAQeeh5M8OGR<~reN;q{^*q-N}Ffbi*jFlPY#`$FlAOzi5@jw9qtUP9`^UF+vvfQX*>6qXVHS@-7_ zPUd3_e&cigO8^EFR&Sd{pH(kZe?6!RTea(~te6)tTr=q*^e0Fhp*akujl0I{Vb9a9 zJzQqy^&blAu0aX3pgeImAjlggT2JiM;hj=M-UDFa6|)35%mcoB&tXzr=24M|+ZZ_< z=1~G+w|P=r6eHBB1)WsWi00xM}m$r zG<5?xYdGQS6I4zi9S)t|w%ER`f#wn}brL^nPAc>jP>EUGDd;{@0&A^H`Mjlb)N;fA@fR1+Df8)Q*tL-62%8FFB zEDi-B#G)sFUR|4b(vh;NnvuQ~U>5pP5l)b99Vf*ye48e{2)NpASG>K~VU(omU zD#duv3PwTWqoLVWViQ^E<|pI zwHR?cA#bX@&@jZ`68WfMe9nL5aI=?e$k$~YP;jP4M3NLyGS&Clza}eJuEU`$e@JjNXf^3v4@Zg2!b$~5xYyXrHa;6> z#ZVJ3kn1KU@yCW*xsKX{V03j77lEx{=x@%L$l+{S816M0Xl9w(jCTDZe5uHWG zmU4*!y{_;i+5FK7B1>L8BZS=!rXDU|QyoTFC5NakX_ zS_blxOa-!Jupe@y69>=ncvIigCMsP3)KmH@9}pF0wuxiXY@fewIfbO%WNR3U-=1(% z316i$4EI9l3*bcS;2^HI^coyd6$+xai(VX0;EI9`XC$eym%IUF8_)vm+OPF7(uIHS zqxqo#T`4VE(}>{A$$Ah;f)Y;&Ag^d@y(Web+4_i?Or`3*I#S;|buHH!5qO=*VCCT> zw^|s(^7X$&+=8t37m9~54kt%abT8K#6(Y<4=%|RtHiMJz*xBe1 zgF}MJq$79)*V{YjAB|C~~ zZpk>0TbudQkN4V&EQiC0xMzG5x)GX^i_mOvVdwm98PSw(SXhn==oB)7S)3?)hAd`^ z;LVzWYW8%a2PY*l61DQweVA%IsHkVRX)jvV$HmippK!6fg?kQ9xPE=AVX2&9qlR-R zPbBwbPxIH!K7Pdz*{PzG^cnNQu|7b#a_P4Gqi92|#S?}$49jpt9NjX;d=E>6V5!XJ zY~8!?rMuQWc+_m#y?Dy@$i?UCR|yAF2WFEESO>^17^jk74vaTt7VlY%{10A!6|(_T zFybtk$N){59A@5l8Y14GbmE=Rt+xlHG1c9U&*J0BEW7$;)iEqkRLZfE3M0;~t+uQd zQeNg#DrH8JfySWapf!j_KgK|6=u-_^zcC|Bem9=EH+I5L_~sFQ9~0x_8-r4FIJc92 zKt`Sf9k1h&A;6%68f>oAx~mAD(SY^LYO|DBeB(Khn$#o(VQge|+SB%2rf5AO=U`a8 zQ0i#lB@iWE#9q`>3h%27cXcJ)A#Jj4WuTwN9c$mgw_QdT=es67IR$}p%oPr4K4{`O*-a?8)xlce`nYxzs%N6Y@lWy~X_F3nOR z^Uk_OZ)@`QIZEt_Gcm*&Wk2)x3Q4sG;_nsw%Iaf=wPa4JoT`w1gZGMqRc0LJI5 z{g~|On`<(m>hB4$2uh^T5fc0Xd*VB~p09AZeh3U)GCd}<5j1^5?Xa@FT+Y5;+%Ep`Z7nZGu+gZi zW}YN(Bt63YD51YKq$gvil3ltj741$M<`0!{h`(LmlVK*nG(lAjx|tx7X+;oQzB(E^ z7mxQqq6$p0vp^8l)Wo+yBWdQeBe^#p>kOAfFH8nRSaYM9XO)!-$T)%{PqwTffVF1Q zuOF@Q_H6cQI9)MxD(9`ey#XwKMz!qJJbwP?K!#`qncXNGE%fc(X+JE2-b2lIF5e3mzF;0oj##~* zi@iJ^$c&6?ceiyxyF3vR$v3cpdvNNR3HSJkt#jF<(ssSjLs2VAT?1n6N*BIv`JHF_ zCpd74m52U2tUJ!>nT`WongX4G9I*49-v^{+08CO%JDOXFxbjndOOY(jP zv~=ODQ?Rb#n=R2it&n#|kcs?T?ld{+1D2BcKoV8AZG^%((z{6eGPxx51Ic3_iU|Ak z8C=Fu<@^ZD1K9lEbEF&*x7rbv>=pT4D3k4(c`6<_0gG-M$;6Uote@3k0)liKtRN0$JC z_t}rg4?pih2GC;my-1r6(xIbsz^_2Fc|-e62e-{fx9mr*cDKimXNhm|E$IW_s2}uj zJD2+4-j}1vxY`p29Z|_N$909*#@tgTw!^;kc3ZLrH8ELcTgYNc#WWTxc_FbhG@XAM zZ#bPbF|t{;M5#4;nk8vW6jc_mP)(~SI}Jgqw(SOfj=Jee^ObMLgz#6`27zKiPaWLvrc9)n17 z3?y8|^_!0{PDMc2{E|*Kx9w=MYlfI;PqpEY**pvk6BGuX6 z=322`D6>D+s0E1t9g5w|uzKz!-1nq$_Nkx%KY+b3^jcll&wBB9)d-^bLn#zEe;=}B z^oury=6nIMC*QCWo|zb_<)E8j&Dya+LeQ$nzLaCs@^P`)2<@3{i87dlzw)#`Oy)^8`6ibNKsb-RL8XJ#*Luf-4Ln!Z*d-a}Sn?VAJHZK_L0*dJi3 zv2M~s7%aib?j>}3+1?gEfhXbZ=}Sya8?yGID`9Jna^YpdR2EyP=KGrNI#lQs)^sqM zht??@2Hdy}A{6usgkY_;@~q$A+`M4qmFvl{xr>mVFBhF%+AAI1(KAgqjHxt3202pK_nHe;! z>@tMtn_<`bw1n-k4*9{qQnXtB$@N3hgb^~0*l~Qy8fmH@zG9_toCM=YMP}PWF}v%` zm711D`4oDi$)Ms^_xvdpY^MK-hi6;O+8Jd?R~z-@YUWVc@XSL0D3Oj-9U@vq*XoU! z3N3G_Y9*BcWtH$jMhx=?VC2O2D#EA%r<$$4K8NVY+U4}V8ph1shDeeQPcerYzhdQB zXPW~eP%|M7S4qlGx<_&Wxfq5jz~K^LPhR28Ms4u3tjfNFLAS_+R=|6hq6H?neGPH( z5UD3x^^Bh{xo{ch3bVzVFB_Zi0oLpjGvxmE-g!fW;G{tp@z|IkzT z`<~A$g72?ApO8-jW+kWx&`ED&t_eIS+HNmWfn5ld8IaVyEj6ca@E0y|72|Nq^XX3e zY6yw<3z{ol0Cd8(&Mxq}8q4ckhDq1Zt{~M zJqPvwgE8?J&u2uMXsPCF;mq^J^I`h;tG)lhlv1!UcKm3WPfi&|KQtk_9Df)?i?(O$R!cS z>!A>#>!b;+j;x?I#@}xMncE;#7cd`2`#uU1m9@m6 zqJsmvAP(^Pgp19u0R+csctC5Fu$kxfD8}HPWxEp)7wl)rCj%GH0M;&A;{+<6-Z8gSU%jqQ; zj&C{krBI%j6oy=;OMt5`_SRyx)MnVe=GZL!wyQH6C^Fsuw@}!i7Fs>UOmn#Sy`()X;dALw?*0COnPTM5&< zqHvdh>3ydQq)*FTQ3F_w+&OTaNnSF5*c&INAyAkCUfPss$|vIFze-@56clpF+*{Kt zFyIG|34L@nnOKH1n7P?ipb!oKAD&h%Wg>66_S>RkHsgH!&DeNwq{G8`BE2!SBBeX? z1^?ZrLQM0tj)E0Hj!cbJmYcM$3Z2QV+A~MlG7nl@Ok4!mFkPs<6r<7FkV8BqI`vK6 z1|XlU+QhQ2Re2{h$u^M?J~?le?Wz;XuFj}25tg>(njFl&p}B91&|FJ|ABBLhmjWN# zo8fDP;PzWL<@h6JBB@B_nJHAKpp;d=BrYU*c?Uqe&XS!YCljXHo#(3pO`$TAL@nz= zfqv;~h!6U5?-!WRlHtRVb@iK(F9;EPmMYmj=$Hcpk39!d2>@EE^1P{M>ydKV`>1z3 zNb)-^1f-*h?&-L-1B^#)HZdzv&Rx?JJ)cW#eMM#$tZFWMr>MS5h=g~~Huw$1E!*rM zR`nE_lF0>H$NU5RqZ;|vAj}f$d)=8~eaJS3oXs}15aNYFOEAWfR(PwCZ8X|;-#Jmj zJYS@fY63X=JO#Kh&<}VV1nX{gyk+p#l;ok@ie-}86jQg8v zJm6F691AO1xR9zaV~szqs2{n7FOodBAtZ+sd{&qo5$&hRU%K(V&h|YFc0GLNL@}=4 zaK2>YRpk-{^E$7`CqM2k#?L>VU+-9ay*OE7gnM`qi0;=W_(j+vxdJTlB8SWr(dqAv z&-RV#oyTL?KN$C|yLA`2WS*FkfB5AXwd#%eEyULyL58pU{i%S33lwrU>DSs>(KpHP z=#GI4ys~Ykdh3qeG(Emz6QcodMQdv1KxQAr%~vRoItmPi9?>tI$XPH{p`~QO zl3@%Eh`N?>9V#3a7g!BE04a9Dn(yt*hrApWqrwx&U1mKZux?#HQ?ubX>V<_nBq)Sa z#8BC8rCL3fHPU)c`{4y>1pO_aDHw-$1hwf!19TEqlC_|3hCrpzxY06ZIdOn`t1n8$h0|Jwu#i8>v6G zPZAUCt~F0Cq&!kTOkekMNwnN7S||LO09i-8IKnanv>sxM>1Q)IB2pkt?&Nj_6iUOe zQY`oIUW-4eyh&^=)Q@Z(pZx0+_HwWv%@FCd;TANmzPld0g&S4Um;F+x8wC6Q*P!BV zRm0VE=cFvRG*jU~0(28G(n{15?#UETbTY1B}>?{nUzHz>T0HKt2-rk2+NZuS<9h?{BY%$ zf;O)UoFGc!I-Vbimq2MBD{w{apXTXY9_;j927AS3w_3lL+n>eWulYUU^(^4M{b zxDRe8ppu#5-XZ-JRT`P3w!gja@~D!c(Pyc;M9fvzqDWu|`>Mc;UL35p4lfblu-LM} z=HwB9(VbCODsEB?$#75On3t#m*dy-1Q>Yt9Z7@=#RKlh8k-_z&{tsjC7-L(Mtqq@3 zwr$(CZQHiZQ?_x+wr$(CZQJ!#f46Vv-cD}kP1Z`*+&^}*lfC8~;~5Wz;!fzT{*FbU zw+x69J`?tPkk_uCU)9#+7Y!UA^+T;j^TJr&j>Wx20@aWtjHdq0x_rZT?x4-{+n$#n z4vrpITg=^!hXI7fhLzJ(dyn{wWg|*3V~+}p-h|>1p@0AF4%HZu$;h01<2apP#dS5c z!o-dADpBx8U@$_eI(--$LnKyM4JP*ku>P7!xX2MpqXASsc^sKN0ZtSjsL1e7Z7-Ia zI73&^HKJZR$;y=~fU!>+S|%eYU$(~%6?NapLF<=BDjFze`m3JyiY&2){%lFs%ais)`N=K=A& z|3T1XFq~W~o$faSaj3N^^X{OHN` zo&MW4I4Z%`a$XK;D0|&SdR-XvxSONchQ{SGBLaC7Qy5KqEcg_6&6&UxzxlLqQp}Oq zx_EnJnIbgw0`O(XmMAOT0?=PdEbIP*hW$7zW5etF^%05>I0*})B~BP-T-|{cxyr1i zaHlDrQ$i)F!n~z?7pFgY)%{$0LqD^dUYnf(Q~|~-_d*QBBqkz&t(Covf;0;|0}=;4v3)Q&5H}g z5QK26WR(-1X42wvLjmek@k&NkjayWz%U7Bl>nQ=1ZiO;Ne~1zuGkFj zlP?}?<`cl>iTW8lEaptYM}%V0D`p`AY(5Z@-Xic6jWJLoQoTeRIanNa(4Tp55h2U z^NZFT1O&%@N0dGzDQO5bX~yGXb8)qP+voVgRpskFd;1HB4n|M};yUaoE%Lktf49hu zY)ov=8y$WlUcT=VZH#_mG-Vhxuaz(j7#-P*OkciF6oJR&SAYVOw9Pa|*-!nG+iXDH z@{^`%<6s!E4#ln5R@y!fwJYTkhtFVHX&-DP&g$MOU+vJIrvhE~kVGZTjH0ZGI^9LT zXLAC?p)gnBk!zyP9Dr)3);uAg?Chpr)i%n!oN5$$_w)6=b~K7>O1LG!g3Oj*4@S+z z?E^hZwdTu6(n{zu+vX`%I>!-h`G^Vbiz??Ehfk5_8dYa!$>I$%9_6?w3&leMt@>#G z9K8c9N~ZbfmwG1be+1+B>(YMHVL{&HShZoVW z4q}YJ-)`o`2eLYQt_fo6kpV7Y)sq)`+A4~z+Nh0yLr!oXSp%p-dER!}VmywNXV~)a zorp_RUlJnJcxE@ruw0@-iOkT=p`3c+l07v;l_KWLQlCDxP!Qc zC+?=y-xDvbHtFH+b#}bmJ$Ob!LqORtm>C%B9KvEHHivR$z&lv+yAxlqj8W6c6ur0wsMK4z5-l8Ke(Cdsl|RC^ZJ$=QezpvASppDWme&zFLhyaa4LC+S%e zY2#;8fWnlshB!K_F5?o6?9;g;p42~eP=9y?kT&vKhj6E6laNP|20PJRF_ee5&HhO7 zL(WfwxokZNRlPGPH9%Kw(rVh&hfjg%)M%4<#E_g8lJn392C|$gvkA!ppPhF82&=$X zs+quci7h<23}J>#mD6C@{1O(1=_CJ+N>X(RdxyT|YJGtcIr`4hc1O$@ip60I_3^s) zNW0kuOcJvNsdDiMqUFLX(?%iUV`PAQJW0y4e(8V;JV57cebn|uqh_2AJ)=jE>ppFsDh4#A)@_B{B0pp8X- zsCcSPrutJU@J|&F4Y2WIwKhi#{C-7j0KS1HzSn%%^F)}4F!ROzLbKs1<^E|nn*u|x86W1GCmIhGe z+KgrQq_OxH`FV0*IviH7#$qV7(${Bx=lXnYQz$zXW1*OrzLC&SU5Xct zp|D?g5Sof`chL^b67qo^Z7^-%L02R+IxJeEzxHY!wT(NCplVZvZ@H!NG+krGuE#u- zb-BpsTxVH7dJ$%_>74pnWs+69kwa84^7`Ce+jygK2x^r7)oto*W8hTX%yLYp5q8B1j#L$4csZ^#0VI*iud6OPj6<$boebdz+c`++{>1=2AML z5wzOu9GR107H8M`A!nkvf++bf=^v-TY{kq-p$o6n-7)cf=`b@;)v{z$r60{Sbe^@k z>jT7d3!|xeQ?X|v>A|so%w1_wh=6seMVh}U1N{Ak@{e#DLC}@J9WN)%Nn=QmWX`;d zJR;i9t*=F?k6 zQO5+Wk{gK13F0^^NPwaqIej@}`zmqzOtTrmld0%*_%iaeNG<0u(ou?8&~gahA@#!P zR~)swd*2jtV#XMBL@;|Ja_X<@j$%Ef?Dl54ZUJT4 zBP@BCC^qo6M2%E>a6YilKD9H#T`zL(Rh<_5d_zcX*_b)mKI{BIj(b;X#$X%VrFx^FzZYr0L7D)_$$ zGD}@LpUon_qyF#BYxez}R_O;aT>H;{h>A`QKZC1(LK~SXmX4UJ=srtr6$I7$D^XgU z@rtd|h{9Er@d&7UBs(oKJ3Ri&<^F@3BMj&7b zKDF8cicI-VewD!jMd2`N|LCavS{?YTro)&pfc@WG`Q z%>g?0uX59LD9n;?kQYOu08o=vW|g|S$FIG&j|JTmCQ^ZjC-H*f&5<16*hSPh`p8r> zjl~+Nk_OU?LPhe@_JZF^3MWq-5pcBM(|R)Jv&zgxbTC)MuCBqA1&&2n-K1z6k{8*Z z7nN1TlQ=T8tcUyv6E~c-!{j$SG^kI5v?l8&@+=sQoh)NJ5HSs=!&8Et@^fZQHpXKr z?AJ&IpI#FA3D3*WY0F{Kms(UBwVP%$)a&oo^tBTc_7=wj03rgrnroj|&^{iq!anjj^2!qaUv~JlaN-E8l)N36)N+Zc*!Ta@M67ndQoqL(RCGWjJ=GpLH-8Gy_H2)kG7QToWBJ7 z+wN&XMDGPapxBEKML_8E83WVq*9BgFw~N=>Na*C%AlD(eTIEbnjHiq6Kj&2)m^OZt z%FnxKjq(Xm&S|4?6wK5-Snps1u zFV!^W4T%sk-Y{ERi3o^VXcylwxm6DCa+)Dq8cR1sZk8gtYGmKp_XVD$ihAX~JSm)s zhNn@N#o0s`)UB4{4;x$F?^rD^jajA3P#jJ|yeqDe0;uE08B!*uVIVk$_`XW6Y_Pcr zIL8NIYi#U$lZdm)TF>$ev8|$}mp7gc9R|*x4Q*rb(*_FkFGZ8u)~h?vvlKK|Pih z(`RiQIP~5+JbJK&Gq-IE)_WVWCSkCYVj_&vnS#BcjY#*7?gTZb-C6Nmsb7xQ;n$1f z@IiU5u3gzvpKvSocGWNqxSxS>TUwv9B}mf|xIs9;(*^r@X+q_xISOL&o$$PkJ?=Rl zz(H6FV|UU@iSqrs)nSjgJNm+KAdi0rJLG>$X?7_|h40|SL#EySc+G=j#j({KXcn+5 zlLk^`PA6*v>{Be= z_;bkpc>>*HcS79@2J*_`6%3e0c;m|D9X3S;y9My$mOViQI}hS`!2Sk(5Vh+GqKTqc zg6Hq`!-3Tqta^#iVOviRsOC?F8c>~y*X%udDfDoFpa4ZU-amd6%1itbHQWK{$M{gldY=lngfR8$`kDPhNmjcY;x$GUhEm0 zFX;MeKb-?-5bj%l;bc#L%!uQe4(I-E585K4Mv8sv(m8%#*-7HWc?j7F8w~40Myt2U z>A8GmDNx7t4TfbBGzI-z%oS8T!^ig2Sv3M|8q}r`a6uBNCh%(g{)oBHBeUuSxM}yV z*p6yN4J+8yGFopsTE8uJn>i|qxhZy=B3ob50A~P|20ttR8lhI0m3yAdiEam}4NV7j zF6dlUM>`x<%Y?`BwJLd6qsXj&n{$*&z)e{^r>)S}GtoE7=(nHHml%Yvfz_9kg)cw2 zZ%|lwC4RRY>CdG*R3iF?q)j{`I^Y_${AAK%yVvm-I6kahOdzPdg%;bDtWxitfMf1< zCt>R;YY_Tvj~5#YyNY?w-u_~cp7huuYpccaTyTm_{x1&b7v%pwmC2@8KhJ+~HW-lq zh_n57v^NpMf8%V0N}KW-7J6fjc3A2ya07z$CJl>KmU-F;wIf39Um?OF=oIepuJc^>DXeSsTycz z=#iN`<{goFc23{Ww5dMchmzdXZ!j@M%ngM{vwU9zHQ65E;XE}YLZ>wmU#dy$ddQ5F=;@?kV@!1^~Kt!AB)uqK)gScS6#Kv2HPj$Ou|M(D@JO z_~QRwnVeiPH)E7XQK`}kv50J;+Gi5Mj`l}U9gCwPgFR&yv^IH`d5PMrTw&DgvW1qM zuSCG3`U0|=|1C+OZ%815C~Fx(vCzLn?Lo4U^!qn2BJoY{`t=`Fy7#A+rT)JWM1BKD zCkK5)C-EOkB7G-Yhkth8%9@UAB52$Ietacev67hcOg4Eee3&KaB=*)4QcyBxU@gIJ zB&UL+p_TFwKhh1EJHj86@2pe7&l!)jaVEw|PhX|tZ3y5{aTBeS)kUB8OZMY-v&ZRf z-%n^g;C2d`9Sbbn9Stn;itys>xIoUCg9p;Ut&p2z|kqq`-0L+6^T+75b2J z2nq_6fsVqRB7aSYG6X#S@--GmR?pyLdfDD)1OjOrJCS)9T^7hZWZg zuk{R7<ikVZfGPT@t*TuO18g+otwt{J)O`!0 zu6f%%E}V{`F>KTVzP5))bt=)4nb^_)?-;~=a=WZM0h*m)_} zl4?6w`^oj}Q7F#p+pDC?g#wn=D9vn^80x_rXNNHm%IQ-x%&W=7eO%5=85wM3_>GJW zt&670p4)d+V`8IC*kvV$D~Y?3w&KzB_9NR~BSAhIv!l+?<1cFc)&)#dVYwv1oMPl9 zmS%dI{jMvsGeVMrIPB2qM$BHJ^%z$W%aSAFYFR=`u4#hxny0lq_3nppqagk&eS_i{ zS8H2#baq-(98rFukyu6CG3r`nL$eDC*ON!dX;&@RgAj$+zMX;#)Q=+PA(;}TUNIgW z8zrhGgiR8Q8iiE+zMxA@<5I&{YW#yr_2U!S09@?ex*b~O9{0I}lULY=cybT$;XDGf zz~Nss!nxO{eR5dMhN~jewptpZUSW3(+RUUU4D4ZWpQSraoN)BVq~z|*Gvpm)EC34G|1oiX4sx(hmVhA67^pqJ%x>-Dos%>C>V|G{4Lzr&~d|rU`03zHUb}eX`v>5FOW5^Q= z4~zUxxg1*70yG`Es6$e5HsTxyd$a-TL5|QKps$4dbLqN=SX&P5n)RudmV~%73{JG` zFlk^3v#}aT>y1`X!M2a4>TUqn9kW%g8EQbGypgA&1+Id}8PcK;V(?X)v^g_O*yJvL zGS5s#R63BuyIi+i1_c%>z`wz(*~4R1N%3Ut8e}7X2$wLSgDe|b2TOtkeR?X|sxQbP zpniBUlK0Nl=FD8xyI>K?($kF=TyRTIVLM8mP-8YF$oGS9ELV-Vu&N}TMdT(`Vvwn) zC;KDNmqlt#fa(5UL*83Rxi_X-%aE-QeRe{n4;y=>vl^jTqIEfH9J;!$I&>LVBqq%O zCf|3RB>lZMUu9YBw^VyFH<@oArAWv4%G>3Y^ip4eP{iZ{(-g2O`x2Hv!vJ&vTk;3% z=3Y9r4RP+Kxwxpiizpe1`OKnCwj|D&lDPqs_4;Hb$#q)9xO+*RgXO^tYRK(u6BnJf zbhb!Ok|+Iczjr7^UaAnkvM^9LvpoQk61vNGsS0Fxk|DP8IqP(*P%yROd4$BQr>@Z_Vg~)> zwfY&h@I+5_3bf+2Q5c&j7{rajbV=iX3hsHKE}@ZwlQm~p*NsXkaO}?j!Qadx4htY; zSSi52IPGJ%MR*9Fhdt4PvZx=1X77Wz8@BvcX}3j?Tkd`H-G)|4O@=BUbX5HV`$GD zgYul}dheRP=ed5J(Ea{;;{0>I@|Qj`#>h%fv5y;_-b%cM7N0gBcOAjS2x`X=9M))r zOzdZpXu#ST1Xq4O*?xk#OW->RRsp~I{+ybIHBb~|%q(VByE z(?*MazIhn{J#Vk9xDSQ8l!blTWTSF*UsmWVm}$}@hPuA$;ksCcqaLl3&zmqWy{T;y zT4*W>b*o%1wNgsGdEj2%Hhr1bW*cklG(M-4U$EBZ1{-PrELWUS+{{#7rbJb4U>DS; zJg)Sl975?VLOPCT&OqPtQpTsI zn!RCR(kRauLE}X$N2=^iF?OzVo-qs+bBcl0P1xDJplmUo>{zFQ;_^1GF&b3E)%kfw zH_5_!EvY}rc4_WjYZDJt@!l#uy-H!B`~#nQA~fmtEYd1LrBKulDgl24YP(CxS%>4^ zX@4R2tEoo|i~{e5R)HI1Y3Kq8eUPHHg70_e99RVJKDtO3N)c zp%YYj0Zv;iaW8O;$kH0Qw7Ozb?Ec4*R+i#dshAY(^!X))r2z8e1(?<+LnjXcAg zbDde^+v-nTR+u*INg=jTi8z>!naKpbq4rV2_a2chIjzy^s@a|3tqzXx%))W2@T)J%qsQEkI@IYW}8X@QUm)y*%^0B+|Ok{X*>oj-US6B0$Dl5@1^qd4YlN zig+FogsTGHLm-WPHuD0Jo&Vg-Bldf)T__S(tAjql;(-gG74cmCe$meleFn%{0FR#> z>vTxF%tmQa59_$CZ$NcFJsOgE;PWl z5qkdqg8^~;{$?& z4(yF-GHK$oc?dDo&OvSRcZBxTe%VMRtQ}_+2k9>|nJY3B64v^C>gC@Q<>O8;p1=;X zwW4kz{`t*ZMq*%Y;9`lEFy#3o%g0OxS61~^0!fR(QaCh1F%OtX?yuxi@)O#%bDHWj z#U!Bu*TXvO*#{(kIXma&O_k(PmUYmIEwu?9ZwRqjAdHtmwZ z$;l2li?Vm0pm2lnPAk`CkGvhL9TWO?lMPDS1XZ5<6d~e+)1uPGHseapqD#l;C7qya zkl`nngoq6R@YR5Euj3-1|GNh0gN4R8_lOAxos0Fx_h;x6*khs}7MfCX}@3 zT71gM5B3?NuHA)Ah;Hlf0x7Jx7J?7wjsWvnul!w2>}|g|xy{5GdVhIr;|ck@4)#v6 zknKb*3`InA6R98uFwO z`?zj3r9Vj=TP}eMn|xtqYa4O$mAtelL@7IL6_+ zJcUA4(B^U?pSF594okur=Ix{HAh~khqSGUGK;(WlNoxrr808hT&L!nYL;tRX2QK35 zZGl9MF@6ivkvic{32z3^U(D(6h;gbXuYjG?BPhM>7NDge7{W1S__;%NSyqHm%qfG! z?%qUz6Hen=BpH~nuSVvH{aSy%C?Aoq1y_$xCO?Bp!i&q{Zxi_UPC`iD`3C?v2y-MQ z7iX(s_*6mZOGrXh6z0a}F3ab~##;n_;&-6X&B+Ql0?VCzSrxG%O2b<%@fTgq8{iZ^ ziE}vO-a);)_1T^wyvzNcus)yReI+tri6!A-OY&zH==a#7>75ns(u>?PyRP9;{kY)k z(t6&hD=>6$19kkjLmrk(#%|&|YD(Ekkr$HjEBL4=OCNCI!ywu@2zwucWq+mG)EXHH zm2Kkf2?C%vD$?fga`f<7*x`nWJQ!Jo4!w(gZUsA(f*Y3s8khOS108OW{+1w*WlEdG z=5t>{p+%4&p$ZWYwih%>L)#ScBf!!Z3dj`l2hm z-;iXE#t{124+>n2{{3`1B<9!8XfzP9g(x4<5dT4s3ksPW9Wf=*PJN{+a5lQ!poL_&4GNug zz)q25of^EESc)D9I)*dNloM*R71>%_kupoa?4Ft0JrE@-zR(>xgwZJ4PQ2Kmt+Ooo zAN+-+0p)cC$h7grAm-^B>Pe~Mm0g>@jc%+`w z-ZlNLPAS^{48gb@*-98o)3lb!dy9NqzeC0EFND^z0T&E|gl-OpoHk{W?Z@kc&wQ9@ zz#}LVR%PC+mT`6tGk9kx+50qNmsH4F5@1Y`vJN2L&LvLW09Y3|rvZSvo^1+wvKF)b z9C2hC>-t6wyg@z|R{#s!v;Pgq1S%FDAJXF^jk3!r5;{lY4~2%zW$T98dmfMgD`m;{VVK z{1Z%2wf<>FkbG!}R*e!+O8k||1R{uSiI@Ja#V4YW`KbXB#X%^ale7j_rfY9l^}J!e zZTjwz@+k2pqNm>GPrdxju;+5Er%Hz-iGZqqzRbAiIzG(W{P?`S_WjiorHu}#mSB&5 zzIPiG2#x+5i8#?H@TM?O8eN|&?j{KeT@xP4kkg;_MyYQZp)2l&8W7C@So`?MzlaH= z1AiA?utn~$tx$uO$ZHr*<0H4!3_4gpt>isi#FW@@^FX;VPc4Jr!+^rmbAxC$qpW<1 zO3;_9b`(yHuFQ$2ChyFvQJvPYz95l#t+mcT3CUWKUb)tV1#qcKf-Hd&IX|luT|{~x zJ#7h^TTumrYd=rbEm^-{b0DGc zW*J(tR!OiJE^@WWcY^H7#H6v*ypNXwyBs3|XU$K$uvT*Pw2wy~Pl5;m0ce0gi8__6+%V_9LQF9?F(I5*mrenvvL3{AkkMYGOk9wc~4QJ*xq#e>{NB0-Uno$n0a6d8F@EqyWhM=iFW+kw#fFHms@8B-wn~2sfB=+y(QPP zW2HwR#grALyx_4u7FLl@Eyc5R8?9mp8(l(8g2@I;Y}$VsynlO?Wi$lYP>-DVb2TIB zXK_Z^AN9#|m+Hj*umYN(Zna7^!(7jq9A?eZkh4^U$1xvrq#$?Es`f6?=33zMQ3siT zbB2lKnPR|mrLk#FyBUH+UcI86i*-2ZD4<-u^_;xV!9FdZusHYR^M}^f5rE4W;}b1$ zp==lnyh4#Tgh)PGjZvo^uCLCI!y}$A>m8-tiQ794KL&b4QtpEAh^{|nX#`lc)Ton> zR8UdKuY6h>1yV1!yr!fTS?Kt)r2*l5<=^b`CL>=#PQaQicb^@b5A(31;XCKPXbk1`y&+{7y>mZBv$W~M|*WX#KvheFz^hK zS{oVtjbv-z-}9DmbG4ra?^hg)ijBr0Y)F!-B^1m2!|VAgpGFUf5qnEio6kPk`M0C> z7UG-t1jk7P6GZ3;eV^umRRQ8VuB^St6q4xxztt{Rk056H>LX8g6mXx15SriA$k@Rt zd>*zQm6MFoJ$AGQVfu4{`zQ&X74`hekrNQGLtE0GC5vlWz&4zx@$wmY5NLGiwAj8q zYm{UrMvQjUA4bjIT{xWN*;8W9i;|}q^W+_AP7=yA^%_W9`W>|xZ z|Gr0-_Nq1hqu2R{{C`gNV*O`}lQiv$sQjZ}vAr{#bCU2JgN4_i*04-VEc)|jO@YeK zf=;@eS{NwCl*5|@Fd>yK)$ZnGEQwP4w6A{*8WZJApeHD#(Km7UT_#C9`yR=A?z4U|EL*)f5&LImE-bWM7?palw>D8)^+hP z-Rxg^lvpK7y3apY2^lUenviEu{fQ=WU$hW{z-@bM=eiwqWD*8KF#aJ)z($M7`Ck{X!@|xZ324OTfSW3K*r`wlp z$|CG+Vy%h@N$%=Z_0ktw1xvQyJ2wkIPpob+%i_EBRbD-JTg5w~CgZ zNI3w@^n}l+H{lAMTrYc`Hj+#*+?H&?D{#Hg7qW!*|81j*TTNlx%0MBDS^E zB{*ED_@I1l*`;8yaVAgUL(r;VnauYYvN<~%C8kO z-Nx@}<>=-X65|Y`mBR<4Ffd^akH^~skRtEb8Jq+a&)8Ue2hcjpJ0iqTQYO7RFYKyU{F@w4XEQ%BZdB4k{r1n$TKqs*135J+O9TRf82 z6@uV0-K`_NW_lC&V$VaUD9|ClPR}I7#9ox0%K)ul)AwWI+u1sex;Z(APi>L5p?8$( zU6ZMm-GC}|4;kDMq$q`o2c=+{5Q>w$>8~L$F3O+ufsxBj=8Nm`|E7dU$wU;tDs;K~ zNW1$W5ts@-uo9a>a94;w27!EB_Y>siRs-)|FAlu-PNRY6UAiXU#C>94BA5))sqyM? z;YGM8=BZ(1qtrhZSc&&H2D)IMyT!s45lf9t1Q)m6?I4&Ocg1_r9T}^u@BTDq35C_%x=b9GA4Hf;s#djJf;g zzC1=nFXhsO;$u|)HSX>teN?p*HX#*xZt-H`h?8lgnLAr&yZs+T?tiH0IY+J-bAAw* zg`b<~|3+ejZJezg|GT^K{x3Ihk!~|)4alco1T7)d-M& zjki%0owU^CI+)i=xqzkD`z(lm_#B*~*E$#R<>16XGwarp&a@VcIQ$lQCEN6e!Mf2L z{mJ_RO#{iF*;OZ44RV~Ge*f<#&Q1?XJMm}!wf8gsV*0;-;lJP|Mof2hGtbj>+wQhUF^tt1?;og|5Dcfb~?}?_gm^4MbHG6iDHL@*Z{5^}s4))|=ifeb3()#2~`B1d& zqKxryn~8l++;3M^H<|6&zvr^qqPmGvq&vn-GU!b#x{M;2p%8n-o|dRv*V`$gIqgQ% zEy1~`9-*m|gIP>uU)(lH=cy$FJZN^uKmKH_XeBNi&-5ejk=})L{h5?!zb{}1GNLHG z_U**Ys#&Th&&4Ycd7JjT7HXTKjU94=HC7(*=S{dGYG1H;7qngSouXm#V~(rp6PH34 zAEp@ymoege^mvNAo}=|+LnC9m)(+9lLQ05&sAHqX&f9}CVqDQrV96R_gE&AH!%Eg| z#H&cRIQ==0K3%rg9mc9skUcm(q-=EJB!*sJ%iAV2k(oGJR^&*x6JXU z9^MYc9SP=_DWP7YYUCf>1PPD;JdB9JjyN7%7S;dTHE(B~9dBw{o$T3{#U(WHN zZCuUhwhDXQLNQ>GyMn6&UNNOWAm}Z|i8BPx{*4PWIP|M;_QwrG_vcOjf6Py1_^)?6 zD*pe^PYwPSzhJYc#z<>I8fz?2jwjGs;r|7${u7{DLw4rBIe<=FWfjAmh37_!QbS?j zr*2J{^<&3um`S7_eFU2b$>B{xR^aIo{zB+*i*Sd;{)R zq2=1gZOy*1+RHXWHcim~PV9v^P@}5|u_xJ@nv0XWekIEt5g{YY%5Xr&?1s?rz(9r4 zyV){ImE-S=5Rf~-i!?fuEyy71BV|lV<=qRq2_RP;))H0BZHozkYLpcX_Rd8GA*CJ% zGkNs?0tG>tg+NFoL2_S#Pyz zRHY*HsXB_48Bg-Uj1X%nc6AR9>h)-Eb-?u*RB0x)1;pUV(uAq1){{{!`5ZyalX-t) z)t53)@7nIoqXnY!CVP_6ypGPwDrYsQ`gf>Ljcc#SH8oYK7wIcA@-+%#_fmmY54}Gd zY6WWd+j2R{gKuBtu{H#-2<()I!+^)KSX7yUk1A};>XRIF>aWUP5zIB}P57y)OOk1} z&Lu|G=fk`tshO4Ib3gnMZ^zMsO$sH;tSt{19I(o}jveIkF)rGYa*tQ)&@jZib?h6| zFA*)2Jh^VA3L9k-5=0R{@75Y^nl75{w;G&9S)qgf@ZUb#e6x;fePyZGk%{9Kqe3s1 zsx1VD<)=s=Sr02fPU-OPPtS|XSLsbvr~zAxpkiCEQJV6-jGYW(G7yBm-4;b+U5%aa z6-PGL;O$ej8FfVc#MKEZ4Vh=e!3#FyMldAbR7K)Ajl02Kzu)>r!q!p=3U9^uMCsO(dIHnQzxvXL1)!K z`5Hh>a4SV(|4@j`!L{hLc2egk`sXMeW_05$@vKCFbu&c2&7l)444x1Pf$>BljV}}z zx`cANb&isM0-vu=R1Bcg4Sa#6FWawQuuk_CMe5edj}o;TP+VN>8pTWCt$8L#YfWGW z)8UZqn&cVrAXW|e_Z2_n-c>?;k6H%gjZAFTmm4K+Oeth_PfPGji{DguMy92I>xiyIji8T$->Nlj4w|!dHk6IA~cES(pv0+y^tAa4O!(%KOJ_6_a zpF^4r-8+>xcPtWf(I!5@7~6hm*Fyf;gK#l=iK20P^b0 zMnY~wb%zjrkU2jve0B_9Qgw%`KR|r;S#M!w_sO$+X{KvPeAYK7ki5ilev7A3z^2tk z@C#t&zjRie4=BDNg@*GR?!Fays)O|x80M0%oyEN^5Q~S?-zYd+gBHF9#(!SYkS=4L znR7Kn-n2zhR&_`y{lR-}m@gLAg7|lObjf>xrR&eQbO`6yFT(%3jFqr8w=w=F#j{e~ z+!Jvb*=IPtVwMdJ045m0e>KoZ6wYjJEqH(>-Jc!^laoX|p%(4pw|c%9VKS3sx{Z0; zoKwDMI*XI|dVw_E4imohJn`oY?#%J&u+P=7kA>${X8Eldli?`r0e*g}=d}0qKkih< zn=jw$ZfHHwFBD-yp7OcFK`@@-?rhcBaN3fUaN4pLgf6V!L9nhqM%uv}WiRSrvaYGW zwl^!RhAn}%r7tX9{W05zl7fdpdvSkBb!ZU3w>^pUKT?93WhV%8Q$zO)FLx8jPh)qmVYIG+GxD zb(j>QNj27(j53*!s4$C;p(c`7(86GXj49@K->2O8}XCyfvG=DrW&5f z)Q|@(GCtNANvy5Cr5mc;pbe|)+?A5#1`>yAGpqt=O)Fj<@)_PW?(=?mM zgCz7jj;wIx5@ZF{^foL^^NFYn&F%ni}{c7#~uOrNcn*=alMymEI>} zTTxAu7cVQE!EvHS$F5hajn5T{--N5X33?VTJF?oQh7q0Jm}g|EQh5!16Dkey zb`Jl(e<#496-9bSlBF3=kdj&NV=G&78dYN;-I;A_^0`VEZ<{Lx%}-DxA8e8i#{|zu zfoMmE?(TPv^hMJ)Y6ab)XW!=Pi{`JQ{JI@#JF)@@I&psEVfXSD+=_~=*~mCf$H`nD z3ifJqX`RRXA!f7e6(#RYq?#?iYA*A2=8#BOqxTb`>rT&8{5$d%8j8(B^KwRQ>j^=n zSzX~2VP+4*MYnpBUre19|WFcHy6%MT2N|w)+4!*D6z_y@>Za35$5{Y zGk2y_@SO%(FWcy5Od^f!7osmWhEn9Cl6B>F ze}6+a-#y7_FKo!X6qma-zfi~x#W|?lk|iRD#t`we7~htgu(QUkvnoMY_K0b_d1(z;(e*7bBGx-Du1p7Hqm10v6g?P@33lemCgJ?izV9`eDy_Gz&K_JNyhB=w53 z>hyN5z%p~aH6HG4Xw@!tcR&T!R+S*y)=6Gm$EgLylyaQ76G2o$7$-}Y7$UsHT$88_ zUaw30&*-=y13!F}T|MYr#@_Ub9|*lzw+42MUE-66#@QvNj zht8PCY30p0MY@Q0X z9tb&!P6sVd>S_c|{3Oraiqa)qb_5<^RJI)o%qN(?p3{$v4=K%s_%PNOu|LI@yy?d9 zJo|C83m6AF?TC=jFp{cWqjx?V_B=TF`5=zJHF6kxkj09dxk)iChVHQrqJh~>dUE`v z7oR#TMUD|h$74+)nSocgb6Um6pcNyHa33R{GUpN$VF6E>&5@b4#&vAJ#7SoD%{rAL zKMBpOqb`{Ed=qytgmonrS}B>0jG1TTi+Xf}u;-CB|HK17a-UhAzxuD2$fv~6Umx7A ze)KLAprCM&x486^_*eYs2{`DCAV6C;C^jpo4nlRaV=$3s}c`1FVLvQ6^`*V@*? zniD$B*UTQ$%xecYUM+fV+kw_u!X4RJ-GWw6jl$KhdCf>d360(c?g>a+Bv1EI@073biDyvj2eXqdXBm zp1qWZm%kl{5dN>YdfR=bb+MzmpY`Sl_}8)V?%qKzjY7LSd zQb;JD9in211kH2}=XPt(ZY))8B;vX*00UPkwc$XY_wBu!_3I^ju1fvoqsGnq1CaH~ zuOFVFY!kf^7R)NH%nU_W(WB{vvZTQmYHu;WbF#Szo!`ZSSJC8O@`bFVf>-6f6SMt{ zGsPl^M>7g5T+~7j^L3XP)Inj)WB4AHs*p;&WgeWNd1{u4l=XbX!$omiOD>t;9nj>X z|B2wPU$58M4Gab!?{?@pO~b_D%nrcy-8zU|Cv4d&*o+~oID39)%>g>&M=prU$_|~fH4uJ zG~pCN8(Ia6K9-)|>-42)ES4LqJ?crIOsomljz;zS6UAA~dvMwy@f!dNVvj9I@)zkio+ zAgnq8yOmBUERbPgc$w~~)25`}K9@vu)6Je>kxJg!SYo@~>3V&={nkOapr8Hch1rk9 zE?#2Ki+_8-2nAE&XhI3EBcU}^nrT~JXt+LdLXz|bM8EpRG?>tr^5ExJY@G!AtO766 z17pCd{Q%Qu0-W&gp^P*9CWCUdrrHZGfNBS2uZte_g?iZ2y7{)WI|YBR`BdSiwpa^A&Aps0{aMF=4zog$p40e%_+pUUYhY zKn8GI@HNIdB^!x74^!O#HdkE1MUP$VJ-Jv_u5El$!my>Z0XyXC)W?!y!?QvKW7LaD zzmYs$ln|}ga(!})*D=koq}_xo{2sl{pgN_VeO0F8RqdkNLfKt<#&O0wKH_ZjA|qdl zc^88{m{!o?s*+&%OdhsCH&A(k08O24o&K}nR2-$`yuBrfwZpV6^N??;oFQ|@wxD)2 z!x~C)vRN7zP7nXeR)}!eVo}tycjC11qs=4ue)C7_v(S4>qlfZ}jv`^& z)QAe{gv&%84{qnNi&HP*QU79xi^{M$j7lZ-tU_EK zO{+h3U(iBdQfYGo@BCm5JUF|(w0~IpS6H@zk18sK*DDF6G9rlp8WTzaf+EANCh6$`>t6jqC7IbbfG098Pse_n)qFLJ}jeN#Fh16LZ zSS==4C;Pu%lkhd#VBrxb_vq2y_2CpnVb%Ud@f|EhaMGI-*Uvp>=OPD+j*thcy;hDA z%FeZn2H_4n5Wkdls_;oSFkbjcz@w9xo!rNL{T!PmOhTLbO|;$>4E6rCE^Lgo_WB2A zAA@g+=PqM?BZ4OiRv&>sk}yJn(@ZVq_csp5hhIv_rx{4YHTYO@Uq}MH-9!y8MnDJ) zPK*mFd++LZ;$Ry+B{JwaIgX8 z4Cd4FEwQ~M#OlrI?++@$)xf%?yV4cT1;}EHznOdI0%xr=x?A_?Fad@ge*Yp zCl3Z9V>BMZb;wLCUoEV4n#)EN{V9m{>EbsAl8Wai3u%yXn$$k`wuA9NAl3)zwE-Ck zd(AXwD}2RE^qlRII|SP3=Eo-diS7PFH9rnD`*HJ)N-KN1isT9DZt0YDkiA#5S_2Il zLpXd4zik`>qF%7N-Yp7-PUxZ74y}P$o!M=R{T2LF^px`rDXb!UkE(8YIhOW$N>Vu9 z^_6vgK^bwj=dNw=ivQj76(kWp2EYk{+lwT<_eI(`GaI~F*^N!wm83DFfGcj$b7N$! zcSQ5<_M0KRA~*g3ZvO~7s1f~Kg8H!mx9zRW1D^@8xxoN<9CtE0`Lp}Je_mhjY_2>+ zLHCXs#u{b5)is7@CStfRU#Z5PRcY($D#nsWX8Q;z*Y@c$NnwAU+=Ja|;SU@!!=|`w z>-;b~FJ`ozI0BodJ`B5cNN(C~kWM8S$oCao5qE|?BrBtxP?A+6N4=O2;ani^9!2+xqbQk;Q9=z! zk~G`@dAfGqzQbQP)S$^(_fybZb%OHmfi(5ho0DxWzA^^QOeX&LLzt+Gvr&eMfQ&KupW;WrcU#bpHShxQe8 zIA&S#aP`20=9`_HW@%9t`G~R94z52%4}lwFbL&!T3CR=UsiS zjI|RAvM2~3hc-yc#iw7?C(%(+nPfQXbjX(%9*5%Hjz3omA~xP)f>g4Os9dG1W4mf+ z41)9;!wf&p=oUFr)>Sltc}+q#XrRX-=epR<@dH}iVUby8mBjD@r;OrBOGWtQ3qJ#_LcjN;Fbv{zxSbtTZ?zwHGV6>p@XyUhZf)s08(wk4VeKogI>~t zs)Dk8)_~Ll=MKQMHDDpBcxkMKw!-v=hu4Lcd1n?cyXKW%6fjo4&BVIWz&S9_@u^g$ zrjsWN9kS7Gw%B%glI-s3o#d};&Y{&TGqNPpQjJZJ2ae+KO5B}} z;fS4Q04YErl+t(C0-_C{FxWx9Sc=5Vu%d3t?$q}r1^sMjJ$>OSNrEFwlOoVkRacu` z8;<$(J^i6l6ugjRX|L(_kUd*j(2VTiBmfIWW#Q8lc3?p1^1x704Iq2ap9E+b)jCac zrqNHDD&xORK&jEn-uh+PUb2Zfq)92>ygX-iv;7u;6%Ck2Q9u{r4TzpJ7hF{-wVfo}{kQeL=>l6bB7x(P0YN~_M z6sZ+&V`lPb*~b6u6IExh*=ijnU%7^_TiqYY<0jL*20k^na%*G>D$_>_mn`RN`(9AgPd?89>^RhQYDo#G%GB2Z=aW;|raUsE6##ZiY2 zE1Os>;N^41Z3$Cmyy5Sqg#H19nVY~Wn;3+fF+@Xk#8@o%ThvcIJ?+A6C*?#0#k4sY zSaWJ*z`hioQU%fup`Bzrkar%e=`-F!=EL=XwJL^w>}-c%BHrwe?p4N=!0@*<)AE9k zb7q!k=JgBf`An61yo2%=r6B~VTz#kHHzt2Z8HWe)P5y92-hjRaLyLb9g*;cvg;Yq3 zLY+)Xbij0y+5NtMApSwl@JZ4-NTKMd?T zi~UHL9>11$B6QKhXOJ6=cKJyEn~y7^c>EcC^i#e(S;?t8W|-hm&XsT)p-|d&9;pDU z%7fxrcj26s4dTU`01sWPjK-^wsA4=iNj6^}jHp{M@}oS;Q^Rj6zJz;p+VR4m((RR7 zgu_21>2aa&|HD+{FM7v}8UKVRu=LRYcNnsNj~f4#f9`1N^mnhTU}bB0pmD9wmEHs; z!WnFBnV+rI4|R%w0a=t(BaDnVj@`g8%_}i{vdgNq_TL?mge*QckS_(1$J&2pm0$&BYs~{bYc3SWP@7 zS=~S`K6|=n)X%En*t(hDe%k%;l~35$Pnomj2z8UO@2i-3=iID}cAhp9j!!{QLImyp zCyW{{+&5KnNKQN>#B+#2L*GFwpLhDxzrCr?pVDq&657>VGte%A8WIrVrxq{n@%nqAUGVMxszNMXrnZLWK8BiO>i@+5?Y&}~{Lkfsjhv5b~>6K&)-s_o9adk&pq zILOQxE^?>3P`90n_?U+KnN!*|GG;|1o-<)_JXBiLEIbQj%EV@`o3lXG^%z}|m19Yn zQdgLjy2e9}Uc6&MrY#c5C!98icv5Z^tebxmG*!+qXq8;2-J|oceYOk1i&(&0TEJTyi-zK5 zfl#_mm>@O@x{b;)*pUo15M82#yGsf6-*}jFz>c z5GW_fj|%&I+ptV7Cv6djO{P_+9t$kiZjsONyz1g@Io{y!`GeCd>4nm#m>IDPMZRdv z6nT%#6HEm!FK!1irluo89eD~xzgG`%0^>&af@t{3hB@4cQ$v|-POQ#3rHa9307ZX+^a=;M*^KLC8sxedy9IK__>;YOEzq(l+f&N)GQ%b67E*NV_nMP=GyJy306$n`Vns3RHhq$Nq; zb|$(@4_dU7Ub+q2iF(a9!cTM-tj_Nj+XZEzr+Dv07&|9QwTU*|K^z*(H~K33`F|H` z+N%6Ut@X52P#zg6bh6&aWzS6mlTBrgNxS=AQ0DiGfWlDIb!sq zCf90j=y+a|td068eveK`tNb$%zvKM2s@ph;T69yDHL+JsyHaKUG-lbR;!z9NP{K5= z)vWN^WT>z#+{JC9a0D$b`VD#M7K>ozmUKFvpIW0*r9-34g>eXn*;<}s5UpZaWB`_n zmR8Xkhg3DNN;p4vPZS?PXIPHB(DtyEj<@>fM1{y^W7}yP(4UT{;w#K@Fsib@qRY>? z?fhNMoji_C93V88&EUYucjOSr-Tz2u8(JfkQ8dSXZuosc_(xTU8lCT?-P0!q;(o|KL40C(G|Pi(O(LRRSI@QC4cLS9Ni5$bfAr#5>-FaBZd> z3i(^oC_(Pk6$4pX*q@^7Np())R|tUjC@8ehr)R4X*%e4^ER;EGS6kU$@`;Ol5_J`) zl0~vbJw!6^Xi5z+wjaY`BEAI~RYR0$L0QIFA0Z|yo!=W7FUG<%y5<0jhG+MOQq4=~ zQSEM~bxJSq+BFeBg|{VlSsuZcqOqfGY96+WW|yEuG+~r$uh5mZXyA#|smPLR?_mT| z-q5lnR%TicB{~X}mEn!MYOXviE;{)=thHB;S-9F z`_y8AQlfGFRGH+%iXMD|&1RWIBB9G3KMLi893II7BERC}o@hgPi#nu3ny+%bXjzk` z5pZ14`%fS&Sw-S8)JH?UfEls4%wIrxt00odK%RWHX$ty;_}^?yz4Z&fZ5-zXFXR@Vy3;H!&Hq>(^btuE}rcwybj z-MU`=x^p2q+plG%^yWMw*@eX9p!jVe8`&u6dfZ~kZs+2hH_+Fjg|x|E-y3<&o7y>$ zhZeHdp8v{{n?B_2@O^ux$oaY&#lJETruqGd;ro6q)KUa5$JD@rSN?4*a-OFmVgZ3? z-7eWUvz|%ZeZNR{2(uook>sEzdCt8NZ1&-jP)--(=PGEpP;?Y{XP&x`rA8IM1;HF^1Q1fZ!0_}hri7U z9&Z1%hvr1M34Z~Tu-8?uXOx{jOvJNB9XJRqNElHf8G#4^<4KjkO}pY8NL@&@(K3VU z^3W0SxnGkNJVPTk3*UD)eXlr&=->McybUrmo6}4OY``;SqnGfDK+(=I+~6eOnqW^ISH<{Dw5nMIv9ZTyu**U9ldiN)aGso4LJ!CYL43 z`k3h;GIca*U;b_S0Ro;IlkP*-luYz@vF7rSKh|Y8RQBJ%axUG~Mth(qQt$x-{x_x#Op9pB^o`Imy9qAX) zZDhM^dX>n%W0t0Uk0R^#D* zaxgIb$XRmbv62em0&7>qDqP~k4qhSc;P%=WfAmpX)9zBm=aZs6*eqFHq&Bg;9tjp7 zL9Kgya3|!a03QAYRMZay0;}{(;e>a%O|ry_z>?`yx$XK}cX_%-{dfR*33@YL#8Rj3 zrEBPj0DaXwx(!1FW<-^CM^K%{`em!9BQaDtUjgk9)!5~EfEbVDVOnQ?2|5f&pDRR_ z#NzSY0w=ByFyXysE5f9|P#HDUrZh~YUCFVwSt!OL(Wsg4&@|dP`9kPrC;8{IscSk9 zAw$H+uv_@;B0*(bb~qcPFAi6lxiFyx%qwMC9v*mAr>(%rtj(+BnlQgnws4hK&6jk< z)q6qDtEOYV?7ib;XwN5c}Z%kcPgGgooMB0M~ z^~vUNugj;`ywLAw8MFoq4i%OmW6arGGC0BBfL$@QAL4SW!JQ0#qI=M^&{UbI+5HXuaM_p+Zhhqi zA4a^1XQ65ZjVP6>@d_Lg_m)A%kw$;O>5BDQ%k{N`($cv$Fn#I(a{jLUGMEZhsR=sfd+Nij!X(?fMg9NHP;UGKo$`^3mN)V;7vf=7NiEP+IL5 z&1&`CKs@w3Bo`&!c}e*K#x_3CR#CZKDr-+G>9o`|b_-FdDKbG4ksMlV?tvoH-h+M% zzWxE3)-XVk?huOU2id zQU1Mgaml3ICwsvOG<-`fuPtPQz3SP)$t(L`xw-n|GIx4FWFiw7fx`3en}L6dG5+!< z`)6?9Kd=6+L#R^Q0s4U;eaNvvMN-m(&j&RU1(7yeAtA-juNM80u#muyhY(7CI9}@x z2&Gk&yb9ubYP!xE)1Sp8h))AccPUQzOQqo?uOw1CmTGv0eYtgcdFk_fS^dlRoY>FzO)IvaJbg}O00TT^A7ESg`$B^L6n#^ z#-4mF@2oaUqPY2l!k%-Dvc3RA#)a2nx<0cNtawSBF0vA# zQI5R==R%oR+~Sehmfgi>yqQG3eK)xEcxzbKKA@sw^k+Mni0v;1@xh7SzTFM&nlFt6cet<%V3?V(kBh$Z^94agOt@;_0;?Aqz)YvHWCs(7Gu&ImppuAPjaM_x zBGWf(hwhYv8db!g&t6q-$BK3v2Y@MGgva)%fB0%enh<`)35R#i_#jhKS3pUgQBJizr_8_m0c0@K9Ug%Bjmjz7iHBIej4f`-lj_B&4b1a&nA zY@R7@QTTd(L%&Z_OL=(z(L$>$KMt7I^VV8sjOE8`pT1@cDPnEBk z3tKyjyaMTt^0ai3*iV(KXm+)PpG0LQ_ed{SxDVEedNnMrNt%D$$}*{pUa_7*k&0%6B6440rn-bx zi(N~I@;gQrQw-yAugR2)m5CsQee9UJ=!0>P%Dg4Wx+D=^*%+xRf5gCR-bYkP=vEQ4 z_~}N1FN+Uf(w-biWLH3uw0__QPvg)20-ae5k26PhpZ*BDdh>LndDv`-aJt^;sM!af z&_n5PJC+n4JzNno%Mdafh_#rtHZO?HoTfOGebn(mys!uynCs0WNFRJCOO1e$AM#Rg zb7=OnbaLU(#Mxp%E_z3$g*Yey6Csz)`)Ch@8^gwlyL$N_(X)SP3W^@>wIYG2st6F# z`oCtp(1U&Ab|9-Y=6chbKb~8=l#X|Sn;g!kPMvK9|SsaR#*{n6VFvr2alUW zPSh8Ev(@fPm{J(%{$z~MB$t|Hkwjt0#pJZl{bdXD!Jm)&0}4OcO?hEKMcN`bB}#LK z2xst?K{H|h>fHWVPNuBGW^9crSqQU1P;EF8M5`497p!8KCgJS^10=q>DVwOP+B;hLqKi%mS73n4tGu+ykQoO+AK>cj>%JdI@67uD;=Kk{BVb)Zmz8&j*1Mg z)KJ+}vxjuWCZ9e9kFfx@8g-$ba5TcsQHHml9Dt|^bQQE=-fi!JTGa260@t^$yjNO_ zwR_Y&zhiDOy5weW9!kR476My>f^!jag?2Q;yE!EnL_k35H4WnmbHZs@t_yzg`h%ra zs-<&-&`jkBP$$X9y-+(aik(9d5y=XZ@XIsy6Ngj?oX9Fg7UL+VMq}wCiRIok6xkXO z#-gjeLWzEWao)Q7xv~vs@E=Sa;8+wnP8#s-SBZDF)$hI|XljIAv@I%qGoP7eZ+AT|b^Bn9HOSO+zG6JXQLQ8DD~h?WNyo zbIOctQNF>HMNx~guU;pnRveAaAh^vjl!%m;?>mZi#Bl#FsThmiH~xjdB76XR{|B?1 zf0o^U%0YwwCI=1H|F6(!Fwqr2wji2LXaI%8LSAzrG|SRJ8xZ)A%G~cSVxFAwob;-B zK7jrvOiV;(RMVl zd}WwB>0IFKxoaBiTP$8?fs3Ux6dKrkc3GuM5!WGWnw-IJ%p`g&mR@#1rUAO)Aaj4} zTO!R7?p%e_-M>ge^@2(0L4kdT1yB>j{eS8^B>&42)!0K@&{f?R3P}1%#G6oL!akJ_q@8^P@1o83Y$H>U|>a$jM#?dd=nT=ApXaBl~M4Q?vBgerbpH@%&kgJ!klM4ZhO zj;je09IT1?Wjf73dkt80b9PLkm^&FE=J!bKIp!$MPC@n^JgzlbJ5)pn@dU2jSeBZVg0l5SK$Q#L8LClG&l^`7M+ zaLM}Rz?$)gk`oqHTl*Og5=Zmf@I!xnIbdK2aWt-k=@hhxVT;3+)40W<@Pc|L`P zTIGXvWX)XCTo&xQoER2XPK)(bbQv(?i3J8kF9h@M|-bz zG6m?qTy~-l@9?sa2!Y>3<}y~_Ky5-K4EvB|!x zWZ4d~N`dSc=u)d|M4mlB#kHZpHnH{@ zJ8x*J@Od_&T>L;f74|aOH|`vzrb}Hcoa@UfJ){j*nj_>u?f~w<`3R8tw7K~W9A>{s7@+wbipATnm2C2V^x{? zMohB(nHV%%^ONndnvO*8Ivg4G@<%f`Gm32bjmWp~-oHiv}y`>K)QI>f;QdcXHV3*vp!inEQ zDMRD!W+{H`K;4i}i#3vt+Jc+M4oGLl&HVWv6W70b1CZ&*NoMvCaIecR7cJil{JCb4#@tMQJa!c*v)B7QJLkx%cPOAKIUxxB3TVOs~R&#NwB*(j2OxTUSD3 zVqWBZu$TX#Uj1u+kHF{YRR@$bg99toe^?z6Q!_(ntAEVzfnoNJ3u0)zxMXofp+QLT zLWJar;-;YX7I}Gfxaq5mr1nr%S+ig0D)B|tsHL&B%>cej^N6WT1BeE%8C+c*OwA^q z>uJ$uPuX2uo`mK#4LVi>+5Pxl6?;5tVB_VZr>VX5fa}`w1qbyK*Bwg@ z)D6~3%Td@walrwA050XvR*G5P&6QfJS@LEUE7-=UcmTe?%ZUfpf$$Kow$0=8`$`_+41q#F6J*utTva9bM0P%(3{_N^8eVM)ay{)`8%b1)~n_ z(jT$mC-03WCNSLYl(M_zBq|N@&Pxco@q)}oP{78K0B&G#bg5Ee5z9-M#PeNH{WJo; zQL0R3D1B~rwhz{m9L>hiIix0eypjTLsAlQdD^G)#oX8rWPF^EJheANLiNc! za^(W8j^8z82uD&tad2DuMwe69MN0;2#R(LvoOf$Anf+=nIBhv4ZfkhBzx+*^Kd(Yj z!~50sy;>HU!tH3UyaX;suW{d}&=6{!d-=Y(p|9et%<3_9Ypp6et0AJQMn6GWZE#hE z9UR_)Iso>QQ3If3+dtT)NR%8Cx2PV=>cLi$4{$OQ7Cmpz`kzW9rhsg1WwsH(%F5+WJ@6j3 z?-T;2(+?@-Jq`|SJ^W209$=5m64xI`5>mWoFveQ)W%eQ|zPIzGj72DBKbRR~YTj(z z4P>&zDw>^;pLu--+;^YHKSf{9(M~pY0enyJ#t?P%-uHKN$XRPkdfwb$+dw1L(rxN< z=4{|3BNwCw`Mz3#w`5H=wz@9fN-2KpW zZp%=-8yA{83dLpb_dQRMig?^;G)QttARld>sXp4WRqg_pQLTPN>#UAx5M~4Fz-Otd zKtjzyPf)U_?*+@}dXn zG7NzQ7#mxLgaalYY?r<(10|1|3BQM371)N9UBrA(q?3BJO9H~p@eG;R9Uz^W|A?aM zi0xSD9iJ#4_tYYh)e+QO8o{e{$XRBt%udK9v#Y6oh|4Ii6g^|bGKmZwbFkL@zFdW`)q)CTHlsF>tdXw|F*YW20bx)5Mcx@yr zI1Dvap+b_hEPaaUl~j0g5g1Ea8AWYoFHB(l%+$VLhewV-EB1a1+=SgV1KM~Me)kM( zf;O-9gfm>l$`7?>Y$MqY8mwY%0NJ`{V6gJ+Z4X=)w{{$C9W_8Ln&@D zS!VHAh_GOql5`8C)=aZ!@hm0YYVz`)a31U1=2{{+bV=*7K`2j+^i!P?7K+{$3I+{3 z&CJPHF5yINU4Zx@<4x2!2QdJ8qsT9hBb&!4fz2k2z;(<|$$hisW=r=TT$s=5&%t!` z>=vL?=gBRdsLAx2v)#==qK27hHy%wnY^x+jqYsWohkQ%vQ-cbXN zzW$*1%N_wIY~R21FEsHH^9n*syOB7{JBm%zEV*qz`TT6wPgJV%7T*6drnu2>tq`Du zHjZ}66E2awd>{=ltF6D`o6(s4;2KuSxF; zCrwRRjpQz6-Jxk)OZSwZrERK-Zil1N4qSa>S}4n*D2B=5pUBfd8Kgwb(6zfVl7Ix_ z^r?$^(epZLJqT5$lUOEwlNvtJr}+3?FZQ1H!8b5WLll=Fi`4sB$FE^0YyPhqeeYl@w8M;%MTU_En*P}WU=fTuDK4T2>_!?%Pk%-2*wC~V?9vNY zlFKL_XB(u_s9kz@*=#r~pZvPoNY>k{o|T>w8(;}aFb_?MY#-_>7Jdm9d=YBP+{u+a zsJ4T%v4I_7wL1U3EDZ6KYG|_1tP`WX&BmT#1l0%R>S87DSu;#pf|8j6jVd!-q8=jA z;iY-3uhfH-kI)l{$MSW_^yDsB5Cf2HSL`gRI?ti>Xl_&Tvmynz>S_0^(l?#K4VNM2 zI_}>!PkIx!Iw7Ojo?kyntx_17YjNlbX(e0fc>vIK%9{r@tu_u7)%+C~VddgsfJQiw zvgd5wJG_DNXJTzdp+%U(#}7E%_dH+a<#qE_kFg%4;k-(iIZ`Q?g|cvQK;_(z5{wCy zY9p9)>S2azBLa2o>Blp#S(eH4i|xsptSf)jEoZ9<4zwm06`YGfnpl`W z@E+^*Pw`&?9Ni?c4PzKMm|^JMD@GaTS{<93(k_WQL@`$)y_WHhNhUkr8kPUhPH_ie zJCumaJCsD^{LszYqUtZCbS&3KH&)PqqQZDmElbqSE-(67O+(z&h(@arS&bZ})CU_b zA@d4K%uRtMB^Hw>fjtsRcJPak#D38*N{Tk(b2$0RSQ^r5&+mI+rLAM?ZAD+Hyk%?9 zp!|RTAO1?US368RlL0oX;AsD`cmYuqV_O>&i@%JM|IRwCQnv;stfKo=lWEq|j@09E zHj$PPTLf55s3yd-*hdoCCm8LolB;EL7QwKhIHMk2jVeyN_QB4ayDHAf*1T5*Sq=jJ+o6`hm z-G!LAszhYLB@IR^ZaoEfG75QW_uzcI6elVQ+$Nv$S6ze2eJD1pFH}dgFrupH3bbeRj~n(BcvlZ4#d$M~SV<1jAKjg)i~6(hom8TC0t9-2iP6 zNW`l`xB($pi{Hh)p^Gp=@0SM;ZilIWten9SH=voOe_-gWrDtF_1PJK}IW0@Qjy#&~ zbcjRS64Guu*<9tMJ6=$+p|WVlp)!t{o^~8Yfct2;-W?(gy=Ux%8-Nn4xkyqbjeQ@y8GeSBz4nbBQ#BPe>u|h3qOk;%RZZ_61-}}@uo;2{ zxHFf&Ay*hGTpa%IA6DYs-03vGq9}{dWychgO5shjNpEZTUD6g6m-F6F*q{KK-$I(p4Dr?S#4Qu7vhpyQ_u3rh>fmulen+K{jasBu|HCf$+Wr%)0^run$*u1*D69zrSlAvi{ zql|99xh$M8!{0D;3(SyT^yy9fmNuDs))KPK|ILO|oV=$&7ibj_I9y<76eJ)<)2np@ z^`vR=HkKZUPjU|7(TuD?19`6N?}%NE)4Krn;`~yU%wZ66Y65bn$&Y|E_9f(48&1FQ z7KagDONIj44-`Cf?0f1y&5y={bc%_4Fn2`-QP~<4RX?zo`cVo2C46Fex%D&3xO8Jw zz!}vM`4A6lWlHFyrqWq>m67lxnxl3&>(ZBQDZiRHBU>-Fp})SQr(BtQMpCasJi7B? z8_pX(fbnQAT_?-ydlc?2S$DLQO{Qh9GP_N*t{Q(Pj~;K`k30_RR{8Ug<^c~w&{y>a zkIZ-4aTtYJfTt>R1Z_cm;t_NIm8R@>3k)kL24+s$&ty$d)k=~kE`Dmccu4!{`L?Wp zn}}~RS=RY4kZB(YK_BYDvzJAb>(W9k+CnJ@7B%7KjoZkPhMVn;pvf%R3LLZb0kVW@ zEzlTcNC6-Bg(QKgva^xUg@w+k@=CaSGFf@&c$ehsHU-YqXvMVe6F;=!lk!B9FNj#` zbXWTcsz>V^MCL3MZ`KYHYuvNa@r@QH2PS$*D|u`*FUDr!H!-1FKSH0V#J!Bhv9sNCVzQs7JtUH*=*Ka zL7sX89C=0COvGKB`rESea8Vey8jx*JOBWGgHv>tr$i-3Adq1@5oT6g51Eeny2`=nG z^iV%!QUkSJ`v@)&7hs6sy`VG#RjK>D?YIUOvBH7#99blH&q>@I*btwwbipkd50PF} z$y#KBEgZe4bE7(a;XM%6SH_X$ACmLVXoVMTgq@On&eJDDtCAyVFtByuoci+LP2Iy+ zuAZK@Qn~9R!J^qgu{|>RO|COFSLTscW|aq~I;(QZcdeLc^gTL?DNiW&?i}Mu_d5BH ziAmSBg)W3<4mlWGo=-^|bcI;Anekuu{jxALYv86YH~u zVhM_&hPMjW+r?0Kxj7P^YBRlj+1`kq>)~ocJ|MwXMcIY`wi#V+I40e>)ql73f|274 z##?$+ZkXP9yIo^P_^veZ0`4tGGGsWT*XzVKI9i8xu=NAl4yJ5ND&>4SAk~Tg- zud>7U8cobiKnzlB)aNyndjnyV+}+V@GK~HF`Zu~~1VFqz^9?ULe*REhNT0>#f6q-ukV^l$D+-Vfi7}5}DeAu3GntW@c!pxTK$~x)6Rc03Ka4`W(XFQF~ z>}On-aqTma74Czky3OTJ^RN7H#Z1X0Pn07e+;&rtl|E-*jE)~X&LxAb*iCIH7z~yZ zK@3b+5yg~Ws@(mrSTy<^<3covr{x>A$m_=^iQO)(k`%ejea_FgvMV^d*e`Vwptijj zFdp27%OJ0wTs2KOCqR`EQYKG`6%Ii`5x*3RySX9W`vhOXgf9#rq}3$3hZu6H`aSB} zH}AUg|0aQF*gS!IZ{yz>1It2AKxU{ngclFKLrd8{KI( z&AV~@y|_((FK+)U-=&hxH&p+f3;3^{^0nxVEx+z~gK@#m-p&^!fa9 z$mt7W>Au_7Ayz*8O9YrI3~hh`S4F5|FD$fJ?GBG9UULHoHyerTDAl*X_ZT{>(o>H# zbJ`HylhZg?Wj1n7WK+&O&5TY=GdNd;q3s)vRt_G_&<7Y0&r_Y6M*@uILy-^5Fy64` zVVVpE&;xg@Ii4sq|ERgIBl*6GEuClh5dXe{=}n@4QVPaopOm|Mu$QmA7!l6w0!O)j zxsm%Cp_|8O)#j2*!YIA&8Js95u+)7;Fn1<_?$3?R z-DFFXi-x-kOqO%xtdymeQP0O>nJc&3l!f4ULpwuDS*DNSkp@Fc{#N#v$7bp8H?O8ysBLJT zb(PIOV-`rrJazu#`B%r4V8f5_X&h*`IZk# zTsdTS$-7t)pEGf`{5=5)T%Kig{RBs#mW1>Y(=^S8k;ROvHol47L;o_e>`=FWWBb^8 zjAYRyV#mbmViFHq$+b9`gxElc$9Jw074&Z>?~N)U?hO!C(Z@1LS{up^tG4aDed3(P z&(!aEh;p7ng8nVj8=byscJK@hB(&2&$rQnE5#4L!Hq#g^ydeeR{ci&mI*WR$@Oz;4 zegA(5|9j9w$;`mwUskOk1#OFehG~N3UG1v5)uOk$MJ-(EpX4s^IR#U}BvYmDm`hoP zRam>TtH=u(iciXNIFO)!jP&;xBn^0TS9K1&k6R8?nW?-!KH5K4`jBvusg~%23Ml|y ziM48j`xGi5MeU-STfOZuozCZ%y}3Q+q;=wK4bEugvDW(1Y_X}39vrU~b5?$1(JX71 zkcsJ-UO%giVv>3`qgl>A$k0m~NWthC>#;FMTWA$ChZ72pc}^oql>fHyxe~$~ZZj0e z)BE*kIP9yyG-i@zmE5#DCyJaUP3>athfgB8QGfv8M2Aj=8YfGqm|mVDYh^gBV3;eu zLWFft1K-BP6}Y<#FCJ8v>qb#Uh*n_bLU41!F`EAlkuNm^_w23@l{6raQz`y#v^R+9 zk>XKDlVpVEg_cn|=wQw=2Vq}Okdd6;mqeamLJMjz>|3aJ2xa6T2L48B>%z>cdRucPzWlIwpF2YLhF~7oP=aKo|K2iD))Hl4$iajMH3MV`(@QalGzDID6Js zcRlw7WXi*5+MSitcD*i_99uU*iOb<}diZ2`Tybx|e9I&5hPS)lLI3>z76WK0&W4?$ zV012pV;LLXwfTEe>bKA=8|P21hWJpVBqy-`-jK`HZYzjPVg~onC{={GY?nydx>wh3Y(?E%=8|(}xL?bx^)TeS?E{!*7vjoZX zE3eN*Y#_gO5CS3*pM;!U?dD> z^9HLe)j-?C@0!-(sFd~0Fd5Mz6g_t6g{_X6%dC(x&X^^w@D;(=)% zXTW0w0P3lBrBc7aFzT~6_kGxlHCY;`#k98O$AyiR-RQAbB6_JM4|lX+V)98(tI3XG zTPn7Z0~Pgb%BoPrIOlY5)|1KEbMY(;CA2(8H2LfTnX}>K)^;sojx?#+p_J#GKIvuB z#Cd%A_Le@|&)BP?Z#IgR0$@@R?!Sv6w8rJ~Ty_)auv%vs>cc$5fduYH^=mtC1s zWSANq>hb7*jHZ&B%b2=$D67noyMs-lXx4!r0Q1&qp53WImV9HR!6&rQbt^h(Xg-a+Lw*=ftf2pXSJg|7it)JWA+ATh-m}F z_j0ifUmYb_Rv@HRm%om8+VWx<@ z>@}9NULFCYH#F)Cqzrs@Rb@;dw)5><^FP$;^#I6anP9Owro2e#3!c0znGl@Lg@jLp zS*tq#>lxBv?se1X9SHqYD>4KHE9ONkz(|<=3^;MP-Lw11g`P#h7JDnEK#wdDCC&wjmU*IF3-C(BZIZn(Ks%?LzI~Y2 zY5G!`xnHkg6w#p%5^W$B7dYF=)I0100tcgPj!rUYuqR<9X8VS8P8f?1NRSsy6!!qc zqx4Cc$TXCpY}-6`+gcQ=g;u3`REP%Rq~tw?QbWs$V16IWd#B*A#L7pvKzm~lVOW!N z!&hW<+1vCCQCyBOlBiEf{_eUq(>?3Vj4t!WPl?`SAk84(U^R|LmBRXBgykjj2_L!ETRxYyZVTBOkj<5xQ{j79oiFA-Udc$hD@_z?|*tHx!WcCjPmDY zQuU@+9k!m_vY*;s&abyWf7l{y6UX(Kh;IxOgqH#zbR^2RYMS-1t<1%FA%*Riqa!2hymKfdXZ|nB%HXPnXKq;V^^8KORJe` zeIJK7dB?+R(kXKp?qM~}Y>Y@uBMbX^)YcFW>9DiT+YdjEbqwXn9Cnr#yWsE8L?koR z#NzDEP|ZV!ZqktP2vuscg^c_LlVPnRlRX!~;b`T|Q$-_+Yxl4jx4%5$k1C#*g>el> znO4?c4%8NPXXp$LfY!LG*1SX-%L1!vf{gov%OE|2WY;z^H>}y2ki77CP(Pz!18EJx zeu#T>vU~#MDO0+dyuDgbB;~WgkJ`k&d<-fr1w9M3K_uj8k@^8;{zcov?kC@1j3p+n z!QgOd7~Or$vzMA@QGm3LGc#9zGe(u~-Yj+|9ZWx(o>+GnXp*ARH`QKTbZ%3n+fW&g zP$W;OB6NFOaXA`p#D=*@E+3UUru7oUh_(1oof>7HEV5ca(^1HBp5`d_)FB5m8cGn~F9i9LVXeROnnZl1Qgo2v-{91%?z?>d}e$;lV$0z3WrR*Ly?^`Jyib^Nwq| z#_b_daUD6G?~#DK#-G+T4MD~hjpOb-rpJf7h{P7wd^+zQ{s<`}SeO(Hl-VKJj+IH? z;0)UZjES`t{1>uT7vXC)`Ks6?+?$-w&9~(*JoXr2hos4-AM6ytzE2B~=7cB?bX;}F z2t?T0U&Kn7k%A66NK?h|_8mm07T{ppZ}uzW2mVGQybR_$$ZalliKeNCyr^Z;P|~5c zsRp)mKr|H3+IK4RY+dM^qipkg^uT7yz((G5&!%gQ#da`Ydnoq<)Nhoyq1Hra`TSc^@2|6_QibnVKKQp5;eV@iXZ%n2 zL{a=(jDY5~Uto99VrEMIdrU!M&6wOt(9gdw57CcLVqQX++cuqTeqiucC|c1kmhIM| z1+VruY$ziyLu%PDZ&KG@CiMSSUvx|Xsn5nBGXvewc2$N->{8}`s%`A8g@yW?u_+< z1qdxNxr(wQzJJ|{e`Ks=T>|FH%3<3aoK|}!CnKr(-0zvM4ceUXAWnlxajeVu4+=MN zFvONQ`!(8;dpUGq>mgJ%njG`F;V2zvqOj}rZRS~S&HK&8J>Epl^=Pz7*s-&mb6IhC zqpuW<$B{;~rQ*?gpUp^`pVM#X6EQS8+w~sMtCALrKRCCnVL*sQu>^c#zVqWgb?6idj6bv*)s=yxE_)(%b9U;*{!r7Ow%u#wJHz-PfI|Zr7_eA5RagKkxUm z`L%ij_?hoJ#NcS5>bXxHhbX^H_ zfKke5N}&leWkOQUkd)$dbU}lb%=GAUY9QZ69y7O_uz;zSroEx#8il4hVdjzivKm1` zGznv>p+w9aT_%10orX+IG?n?P-J}H7*(yH7WNL$6R8evTC9rq}JH#9o!a+E2oCY7r zQk6dguxd5~cnqCBB1SZNksfyP4ALX4ovDbw4^e%Nq$viYlovsE)^fc`&xqPKC-j63Y#jCj{(wI+x^n}y5`>5{%L^mY z`yj2Yp;QG#SP(JV3xGyb3C0BZV^?neMoW|gTPfc|YC`16GjT6sj>1~sR_TYp#K5LB zUqp_gyCS24hm=;!189z8z4-~XwC|7^j&oCFfyxGa_t!dPMlnL@ zr|6=Q{8Wg+SU!IS#6VaVZGN(#aYPj3PG4P6;({0Lv942EjYV;=DxgVJMXPCsc?K!D z$cZwW*<=M+0Q?p+d&%J?QJCR@eF!jf&STldW%uFNVNK%5ku~R!t%Q{fY_A^>sA(P+ z@3AK`w-B1ul(~U2SUcH#!e(J}t_g0XX>PS0EkK6#H%Bm)4+dL<7ISG2{UiKx*7Z~v zwmSiA{t&W9aB;ut%{ps=I;u(93O&4Oa>KLqk32m#nFc}bvAwpJmlq;QbJ50;-a_TQ z-MlUV#-F@3ek+Uhv3kXy&fnHKuAZqRLs*ZbT&2PR#urP0?)9C(y8N1jaS_GWHIB8& z76WNM*<-~-Arw!gd@%+cm0JfaMf!nBj~g9i(Hm>zJFyX0;X&ok7Np{q)}lQxwz54` zSLH!6eFhcf3O((d#cZkk=rHD)ZU`gnWcaXTTLQ~J3E^_jx{$- z;pU^cpp1;}5>l$AohKY7G((uroV}Q5BoF%xp_KKoMQcn&N7Ya*M$R|x9vtHpUdfg8 zsbkAqLzUwEDGqSBvsLKx$~{_F$wA#0!)d~!pHJZXpVEWdc43R$`2t{tiC0!aKSZ8G z0zauKGbTZdS1go;9!e=^(wPQXY1w!@w?7#B4W6PU*lHfyi{h>H?foBL`Z5YV z+)Jd)ayMSioG;wc=VAdyRRb3zYl_U>OI5!<^xAs>mwQ%!f3-8HsF<^{#v%>2dgz;o z?kn~a<~x_ZMk8U*f=C>W=7AM_xd^KA*3NC$MctE9?1(}YgJCq16V_;|;I00A9xnN)Asnjmdf%gv3MLDy3*dY@7a_d`;if|Fb z;}%xCpRE&~gNwAO<_bMl^r4=r2l39G=?ZH@bYsIT@bGDvAP7ZU*4QHbHSMpPbXno2 z_}d7@gH!9|^cZ^iuu9l8BP*8QqG`&=$9)agV1w82^C5}AC4l=YWip?`!xrO7Zu&1h zKCb}AjfRCG5a*P(=>CNh(`3BaZd>!Q8BCcrxdKQ?gH1;^`S zKWO`|En3ZhSUGnpp}WcGQ zFi%n*g!eF4_Gd1Q+PsV$qna4MgxxG?t2#`XlEEDP?^$e?ndOy+I=tSVZa^Bv}81a`hLqF&2k0t6Q~273dNcF1^sNmjOT z*wSSH)QsFQ9eIC8ZzhVKZ_tOeR&ZD4vaIO|*7+!%Oz}L83WJ%m#U5bM;sxWPv}Rv> z0bRB#U=-4mhSJpFf~v#Ee|;sLWqygTT9IJDxXT#bDigL8OX8J{l+ZhS>ias$lRBK>EtKE zfn7T-(wSiF${N%L<5<0`ofJ#kf)^k>lJns{&P`7|B)(3m)B_QYL?9AUl^=pdP?_Hx ze^3@dq(lVKn3$=%87n%>?)Wr>!GEs(K2O8d(@bw*% zyF>(<<)&L5lbpP9mOJ3XQA4;}^&U(Jx5?xE->jfJ9eYP_-v9$A!jB&$|2@F)FVg5g zwN8apxcTK`VI;R;9h zq~66u?{~%D)kM#Kmg#$97|Ib_Nx;u1(9;!xE(-)g-!GA1OUw~x)BhnzWrJo;SWG!t zv}PEJs`=1XRT?!3kgsK$$5WhQN(1PtVb8B-2Deo!|CYR5*|N$$n$Xy^G@lxiuD?|) z<(;qScY5G6J4NYN@+jn1rOQNz;EmPr)@7!ebYIjV;wQBjrP6?zEOEXUnNQ1AFNcmB z@J!WXGr1~COHa-1&%~%EX!4^1cf*XKsdc5JX8}u3zwJXS>;rqR4E(R zZ;#a=-lCrrM-U|Gw5vvK!Vsuvh|A-ZVRgrA^4nGED>7G4%OaAbkcy4N2$6Y?g+A^y z^HH`b_8x0z(q5BD8tX&g?p!2IvETjy78@A4o}~E{vR;lv^0U_K?TnhzT~f=Mn+h7$ zeN)@9BXnj&?n^g!UCWV8{JCCM(-C2Dp>Aox)WA70SV57xF^(R3USVKxnvQTlhXi>! zg{r|Z^O{Ir4B4(+alxE`PSFplk0@Oky(&=Mr3an>eN~B^G`<$TgGJD6DtxfJn9+-c zWPKQL-tDLN0eP(ys>XP!X5iS}{*bO`ki&bGC#Q*2>B0uKv)2TXj zq6{EFWIt=kOmS8;gloKSonJE`jBX7a%k@0E_kr-SN6ZuqXU86l0qsqPuHye1*ZQ*) z$z(6)=1)gA?*0fa`cESu@rUsgDgN==}Oi^dZ!sLQ(AcpBC(up2r=#rrpxlHF!d*3Dz8vEVbr8OL@zm=a@hM}N283F?h%3#>B;L@$eMXpnbkC~oaO z9ty-Qz1eywjL?APJ$10l=qLhggkx`+wv0%v5W-JZZh#Sn)tRRME6XnXgM+&=cAmU< z#O!9!;BxHy1~1gr-6KUvdiG|oc3Sso>f1o(TjG&rC$i^|7aC&R7SdHgtTVxRJTB5- z`R;dJoR>E>CnBC=#_D&kidF}7RUS!q_6kn-^nzhaZZ{Xd&LQ;fEne-?MDn}zEG7GK zAl4+fFwPiJ8H#pi@*$T~Y+Po|zZY{Thtutnnk&wwxDgfN6O-ycWwA1=(1wJek-T$J zv(TJxf@p)WxtxN+$=F+HK_u1HvRjv`O+8~ic?obyPC*4cq4$}xfWE>JiZAY}G3=!L zd=5kRe?6OEMA?sLwun#RLPsqTk7&b8E1P~ZWuy^QnK#7447mdEwQ=iT+S z&(9QJ1VJ=7{gh$<$Pnz%T?6z8PftfseyZC`qffQCTXASe6(d7~5j|-Uo?sd4^)T7| z=g63IdCQyI+Q@0*jPjG{-ieMYCFpex%@$IAce34!3@c?V<5o9gl?S?x?7$P_MT)ip z3O(Ce)8t0#^(_XcsDU~wGZ2;8#>nD$z)T!-6V;IlwzmJ8j1NV!c(Hx!JrjDC%e};+ z<27$NhR1iQ0RcOj+2KwoN-BwL4$EOsm=ro-S4J{Lwt;(6JdgAaQNY1DY{r=y1JI>J zjp|4`3`tVyNV_JSmxi#*^n@aK)g&KBw?)IncrLrDd42J6^#yB_J%)6=u}`oK@b3rC zOwpGKRjB)LQtfLT*n?d+NE@x7wrZ`(N8P-?O*#NoCfF~)UeAm255)7!{Uvz=WEkjP zU^rbr))W{aO+bVy=0^#|@1tU5To`l|JOW8r!rxv)xI1);rmQ@5G-JMKA61vdN&$Lk z6vSRp(cZ>rpx!jzf*f>>I@>*)(p^HWES*3auO-xc%G9V2Ny2tfVqu~^T+>9PB}Np3 zS6vw&MxWH`@GjI!VlhuDp%;9tv4YVAKvoU9tpuY5G?vTAPos65y{6gIPf4Gq;GjY+ z=|n|wAf`1w;Nv4(skopAVOr!r?pU}?(Ol0(_AAl_(i(b}?m%Qov}}+BK)xar7c?FV z^%`l(_uMG)|1^LMZz0#aXF|@~VIes^vziEtjQ4NHW1(d(a&9tDA>Nd)fsp88u+}W! z^VZsux?wJJBQM<%^b|^(rP9vxFF_X7*wM1P&$CK`rX`lJ)1>uoG;Hs{Al9;4BA$F@ zm~eKPJXXSZjq`@HiYUS|MQAgY;`cy`(QKf0TdYJ(;={yp(kjHf@5C{yj5*(-m2dlf zQn(hPqebvS?S2k&!_wyFH}j57kDJ4uA@3NCdw3QkNp>C(MuJLn309k6vS+O7kX*g zXrCmtgNpm$ufRH-gV_3W{AlJk3=_;&O%%Drv>-4%_2xXtFUNG(&un<;F4lK2j%D3k zNo44Za~>Z&1>`+@xKXf{8wbIfM#A3U7!b@ye~`|G33waN48kkEO*FhuzW3dKt09=E zb1uUD2CTBszr9`m{jB?s20tQcJ=_0pm*1eO=09D2+QR^DH4J~d$eLXI8MZJg^gtkK zjdeQ%Or-RPOoHLS!~*Q`0B*c#vboR{7U}tWk+r$|t>A*@hF)nKKTx_rmfUJDOCP>3 zKAY~G%PkX;{Wzw!=W#(D!$aXXya_f zJB;tQtKeDv$16K--kw>wv}Dh}x^*LWBAyk15j<0Izrm?R@HIQ0$mE+w@UCc^n`4mA zcart)iXBbJE^HChuKw+9<(p2rrhO{juIe2y%NIcqUPM!FEA*l)q?R|aH4Ot+7(8?EPAJ{Y&`$ zOc#27AGI7ZlrB$Gkby%LZrXq55$aMYs3uQa(XD9m8Pk%M80s~qc5GZ23~4dk{F?GL z9%DUFoaPFi)I`RQoixrWC-a8a#Wz?@S1YWirqzDI4SU{;954~K6+kt`iO)^-ZvCP3 zt2y$55Gq$^rZrRNu_#sClCxiOSlx3=HxV&?nVN$UynUt}08FM;m(jRN!A5zKBT+kF1`y&bzNw(Lf5bj$)SA<=dlJV|4jC4GLFSsw2I1zT#|L7 z|FM{`iEemFTzN|dS%6WtJ;cqiTj@2TaHz~(kaKP%3IBUs$;EI@fEUeqtNinaL=;Y~ z9WlEom)f;VsY>Ia>X@b=t`ffz@t~1Hz^#y=D4ddAYx#>)Ygs1XslTO-Xk0res<0v{ z`S5ylz9v3lev8(Sa9AT`&D^$?b}4jW>;4X4X40h8NuDg>=vDHIt z?f_(8st=O<`(0u%{khTq|DadJdrvI|d(>LSy0WM)06+&{^7T{DC)RX7%cZ8lu)*)qA7N>42?6#j>gh6SLZcrns9Ts*3)}xnhzqH81hG@6=zS#)G2w zlSmK+Gwqqnehw!{mqln8y9R1f(qCRqQ|wJ8hYGKZAe&O-##AMZc!tNi7*0mD<{sru zJeZ-46$YR6$uj3Jp0Zy$6fIs4W$ZUNYlx0ntAAtNj^37h6k+mkIct#kkT_a`%@%qa zC9b8JL?5JGWF`CNmxcDZ#p00zGV@s1%Ws9Yznf;4Yj+vESS2G>wn(!cUX;1J zDIVwI0qw?>am%h_=xWydcX4!-oHE-qJ{A0vXfSB}ANGa7DlImS^AtU&q zm22cAYp@4G%&gIHT@ZNrZHzI(NVR%w*>~I^PO!-Keu@x9-t-C)McV4&#DQVr<3itY zxk1+&ZCeQy?S*YF=T_|ot~R%XqTH4ZgmX6e;o}UVsW~DZr=XJYn7dkmN2tCKr20@*C?folIK!U#>i)YIhTyjmlbI zq$7ac4oY$_##R0u0(GF>Rl6gEbs*cw_i4U1naq;WHA7%F2r8uz0nBR<>NOno9vO=? zjE&z!oSifK#+hgLii*VllJpm%T^<2~Y+GFur4crD@`LVagHJiZd1D$(ypudxRM<-b z^PuNk=dp}RIJ*YTQTKAE-qJt?Kx{?tuM)`XJk6^ctB$-tF$G7Lf0SbLjFbKoMcX!E zW({r7Uen?sl2K}e&&=SxP2eCe0>T%8)5maxF|gG=tiq-6r1q+$ZC(r0_zy!iRSg|BFiYk)mRghiqKT`{9J zVdg?#+fVA&E+dxaB%^vWgQW9x2Q_yu2iS<^W}TmIV?h~(tZ(Kq+kKBn<n6y14B?x;0iEL^ zo2Pm%drTi!P_#8BXc-u=^Hyv{+D;S&GWPC;3#D|P!WFJE$ZFP_xpEF-=YQgkC#e|9|D4hG>YH{Woj-Q&ej641SmQ zRhXg8lRv8&ekVqNZ_LCZKMVCI_7qcO(G%$^k8#2XQ0~R`|55VVhG^#AI%UHKtv3d< zsz(NCWbpx3G1SEIm&Vtd(| zT{RpwdEz(;mL-lv_^Q-(rf7BbR6cJym&)#@7YH@`TbpvWSH)($aN4Oe(b)=GHktuV z-wJ@l0bb7x{=gCgJ;g;#qLIKD2982928jpnj_1!DHFWlnN+-PZ1<{{R3Jyn$^}RC_ z(^+b1>9>wXsCwOve?(|fI%swD^!IWHI5CJ;EQ=o@&`&au(=h6eX`>K@Kt@u+ zS>+Q4(GlpZZ|{O!VfZVz+!e23KX)QEB$#W}ff&~e(eBbGU=B?csdz>v77$$}W+KNS zqQD_Ihb|*-BJ?4nlP8MVoO@4a${f!PtseCq2)+cda+}ROQ%Wl~$Z;w$zyYZi+Y$h2&}R-|0sR=K#K37x*0AOR4Jh{T*V{^#(1P8s60>$=B`DlI z_Z4;FiaYY5(ookeg8pMWm4q0Eddq}dVEN`3y(xE2he*>{t74s8+}9cH`k0g8TI?Ve z8wNO9Fg2C2XuReQ9#mP!y%D_<(F(d!cER(HoJhh%r^tdqvagawvwjQP>GW*N_qa~U zSj6O(`ejEl8CuU9_6C}po>_)BSE{rdH1gV}+Se99U@`<3}0{OSnPqcepo;8rzn&YXX5u)+*{qh$HUaNNFi!o>gA zy@ugGiFg%F)qj-1us=xxYyE5$EhHrfiGalvO!;%f_;MQH%X0A^+*7bd6Gtc57)x&y z-$A?<8!HOi09`LT5!at+=R8OlHBuPb!AYZ8UN2Ky+w2~=-e2d%x<3x&&iGJ`2~UQ! z&;$`C_MOqfWTpszSJe{&4?Ax+MZRJJLue5EtYP1JkFmw)7DOXlqjy zVuwHKV8J7?YPAy+JTAgVRfXw&sf5dJn+u&F!Jc(tHb@TUA-PVg6cE8Dpk|PZV_mjQ zFJ1g;E5U_!1|ghnp1jIUV^rupIaTSvwU)Na$OWyBuZ4)LWY+*f3fc)P&6Gl`2tD%F z+fd#k^ni4*)Q)OE`NU$wcLx*0d6sR9iF{daRbt#Ewyd#-@%EYz5mSsMg3goSiA~@P z2|`KWR*sX=2Cpkylde6&+EjuY9-g_kBY#zweF4P!JoUVCP4A5S0-V&9GIn@o=JfOw zC}~41(FSM^xzDKBB62xEu>=FO|G*6~A}c=~Oh~1k@HY#&t0q=w--a2N;5KWUY8Pp= zON%_RFhBI@@86aR=;<3(yL20$*Ab*=yA4t&H}nX&vpdJ z`8KSLIyGE!Zx7j8Q9D3d!+&?of*Z~KJ<^G?zRQWGJUJpg#9em4ly`6y&T{)3K(WC9ZR^7m=nUS3XR`0v(`mWZlbqkZX8` zKM6VSb1Drg5XfEb9Ed*j3y~eSUh7Ck-cuX7h=f$kMvibkqbdqF*s@OEvcDE(H;qJ# zHE!Ja1ILD8B*5LZMI7Ow@6Er>wfOX95?>}+mvu9sqFl0xNWAj?QW$p=?t_S$K*-0J zBh4F z9T<;W(N|6lx`X0&Uozsjq8WNE{e84QNG)RwX!`00YOsoyi1U_^5f>y&E7WcC#kIr6 za>n&+h7R7Til+JguVF0~fo&qwX+pw_lGT5}mx-B)h;L}(=(I@1)yG%xpaAX4 zxU~5_bawIo=R3mQ$k5E-`(^W=ivi$6=!aXY{_7bw);1$S7@Ht=~iNiS^SWmU3J+>UWF-8UX`So5gs-1K}(4w zR+`6Rn7DF+lX|1evgn0PL|+;SDY6|C@k8Mv#QKPTXx?caV)E;-Wv4WP)vy&hJ#)bt z{@Z*LtFD^(impMKb?4t_oRHwpSwRJ@=K1@_>n&`amU3Ri_1X|YO{OXt;DoX?DRF*t znGy+GrGgb1yBDWcGlRDZcBM1h*%>P(|FB^V1U|$msZ@%REi&0I+5-H^8qEbk$>E?l zjh?+y9&6cLLCYv&VQ_ES?ce}8L>5Kw3R|_Xh+J5FRexZ2C|cn`%dJoabzWTDq%jZJ zH!roo?u6Wc8>UUwH7RvCq+Z>VPbvZlF-VP{L)SQz-B@y$AK*V(gKAh#;?UA-U0aK9 z+X}r$emejGdndU9H6JyL`j>GrpEysg8)_aqL&UasjF~cT;8MB#C^SVMq-7RrN;>`dys}$a&w-as) zMPRKZ1*gE0OjZJOh+11K(}XV8kj>G`VELJfzVG=}1!#g7sXC&7(#UmV@XTAKMB%MDIOQza~# zCzz$R#VelQ{F!g)lC<83&fG3$!I)b~U2jG^>zk}F2W&N?Zf(ZGYb4tNk;BJKE zpD2NT*Eu7CW-OB8Dw*NDS)?GD>1rR~RlhRGDVqX86nfiIV0M|#YF#j)@#$!u+0&Wp zI>r?M6<|(+o&0KOY$o`5zcDI=P{%#-zZ7i{IKA5Q&T^x}Bf zHC)hSP|&UYL%^^1V*ok%L!~dI-4@s2gWO_sa^HmK9jkk%CJ!+h&SpsSWIr!SQ zgsjP-rHeuF^b&IZZ*s$`L$9X0Zhwl;pk4&jbz(cHy1~CbGP^Y z5T8BW-w?>kx!h)U@3UbIbs*Y_d0JF?d+BwrwvM{4hBrGiS)H70mSvtn%Fz6|>#j;m z!v={$i}?!v+C?>-?NpY!Y#d@Oo`yGnENz%1dNI#&8PY8_w7#H^t9kxH%m)FqK`lJo z1f2DgCI#bZd1waVhV7dbEwE#}VGH%jfpRT2n-X!FweA3`cI{wnT&S3q%X26kmq#Vt zPQlo-wlwg6{X`fSl{7-^o#ai9p8(NLQ;qed4atDRmXg5&gEqU%_Uy7U{SGDl*b;c~IWKD}xk(I)Bm1!4iGt826@G&Dbm~Zi{zR zc_#pda!abWMbs1xSA@5h`mexQ!D)_reNHY=hjjX1H^)1zzGsZV8C)K$&S<_~E8^4c zXC5pcqK^isxm?2#g+o6JT}Tp3kR&RBBpgW+H)Y5=fX22`<@8UA@q_CEX3*R=nK}p$ zRycz9Yj-#F9W1dyZ?xR6$WPFj{-jjkyKhJ6A#wPd2N-WL1tNU?K5LD*LGH(G>YeWA z;i~?T^$@9c^LDG@&npM&orUyXOYnT0+_SCU+ubwsnFHYyx>J7Ax)9iXB+mp~7emg( zG1}H2yBL4iR~cNaCRu=DA~qQlrD2fI1W3XqeSsjoo}6~8E>%0otiRXk8}+zz*rN3F zd7|n}w*9;1DSDkW!odx;l|W|nFy>3BaWNT7ggv(~A;OPnp4UzeE; z#a0kV^&(*OB*TNa*`f4AVf0`Y7=p0-?fTo0TyxoTS^Okn{KmsUbZFpH1|q_NNpAHe zcP;}z5IYtIc=*uMrL8`gG(_Kj{_1W*dpBD@D`BmNx9EhXrB%bWynwa1Kwdg?C5G@s z*0FN`mi?Vln}}CmLPM58d>mSp_FItI+oyF`x$5Z10^9Upj^kC6iDan;zLP+`7?RiZ zz)BY-SThrr)gI|FMY_HR5H9-ll2=guRaz8JFUF{3Gp7p67om*CfZ98eVTg-%E?T%W zo_tV%t}Y-_qPnC>XV>XKwxLXMTylsp+UdNP85Tu)`ORH^+Ny_9E<&U4wBQ4AiRE0~ z9mtF&-zaB59isLJs4xnu#d^E+O9%E~kd^+Z%wwmr4b@8d317~sJ2yQ0b$z7XrkL(= zCf<7R!!<-Bu1yAx1FrfD6`hTr0$-9i)7J*s_aR_+AU``;%S%PfpX4#Y3s~k zCmiZpWY4R+(M;V;VTsvEN^jH6)&y#_)f@5cr{F-Tzr+W>N-1Zl0k2afX*(YVRj~>D zMLIa|sNS~N^Z&!yHwIa@AnSH_nO(MRTis>bwr$(CZQC}wY};M7@%FiMX6||C-I=)Y zB5FtMsDBleD_7>1A54$>yHc(Co=hR?tSR1FaL)Llepr2ZMe2{n?CqMm+Dp~R zwtlKLY=8V)?BqEJlWsErMGyx#Kl}%Gw!g@~r1i`U^&S583!*>844HCM(n$1Zp17Q6 z5o0IcM$3Gj!huBkTHvJh!9nTpRbxX|{F^T<>JuE)80LttP+fQWLIZ%55kJZHmVAA9 z5obg>JU!nx$IM?nKW&|0a{`N*6{exD=?3)q?kgEaE8)`Y&$(^!^r$6%Y}&Rmyc^he z@q;f~NF!ia8tyORosPcMADbBst+61t5!xLrB^zuzDe`{F?J|uRUuqzO{578LWLDo| zZK*w$qH83%jvN@#Y`-F3YEzf;zPu4%+D>4UjM!JRytO185UPEvi9~X%4Q}8Wx77qr z%L5Z3pL$lpXWL*I8!o|-+RZq`v6BFZ_$gDs8QKktXa-e#t*;TZ9EQD7=u-YLh&;^+ z*BTfP5^bb@D&i4oHg|UfP9dTC9OmWc!f*Ic9YMFE!#4u|mA!d`^0+1T=Ktf<9DnD4 zdR$3cKSX`Po1g0&w7s$dIyL=+$DNsOniMaoq2S0Tg~#bQo}R{I$_%zpSN6p&jvsF167gzZSCzbz>8I_=Rm0BL|5z-F$B>zn- ze&%T7L6^B)O8^JCFOxbcYt+Z&=zH=PwCs<+tc|InxCT(?{Quu|{wFMxDff@Wdw`t< za=2i^jqLo@^_R33lzduo@PO!m0s{D1u+5@1QFI1Qey3ug4@6p?)Tiz5SHkF*RKO51 zU#u87jVC*g4%bs(U#F(Dzo@w|M=)S~CHW=+Uq(4f)+}a1)f7Fb3~#FYGSfAd@Ozk3 z9GlOu|A8oXQ%UFocD8C9RzR7Naj_|M8atNUy9zF-3(>aI<|! z{N+{71ef_YF?8z1cck($X*Uba12$h{D+vC95d=4S@j|AHuM1OivLoQ0bDSEAx+aR3VG^70k6)1E`JvT;y zc;|>9@4xvnSZbdJvjNKB8SwcJNZdbs8U6*C%1DX>EXO@fm#j3Glun!R2wY^oYq}%- zpb_LP6|A|-veHj)OaEDi{3eUTMUM0K^@Gfo<(wCoIp){?ggayZ>yw8&*mRH4m+#_V zlWKSM7ltwTe+y8gX3`@)KD0w?$v=YdHxehBM9*c>VQ-3qmo_?#$J4Mfd`k1uVv3D@ z3A&Oa*G+?HR)VXW3vO$YWZdII*S7i;B1mT(QK8Uk2ZFwy#F>Q|D%>ZHaMR zYlSH1+5Mj3#I9_cSE=A{9t-36V*px=XOZ6`XSC*hiYTb^2YR=2i>QlJvE-;sZ8Qs_ zX*%UbY-taEn1O*8q=PB8T~9GpUh=_6FVu29WiojZmP>$Y*iL}Ym)nuZ@*EE2rO?c! z4rQb)FB9o*)6UYS5RhRtfr;EKeV;OeGWDvrzX^?NBSb0_09bV~;N&a_gFBF?u!5??^ZSMzD+E+D$`27r&tuUXUuUq=yFvZg`?Re+6Hslk z`(F=SgZS(np=XV#^F#?Qx>$yVN=LEoPN4g-WJ&_Nye{+l+FfVfi6bzxuhI+{qqR@ z5}UE4N~)uEq*Rd71=h&tGAe=cQ;`JlWOj@98z$lS=1vC9>I|MEF(bba3YlY^J+Hg$ zZc$QgV_S8qMx_qjNsLGbG{<3uXuW;ZbeairA{^#9bH_I5Bau4Yi&h-EwZ?Y7G&L3ene+6@B2Eazawy8 zSvo48Xt^KhR{QVku7V7eHa_s4jS(leSl*W zOiV%(T_xez^|uD^{K)ci1&wN=Z&At1hc1EGQKsWDlpIbe_$w-S=lb@6(DK*~Xl?w+ z3{+{B8*_Qi3L43!7KY1FgnV|l2+yvcKd4q$i4ZOCHpS}b4XZ`7bq6gre>t>Em}!^! z8)j!gb`Q{59j0j_Sx42WM>^x7JEfzx?KGaqx+|`lNGU`2TbleTsDt@Q=o(^`NAvPs zH^t~ut^u|(4BFt3wub=_=Ptn2;S}CXXYF&T473g%KnfI?#We@zMqPiQKS&_ zFym2y9qc(q=p_t>_9>G~1->e61V7qPNe=NlITo1xK)Oi*Rf%4W5Gc-`%Kjhh$f)0fpTPDD3|*LjBXs z)}H8}-=vNH8JhBsQqNRSmj*b%d^9y%nzt&_P$*L5S%udS?1E4L)03cm8(I{?Ek0KX zwlGfbM7viu&5QY?%zu=8=XoZLFm4i0OcLqi8Be`EPrc1t8(-SW?)swAqlQsTm&}K8 z%Q4QBmmnob_uZhBHNl5y;mSM*=+oVK?xhj^w^VZ^Q15CSYeLEej{c5euJmb;%!n4=mf! zX;!)gUP_n~#AD+pv+7Tl`MVHA0}2WTgiwwgQ3N6ox0!xfq!`=Pb!EF!n;;_pg`;M(wlu-Zt_d`q@8dboX<$g25TkavW6_ z(yI>XG^fFZY+zM0NIaRQhmRA#G#)_zs&6QVN5M~}x!|Xq^b*+THkIW7xyiTa#t*s_ z*#RRF#k^D@3PO&qxQt)FI+H4o5`B-ZfivWpE|l3jW-m9Zz3loi#rM zzI*^6VQl{xR&Q`w3+$-!fSH`>vUMIpft7t8!WR$RS__Zw5Q4Q}-021HIC7m9-5>OA!}LrjDguPg_=Pfcd>;cYUdc3dHm3ieydN9@^Y-~M z>f)>!$VAruYrNC>g8OKEeBvxRd#ek`B}@szyhU9AhEs68-xKOP6_>#Xt~l`o1b@>E z7X3bl8v)wlt6V7Wab%$P&@fGK37JP%KxJJ-AagT0(>NmcSSxVa-s9;QbT{74M1zW_If;TSYe%sHCsg`p) z=Ekk4sX+Zz(t);j8U-OYJt82{BQ`}bOsfK=hQ>;e5si$WAnfn~47jGs{Mav1F4Xy) z%Nkt!@!;b!;=pcZO#*pc21g!RI^9S?@!NaIhSoeOQ4cg^1int_t|}-Gqij97fx@wt z3}?m1(EURT=5;m$(;AVL&hb%)pKJ$Na($OAT;K$UeAaYaoY)R+(3MCq;!nqSl}Lk~ z-Pq*g8-_~{(nJvFl{Cdi@%c-Lo~j0U;h>^&2JwalOHo~Zo+PCH1QX9Lwz$M;W8F|T zkz6tl99D3uz?-3rKQEvdvPbGb&KN6(TO(8K5fh2*84p_;BM99S_XfS$>RPa?t#)8n z5L^}O)|gJ1D3F$F#7RqLtMyP}6#hPpjp&8Bxd9p{7{Flee=`yMxoH+Ed;(kt;XazU z+s|D^WGQmUzA3KBu~9rB>gj=#5P?XTiM-jnTdWc;adxyLcu-0pAxL_B(e4-6>SJ@~ z?hU#B>Hd4;>};Hs@pa#QganNQAVJ!aCq&6%@ZL#(hAd_caO8f{T^!piS)Mn+1U4P(8Eu2Q= z#I0d+U@#^jS7S2(sMoC1H(n2g=k8> zm@uXf1QIcePO{3lFI~23aUl{8Tc04JDIz$!h)HlJP?4E#6BG)J%keW>$o!dB-ad#$ zGEPwmiyB>BD!YigCf+=(A zE@V|JBKcXqT_{^@ObNq4q0&$UyodvR_u13$kA_;); z-R&t36{!StcjLlH6;&uu@=F3M`$`89XqI{+3BJ=pGONhNWE-+;gzl18T=1hQ7o5y7 zKV9=2KZR=0n%PJUO6QvlGE#UI?H<*=RxsUXgq2fx!3&ZGglP-SP_JnV&OpHzo*x|? zEkQQO7g5@2jnW$hj_nix0#wHtZd_xPZLShV*aL~h$CHp4%3Y-pPPaPk;JDzXx3(|=+ zlwsX#)!^HB*N@74gkDQ$srW|TowNOAxJvm()9#SgVK75b>=*eCHCsIsT$ctMNbdGX zr`Rt>J*k$y$6I_)w6daxKzF^xGwGsg}4t^E<5&(a(T#g)-8T8)FaukYiYUHKVX5WzTQ>BLqdh)WW)0 zAN2vc#aLVm_95~4Zcg3mab1)2er;U1Vj{!qZtT_g3TEkCmhRyP9>0E4jj2Scf{bBZ zKB!D{NwjbJZRW_=Y(U>n6Mmf02mX)!B?xaH!c|oQGelwgza`EHOK+RBH zj5N6YYfa5TN=qh&5aFk@4 z8@b4ixA>nF--Pf0>hG-IwF*j zmJvaL=*r!rE|xSp9fs~_f6w@rB~ObVJ9LvECEX#<)j13|DLIlRQ?|T}`qen9SFAI~ zFTo_gF!h9`%GgTwUtX65312zFkkXaxe1FOhTVm><$$t%c>mZMHd?xxPz0RMx8NnWH zB36WmA?Fg_=p;U5;(~cecKqaLpGHZi_igah|N>GykPDNZ$7+`8YXF?^b#GU5MF-bLA)Op7BYyJmLd51r( zLf8w1U?~XYVjp&^Mhs{$kKx4~(xB8$f+f zx>igR#|#gccZhDEZI^zb1f{Eu?AC;2*X}&`@bs@fR8mb_F(3S*edzI4qYbdX8t0qv z%B)~Y@a|8>JxUP_eg`+KIC_h+xwDQc>~wfTDJu)M&QpW%j*w|;gWr*0L7J){yg{E= zFnQu=o5d`d!08M;F8-Y^W5s8_?CpRJ#*$-XeZ7Nv`3dKE-Sl0yTPPY{@0>Ssi=^iJ z!V}3mm*4wa+MTKGkPuk*N2W^dp<&myrrF`IQNmfn2wmi@A!Lai(~SKxeS?iLZ?Jrq zgvB_Mydm<35S+afoi$$59*(}mIBVoC!B!zrI_C^-o2n7-NRfiT;5~1_cTDig+Ddg{ zewKUow%4VZL?x)L>J*(R=*ZXY$dCUX>bzGmeM3_TetG37_NP*JIUtSly`PqWgH#QXp;N}R=`=9Zs0y$arct*eMW_m@!<8zw|eV$e>W6KOol$D&$F&349%`^I{VC_ z`4@bvN0_FtOVVBOy#ULEx+B%u*jdC#6Yb&Hwd1ERV*C2XDr$ZMXDd`T@ynsm8abS-gQH=F0($)$9w*3gc)7VWsbG!&2eg ze}N$zrNM5)f1=$}2o@tI#>;mwiaYH$00BoT_4YM{wLaYv3$wMX(Dn6jBK@)Jc{BZb z>eK6!&NL}u9)kXmc2Q=nc2BNnx*6`UPwg0*~; zbX%U7m}hH4pg6R8%c19jRW(f4r1+mWwE7LP)mucdlk#<^3GGvG%J{4G%iUxtr{2G} zNNUe>H|q{-<}5V}zW2k>CNvtSoI4Yl8MG1hS<+>UIXd$?>kkN1=p<#m(H9&~;41q+ z6*Sw#X$>G1nece(czv7NMaP&gH2c5;75Nb=UoaJS08q)K&|mtdK3~ST`P?;+q(Hr% z^sqK$44KC5jl_6}+`tQ6K?S}e8;>wx2KL;tmE#br6hz zu9VR0`M|6u=3NH3Cd+IL{`}wpm6zE)1zyPsyG`d~M1CeUA*u1PZ{XRgO%h+6BsEYi zkd+=x?T#o_9sdMAXBmG3GFc+>1Ho`dYl{>O4K+e%o@3C)kMD}_vJa`=D%J4*Ih>vF zyE=e2vjG(%cc4B+M{__NTZOPXJTzJ0odG6N4Ly0@8}I%HAii9}DlSM?{wo#>a^21p z4p5lMi@NVL;TGGyM=)_Q!Q4V9VK`geHBjB|>T~~1a-mr+k^SndA0FKai<-=?s z^2n+Lp$rD>rCcB4drxfIX;yI_j4D0YmA@l&7041SLV!h65rEMB2W;YB&@=r%k^jPk z2`fMr`S53Yi!DM13w0s2WUgd7Uz``)j=I<&F%mhMpa^eg-;gS?&}7@P)B@N}PblfO zpTf`G9-u3k5LHr@61Y}`q>ikW_vass?fRcj&*z*z95_ZXeMTr8O$;MB1?%TjRy$2m zbx{=j6llv{rA7M5U!jG>#desnFJAkMm(A2Krq9}~w%|!p`IXZ&FQDq}cb9qbI^;Te zF~FJ{{D+~dN0YbrVuW5{ejF6_8*W*^wk*M03-hVv$+8J z1{n@^_uJ8GtI)1wVNf2pO zG^HPZ(oc@H6d2DvqaPQ(fLdw>T1$jpiQ>GWx}H~R-1i#ZQr0zvf-O9Nqj(i2Kx^R! za$jbR3DU&_oBIjl2;^K-u~+5m-XdM>8frOx?URcG76lWwK_E>m3G$|2g@ze}ZzyU9K3N-Xn|?Cr^lPr2rnAs` zl*U0dS2a1^_{!mg0GJnu<2!eq=MFQ}KbTE);#;3ss#7CN$EFI-JpPK#k6i@Up>M!9 zOhqBzHg&UxBCjNYpjsdU77420iz|q!g3BpecxF8Ly41#$r+O!23xbuN{8FP)8@7U1 z#r0WcC-sp7Z9J*vJOm>08UU6>d85HU6dFVX`y*wDL(}oQrI<@rpu<}D7AYzX_!uNP z_QZujIMp8hCg{gGSE*tK6eBMHDEkjL*1rH{M4|?URt}~PezU*DcOfBC+>A3J1)<4$&{lbg`%m33wXdH{VvZ*V%X_-oJTe7Qw4mk&LQ zaoMpjK>OAOF2rXiXXm7AZm#VJB6z(^Nh%nukKKzihW`TMAS`ohBN$rT_lo#&weNd@ zQuT>6+OmC6V44!|h~o0$=FbAU7y2LvMGABrdZO?`7JtP#&EA^j7%?WW_oyprm*M;o zJO1{71K{FIHj}{OIHQJkH!jJM8fA-&YkX&}D!0k-$yA&E{uPnmFp@(sE+m4Xu#$@l zQ!X~6H5|dpW%98`WKVw1+F?K4`O}OGRnmmVlr(8K8J6O>2m5`c7bd)8nmEQd!;)iH zO$F7)oP}UGNVjHzwveR@XN*k!WIm$D43}TrnN8`e*)Wc# za4K){kUSxOrC1oSJVw3Van0$B;Q2Z-;&;ZL*3|y272hYV0l#%Jfe+KbpTZv-DSDvo z;SnOHytBr02vs58!a>%d?o(|MJC?mAtP`D!_xQ0uo&N62M;i1`=wT6Xs){??+D;s18r(E6HIIP&$CAnjP~-CwNVYQl}?|;yh$#A?%TJ z1+#bxRlq}N%A|`3&dX^jxNLbQ@IZ58aGSuqdsOrBw@6`Vg0xdgKn+6vFK=;7f8OHa z*ZydSL7$Sd7AGxC3G)0!K!-rQj=HG6&5&E~wB^J#v%78qLLmXRQ%tb5VL8EPqVHa&b## zw3_S&LhI1E%Z25fuIZAE$e(kXnYD_wcGZkzP?$!Z$*A}*b)gCpl$<-FLE@-76?}_& zg-$-Amu~AEn7}(V&5`;X;c24YN~&7OT<-nZkqYrUM2gT6s=K1N8Hq$TsB*p#-KAg` zzW?O%q1Wc=M{o#G{m5;lefxMugTovNFPIq$+iq#`fyzto+Csg^py%%=iULF)#2JA| zb|*;{lT?)e-8}Gb3i5$vjgBWkh|0G9R>aKNxeiWg{WGyP$8IO3dIAn?J6*&Olj9HC z;v+S&48gfiqnz-2UUDGJZcpAh4oy{Kdxm8RcQv1y=lE(0H5n(RUz8|JQ%maV?@)E) zoI@+P4UT~#4p+fy4#^oVO%r;F&2Fa$RfZT=II`TNjJLYG#hx z#k?Muw2;l_2T`nuQN-uOog&}Hh^#t_NMU|dsEKFo`WyR#vgHVV9&jAs0Zj9>|9+DH zf8=)b|ERk}fXOca@%2n!KZtW#WlUok3R}n`k-aPNf=8-tAP1fUjzB8NexMPzGqk64 zPe1u_Qx8c%@cv(Sco@jA>Av&v4%Nen&2&J=TZ8bSUa!_eHb-_bQ6OtG(w*yfgj(cY zzpClIBEsqvmt@#DvhEj{=nIuYB)4FbS4F$k2w1bVVv?4a0-uPS-5IeVM1u_G4!Wrq zC{i`cVnkZY1Ohb{j{I#`m~Es-mp#bWeOOx{QCW>Z^SwoiT8ji~m%HEXGX(cm4*C z&dDB)8qex69nuU4L5Xv zu3=JS3>#e!PC&Bc=Y zLOe0iIXS{mU%5y%Y!<{iM*umXum}@gt6Ff$cZI~O(=wY*U z%6`kp==1HUdF!ji4x6v12i7nz04u#LJ4u~Kt3CfC_&WJ?h{uO?XF9O?&3kz zuL=xj4f*Bo;%gWUU>HT=eNNm)?#xDwu1LN4_(LZ&&D=1ov#FZ=O!q->FyW_6mXPYz zjLE0&)X_C5i3@b9NWvQZ&zf_G2Tt{qnH1&fM4}4gK@%NK{I?!eZtjl|?xPOjD=?nb z9|4$JEI-ollq-#H2N(cG9P47)gJ{EpQ0;v=z;t3ju8X!)JHzWcO}z(xj4c>6_v)To zCn`cCq%eW___20pC33@2CP`~a2S8IRy?5L5jR*cs=c$rfjGFOGuj9Is7q-PZYkm3% zlM6K^SkF?%nz@_2#7QcX4U)9dQN@hR6e-SnaTBv>q3!Heco1_N&MjLk19l>xFjBW5 zWi}#a`M)DZcLHoeh#Jc9mE1_4d%Gvhr<&XFX`c(y&Lk_>B6G! zTLen2z?-VA%?H!hoRVOUWmy<9=(9eo0au)$yx^xi}f$ys|0SBWm6*aJc+L}%vmPBk63C?# z*#?y{_}-=vV-u$y-V(WnGTo%UfvifOU>f;;=!>-lhmRg2sA>#B`3`ytB(U6LA!b+c z@b4>2h>eLv8^S2>LwaMo)|8~U5i6VC%~Zp`IPyi4-F1HP^t%5}l!gC7I7yxb7dOmJ zbnD{kBOvA`nq(3&cZ8Xw*fFomlpFzKGKwdLRhtdQ7J(B*rqw&a1556jXjhCM8G)f( zD}<44pSj6ev*Nk5@M_Lr1_L$=zIl zmzF)?&hx)?_m;N%M|Y}J{AD#KgTy`MBm^xfFXqdDL{`a|KqsvWt50s33l2eq5@oK2 zx>SXgyd%F2wp{ZC0s|P~B#l;&e`iw}Q39L*3TfqX|KMreKKRH(_4Nt82Y=ikch>}E z*oG?*5&dqPXiKWlh9jJ)%rs-?o@#5d(3U3>3Yyj^)PXz@qdHl2PYhDowUZ>qWgj?F zM#rV^29?sj>&MY5vR`K42<6ndg`h<)_XN1?!Ux4LT|f4vN}ZU74>X-r_a=)zjHL@ zXzS!~XNr$SagJqtm6%o;%zyUH-9sUHW)Tb;<5$S{i!xm|dQtLy*NlXV4|YT&1HXF@ zn;l}klIDV{(l5V#2EVHZ<1B*y>qwX0m z+VSj3yG+S)&pBjnQaZSDXVv0OlxS$NMXy|hi4iRiHA$?R2ZY^w#HJG@rUL*)bhk0uC|8&M!rVk3FWmU|Dtst_2ip+&lY8kb)TD+zNt48GP71aYHF}Y zOI-CkVv@@si5jnaf?eH)bko*D>;>*e6)~;ODXm_cch@_)UPYFTn;b(6pRbn5Oj)3O zmjh0sk>y>5c^oEkSC8wgyCZOpm69fo9wNT{<47J-DShasy8-omJ<(w(gsn5FdhFW(0anGs1t+(Io(fnOL4D8~6J9 zEf3DyiL>f0?QS5IUVnUO-Kb<&Akdo*Dm1d3lmR_RaZm&msXnpYDj!#}jf^FS4Qxjw zh=}CJ{oDqP-wTyuNNif3nt1Tc8Fa$isdbg#E7}$vl~oOJOs2|4WmKmc_DX$nzhh5@ z;y@_ec-Fi}eU9quD&uL*G84zpAR3js$|&|mRkVfOE;czh8*X29?M2vce#@cAb`wyu zGeo1f8Q1b~wF;yN#g^?Y6=}9cRT+OQXwck{cWUUG-lJePkdd`cAFW3Y9QH)dn5jo3 z(qZCnEcK_B)6`-1mMZmhl*(+fAX|6#INa^KdFPJ|vjS~ebx_IMX>w1M$J1oxT3f&` zywVVa(PX5LOedky9T=dKKs2pLX^FxVU1zKfWA=TX+t+r}oqKeID_w1>{)W!Jy2e(Q zI2F{B-~dEyep#1WZE+NtZ?+=aY4`c16Fi}^Gp!#v zcD-mr=HVkLYPB-sl#yWLYYJQSQTxbjJo7Qcu#m8-mCr{3x9jd*A-z~Um(U_8s9IJn z-!)oZjYEWru55Qju^x@eA-Tn|3?2ZOL5x=1|u z4>x}3^$vIHD7_k?J6Ug#s2Winf?qNcg_I@E2csW48@SvbW zhlS$IIwUhiqR;w@)~B4uRKb^SFWWz@LP#~WjI)&WGyAAh&s*-RxnZ>MH(#@N<}7MH z{cQsp?h0u8gMa=5Fyu1-`vLbaWC3MEU2{1@BSX9Yc5=*=Uz1w<3CA4|EWsz%f{Jmm z6d-^W79fLo0210IAovq}3bQ@{WEgfx$gi7^5AQw~cRIQ(MUu=6^JmLVe@1F%CcAyd z?d{Sd?w7?{q+!wm#N$2zznKDGa-ca-Bk&Eu1F~*`r!?~HP)gm^zS8veMn==;z`6sL z@wU@NOH&4mmMB%kprq;)6*Jg5~4{HAjpalWz&tY>PI`2yvc z)PUYPbBJ~duEO_Xo$()v$pQDycN}rMZ>`$C(|e8B+Q}Dq(#LJn8Q|IdQ@m*J>1U3& ztUD7m65)wrxdX`g77*7!ip~MJE*fT({kflrspVe3Gg|M2Lk8)!x8aMh=OnROe2sr$ z7Yb*4SPm#|EcRF+yr+ow^>`pasSu^$Hxd+VrTD}^^=8$eD5>?$|A2Jr2#-vD*q`8h zaYj#~4zyq1SC09mq+cI$&2aN@?REoMqr)A7H>rgv`{4sP$9=%w`G|br%&12R#7=(qYVu9m;TD+^@uS&mz1Yh1q$GSp#Bz?lLj5CqI7h z9C2T+cz?X#(tcqi`;FF<5fyz^i*e|&$b74|s9fZX2cw+*Px zq5_Rxrvtl2jf9UhRRB(Deqkp~2Wf5-Lj z5PyMvoLBsPAtZ9lEWG1O>Xa_N?N$a7bv*}2+&qOlmC^8BiWpi|Q`*s;s@gCW!Z(;` zWQ#n;=AL3Xt_1BmPpV_q1}&%RzVAs!{tf!Ab+JKBQQEN?At~YawADBZgkBvl`z2eQ z0mrRZsajF>5G0nx{WT<62VYKb$Z5IOLbJi7Qe$~AtBsl}V#IyGn zx|OOaqI9?P*=MzWR?x0NXV9+T(p;0CZ|&0ylg6e$0Rlcf&SVP);UJ|j03MrSxQ1s8 z{1UDFZ4DmkG0VVOj#RTmlyL7a)4uA|McRn@#lzBE4U^sdOE zN|tAozFaE|u}x^r7>^yXj95B$r?HXCd9I3?vwt;d@%xxojfNwZuQ@5mj2ObS*@ooy z&}aJxwe`RO?4v}^m^q7fbcsD9YcVr<)_^ml!Z}ivuQ=#NGRgYQiBbxryOHQ}h zS2%B*nLyd7>ln5uRyK^-FOz%Uj(9W%(nA7Ar`XFWxzoIStNMV4m!TXksXGNc^zCq0 zx8~1!&5w`Jpw3}uxo!Mk(+f8BWSaSLl}DtfABZ)KfEz?c)pM8dH3reniCQsBZ#S!M zt70Fe(451rzZthk-~N#8C4!OCO`}4#h^kT~coDy|Dj4K>d1wh|E=V^QQ6^>3&xju; zyR?hSn3#TWcj-2IMLz-$0XmK*nU6ViIs7uTIs5hH(S+Cdh98*lhOO_)SDWoaY?9H= ztDnxR+Mj;hq#Ch=Y=;b`F|7xTnJ%wHC|b}lKCQWL;T$dkSlO8@*)u}bL!?i}1yqww z90k{aWAo2M(o99mKe8#k ztXO{WsX)$tOIjR7vWSP#&Fz}$$w_ER5|gK5YP<)r?qjB+X>VDXKXLX3_Ws#T7q#$h zb&`#3Z!7}WVQ9+h!I&+pz1>O_d~W{T=A!c`%YMo=%l=|x>%;X4$j3GWNkKy@7tFfA z2E?ACsww_ZlKfCnBc3x5X}5)D&@Zf6?l`6iyJaRwke#M+rw9v>>sIQLp3Co{!FXvW zzHHb_$EEGG7#X&wK&3nFuu&U{Pz|{^t6we}^dMNTXJ3677ryB?reI}iYNy80w#&Z* zTI+VW^rUH}vR;L@ByOH}7VFCw1U+m$Z!x8TDp+rpL`AQ^7B$R0S6dEE>e1{D8l51N zYowZSHd5bCp%JexxT9nW&~FKXIwj`XCwXvNxeHn?2z=Waj>%xKoJ%)i%eDe}=}ll1 z40@`l=ksYhlvGDDJ0;$s`Q<<)P%QDwMl5tOm*Ju^Er7rC;3g7ghrz_YiF#c%T)Etj zMMzD=fX#tq!1JD-XXA->@<~2}5qZ(L0vV;xEG}kSdTGhbx7`B}hF(dTCI^qxU+Yk$ zI)V5*Li?Vmk)U~`jddg7h?B=YBT6=77Q_FV>B<4ZDi7HLj8J^3Nl{A^rmUiX(Z1j+ zLvV`uT#T^nCuiv{OZZE5?mj$_SsR`=vu_BA63(w(bF))~7dZIyWD_}05Afs591xH(mvlrgHnMmgrQmEjPwXSwKC-$p8?Z8zIL?GmBNP6@$X!VK*Mg; zuwYEumb|lNN+TE1hMO`nZv`8!=PX&`^bJ3wM^a?&orKF360P8Ml9jn&4VIIu0-{9{ zCp+np{HU#8ps!aPSXR>A%!yv=(89UXA`8W?xSbR9cXMeNzDB)nUr0?PW=3eRAYkQnodt#Fjbj+FhV!w5l`(oGn8NckLQ|1A!ruUo{}5Jv;? z{xwcpIF;D*;L(dkO$W{>zH)A4gg4=u!!4x)z913*;aDP+F?*r=CqY-@JNyZW-3oWf z5}8?E3?_c7f0N|hfdNK?#6^xLqS>4HKq9pv<>)C=BGgl;-ls&pwheH%+;1<^4sV@r z-Y?H5Natj#-2(M!=g==_qE$EW`K}!jTy-JCJs*i99}6Q|1PO1YRDLYJw?xDZl>2z4 z(?qZv(wvP8KXBYJ`hJbT;B`AZLJ-CDEdA@YeeL6KDlyFN*_c04=&u2Q3&p?hS^Ortc9Oad z`X+{UL~MT^2@kur&?Iq}8aMrC0<)hcOd z?vp9?1uM`xF~uWZ4RmQq={X=W^AFmo2i9TG-!Orua?6Jra+gK6-7Er~xgbwju? z5YL$P(1?_qeFh;HV%r_QB<3#dQftaS8;)5pV8Leb#T-5Pv#=^i8LNIzt?6_P@{Lsb zSjqnd6O3Pm77o1xsfks>Fe?eiAN@O~H|COtOHa;XeH&&F9}p!=;~Z;oAz>Cpy#tw9 zYLxc4Monuu+{P}+Q&T`7mOuQv0_SyWu)%X|7iqD6y0-~h|u30p=zu|SBOt@ zh{|eYIg}Tjm7Yi+%@w^_;10`*(crTRTF|kDSe|k-H^NbV0s8e5dx-AEyII5$Pt7vL zEw}ycXwlR*c1YsMu9Oz59B`xG1~ARsgPWYjbzoyhiUg3<0eP8gEk9 z9^BLnMN>>?q6bnC7U-9y)hKMHDS->_Wun25lCI1_WgTh!!6f)_9;oY05EoCL>hJ9$ zS=;ABIML3T1rWBsXCd>xvA6gw-@;wwhp(+c+}WDmoFU#CoRiuFoB@rvZ&PMXTZqai zPu~K|*`i-3hXh||e>1D+;R*Lgvs-|Doi_cR2K7^XOe91+v2U67tHtE-p@+p+LY#*Z zPEgyB7nD%C-{s#5YkGs@riHoTL~#TTQNFYKz4CFM4_??8|T9w?7>{@ zv3e>a(LOOE!Lg}1Nkm>oE-K&0h5K9;(d zU!?7^5HCwo@jckxe+xqdpDmDO1WX(?0LC8AzkhoF%5C`9cLxRQf0+vWu}_Jq`|ux{larrNqb zle1kF=05wD8Z<>;yxWzaU6QhtGlqu!U9A@HpkIkf?71+E7+ElgaW^>aIYYgV1|n$Z zIZmE_G)lfHfOjoSAJe>pBBK3OOCH)%u-*bNc*u!d0OQY%jma|t;$~XZQE>R(yyAZx z1r46pUE5g7CveqK><`-LmI8e21S?V$?I#eLE!M7Ej5(YV@%Mt?O|C>tsphG|<8cLx z%KDgF8wu7aRB((>BZ_b@fFkJ<_#+ zlVJna^GXaDX#&dnI0D}KvC1-ON>cyb3QLA{HcwAiRn1e-YAaw(#ky8@ITxuJd&&0k z>BI@_9uyPufUr!i2-m}!6EYJRBrxA1eWZ6laxx^T1|WU$|-P8T?lRqFesPkeXY?Znd6+>jnq#2 z7Os)D7>I@keD_sLJ%wm(rG|-0-hB6#^Ff*QC#{JjcdllxiHEgV``PEkG4t-;{q}yf z2kyw#+gdnzo4#(N)3An`@hrXz=Rj)gyYED^ch0PkN-|9QkQ@)fKXCLP)61N)Wt&}n zFMc-h*2uk#3_@|p3+Lf5W#@8;%*r2Y06F@ddKlu=YY%!ED-qKfZ9w~C8~Xs%b?!N$ z?gHMQZ~(OWF2NCK;QWEC(p3|j)GVV#kc8_R`h;sBV-vc_q~~Bs3a^iStV8ZlTi+t_ z;){o-iu9J=$q7v2{IwvKqk3lK)MGy})F-+ZZ)I`Uo8aZ`9@5hbs6bj&Ox*oLdH}Lv zz&Um~6mHb6x6MO=+gCrJ3>y~#&rK3e%MaFI4Bwu^*i~ zHMKy&FxVUxWLy#u?o5%GT^YPt1wuR&D|W~4e*upFKwQB4D+{Uspc@Tfp!lDuR*nv) z7PR`-R{D;10G!Q%mS5MxLRZh?pGJ6za+ZG(54>2C_tO|3B-OXdQ34wTlXqD$2@sG1 zWCnwN{;--nXfw2KK08N#SAG$dxdMC2A6TgjTBMleTuya0I!rw}e0Ytf-TGp&=M{uv zRnU@}>&r>LD7S8C@|Y;=)f02aLIORJ>q&}^A~ZU((Uu{`iXtyLax-$sCmkS<{{h1C z?pub26KSV@)3?eeE@fp3Q{6ecpWfjlg)tS(cRHfBf>N|y zT^!8t$cafh-Axvf>-c|Id&eM2)U9i<%SM-N+qP}n%CcQuw(Tz4=yFw;ZQHiHICbXU z^SyWOd=qgdW`1NwMn?Y1+_|6iti9ISG|srH*#I*QUh0Rw8N1dIcbwv@vR+6ef#HUa z=M#?z!C2@|;(U2h5F>3rZR{E;PQ_%R=V<%9nxd}Lh7 zsnVs>FaPP_+gv)7R}#slw0aGO_GXX?1iPU=D8W9TUv7eGami?{`y<5gW@><;^6kP- z_Slj2#5TA@ke;&mj}wYRJqdW##FRm7@_yqlMh|Uo; z)~iUIcOe0%==C*&h*>jX7Q$BiSeO5wsli`A zJ_U>e&0nI=(XaD}|9^WH{r8XmzvL$-)~3p)j;@x*rX>GM3Yz`z90Fl#z!GVrXk0nP zba_!S-GML(DOresP`#B={L_i6b*i;_#s=jv{cSqv%=6Ey4~o5P8#u;YY4(+LC%elm zC-cM2KYz~F+`hS-o5cOjhr^b}lrdZp`%aoUO$-w|@zyVfNsUH@R*sg#By(zun0kt) zhS{@?BSo3t88=iHhUvLt|%f*TZ6#2-dP*z{VDdKUKjQi~f=93}^% zpL7amvGdgQ!l?kaN`c%*F6) z%fvs_OKbi~eS7P8%7MSFDvA%|Ka`CCB5a#Q(}H%qffvd~vAu*ym&+wVgpq%*}r z_^S|EmoejiZkyDtp$$&-FVJEKR8f+(i}B0&uIyzqus`!|Ke+U9@B2R>^zU7Mnt(*k z|6+UCqOG-FL;-KQ1AXV*AK@0ZNVMLoqh6RYNTyHYkT)cK)H;1b>_nA&m!#W~e;N?LiUzW(Nr6Sp7c?MQO-4K2DtM2Gm3>yJ)? zb{}vj*O*GZm}iWU`AK|hq}RyHE=4%XC3zVgB1~LySZEqq68RQNh`t%eJNW;#M8ge5 zQHQ^VT5ewsLbLx@C93>&^D%L;HZ}RXPK8~Zob7D>e%p~m$<*mzANi}B{oU361*^Us zhw8}UIG=DqG$E=K0je`tHkE{sK#dC#>|sW~A!&hBJmV+KAR{w3TF~hh^%||#Qgd>; zn)H9t`%F7Qr+CWwSmD1YzI<(d&7B|Moefq zG%08Xu{<7$+t>&Ly-$@x(tXl(qte`lB<~z^F`YhzSuS%6sY!|kDIN7F>yDPS zK83NP)>E$H0YrL(mYCup)j0*-vE2}4`La2ly;B~inIRbmfSNK`oe8=?h_U3t_&`H( z`U2#~ zli0>q^c+#C`j%5I@h04H+OXNChj83ATN}&5decNh6>eiXaLXO08 zv|=MqwkD`fvxM$i%q&MVeYrCeCU4O3TL$^6qw9+fQn^9tgt?34tbquvtt`L9U|KgN zTJw+hB8tMBx-k)}%`NbDTm|Enk&l9xw>tT$ET>+qkYUgwT&v zbDk1p0)zn-!?BPR1-*}}yCI;dYGt!G%Vw*JK@#L*9hqY)xY^C)oLiMY%Q2|P0l+ii zi%`8|lrSJ6eY9f}+#t$C78&uRc+P5>J6uy#@O9h@jXo2*7h3oQMk8#zM>9M3uw8>8ZBA(Z!Tc6OMNi#8Ym>V2Zh(0UD6vP32 zOq)GGn1(n>4v=_vJzqQKTuZYVE@zmk&2{z^)2p)NpwGVvxQ zxvE4og?cjO=@G_Ey~cCtLQP`qbG`GJb96W3n4+zLOSw&D2!-<@)RBm*H4Bv<-nkdj zNHTFBy=$s{0br)aC(Q)T!6s_!#=>r3%R@zMw_y_OV2AvkP=0T=#HbNfELt*eW$r)9MtxK-WBFD5MPI5OG~;s4tc=*(Fkk&b zrK}31c9etWY|thtag4<*G9Sj!-8Qj#4Y`yLv37oMUSNLaCt6Y{BdMFO4XjplpL4N! zRu!1S_Y}2MhIx-TG@ZG$7&sGK_nkNpryR<^y?>PN^yDdZX`U{~KE)PfiLjNL`Xe@@ z(3$R8&aPZh)GEcIj8%ZQ9)U68BC;m7rHCCL0zNbRb?vUf9FaXs7;~qENJQ^7Ev4H0sK?5B}G_P|aQ#vP2E#~BNt`3?S&TAwMStm~Vn;VpJ z?$`u;ZADf-O^4tnI6F_Cfma%TgQY9`Gp<+Yn1r!fQwUe~RzC;BBOPOh9ET*0)=->D z><0?q74G4lm1eIAi$;iUn)M^fKA~r|nUp2Dxmo|_cfk~1qBRux3BP3tdu;qTUz<=r zPl$sZoyM%JXW)d8(cOL*7>>~|hlGtG&c|;)=kQ49cyx1~L5s#LTLuWcfIgEU!k4kr z0kC>ne=Qx6?jwK6Ef5)r?2ddAaYxsX(nv>=TI`sO|z!(l6 zsSfW@!=Z=G#o0-$Peox#h4IF!F}A7<78dsu=B3VB4XYPqxnD^mrjjZ))l4vKJ{=-V zpB(tHzN2V|LG;@>LV&eJ^sWo;EI<7R*8Pj@w+(>(F8T#`q`uCRe};9%T%29L1hfAu z!0*dR{MT?f6I2H2SE0a3CyR}g6OatO9YGFuh1H+EO+<*+j48S;iw?XXvHo3@`ev6pvO z;Fd|UD^!DBXs!{iDRH4k#0$?;(+eHyT^rX?!x&UAN-&GgQ^P;q;4q-5JgYWHvz8`x zO{gW#_t}J!U|v|{Lx6WDx!_br8;_5|6qs*LLYndH+0%$Ka}cQQAO2x-K(0uVl-EKQ zE~4Wl%QEENji1HTQSmGG57ZNIwdbbok;b!G5hJjg_MjMr^eOCukko>F6sa#%ylCM5CQU02FD#hVx zDKD;Y?>b6abN1IFX*OU~2jM^dF-4~~FiwT-@LF_ewZ}%lqUfYFoYy)s#w$gKnT8g+ zc^0tAksb{0>M}ujjE)jif#EF?2rej0-Z=AGOEv@E8!?OP zaoezWAnkqvuX3XdD7quEXdq+v_EB>fTn5PzwDg_ioG(%oYda(-aM{YT4G*Z5f8biD z%BJA7E@W#l*d<-7WS+*34T67x7)xUjJC`riBIxL7_;1Tgm8zyS z_7W;DaSR6vYXYTKq>W;814SOiighJPjPY1B+E_6aeG^Vu^VuS?BT=;QMCtx?!p4R} zTj6Df?MdoP?l)2YegWxrhYVk|W32u53vqQ6is>3)+PFpDCkGC#4is5xA-m1?t4*)T z&Z~`A-`kp{&2QI`U8qB9S*!*FGe1_y?g{Y4ftqP@;|=9PJmNW-xY0{S8sv8+Kq4I)4b?&rMidhAa6)4vV2?x{B+bSgbb3TF`DpsYVZG;jhG4yQg!8RaaVj`$ zQb%Ks__DF*e#%-{U_PwZ+qHf)s#Y#XLw>NZpz*p@R~ioObDni1S3S!yWC1|&|wS4@$phDwv3_3FXR_{5w&zp@^m=xnj@7wG+7tTmih5|!VTbKOMgPEcgkT`Zwzm%-ERHGSSlFnfr=HfExML{cZ8`G^Sw|$ z77AoyXB`O+4z2{#El3M1Bf@2o$c&2UgilNK(7Ibpk7cahLgpx`APqoY#xg_B?y{tJ zSgqJdrOz|h*4giSu|Mtu{KLRG#C~x3IyX;=B;!LcS#=ahC26H{=uXvKL)veG7=+rE*@rmL=N1m^}$ zO-omU!O{Ai+)BLc(u22j-R$)?E?s_8ejIL{51=MI)In1C(@&AYD1mJzG8C4_e3vN) zeWXO@yx$gCetV9LFK{Zu9f^KeAgtt?6PdWh$OuP$e=uie+9h?5>BhrbFoZsXBZ?Tj z%Vc+~#blQn_yzPa&HcMR>oqH~KKczi=zXTUWZyP-DfeRvD&E5$pay?3$%=b&K+DIj zGSW%BuWzZ=XTZ17B6&=l$8Wu&CHTu3JbA(@zzTe?p^%8Y=>U+N<=%ZZE!(Q=f?5D3 zQ$aT3bV{cHhbHf6Yt6}tV=`@}5`D;4Fy&&*8=cqEY1CEIr{eYW`cs)C9`WO8dDHPp z$bg(?c}gQWpTD84*Qk8cQR%X2R@<;LW9G1Z)7LejXXi%s!9>D=(ye^_bTe&Tb^Y=-`6E<>uc!?qZRiX~D7LgByP(++94* zG)mBWBT02B3j8`frD{F_39_7*lg_sJM57yV<_1<>Gb^;2r@Pzs8J#zOHX%+Fdxq>vD}%@wMc>wxSDy0iB_iEWlLl7$r8DXTHG#uG zlS~6CSgo!<7U7TYz!*RR*vyPLExgzwGhKAhPO`RE7^$Uy*2@W2g`*x33wUAkSz(Pp z3xHNBN5N>z>_Ht9C-Wjw9?bvjQe~NhCBix+U?_7iardNeM}3-SEk1B;c|dSL^quP# zpeJtqeu-YKaziS$ly_EU$=*U@B>GlG6tb?7vsPUyo9q$e<#ZjqGsU{!r$*dRE2+WT(n>o*3$n!a9n?9+y0y5 z0%?-|;p<_NvDf_wkUZ}4hj@9N7Wp0tE(Jac z{^bHy?Tdv*1&PJ%F~EiT-S_^LJA}t*&6Q)l>Oy%2^b3lusMh!ZA}AO=ln{M%vqFr@ znb$=H=9v*;$|n|`O1r<~0!IIW!5Tf(Oq0h{;(QFtJk8$w_g4P|6@vV_l|W7J~OpokB~aug#wvjqN%q zg8BYC<}Ap|uLb7I8NvpTrFM<5O&43(GQoqI5o1zqKQ8O^mXHdljk^~GY|O!Yu}ZxW zHdH4aiG%LXQe~?fELP7cKIbx56FKx6nmXGbt$qU)w*3%_^R{Jb6xy~Msw8bM_*6$V zud2R@_}zbOrWTr`?`%TBVDkxL{U+p6_I8(dsulNyBhmWqC02@#K zisWWE{gM^tHvF03O)p`K&b-{m^VmMCjFMT9J5IZPd8vO)&KSYHp<*5eCZW*JD}y+i zV29I5zVQ0?A4Jz*K+u2sljq`#h$sExVtM`%(e?M`M8?v|`CqU9_T*

D#L5@f;mp%X|FR|-wI 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

Ah76Rf8Ldp3CO4AnBORfPrC%W_X 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

00xERrLPROSPZIALlZmw)e?j zf+Ay0a^T%s11q&Z#gY5oYO-%bZ@2Jw_uoMYD0$&EC>V6YJ%emC9Dv=5dV$^S+;`L}4*U13-f8my1VT}KV7>D_U z${*|=x$t&sg7*RL)xV{ob>0RSC+`SJb!Rl=2K1{ZyPvlwi@fOXGEh4|=XKR7ZI@3{ z2~z_ZFIgi=^dZHD#4#ao^cy>s3p->bPO|-r>N8+G{Dtkori}o4%>=Y#XS55z+#~Pl zwWIMC*F36t{jj{XsbxlIv#4Lr?1{rrOHq1GZ~06Mx1 z_XAUFgq6@@zCwi$42Itc=`dxd9s-E3XfQ@;^d8o2M=h5oTC*%vj|aq1e3-I%Ypxz@ z=05qZZO1=R(OwAVX!RlzYW?SNUMm=qaL3Tp_{QGw2_}F}Lx<{e|1xmOo^OoxfEK$2 zKdfPGh*f$t=(x+8!lrSrtN-_=GiYb@uN9kW>Ciy7l(g>$BF}~3{*7SKIddKd0CFizJZ>db*Vp7Xb1BDg)4^Dpp^w`R(y9T zd`ByM!z|d&_3qB~F6D+WNYMS#`e#G#v2J20rrmN%zSvn4_Po?MgmNkU1rh zGsxWUjNbh$gdJSh7{xDdTw5{YiP`e=B))Fz`SJuo` z@lzE=*DY$~>egbISqDu+(DG-Db)HI#&Z{le!Uj}J-9gdSv&`XlI;FOvOQ2a^1!Kd7 zar~Wjk8@EkO1(5WVN#Q<+X8^%Ci;v~$o9*}N02N4nT|s%$)xv_Er7X~V&h1|){;!_ zskx9mCZjWnX$%aTq3cQfHKNr9?MP~KqU6TDro7k{ZYIbluejg-3+K%xH5>HZ7ubY} zvxoKyQ(&eQ{{4+u;8KXtwFlIX22;JuClUqv0aI7^a#T~yco$`sWOqr(*&~#zbsR+E z1)~2(e!17gB&YY98t4B;<$REWs_)L5B#j`&Rd$F1UZA&03ZXQOlBqq1}y+h_DYtRm=qcIfsQRMVQVZhva4_5$S>}-3BZ~^C^BQj zYbpmDG^XI$n4_GQ*an%(s4p}5s z5l&DH$+sOkL-tP>G8`xliCsimL_kI_Xxy`P2k$QYo~6iSnz9zTmE>rd{H)!tjpk>{ z0QpXvZXnS(9v+z(Q8P79!l0FG(wZ09vl6YG>Of3;TT$8rhh$g~H5blRs*1wt#qY)( z)5N0r9z@^+BAquGMq?F{F~)HhLZ1#I31?qzzdS!K318cS_2C-tBRi;PGnCN4ms_@PMMN)r*IJ~n1WrssC`A*Mn5RLVhM z@=tjY=RNH?6c{H(SASokan(wd1838^h$HrY5+!vln17vj7jJ z6iksqTzt89wjCiMDfaX@Hh0gzl{!X3Sy!DkfPfQEfzalNAenTiIP<*1s%WIjGUZF$ z)qS>N$EKvKHH?y9MEFM=hyKd1Vw+8l1yY)-LUatS#D6>T1 zQR^L>^|YjObDh(X2bFVelWa1t67fY$kw0_>;kl%WbJg(bG~_hE8uo#&Km~t@wX>Fp z$YSGU^O=Ov-rWM%|7r$-EJdYKy9zPqg7DY-1&dRXNl};(dH^=&K?mAVf((N%uXJez zsEWtPyw<9(5FW-VfOTdwBH#i|;^u0`25G}3rzdHPJToWdm#_&7Xi^X~tY{GRk*_#V zs_jmptO-!r=Zu?@YL(yaxPmY<;dD}rq+|X&xhO}cq2gZfoNMZ6`=sA8p_322fgVDGGaL`uE#$M<*r$e4jmM5n?A@A#s z`TwN4PL3Fx53garF*RD;`=yotu`G@_gT8OZL126P#WPPBkzcrDR}`!NF4Z5?f=gZG z;y1%u(Q34m=eTuGMp&@kpOjI{bHu#AT6tsW-zL#Zx6k>~IQO~z=sA{`+n!HWQ# No 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%0D(5!%SYmqx7m_SAneZ}MQm%D6X@eEuh&@t1DKFpt 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 z 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

LAr*VWh%`V+WnGPxm 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

V`+ z&=S=IwRRsC72QF)ctkF#eyT26U2J#+qO)0!&sg4XTCN>zPr*HqT&C%@d?0S25%~d- zn1U%wzGKGWYp?w972QssQ#9fSzNb_~zw~{vtx2;qV=lY=1I9HD&4Ol@;!7uQBcy0U zD8je0kB}$o*xc6_#^YN&fu;DUL%$*iA!GL71fMT-De(u*x7s}EN`9_OrvqP+Gvq|M zKPY2nL!oz@;m)>#T`ya#>@ zODhmc%kZ%ZygiF+LMv!OBU?}kKcE+$JGyKf0tQw-v!ooKA~Ruv(r4&oR@wZ$^8 z;_z~1l}U~h|L2Vf&&4dk86c)g09d&Gmva37BjWcjLi&GNrmNL7lu*=AzBEnEF|)p3 zbruw0LbzxvI0%5IL4}JVfY3=WYnzFN+0HKr4G!|o4GK>Q=|)T7-R%jD8jkmsQBElq zN2t7ldEA&C&>m#xmf+%0rF<*j+j5%ee$KwGYCS&v@r)0w9&%2a9vAdYdFK(SsW2!l z%$)-#Zx>QYEWjNPL=O`nm=BmAy`8Ysd@dWcM)Y0sOkuWO%5mVq3Tpna1n8mOcX zX0{s-)eejyiFG;*l^>ezniFDy%2TDQI&UMM{1OfGJT(-TvEx7jOj0;N-?efpBbiP~ zcp+89Y@?7WytLyxnC2iuk;>0SCCUuNx*keP*D#|JOsR2(gv}BGB__&3SNFKBMzJ4+ z)!_zG6SGN8HO`0Dit_V`;g}scEk%KAa}ui?Yi;GtHVdkWCGB~*LMTI_`wyGsO*9BvM7&Ew9s( zEkZ98<*i4M%g0lo`$J9%B!;q(Mfx6-B!zUp+g-7qy$K2akS9Aj#Kw4_cu_nbpp9M+j3DUBlQ62uM%wI{|G^KARoHZ<| zF5Af1VVJ}an1p`H4}Dz8Ga$xNez4#OabuzB6@-m)FB1z2T~eeo)7$-SyF)x5vbvC1w&;YfQnnYzqVj zL!H6)Yg|o?9d;uj{l&p8D{2y#!vG5l_~|`jSp5BpP*rUudFHpZqTjDW(JFPe%5epO zhhUpZ416iw5|^d}`3k>|zsfR9FMYYSR;j=Ha8t4;&4;f#lq$`pMPMblw#2ufYKwc& z>mx!bF|cB2a4FhRlx&J#;V1frEfv9R)>himW`aou@l90nB zu0GWuWmBj<5Rf<01s%rjAHlx!{0Pr&Z*`-g@GHy%?GpQfPVW5d`NGj& z#c7jh;}a`>0bbgZ>VH`JGbk*F^%~CjDU&`b$fCMAfCA>lv8Do&zSi}@h!%{eugUF{ zO8YD7G?}=^5?{;0^ZaTvXO0*inmk{0mCA0UrP}^Hb z;)WJ2>Uy*uvkL8pKJJvYI3!=0G6P^CcT$z=SrLckv32&-*Y=b3H|y@FwqCopUN5&^ zRdgk;h|gH*`4KZ$6^f0c-qI(#!SrHha!w-NIr-?O?j6cYDWX4X;*xCnRO?pA({F&7 z*RKtiiQ(!q`>bnhiOl@|2s+~@2I1vPe*~WHsg3t+JF=)9Sk&0Fn!#ET>Q<_q3PDn7 zOvM}gFoYXP)c{H7_V<8jhoAJ-txX!uL6C#&yG|$n>Lt2mfew1utJ zKd>MFya$u8{ZB7IMMG|#AK@z%hiq6|fd3jqF%vWsMAMU`c-B5Skw7IP-krr1b%Tqo zAxH8dAKvFo$xi}bvmCWp{PWwVf{IxV0VhIpeWAM>pqB^$(zt%S&&=on-BFAX7^w~e z9T^wd+W}!3L&OW|_ICw?VItv;h8rpX!V=>!3$6mLNE~4@8cbOmTqY{8d88IXP3HA6 zw4EAFHoXU)Cpz|3Geaxc7YBef&|H+<(lGAE^h?TdL+!`bj$sCxrdqRNcx`_#@&=LI zHWZf+$6B5nZlZ;TB*Ey*v&kf_lM1=u$R=tN91Rk+^Ug`wJG+Y_!B7*|^~Zk2(g=+$ zk_q`0b`LQmNq>S&q7SI6)MizzH$jmuBq`LlsFYozq>j4BXVv&LojPi{&}PYs0@W_H zTDF{?i9Si|#`AY1u;x$5pH?V6j8UPG%V{vY9u%h%cbK5@ev!_EjYcXVlIx!IxsdNt zzRMD*RhLxXy66o0HAuyS@v4kvmSd(CW<5f?!B_b}iGaz~7xDMy1rqWo)kUL1&7daN zQ5neenP}%HgIC51=NfRvk5SP&D>=2c(Zd_*6!lNQ-g*i|z#XN4Qq?HW?55l#YM&&^ zg|-t6CTlgPtk1<}mb-^Yk;=8ItFp#$%NjC@!4{!4!G6>l<6I#vEdFU8MYO#E*9ogo zcYf1)ln3VqMQXuV^#204V)dwm)J>Wd(!GBI_zn2j%VX zV?BMHC9>Q74SNMXSQf#QLm+tfp7R2p@8SjQ!W|pCEz;_sxL4Q0NDTBT&B-3$$3Ee^ zeFEEt%iHrVc(TLR27x3*JP z`oq}QM5iW%AuOlB_rX+!j~m0t(jrF5^Cby)zNL#LD$R}(@2r2-Z8R#mfZM~5E; zQ94N!pMd0zZBYo9X)->euk4q>9{r1Tfg#JBo1SzRkGt2+6ZWu+td&i%@WWv?@A*ad z^4S)*&+YygGtfX=x-il!37Y{$pE*YaF-JwL5qK;%M?!Ewl0QlqE3r&6D$%N7DS%lR`JM(Ff=I@s@&uOcI`fP?*8!!fP#G~U{aQJw+P znZrZ#O-u={ksh0nmgB2hqx}6V(LTUGD=hXEW^e84>YQCQ#~%tDc9v!D;hRugXoa{G zSJd5f0Txi5@_yzBjY6X}EnH3#q<>~AK}Rh?)wE`dplK`dYz<3Z>N4P{`hrnR955KI z<63P$MBczFRMsAIMHc$~OaKKGMrDK^#0-?c-r*C`uFYjYlg-gd9CrY?-LDK~G_CZis%&LW^DlWXT}K){uE^iP5%SI4hu$Y}%lI5UvQ!^A8(>>!aH^DEqwH zN%FN<4-v1O{`?@AG-f&)#~XeW>Fn)sEz-%hePbI0=F;gR7c#Q>{;;aAvI&$?MrB1_ z<(Mdix0H_9hJ0#@kWlT$Ay~6m$k$#bOziF~IIa=oS*=91MrkHQAqJ79s4&-y$t`t% zCvRt@INLMAoc0Bx;WLy-eTW(PcYie=J>md%8XqZ`lbU1$YT^^|xklz_nXQ!8%eRZrnd9;Qi z%l!%22ZpR7R%XhJe%q;(emqe`n@U4YmB!)*&y40Y2T-52lb(vXPL)Cno2Fw%q^a)A zkBk`IAIR^b58pj{5^uexti*DDJ5O149I?vOzGHWlSm`dn>cY?NnHpCxXA>82?5}Q6 z4PMU;v7Sp+Z)=T}l@HI=juaQrII5^LMk*^8sx*ItIeTa5cn}nBQzBj&&JOCDn|nk4 z&#H{Nc3Qm}&?*E4%p3j}^QMKZjDfqnqlKNLg|ml(i;0WLKPRIp(K2w~1Q0^>7-57A zQ&Z7eoR44x4H*Tp^J2!$EjGtKAk`Y}fx?hj>zfr)D%9vb9=o^V$o)YF5Ddb@5iWgn zjJudpq4pQsl($<#ZbQniIy0?ue?F=pi%O+w=wYRmYUg|~4*KUY`6;wNw;vvLxsw~x znx(u6WRig*gjyZ9sjKUxY9sB1)>gT;ui;GJNv3~>#E=8q>}uIqgnyq!gq=;v7^SF3D0A*-N#U6C0`bl8Bj@aI>9 zQI|-p(;kW~kql`H5a%Oe=U;>y`JWvw%< zG_>e=!m0VJJ6fskl=+NgC_{rXu>)5wCA#1d=_~WdfuGl)h9=ghe507Y$`Q(l;J(YP zc&A?jhB%*3fu)Yjc#1^en4fsiJ;z*+0+FY*(V?_mimZ(4PCh}!IH%Q6+PpziCrdQZjFaJ@8HyHic7WyRj!+N1zPPCwZM0NA@JK3V!d8hnl&yei|7qa`H z@OH4Gu0-yIo+g;eqfpM#r3k2P&mif={`wzirYv9Xx!xvjsP;B`0GdwwO* z3sK=6*ZUqjMrPkAHlp65${s8-kPNuDwe6C~{%WJr8oI^5f^#ok-HShVoasKM&wc&y zQyYw^x7G^Xy|~LT2`CQW(pC`U;-UU|Wl?Pqs^$Sc?_b<@uiiJiK;1wpUi^V z3jrAyg$13(^XTb8YuP;%8%^RVcEh}0nk{4gx%a3#6r1)N6sUkOaZ=a2Uj!P{KSTlj zJPMwG9P<@H*H(lW)*3vgkj>X*Gg!WLk1;bm6g_jZK4HHH;aBd zpPRPYvI%~Yc?0XY&tlprnBjQu_QCIs*z>qG5>k#04jDHbZ#d1o=KOlL{dzlY{Q)#- zq&CEHH}K%DHw2n$>`g%OTUofiYEMWz$w6lpn^?ZCV2{|FrjUZ9QqWP!-inH)D(Wya zQmc)2KQ>w>G`-b|Ezt=EeYrxGSIa3obEt7}88<8356C?Jx0~14OI(eKI=Zc+I2NE=;-r8gebh{#FE6e&f73sLn(Brn?pOUqgnA@1E zC1#qdh6Lm}yR?m_*t!d-8c<51hI*SH{`_34&R~Lif!68U$c`i_bc#GGBTq03CBQk7 z&D!drIulzJ7l@K{K5-9~zK}tln+{}(&N&bwUSU6sF|Gw^*6?Z_61E{TSkGMnWOFL7 zf@0ntOs3tt1s5Mma-*nkFm8fy>TMS3&kzcp9OQWSFuT2D(FVf=|hr#+mp`#6u$#2F%(j zckxzOSF zg8lW|fbjbrhi?b?VkLI;nacgd`nBgt*t)EZLQzSAP2Z0zUy93aDMNaEw#&;)Utg4k zr}5CGB1@_RQvI0+LDgt*_{oz@?7eL^*p3;xr?Jv)uyD|BcJhF^Lx`Ef3>Z1#yr?B)x#2g(-tnOO$ZqpoqwzfNx+{p`YyJjC10HR_b?OCpS&b5rG&z7)QDV zS>Z+L8JvJeJI{jR+YK?8YXr9YcDLJHe3j0c`n;NiJTo=>rBcppLeJO&+)|h=l88Xy z>5))}h~;ol{@ZC1f=~#+Zi& zpf)B7U6T}+k$@D;)6|3=nnwx1nw5+er0syRQs20kpBf&QEBDLOdlN7#k{oe(YyVNP z;N-?`=ilbc=GH;MPiY zLuxsc-nDJH_b!Q_K#N?}cpsUS!E9%o#yRv?E|I-R&u_Ihf2`Q*I7hw4Y;A|q)Uu>y z9An6&$6k^iVxY=QBy6xeX|l*vY+ zOaT$SGXi9~n6|y8fTtD1yL`@NT!&n=-^jsi-dMai7NjkO;Wd&Y#l_3?WCaNjG|6Qv zrK>!vTrtc%B%21!%rASvkXfb1)GD=ZoRvbr?7!RdOypHFmAnbBGebVaG{oQvEEU>3 zFow7KK|UlxfUL`UW~$L%zUH%v=p{I~^MXT+lNOJ#$O=Uo%f!Zs!jmAsyAn8l3pFjd za^y~x{+(kYp^v0g!#!vB0TJvle4i(b?0^^7F_x-EYL*iQ;hwd|;bZTmW8D7n4-a_g ziNME6McB7w{t761g87#l?H{2nKzeR4q}y5+t;uc=iwA z2gKt%l`UCrB1MB7i=GM5`hG+l6B3s;5j( zq`1xYYM@EqG)6C4xR;NBOA@;UE0H*8gZx|MUEI?eUgwnkrg))t?h)(D2NdH8(Rd{& z**EHnH&{2J1fEjU%K}16IGmPn`VOO*S(a}MdA?2h-F;*Xbnv4f?RZ$HRA+P#MP^Mb zeHZL49B%c&F8<@!!1a3}COt*dYEBEst&qds6vqR>sVdPlcLVyf*UG~u@V*7PdGM~? z4etYFj~RY<;I-8+x6yh>l>1oKWKm-y(x_IB$A%0Om~YT}KxWVOv8aqwcmyNM7ga{G zc(%)&6;o-h-NW3*$TF+Wjjno#A_K!B)Ak8cT5=?})6JAN0m^$jq%_U~<1{F~1)=QZN3_fYQ- zE7)~vVsF^4EZTm7nZYLOv;;g3Ukw)|>oG?XF{%%nk$SO_~5sE#beFg8WPE4!8~dtF{qzv9LBaas21! z{~6aS{a<|u?|K^}D;-H1&j1Kt zpxj9QJ&+fQ!4(M!5K7>sL^so!$?W!vt7m)wp|~y1i)|T~VZ%OtC^RT*rK#RzpG}Al zDgU5?wqG3lP2`gi#A}>E>$|gY8=FmyA!E!gU=lA*E0aQ~MA3p-r8$cV;{;ni)VOjT zUN^)Y8UHG}gGfv6xCSpUfioW7g+HX|BGQIWP3*H}HoDY|W*~D*fpk!}a09%32__&1 zm8Se-mLwS|*WtVeKP$L~auTX<*)G^5H01Wf?wy?VA~&gXevP_y?U3ql)GL2SbP;@x zg)g*Nu-;)%&xxH)v7Pw4#|(>!oD*`G^57b#Z3^MNfXQ`VuYkj*(@(e9QC(ZP-U>g9 zV*_#~!sp50`5aS(uv~Ydqy!qdGcRt5p*jw#r0JKGldHQE`=8HFqXujmS1WBVVQql-_^+Csy9iXVxNlFnm|#*2!dQm;%HN#hdVM?7Ip&T-xNhDEu@d1Ix$?J?CP zcCm%h6xBK*N}(h%T*s5vYy33u`4~!f3eYGypU zMLXL4_%Aga+=|(H_~!15$yYfnWr#I5GMVOssaYjbl_X2FBDLtpG4?4S&h_9e7l9pyRg%vuWp4k z&40};yN$$^0Wz}Oxq#zt$8rU zjvJ(fdzI;k$A$crf6C}D;AOMkzuDM!3`MV*y{n$e;Qi?j-#rf(A$7Mq%a!l2{iK7H zHaN{fQiJI4c`8BAMRi39t-PH)Es=?&|Jc|BeD&ATHM(*0u ze1uOvVgmp#dgJG|+W0SE9$KE8N}PJ-9m+oZ#;6 z?vRf=-M4#Y*0*}rsvmXU-{(BG_p|qX7)TWxt1;Hkc1l*RN^dXM~%R zm?C*Zp#K&l86gLQ04W7}LOr;`N>#kF$YtR`F;Xp{lBRKv$Py8pm+PkmAT|zMh#aKn zj156)6n&2HGZl+&63ds?JrBpWeVSZCcsGVa|DN_K2}rdK@+W{-QeSUywb8tvgDP_# zae=HV$>Of~YNcFrP(!lSsi26!34Us6Y_7Z<6s;tPoI5vY1Wg5E;;w@0w$uR5wbw7^Z)6dkALSOnB27d8!z#B7>|Xi#eiH96-6+22?Btl|W49_t)aEqG@i}8s2O~{oDMG^bU0D^jN>h?Q~{LO#SGNz>`^SxY%*d7={?Z z*sK!{d?67hO?d_pVLyUn@_e|ZZ@9k#*Ha4vset5hD75zzTDCH2u|8x9B=ShXkz&TS zV@2|Cd4BGwFAzf%b}15``vxjbe$?q!4dYs@gq+_~w;Z)%`|{}mG4{O6xOFP>72HkL z2L|y$#kAxoOWvcvDDhx!$D{sZezsAxUa3wu?GPJYndQdc=L3{8ZnXqLcU$HM2KfCX zOjW2(x=P0bI2pHFRM;w)s!TqVb3Tmby&L1-et@-?vhl-GjE>57ZnZR9q6m}Zpk)V+ z4Kn)NnSeczOjQzcYC*E;V1q!ucGqRILp(q*|S1y)k_EANPofq>H=++@v<+BI~5d#ugz14mJ18 zhyW`5zsPT!(Ue7_o$zLh4i-)DrH@edc9v3~pKk(DS_OeIzn{m{958~RBQG`wAHK2< zQx*G{eLa`sr2Cf?6$Wy*5@ABnrV|MaB zVp?a`23Rv@Ps>VhuiX3kUQbH7b+QX8dU8z3_{DaLBY8zY)t#+i8d)aI*nQWDl}dkf z+=FL3_F2XVSCppKO7-@cuI}9>s_9Rd3kD&Sf3vjAlJDCZuNu4~h7Lq}lFgJ;WZvApDj9jH)-)i=Fw_E1Olp`{CltuMHC&E#uqw?Qn_1>Rr4b z|0Rg*5lwq11|c+RgieTw%!WLNXE?5TD<5?!8?RSOH0m-sN6Z)T%oA!sEa@CHm#NTb4@-fCDJ)rD>b~9hdTkF+0K^I@?9$sqY@z;P*K|eew_%Amo)ocZa|l#vpw4LwNT?JiaasGJQ7@do zmsvjpB30Waakf`~soTb{0#oh!@{b!4@w)5L+PXM!MEgWLx-yW#Z#X#D?f3e~a88z) z{28o&B|LKi+!op1P9>RaeqHL7Km7cJzWcDUnR56cJ?&}%NSoeGacg#;xQ?Y8R){3z zH|#iX@BN4t53U{M`69!B1+C(va)kPeDgJV$|6Djhr8=6ajBb(&MR)HY$-xhGmX%SE zcc6SkT579MipKR3rvh7^s3ds$>pKp_hnT8Mt42<3K(ns^c^tR^Mt;=Dr!?ANtO|oR zd<4O3dEvfg8QyXaODK8a?w;6TgNF~zqowK+$2r}HV*~;O#P5Kcp?lKMMFk#HDxa)M z4PleaoaC&%~Nuy3N6c0v7YVWH?@Vdt?wGt^HGvlA`- z;XzH-%oq(lG)*$5Z!vya!Bmg;0KbuHcl50y^^?jvO26t8uFBKZRq-)zd@h|GsH(lb z>T`MD&~GPz0H7(PZ%BxSAFyoS=y!79q|P5H%k`j_e!Sw-MBZlY&J3I%^3*de^EFTT zHed|t`?Xn$hA=}ClCg$-ty|)*x?gvSL3sy5OeH2FJqZ76Tz_J)ctLG`9J)*`E|{EV zGWVthAWgCVrq;pD3ryf?pukYUyd(DY;?_7Hg{9lzUi{r-jYWWFvt(6q1WUW!?Cjyv zk)Esi{u_}=S$^mcsBDYegh`#6E;)gP0^8$68xL`7C~{p^BcK(s$t9SlHU~Jp2*mhr z!Q8?$YKxxQP}Vf=G_q9Kc*7o-50pl4UcJszxY}DI_|fEto0k1a);xW_*fxf;s+7iI z+Is*xx>8zII;>FBbX#03COj$~k+1YFQBz9Kg<88vr~y~VFxpg8HCWDvrBu`lj#(=V@vba){O2bRXiUXNy8e6D{#UWe zhwhHQ{LYb;c^4e~&kk3Acjo{9mDPXrR}ET+t}|-rf6R)e>qT2X6dLCK#Ly{X7F9;K zVvxn6uZN@|pk|Cw5QQy>CmBMAlZ4b<`QU(czuT5Y2H_a>H0JbT_fkd}eQ(Zc#VU)( z4fc^*YddG`y7#ZvOz~vaXCqp9-OQU{U6NZ;w%Bz zq>N%H15WflSp!UB4k*cPH>A-9TS3Y0PcrE5bNMWTy~AU`8>9H=oQj9cfiq zGvyY+M|HHYBDvut(i}79LPZKn7jG3+RQ8Oi>6e1$aKGE4qfcX?`t;t~dWI_35zQ z_{Q?5)z6{1I7)rO!@Dyr|uSVZC{{MF1;881CG#qU_CSYkUYz{Fhmm@3XD_8i3kobh)*z-rt^#C zWfgR#2hselB|o&y)LXm2TiU|MA>zgL+eHiJGV5?uB3Kj;Vr<9oSH+tC&dJJ~Wc`@a zLRL|uP*(p3^!p}3FgL3v`ReR5010^pKx4K%#IqaD6+Z-C@m@C&Xi0|=2`QiGudqw! zN_Fhs_CpuYBBha!MI4Ujj6#bYBcZe-X`vZSX{~V8tWdY2rgTT2R4yST&P;j)@CVUt z{AQKC#vk`yd!)Rgk_YXDd3j>1Y(eyk?#&@`ibJ``tD-A7p# zZY)4PNCh4uO(vvmiC_s}K0;Ts{G%g)y}W2;DjJ%`?|WD#^b|@7u>}Jl3BgPzn-Zej z=~H^G*v9Bcu|j07DLYRgc_wg;AmQ5avE7?cWnXMsuj(q}7WC5ErBu{*XUmjCCHt#& zpSblK*ZA;YU|JUakt&a5nF8#DYmCR5boD_<7Ke&V*KkM6oNc#*Msf|}E9qMNg`gmE zjrki|(gm@G%J^6wp?vzHoCFuWnXxa(&6M$Jyf6U)i5wsi94O!>(jSZpb%9dr+chsL z8~lNJCz_(7N5=;t>_My-(Tmmy`gUee6qm3w8p2DG9NyWoM#4M|nwqQn@ z!o@?Y2~?+Nems(#D#VhUAY&fSr`U6=;kAkgbqH%FNDP-bJ=V(kgKgM?Cs9SN&TQn} z88tb%>Yb05-E?Mn{0K26&_|@WDDpzNp5wW{%D-;$kx5`ZIN&w*INw+7@?L5`>l%0L zEDpCQTDKyPh=lIIrVfYnsKv*sJ*-nmR7+mSvLtTBoo=kuW5qpUPmS-)3vFzh@b&Xp zY4_?QCi^A{zua}@-3v+>H0=V|vOQCR>X0DM)%yf9Q0v(?&`0!vlGcY<8$0u+qL3@F zONrzql6RBHIktkuA^=?5_XZq4H!8NXO>S#k8mPm=&|6iw(I+qd;xBa~spfSKsxUQ@ zsu7jufux#I$PWCpvvL<#f%JM~+SEaAlv&mm60s_>TMd~d9=%^iI-wqA;g??U=>}?m z>>Wko>pDprZ1Ow`2^fuX;3 z@(W%!?Ua=m!R^ME^g0b_nLt*Q>L-JD zE3hh~{ssiqt8P6pu)h*f&k0qEXAM952G4;x)&eVB%be@v7$d%cjmsv&?-0fh(BpLq zX|t>$cYG!AC}B^%XzS;p+Q*cd3|}^+zm4i}wYZ(;;5h|KIFBUc80IGXi_7&G7a1C% zK<0}H$5C_3p+_VZ8usC%_v>-zv**!Oea?Vl%Ai0fj@@KO@8OZKk3z#w-6$CDUF3$& zkY~*3W9Ri}fsT?mzrg3nYo+1UCF38?gp7`wqTVSw0IcrRe`(cucWV98GfnO}I37d{ zbK{QE??C^-pF64z#uTroIbb6sK5-Y>R3O3=r2sB1lM4uk#<&d^serugk7rx;YS0Wl z2+ucLplj84eR8OhDlj&evhE6`qLMD!QtOUydlAZ5v5FgzZEPxBGu9a#xcPuJJ(XwN zDl*`l7nZ1(J49!-pjoNEySBgEZtVpEj1AaYiR=r*lq1y*JxkH2(0LLbK)-yL|bUcf-_Bb zZGA)xvrlm4EmJ&>!h5J6$0(D0Nm=grO4~Nb_lR7LzK$Z^nrYA-6K=*lnuS!m{)o5d zmC%E#gzB%u$agvfg}omfyrWM^zrFB)UjlQ1MPu(VRB=`}OH3-C0>Z zkis`x1NkeZ>9+-oq|-=8VK}C4sOU{N&EEbOD)R*+O%wQjQS;s}>i<#S{r{{I$p7Iw z@;B`+GhzLGj~pG`g@qk71q+dP2^JGCWG*d9cOqpPNup=I>s|@4gRGh?te4fre9ZQm z>>n6~-mZJMFkOKF{?KN9_e+>|I)7Zb-d=lqyWXby!CIy)7K0T)OBN=AAYKu+nfjRl z#5{~@AmuiclW|}^e(~4(VP8xY(IHhU=LLf5GJ)NRnEU6!t#8<)nRt z`x_Jg6CF&~M!8j&7CNI$d~2_T9l}0|4%_>NDqC0is@SC_2GpXVN8TOVZ03r0`eMP** zkhq0)H$K%IDVpjmr6T>g5KT2)Rw%m59%E;xu zdA^Ph&cH;}&%XcyhXs^XKl9S~g8sr3UP_L?pw)fsq)s^WWiK)Jt5w_GbG8mNF$w)kg)UuIuS|yCj0cA zOqvn>5Kpm4q5xN^FrJnRL_fAbY{3cUaIBOoeAPE_fs>dpoVm%UTvUoILKm`NK>vjq zs8ZjMYJXvf<=KxKnUIuyj*w)31nefl8u&R&1$d!Jzl~9)tc+HmU(A6Lk;N?IMi}+> zzogN#@6CfP-*2+p`%M=9k0JNpg6K}H@04x8J6qe#^xq%JS^o(xs;w&g6^PB-oOQLV zN()iM#4EIPP9WZlWBb`tu#XiXHhbF+S!qN;i{`Gfz4-_5ZrhQt{RcrvhQ?cHI1>pX z4{XTI3p^I%sn_2789aPlZ*LEAxe0 zD58~{(CG$rFgh}B1wg2!V-y02sJ$?%T7+f)8CC;REgF4@{TrPk4V)8?8p`*j;?jZT zadXu`y7tmvaWE;qW{Xq&XMqU{KgB4~xO}f(Xi_=d$=mM} z5^vn;F{!`Det1p}P&j}ePC*X-qN&W0GxJ7qT236-dMnX?+>;g#?RL;BJ|`{&rH8N? z8xD5c+TtC==XYU=W=X4*)q@bda}!6{wn*IBz`5P(t)E#@>eoBMl3|HRcw zuxRa29A$Pe?<$>roc@5L;**2OfOx+17zgI=z@RN4yZov!vAR2aKR12)dwwzv@o_6xtzwtdktzH-Mfmi^Ku(O|-=H$opnDBGd z*yQ|*iNhkLZ8u!7Y3b=cgBD)j=1dLfF7CN*raR3yAQuHEp5{^wbhlI}8|XiX5V9@| zsH4j2Lsg<=IDu}HE*=lR zF7VYQyOr)Q2Um8X>Qd_Btk9QeeZbnA>=T@xDT};wK1b{_e_4uIK0E77;HeS@dR%Z6 zg2)rx@au+`^GPmx)@sBn$0swW*M;QGkj;&yl&6Sl`Lu|DVsSMb(Uw5ed&AJTJP~}s zY0Eu&Y!IUmip=~NXJx(dRXTZ!R|Q*0QSC|yt43GJqGj}veB==cX!V(hU0jQ%$-M*1;U zw58^8eUCP0c|RGQbaE*BX)=N~mDD7x>2PAT;qJMV7a@2h$1}`0rz1$bu@Eq ziS=s_|B-Qswf1bg$IVMh1trkOTd_uAjCS(%%^N6>e*pLZu0z&~PVWupFHMJ#BY=G7b$4ubS5 zm$a}@3HftDAp|6vNTQgONwe;-QWAYz^J?0KZu`BC327+Spv`+BAm>VhUTg?&<*_%K z$}`c<=4pO^pZ)G;E@vWu067tq3TvoQ&lH%7W-b_^K@W4Sk|J)T@{t}g26h7@K&TQY zEz`(Ns4<;SMW}4(XXW9L?ex#bH@sVNmk~qyiH)(e=Zsu|Vw@M-N4IEQzN0LK*zt__ z*Vt}tm3I!+ahI!Md{D_cS0C^R=#byd6{YA5W!A^soH#qH5<1- zE)tHcy7td3IGK_nPzoa{(eZi})uy0cHiJnA`LvqtJot@GGOT_PEoVE-)Zj1B_L#Wtv-0z|zYDupH zxF!Oy7i9$dlwNmNJVKgzbd$rH>L~Z-tP7xaPbf)SzGY9PhmVWtbA%05c91Oz(=vsc z0n7HDT)gCqcHs1ufNsn5x{z-=X!A7W8mZ{5==DbGJ=B!gt>n-}#2{G6?OyUg9C5Y& zygWRNPrpC>L~t5gRRonvMEe`%<+8yTMjCYvq2_Zbj?K1Tb#}JUoegc=>Y9eU74srY zYf63W6L|6oI#>sNcbgPmvv@d!roMdZ7t3y%aD}={d}0WRL7b*{qx^j&ofrRvW5L)u z`AMzafSwA0&Ey#VQk=8el0W?CY;jR`Fp^KgeI?(C^xt8RpP`SPY68Qh9eT_iU}+d< z=z)4+@LWOp2>a;qDP{H32Spkyp&A7a+2c?ixi<#- z^o+;z?s?o+)3@vGRq+FzTLrNnle%0^32|f`au;g3I!2SdZio$S=(iCq&D@-lICB&H zL%?oKm+jg0A5b{PIn{Qrqh<*ayK75Z{<%&;Y6&+8IO{x*?wAu1rZmLc z&C4ipE0<*ox(Lg|q&moM@L-%#=uum0`Gzj81INM`ghQ0YlAgb$Y|5SKZGshc`rrpl zy+z9;7z#sl|7NH8s5+7CTd=a+$(%aoa!J1mL?=8EB=NZNp-(51vi_3HmHBCSx)AD~ zQzV&kkx#(OR)vhqgP{|-=!M9}W%;lfs>>wILmsghD2+c8)BB9exZMh(HD_<90zv;J zx`^8eZUjloSuOOqfL1n6>ms9$9ha9KkM^>x4oL6Q6%p4^;Ss|j9AF_4N3?$1tA-#c zPhUt8cT6)DE+JY3RmpQRAQaY3vSw7@XP2Dm){WMxFL}VBH`JU^zWzjVwR!c8r;icz&1jG6@QSFD4yN#9?&y6#9|BCo`EH0)!w93ICqw z68ENxS|nWrIv%OJeD{IU8M)CP#8_&Pp$k`#VYj$~mo$9Din)3etq~QALLOtnH;(B1 zC7Z$L|3bGYZXY=aEB5gY4(=H`{)D5d);E@=Xu@7Y^_jyDZ%SYgQ_kr`BtDHre#4mx~Wk#d+&t%W{*<_ z5`Het6WZXPA6I?wCBBHy`65Y!EEHBL@y4GnCxW-Kk=hNn)}S)f(*_La|KM-;lmCH= z+}sxorhQ394Us|nv`~xuy&_tELO5m_WdRG@2d7s7_3lR3$kpk4fHT)KPdPOHA)`+O zFekgAHu>iIWRFEKqZS>VMjj(WR3?qcP$4*F`nA zL;o@j{V&VIcbetD8hCZvzf2E(fcGjIyqt^Jd3pY#hMy=O{JF(Yf=Rb2qL6QO7t@qa zbfyw%{tO|dU7&KX_}ookqrF=5H__G9TA9i(d7kmy^G^uuXL&xI-WM}{7_7zpirn?G-e>{F`b(WgnC{TV`qa9S{d-Pn+>Y6~g_ ztkD;S6=~1RqK8sU=LpZwwr376hAAsm^rrpHEq8DXpKo?-v>KZ{!2!+YCMl;4u(XeF zWU|52ic**399=0`i8kQ-g2pRSHE&!7rXE(*J=|9i45gY{;~%)i(aWLNR|QEealS|N zg{8~5YkSKc-XS1%<(=Y=_wUmi9}wbJN%zJ5BydI8IZ!R9Ykf05w=K#xNSCdyEVlSX z_{&OMwAPg#Zd1l7DQ(tAmLU~mc9DWW_~w_eW`wb|nMt^Rp?a!>S-fb*8x@vCyyIR} zqUJuwzS?md_n`OT1)GEc*GQVOp313w9q~2|rm6E*dj#|N&_Pd1giXi@_E(vHHjosW z25(1_4XNO`Hl|sGV;OytDZP``hX7|+9grDJwgTyH4of(x26mi9j!_E0K^4K4>Xbr5 zla2$CQY-lzNNQV6pRS>XgNYotV|SdOY|C{9`Uhw941M(s0nrK3bbs*iKrBQ@3o&ApakCSMiRoXqD#l2?l5RL_nY}N{0W=(jGT;=o!g}ebM_hxr zA7`{h(VKKHixbG-DC2@HJ$>bfFU?M<{7;faQOjFf$c29*8KvYr9|2y$jh`3e*wL6p zP*-ueO0eF=$c~^O5Xfr;q@XQ@q_v?ZN{C5_>&ZxeaTrP9^+ss8_tm{zwb9oxhBG;Q zcqA_wjKARMeq3R0KfAM=j82b6Yd*9zX%1qHL#=1^NBDjHS&Z7tPo!GVXQj`@_lM8^ z_%-yullxzYX++X`r0$!`dYm2pXY7F9|3Oo;O}z%4v_II&ReuZg5jdQ zYWVZa44c>7RokGz^s$glOriwy(VSnlGG2zLKrl;q3pc9LBlAQspO>M7|1^05#Q_9) zQ7!AV?Z;D->tO+ka+)W=UGFGA-4YnGAMU84Y5^l27Dhf|O2$T+X1sPvdms&uMW&v9 z2U5(jtZGRVqLBhmStTAqY@U;)=m^lRl4Z0P$ePb`HcL&rRA5~8vZ{-I$}@{yv#ZmGH zkN;S?@*?Bik0)_3u~4p`F;mcC6@QT`52;M4i#Vew zTN+gZ^r72Rr|M9J(|IgXmo{bgU$5bW{aGkNsx)8A)4{@+)(BNhWKh9uWC5fNqayKg z5RfOEvKsO%uvauI5%{%@f!MBBLZ{Kt>KBsJu>tIaGFPh!HmF9fbYbQ^s44(PZg8h@ zxy~GhRKNJ$ZD(tu>~(^xLDfN{j(L1pAu3ryr;54QNKF-9qj5P@*H7U7&TGXMlR20! zZIFf>ruKk3SG_^QW~bix(z8C&-!^XQGoX-8d!$dlFdnuVlgg{_j<{}oc3R;;ol77N z4{^&Pa~WyMv)xc_l$5XXs%#NO3-`GNZL5cju6o_+u*}Hn+mCgQ!HSbqanF8grpfe? zbN~yjj=cV!g2)UEm2@{xU=08Rl*Pe*SEA!Em5}va*>~Cc{^zEgQQwhIPluDWBp^K_ngd12$L2_hx*@La@=yA(5GFO|9>86CH zG^#%z5#df-obvFdIzM@dX=@pJNPksyET}CL*hQY{G&N!9S|x-&Q1sx#5Jv0Vw}wv4 zyPk^#>pigB6@Ft{%Wn`&WAWhpT}SbXD#CjWC(nfZ6p1O~w$8GL(LhA{GX~a+s>7uf zdNNx72b&YYY1QKL_PNWmFamc~eAY3X0FOtni@eXY026T)j~!K04k?O5ilBOw60>CH zho==2pAWE19|UEUqvX|d$zPOEIdTiEBpT$%kjz4|UcBNTR_+NMGz1;_htI0^9bCuY zB#UiG!~z8@@d2sW<-y+2<4H$?hBBMgxBM%ivzdr5MASr}Qgh{rG9Pg6Fu9$#fFS z8JkNgoU0b2NlH~bFGuXTLMHw7P5ma`ABtdhz&^u#cIo84VW`rvlT)Y&=T*o(_iZb2 z$dK}tt#|8sR47ECr*m{YBy;^4*Wrj-C@&Z+V>bq2Ad2}_#T`Q03yS5Y{Rs6tvQam| z@Yj4j=i%P3(3l~Z)6ty)r2Kx088FbV{7@`n}8EfKA_sHG*+8 zdajc^>H)ob)%rsBb~?+{VdVkWYRH467gWe*xj+G8O{8-4wcQ{z%KLn^gIT!qt0Df= zW9IY2nxN;~#}c#&F7+)dD`drRCc>xid&6^;82*fpT%mKdLa`}%M*#SBk5C5NX*$c| zrl`hacI}=yj*kPGChIDvUYd!sKla&W*V4PYmv}uljK>YK+W`unEDa1(cGeYe5<%a((Pa z@9h5H)63s*<3GkUnX2A4(_is@s)nB8B)ImymiJaxGHiRGP=vK`MtKXT)U_;x|FnI# z=!jiO+)??hxO)>F>QB^-MDZ2}l3z%$B7R&IxaaShUy08C*7d15IxRp~>w64X29^_u zRdW=hPq*s(WpL+(C61-|;Qc_i+j7sZb~{L6fZIBjzR`E% z^ZKH!NZinjg`6A!+Oi#%7f`WxJQuY1hFbg9X_i#wxlpO3d|1+$H9x~xv+bo*zw5j3W$zdqufXiBC$AsjPzC{ZzD z(j3}oD|4yvMF)wA6o=oec|{g}`=5nO74sce?R#rM`aY%L{Ew}LH1Hil0h&2Fk!zY6 z+5CO_CyJt>`>v>p{x;WGv7n5vDnecOHNB|xv|k-H2eE;rr6p$Y`?4NQlQ5@lz66$L z96X^9a&=HHV=@k?n6(d&?S*io;-uNdBy5G>a^mc_&%W1w#wywC<^4n#gjTnOLxc%U z6nT{Ab>D6@))EeH)0DMNYsc{6mgcBbu5ICu!dg7aTE z>7)5DT`gOTV)fYA=XV(c>etxEFhv(;a1pFa&C{({8;_wht*nntej^Uv*FF?!TyrDPP3Qg$6auuAcWIhKf$F*Jpa2Lcxd3)Ts-B85X

    $r+_%ez$dAzT!V7##l!r5h=lpB&ss>9_&T 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 z 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 z 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 z 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�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≻l9CAA;A~lj?1m5WD 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�N8k0Yr6M>5j`Aup7`8r4AN0(VvOHi8 z=1n5{^f3pu30$as2AkgJNedl5ITewK5WWAR<>xQFs&yi7@FH;RFB>)jp z)nH&kWu7-$SE&gZqo~vk+u8Bir0;v!3e0!GO+yacNN%Zj%u1`Wa&a9V+U=MU$p*5E z)q)V^yh|uNDKlzG-~LSn3CRb|9Zuy2zE3Plc`yo2G+HFuNlF{yK%@{4;yC~&#$1oO zZ~OahAYhpIH!Va2-CF*DTBE0LKV*KCs)1|M_ty*7<#Q;@haXg0a^F3gfz$MpWy<_L zJV}4mu}!lhK(8S>Mw!Ry*V`YUoKL}=k24T(>1pLd&uC7m@>WB%9QCFTI0%ghaMcLle5GQ0z63ak)8BxS5 zI+Tk=M8BG{NcKKY9nlYO28>(VZ8(rns=I_EFcE9AJ9b!%n~-2Yx9)|+NZ&?x1c5YS z+f_--9_0b}I=)LjQ3~F+_WAh`*ZiHS)2mWa&VJ-j54ynGWmYS$7O8DPmR@Vc7j-{O z7b9FrG(S}I8%&rRQ{Z5i`_v%g!~~XS6(hjWC0L0YrPFawOtgE+%~#$qvz%(=MQAr@ zhn$(4P!on8g~#fo=WsoEtS3DLZX=k}1Nmfte`IsPyb7)CU=ePC=vGwZ=!7P%uYg4_$W!{+r4C@~sb-`Z1SRMkP-9e4Fq2 zZ+;xlf>jZk2;(G3Ltop(Hpn9Wf+Yy?gyUJq&6fGB+@P_7@-& z!~qHahK~445{!I%-U<9FcTWG;?2G?N68wda_^Nwf(RN?I{@sJ#p|atCtc3EpVHjr> zTLD|3SPG#;zywJIiw8k&8lg;quc(e8G-Ey2uu;1aFi|Lr($&@F)$jA`2aY2cv=i2l ziRWVvDX;O}z!ZAc8_-n8N?@TFz0i=}vd3l1QRbi542P?hlY%i^A1J(lM_<(l&0jp= zz|H6&e2&{acw%2x&wg2iAUdjigj?5OADl!xHh%=1m>W|Bk!wH}7fwIKJf5)J_N*!b zMka)Qx(A>~5Q2lGB`uEu23-Nh+k~H1Se`*L@aG_dxWb|LJ-~0)CN(vKeqLXWlEHEU zt-NHv*(d^2J+_~G?63EF-#9EsMF+`-p}=`LfiOkS{1LY(>(fb`zzeOV8eWcZJfm{@ zh#cawH1$d*=F*kk&>Ut9R7C^T1}7eu1SC>{MO56rQn}r0#xZzYwSE8NdX=Gcb{1UL zrQ+Aj9KVwsNq1AW4pOIXY6)jmJAwXcYd!Aq)1uoP%JY zyl!1!Hj0Ku{w|J5$hdk~aJ=7KX(tm7qN>14rh{T+8Gr#wPq>ebpjp@f6%ndIwq ztZ0k8NWm7k=V?w!)*B-yk02yDSnrF>Ms6V7L(WyQO`dM7s&=GF?wU%=tU^8FD%?{i zO6CezWW-gq4cbn&M+{24hYDJCD_TYV1xy@vRp`-h)fnW2+C1RA3`dd6MDqG4W=WL{sI^CVb8X5%NrK)w}@mD8sM#uAnt1fVx8iTru> zCe|E5k~bxUr?IBTk=}ovpO11jE%UVS)F??VX4NJ8Jl|9ci9hYoZ)%tyVXXHzN7iOkD5@_Jx8T7 z)$Kl=!R~5rvw3KSS>-FC>=${CCj(hQ()Yr%>@8O+tiz3PB6OV1^<%N-1moB30`_U7 zFrV)-RNgq+&fjK(@^5!pUS38JW`C&4)b<+Hw< zpmnl8q0{hx=*Aq;{&0m`a)oQl+`HTIlgeKU_lJH*o)u-ftPnKSU+yx4`xeN!EY2Uj z!{~3Hc9d;f!p;+hIhmcYhAboBWGlMU?s$2gAhGFyYIt#tSX(ts?iFEuf_W#tl`Hci zjTa#|E*%?tSGN*oeBO^{iAuhHmU}eIvd%}w3Z;Xy~V!MtExrZl3EFO z7XDg{mp{>)pZ^6N{p1IXXxDD^T^e3Civ}2@B^OUlQiZtY*>fnR>gMs=oxop z4&*X(r&NPs>P0xPtayO>hMC!3qBlEixPV}Xra{f7h4eDYigKtrSywOaH3%~EIrcVDH{CXq%+ZUBr`Q3GY z2*Z!I60=oR4**#J*FZ?Ej^@sjIx9gy-dq4V7aHJ#-hO7B$at6U=*LU>-w5>72C7~Ojt>{TJWJHW73fv19Tyu1kV&BL24sY-rZn56xZ5MVXRm6 z!wTztbDBW>rcr=z#NAa`1CsuaqsSuU8b^*s{%Ql7@Ef(!7)WeR_sMC&6@pU8rpc9+ zTA#k0>Q{;IHn20#3~=?6mVqe8I?0H8|6UK6-})OfIs(HM!ZfWNKB84(MXLgO?)asP z+d~9qhR=2fma#cy&W(rEc0F_m=E5-xuWp$?n(_CWvA>pDk#vI5QZ8m{)dJyf`t2R; zS9_XfSBp~z_ZJyG0!Jg&8X359B-q1S$33<6qn~u*VRL@C&a%x)a6p<)&`IV%ZZH+M zIlzIM7eUUDUiG)Ck}CjZMqDze^_Zi*&;u!!;9wRmL#$W<3UI}G57+Q` zOCFmFyf58u(1LvRfv2IM?5(oaAPSj6{JjF_60R$=Q{<|T%;Q=d9F zON&fn(j|?%tK3j;%%^|T@PCP|DzvDA$S(~)|0THo-nsDKNn#FvMFxKfd7`g$>%WwI z!j~Cm?I!{^W-J>dSg!3!LZZYfN8q4TRlTfuystmR-M9YNK})|9145nXW7hkeVxeFj zMXyT{r3@!cai9<)dFR2s42Q|{@W;n2T;6YrvJ(U#QZxlvwbQRNQRpq>6t3%0OruaR zps0aw-lg_q4CY{FPALs3pEM=q=`)o$70ND7<-?cwKRPHUvA``&$i zb>Jls%U6>78fnz~Bh!VO7C7s%xTFpS4dN8cWS$o;IJzRZ3r5e1YgnL+$!br)8YyQf zs~Z7|S>C$$j1gRHE;)!hA>Q;wW`Xf(#ii1$k5lvqVo_l;M`$F>9P7s-&DwY(##^s8#fpyRd^L#h(?W4bRj|a`aJR7>U}GT0Ou51xKYQ?M8r3 zeQm(qU3xYR$&Q#_8qrUgr~N zI2U7xxO~VC9ezlRf?_#(PX!8R0I{zy-LoPaWr&TX;3DzOqddD@SEDD=mlQ@AHcrx?&jXYGbTE|ZY;=ZEG6TWTd3343jcxs)F# zwgla{|H{4#WeYI+AjJ5+L)SW;hWQ**TC1#>WeONIw_P({bD6`HCu{hTy1 zJ}cM=Jh5{$hqeYyy#v5H(yrpE-t zBk+jR1`fw%6z%p&OkQ*0IVmq6#11U7tv`VV>aQ?=ie^ocFAtixcy`^c2%PY@EdktS zvjr~9A8;*4^PWd@AkJwy%vi^_z#oPOq*hB~eU+t}UkxkSq=xGR1$m^vBW8r7}?_R|Fyk3?>o4i0$QNlaM1HRu(|z?^uj56?`Lr(v1zPZT;WXBB7brlm5cQ;_5; zFf$AMjsc9-C!BsD4=^0fH>E2z7`rhfZMrO6i>M>f%9PlBGwQj9?bDVKcV~fm9P2qQ z@C{G)5Z^u)e{Oi5piC&I88di5wqhzHCl9eg65UYuEks+A&;^(Uf*-k^IO~AV$`Jof zOU@DQn#R=hEf-hMVlWI8(r@+}Y-J#tQkQaXg2R?mZak`?VV`UB$*pRrcW|7%PBKkw z-$U~PXclT%0_Qy`Wx~W(&2_N&Vlox&g8fm8J-Wu3*m60-{h4EjgB$yXC`R%XrB|Fk zD-i^Ej_8-8n)XSD`Gw_`ynjP4*2Kl=>AQA`S~{(!MWjkz5KVGcfKztRZBAS*KQfw^ zkP{@`A*1g{l|P|+>Jt7DHq6&eaCmyv27{CtF{N7~LfGLpY>}VGctY5O=(LwixNpk- zj$2vqA$+bDip~Fg2`{LFAIrmr_J`$S#g1Fr!^0~|?)Ew*?X)1X;XwC7IQn5qtQEa~ zX+r-zc%XTVK$>c>SM^QO!<#*3U>pdo?ps*Hh?D*e=mc??6Yto}e3t8xYbc`@dE`R@ z+bKIw1*bV3`p1pm_+BO_+Htb$1H5TF{}hZ| zYQA(#S`gzMy7p!d7o{+x>}Tft4aUW)nfT)e^p`48krt} zTbiFmtf?hlp5|b+&@nENrX5eIIvD-?b6IshY}>j z5S~8sBkHd0&RveXDDpuM@p?ca^(8jGVK;J5^$g_rG<*bP!u1F?#>Jy6)mt2SVC*fp z{Mdf9-d5U>JG0PUIKGSFi(>U`jC#9t5I3Te6-%G^(09#@8`0H!qGSm$24f&UkMf4# zNR%i8zL*R41>n4Rh*&idyLWact!U?z$B*uN%v`^5``l}1cql14-zA&utzs}JT7mZu>*HlaO z$N%jd{qGnM$A9L3G^n1rAS)q!Zp=EbIhskF_yGqHfX?PeE9d-#4nTrdl<02!3hA+K zl4z@5sTe_1SL}a$tsvvMrskRU%gmEyAIj5t7kJyo&6(UFN|UPnEj67vm(k&1a>(j( z*}+)%ymzJJ4LTig^)>WQ=as}&)+Q%k>8!n|BhdD30Y>e+9pZM)0F`TVRPDaAw;N&9 z&3+BwO*Gp~J-g-UJ!46ECnNo>aN|rT^K329DHVLxKwdTh6q3( z!_atjz6@Z-TTOY_j%GkMu3$*^YC9Z2AD4+$wK{Sb4hBwWX_`uqR+B4V7oCvK^Tu@tPpYB(IrLNcJpBh4T&L7srt zVlB#&nqgNeRBV3TE<(UG5n zIDknk3+4ismv6Vj3n#(~6Z`mrFbuXk+_A}J<)UJIJpva#h$&jo zWK^-V&18Hzw(e+dli0GGPcXeht$h}^YjW%V4h9GSY8Ih6uxLnk>UZI^3sLC*u%+hs zvzSmZva@7jFCS^j8s$r^b$*L&dtZANfjikPaT6BuyF$W+Dih3fn6Pd>BFo-+QNWVH zDKt`+#W5m1gYuC>kG(ATSk*j!muXDj>QYhwjq)JU`;Tb;Kp3nqa<$l`iUFL7UtwWr zcu)P1X zSoO#I4UL*c+kUHy;5Pmikn^MC%1bj>M4y)_u}g3d^v-By49UuGehm~e`#nuF5I-Dq z&x*L_unL1YV}^nFvnm)dJQOg5hKQ|7yQ`(Cdwf67-PrQbus-Plg9**Tckg%BIW?`& zY+VX$2aPKWpSa0sLOM0AQ+;wy`z`Vszpv02mKbX1A@@!mJlanu-*Z>qL+HFmo8uHc zA}rYZJlC6=aU*m&C^&dxxwpDO*GE1n?DaP0SCo*auMDUs$*zMZ{`)lI}N z8zId>7Z?k!oaut$&Ip*a4))_)d?k7SI{HPFKe%baW@nIn#dN@`okbSj9b{9%@MW^% z###d~j3ssB4Z+5ThL!U0VCQG;a7;(SGjU6hW1yfG`vz{9m_rEkk2_BJ_6DHL$MpME zv_tI9HRU-u`HRldnXOB0^i%s5MYF*u zr&A3F`Z!vq0~FW1h{RlLetIAg{DSB+wcScoPrtRrgF)jp#(_AfK_z}ku1nV=x#$v# z*&Tcl24!Ce#j6mE;5M|D4b{#_V8vO)BJ#)zSi4=YjYNQZ%E*q~p|RWv(TolFp)_U; z@Smo`teCpE4JxNH*Z3SD+cW${+-QHuR9{on-b@;82iTeXFT&n2xYlR=7EQ8}72CFL z+qP}nUa@W4Sg~!}wr%I;xA*zqv+t?8`+S%+`|VG&YQEk5^cdqAL#Ko8x7LjdA`bDk zR)+-SbV`&f`!8EK*TX@~flV4W!9Y=Tt}s;Ty+&Xk(M6C2tq`*xmv`V>j`FJKbSu;^ zhn5-tPd2^YhJ%)#jVB>d=quNaTIv*TrDAXAtTFTN{3TT#;DMMp$811*?>F5SQ z=L4!0Su#W3gg)hldiU|xD5JWdWMV^qA|Ve|yG$pr-wC4tAPF!j`qagtss^n%c&~xQ zW7e8?-c27cnq4sm3C%4{K%{2uVML1w8+Q&}LBy)DX+>+;d6dJWg`|fwEu==I5~7QP zFzsns^d;CDB{rj&sZIX6{vn}5C%(*XO%;5MMJwx}O9DqgF>=gT`PG{S8YiDtPJ$HA10mcq*lI^J()K2Wpqrv3a0ifQX zM?_Hl95MsPR4Q(*V|$RuMQBW3g9cfH#>lElTF7YLr5W|nyGI}})x0yfXRS??lUl2G zDZoPklR?D|YcgNb5B_{c>Kb#@U=t;8Q_#A_6+pZB+N^AO4Uv?WN5Qk@CzvGeFn`yX zH!IJmN6&lEU9KfX0f00{>mpTV7qEx%ro$f7Hz$~_+VwHm88VuL$C#qh$ICKTxfbDE z4rGB5B#I<~%AHiwGp>@GyM!Obmd#G9Hxa~&=eVUL{c-^EjaO@&nl}j&4SxkBQ&LKT zgkx2$CRa#Clu83j(>qthwYS~=A)~hM3%y*`I@Nr~={Zsvb+GnJ`>HP9e&fJ@gB$QP z9dBacw1!k3Lvr$J?PzJaFO_YM&HrpbWhBX%Y#J{KPt?T|RKD6;RUln4jazrME0LyH zRW|=1qibFUg(Bc2H8gJDEJv@1KaX%2V6Tp}nG08Dv=-Hf8V~l|uC8b)-nH~9*rkg$ z6RSzpixW~87Vh^tNkj2hqC1eEE>u7Dr<9RR=qiv-0cwmmL^y{_;7h zw4z=)YV8SbezB(`&w=EV4(2s>c^CdMH>eKH8m@%R%psuzA*Pi<_7@h+EUyR|&M`QE z7%32UF9yYDyjuv)qIew*AAjnD5J@|99D6%7F=KO-oJfbz3%WH~Dgk<)9U1RF*(%05 zunW}uPIDRw1puWS(={=}G`@~uAWq`39M}F;0#Bu`M-75D6~+XBWfar3^t&3opD3Gv z3t7$LjbWhRXK9RwTuFN=(<#zm>ENH;#F%mywD?OyYoIThusccsZetPb(mWn? zKyAo(WQC?^Z0{KKAl(F0UY~YjZ!DxHektG;vO;g z(k8eL@M98!??78|3CliK6ZGpc^bs7LFi(=sRfe;%)P0=qjSg#Pwwt>1Hod~=O>Thp zGqV;Tu`X=a6SUW#c(hr!-{5fF-weG3I3n-W2HK6ViQnvF4#>0*?_cn+hzps$!cM;b zcY*v5^cZLTB9{6CJ6ga30Q~r-02ta@)0*1anpzpt{tT^cZGOJ~6--MjWo~2nZ`}WX zKu97PTO;HDg9K3BRQyS<`QD7J5m$pNGeD9HB*QoB6BUkw75r2b%lZEL zp!`FB;02~P8&e?m5;tJ2<1;mf&6`{^F$Zz3z_sx>Zx<8t-l1iD{tFl8K8)C_S0UV4 zSHkT?6cwS;ooJUHSKdu6Ay-07at7EdxJf${-P~G}Zvc3sqnKR3c$8uoN^qRoDA7x2 z98zjP*^#l$CjA_pT4Jx*d?s7~ zh+<+M2&EwCNF{N2hNXs$y83u*F{Mqp1WD0>lg_#XYeJ!y17EFwvLb{@b(vKnEaKqqOTG9C5?c(xZm4 zxFXd_8d(B0>&S#?;1KdHZQ5XFx%P6ae#}C4XpJU%iJis}TrrUsu^~1l!`lq4A<#U6 z6T0k;l1T6(zsip#f06i>a6jHTOD$giA9BKozaYU|AT0(55v!GHlxC+!$pv%L`)f_* z#_F;5$jc|jW^5AZ_o)f=kRGbV>0MhuS&K=zkh=IeIEN@TD z&VB)nAxnuJC`Fp3=^`4(iSx=A3am_zr`C+Nm42X{;Y+VP<3UJF+OiiI6*!1ZYT9JlVD$Y!Ni;5@mgrP_B9sRm0GSY4&w(a@!#$X4)$p|u8Z9VZ|UzavRk*hxEr=EFYk@IM0q`vTy~+KFZ-6?t0W&j z|M=ZlzFc>?y}PC%oNoJsuqZUgz2(%b1bsvw5v_$CiRZKbfuRo-BnZW^hX~kX5-H?aajpi^}Gfie|6+w4_lNX|{R#d~TOm&?b zfPmQ5{VV64z9`!1PIB0m^*JInkZ4MggJvf%wXde-$DvB0pU~i*>~Ye4PP-=&`^d5H zkQ>}Z5ylY~)NRztM+mk)-gRaam|Df$;1LMBY0IEpP@AuU8>^CH7ocOn6$NwvD>_V) zjhMzzORKlCB|Kvf17+|L;wlW|3Y;_q^*nj#y=!jcqh}8IXQ)XN)vSckOsq+I%Ap~uZ!gG1VZ4r=3vRU-|d`A`9KKu?Z+*2(W8`X--roMfFW43`# zjbw6z`b!^S_x_EgQ+GK8hurSeam)Q~@qV=ukM1b8-*gx1$H;I1XjMgPx9e%IuR7|B zuSd$x+gV>DGl(du1o{_Lb0vE;;!aFP#Mi#`9-DXQFQ%NJ^ZyX{{DX>&j^(2p!~Hl5 z(g6UF{nt(ZU(G<~Hm3hB4+k~Cy)aeNzPHQ@Ylrq%>MB zs-eCiwi9;1(YbEC(X#__NAP-JJ8uYIYEgZFzK??VUtH0b`hCT2au}%mN{HMvf=SwV z2n89neJT1K+*JH?#BVa8sBauSUW0(U6Z4R>%R_W~|DGOplbwH8hkW~e7rA!lrEJfQ zU!NR)pY1#&XeEQg`D?)Qlh6=I&=DiD-r|A887YW%Jd{u+c;wG?{`OE8pp9ZMCy<;4 zo})@IHex5f6)z0pv!qHAo1Q2~f3#CruOPW!8yO8`$(Wxf2a=#lnq%k}XUvt}z3_Rq#9b&zt1&K9zfKuN0* z|0E6`+EXIo7Q~w~H%p&B9rZ76buyX3$D1rT4NTvtATT|!@W&@*!v&&#`Zx`UFDNmA z9R6Fw4WE{(m%D+LR^#7(d?T*}?pI|$f`0V-T{}w#$~9C*d#!_XX7^&iKq;x&vL2l} z@2Ei>NVKANFLB#|=zX$h!xAx>8ihI>LV>O!ph= zTk6t*2iVJ46C~@I28&hrZt#!2w<+;@K$0d5bz(w#I`bInWHkf}n4L(5{3BBQH8qG~ zT9gtHjS^!0C!VH@3Lqe^g8yKub_q!WVe_H+D->si1&e=~RY1BZ!5_X6(vrVBiMUIq7fd@%M+=(%-h_VN5 ziQ>KnOU}e)8bM7zjU!BjdKGE9EU{T7Ck>F|5g^bd!)q$K)FY zS0+9xvzE-c2S-kyLp@am@m!hs!(2_#66i&Q-SdF-#fRDfNxydENG7=v9h9abZSs61 z$@vWJ;~-5Cf8$0pqF;qo6Jegkn<8JCPHTFjiTnggLVT3?Wns3Mtm(okp@+Z8(UdT8 zXqE?+Iho_=AIN%}0_ooRGFP@}cXRzbXOQdVbZFbk4-KS>42U4j!geDIH~Su^Ni9#Q1m6pN5=oCAqAlZAwZ+cWX`TLjD2 zh7;R{M=>kK!$kQU{VW5r1o>LoRtLuV(joc_wV^-$aI`1k5KSPoWAo_HrX+$zL+f`Q zdul9MqfrXfe?`|htari(4H^W;>fdgiXp++xW(Iyg8A@^Le~F9~!x6ZOh9Co z{&ljD=n_A~4YM|E&avZNVVyzmDO90-Nx@}Re=RqZ`=>AYOr4{c*kM#ri}|o7yN@2P zx-4w~o{As2pwruuZr@Kq?+a^QCaH^@0T03ggd*5!KWtS!__E!)u}|@^Qz5$KJ}nSs z(LBzY>|ucN6h7<)c}}9bhos34m3T%utCXyXubM9$m}sszR@sPI#&>Z#I`yyYQi3JX zTy<=tQ5FzuKQ+Q>u19ss$nQ2AB{9+qVFt1N2xI4={UJ8%!}hXbWJ9k%G#J<#e=?(2 zqVd*T%IOLwBB;c1D`xgx4D`aHnkZYL>{HeBb8=3i98iA89Y!1q3|2zp2W z4AUxzMUAf!`i+c$uZi>m=cPuViR?h#8vW)bMzD^=Ak{=^hq-fz)gkM5Z^utS2oV;K z4Y4Y2fUsH=dp=qUq>JAUZl%tq!)f7NdhTe~wTFm3b?7@%+n3Ub5yxTTRYM6;9uYN2 z8axy%N(W%Muw3Wp#8>*X3YnoNnv_z4$#9V+%4(`iY%e5Uu@ndZe>!`Zz5?rK`~#Li)*e{32R(@ z@3hs6b;+fd$Jk+n8DO^2hT#}fM)z5oAeqtsK;oHd#cRWi9A#7z7bgY^8L88L+Sq1G z)yVEckuh(w5<+&6s&{WNLvm=~GEaZlxFypd&GJ^cM#mS~Hw zz7S1JJZ&0P^lGixT5Tz<>8%?z3gd_XnQ2~Py<2cS+^OfUt64-rlRqu9ywI@81|l9* zU-tc0>P|CR-clph8^0sQQ{+-ulUx0ul3O}5iV4|zvE z!aYiOYq!=HHgReo|N779S*1hU#n%CM?ca_o-@?qT+RbRKO(g*^$chG?7?_SGV zCqO2!mxo6xzevh1i}bUJU5Rhhkf)hpJU%^E8f)M!kjY*e!(*<>HSeptd2M0lj9GI& z9H1~Stn`uonslx{B^^V$y({w&*1in6RNyK#UsCxDOv%zG`|@VHa`x(1%`|hQ_~tZ< z?<92(m~@a9o=}YHVvK6?;hXVfx3Xi1#s2kK$EBZ<#f<6o&h4EH$qfx+L1mb{A>D#A z&e}Byxf9GlwL_k)nw;5z04Dr|_)(k4%Q*uQMys0y^Ke->*@pFT_qu$uC)B1GKo3 zw-gK|Xo#RU6IlwD2qa{R<)j+rBEHEuq5cG}B#{Ev3%L`_vInhl&#fxS~MZucg zegDQsjX6)JC+t@1$|m{&fxs`PdN_MVI~M|0!6mFQhL+3yjU%>Z_9^RVN6zuqNqp8{ z1J4X_-UjLj9oe-+4}uZ*MrxKRQ2xO2J3%D;!HWX@{-bu?1x791A`Ba62gGDoM zqGG}C<;4A)PosE&UrwWTx{XF^5u-Ir{0x;<=}>)mKX4>wP*n~3GNAs6Y$DY2w|v5` z&+(`o%$BJ?x=;XDi>o7mH&uSjkDKjYe~r(NS0*gx-hB=HyYn$&jd|s}!VVSH=}<54 z3bx2tv|e+?dpsL@3qT$~HXp`=KPQz-`v(E{<{|2Fo+nNS@X>a|tX{_+tag3cRl*v!`1aHI#8P_ z-0(d)S2HBzGMgm-R(LYT#*~ANDSNYbCZ;q*z_9vMKsH_OC!cz^+lEG}5? zydHNqe)q19zIfUt{t7)mD-Atf2le?zB}hLXKo-lvQ-g7mQ{N?f_Wb|Fq`n z-HF~_b7|2{5D{eOxuZhA4s6w6{>^LJax0y@js|_>_VXDfZOrm>VUj+3Y_AR8{3Ti1 zImh*o{S-ToknDdQvgU>Jae2?xQ`LoVP5@>L7;~di31J&xvU|CMxCK}d=qe!A0$JUM zdgb$h4S(gQzpE46$7WH7z@e9|46+cmj&s-~+IlH(&0C9_iu^ObV*Ao@p6tQ- zeWSA>c>le(Yu?6bS`lRMJzS%CZU=!UM1wb+=9SB72LlNw0B1LX3r`h)vII^B_Gkh_ zr9s=w`VX=-JY;JQvUU2i_r@HLjXA1Ux+aE@N5DE3D_bRe7j#yiYmL7T>RaHo{=ElKUta=L1W)2-*yf}BfWW|k7HAG@hFst}HvMJt zj>QYm6ix8vV8Z;z0TXX)OpaG%&If_$j%3U8;c-;YCNrEH1iTvtyxVX17jl9dDuNqE zp&fRi9n{bsT6jO*?=<)q2(QHph~bH9ydX0+U2Ue|Mqt!hqU?dB_#I2T&_!r)NRLx6 zVtWv>MPB=I^XeYn`m5`r!J(7apsh#R8|WsV1lJht7M=dPF_6y}BLKp;pq5~J>;Yz= zyZ;Q3`3I^vg3JyK{}BQK|8QCV9iRTUV({M?7(e1zegj8i8>fFI%9z_a{13sEr7$bA zPKU%DTnSzj(3fk~;Ax0KXP(yqK;ds=m5^`jNxsJ|T{$q)NIWcjA?UWkdl5uRg!2Nx z17VNtJlAlU*B5`epWs-1{W$sAe~JBvMrWBm0vWf0X9>+BL;&1#U}i0HIw686F>I{g zk6GZb)9gI5mva`~R4p=SZ+o}^pS5IE4xt|FoGH#U4E~A>pIb9D9uO)@jNC@XNFg~h zRVVXIKGiZy5(fdxTsR|LyRVn1#=Upzhn1MZB5Mh zBc5h8vWb8IG7fb^N=!t`J9n7mP&ZJr=v8#(xtfJyuU?{vrmV?!1BJt~r=O$0H$m}! z)?~#qKTH10R7E+BQ@`I7u~r<#4M#|Kj6|8 z+vS&wHo2FEWg$Q{+{{|3-5+)V8?NELfo|C|3WN1=pU=Zjb$87KOkYoKs(kTn(^{p| zl-qm*ZIpYaWpH-TH^4j;9iQ}m%C%W2od2LJ|Dhq4#JYn^evqispU;2qV&r#l(0Bir zF7$u?)2K*(h(0zQ7m*x< z0|Y2BM5wZuGKDsM+?1HD|INGn^Iiu*=T80O4srS;aQpB4?7w0d{#X2R&_BKP{77HL z&6iCPO1a3icm}gNiPZing-Jr-B*FP4)^9uOPUz!%b?X;4VV|-csczu^Zmee<*O;%% zGhbtOJmTDbonmMF{5&3(1;BJG7U=zinjvA0QGq=;Ft7L&bR=Z}GnMUA98;-7WZ6$qxFP@6ENNqZ`Wvomp?jOev9*B12JE)hQ zN3s1qti9XhzDzK!HBaBNxLZyBoX5C}n~w7ftzo%|dILMcGy5ig5Ix!$ynp%GeVfuI zzJ=)exeC9kz3Fz~)+%P?|$O_D-Z*r}02(yOg zvr8H844}p2)%sRmJMeadG+*FkjywE;Jr`Nub?$r*Am0l`>86uDbiwm{$1@^~l(X16 zMrzX?jJ+gsOC@8`Wn(aCn`IWNVaCg?t{d2_Um%zmIQoi$zty2JnwYqT5TV_vDBZ^B zaN{Jhbqai>GVnLYNB0N{hAIrzx-wJ8-t{!Peh`*e7FyCFhECtdJ0W1f4kBCEa#Ak> zV>Pm*f?#Gwlwgd`J|=A&WU7<|=t5S^lE1;|cRKi%ko0c=X%df=YKNQ#Ip(PSRG-CQ z0g2&SaJ@tjs!97^w86GbZJ-LW6R3+9C@_e5u8Vd3j)dG|tM9-tMy9;m_^h-&@Z z6A8?sJj9`5^S3-h0u ze`Cc-N|K5{#wA}QM1fQh9puCWu<(LzR6Dth@tU`I{|6?-V3*QF2T)dWvHq&|*3EDnKYG5f*$%)K+?EaxA zd?qr{q0p!4)N&0eFj2W;vr5rwGYXHAW~@4U#HO?~2l#c1olOl}Qk*Q$Q^DCX6UN*#Wt=VnTyh;U26mfR! z=@zY(D4R}7+i9Ut)B6cZ`!O}AH>VgUI>`uwXF9jXTffS)&qY~YC5YitTfbY! z`4=^8zgU)SS2fM0{ze_)m;lJDSb-2p&T{zEcZoaH%(*Q7?_ZN&qr@Pwu$Ebpo zS?1Y|j-Vd1VKf}BA;&o30OocnK_c+((ef^hFkA3qf`g~Q7fYDkM4FOKr1p{-&!I~q;TCk#W_^Ya z84~FhZujRt)WVuADbL;RO_XS$3kIyRJ@UdQpN08bc0S`r&{NncH2l?IIE9IaO-+ICRM!f){g1Yve-_%~#Y*7F&mx2U>9J<}uQbfR&VZka#>qk7&`HGH>c^1n zKVtHVR4sp+s?mI8;;&dnlXV2mAgzOt94Kp%592j7D9kQFYM3QJoD*nH=cHLkG9-|N z1|fC60J{Is`pls7`!h!8I1T0O;NITxdrx1vWE5(`XHI0Edu|=O{}uOnJ@17D5V46^-$8wIJrv`EUsUoz>W zH9Y}3evLO}9X`k0wmc-&t{%J?umo}-yu5LQD5HR|qne_04bObk=L$V3VZizw=n zwWiB*n9O;4@d1=FZM;zT`C!YW4w`C2Ieo7k(VEeBzjT-}n%DeWcwbftN>Y#oenn!+ zL8S<(wxfs45`%;Kq38RIX=VAqV`#)xrf`&?DglkWlp`Xhl1(DZVl;1XR~wj4J zX0^0+QF*W3MR#7i{_lchetJY%JZHspk&kr7AtsgDc+P_(G>=PpLMU$M6hz2Cy;A!|yJm)KRR&9vK9#C1PL8dF4P4;IP1 zT410EkH$>JQl8MvoaG7qFChUeTS>Hm*uY<*p)C~pzpg{wRQup3?sm=Lmx;87Jqc{Y z+)xk^elp?+coOXpal>BJ`bgPGcNI7CpDqwIz;kw!1E*iMxibeiaBa_7Z%+%+K*@ zbDQl=z=D#UnF{!9DDiTA0yQs0a(beFF^?wXKPRfPnYk!x<^IA}9wfrup&@}OWyklFCqnK>O`WU~Nr-b1V6dN3ch z*Kj`%b>Lqc>ntE-Q5DXhbfEr>@y!qDn zJPQ3ZzcJR)sjghVz7`901w%lk;Ze(6!>tzx*X{g2B53$&tw}G9PcXoHp_-|J| z$D3oIew-2)^kG*`NNk0{)~=2U@uxHT84&xMYc2=OoK3$p#qLLQX7q#7;SvHz(gQXk za#vJQ4*)@(dqkk)A)EZI>@jO@tJh3xW4~ZFv{p`5xVe{6FvW+ioU@<1^0SKI7pgD_!n%SAG1g+ET!Dv@w+puSS z{2``^eMDS8JTF@Lpi5j|Y5IUO%$_WOs1531+O~sj@;>udCq*!?hBDhz6I3K+pt~a@ z*}MI{nVx6eaX&lP&-cH(-^fsMzpd4wAisS7j}{njYg>rfpW8tw)c-9y_1~w1<3Cm# z=Enake!Wpu+!0e4>C1!2vT~NKE^CL%MI|ti=#%D^qkun1gz^pLgt-fX0$ ziIG9H7Q16^DTLkb0KQTj0g18_jh2F3CK;KG-HxqX2ToKY<~XQQ(N*@<^7i}I`Sqh% z%=haTD1fS-(5#;&1P6V^4#$zv#JCz)tU@b-ZvY{EjNaPmWWCnu` zd8ncKkS4>H30UifVd(Vsl1qb9FXO}l#Pbk(KBdUiT!()@x{T7_V%6gz(vd>v0=*v& zS`!NO*qJkDY}IAzfE?q|X@UMxN6>-I>W^j@w`~^q6xARAz z;u8nz0CWT`%ANXErGw0RIO$NzwC(@-oVo}vWN5$Ik)l*kaT(SJzp<25||GKOlk+oVdYp)%%I^uWU>D4%$ z6bWW8i!THaVcnqXCu8V^nF&A9nG*7PnStFPB9CW}0tXn=1qQA{yufIedT^?ZX10mi z71p+~8^Ml+g$hk$Vy86b@cYt;i)5wC5-o#Pn|ciw;WT5grQDsZS#K6N5?a6(j*Tw)?=$nhn1c%3k7>(R@s z0#3{+%rX~`wR`kPNu=v&pRWO0HRpG@XuM=!GbQ*CEv)o%>p4kqNC^5+!lY$$S8O3C zu)P;c_a)rr<7nkMd-_!zcfW{-O(oBiR6uK3KN?fd-%_mWK#R^vG!Fc;%Yj+mjxpu0%_F$v>C#M7~?mPyTQzA^U5PW;SWE-~3F}qE$a^XeR)~-e~&wLTI;AjFW z1o!LSrNi+a>^wq}vE+7rPWRv_M_#a9v!Gu@mz5H>As7kOcApo^r$+6*Kzs7%{UXpF(plX@$3v z;u!W0Pgt#}i5?P(9u#EYZNe4Dk}8KCU2>8R7ku&7(y<>&l|F>=-H4;SU%c^7QJ@kn zI#q#&P>1mfz=;o}`E$C`W%!Y(m`Ng9i6Wj=Zr?lt<{cYb60Q@JfQL$#)`ZGEJ_^q3 zQm-|604C{9v~SCHac@2v*F6}-YQ4Z)y^?Wc*nJo}(9Lt-VSA)H7hfR%U-*P+rM^n* z2R@*K;jxB2pEPK zqlhmpJy1gClCLS#lk}U)eah^OZQpR!3Klp|>^}C`$w=P98n%R5ZCY(^#clD=L(^2+ zzF@M1rkM2XV{SDDTV}+5Ke<8w<=Go+$_nAv6>g|3Q{|x1EL);Lzg}QxzOEr7{7)?2#comiaXUXkfI=U)Fp9M|3@>CtEQX=mhX{S+fn_plq zaXQ*{gPuH|6ea-v9uIr^si5TrnOtjg7m7`ZYRO*veAQK1*LenBOFY zsnS5Y7pDJ7`8tqiV_e|WnGdbbx^XOQ*( zdQq_FUMrz9c9el$!1x%zA!H#*g%KsI8gJ%{jhiQ;#Z%xiPqGP!H=B(8ot*a?bvy8T5X)w6ok2Ljx*%2T40 z0tooI$n`w_ZJ)(MQyadPX)6)Q>F^g|5@>94{FrTiMrW4Gp~LNXiE2{GMNNkuX|99f z{0^pI#9W#(t*$JQiDJn-V@XHiDY7iHsGLju;|V#fbtC~(Hj+i+Zz@{j;$!^wg^v2H zbs#iHq7$hIs@ZVqHaH2&#kldBERg#k8IP#+;B5mWlQ3!1D(}&HU@4jNL@6O#mf82` zSW}3+@)g^mow8}W#3%!W*-%vQk=<&eGLf$;dFoU(>GO;dh^{^hM*3?|sdf1mrN*+# zr|QGV&={==wcs{!6~0?#JWg+{VGvow{gY{mPI2XZW_@=jt~8BKg)ja+v{hPqS3jou zqIuebcqdWZV|)?nN@kyJ4`09xxD0W4$*m07wa6__wdgI;@B9-1S0wI}h&^v9Ff{f; zFGsivTKY+KQnMIu`*l=7C#{izrFvq8IU2T7kPxZR?fPX!OD?%BhE{UgSjlk0~> z#c>l6ok)loL>^V+W%2^w)tmPPYJ+mwwJoNfhIF_zEjq?KXbJ|4MPcg=&si|h11`?sB+29Q zJ~&fMRwHMo5PbWo!qQ&b`sNL9aD)l0!hw!bnszk!nxADM{l>MhdbM>l~W*!O=#p#MV)okB^ey+iyk zB!mC};{O#PQ!qAlw$gX_e{)g(%@7G0+c+Bkf9L*Z3k7#mT15W3&N!Tu!V&VvkN(XM zjh{v&r6z<4gb`v*1k52G09VcvEQ*#EH04jVBvG-j)}~su21jr372Dk<`MrCK-Ei&U1P^#AtU}=YO!;9sQyIW=oRw6v~Ofle=P(Uw)(k>mV z?9D_1L-t;k?E6h*xK7vmq1?Cc0z`+EY(d+Xw^{z+H&7w+P&=}B0l54oWjU=rG;IdFwKq611L^9g*J*m zy5~*Y=;C{g?quzn(4FXrbAM#WeJo}NCMDY?uIIfvVyXkg(VDQWc}cU#;~3cU1$HAN zB%?~Oc%eumh*PdKsk4Z9bZ8tw$1Q7%x}GPluD^dz5-V7=gd)wlOa8{xfRPs2%t}oT zVy)I{j?WB*R0RX8YI=po7MF{Qt}k(# z=3>=2wOAjR+{lJhlciE0my$vbe$5#!sXNhLPm)}0a%?!{3}oN%$`q3R1Y)b@Jr zh8-f{+wwQTmn3jJ_rAobpM8W%C!mO!-MK6MWJJM6n<`88| zh7Dygl1V3e`_OASYE^5~S7#3hdX%%q?1~&}`(j4%%d1NfQ_aW9gE0olyKFV|Ekk0& z?zjc#W%6On$Q|0@p5e+T5@x1kpQ2Voi6esFWawrK4*e;z_0VH+xpPk{et$4xEL*iU zH&if$Vv=Grx2dDFhJq9&DhTOd(cVnwWY)4#Ju+P3UDIycjuuB3vUsw$0>e~9N!jRuwNOhY}P+En*pB1sm| z5Q6v)o&zysLTV<2wWKc>&qEeid-O+Y-9MnWig@rxGi5|}lfQ6oDc!(!5ZGO@vFT*p zMjttTDe{A^fv7}-Rz51J!s&N@L)wzPu)4$~Ed1t@{KN(M9t2ez#Z|sRsYX&`k+IMp zb*-0issGhkwWDz4NX<%a<6@BFUr{TG#{h$MszZh-tf%5`OXmU0w$2Cg5u8Wuh_%fv z93w;O6?x3x=S4pMtMQm)$ zx}geETNAROds&}ezDb0uO~BYABH(KZHwLx1({ggj(#(~nR&m~0aQU#oRZLAOTaFl+ zF((URHf}e?^mF$5T><+Y;k4rwtZ_6Jb0HH&Cu@Gv|=W#*z9C(3_}e^fGnY`Iz+vjk)S1xwhKl^yB*j~x!GPunFjjtWnY{H%07G0&Xum#u$aKD?z|0FKicolekg2#L<%FUu z?lGIj`24*UjG%{=YL?Rc2)$(|&u0p+BdalX`bJ*vJDyhF5kHnI9Kk~V^Of9*eJG%m2ZbFR z4o=IYpHNBCIv0OTS#m}iK_?c!at7-OcjRaxVOrRJ*bTju91h_(}QG+rtWp>EL7G!h98SwNxShX|A;Zn2Xw?ir&_f6$A!QQ=^ z$vwN;LH+i@U9CMmwpADn(V|dvHq}|Kc025hW^=d_jNdw|QcqX|=I=Q|n`>~bI+OSl zXfR0>E{3N>cLN$y$;J61>BZ-^ZGOy74*6=nKuJdR(k%l}A>>p!UFCXJV;cN7KKZ2% z42POfpAdo5HwSO}=p9_Ni|1a*hEb!g-lI_Wbg{Gr>=d(72QY}MfBq5tDU_~U_NVCMl|Q>HI^K23BN z$#p1EoAZ-Lb||lnG6oNrw+Qj>!&?7(gf>FioyyYQ`8^i6m~!278uQz zquM^|;i!Tgm^|Z3yOh0smbpm`%8kY*yWQHpBCDTi=Sn-y|A(<}j*h(D)@;PKZFg+j zwr!goS8Ut1osMnW>DWof$<%l6IcLs2Yv!9->$g^_l9hj|UhMts2M!64%NC}Xz-$AP zW}fWbHC^g2ovj|i;WwHiYU{+)&%SX!%2?ig!f@yuZDzkNtNVL8q?GNMzR&;Ga>$r8 zZE2Xy8Mt80(3xW0HlS`ku)fP`HiQPxsPa6Z+o*bclurj=R6$bV>UrN;fbzt6x+fnz zVgEWG${A=Gqj@@A*d6`irm!vUgZ*H2O+QtzUI-Nud;N0bwQ1b_`5(lqQR8xX6d>8d z4*dT$g9aKT8M!z*0!ej$<<$S*N2nb;Wj!m6YRVpqz@`Y}*3(9rHn(c4f zurGzKVDcF;uz^}0d8$;IL`*gjVR8y=b-#&fTHv6Xrr8LeInRc~kVlD^+^UXAg_
    0s=_E)GLxNTK+lo~jPArPdh8wMTz{p=)@(+hI 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
    6)oa=2Gl+Mq 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

    gIWR)3^#8 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

    ^`V}j=^EwMP+h|4w^A@r8*yu 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

    It is generally safe for applications to depend on beta APIs, at - * the cost of some extra work during upgrades. However it is generally - * inadvisable for libraries (which get included on users' CLASSPATHs, - * outside the library developers' control) to do so. - * - * - * @author Kevin Bourrillion - */ -@Retention(RetentionPolicy.CLASS) -@Target({ - ElementType.ANNOTATION_TYPE, - ElementType.CONSTRUCTOR, - ElementType.FIELD, - ElementType.METHOD, - ElementType.TYPE}) -@Documented -@GwtCompatible -public @interface Beta {} diff --git a/src/com/google/common/annotations/GwtCompatible.java b/src/com/google/common/annotations/GwtCompatible.java deleted file mode 100644 index e8d62c0a..00000000 --- a/src/com/google/common/annotations/GwtCompatible.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (C) 2009 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.annotations; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * The presence of this annotation on a type indicates that the type may be - * used with the - * Google Web Toolkit (GWT). - * When applied to a method, the return type of the method is GWT compatible. - * It's useful to indicate that an instance created by factory methods has a GWT - * serializable type. In the following example, - * - *

    - * {@literal @}GwtCompatible
    - * class Lists {
    - *   ...
    - *   {@literal @}GwtCompatible(serializable = true)
    - *   static <E> List<E> newArrayList(E... elements) {
    - *     ...
    - *   }
    - * }
    - * 
    - * The return value of {@code Lists.newArrayList(E[])} has GWT - * serializable type. It is also useful in specifying contracts of interface - * methods. In the following example, - * - *
    - * {@literal @}GwtCompatible
    - * interface ListFactory {
    - *   ...
    - *   {@literal @}GwtCompatible(serializable = true)
    - *   <E> List<E> newArrayList(E... elements);
    - * }
    - * 
    - * The {@code newArrayList(E[])} method of all implementations of {@code - * ListFactory} is expected to return a value with a GWT serializable type. - * - *

    Note that a {@code GwtCompatible} type may have some {@link - * GwtIncompatible} methods. - * - * @author Charles Fry - * @author Hayward Chan - */ -@Retention(RetentionPolicy.CLASS) -@Target({ ElementType.TYPE, ElementType.METHOD }) -@Documented -@GwtCompatible -public @interface GwtCompatible { - - /** - * When {@code true}, the annotated type or the type of the method return - * value is GWT serializable. - * - * @see - * Documentation about GWT serialization - */ - boolean serializable() default false; - - /** - * When {@code true}, the annotated type is emulated in GWT. The emulated - * source (also known as super-source) is different from the implementation - * used by the JVM. - * - * @see - * Documentation about GWT emulated source - */ - boolean emulated() default false; -} diff --git a/src/com/google/common/annotations/GwtIncompatible.java b/src/com/google/common/annotations/GwtIncompatible.java deleted file mode 100644 index a56d746c..00000000 --- a/src/com/google/common/annotations/GwtIncompatible.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2009 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.annotations; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * The presence of this annotation on a method indicates that the method may - * not be used with the - * Google Web Toolkit (GWT), - * even though its type is annotated as {@link GwtCompatible} and accessible in - * GWT. They can cause GWT compilation errors or simply unexpected exceptions - * when used in GWT. - * - *

    Note that this annotation should only be applied to methods, fields, or - * inner classes of types which are annotated as {@link GwtCompatible}. - * - * @author Charles Fry - */ -@Retention(RetentionPolicy.CLASS) -@Target({ - ElementType.TYPE, ElementType.METHOD, - ElementType.CONSTRUCTOR, ElementType.FIELD }) -@Documented -@GwtCompatible -public @interface GwtIncompatible { - /** - * Describes why the annotated element is incompatible with GWT. Since this is - * generally due to a dependence on a type/method which GWT doesn't support, - * it is sufficient to simply reference the unsupported type/method. E.g. - * "Class.isInstance". - */ - String value(); -} diff --git a/src/com/google/common/annotations/VisibleForTesting.java b/src/com/google/common/annotations/VisibleForTesting.java deleted file mode 100644 index 6f867db3..00000000 --- a/src/com/google/common/annotations/VisibleForTesting.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (C) 2006 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.annotations; - -/** - * Annotates a program element that exists, or is more widely visible than - * otherwise necessary, only for use in test code. - * - * @author Johannes Henkel - */ -@GwtCompatible -public @interface VisibleForTesting { -} diff --git a/src/com/google/common/base/Absent.java b/src/com/google/common/base/Absent.java deleted file mode 100644 index 909c4351..00000000 --- a/src/com/google/common/base/Absent.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.annotations.GwtCompatible; - -import java.util.Collections; -import java.util.Set; - -import javax.annotation.Nullable; - -/** - * Implementation of an {@link Optional} not containing a reference. - */ -@GwtCompatible -final class Absent extends Optional { - static final Absent INSTANCE = new Absent(); - - - @Override - public boolean isPresent() { - return false; - } - - - @Override - public Object get() { - throw new IllegalStateException("value is absent"); - } - - - @Override - public Object or(Object defaultValue) { - return checkNotNull(defaultValue, "use orNull() instead of or(null)"); - } - - - @Override - @SuppressWarnings("unchecked") // safe covariant cast - public Optional or(Optional secondChoice) { - return (Optional) checkNotNull(secondChoice); - } - - - @Override - public Object or(Supplier supplier) { - return checkNotNull(supplier.get(), - "use orNull() instead of a Supplier that returns null"); - } - - - @Override - @Nullable public Object orNull() { - return null; - } - - - @Override - public Set asSet() { - return Collections.emptySet(); - } - - - @Override - public Optional transform(Function function) { - checkNotNull(function); - return Optional.absent(); - } - - - @Override - public boolean equals(@Nullable Object object) { - return object == this; - } - - - @Override - public int hashCode() { - return 0x598df91c; - } - - - @Override - public String toString() { - return "Optional.absent()"; - } - - private Object readResolve() { - return INSTANCE; - } - - private static final long serialVersionUID = 0; -} diff --git a/src/com/google/common/base/AbstractIterator.java b/src/com/google/common/base/AbstractIterator.java deleted file mode 100644 index c0e74747..00000000 --- a/src/com/google/common/base/AbstractIterator.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import static com.google.common.base.Preconditions.checkState; - -import com.google.common.annotations.GwtCompatible; - -import java.util.Iterator; -import java.util.NoSuchElementException; - -/** - * Note this class is a copy of - * {@link com.google.common.collect.AbstractIterator} (for dependency reasons). - */ -@GwtCompatible -abstract class AbstractIterator implements Iterator { - private State state = State.NOT_READY; - - protected AbstractIterator() {} - - private enum State { - READY, NOT_READY, DONE, FAILED, - } - - private T next; - - protected abstract T computeNext(); - - protected final T endOfData() { - state = State.DONE; - return null; - } - - public final boolean hasNext() { - checkState(state != State.FAILED); - switch (state) { - case DONE: - return false; - case READY: - return true; - default: - } - return tryToComputeNext(); - } - - private boolean tryToComputeNext() { - state = State.FAILED; // temporary pessimism - next = computeNext(); - if (state != State.DONE) { - state = State.READY; - return true; - } - return false; - } - - public final T next() { - if (!hasNext()) { - throw new NoSuchElementException(); - } - state = State.NOT_READY; - return next; - } - - public final void remove() { - throw new UnsupportedOperationException(); - } -} diff --git a/src/com/google/common/base/Ascii.java b/src/com/google/common/base/Ascii.java deleted file mode 100644 index 792856d4..00000000 --- a/src/com/google/common/base/Ascii.java +++ /dev/null @@ -1,487 +0,0 @@ -/* - * Copyright (C) 2010 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import com.google.common.annotations.GwtCompatible; - -/** - * Static methods pertaining to ASCII characters (those in the range of values - * {@code 0x00} through {@code 0x7F}), and to strings containing such - * characters. - * - *

    ASCII utilities also exist in other classes of this package: - *

      - * - *
    • {@link Charsets#US_ASCII} specifies the {@code Charset} of ASCII characters. - *
    • {@link CharMatcher#ASCII} matches ASCII characters and provides text processing methods - * which operate only on the ASCII characters of a string. - *
    - * - * @author Craig Berry - * @author Gregory Kick - * @since 7.0 - */ -@GwtCompatible -public final class Ascii { - - private Ascii() {} - - /* The ASCII control characters, per RFC 20. */ - /** - * Null ('\0'): The all-zeros character which may serve to accomplish - * time fill and media fill. Normally used as a C string terminator. - *

    Although RFC 20 names this as "Null", note that it is distinct - * from the C/C++ "NULL" pointer. - * - * @since 8.0 - */ - public static final byte NUL = 0; - - /** - * Start of Heading: A communication control character used at - * the beginning of a sequence of characters which constitute a - * machine-sensible address or routing information. Such a sequence is - * referred to as the "heading." An STX character has the effect of - * terminating a heading. - * - * @since 8.0 - */ - public static final byte SOH = 1; - - /** - * Start of Text: A communication control character which - * precedes a sequence of characters that is to be treated as an entity - * and entirely transmitted through to the ultimate destination. Such a - * sequence is referred to as "text." STX may be used to terminate a - * sequence of characters started by SOH. - * - * @since 8.0 - */ - public static final byte STX = 2; - - /** - * End of Text: A communication control character used to - * terminate a sequence of characters started with STX and transmitted - * as an entity. - * - * @since 8.0 - */ - public static final byte ETX = 3; - - /** - * End of Transmission: A communication control character used - * to indicate the conclusion of a transmission, which may have - * contained one or more texts and any associated headings. - * - * @since 8.0 - */ - public static final byte EOT = 4; - - /** - * Enquiry: A communication control character used in data - * communication systems as a request for a response from a remote - * station. It may be used as a "Who Are You" (WRU) to obtain - * identification, or may be used to obtain station status, or both. - * - * @since 8.0 - */ - public static final byte ENQ = 5; - - /** - * Acknowledge: A communication control character transmitted - * by a receiver as an affirmative response to a sender. - * - * @since 8.0 - */ - public static final byte ACK = 6; - - /** - * Bell ('\a'): A character for use when there is a need to call for - * human attention. It may control alarm or attention devices. - * - * @since 8.0 - */ - public static final byte BEL = 7; - - /** - * Backspace ('\b'): A format effector which controls the movement of - * the printing position one printing space backward on the same - * printing line. (Applicable also to display devices.) - * - * @since 8.0 - */ - public static final byte BS = 8; - - /** - * Horizontal Tabulation ('\t'): A format effector which controls the - * movement of the printing position to the next in a series of - * predetermined positions along the printing line. (Applicable also to - * display devices and the skip function on punched cards.) - * - * @since 8.0 - */ - public static final byte HT = 9; - - /** - * Line Feed ('\n'): A format effector which controls the movement of - * the printing position to the next printing line. (Applicable also to - * display devices.) Where appropriate, this character may have the - * meaning "New Line" (NL), a format effector which controls the - * movement of the printing point to the first printing position on the - * next printing line. Use of this convention requires agreement - * between sender and recipient of data. - * - * @since 8.0 - */ - public static final byte LF = 10; - - /** - * Alternate name for {@link #LF}. ({@code LF} is preferred.) - * - * @since 8.0 - */ - public static final byte NL = 10; - - /** - * Vertical Tabulation ('\v'): A format effector which controls the - * movement of the printing position to the next in a series of - * predetermined printing lines. (Applicable also to display devices.) - * - * @since 8.0 - */ - public static final byte VT = 11; - - /** - * Form Feed ('\f'): A format effector which controls the movement of - * the printing position to the first pre-determined printing line on - * the next form or page. (Applicable also to display devices.) - * - * @since 8.0 - */ - public static final byte FF = 12; - - /** - * Carriage Return ('\r'): A format effector which controls the - * movement of the printing position to the first printing position on - * the same printing line. (Applicable also to display devices.) - * - * @since 8.0 - */ - public static final byte CR = 13; - - /** - * Shift Out: A control character indicating that the code - * combinations which follow shall be interpreted as outside of the - * character set of the standard code table until a Shift In character - * is reached. - * - * @since 8.0 - */ - public static final byte SO = 14; - - /** - * Shift In: A control character indicating that the code - * combinations which follow shall be interpreted according to the - * standard code table. - * - * @since 8.0 - */ - public static final byte SI = 15; - - /** - * Data Link Escape: A communication control character which - * will change the meaning of a limited number of contiguously following - * characters. It is used exclusively to provide supplementary controls - * in data communication networks. - * - * @since 8.0 - */ - public static final byte DLE = 16; - - /** - * Device Control 1. Characters for the control - * of ancillary devices associated with data processing or - * telecommunication systems, more especially switching devices "on" or - * "off." (If a single "stop" control is required to interrupt or turn - * off ancillary devices, DC4 is the preferred assignment.) - * - * @since 8.0 - */ - public static final byte DC1 = 17; // aka XON - - /** - * Transmission On: Although originally defined as DC1, this ASCII - * control character is now better known as the XON code used for software - * flow control in serial communications. The main use is restarting - * the transmission after the communication has been stopped by the XOFF - * control code. - * - * @since 8.0 - */ - public static final byte XON = 17; // aka DC1 - - /** - * Device Control 2. Characters for the control - * of ancillary devices associated with data processing or - * telecommunication systems, more especially switching devices "on" or - * "off." (If a single "stop" control is required to interrupt or turn - * off ancillary devices, DC4 is the preferred assignment.) - * - * @since 8.0 - */ - public static final byte DC2 = 18; - - /** - * Device Control 3. Characters for the control - * of ancillary devices associated with data processing or - * telecommunication systems, more especially switching devices "on" or - * "off." (If a single "stop" control is required to interrupt or turn - * off ancillary devices, DC4 is the preferred assignment.) - * - * @since 8.0 - */ - public static final byte DC3 = 19; // aka XOFF - - /** - * Transmission off. See {@link #XON} for explanation. - * - * @since 8.0 - */ - public static final byte XOFF = 19; // aka DC3 - - /** - * Device Control 4. Characters for the control - * of ancillary devices associated with data processing or - * telecommunication systems, more especially switching devices "on" or - * "off." (If a single "stop" control is required to interrupt or turn - * off ancillary devices, DC4 is the preferred assignment.) - * - * @since 8.0 - */ - public static final byte DC4 = 20; - - /** - * Negative Acknowledge: A communication control character - * transmitted by a receiver as a negative response to the sender. - * - * @since 8.0 - */ - public static final byte NAK = 21; - - /** - * Synchronous Idle: A communication control character used by - * a synchronous transmission system in the absence of any other - * character to provide a signal from which synchronism may be achieved - * or retained. - * - * @since 8.0 - */ - public static final byte SYN = 22; - - /** - * End of Transmission Block: A communication control character - * used to indicate the end of a block of data for communication - * purposes. ETB is used for blocking data where the block structure is - * not necessarily related to the processing format. - * - * @since 8.0 - */ - public static final byte ETB = 23; - - /** - * Cancel: A control character used to indicate that the data - * with which it is sent is in error or is to be disregarded. - * - * @since 8.0 - */ - public static final byte CAN = 24; - - /** - * End of Medium: A control character associated with the sent - * data which may be used to identify the physical end of the medium, or - * the end of the used, or wanted, portion of information recorded on a - * medium. (The position of this character does not necessarily - * correspond to the physical end of the medium.) - * - * @since 8.0 - */ - public static final byte EM = 25; - - /** - * Substitute: A character that may be substituted for a - * character which is determined to be invalid or in error. - * - * @since 8.0 - */ - public static final byte SUB = 26; - - /** - * Escape: A control character intended to provide code - * extension (supplementary characters) in general information - * interchange. The Escape character itself is a prefix affecting the - * interpretation of a limited number of contiguously following - * characters. - * - * @since 8.0 - */ - public static final byte ESC = 27; - - /** - * File Separator: These four information separators may be - * used within data in optional fashion, except that their hierarchical - * relationship shall be: FS is the most inclusive, then GS, then RS, - * and US is least inclusive. (The content and length of a File, Group, - * Record, or Unit are not specified.) - * - * @since 8.0 - */ - public static final byte FS = 28; - - /** - * Group Separator: These four information separators may be - * used within data in optional fashion, except that their hierarchical - * relationship shall be: FS is the most inclusive, then GS, then RS, - * and US is least inclusive. (The content and length of a File, Group, - * Record, or Unit are not specified.) - * - * @since 8.0 - */ - public static final byte GS = 29; - - /** - * Record Separator: These four information separators may be - * used within data in optional fashion, except that their hierarchical - * relationship shall be: FS is the most inclusive, then GS, then RS, - * and US is least inclusive. (The content and length of a File, Group, - * Record, or Unit are not specified.) - * - * @since 8.0 - */ - public static final byte RS = 30; - - /** - * Unit Separator: These four information separators may be - * used within data in optional fashion, except that their hierarchical - * relationship shall be: FS is the most inclusive, then GS, then RS, - * and US is least inclusive. (The content and length of a File, Group, - * Record, or Unit are not specified.) - * - * @since 8.0 - */ - public static final byte US = 31; - - /** - * Space: A normally non-printing graphic character used to - * separate words. It is also a format effector which controls the - * movement of the printing position, one printing position forward. - * (Applicable also to display devices.) - * - * @since 8.0 - */ - public static final byte SP = 32; - - /** - * Alternate name for {@link #SP}. - * - * @since 8.0 - */ - public static final byte SPACE = 32; - - /** - * Delete: This character is used primarily to "erase" or - * "obliterate" erroneous or unwanted characters in perforated tape. - * - * @since 8.0 - */ - public static final byte DEL = 127; - - /** - * The minimum value of an ASCII character. - * - * @since 9.0 (was type {@code int} before 12.0) - */ - public static final char MIN = 0; - - /** - * The maximum value of an ASCII character. - * - * @since 9.0 (was type {@code int} before 12.0) - */ - public static final char MAX = 127; - - /** - * Returns a copy of the input string in which all {@linkplain #isUpperCase(char) uppercase ASCII - * characters} have been converted to lowercase. All other characters are copied without - * modification. - */ - public static String toLowerCase(String string) { - int length = string.length(); - StringBuilder builder = new StringBuilder(length); - for (int i = 0; i < length; i++) { - builder.append(toLowerCase(string.charAt(i))); - } - return builder.toString(); - } - - /** - * If the argument is an {@linkplain #isUpperCase(char) uppercase ASCII character} returns the - * lowercase equivalent. Otherwise returns the argument. - */ - public static char toLowerCase(char c) { - return isUpperCase(c) ? (char) (c ^ 0x20) : c; - } - - /** - * Returns a copy of the input string in which all {@linkplain #isLowerCase(char) lowercase ASCII - * characters} have been converted to uppercase. All other characters are copied without - * modification. - */ - public static String toUpperCase(String string) { - int length = string.length(); - StringBuilder builder = new StringBuilder(length); - for (int i = 0; i < length; i++) { - builder.append(toUpperCase(string.charAt(i))); - } - return builder.toString(); - } - - /** - * If the argument is a {@linkplain #isLowerCase(char) lowercase ASCII character} returns the - * uppercase equivalent. Otherwise returns the argument. - */ - public static char toUpperCase(char c) { - return isLowerCase(c) ? (char) (c & 0x5f) : c; - } - - /** - * Indicates whether {@code c} is one of the twenty-six lowercase ASCII alphabetic characters - * between {@code 'a'} and {@code 'z'} inclusive. All others (including non-ASCII characters) - * return {@code false}. - */ - public static boolean isLowerCase(char c) { - return (c >= 'a') && (c <= 'z'); - } - - /** - * Indicates whether {@code c} is one of the twenty-six uppercase ASCII alphabetic characters - * between {@code 'A'} and {@code 'Z'} inclusive. All others (including non-ASCII characters) - * return {@code false}. - */ - public static boolean isUpperCase(char c) { - return (c >= 'A') && (c <= 'Z'); - } -} diff --git a/src/com/google/common/base/Charsets.java b/src/com/google/common/base/Charsets.java deleted file mode 100644 index 79c91280..00000000 --- a/src/com/google/common/base/Charsets.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import com.google.common.annotations.GwtCompatible; -import com.google.common.annotations.GwtIncompatible; - -import java.nio.charset.Charset; - -/** - * Contains constant definitions for the six standard {@link Charset} instances, which are - * guaranteed to be supported by all Java platform implementations. - * - *

    Assuming you're free to choose, note that {@link #UTF_8} is widely preferred. - * - *

    See the Guava User Guide article on - * {@code Charsets}. - * - * @author Mike Bostock - * @since 1.0 - */ -@GwtCompatible(emulated = true) -public final class Charsets { - private Charsets() {} - - /** - * US-ASCII: seven-bit ASCII, the Basic Latin block of the Unicode character set (ISO646-US). - */ - @GwtIncompatible("Non-UTF-8 Charset") - public static final Charset US_ASCII = Charset.forName("US-ASCII"); - - /** - * ISO-8859-1: ISO Latin Alphabet Number 1 (ISO-LATIN-1). - */ - @GwtIncompatible("Non-UTF-8 Charset") - public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1"); - - /** - * UTF-8: eight-bit UCS Transformation Format. - */ - public static final Charset UTF_8 = Charset.forName("UTF-8"); - - /** - * UTF-16BE: sixteen-bit UCS Transformation Format, big-endian byte order. - */ - @GwtIncompatible("Non-UTF-8 Charset") - public static final Charset UTF_16BE = Charset.forName("UTF-16BE"); - - /** - * UTF-16LE: sixteen-bit UCS Transformation Format, little-endian byte order. - */ - @GwtIncompatible("Non-UTF-8 Charset") - public static final Charset UTF_16LE = Charset.forName("UTF-16LE"); - - /** - * UTF-16: sixteen-bit UCS Transformation Format, byte order identified by an optional byte-order - * mark. - */ - @GwtIncompatible("Non-UTF-8 Charset") - public static final Charset UTF_16 = Charset.forName("UTF-16"); - - /* - * Please do not add new Charset references to this class, unless those character encodings are - * part of the set required to be supported by all Java platform implementations! Any Charsets - * initialized here may cause unexpected delays when this class is loaded. See the Charset - * Javadocs for the list of built-in character encodings. - */ -} diff --git a/src/com/google/common/base/Defaults.java b/src/com/google/common/base/Defaults.java deleted file mode 100644 index b3e85557..00000000 --- a/src/com/google/common/base/Defaults.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** - * This class provides default values for all Java types, as defined by the JLS. - * - * @author Ben Yu - * @since 1.0 - */ -public final class Defaults { - private Defaults() {} - - private static final Map, Object> DEFAULTS; - - static { - Map, Object> map = new HashMap, Object>(); - put(map, boolean.class, false); - put(map, char.class, '\0'); - put(map, byte.class, (byte) 0); - put(map, short.class, (short) 0); - put(map, int.class, 0); - put(map, long.class, 0L); - put(map, float.class, 0f); - put(map, double.class, 0d); - DEFAULTS = Collections.unmodifiableMap(map); - } - - private static void put(Map, Object> map, Class type, T value) { - map.put(type, value); - } - - /** - * Returns the default value of {@code type} as defined by JLS --- {@code 0} for numbers, {@code - * false} for {@code boolean} and {@code '\0'} for {@code char}. For non-primitive types and - * {@code void}, null is returned. - */ - @SuppressWarnings("unchecked") - public static T defaultValue(Class type) { - return (T) DEFAULTS.get(type); - } -} diff --git a/src/com/google/common/base/Enums.java b/src/com/google/common/base/Enums.java deleted file mode 100644 index 21ea66c6..00000000 --- a/src/com/google/common/base/Enums.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.annotations.Beta; -import com.google.common.annotations.GwtCompatible; -import com.google.common.annotations.GwtIncompatible; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.annotation.Nullable; - -/** - * Utility methods for working with {@link Enum} instances. - * - * @author Steve McKay - * - * @since 9.0 - */ -@GwtCompatible(emulated = true) -@Beta -public final class Enums { - - private Enums() {} - - /** - * Returns the {@link Field} in which {@code enumValue} is defined. - * For example, to get the {@code Description} annotation on the {@code GOLF} - * constant of enum {@code Sport}, use - * {@code Enums.getField(Sport.GOLF).getAnnotation(Description.class)}. - * - * @since 12.0 - */ - @GwtIncompatible("reflection") - public static Field getField(Enum enumValue) { - Class clazz = enumValue.getDeclaringClass(); - try { - return clazz.getDeclaredField(enumValue.name()); - } catch (NoSuchFieldException impossible) { - throw new AssertionError(impossible); - } - } - - /** - * Returns a {@link Function} that maps an {@link Enum} name to the associated - * {@code Enum} constant. The {@code Function} will return {@code null} if the - * {@code Enum} constant does not exist. - * - * @param enumClass the {@link Class} of the {@code Enum} declaring the - * constant values. - */ - public static > Function valueOfFunction(Class enumClass) { - return new ValueOfFunction(enumClass); - } - - /** - * A {@link Function} that maps an {@link Enum} name to the associated - * constant, or {@code null} if the constant does not exist. - */ - private static final class ValueOfFunction> - implements Function, Serializable { - - private final Class enumClass; - - private ValueOfFunction(Class enumClass) { - this.enumClass = checkNotNull(enumClass); - } - - public T apply(String value) { - try { - return Enum.valueOf(enumClass, value); - } catch (IllegalArgumentException e) { - return null; - } - } - - - @Override - public boolean equals(@Nullable Object obj) { - return obj instanceof ValueOfFunction && - enumClass.equals(((ValueOfFunction) obj).enumClass); - } - - - @Override - public int hashCode() { - return enumClass.hashCode(); - } - - - @Override - public String toString() { - return "Enums.valueOf(" + enumClass + ")"; - } - - private static final long serialVersionUID = 0; - } - - /** - * Returns an optional enum constant for the given type, using {@link Enum#valueOf}. If the - * constant does not exist, {@link Optional#absent} is returned. A common use case is for parsing - * user input or falling back to a default enum constant. For example, - * {@code Enums.getIfPresent(Country.class, countryInput).or(Country.DEFAULT);} - * - * @since 12.0 - */ - public static > Optional getIfPresent(Class enumClass, String value) { - checkNotNull(enumClass); - checkNotNull(value); - try { - return Optional.of(Enum.valueOf(enumClass, value)); - } catch (IllegalArgumentException iae) { - return Optional.absent(); - } - } -} diff --git a/src/com/google/common/base/FinalizablePhantomReference.java b/src/com/google/common/base/FinalizablePhantomReference.java deleted file mode 100644 index c694bc99..00000000 --- a/src/com/google/common/base/FinalizablePhantomReference.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import java.lang.ref.PhantomReference; -import java.lang.ref.ReferenceQueue; - -/** - * Phantom reference with a {@code finalizeReferent()} method which a background thread invokes - * after the garbage collector reclaims the referent. This is a simpler alternative to using a - * {@link ReferenceQueue}. - * - *

    Unlike a normal phantom reference, this reference will be cleared automatically. - * - * @author Bob Lee - * @since 2.0 (imported from Google Collections Library) - */ -public abstract class FinalizablePhantomReference extends PhantomReference - implements FinalizableReference { - /** - * Constructs a new finalizable phantom reference. - * - * @param referent to phantom reference - * @param queue that should finalize the referent - */ - protected FinalizablePhantomReference(T referent, FinalizableReferenceQueue queue) { - super(referent, queue.queue); - queue.cleanUp(); - } -} diff --git a/src/com/google/common/base/FinalizableReference.java b/src/com/google/common/base/FinalizableReference.java deleted file mode 100644 index ab2dec30..00000000 --- a/src/com/google/common/base/FinalizableReference.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -/** - * Implemented by references that have code to run after garbage collection of their referents. - * - * @see FinalizableReferenceQueue - * @author Bob Lee - * @since 2.0 (imported from Google Collections Library) - */ -public interface FinalizableReference { - /** - * Invoked on a background thread after the referent has been garbage collected unless security - * restrictions prevented starting a background thread, in which case this method is invoked when - * new references are created. - */ - void finalizeReferent(); -} diff --git a/src/com/google/common/base/FinalizableReferenceQueue.java b/src/com/google/common/base/FinalizableReferenceQueue.java deleted file mode 100644 index 3efe8306..00000000 --- a/src/com/google/common/base/FinalizableReferenceQueue.java +++ /dev/null @@ -1,296 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import com.google.common.annotations.VisibleForTesting; - -import java.io.FileNotFoundException; -import java.io.IOException; -import java.lang.ref.Reference; -import java.lang.ref.ReferenceQueue; -import java.lang.reflect.Method; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * A reference queue with an associated background thread that dequeues references and invokes - * {@link FinalizableReference#finalizeReferent()} on them. - * - *

    Keep a strong reference to this object until all of the associated referents have been - * finalized. If this object is garbage collected earlier, the backing thread will not invoke {@code - * finalizeReferent()} on the remaining references. - * - * @author Bob Lee - * @since 2.0 (imported from Google Collections Library) - */ -public class FinalizableReferenceQueue { - /* - * The Finalizer thread keeps a phantom reference to this object. When the client (for example, a - * map built by MapMaker) no longer has a strong reference to this object, the garbage collector - * will reclaim it and enqueue the phantom reference. The enqueued reference will trigger the - * Finalizer to stop. - * - * If this library is loaded in the system class loader, FinalizableReferenceQueue can load - * Finalizer directly with no problems. - * - * If this library is loaded in an application class loader, it's important that Finalizer not - * have a strong reference back to the class loader. Otherwise, you could have a graph like this: - * - * Finalizer Thread runs instance of -> Finalizer.class loaded by -> Application class loader - * which loaded -> ReferenceMap.class which has a static -> FinalizableReferenceQueue instance - * - * Even if no other references to classes from the application class loader remain, the Finalizer - * thread keeps an indirect strong reference to the queue in ReferenceMap, which keeps the - * Finalizer running, and as a result, the application class loader can never be reclaimed. - * - * This means that dynamically loaded web applications and OSGi bundles can't be unloaded. - * - * If the library is loaded in an application class loader, we try to break the cycle by loading - * Finalizer in its own independent class loader: - * - * System class loader -> Application class loader -> ReferenceMap -> FinalizableReferenceQueue - * -> etc. -> Decoupled class loader -> Finalizer - * - * Now, Finalizer no longer keeps an indirect strong reference to the static - * FinalizableReferenceQueue field in ReferenceMap. The application class loader can be reclaimed - * at which point the Finalizer thread will stop and its decoupled class loader can also be - * reclaimed. - * - * If any of this fails along the way, we fall back to loading Finalizer directly in the - * application class loader. - */ - - private static final Logger logger = Logger.getLogger(FinalizableReferenceQueue.class.getName()); - - private static final String FINALIZER_CLASS_NAME = "com.google.common.base.internal.Finalizer"; - - /** Reference to Finalizer.startFinalizer(). */ - private static final Method startFinalizer; - static { - Class finalizer = loadFinalizer( - new SystemLoader(), new DecoupledLoader(), new DirectLoader()); - startFinalizer = getStartFinalizer(finalizer); - } - - /** - * The actual reference queue that our background thread will poll. - */ - final ReferenceQueue queue; - - /** - * Whether or not the background thread started successfully. - */ - final boolean threadStarted; - - /** - * Constructs a new queue. - */ - @SuppressWarnings("unchecked") - public FinalizableReferenceQueue() { - // We could start the finalizer lazily, but I'd rather it blow up early. - ReferenceQueue queue; - boolean threadStarted = false; - try { - queue = (ReferenceQueue) - startFinalizer.invoke(null, FinalizableReference.class, this); - threadStarted = true; - } catch (IllegalAccessException impossible) { - throw new AssertionError(impossible); // startFinalizer() is public - } catch (Throwable t) { - logger.log(Level.INFO, "Failed to start reference finalizer thread." - + " Reference cleanup will only occur when new references are created.", t); - queue = new ReferenceQueue(); - } - - this.queue = queue; - this.threadStarted = threadStarted; - } - - /** - * Repeatedly dequeues references from the queue and invokes {@link - * FinalizableReference#finalizeReferent()} on them until the queue is empty. This method is a - * no-op if the background thread was created successfully. - */ - void cleanUp() { - if (threadStarted) { - return; - } - - Reference reference; - while ((reference = queue.poll()) != null) { - /* - * This is for the benefit of phantom references. Weak and soft references will have already - * been cleared by this point. - */ - reference.clear(); - try { - ((FinalizableReference) reference).finalizeReferent(); - } catch (Throwable t) { - logger.log(Level.SEVERE, "Error cleaning up after reference.", t); - } - } - } - - /** - * Iterates through the given loaders until it finds one that can load Finalizer. - * - * @return Finalizer.class - */ - private static Class loadFinalizer(FinalizerLoader... loaders) { - for (FinalizerLoader loader : loaders) { - Class finalizer = loader.loadFinalizer(); - if (finalizer != null) { - return finalizer; - } - } - - throw new AssertionError(); - } - - /** - * Loads Finalizer.class. - */ - interface FinalizerLoader { - - /** - * Returns Finalizer.class or null if this loader shouldn't or can't load it. - * - * @throws SecurityException if we don't have the appropriate privileges - */ - Class loadFinalizer(); - } - - /** - * Tries to load Finalizer from the system class loader. If Finalizer is in the system class path, - * we needn't create a separate loader. - */ - static class SystemLoader implements FinalizerLoader { - // This is used by the ClassLoader-leak test in FinalizableReferenceQueueTest to disable - // finding Finalizer on the system class path even if it is there. - @VisibleForTesting - static boolean disabled; - - public Class loadFinalizer() { - if (disabled) { - return null; - } - ClassLoader systemLoader; - try { - systemLoader = ClassLoader.getSystemClassLoader(); - } catch (SecurityException e) { - logger.info("Not allowed to access system class loader."); - return null; - } - if (systemLoader != null) { - try { - return systemLoader.loadClass(FINALIZER_CLASS_NAME); - } catch (ClassNotFoundException e) { - // Ignore. Finalizer is simply in a child class loader. - return null; - } - } else { - return null; - } - } - } - - /** - * Try to load Finalizer in its own class loader. If Finalizer's thread had a direct reference to - * our class loader (which could be that of a dynamically loaded web application or OSGi bundle), - * it would prevent our class loader from getting garbage collected. - */ - static class DecoupledLoader implements FinalizerLoader { - private static final String LOADING_ERROR = "Could not load Finalizer in its own class loader." - + "Loading Finalizer in the current class loader instead. As a result, you will not be able" - + "to garbage collect this class loader. To support reclaiming this class loader, either" - + "resolve the underlying issue, or move Google Collections to your system class path."; - - public Class loadFinalizer() { - try { - /* - * We use URLClassLoader because it's the only concrete class loader implementation in the - * JDK. If we used our own ClassLoader subclass, Finalizer would indirectly reference this - * class loader: - * - * Finalizer.class -> CustomClassLoader -> CustomClassLoader.class -> This class loader - * - * System class loader will (and must) be the parent. - */ - ClassLoader finalizerLoader = newLoader(getBaseUrl()); - return finalizerLoader.loadClass(FINALIZER_CLASS_NAME); - } catch (Exception e) { - logger.log(Level.WARNING, LOADING_ERROR, e); - return null; - } - } - - /** - * Gets URL for base of path containing Finalizer.class. - */ - URL getBaseUrl() throws IOException { - // Find URL pointing to Finalizer.class file. - String finalizerPath = FINALIZER_CLASS_NAME.replace('.', '/') + ".class"; - URL finalizerUrl = getClass().getClassLoader().getResource(finalizerPath); - if (finalizerUrl == null) { - throw new FileNotFoundException(finalizerPath); - } - - // Find URL pointing to base of class path. - String urlString = finalizerUrl.toString(); - if (!urlString.endsWith(finalizerPath)) { - throw new IOException("Unsupported path style: " + urlString); - } - urlString = urlString.substring(0, urlString.length() - finalizerPath.length()); - return new URL(finalizerUrl, urlString); - } - - /** Creates a class loader with the given base URL as its classpath. */ - URLClassLoader newLoader(URL base) { - // We use the bootstrap class loader as the parent because Finalizer by design uses - // only standard Java classes. That also means that FinalizableReferenceQueueTest - // doesn't pick up the wrong version of the Finalizer class. - return new URLClassLoader(new URL[] {base}, null); - } - } - - /** - * Loads Finalizer directly using the current class loader. We won't be able to garbage collect - * this class loader, but at least the world doesn't end. - */ - static class DirectLoader implements FinalizerLoader { - public Class loadFinalizer() { - try { - return Class.forName(FINALIZER_CLASS_NAME); - } catch (ClassNotFoundException e) { - throw new AssertionError(e); - } - } - } - - /** - * Looks up Finalizer.startFinalizer(). - */ - static Method getStartFinalizer(Class finalizer) { - try { - return finalizer.getMethod("startFinalizer", Class.class, Object.class); - } catch (NoSuchMethodException e) { - throw new AssertionError(e); - } - } -} diff --git a/src/com/google/common/base/FinalizableSoftReference.java b/src/com/google/common/base/FinalizableSoftReference.java deleted file mode 100644 index 88607f4e..00000000 --- a/src/com/google/common/base/FinalizableSoftReference.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import java.lang.ref.ReferenceQueue; -import java.lang.ref.SoftReference; - -/** - * Soft reference with a {@code finalizeReferent()} method which a background thread invokes after - * the garbage collector reclaims the referent. This is a simpler alternative to using a {@link - * ReferenceQueue}. - * - * @author Bob Lee - * @since 2.0 (imported from Google Collections Library) - */ -public abstract class FinalizableSoftReference extends SoftReference - implements FinalizableReference { - /** - * Constructs a new finalizable soft reference. - * - * @param referent to softly reference - * @param queue that should finalize the referent - */ - protected FinalizableSoftReference(T referent, FinalizableReferenceQueue queue) { - super(referent, queue.queue); - queue.cleanUp(); - } -} diff --git a/src/com/google/common/base/FinalizableWeakReference.java b/src/com/google/common/base/FinalizableWeakReference.java deleted file mode 100644 index b14d0238..00000000 --- a/src/com/google/common/base/FinalizableWeakReference.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import java.lang.ref.ReferenceQueue; -import java.lang.ref.WeakReference; - -/** - * Weak reference with a {@code finalizeReferent()} method which a background thread invokes after - * the garbage collector reclaims the referent. This is a simpler alternative to using a {@link - * ReferenceQueue}. - * - * @author Bob Lee - * @since 2.0 (imported from Google Collections Library) - */ -public abstract class FinalizableWeakReference extends WeakReference - implements FinalizableReference { - /** - * Constructs a new finalizable weak reference. - * - * @param referent to weakly reference - * @param queue that should finalize the referent - */ - protected FinalizableWeakReference(T referent, FinalizableReferenceQueue queue) { - super(referent, queue.queue); - queue.cleanUp(); - } -} diff --git a/src/com/google/common/base/Function.java b/src/com/google/common/base/Function.java deleted file mode 100644 index 57456e43..00000000 --- a/src/com/google/common/base/Function.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import com.google.common.annotations.GwtCompatible; - -import javax.annotation.Nullable; - -/** - * Determines an output value based on an input value. - * - *

    See the Guava User Guide article on the use of {@code - * Function}. - * - * @author Kevin Bourrillion - * @since 2.0 (imported from Google Collections Library) - */ -@GwtCompatible -public interface Function { - /** - * Returns the result of applying this function to {@code input}. This method is generally - * expected, but not absolutely required, to have the following properties: - * - *

      - *
    • Its execution does not cause any observable side effects. - *
    • The computation is consistent with equals; that is, {@link Objects#equal - * Objects.equal}{@code (a, b)} implies that {@code Objects.equal(function.apply(a), - * function.apply(b))}. - *
    - * - * @throws NullPointerException if {@code input} is null and this function does not accept null - * arguments - */ - @Nullable T apply(@Nullable F input); - - /** - * Indicates whether another object is equal to this function. - * - *

    Most implementations will have no reason to override the behavior of {@link Object#equals}. - * However, an implementation may also choose to return {@code true} whenever {@code object} is a - * {@link Function} that it considers interchangeable with this one. "Interchangeable" - * typically means that {@code Objects.equal(this.apply(f), that.apply(f))} is true for all - * {@code f} of type {@code F}. Note that a {@code false} result from this method does not imply - * that the functions are known not to be interchangeable. - */ - boolean equals(@Nullable Object object); -} diff --git a/src/com/google/common/base/Joiner.java b/src/com/google/common/base/Joiner.java deleted file mode 100644 index b342626a..00000000 --- a/src/com/google/common/base/Joiner.java +++ /dev/null @@ -1,578 +0,0 @@ -/* - * Copyright (C) 2008 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.annotations.Beta; -import com.google.common.annotations.GwtCompatible; - -import java.io.IOException; -import java.util.AbstractList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.Map; -import java.util.Map.Entry; - -import javax.annotation.CheckReturnValue; -import javax.annotation.Nullable; - -/** - * An object which joins pieces of text (specified as an array, {@link Iterable}, varargs or even a - * {@link Map}) with a separator. It either appends the results to an {@link Appendable} or returns - * them as a {@link String}. Example:

       {@code
    - *
    - *   Joiner joiner = Joiner.on("; ").skipNulls();
    - *    . . .
    - *   return joiner.join("Harry", null, "Ron", "Hermione");}
    - * - * This returns the string {@code "Harry; Ron; Hermione"}. Note that all input elements are - * converted to strings using {@link Object#toString()} before being appended. - * - *

    If neither {@link #skipNulls()} nor {@link #useForNull(String)} is specified, the joining - * methods will throw {@link NullPointerException} if any given element is null. - * - *

    Warning: joiner instances are always immutable; a configuration method such as {@code - * useForNull} has no effect on the instance it is invoked on! You must store and use the new joiner - * instance returned by the method. This makes joiners thread-safe, and safe to store as {@code - * static final} constants.

       {@code
    - *
    - *   // Bad! Do not do this!
    - *   Joiner joiner = Joiner.on(',');
    - *   joiner.skipNulls(); // does nothing!
    - *   return joiner.join("wrong", null, "wrong");}
    - * - *

    See the Guava User Guide article on {@code Joiner}. - * - * @author Kevin Bourrillion - * @since 2.0 (imported from Google Collections Library) - */ -@GwtCompatible -public class Joiner { - /** - * Returns a joiner which automatically places {@code separator} between consecutive elements. - */ - public static Joiner on(String separator) { - return new Joiner(separator); - } - - /** - * Returns a joiner which automatically places {@code separator} between consecutive elements. - */ - public static Joiner on(char separator) { - return new Joiner(String.valueOf(separator)); - } - - private final String separator; - - private Joiner(String separator) { - this.separator = checkNotNull(separator); - } - - private Joiner(Joiner prototype) { - this.separator = prototype.separator; - } - - /** - * Deprecated. - * - * @since 11.0 - * @deprecated use {@link #appendTo(Appendable, Iterator)} by casting {@code parts} to - * {@code Iterator}, or better yet, by implementing only {@code Iterator} and not - * {@code Iterable}. This method is scheduled for deletion in June 2013. - */ - @Beta - @Deprecated - public - final & Iterator> A - appendTo(A appendable, I parts) throws IOException { - return appendTo(appendable, (Iterator) parts); - } - - /** - * Appends the string representation of each of {@code parts}, using the previously configured - * separator between each, to {@code appendable}. - */ - public A appendTo(A appendable, Iterable parts) throws IOException { - return appendTo(appendable, parts.iterator()); - } - - /** - * Appends the string representation of each of {@code parts}, using the previously configured - * separator between each, to {@code appendable}. - * - * @since 11.0 - */ - public A appendTo(A appendable, Iterator parts) throws IOException { - checkNotNull(appendable); - if (parts.hasNext()) { - appendable.append(toString(parts.next())); - while (parts.hasNext()) { - appendable.append(separator); - appendable.append(toString(parts.next())); - } - } - return appendable; - } - - /** - * Appends the string representation of each of {@code parts}, using the previously configured - * separator between each, to {@code appendable}. - */ - public final A appendTo(A appendable, Object[] parts) throws IOException { - return appendTo(appendable, Arrays.asList(parts)); - } - - /** - * Appends to {@code appendable} the string representation of each of the remaining arguments. - */ - public final A appendTo( - A appendable, @Nullable Object first, @Nullable Object second, Object... rest) - throws IOException { - return appendTo(appendable, iterable(first, second, rest)); - } - - /** - * Deprecated. - * - * @since 11.0 - * @deprecated use {@link #appendTo(StringBuilder, Iterator)} by casting {@code parts} to - * {@code Iterator}, or better yet, by implementing only {@code Iterator} and not - * {@code Iterable}. This method is scheduled for deletion in June 2013. - */ - @Beta - @Deprecated - public - final & Iterator> StringBuilder - appendTo(StringBuilder builder, I parts) { - return appendTo(builder, (Iterator) parts); - } - - /** - * Appends the string representation of each of {@code parts}, using the previously configured - * separator between each, to {@code builder}. Identical to {@link #appendTo(Appendable, - * Iterable)}, except that it does not throw {@link IOException}. - */ - public final StringBuilder appendTo(StringBuilder builder, Iterable parts) { - return appendTo(builder, parts.iterator()); - } - - /** - * Appends the string representation of each of {@code parts}, using the previously configured - * separator between each, to {@code builder}. Identical to {@link #appendTo(Appendable, - * Iterable)}, except that it does not throw {@link IOException}. - * - * @since 11.0 - */ - public final StringBuilder appendTo(StringBuilder builder, Iterator parts) { - try { - appendTo((Appendable) builder, parts); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - return builder; - } - - /** - * Appends the string representation of each of {@code parts}, using the previously configured - * separator between each, to {@code builder}. Identical to {@link #appendTo(Appendable, - * Iterable)}, except that it does not throw {@link IOException}. - */ - public final StringBuilder appendTo(StringBuilder builder, Object[] parts) { - return appendTo(builder, Arrays.asList(parts)); - } - - /** - * Appends to {@code builder} the string representation of each of the remaining arguments. - * Identical to {@link #appendTo(Appendable, Object, Object, Object...)}, except that it does not - * throw {@link IOException}. - */ - public final StringBuilder appendTo( - StringBuilder builder, @Nullable Object first, @Nullable Object second, Object... rest) { - return appendTo(builder, iterable(first, second, rest)); - } - - /** - * Deprecated. - * - * @since 11.0 - * @deprecated use {@link #join(Iterator)} by casting {@code parts} to - * {@code Iterator}, or better yet, by implementing only {@code Iterator} and not - * {@code Iterable}. This method is scheduled for deletion in June 2013. - */ - @Beta - @Deprecated - public - final & Iterator> String join(I parts) { - return join((Iterator) parts); - } - - /** - * Returns a string containing the string representation of each of {@code parts}, using the - * previously configured separator between each. - */ - public final String join(Iterable parts) { - return join(parts.iterator()); - } - - /** - * Returns a string containing the string representation of each of {@code parts}, using the - * previously configured separator between each. - * - * @since 11.0 - */ - public final String join(Iterator parts) { - return appendTo(new StringBuilder(), parts).toString(); - } - - /** - * Returns a string containing the string representation of each of {@code parts}, using the - * previously configured separator between each. - */ - public final String join(Object[] parts) { - return join(Arrays.asList(parts)); - } - - /** - * Returns a string containing the string representation of each argument, using the previously - * configured separator between each. - */ - public final String join(@Nullable Object first, @Nullable Object second, Object... rest) { - return join(iterable(first, second, rest)); - } - - /** - * Returns a joiner with the same behavior as this one, except automatically substituting {@code - * nullText} for any provided null elements. - */ - @CheckReturnValue - public Joiner useForNull(final String nullText) { - checkNotNull(nullText); - return new Joiner(this) { - - @Override - CharSequence toString(Object part) { - return (part == null) ? nullText : Joiner.this.toString(part); - } - - - @Override - public Joiner useForNull(String nullText) { - checkNotNull(nullText); // weird: just to satisfy NullPointerTester. - throw new UnsupportedOperationException("already specified useForNull"); - } - - - @Override - public Joiner skipNulls() { - throw new UnsupportedOperationException("already specified useForNull"); - } - }; - } - - /** - * Returns a joiner with the same behavior as this joiner, except automatically skipping over any - * provided null elements. - */ - @CheckReturnValue - public Joiner skipNulls() { - return new Joiner(this) { - - @Override - public A appendTo(A appendable, Iterator parts) - throws IOException { - checkNotNull(appendable, "appendable"); - checkNotNull(parts, "parts"); - while (parts.hasNext()) { - Object part = parts.next(); - if (part != null) { - appendable.append(Joiner.this.toString(part)); - break; - } - } - while (parts.hasNext()) { - Object part = parts.next(); - if (part != null) { - appendable.append(separator); - appendable.append(Joiner.this.toString(part)); - } - } - return appendable; - } - - - @Override - public Joiner useForNull(String nullText) { - checkNotNull(nullText); // weird: just to satisfy NullPointerTester. - throw new UnsupportedOperationException("already specified skipNulls"); - } - - - @Override - public MapJoiner withKeyValueSeparator(String kvs) { - checkNotNull(kvs); // weird: just to satisfy NullPointerTester. - throw new UnsupportedOperationException("can't use .skipNulls() with maps"); - } - }; - } - - /** - * Returns a {@code MapJoiner} using the given key-value separator, and the same configuration as - * this {@code Joiner} otherwise. - */ - @CheckReturnValue - public MapJoiner withKeyValueSeparator(String keyValueSeparator) { - return new MapJoiner(this, keyValueSeparator); - } - - /** - * An object that joins map entries in the same manner as {@code Joiner} joins iterables and - * arrays. Like {@code Joiner}, it is thread-safe and immutable. - * - *

    In addition to operating on {@code Map} instances, {@code MapJoiner} can operate on {@code - * Multimap} entries in two distinct modes: - * - *

    - * - * @since 2.0 (imported from Google Collections Library) - */ - public final static class MapJoiner { - private final Joiner joiner; - private final String keyValueSeparator; - - private MapJoiner(Joiner joiner, String keyValueSeparator) { - this.joiner = joiner; // only "this" is ever passed, so don't checkNotNull - this.keyValueSeparator = checkNotNull(keyValueSeparator); - } - - /** - * Appends the string representation of each entry of {@code map}, using the previously - * configured separator and key-value separator, to {@code appendable}. - */ - public A appendTo(A appendable, Map map) throws IOException { - return appendTo(appendable, map.entrySet()); - } - - /** - * Appends the string representation of each entry of {@code map}, using the previously - * configured separator and key-value separator, to {@code builder}. Identical to {@link - * #appendTo(Appendable, Map)}, except that it does not throw {@link IOException}. - */ - public StringBuilder appendTo(StringBuilder builder, Map map) { - return appendTo(builder, map.entrySet()); - } - - /** - * Returns a string containing the string representation of each entry of {@code map}, using the - * previously configured separator and key-value separator. - */ - public String join(Map map) { - return join(map.entrySet()); - } - - /** - * Deprecated. - * - * @since 11.0 - * @deprecated use {@link #appendTo(Appendable, Iterator)} by casting {@code entries} to - * {@code Iterator>}, or better yet, by implementing only - * {@code Iterator} and not {@code Iterable}. This method is scheduled for deletion - * in June 2013. - */ - @Beta - @Deprecated - public - > & Iterator>> - A appendTo(A appendable, I entries) throws IOException { - Iterator> iterator = entries; - return appendTo(appendable, iterator); - } - - /** - * Appends the string representation of each entry in {@code entries}, using the previously - * configured separator and key-value separator, to {@code appendable}. - * - * @since 10.0 - */ - @Beta - public A appendTo(A appendable, Iterable> entries) - throws IOException { - return appendTo(appendable, entries.iterator()); - } - - /** - * Appends the string representation of each entry in {@code entries}, using the previously - * configured separator and key-value separator, to {@code appendable}. - * - * @since 11.0 - */ - @Beta - public A appendTo(A appendable, Iterator> parts) - throws IOException { - checkNotNull(appendable); - if (parts.hasNext()) { - Entry entry = parts.next(); - appendable.append(joiner.toString(entry.getKey())); - appendable.append(keyValueSeparator); - appendable.append(joiner.toString(entry.getValue())); - while (parts.hasNext()) { - appendable.append(joiner.separator); - Entry e = parts.next(); - appendable.append(joiner.toString(e.getKey())); - appendable.append(keyValueSeparator); - appendable.append(joiner.toString(e.getValue())); - } - } - return appendable; - } - - /** - * Deprecated. - * - * @since 11.0 - * @deprecated use {@link #appendTo(StringBuilder, Iterator)} by casting {@code entries} to - * {@code Iterator>}, or better yet, by implementing only - * {@code Iterator} and not {@code Iterable}. This method is scheduled for deletion - * in June 2013. - */ - @Beta - @Deprecated - public - > & Iterator>> - StringBuilder appendTo(StringBuilder builder, I entries) throws IOException { - Iterator> iterator = entries; - return appendTo(builder, iterator); - } - - /** - * Appends the string representation of each entry in {@code entries}, using the previously - * configured separator and key-value separator, to {@code builder}. Identical to {@link - * #appendTo(Appendable, Iterable)}, except that it does not throw {@link IOException}. - * - * @since 10.0 - */ - @Beta - public StringBuilder appendTo(StringBuilder builder, Iterable> entries) { - return appendTo(builder, entries.iterator()); - } - - /** - * Appends the string representation of each entry in {@code entries}, using the previously - * configured separator and key-value separator, to {@code builder}. Identical to {@link - * #appendTo(Appendable, Iterable)}, except that it does not throw {@link IOException}. - * - * @since 11.0 - */ - @Beta - public StringBuilder appendTo(StringBuilder builder, Iterator> entries) { - try { - appendTo((Appendable) builder, entries); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - return builder; - } - - /** - * Deprecated. - * - * @since 11.0 - * @deprecated use {@link #join(Iterator)} by casting {@code entries} to - * {@code Iterator>}, or better yet, by implementing only - * {@code Iterator} and not {@code Iterable}. This method is scheduled for deletion - * in June 2013. - */ - @Beta - @Deprecated - public - > & Iterator>> - String join(I entries) throws IOException { - Iterator> iterator = entries; - return join(iterator); - } - - /** - * Returns a string containing the string representation of each entry in {@code entries}, using - * the previously configured separator and key-value separator. - * - * @since 10.0 - */ - @Beta - public String join(Iterable> entries) { - return join(entries.iterator()); - } - - /** - * Returns a string containing the string representation of each entry in {@code entries}, using - * the previously configured separator and key-value separator. - * - * @since 11.0 - */ - @Beta - public String join(Iterator> entries) { - return appendTo(new StringBuilder(), entries).toString(); - } - - /** - * Returns a map joiner with the same behavior as this one, except automatically substituting - * {@code nullText} for any provided null keys or values. - */ - @CheckReturnValue - public MapJoiner useForNull(String nullText) { - return new MapJoiner(joiner.useForNull(nullText), keyValueSeparator); - } - } - - CharSequence toString(Object part) { - checkNotNull(part); // checkNotNull for GWT (do not optimize). - return (part instanceof CharSequence) ? (CharSequence) part : part.toString(); - } - - private static Iterable iterable( - final Object first, final Object second, final Object[] rest) { - checkNotNull(rest); - return new AbstractList() { - - @Override - public int size() { - return rest.length + 2; - } - - - @Override - public Object get(int index) { - switch (index) { - case 0: - return first; - case 1: - return second; - default: - return rest[index - 2]; - } - } - }; - } -} diff --git a/src/com/google/common/base/Objects.java b/src/com/google/common/base/Objects.java deleted file mode 100644 index 6ecca1a1..00000000 --- a/src/com/google/common/base/Objects.java +++ /dev/null @@ -1,442 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.annotations.Beta; -import com.google.common.annotations.GwtCompatible; - -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; - -import javax.annotation.Nullable; - -/** - * Helper functions that can operate on any {@code Object}. - * - *

    See the Guava User Guide on writing - * {@code Object} methods with {@code Objects}. - * - * @author Laurence Gonsalves - * @since 2.0 (imported from Google Collections Library) - */ -@GwtCompatible -public final class Objects { - private Objects() {} - - /** - * Determines whether two possibly-null objects are equal. Returns: - * - *

      - *
    • {@code true} if {@code a} and {@code b} are both null. - *
    • {@code true} if {@code a} and {@code b} are both non-null and they are - * equal according to {@link Object#equals(Object)}. - *
    • {@code false} in all other situations. - *
    - * - *

    This assumes that any non-null objects passed to this function conform - * to the {@code equals()} contract. - */ - public static boolean equal(@Nullable Object a, @Nullable Object b) { - return a == b || (a != null && a.equals(b)); - } - - /** - * Generates a hash code for multiple values. The hash code is generated by - * calling {@link Arrays#hashCode(Object[])}. - * - *

    This is useful for implementing {@link Object#hashCode()}. For example, - * in an object that has three properties, {@code x}, {@code y}, and - * {@code z}, one could write: - *

    -   * public int hashCode() {
    -   *   return Objects.hashCode(getX(), getY(), getZ());
    -   * }
    - * - * Warning: When a single object is supplied, the returned hash code - * does not equal the hash code of that object. - */ - public static int hashCode(@Nullable Object... objects) { - return Arrays.hashCode(objects); - } - - /** - * Creates an instance of {@link ToStringHelper}. - * - *

    This is helpful for implementing {@link Object#toString()}. - * Specification by example:

       {@code
    -   *   // Returns "ClassName{}"
    -   *   Objects.toStringHelper(this)
    -   *       .toString();
    -   *
    -   *   // Returns "ClassName{x=1}"
    -   *   Objects.toStringHelper(this)
    -   *       .add("x", 1)
    -   *       .toString();
    -   *
    -   *   // Returns "MyObject{x=1}"
    -   *   Objects.toStringHelper("MyObject")
    -   *       .add("x", 1)
    -   *       .toString();
    -   *
    -   *   // Returns "ClassName{x=1, y=foo}"
    -   *   Objects.toStringHelper(this)
    -   *       .add("x", 1)
    -   *       .add("y", "foo")
    -   *       .toString();
    -   *   }}
    -   *
    -   *   // Returns "ClassName{x=1}"
    -   *   Objects.toStringHelper(this)
    -   *       .omitNullValues()
    -   *       .add("x", 1)
    -   *       .add("y", null)
    -   *       .toString();
    -   *   }}
    - * - *

    Note that in GWT, class names are often obfuscated. - * - * @param self the object to generate the string for (typically {@code this}), - * used only for its class name - * @since 2.0 - */ - public static ToStringHelper toStringHelper(Object self) { - return new ToStringHelper(simpleName(self.getClass())); - } - - /** - * Creates an instance of {@link ToStringHelper} in the same manner as - * {@link Objects#toStringHelper(Object)}, but using the name of {@code clazz} - * instead of using an instance's {@link Object#getClass()}. - * - *

    Note that in GWT, class names are often obfuscated. - * - * @param clazz the {@link Class} of the instance - * @since 7.0 (source-compatible since 2.0) - */ - public static ToStringHelper toStringHelper(Class clazz) { - return new ToStringHelper(simpleName(clazz)); - } - - /** - * Creates an instance of {@link ToStringHelper} in the same manner as - * {@link Objects#toStringHelper(Object)}, but using {@code className} instead - * of using an instance's {@link Object#getClass()}. - * - * @param className the name of the instance type - * @since 7.0 (source-compatible since 2.0) - */ - public static ToStringHelper toStringHelper(String className) { - return new ToStringHelper(className); - } - - /** - * {@link Class#getSimpleName()} is not GWT compatible yet, so we - * provide our own implementation. - */ - private static String simpleName(Class clazz) { - String name = clazz.getName(); - - // the nth anonymous class has a class name ending in "Outer$n" - // and local inner classes have names ending in "Outer.$1Inner" - name = name.replaceAll("\\$[0-9]+", "\\$"); - - // we want the name of the inner class all by its lonesome - int start = name.lastIndexOf('$'); - - // if this isn't an inner class, just find the start of the - // top level class name. - if (start == -1) { - start = name.lastIndexOf('.'); - } - return name.substring(start + 1); - } - - /** - * Returns the first of two given parameters that is not {@code null}, if - * either is, or otherwise throws a {@link NullPointerException}. - * - *

    Note: if {@code first} is represented as an {@code Optional}, - * this can be accomplished with {@code first.or(second)}. That approach also - * allows for lazy evaluation of the fallback instance, using - * {@code first.or(Supplier)}. - * - * @return {@code first} if {@code first} is not {@code null}, or - * {@code second} if {@code first} is {@code null} and {@code second} is - * not {@code null} - * @throws NullPointerException if both {@code first} and {@code second} were - * {@code null} - * @since 3.0 - */ - public static T firstNonNull(@Nullable T first, @Nullable T second) { - return first != null ? first : checkNotNull(second); - } - - /** - * Support class for {@link Objects#toStringHelper}. - * - * @author Jason Lee - * @since 2.0 - */ - public static final class ToStringHelper { - private final String className; - private final List valueHolders = - new LinkedList(); - private boolean omitNullValues = false; - - /** - * Use {@link Objects#toStringHelper(Object)} to create an instance. - */ - private ToStringHelper(String className) { - this.className = checkNotNull(className); - } - - /** - * When called, the formatted output returned by {@link #toString()} will - * ignore {@code null} values. - * - * @since 12.0 - */ - @Beta - public ToStringHelper omitNullValues() { - omitNullValues = true; - return this; - } - - /** - * Adds a name/value pair to the formatted output in {@code name=value} - * format. If {@code value} is {@code null}, the string {@code "null"} - * is used, unless {@link #omitNullValues()} is called, in which case this - * name/value pair will not be added. - */ - public ToStringHelper add(String name, @Nullable Object value) { - checkNotNull(name); - addHolder(value).builder.append(name).append('=').append(value); - return this; - } - - /** - * Adds a name/value pair to the formatted output in {@code name=value} - * format. - * - * @since 11.0 (source-compatible since 2.0) - */ - public ToStringHelper add(String name, boolean value) { - checkNameAndAppend(name).append(value); - return this; - } - - /** - * Adds a name/value pair to the formatted output in {@code name=value} - * format. - * - * @since 11.0 (source-compatible since 2.0) - */ - public ToStringHelper add(String name, char value) { - checkNameAndAppend(name).append(value); - return this; - } - - /** - * Adds a name/value pair to the formatted output in {@code name=value} - * format. - * - * @since 11.0 (source-compatible since 2.0) - */ - public ToStringHelper add(String name, double value) { - checkNameAndAppend(name).append(value); - return this; - } - - /** - * Adds a name/value pair to the formatted output in {@code name=value} - * format. - * - * @since 11.0 (source-compatible since 2.0) - */ - public ToStringHelper add(String name, float value) { - checkNameAndAppend(name).append(value); - return this; - } - - /** - * Adds a name/value pair to the formatted output in {@code name=value} - * format. - * - * @since 11.0 (source-compatible since 2.0) - */ - public ToStringHelper add(String name, int value) { - checkNameAndAppend(name).append(value); - return this; - } - - /** - * Adds a name/value pair to the formatted output in {@code name=value} - * format. - * - * @since 11.0 (source-compatible since 2.0) - */ - public ToStringHelper add(String name, long value) { - checkNameAndAppend(name).append(value); - return this; - } - - private StringBuilder checkNameAndAppend(String name) { - checkNotNull(name); - return addHolder().builder.append(name).append('='); - } - - /** - * Adds an unnamed value to the formatted output. - * - *

    It is strongly encouraged to use {@link #add(String, Object)} instead - * and give value a readable name. - */ - public ToStringHelper addValue(@Nullable Object value) { - addHolder(value).builder.append(value); - return this; - } - - /** - * Adds an unnamed value to the formatted output. - * - *

    It is strongly encouraged to use {@link #add(String, boolean)} instead - * and give value a readable name. - * - * @since 11.0 (source-compatible since 2.0) - */ - public ToStringHelper addValue(boolean value) { - addHolder().builder.append(value); - return this; - } - - /** - * Adds an unnamed value to the formatted output. - * - *

    It is strongly encouraged to use {@link #add(String, char)} instead - * and give value a readable name. - * - * @since 11.0 (source-compatible since 2.0) - */ - public ToStringHelper addValue(char value) { - addHolder().builder.append(value); - return this; - } - - /** - * Adds an unnamed value to the formatted output. - * - *

    It is strongly encouraged to use {@link #add(String, double)} instead - * and give value a readable name. - * - * @since 11.0 (source-compatible since 2.0) - */ - public ToStringHelper addValue(double value) { - addHolder().builder.append(value); - return this; - } - - /** - * Adds an unnamed value to the formatted output. - * - *

    It is strongly encouraged to use {@link #add(String, float)} instead - * and give value a readable name. - * - * @since 11.0 (source-compatible since 2.0) - */ - public ToStringHelper addValue(float value) { - addHolder().builder.append(value); - return this; - } - - /** - * Adds an unnamed value to the formatted output. - * - *

    It is strongly encouraged to use {@link #add(String, int)} instead - * and give value a readable name. - * - * @since 11.0 (source-compatible since 2.0) - */ - public ToStringHelper addValue(int value) { - addHolder().builder.append(value); - return this; - } - - /** - * Adds an unnamed value to the formatted output. - * - *

    It is strongly encouraged to use {@link #add(String, long)} instead - * and give value a readable name. - * - * @since 11.0 (source-compatible since 2.0) - */ - public ToStringHelper addValue(long value) { - addHolder().builder.append(value); - return this; - } - - /** - * Returns a string in the format specified by {@link - * Objects#toStringHelper(Object)}. - */ - - @Override - public String toString() { - // create a copy to keep it consistent in case value changes - boolean omitNullValuesSnapshot = omitNullValues; - boolean needsSeparator = false; - StringBuilder builder = new StringBuilder(32).append(className) - .append('{'); - for (ValueHolder valueHolder : valueHolders) { - if (!omitNullValuesSnapshot || !valueHolder.isNull) { - if (needsSeparator) { - builder.append(", "); - } else { - needsSeparator = true; - } - // must explicitly cast it, otherwise GWT tests might fail because - // it tries to access StringBuilder.append(StringBuilder), which is - // a private method - // TODO(user): change once 5904010 is fixed - CharSequence sequence = valueHolder.builder; - builder.append(sequence); - } - } - return builder.append('}').toString(); - } - - private ValueHolder addHolder() { - ValueHolder valueHolder = new ValueHolder(); - valueHolders.add(valueHolder); - return valueHolder; - } - - private ValueHolder addHolder(@Nullable Object value) { - ValueHolder valueHolder = addHolder(); - valueHolder.isNull = (value == null); - return valueHolder; - } - - private static final class ValueHolder { - final StringBuilder builder = new StringBuilder(); - boolean isNull; - } - } -} diff --git a/src/com/google/common/base/Optional.java b/src/com/google/common/base/Optional.java deleted file mode 100644 index cbd150e0..00000000 --- a/src/com/google/common/base/Optional.java +++ /dev/null @@ -1,249 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.annotations.Beta; -import com.google.common.annotations.GwtCompatible; - -import java.io.Serializable; -import java.util.Iterator; -import java.util.Set; - -import javax.annotation.Nullable; - -/** - * An immutable object that may contain a non-null reference to another object. Each - * instance of this type either contains a non-null reference, or contains nothing (in - * which case we say that the reference is "absent"); it is never said to "contain {@code - * null}". - * - *

    A non-null {@code Optional} reference can be used as a replacement for a nullable - * {@code T} reference. It allows you to represent "a {@code T} that must be present" and - * a "a {@code T} that might be absent" as two distinct types in your program, which can - * aid clarity. - * - *

    Some uses of this class include - * - *

      - *
    • As a method return type, as an alternative to returning {@code null} to indicate - * that no value was available - *
    • To distinguish between "unknown" (for example, not present in a map) and "known to - * have no value" (present in the map, with value {@code Optional.absent()}) - *
    • To wrap nullable references for storage in a collection that does not support - * {@code null} (though there are - * - * several other approaches to this that should be considered first) - *
    - * - *

    A common alternative to using this class is to find or create a suitable - * null object for the - * type in question. - * - *

    This class is not intended as a direct analogue of any existing "option" or "maybe" - * construct from other programming environments, though it may bear some similarities. - * - *

    See the Guava User Guide article on - * using {@code Optional}. - * - * @param the type of instance that can be contained. {@code Optional} is naturally - * covariant on this type, so it is safe to cast an {@code Optional} to {@code - * Optional} for any supertype {@code S} of {@code T}. - * @author Kurt Alfred Kluever - * @author Kevin Bourrillion - * @since 10.0 - */ -@GwtCompatible(serializable = true) -public abstract class Optional implements Serializable { - /** - * Returns an {@code Optional} instance with no contained reference. - */ - @SuppressWarnings("unchecked") - public static Optional absent() { - return (Optional) Absent.INSTANCE; - } - - /** - * Returns an {@code Optional} instance containing the given non-null reference. - */ - public static Optional of(T reference) { - return new Present(checkNotNull(reference)); - } - - /** - * If {@code nullableReference} is non-null, returns an {@code Optional} instance containing that - * reference; otherwise returns {@link Optional#absent}. - */ - public static Optional fromNullable(@Nullable T nullableReference) { - return (nullableReference == null) - ? Optional.absent() - : new Present(nullableReference); - } - - Optional() {} - - /** - * Returns {@code true} if this holder contains a (non-null) instance. - */ - public abstract boolean isPresent(); - - /** - * Returns the contained instance, which must be present. If the instance might be - * absent, use {@link #or(Object)} or {@link #orNull} instead. - * - * @throws IllegalStateException if the instance is absent ({@link #isPresent} returns - * {@code false}) - */ - public abstract T get(); - - /** - * Returns the contained instance if it is present; {@code defaultValue} otherwise. If - * no default value should be required because the instance is known to be present, use - * {@link #get()} instead. For a default value of {@code null}, use {@link #orNull}. - * - *

    Note about generics: The signature {@code public T or(T defaultValue)} is overly - * restrictive. However, the ideal signature, {@code public S or(S)}, is not legal - * Java. As a result, some sensible operations involving subtypes are compile errors: - *

       {@code
    -   *
    -   *   Optional optionalInt = getSomeOptionalInt();
    -   *   Number value = optionalInt.or(0.5); // error
    -   *
    -   *   FluentIterable numbers = getSomeNumbers();
    -   *   Optional first = numbers.first();
    -   *   Number value = first.or(0.5); // error}
    - * - * As a workaround, it is always safe to cast an {@code Optional} to {@code - * Optional}. Casting either of the above example {@code Optional} instances to {@code - * Optional} (where {@code Number} is the desired output type) solves the problem: - *
       {@code
    -   *
    -   *   Optional optionalInt = (Optional) getSomeOptionalInt();
    -   *   Number value = optionalInt.or(0.5); // fine
    -   *
    -   *   FluentIterable numbers = getSomeNumbers();
    -   *   Optional first = (Optional) numbers.first();
    -   *   Number value = first.or(0.5); // fine}
    - */ - public abstract T or(T defaultValue); - - /** - * Returns this {@code Optional} if it has a value present; {@code secondChoice} - * otherwise. - */ - @Beta - public abstract Optional or(Optional secondChoice); - - /** - * Returns the contained instance if it is present; {@code supplier.get()} otherwise. If the - * supplier returns {@code null}, a {@link NullPointerException} is thrown. - * - * @throws NullPointerException if the supplier returns {@code null} - */ - @Beta - public abstract T or(Supplier supplier); - - /** - * Returns the contained instance if it is present; {@code null} otherwise. If the - * instance is known to be present, use {@link #get()} instead. - */ - @Nullable - public abstract T orNull(); - - /** - * Returns an immutable singleton {@link Set} whose only element is the contained instance - * if it is present; an empty immutable {@link Set} otherwise. - * - * @since 11.0 - */ - public abstract Set asSet(); - - /** - * If the instance is present, it is transformed with the given {@link Function}; otherwise, - * {@link Optional#absent} is returned. If the function returns {@code null}, a - * {@link NullPointerException} is thrown. - * - * @throws NullPointerException if the function returns {@code null} - * - * @since 12.0 - */ - @Beta - public abstract Optional transform(Function function); - - /** - * Returns {@code true} if {@code object} is an {@code Optional} instance, and either - * the contained references are {@linkplain Object#equals equal} to each other or both - * are absent. Note that {@code Optional} instances of differing parameterized types can - * be equal. - */ - - @Override - public abstract boolean equals(@Nullable Object object); - - /** - * Returns a hash code for this instance. - */ - - @Override - public abstract int hashCode(); - - /** - * Returns a string representation for this instance. The form of this string - * representation is unspecified. - */ - - @Override - public abstract String toString(); - - /** - * Returns the value of each present instance from the supplied {@code optionals}, in order, - * skipping over occurrences of {@link Optional#absent}. Iterators are unmodifiable and are - * evaluated lazily. - * - * @since 11.0 (generics widened in 13.0) - */ - @Beta - public static Iterable presentInstances( - final Iterable> optionals) { - checkNotNull(optionals); - return new Iterable() { - - public Iterator iterator() { - return new AbstractIterator() { - private final Iterator> iterator = - checkNotNull(optionals.iterator()); - - - @Override - protected T computeNext() { - while (iterator.hasNext()) { - Optional optional = iterator.next(); - if (optional.isPresent()) { - return optional.get(); - } - } - return endOfData(); - } - }; - }; - }; - } - - private static final long serialVersionUID = 0; -} diff --git a/src/com/google/common/base/Preconditions.java b/src/com/google/common/base/Preconditions.java deleted file mode 100644 index 5ebfeeed..00000000 --- a/src/com/google/common/base/Preconditions.java +++ /dev/null @@ -1,445 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import java.util.NoSuchElementException; - -import javax.annotation.Nullable; - -/** - * Simple static methods to be called at the start of your own methods to verify - * correct arguments and state. This allows constructs such as - *
    - *     if (count <= 0) {
    - *       throw new IllegalArgumentException("must be positive: " + count);
    - *     }
    - * - * to be replaced with the more compact - *
    - *     checkArgument(count > 0, "must be positive: %s", count);
    - * - * Note that the sense of the expression is inverted; with {@code Preconditions} - * you declare what you expect to be true, just as you do with an - * - * {@code assert} or a JUnit {@code assertTrue} call. - * - *

    Warning: only the {@code "%s"} specifier is recognized as a - * placeholder in these messages, not the full range of {@link - * String#format(String, Object[])} specifiers. - * - *

    Take care not to confuse precondition checking with other similar types - * of checks! Precondition exceptions -- including those provided here, but also - * {@link IndexOutOfBoundsException}, {@link NoSuchElementException}, {@link - * UnsupportedOperationException} and others -- are used to signal that the - * calling method has made an error. This tells the caller that it should - * not have invoked the method when it did, with the arguments it did, or - * perhaps ever. Postcondition or other invariant failures should not throw - * these types of exceptions. - * - *

    See the Guava User Guide on - * using {@code Preconditions}. - * - * @author Kevin Bourrillion - * @since 2.0 (imported from Google Collections Library) - */ -public final class Preconditions { - private Preconditions() {} - - /** - * Ensures the truth of an expression involving one or more parameters to the - * calling method. - * - * @param expression a boolean expression - * @throws IllegalArgumentException if {@code expression} is false - */ - public static void checkArgument(boolean expression) { - if (!expression) { - throw new IllegalArgumentException(); - } - } - - /** - * Ensures the truth of an expression involving one or more parameters to the - * calling method. - * - * @param expression a boolean expression - * @param errorMessage the exception message to use if the check fails; will - * be converted to a string using {@link String#valueOf(Object)} - * @throws IllegalArgumentException if {@code expression} is false - */ - public static void checkArgument( - boolean expression, @Nullable Object errorMessage) { - if (!expression) { - throw new IllegalArgumentException(String.valueOf(errorMessage)); - } - } - - /** - * Ensures the truth of an expression involving one or more parameters to the - * calling method. - * - * @param expression a boolean expression - * @param errorMessageTemplate a template for the exception message should the - * check fail. The message is formed by replacing each {@code %s} - * placeholder in the template with an argument. These are matched by - * position - the first {@code %s} gets {@code errorMessageArgs[0]}, etc. - * Unmatched arguments will be appended to the formatted message in square - * braces. Unmatched placeholders will be left as-is. - * @param errorMessageArgs the arguments to be substituted into the message - * template. Arguments are converted to strings using - * {@link String#valueOf(Object)}. - * @throws IllegalArgumentException if {@code expression} is false - * @throws NullPointerException if the check fails and either {@code - * errorMessageTemplate} or {@code errorMessageArgs} is null (don't let - * this happen) - */ - public static void checkArgument(boolean expression, - @Nullable String errorMessageTemplate, - @Nullable Object... errorMessageArgs) { - if (!expression) { - throw new IllegalArgumentException( - format(errorMessageTemplate, errorMessageArgs)); - } - } - - /** - * Ensures the truth of an expression involving the state of the calling - * instance, but not involving any parameters to the calling method. - * - * @param expression a boolean expression - * @throws IllegalStateException if {@code expression} is false - */ - public static void checkState(boolean expression) { - if (!expression) { - throw new IllegalStateException(); - } - } - - /** - * Ensures the truth of an expression involving the state of the calling - * instance, but not involving any parameters to the calling method. - * - * @param expression a boolean expression - * @param errorMessage the exception message to use if the check fails; will - * be converted to a string using {@link String#valueOf(Object)} - * @throws IllegalStateException if {@code expression} is false - */ - public static void checkState( - boolean expression, @Nullable Object errorMessage) { - if (!expression) { - throw new IllegalStateException(String.valueOf(errorMessage)); - } - } - - /** - * Ensures the truth of an expression involving the state of the calling - * instance, but not involving any parameters to the calling method. - * - * @param expression a boolean expression - * @param errorMessageTemplate a template for the exception message should the - * check fail. The message is formed by replacing each {@code %s} - * placeholder in the template with an argument. These are matched by - * position - the first {@code %s} gets {@code errorMessageArgs[0]}, etc. - * Unmatched arguments will be appended to the formatted message in square - * braces. Unmatched placeholders will be left as-is. - * @param errorMessageArgs the arguments to be substituted into the message - * template. Arguments are converted to strings using - * {@link String#valueOf(Object)}. - * @throws IllegalStateException if {@code expression} is false - * @throws NullPointerException if the check fails and either {@code - * errorMessageTemplate} or {@code errorMessageArgs} is null (don't let - * this happen) - */ - public static void checkState(boolean expression, - @Nullable String errorMessageTemplate, - @Nullable Object... errorMessageArgs) { - if (!expression) { - throw new IllegalStateException( - format(errorMessageTemplate, errorMessageArgs)); - } - } - - /** - * Ensures that an object reference passed as a parameter to the calling - * method is not null. - * - * @param reference an object reference - * @return the non-null reference that was validated - * @throws NullPointerException if {@code reference} is null - */ - public static T checkNotNull(T reference) { - if (reference == null) { - throw new NullPointerException(); - } - return reference; - } - - /** - * Ensures that an object reference passed as a parameter to the calling - * method is not null. - * - * @param reference an object reference - * @param errorMessage the exception message to use if the check fails; will - * be converted to a string using {@link String#valueOf(Object)} - * @return the non-null reference that was validated - * @throws NullPointerException if {@code reference} is null - */ - public static T checkNotNull(T reference, @Nullable Object errorMessage) { - if (reference == null) { - throw new NullPointerException(String.valueOf(errorMessage)); - } - return reference; - } - - /** - * Ensures that an object reference passed as a parameter to the calling - * method is not null. - * - * @param reference an object reference - * @param errorMessageTemplate a template for the exception message should the - * check fail. The message is formed by replacing each {@code %s} - * placeholder in the template with an argument. These are matched by - * position - the first {@code %s} gets {@code errorMessageArgs[0]}, etc. - * Unmatched arguments will be appended to the formatted message in square - * braces. Unmatched placeholders will be left as-is. - * @param errorMessageArgs the arguments to be substituted into the message - * template. Arguments are converted to strings using - * {@link String#valueOf(Object)}. - * @return the non-null reference that was validated - * @throws NullPointerException if {@code reference} is null - */ - public static T checkNotNull(T reference, - @Nullable String errorMessageTemplate, - @Nullable Object... errorMessageArgs) { - if (reference == null) { - // If either of these parameters is null, the right thing happens anyway - throw new NullPointerException( - format(errorMessageTemplate, errorMessageArgs)); - } - return reference; - } - - /* - * All recent hotspots (as of 2009) *really* like to have the natural code - * - * if (guardExpression) { - * throw new BadException(messageExpression); - * } - * - * refactored so that messageExpression is moved to a separate - * String-returning method. - * - * if (guardExpression) { - * throw new BadException(badMsg(...)); - * } - * - * The alternative natural refactorings into void or Exception-returning - * methods are much slower. This is a big deal - we're talking factors of - * 2-8 in microbenchmarks, not just 10-20%. (This is a hotspot optimizer - * bug, which should be fixed, but that's a separate, big project). - * - * The coding pattern above is heavily used in java.util, e.g. in ArrayList. - * There is a RangeCheckMicroBenchmark in the JDK that was used to test this. - * - * But the methods in this class want to throw different exceptions, - * depending on the args, so it appears that this pattern is not directly - * applicable. But we can use the ridiculous, devious trick of throwing an - * exception in the middle of the construction of another exception. - * Hotspot is fine with that. - */ - - /** - * Ensures that {@code index} specifies a valid element in an array, - * list or string of size {@code size}. An element index may range from zero, - * inclusive, to {@code size}, exclusive. - * - * @param index a user-supplied index identifying an element of an array, list - * or string - * @param size the size of that array, list or string - * @return the value of {@code index} - * @throws IndexOutOfBoundsException if {@code index} is negative or is not - * less than {@code size} - * @throws IllegalArgumentException if {@code size} is negative - */ - public static int checkElementIndex(int index, int size) { - return checkElementIndex(index, size, "index"); - } - - /** - * Ensures that {@code index} specifies a valid element in an array, - * list or string of size {@code size}. An element index may range from zero, - * inclusive, to {@code size}, exclusive. - * - * @param index a user-supplied index identifying an element of an array, list - * or string - * @param size the size of that array, list or string - * @param desc the text to use to describe this index in an error message - * @return the value of {@code index} - * @throws IndexOutOfBoundsException if {@code index} is negative or is not - * less than {@code size} - * @throws IllegalArgumentException if {@code size} is negative - */ - public static int checkElementIndex( - int index, int size, @Nullable String desc) { - // Carefully optimized for execution by hotspot (explanatory comment above) - if (index < 0 || index >= size) { - throw new IndexOutOfBoundsException(badElementIndex(index, size, desc)); - } - return index; - } - - private static String badElementIndex(int index, int size, String desc) { - if (index < 0) { - return format("%s (%s) must not be negative", desc, index); - } else if (size < 0) { - throw new IllegalArgumentException("negative size: " + size); - } else { // index >= size - return format("%s (%s) must be less than size (%s)", desc, index, size); - } - } - - /** - * Ensures that {@code index} specifies a valid position in an array, - * list or string of size {@code size}. A position index may range from zero - * to {@code size}, inclusive. - * - * @param index a user-supplied index identifying a position in an array, list - * or string - * @param size the size of that array, list or string - * @return the value of {@code index} - * @throws IndexOutOfBoundsException if {@code index} is negative or is - * greater than {@code size} - * @throws IllegalArgumentException if {@code size} is negative - */ - public static int checkPositionIndex(int index, int size) { - return checkPositionIndex(index, size, "index"); - } - - /** - * Ensures that {@code index} specifies a valid position in an array, - * list or string of size {@code size}. A position index may range from zero - * to {@code size}, inclusive. - * - * @param index a user-supplied index identifying a position in an array, list - * or string - * @param size the size of that array, list or string - * @param desc the text to use to describe this index in an error message - * @return the value of {@code index} - * @throws IndexOutOfBoundsException if {@code index} is negative or is - * greater than {@code size} - * @throws IllegalArgumentException if {@code size} is negative - */ - public static int checkPositionIndex( - int index, int size, @Nullable String desc) { - // Carefully optimized for execution by hotspot (explanatory comment above) - if (index < 0 || index > size) { - throw new IndexOutOfBoundsException(badPositionIndex(index, size, desc)); - } - return index; - } - - private static String badPositionIndex(int index, int size, String desc) { - if (index < 0) { - return format("%s (%s) must not be negative", desc, index); - } else if (size < 0) { - throw new IllegalArgumentException("negative size: " + size); - } else { // index > size - return format("%s (%s) must not be greater than size (%s)", - desc, index, size); - } - } - - /** - * Ensures that {@code start} and {@code end} specify a valid positions - * in an array, list or string of size {@code size}, and are in order. A - * position index may range from zero to {@code size}, inclusive. - * - * @param start a user-supplied index identifying a starting position in an - * array, list or string - * @param end a user-supplied index identifying a ending position in an array, - * list or string - * @param size the size of that array, list or string - * @throws IndexOutOfBoundsException if either index is negative or is - * greater than {@code size}, or if {@code end} is less than {@code start} - * @throws IllegalArgumentException if {@code size} is negative - */ - public static void checkPositionIndexes(int start, int end, int size) { - // Carefully optimized for execution by hotspot (explanatory comment above) - if (start < 0 || end < start || end > size) { - throw new IndexOutOfBoundsException(badPositionIndexes(start, end, size)); - } - } - - private static String badPositionIndexes(int start, int end, int size) { - if (start < 0 || start > size) { - return badPositionIndex(start, size, "start index"); - } - if (end < 0 || end > size) { - return badPositionIndex(end, size, "end index"); - } - // end < start - return format("end index (%s) must not be less than start index (%s)", - end, start); - } - - /** - * Substitutes each {@code %s} in {@code template} with an argument. These - * are matched by position - the first {@code %s} gets {@code args[0]}, etc. - * If there are more arguments than placeholders, the unmatched arguments will - * be appended to the end of the formatted message in square braces. - * - * @param template a non-null string containing 0 or more {@code %s} - * placeholders. - * @param args the arguments to be substituted into the message - * template. Arguments are converted to strings using - * {@link String#valueOf(Object)}. Arguments can be null. - */ - static String format(String template, - @Nullable Object... args) { - template = String.valueOf(template); // null -> "null" - - // start substituting the arguments into the '%s' placeholders - StringBuilder builder = new StringBuilder( - template.length() + 16 * args.length); - int templateStart = 0; - int i = 0; - while (i < args.length) { - int placeholderStart = template.indexOf("%s", templateStart); - if (placeholderStart == -1) { - break; - } - builder.append(template.substring(templateStart, placeholderStart)); - builder.append(args[i++]); - templateStart = placeholderStart + 2; - } - builder.append(template.substring(templateStart)); - - // if we run out of placeholders, append the extra args in square braces - if (i < args.length) { - builder.append(" ["); - builder.append(args[i++]); - while (i < args.length) { - builder.append(", "); - builder.append(args[i++]); - } - builder.append(']'); - } - - return builder.toString(); - } -} diff --git a/src/com/google/common/base/Present.java b/src/com/google/common/base/Present.java deleted file mode 100644 index 9d4a6c3d..00000000 --- a/src/com/google/common/base/Present.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.annotations.GwtCompatible; - -import java.util.Collections; -import java.util.Set; - -import javax.annotation.Nullable; - -/** - * Implementation of an {@link Optional} containing a reference. - */ -@GwtCompatible -final class Present extends Optional { - private final T reference; - - Present(T reference) { - this.reference = reference; - } - - - @Override - public boolean isPresent() { - return true; - } - - - @Override - public T get() { - return reference; - } - - - @Override - public T or(T defaultValue) { - checkNotNull(defaultValue, "use orNull() instead of or(null)"); - return reference; - } - - - @Override - public Optional or(Optional secondChoice) { - checkNotNull(secondChoice); - return this; - } - - - @Override - public T or(Supplier supplier) { - checkNotNull(supplier); - return reference; - } - - - @Override - public T orNull() { - return reference; - } - - - @Override - public Set asSet() { - return Collections.singleton(reference); - } - - - @Override - public Optional transform(Function function) { - return new Present(checkNotNull(function.apply(reference), - "Transformation function cannot return null.")); - } - - - @Override - public boolean equals(@Nullable Object object) { - if (object instanceof Present) { - Present other = (Present) object; - return reference.equals(other.reference); - } - return false; - } - - - @Override - public int hashCode() { - return 0x598df91c + reference.hashCode(); - } - - - @Override - public String toString() { - return "Optional.of(" + reference + ")"; - } - - private static final long serialVersionUID = 0; -} diff --git a/src/com/google/common/base/Strings.java b/src/com/google/common/base/Strings.java deleted file mode 100644 index f2332cb5..00000000 --- a/src/com/google/common/base/Strings.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright (C) 2010 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Formatter; - -import javax.annotation.Nullable; - -/** - * Static utility methods pertaining to {@code String} or {@code CharSequence} - * instances. - * - * @author Kevin Bourrillion - * @since 3.0 - */ -public final class Strings { - private Strings() {} - - /** - * Returns the given string if it is non-null; the empty string otherwise. - * - * @param string the string to test and possibly return - * @return {@code string} itself if it is non-null; {@code ""} if it is null - */ - public static String nullToEmpty(@Nullable String string) { - return (string == null) ? "" : string; - } - - /** - * Returns the given string if it is nonempty; {@code null} otherwise. - * - * @param string the string to test and possibly return - * @return {@code string} itself if it is nonempty; {@code null} if it is - * empty or null - */ - public static @Nullable String emptyToNull(@Nullable String string) { - return isNullOrEmpty(string) ? null : string; - } - - /** - * Returns {@code true} if the given string is null or is the empty string. - * - *

    Consider normalizing your string references with {@link #nullToEmpty}. - * If you do, you can use {@link String#isEmpty()} instead of this - * method, and you won't need special null-safe forms of methods like {@link - * String#toUpperCase} either. Or, if you'd like to normalize "in the other - * direction," converting empty strings to {@code null}, you can use {@link - * #emptyToNull}. - * - * @param string a string reference to check - * @return {@code true} if the string is null or is the empty string - */ - public static boolean isNullOrEmpty(@Nullable String string) { - return string == null || string.length() == 0; // string.isEmpty() in Java 6 - } - - /** - * Returns a string, of length at least {@code minLength}, consisting of - * {@code string} prepended with as many copies of {@code padChar} as are - * necessary to reach that length. For example, - * - *

      - *
    • {@code padStart("7", 3, '0')} returns {@code "007"} - *
    • {@code padStart("2010", 3, '0')} returns {@code "2010"} - *
    - * - *

    See {@link Formatter} for a richer set of formatting capabilities. - * - * @param string the string which should appear at the end of the result - * @param minLength the minimum length the resulting string must have. Can be - * zero or negative, in which case the input string is always returned. - * @param padChar the character to insert at the beginning of the result until - * the minimum length is reached - * @return the padded string - */ - public static String padStart(String string, int minLength, char padChar) { - checkNotNull(string); // eager for GWT. - if (string.length() >= minLength) { - return string; - } - StringBuilder sb = new StringBuilder(minLength); - for (int i = string.length(); i < minLength; i++) { - sb.append(padChar); - } - sb.append(string); - return sb.toString(); - } - - /** - * Returns a string, of length at least {@code minLength}, consisting of - * {@code string} appended with as many copies of {@code padChar} as are - * necessary to reach that length. For example, - * - *

      - *
    • {@code padEnd("4.", 5, '0')} returns {@code "4.000"} - *
    • {@code padEnd("2010", 3, '!')} returns {@code "2010"} - *
    - * - *

    See {@link Formatter} for a richer set of formatting capabilities. - * - * @param string the string which should appear at the beginning of the result - * @param minLength the minimum length the resulting string must have. Can be - * zero or negative, in which case the input string is always returned. - * @param padChar the character to append to the end of the result until the - * minimum length is reached - * @return the padded string - */ - public static String padEnd(String string, int minLength, char padChar) { - checkNotNull(string); // eager for GWT. - if (string.length() >= minLength) { - return string; - } - StringBuilder sb = new StringBuilder(minLength); - sb.append(string); - for (int i = string.length(); i < minLength; i++) { - sb.append(padChar); - } - return sb.toString(); - } - - /** - * Returns a string consisting of a specific number of concatenated copies of - * an input string. For example, {@code repeat("hey", 3)} returns the string - * {@code "heyheyhey"}. - * - * @param string any non-null string - * @param count the number of times to repeat it; a nonnegative integer - * @return a string containing {@code string} repeated {@code count} times - * (the empty string if {@code count} is zero) - * @throws IllegalArgumentException if {@code count} is negative - */ - public static String repeat(String string, int count) { - checkNotNull(string); // eager for GWT. - - if (count <= 1) { - checkArgument(count >= 0, "invalid count: %s", count); - return (count == 0) ? "" : string; - } - - // IF YOU MODIFY THE CODE HERE, you must update StringsRepeatBenchmark - final int len = string.length(); - final long longSize = (long) len * (long) count; - final int size = (int) longSize; - if (size != longSize) { - throw new ArrayIndexOutOfBoundsException("Required array size too large: " - + String.valueOf(longSize)); - } - - final char[] array = new char[size]; - string.getChars(0, len, array, 0); - int n; - for (n = len; n < size - n; n <<= 1) { - System.arraycopy(array, 0, array, n, n); - } - System.arraycopy(array, 0, array, n, size - n); - return new String(array); - } - - /** - * Returns the longest string {@code prefix} such that - * {@code a.toString().startsWith(prefix) && b.toString().startsWith(prefix)}, - * taking care not to split surrogate pairs. If {@code a} and {@code b} have - * no common prefix, returns the empty string. - * - * @since 11.0 - */ - public static String commonPrefix(CharSequence a, CharSequence b) { - checkNotNull(a); - checkNotNull(b); - - int maxPrefixLength = Math.min(a.length(), b.length()); - int p = 0; - while (p < maxPrefixLength && a.charAt(p) == b.charAt(p)) { - p++; - } - if (validSurrogatePairAt(a, p - 1) || validSurrogatePairAt(b, p - 1)) { - p--; - } - return a.subSequence(0, p).toString(); - } - - /** - * Returns the longest string {@code suffix} such that - * {@code a.toString().endsWith(suffix) && b.toString().endsWith(suffix)}, - * taking care not to split surrogate pairs. If {@code a} and {@code b} have - * no common suffix, returns the empty string. - * - * @since 11.0 - */ - public static String commonSuffix(CharSequence a, CharSequence b) { - checkNotNull(a); - checkNotNull(b); - - int maxSuffixLength = Math.min(a.length(), b.length()); - int s = 0; - while (s < maxSuffixLength - && a.charAt(a.length() - s - 1) == b.charAt(b.length() - s - 1)) { - s++; - } - if (validSurrogatePairAt(a, a.length() - s - 1) - || validSurrogatePairAt(b, b.length() - s - 1)) { - s--; - } - return a.subSequence(a.length() - s, a.length()).toString(); - } - - /** - * True when a valid surrogate pair starts at the given {@code index} in the - * given {@code string}. Out-of-range indexes return false. - */ - static boolean validSurrogatePairAt(CharSequence string, int index) { - return index >= 0 && index <= (string.length() - 2) - && Character.isHighSurrogate(string.charAt(index)) - && Character.isLowSurrogate(string.charAt(index + 1)); - } -} diff --git a/src/com/google/common/base/Supplier.java b/src/com/google/common/base/Supplier.java deleted file mode 100644 index ab8b908a..00000000 --- a/src/com/google/common/base/Supplier.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import com.google.common.annotations.GwtCompatible; - -/** - * A class that can supply objects of a single type. Semantically, this could - * be a factory, generator, builder, closure, or something else entirely. No - * guarantees are implied by this interface. - * - * @author Harry Heymann - * @since 2.0 (imported from Google Collections Library) - */ -@GwtCompatible -public interface Supplier { - /** - * Retrieves an instance of the appropriate type. The returned object may or - * may not be a new instance, depending on the implementation. - * - * @return an instance of the appropriate type - */ - T get(); -} diff --git a/src/com/google/common/base/Throwables.java b/src/com/google/common/base/Throwables.java deleted file mode 100644 index 5e4d6ec9..00000000 --- a/src/com/google/common/base/Throwables.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.annotations.Beta; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import javax.annotation.Nullable; - -/** - * Static utility methods pertaining to instances of {@link Throwable}. - * - *

    See the Guava User Guide entry on - * Throwables. - * - * @author Kevin Bourrillion - * @author Ben Yu - * @since 1.0 - */ -public final class Throwables { - private Throwables() {} - - /** - * Propagates {@code throwable} exactly as-is, if and only if it is an - * instance of {@code declaredType}. Example usage: - *

    -   *   try {
    -   *     someMethodThatCouldThrowAnything();
    -   *   } catch (IKnowWhatToDoWithThisException e) {
    -   *     handle(e);
    -   *   } catch (Throwable t) {
    -   *     Throwables.propagateIfInstanceOf(t, IOException.class);
    -   *     Throwables.propagateIfInstanceOf(t, SQLException.class);
    -   *     throw Throwables.propagate(t);
    -   *   }
    -   * 
    - */ - public static void propagateIfInstanceOf( - @Nullable Throwable throwable, Class declaredType) throws X { - // Check for null is needed to avoid frequent JNI calls to isInstance(). - if (throwable != null && declaredType.isInstance(throwable)) { - throw declaredType.cast(throwable); - } - } - - /** - * Propagates {@code throwable} exactly as-is, if and only if it is an - * instance of {@link RuntimeException} or {@link Error}. Example usage: - *
    -   *   try {
    -   *     someMethodThatCouldThrowAnything();
    -   *   } catch (IKnowWhatToDoWithThisException e) {
    -   *     handle(e);
    -   *   } catch (Throwable t) {
    -   *     Throwables.propagateIfPossible(t);
    -   *     throw new RuntimeException("unexpected", t);
    -   *   }
    -   * 
    - */ - public static void propagateIfPossible(@Nullable Throwable throwable) { - propagateIfInstanceOf(throwable, Error.class); - propagateIfInstanceOf(throwable, RuntimeException.class); - } - - /** - * Propagates {@code throwable} exactly as-is, if and only if it is an - * instance of {@link RuntimeException}, {@link Error}, or - * {@code declaredType}. Example usage: - *
    -   *   try {
    -   *     someMethodThatCouldThrowAnything();
    -   *   } catch (IKnowWhatToDoWithThisException e) {
    -   *     handle(e);
    -   *   } catch (Throwable t) {
    -   *     Throwables.propagateIfPossible(t, OtherException.class);
    -   *     throw new RuntimeException("unexpected", t);
    -   *   }
    -   * 
    - * - * @param throwable the Throwable to possibly propagate - * @param declaredType the single checked exception type declared by the - * calling method - */ - public static void propagateIfPossible( - @Nullable Throwable throwable, Class declaredType) throws X { - propagateIfInstanceOf(throwable, declaredType); - propagateIfPossible(throwable); - } - - /** - * Propagates {@code throwable} exactly as-is, if and only if it is an - * instance of {@link RuntimeException}, {@link Error}, {@code declaredType1}, - * or {@code declaredType2}. In the unlikely case that you have three or more - * declared checked exception types, you can handle them all by invoking these - * methods repeatedly. See usage example in {@link - * #propagateIfPossible(Throwable, Class)}. - * - * @param throwable the Throwable to possibly propagate - * @param declaredType1 any checked exception type declared by the calling - * method - * @param declaredType2 any other checked exception type declared by the - * calling method - */ - public static - void propagateIfPossible(@Nullable Throwable throwable, - Class declaredType1, Class declaredType2) throws X1, X2 { - checkNotNull(declaredType2); - propagateIfInstanceOf(throwable, declaredType1); - propagateIfPossible(throwable, declaredType2); - } - - /** - * Propagates {@code throwable} as-is if it is an instance of - * {@link RuntimeException} or {@link Error}, or else as a last resort, wraps - * it in a {@code RuntimeException} then propagates. - *

    - * This method always throws an exception. The {@code RuntimeException} return - * type is only for client code to make Java type system happy in case a - * return value is required by the enclosing method. Example usage: - *

    -   *   T doSomething() {
    -   *     try {
    -   *       return someMethodThatCouldThrowAnything();
    -   *     } catch (IKnowWhatToDoWithThisException e) {
    -   *       return handle(e);
    -   *     } catch (Throwable t) {
    -   *       throw Throwables.propagate(t);
    -   *     }
    -   *   }
    -   * 
    - * - * @param throwable the Throwable to propagate - * @return nothing will ever be returned; this return type is only for your - * convenience, as illustrated in the example above - */ - public static RuntimeException propagate(Throwable throwable) { - propagateIfPossible(checkNotNull(throwable)); - throw new RuntimeException(throwable); - } - - /** - * Returns the innermost cause of {@code throwable}. The first throwable in a - * chain provides context from when the error or exception was initially - * detected. Example usage: - *
    -   *   assertEquals("Unable to assign a customer id",
    -   *       Throwables.getRootCause(e).getMessage());
    -   * 
    - */ - public static Throwable getRootCause(Throwable throwable) { - Throwable cause; - while ((cause = throwable.getCause()) != null) { - throwable = cause; - } - return throwable; - } - - /** - * Gets a {@code Throwable} cause chain as a list. The first entry in the - * list will be {@code throwable} followed by its cause hierarchy. Note - * that this is a snapshot of the cause chain and will not reflect - * any subsequent changes to the cause chain. - * - *

    Here's an example of how it can be used to find specific types - * of exceptions in the cause chain: - * - *

    -   * Iterables.filter(Throwables.getCausalChain(e), IOException.class));
    -   * 
    - * - * @param throwable the non-null {@code Throwable} to extract causes from - * @return an unmodifiable list containing the cause chain starting with - * {@code throwable} - */ - @Beta // TODO(kevinb): decide best return type - public static List getCausalChain(Throwable throwable) { - checkNotNull(throwable); - List causes = new ArrayList(4); - while (throwable != null) { - causes.add(throwable); - throwable = throwable.getCause(); - } - return Collections.unmodifiableList(causes); - } - - /** - * Returns a string containing the result of - * {@link Throwable#toString() toString()}, followed by the full, recursive - * stack trace of {@code throwable}. Note that you probably should not be - * parsing the resulting string; if you need programmatic access to the stack - * frames, you can call {@link Throwable#getStackTrace()}. - */ - public static String getStackTraceAsString(Throwable throwable) { - StringWriter stringWriter = new StringWriter(); - throwable.printStackTrace(new PrintWriter(stringWriter)); - return stringWriter.toString(); - } -} diff --git a/src/com/google/common/base/internal/Finalizer.java b/src/com/google/common/base/internal/Finalizer.java deleted file mode 100644 index 1158cbe3..00000000 --- a/src/com/google/common/base/internal/Finalizer.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (C) 2008 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.base.internal; - -import java.lang.ref.PhantomReference; -import java.lang.ref.Reference; -import java.lang.ref.ReferenceQueue; -import java.lang.ref.WeakReference; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * Thread that finalizes referents. All references should implement - * {@code com.google.common.base.FinalizableReference}. - * - *

    While this class is public, we consider it to be *internal* and not part - * of our published API. It is public so we can access it reflectively across - * class loaders in secure environments. - * - *

    This class can't depend on other Google Collections code. If we were - * to load this class in the same class loader as the rest of - * Google Collections, this thread would keep an indirect strong reference - * to the class loader and prevent it from being garbage collected. This - * poses a problem for environments where you want to throw away the class - * loader. For example, dynamically reloading a web application or unloading - * an OSGi bundle. - * - *

    {@code com.google.common.base.FinalizableReferenceQueue} loads this class - * in its own class loader. That way, this class doesn't prevent the main - * class loader from getting garbage collected, and this class can detect when - * the main class loader has been garbage collected and stop itself. - */ -public class Finalizer implements Runnable { - - private static final Logger logger - = Logger.getLogger(Finalizer.class.getName()); - - /** Name of FinalizableReference.class. */ - private static final String FINALIZABLE_REFERENCE - = "com.google.common.base.FinalizableReference"; - - /** - * Starts the Finalizer thread. FinalizableReferenceQueue calls this method - * reflectively. - * - * @param finalizableReferenceClass FinalizableReference.class - * @param frq reference to instance of FinalizableReferenceQueue that started - * this thread - * @return ReferenceQueue which Finalizer will poll - */ - public static ReferenceQueue startFinalizer( - Class finalizableReferenceClass, Object frq) { - /* - * We use FinalizableReference.class for two things: - * - * 1) To invoke FinalizableReference.finalizeReferent() - * - * 2) To detect when FinalizableReference's class loader has to be garbage - * collected, at which point, Finalizer can stop running - */ - if (!finalizableReferenceClass.getName().equals(FINALIZABLE_REFERENCE)) { - throw new IllegalArgumentException( - "Expected " + FINALIZABLE_REFERENCE + "."); - } - - Finalizer finalizer = new Finalizer(finalizableReferenceClass, frq); - Thread thread = new Thread(finalizer); - thread.setName(Finalizer.class.getName()); - thread.setDaemon(true); - - try { - if (inheritableThreadLocals != null) { - inheritableThreadLocals.set(thread, null); - } - } catch (Throwable t) { - logger.log(Level.INFO, "Failed to clear thread local values inherited" - + " by reference finalizer thread.", t); - } - - thread.start(); - return finalizer.queue; - } - - private final WeakReference> finalizableReferenceClassReference; - private final PhantomReference frqReference; - private final ReferenceQueue queue = new ReferenceQueue(); - - private static final Field inheritableThreadLocals - = getInheritableThreadLocalsField(); - - /** Constructs a new finalizer thread. */ - private Finalizer(Class finalizableReferenceClass, Object frq) { - this.finalizableReferenceClassReference - = new WeakReference>(finalizableReferenceClass); - - // Keep track of the FRQ that started us so we know when to stop. - this.frqReference = new PhantomReference(frq, queue); - } - - /** - * Loops continuously, pulling references off the queue and cleaning them up. - */ - @SuppressWarnings("InfiniteLoopStatement") - public void run() { - try { - while (true) { - try { - cleanUp(queue.remove()); - } catch (InterruptedException e) { /* ignore */ } - } - } catch (ShutDown shutDown) { /* ignore */ } - } - - /** - * Cleans up a single reference. Catches and logs all throwables. - */ - private void cleanUp(Reference reference) throws ShutDown { - Method finalizeReferentMethod = getFinalizeReferentMethod(); - do { - /* - * This is for the benefit of phantom references. Weak and soft - * references will have already been cleared by this point. - */ - reference.clear(); - - if (reference == frqReference) { - /* - * The client no longer has a reference to the - * FinalizableReferenceQueue. We can stop. - */ - throw new ShutDown(); - } - - try { - finalizeReferentMethod.invoke(reference); - } catch (Throwable t) { - logger.log(Level.SEVERE, "Error cleaning up after reference.", t); - } - - /* - * Loop as long as we have references available so as not to waste - * CPU looking up the Method over and over again. - */ - } while ((reference = queue.poll()) != null); - } - - /** - * Looks up FinalizableReference.finalizeReferent() method. - */ - private Method getFinalizeReferentMethod() throws ShutDown { - Class finalizableReferenceClass - = finalizableReferenceClassReference.get(); - if (finalizableReferenceClass == null) { - /* - * FinalizableReference's class loader was reclaimed. While there's a - * chance that other finalizable references could be enqueued - * subsequently (at which point the class loader would be resurrected - * by virtue of us having a strong reference to it), we should pretty - * much just shut down and make sure we don't keep it alive any longer - * than necessary. - */ - throw new ShutDown(); - } - try { - return finalizableReferenceClass.getMethod("finalizeReferent"); - } catch (NoSuchMethodException e) { - throw new AssertionError(e); - } - } - - public static Field getInheritableThreadLocalsField() { - try { - Field inheritableThreadLocals - = Thread.class.getDeclaredField("inheritableThreadLocals"); - inheritableThreadLocals.setAccessible(true); - return inheritableThreadLocals; - } catch (Throwable t) { - logger.log(Level.INFO, "Couldn't access Thread.inheritableThreadLocals." - + " Reference finalizer threads will inherit thread local" - + " values."); - return null; - } - } - - /** Indicates that it's time to shut down the Finalizer. */ - @SuppressWarnings("serial") // Never serialized or thrown out of this class. - private static class ShutDown extends Exception {} -} diff --git a/src/com/google/common/base/package-info.java b/src/com/google/common/base/package-info.java deleted file mode 100644 index 66e7177d..00000000 --- a/src/com/google/common/base/package-info.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Basic utility libraries and interfaces. - * - *

    This package is a part of the open-source - * Guava libraries. - * - *

    Contents

    - * - *

    String-related utilities

    - * - *
      - *
    • {@link com.google.common.base.Ascii} - *
    • {@link com.google.common.base.CaseFormat} - *
    • {@link com.google.common.base.CharMatcher} - *
    • {@link com.google.common.base.Charsets} - *
    • {@link com.google.common.base.Joiner} - *
    • {@link com.google.common.base.Splitter} - *
    • {@link com.google.common.base.Strings} - *
    - * - *

    Function types

    - * - *
      - *
    • {@link com.google.common.base.Function}, - * {@link com.google.common.base.Functions} - *
    • {@link com.google.common.base.Predicate}, - * {@link com.google.common.base.Predicates} - *
    • {@link com.google.common.base.Equivalence}, - * {@link com.google.common.base.Equivalences} - *
    • {@link com.google.common.base.Supplier}, - * {@link com.google.common.base.Suppliers} - *
    - * - *

    Other

    - * - *
      - *
    • {@link com.google.common.base.Defaults} - *
    • {@link com.google.common.base.Enums} - *
    • {@link com.google.common.base.Objects} - *
    • {@link com.google.common.base.Optional} - *
    • {@link com.google.common.base.Preconditions} - *
    • {@link com.google.common.base.Stopwatch} - *
    • {@link com.google.common.base.Throwables} - *
    - * - */ -@ParametersAreNonnullByDefault -package com.google.common.base; - -import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/com/google/common/hash/AbstractCompositeHashFunction.java b/src/com/google/common/hash/AbstractCompositeHashFunction.java deleted file mode 100755 index 404dca75..00000000 --- a/src/com/google/common/hash/AbstractCompositeHashFunction.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.hash; - -import java.nio.charset.Charset; - -/** - * An abstract composition of multiple hash functions. {@linkplain #newHasher()} delegates to the - * {@code Hasher} objects of the delegate hash functions, and in the end, they are used by - * {@linkplain #makeHash(Hasher[])} that constructs the final {@code HashCode}. - * - * @author Dimitris Andreou - */ -abstract class AbstractCompositeHashFunction extends AbstractStreamingHashFunction { - final HashFunction[] functions; - - AbstractCompositeHashFunction(HashFunction... functions) { - this.functions = functions; - } - - /** - * Constructs a {@code HashCode} from the {@code Hasher} objects of the functions. Each of them - * has consumed the entire input and they are ready to output a {@code HashCode}. The order of - * the hashers are the same order as the functions given to the constructor. - */ - // this could be cleaner if it passed HashCode[], but that would create yet another array... - /* protected */ abstract HashCode makeHash(Hasher[] hashers); - - - public Hasher newHasher() { - final Hasher[] hashers = new Hasher[functions.length]; - for (int i = 0; i < hashers.length; i++) { - hashers[i] = functions[i].newHasher(); - } - return new Hasher() { - public Hasher putByte(byte b) { - for (Hasher hasher : hashers) { - hasher.putByte(b); - } - return this; - } - - public Hasher putBytes(byte[] bytes) { - for (Hasher hasher : hashers) { - hasher.putBytes(bytes); - } - return this; - } - - public Hasher putBytes(byte[] bytes, int off, int len) { - for (Hasher hasher : hashers) { - hasher.putBytes(bytes, off, len); - } - return this; - } - - public Hasher putShort(short s) { - for (Hasher hasher : hashers) { - hasher.putShort(s); - } - return this; - } - - public Hasher putInt(int i) { - for (Hasher hasher : hashers) { - hasher.putInt(i); - } - return this; - } - - public Hasher putLong(long l) { - for (Hasher hasher : hashers) { - hasher.putLong(l); - } - return this; - } - - public Hasher putFloat(float f) { - for (Hasher hasher : hashers) { - hasher.putFloat(f); - } - return this; - } - - public Hasher putDouble(double d) { - for (Hasher hasher : hashers) { - hasher.putDouble(d); - } - return this; - } - - public Hasher putBoolean(boolean b) { - for (Hasher hasher : hashers) { - hasher.putBoolean(b); - } - return this; - } - - public Hasher putChar(char c) { - for (Hasher hasher : hashers) { - hasher.putChar(c); - } - return this; - } - - public Hasher putString(CharSequence chars) { - for (Hasher hasher : hashers) { - hasher.putString(chars); - } - return this; - } - - public Hasher putString(CharSequence chars, Charset charset) { - for (Hasher hasher : hashers) { - hasher.putString(chars, charset); - } - return this; - } - - public Hasher putObject(T instance, Funnel funnel) { - for (Hasher hasher : hashers) { - hasher.putObject(instance, funnel); - } - return this; - } - - public HashCode hash() { - return makeHash(hashers); - } - }; - } - - private static final long serialVersionUID = 0L; -} diff --git a/src/com/google/common/hash/AbstractHasher.java b/src/com/google/common/hash/AbstractHasher.java deleted file mode 100755 index ff63c59a..00000000 --- a/src/com/google/common/hash/AbstractHasher.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.google.common.hash; - -import java.nio.ByteBuffer; -import java.nio.CharBuffer; -import java.nio.charset.Charset; - -/** - * An abstract hasher, implementing {@link #putBoolean(boolean)}, {@link #putDouble(double)}, - * {@link #putFloat(float)}, {@link #putString(CharSequence)}, and - * {@link #putString(CharSequence, Charset)} as prescribed by {@link Hasher}. - * - * @author Dimitris Andreou - */ -abstract class AbstractHasher implements Hasher { - public final Hasher putBoolean(boolean b) { - return putByte(b ? (byte) 1 : (byte) 0); - } - - public final Hasher putDouble(double d) { - return putLong(Double.doubleToRawLongBits(d)); - } - - public final Hasher putFloat(float f) { - return putInt(Float.floatToRawIntBits(f)); - } - - public Hasher putString(CharSequence charSequence) { - for (int i = 0, len = charSequence.length(); i < len; i++) { - putChar(charSequence.charAt(i)); - } - return this; - } - - public Hasher putString(CharSequence charSequence, Charset charset) { - ByteBuffer buf = charset.encode(CharBuffer.wrap(charSequence)); - if (buf.hasArray()) { - return putBytes( - buf.array(), buf.arrayOffset() + buf.position(), buf.limit() + buf.arrayOffset()); - } else { - byte[] tmp = new byte[buf.remaining()]; - buf.get(tmp); - return putBytes(tmp); - } - } -} diff --git a/src/com/google/common/hash/AbstractNonStreamingHashFunction.java b/src/com/google/common/hash/AbstractNonStreamingHashFunction.java deleted file mode 100755 index e64eeac3..00000000 --- a/src/com/google/common/hash/AbstractNonStreamingHashFunction.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.hash; - -import com.google.common.base.Preconditions; -import com.google.common.base.Throwables; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.nio.CharBuffer; -import java.nio.charset.Charset; - -/** - * Skeleton implementation of {@link HashFunction}, appropriate for non-streaming algorithms. - * All the hash computation done using {@linkplain #newHasher()} are delegated to the {@linkplain - * #hashBytes(byte[], int, int)} method. - * - * @author Dimitris Andreou - */ -abstract class AbstractNonStreamingHashFunction implements HashFunction { - public Hasher newHasher() { - return new BufferingHasher(32); - } - - public Hasher newHasher(int expectedInputSize) { - Preconditions.checkArgument(expectedInputSize >= 0); - return new BufferingHasher(expectedInputSize); - } - - public HashCode hashString(CharSequence input) { - int len = input.length(); - Hasher hasher = newHasher(len * 2); - for (int i = 0; i < len; i++) { - hasher.putChar(input.charAt(i)); - } - return hasher.hash(); - } - - public HashCode hashString(CharSequence input, Charset charset) { - ByteBuffer buf = charset.encode(CharBuffer.wrap(input)); - if (buf.hasArray()) { - return hashBytes( - buf.array(), buf.arrayOffset() + buf.position(), buf.limit() + buf.arrayOffset()); - } else { - byte[] tmp = new byte[buf.remaining()]; - buf.get(tmp); - return hashBytes(tmp); - } - } - - public HashCode hashInt(int input) { - return newHasher(4).putInt(input).hash(); - } - - public HashCode hashLong(long input) { - return newHasher(8).putLong(input).hash(); - } - - public HashCode hashBytes(byte[] input) { - return hashBytes(input, 0, input.length); - } - - /** - * In-memory stream-based implementation of Hasher. - */ - private final class BufferingHasher extends AbstractHasher { - final ExposedByteArrayOutputStream stream; - static final int BOTTOM_BYTE = 0xFF; - - BufferingHasher(int expectedInputSize) { - this.stream = new ExposedByteArrayOutputStream(expectedInputSize); - } - - public Hasher putByte(byte b) { - stream.write(b); - return this; - } - - public Hasher putBytes(byte[] bytes) { - try { - stream.write(bytes); - } catch (IOException e) { - throw Throwables.propagate(e); - } - return this; - } - - - public Hasher putBytes(byte[] bytes, int off, int len) { - stream.write(bytes, off, len); - return this; - } - - public Hasher putShort(short s) { - stream.write(s & BOTTOM_BYTE); - stream.write((s >>> 8) & BOTTOM_BYTE); - return this; - } - - public Hasher putInt(int i) { - stream.write(i & BOTTOM_BYTE); - stream.write((i >>> 8) & BOTTOM_BYTE); - stream.write((i >>> 16) & BOTTOM_BYTE); - stream.write((i >>> 24) & BOTTOM_BYTE); - return this; - } - - public Hasher putLong(long l) { - for (int i = 0; i < 64; i += 8) { - stream.write((byte) ((l >>> i) & BOTTOM_BYTE)); - } - return this; - } - - public Hasher putChar(char c) { - stream.write(c & BOTTOM_BYTE); - stream.write((c >>> 8) & BOTTOM_BYTE); - return this; - } - - public Hasher putObject(T instance, Funnel funnel) { - funnel.funnel(instance, this); - return this; - } - - public HashCode hash() { - return hashBytes(stream.byteArray(), 0, stream.length()); - } - } - - // Just to access the byte[] without introducing an unnecessary copy - private static final class ExposedByteArrayOutputStream extends ByteArrayOutputStream { - ExposedByteArrayOutputStream(int expectedInputSize) { - super(expectedInputSize); - } - byte[] byteArray() { - return buf; - } - int length() { - return count; - } - } -} diff --git a/src/com/google/common/hash/AbstractStreamingHashFunction.java b/src/com/google/common/hash/AbstractStreamingHashFunction.java deleted file mode 100755 index 6de4d9ed..00000000 --- a/src/com/google/common/hash/AbstractStreamingHashFunction.java +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.google.common.hash; - -import static com.google.common.base.Preconditions.checkArgument; - -import com.google.common.base.Preconditions; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.charset.Charset; - -/** - * Skeleton implementation of {@link HashFunction}. Provides default implementations which - * invokes the appropriate method on {@link #newHasher()}, then return the result of - * {@link Hasher#hash}. - * - *

    Invocations of {@link #newHasher(int)} also delegate to {@linkplain #newHasher()}, ignoring - * the expected input size parameter. - * - * @author Kevin Bourrillion - */ -abstract class AbstractStreamingHashFunction implements HashFunction { - public HashCode hashString(CharSequence input) { - return newHasher().putString(input).hash(); - } - - public HashCode hashString(CharSequence input, Charset charset) { - return newHasher().putString(input, charset).hash(); - } - - public HashCode hashInt(int input) { - return newHasher().putInt(input).hash(); - } - - public HashCode hashLong(long input) { - return newHasher().putLong(input).hash(); - } - - public HashCode hashBytes(byte[] input) { - return newHasher().putBytes(input).hash(); - } - - public HashCode hashBytes(byte[] input, int off, int len) { - return newHasher().putBytes(input, off, len).hash(); - } - - public Hasher newHasher(int expectedInputSize) { - Preconditions.checkArgument(expectedInputSize >= 0); - return newHasher(); - } - - /** - * A convenience base class for implementors of {@code Hasher}; handles accumulating data - * until an entire "chunk" (of implementation-dependent length) is ready to be hashed. - * - * @author Kevin Bourrillion - * @author Dimitris Andreou - */ - // TODO(kevinb): this class still needs some design-and-document-for-inheritance love - protected static abstract class AbstractStreamingHasher extends AbstractHasher { - /** Buffer via which we pass data to the hash algorithm (the implementor) */ - private final ByteBuffer buffer; - - /** Number of bytes to be filled before process() invocation(s). */ - private final int bufferSize; - - /** Number of bytes processed per process() invocation. */ - private final int chunkSize; - - /** - * Constructor for use by subclasses. This hasher instance will process chunks of the specified - * size. - * - * @param chunkSize the number of bytes available per {@link #process(ByteBuffer)} invocation; - * must be at least 4 - */ - protected AbstractStreamingHasher(int chunkSize) { - this(chunkSize, chunkSize); - } - - /** - * Constructor for use by subclasses. This hasher instance will process chunks of the specified - * size, using an internal buffer of {@code bufferSize} size, which must be a multiple of - * {@code chunkSize}. - * - * @param chunkSize the number of bytes available per {@link #process(ByteBuffer)} invocation; - * must be at least 4 - * @param bufferSize the size of the internal buffer. Must be a multiple of chunkSize - */ - protected AbstractStreamingHasher(int chunkSize, int bufferSize) { - // TODO(kevinb): check more preconditions (as bufferSize >= chunkSize) if this is ever public - checkArgument(bufferSize % chunkSize == 0); - - // TODO(user): benchmark performance difference with longer buffer - this.buffer = ByteBuffer - .allocate(bufferSize + 7) // always space for a single primitive - .order(ByteOrder.LITTLE_ENDIAN); - this.bufferSize = bufferSize; - this.chunkSize = chunkSize; - } - - /** - * Processes the available bytes of the buffer (at most {@code chunk} bytes). - */ - protected abstract void process(ByteBuffer bb); - - /** - * This is invoked for the last bytes of the input, which are not enough to - * fill a whole chunk. The passed {@code ByteBuffer} is guaranteed to be - * non-empty. - * - *

    This implementation simply pads with zeros and delegates to - * {@link #process(ByteBuffer)}. - */ - protected void processRemaining(ByteBuffer bb) { - bb.position(bb.limit()); // move at the end - bb.limit(chunkSize + 7); // get ready to pad with longs - while (bb.position() < chunkSize) { - bb.putLong(0); - } - bb.limit(chunkSize); - bb.flip(); - process(bb); - } - - public final Hasher putBytes(byte[] bytes) { - return putBytes(bytes, 0, bytes.length); - } - - public final Hasher putBytes(byte[] bytes, int off, int len) { - return putBytes(ByteBuffer.wrap(bytes, off, len).order(ByteOrder.LITTLE_ENDIAN)); - } - - private final Hasher putBytes(ByteBuffer readBuffer) { - // If we have room for all of it, this is easy - if (readBuffer.remaining() <= buffer.remaining()) { - buffer.put(readBuffer); - munchIfFull(); - return this; - } - - // First add just enough to fill buffer size, and munch that - int bytesToCopy = bufferSize - buffer.position(); - for (int i = 0; i < bytesToCopy; i++) { - buffer.put(readBuffer.get()); - } - munch(); // buffer becomes empty here, since chunkSize divides bufferSize - - // Now process directly from the rest of the input buffer - while (readBuffer.remaining() >= chunkSize) { - process(readBuffer); - } - - // Finally stick the remainder back in our usual buffer - buffer.put(readBuffer); - return this; - } - - - @Override - public final Hasher putString(CharSequence charSequence) { - for (int i = 0; i < charSequence.length(); i++) { - putChar(charSequence.charAt(i)); - } - return this; - } - - public final Hasher putByte(byte b) { - buffer.put(b); - munchIfFull(); - return this; - } - - public final Hasher putShort(short s) { - buffer.putShort(s); - munchIfFull(); - return this; - } - - public final Hasher putChar(char c) { - buffer.putChar(c); - munchIfFull(); - return this; - } - - public final Hasher putInt(int i) { - buffer.putInt(i); - munchIfFull(); - return this; - } - - public final Hasher putLong(long l) { - buffer.putLong(l); - munchIfFull(); - return this; - } - - public final Hasher putObject(T instance, Funnel funnel) { - funnel.funnel(instance, this); - return this; - } - - public final HashCode hash() { - munch(); - buffer.flip(); - if (buffer.remaining() > 0) { - processRemaining(buffer); - } - return makeHash(); - } - - abstract HashCode makeHash(); - - // Process pent-up data in chunks - private void munchIfFull() { - if (buffer.remaining() < 8) { - // buffer is full; not enough room for a primitive. We have at least one full chunk. - munch(); - } - } - - private void munch() { - buffer.flip(); - while (buffer.remaining() >= chunkSize) { - // we could limit the buffer to ensure process() does not read more than - // chunkSize number of bytes, but we trust the implementations - process(buffer); - } - buffer.compact(); // preserve any remaining data that do not make a full chunk - } - } -} diff --git a/src/com/google/common/hash/Funnel.java b/src/com/google/common/hash/Funnel.java deleted file mode 100755 index dbe0596f..00000000 --- a/src/com/google/common/hash/Funnel.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.google.common.hash; - -import com.google.common.annotations.Beta; - -import java.io.Serializable; - -/** - * An object which can send data from an object of type {@code T} into a {@code PrimitiveSink}. - * - * @author Dimitris Andreou - * @since 11.0 - */ -@Beta -public interface Funnel extends Serializable { - - /** - * Sends a stream of data from the {@code from} object into the sink {@code into}. There - * is no requirement that this data be complete enough to fully reconstitute the object - * later. - * - * @since 12.0 (in 11.0 version, {@code PrimitiveSink} was still called {@code Sink}) - */ - void funnel(T from, PrimitiveSink into); -} diff --git a/src/com/google/common/hash/Funnels.java b/src/com/google/common/hash/Funnels.java deleted file mode 100755 index 2210e781..00000000 --- a/src/com/google/common/hash/Funnels.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.google.common.hash; - -import com.google.common.annotations.Beta; -import com.google.common.base.Preconditions; - -import java.io.OutputStream; - -/** - * Funnels for common types. All implementations are serializable. - * - * @author Dimitris Andreou - * @since 11.0 - */ -@Beta -public final class Funnels { - private Funnels() {} - - /** - * Returns a funnel that extracts the bytes from a {@code byte} array. - */ - public static Funnel byteArrayFunnel() { - return ByteArrayFunnel.INSTANCE; - } - - private enum ByteArrayFunnel implements Funnel { - INSTANCE; - - public void funnel(byte[] from, PrimitiveSink into) { - into.putBytes(from); - } - - - @Override - public String toString() { - return "Funnels.byteArrayFunnel()"; - } - } - - /** - * Returns a funnel that extracts the characters from a {@code CharSequence}. - */ - public static Funnel stringFunnel() { - return StringFunnel.INSTANCE; - } - - private enum StringFunnel implements Funnel { - INSTANCE; - - public void funnel(CharSequence from, PrimitiveSink into) { - into.putString(from); - } - - - @Override - public String toString() { - return "Funnels.stringFunnel()"; - } - } - - /** - * Returns a funnel for integers. - * - * @since 13.0 - */ - public static Funnel integerFunnel() { - return IntegerFunnel.INSTANCE; - } - - private enum IntegerFunnel implements Funnel { - INSTANCE; - - public void funnel(Integer from, PrimitiveSink into) { - into.putInt(from); - } - - @Override - public String toString() { - return "Funnels.integerFunnel()"; - } - } - - /** - * Returns a funnel for longs. - * - * @since 13.0 - */ - public static Funnel longFunnel() { - return LongFunnel.INSTANCE; - } - - private enum LongFunnel implements Funnel { - INSTANCE; - - public void funnel(Long from, PrimitiveSink into) { - into.putLong(from); - } - - @Override - public String toString() { - return "Funnels.longFunnel()"; - } - } - - /** - * Wraps a {@code PrimitiveSink} as an {@link OutputStream}, so it is easy to - * {@link Funnel#funnel funnel} an object to a {@code PrimitiveSink} - * if there is already a way to write the contents of the object to an {@code OutputStream}. - * - *

    The {@code close} and {@code flush} methods of the returned {@code OutputStream} - * do nothing, and no method throws {@code IOException}. - * - * @since 13.0 - */ - public static OutputStream asOutputStream(PrimitiveSink sink) { - return new SinkAsStream(sink); - } - - private static class SinkAsStream extends OutputStream { - final PrimitiveSink sink; - SinkAsStream(PrimitiveSink sink) { - this.sink = Preconditions.checkNotNull(sink); - } - - @Override - public void write(int b) { - sink.putByte((byte) b); - } - - @Override - public void write(byte[] bytes) { - sink.putBytes(bytes); - } - - @Override - public void write(byte[] bytes, int off, int len) { - sink.putBytes(bytes, off, len); - } - - @Override - public String toString() { - return "Funnels.asOutputStream(" + sink + ")"; - } - } -} diff --git a/src/com/google/common/hash/HashCode.java b/src/com/google/common/hash/HashCode.java deleted file mode 100755 index e2d4950e..00000000 --- a/src/com/google/common/hash/HashCode.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.google.common.hash; - -import com.google.common.annotations.Beta; -import com.google.common.base.Preconditions; -import com.google.common.primitives.Ints; - -import java.security.MessageDigest; - -/** - * An immutable hash code of arbitrary bit length. - * - * @author Dimitris Andreou - * @since 11.0 - */ -@Beta -public abstract class HashCode { - HashCode() {} - - /** - * Returns the first four bytes of {@linkplain #asBytes() this hashcode's bytes}, converted to - * an {@code int} value in little-endian order. - */ - public abstract int asInt(); - - /** - * Returns the first eight bytes of {@linkplain #asBytes() this hashcode's bytes}, converted to - * a {@code long} value in little-endian order. - * - * @throws IllegalStateException if {@code bits() < 64} - */ - public abstract long asLong(); - - /** - * Returns the value of this hash code as a byte array. The caller may modify the byte array; - * changes to it will not be reflected in this {@code HashCode} object or any other arrays - * returned by this method. - */ - // TODO(user): consider ByteString here, when that is available - public abstract byte[] asBytes(); - - /** - * Copies bytes from this hash code into {@code dest}. - * - * @param dest the byte array into which the hash code will be written - * @param offset the start offset in the data - * @param maxLength the maximum number of bytes to write - * @return the number of bytes written to {@code dest} - * @throws IndexOutOfBoundsException if there is not enough room in {@code dest} - */ - public int writeBytesTo(byte[] dest, int offset, int maxLength) { - byte[] hash = asBytes(); - maxLength = Ints.min(maxLength, hash.length); - Preconditions.checkPositionIndexes(offset, offset + maxLength, dest.length); - System.arraycopy(hash, 0, dest, offset, maxLength); - return maxLength; - } - - /** - * Returns the number of bits in this hash code; a positive multiple of 32. - */ - public abstract int bits(); - - - @Override - public boolean equals(Object object) { - if (object instanceof HashCode) { - HashCode that = (HashCode) object; - // Undocumented: this is a non-short-circuiting equals(), in case this is a cryptographic - // hash code, in which case we don't want to leak timing information - return MessageDigest.isEqual(this.asBytes(), that.asBytes()); - } - return false; - } - - /** - * Returns a "Java hash code" for this {@code HashCode} instance; this is well-defined - * (so, for example, you can safely put {@code HashCode} instances into a {@code - * HashSet}) but is otherwise probably not what you want to use. - */ - - @Override - public int hashCode() { - /* - * As long as the hash function that produced this isn't of horrible quality, this - * won't be of horrible quality either. - */ - return asInt(); - } - - /** - * Returns a string containing each byte of {@link #asBytes}, in order, as a two-digit unsigned - * hexadecimal number in lower case. - * - *

    Note that if the output is considered to be a single hexadecimal number, this hash code's - * bytes are the big-endian representation of that number. This may be surprising since - * everything else in the hashing API uniformly treats multibyte values as little-endian. But - * this format conveniently matches that of utilities such as the UNIX {@code md5sum} command. - */ - - @Override - public String toString() { - byte[] bytes = asBytes(); - // TODO(user): Use c.g.common.base.ByteArrays once it is open sourced. - StringBuilder sb = new StringBuilder(2 * bytes.length); - for (byte b : bytes) { - sb.append(hexDigits[(b >> 4) & 0xf]).append(hexDigits[b & 0xf]); - } - return sb.toString(); - } - - private static final char[] hexDigits = "0123456789abcdef".toCharArray(); -} diff --git a/src/com/google/common/hash/HashCodes.java b/src/com/google/common/hash/HashCodes.java deleted file mode 100755 index 88294383..00000000 --- a/src/com/google/common/hash/HashCodes.java +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.google.common.hash; - -import static com.google.common.base.Preconditions.checkArgument; - -import com.google.common.annotations.Beta; - -import java.io.Serializable; - -/** - * Static factories for creating {@link HashCode} instances; most users should never have to use - * this. All returned instances are {@link Serializable}. - * - * @author Dimitris Andreou - * @since 12.0 - */ -@Beta -public final class HashCodes { - private HashCodes() {} - - /** - * Creates a 32-bit {@code HashCode}, of which the bytes will form the passed int, interpreted - * in little endian order. - */ - public static HashCode fromInt(int hash) { - return new IntHashCode(hash); - } - - private static final class IntHashCode extends HashCode implements Serializable { - final int hash; - - IntHashCode(int hash) { - this.hash = hash; - } - - - @Override - public int bits() { - return 32; - } - - - @Override - public byte[] asBytes() { - return new byte[] { - (byte) hash, - (byte) (hash >> 8), - (byte) (hash >> 16), - (byte) (hash >> 24)}; - } - - - @Override - public int asInt() { - return hash; - } - - - @Override - public long asLong() { - throw new IllegalStateException("this HashCode only has 32 bits; cannot create a long"); - } - - private static final long serialVersionUID = 0; - } - - /** - * Creates a 64-bit {@code HashCode}, of which the bytes will form the passed long, interpreted - * in little endian order. - */ - public static HashCode fromLong(long hash) { - return new LongHashCode(hash); - } - - private static final class LongHashCode extends HashCode implements Serializable { - final long hash; - - LongHashCode(long hash) { - this.hash = hash; - } - - - @Override - public int bits() { - return 64; - } - - - @Override - public byte[] asBytes() { - return new byte[] { - (byte) hash, - (byte) (hash >> 8), - (byte) (hash >> 16), - (byte) (hash >> 24), - (byte) (hash >> 32), - (byte) (hash >> 40), - (byte) (hash >> 48), - (byte) (hash >> 56)}; - } - - - @Override - public int asInt() { - return (int) hash; - } - - - @Override - public long asLong() { - return hash; - } - - private static final long serialVersionUID = 0; - } - - /** - * Creates a {@code HashCode} from a byte array. The array is defensively copied to preserve - * the immutability contract of {@code HashCode}. The array must be at least of length 4. - */ - public static HashCode fromBytes(byte[] bytes) { - checkArgument(bytes.length >= 4, "A HashCode must contain at least 4 bytes."); - return fromBytesNoCopy(bytes.clone()); - } - - /** - * Creates a {@code HashCode} from a byte array. The array is not copied defensively, - * so it must be handed-off so as to preserve the immutability contract of {@code HashCode}. - * The array must be at least of length 4 (not checked). - */ - static HashCode fromBytesNoCopy(byte[] bytes) { - return new BytesHashCode(bytes); - } - - private static final class BytesHashCode extends HashCode implements Serializable { - final byte[] bytes; - - BytesHashCode(byte[] bytes) { - this.bytes = bytes; - } - - - @Override - public int bits() { - return bytes.length * 8; - } - - - @Override - public byte[] asBytes() { - return bytes.clone(); - } - - - @Override - public int asInt() { - return (bytes[0] & 0xFF) - | ((bytes[1] & 0xFF) << 8) - | ((bytes[2] & 0xFF) << 16) - | ((bytes[3] & 0xFF) << 24); - } - - - @Override - public long asLong() { - if (bytes.length < 8) { - // Checking this to throw the correct type of exception - throw new IllegalStateException("Not enough bytes"); - } - return (bytes[0] & 0xFFL) - | ((bytes[1] & 0xFFL) << 8) - | ((bytes[2] & 0xFFL) << 16) - | ((bytes[3] & 0xFFL) << 24) - | ((bytes[4] & 0xFFL) << 32) - | ((bytes[5] & 0xFFL) << 40) - | ((bytes[6] & 0xFFL) << 48) - | ((bytes[7] & 0xFFL) << 56); - } - - private static final long serialVersionUID = 0; - } -} diff --git a/src/com/google/common/hash/HashFunction.java b/src/com/google/common/hash/HashFunction.java deleted file mode 100755 index 328fd358..00000000 --- a/src/com/google/common/hash/HashFunction.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.google.common.hash; - -import com.google.common.annotations.Beta; -import com.google.common.primitives.Ints; - -import java.nio.charset.Charset; - -/** - * A hash function is a collision-averse pure function that maps an arbitrary block of - * data to a number called a hash code. - * - *

    Definition

    - * - *

    Unpacking this definition: - * - *

      - *
    • block of data: the input for a hash function is always, in concept, an - * ordered byte array. This hashing API accepts an arbitrary sequence of byte and - * multibyte values (via {@link Hasher}), but this is merely a convenience; these are - * always translated into raw byte sequences under the covers. - * - *
    • hash code: each hash function always yields hash codes of the same fixed bit - * length (given by {@link #bits}). For example, {@link Hashing#sha1} produces a - * 160-bit number, while {@link Hashing#murmur3_32()} yields only 32 bits. Because a - * {@code long} value is clearly insufficient to hold all hash code values, this API - * represents a hash code as an instance of {@link HashCode}. - * - *
    • pure function: the value produced must depend only on the input bytes, in - * the order they appear. Input data is never modified. {@link HashFunction} instances - * should always be stateless, and therefore thread-safe. - * - *
    • collision-averse: while it can't be helped that a hash function will - * sometimes produce the same hash code for distinct inputs (a "collision"), every - * hash function strives to some degree to make this unlikely. (Without this - * condition, a function that always returns zero could be called a hash function. It - * is not.) - *
    - * - *

    Summarizing the last two points: "equal yield equal always; unequal yield - * unequal often." This is the most important characteristic of all hash functions. - * - *

    Desirable properties

    - * - *

    A high-quality hash function strives for some subset of the following virtues: - * - *

      - *
    • collision-resistant: while the definition above requires making at least - * some token attempt, one measure of the quality of a hash function is how - * well it succeeds at this goal. Important note: it may be easy to achieve the - * theoretical minimum collision rate when using completely random sample - * input. The true test of a hash function is how it performs on representative - * real-world data, which tends to contain many hidden patterns and clumps. The goal - * of a good hash function is to stamp these patterns out as thoroughly as possible. - * - *
    • bit-dispersing: masking out any single bit from a hash code should - * yield only the expected twofold increase to all collision rates. Informally, - * the "information" in the hash code should be as evenly "spread out" through the - * hash code's bits as possible. The result is that, for example, when choosing a - * bucket in a hash table of size 2^8, any eight bits could be consistently - * used. - * - *
    • cryptographic: certain hash functions such as {@link Hashing#sha512} are - * designed to make it as infeasible as possible to reverse-engineer the input that - * produced a given hash code, or even to discover any two distinct inputs that - * yield the same result. These are called cryptographic hash functions. But, - * whenever it is learned that either of these feats has become computationally - * feasible, the function is deemed "broken" and should no longer be used for secure - * purposes. (This is the likely eventual fate of all cryptographic hashes.) - * - *
    • fast: perhaps self-explanatory, but often the most important consideration. - * We have published microbenchmark results for many - * common hash functions. - *
    - * - *

    Providing input to a hash function

    - * - *

    The primary way to provide the data that your hash function should act on is via a - * {@link Hasher}. Obtain a new hasher from the hash function using {@link #newHasher}, - * "push" the relevant data into it using methods like {@link Hasher#putBytes(byte[])}, - * and finally ask for the {@code HashCode} when finished using {@link Hasher#hash}. (See - * an {@linkplain #newHasher example} of this.) - * - *

    If all you want to hash is a single byte array, string or {@code long} value, there - * are convenient shortcut methods defined directly on {@link HashFunction} to make this - * easier. - * - *

    Hasher accepts primitive data types, but can also accept any Object of type {@code - * T} provided that you implement a {@link Funnel Funnel} to specify how to "feed" data - * from that object into the function. (See {@linkplain Hasher#putObject an example} of - * this.) - * - *

    Compatibility note: Throughout this API, multibyte values are always - * interpreted in little-endian order. That is, hashing the byte array {@code - * {0x01, 0x02, 0x03, 0x04}} is equivalent to hashing the {@code int} value {@code - * 0x04030201}. If this isn't what you need, methods such as {@link Integer#reverseBytes} - * and {@link Ints#toByteArray} will help. - * - *

    Relationship to {@link Object#hashCode}

    - * - *

    Java's baked-in concept of hash codes is constrained to 32 bits, and provides no - * separation between hash algorithms and the data they act on, so alternate hash - * algorithms can't be easily substituted. Also, implementations of {@code hashCode} tend - * to be poor-quality, in part because they end up depending on other existing - * poor-quality {@code hashCode} implementations, including those in many JDK classes. - * - *

    {@code Object.hashCode} implementations tend to be very fast, but have weak - * collision prevention and no expectation of bit dispersion. This leaves them - * perfectly suitable for use in hash tables, because extra collisions cause only a slight - * performance hit, while poor bit dispersion is easily corrected using a secondary hash - * function (which all reasonable hash table implementations in Java use). For the many - * uses of hash functions beyond data structures, however, {@code Object.hashCode} almost - * always falls short -- hence this library. - * - * @author Kevin Bourrillion - * @since 11.0 - */ -@Beta -public interface HashFunction { - /** - * Begins a new hash code computation by returning an initialized, stateful {@code - * Hasher} instance that is ready to receive data. Example:

       {@code
    -   *
    -   *   HashFunction hf = Hashing.md5();
    -   *   HashCode hc = hf.newHasher()
    -   *       .putLong(id)
    -   *       .putString(name)
    -   *       .hash();}
    - */ - Hasher newHasher(); - - /** - * Begins a new hash code computation as {@link #newHasher()}, but provides a hint of the - * expected size of the input (in bytes). This is only important for non-streaming hash - * functions (hash functions that need to buffer their whole input before processing any - * of it). - */ - Hasher newHasher(int expectedInputSize); - - /** - * Shortcut for {@code newHasher().putInt(input).hash()}; returns the hash code for the given - * {@code int} value, interpreted in little-endian byte order. The implementation might - * perform better than its longhand equivalent, but should not perform worse. - * - * @since 12.0 - */ - HashCode hashInt(int input); - - /** - * Shortcut for {@code newHasher().putLong(input).hash()}; returns the hash code for the - * given {@code long} value, interpreted in little-endian byte order. The implementation - * might perform better than its longhand equivalent, but should not perform worse. - */ - HashCode hashLong(long input); - - /** - * Shortcut for {@code newHasher().putBytes(input).hash()}. The implementation - * might perform better than its longhand equivalent, but should not perform - * worse. - */ - HashCode hashBytes(byte[] input); - - /** - * Shortcut for {@code newHasher().putBytes(input, off, len).hash()}. The implementation - * might perform better than its longhand equivalent, but should not perform - * worse. - * - * @throws IndexOutOfBoundsException if {@code off < 0} or {@code off + len > bytes.length} - * or {@code len < 0} - */ - HashCode hashBytes(byte[] input, int off, int len); - - /** - * Shortcut for {@code newHasher().putString(input).hash()}. The implementation might - * perform better than its longhand equivalent, but should not perform worse. Note that no - * character encoding is performed; the low byte and high byte of each character are hashed - * directly (in that order). This is equivalent to using - * {@code hashString(input, Charsets.UTF_16LE)}. - */ - HashCode hashString(CharSequence input); - - /** - * Shortcut for {@code newHasher().putString(input, charset).hash()}. Characters are encoded - * using the given {@link Charset}. The implementation might perform better than its - * longhand equivalent, but should not perform worse. - */ - HashCode hashString(CharSequence input, Charset charset); - - /** - * Returns the number of bits (a multiple of 32) that each hash code produced by this - * hash function has. - */ - int bits(); -} diff --git a/src/com/google/common/hash/Hasher.java b/src/com/google/common/hash/Hasher.java deleted file mode 100755 index 32c74720..00000000 --- a/src/com/google/common/hash/Hasher.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.google.common.hash; - -import com.google.common.annotations.Beta; - -import java.nio.charset.Charset; - -/** - * A {@link PrimitiveSink} that can compute a hash code after reading the input. Each hasher should - * translate all multibyte values ({@link #putInt(int)}, {@link #putLong(long)}, etc) to bytes - * in little-endian order. - * - * @author Kevin Bourrillion - * @since 11.0 - */ -@Beta -public interface Hasher extends PrimitiveSink { - Hasher putByte(byte b); - Hasher putBytes(byte[] bytes); - Hasher putBytes(byte[] bytes, int off, int len); - Hasher putShort(short s); - Hasher putInt(int i); - Hasher putLong(long l); - - /** - * Equivalent to {@code putInt(Float.floatToRawIntBits(f))}. - */ - Hasher putFloat(float f); - - /** - * Equivalent to {@code putLong(Double.doubleToRawLongBits(d))}. - */ - Hasher putDouble(double d); - - /** - * Equivalent to {@code putByte(b ? (byte) 1 : (byte) 0)}. - */ - Hasher putBoolean(boolean b); - Hasher putChar(char c); - - /** - * Equivalent to processing each {@code char} value in the {@code CharSequence}, in order. - * The input must not be updated while this method is in progress. - */ - Hasher putString(CharSequence charSequence); - - /** - * Equivalent to {@code putBytes(charSequence.toString().getBytes(charset))}. - */ - Hasher putString(CharSequence charSequence, Charset charset); - - /** - * A simple convenience for {@code funnel.funnel(object, this)}. - */ - Hasher putObject(T instance, Funnel funnel); - - /** - * Computes a hash code based on the data that have been provided to this hasher. The result is - * unspecified if this method is called more than once on the same instance. - */ - HashCode hash(); -} diff --git a/src/com/google/common/hash/MessageDigestHashFunction.java b/src/com/google/common/hash/MessageDigestHashFunction.java deleted file mode 100755 index 556a90ca..00000000 --- a/src/com/google/common/hash/MessageDigestHashFunction.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.google.common.hash; - -import static com.google.common.base.Preconditions.checkPositionIndexes; -import static com.google.common.base.Preconditions.checkState; - -import com.google.common.primitives.Chars; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; -import com.google.common.primitives.Shorts; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.CharBuffer; -import java.nio.charset.Charset; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; - -/** - * {@link HashFunction} adapter for {@link MessageDigest}s. - * - * @author Kevin Bourrillion - * @author Dimitris Andreou - */ -final class MessageDigestHashFunction extends AbstractStreamingHashFunction { - private final String algorithmName; - private final int bits; - - MessageDigestHashFunction(String algorithmName) { - this.algorithmName = algorithmName; - this.bits = getMessageDigest(algorithmName).getDigestLength() * 8; - } - - public int bits() { - return bits; - } - - private static MessageDigest getMessageDigest(String algorithmName) { - try { - return MessageDigest.getInstance(algorithmName); - } catch (NoSuchAlgorithmException e) { - throw new AssertionError(e); - } - } - - public Hasher newHasher() { - return new MessageDigestHasher(getMessageDigest(algorithmName)); - } - - private static class MessageDigestHasher implements Hasher { - private final MessageDigest digest; - private final ByteBuffer scratch; // lazy convenience - private boolean done; - - private MessageDigestHasher(MessageDigest digest) { - this.digest = digest; - this.scratch = ByteBuffer.allocate(8).order(ByteOrder.LITTLE_ENDIAN); - } - - public Hasher putByte(byte b) { - checkNotDone(); - digest.update(b); - return this; - } - - public Hasher putBytes(byte[] bytes) { - checkNotDone(); - digest.update(bytes); - return this; - } - - public Hasher putBytes(byte[] bytes, int off, int len) { - checkNotDone(); - checkPositionIndexes(off, off + len, bytes.length); - digest.update(bytes, off, len); - return this; - } - - public Hasher putShort(short s) { - checkNotDone(); - scratch.putShort(s); - digest.update(scratch.array(), 0, Shorts.BYTES); - scratch.clear(); - return this; - } - - public Hasher putInt(int i) { - checkNotDone(); - scratch.putInt(i); - digest.update(scratch.array(), 0, Ints.BYTES); - scratch.clear(); - return this; - } - - public Hasher putLong(long l) { - checkNotDone(); - scratch.putLong(l); - digest.update(scratch.array(), 0, Longs.BYTES); - scratch.clear(); - return this; - } - - public Hasher putFloat(float f) { - checkNotDone(); - scratch.putFloat(f); - digest.update(scratch.array(), 0, 4); - scratch.clear(); - return this; - } - - public Hasher putDouble(double d) { - checkNotDone(); - scratch.putDouble(d); - digest.update(scratch.array(), 0, 8); - scratch.clear(); - return this; - } - - public Hasher putBoolean(boolean b) { - return putByte(b ? (byte) 1 : (byte) 0); - } - - public Hasher putChar(char c) { - checkNotDone(); - scratch.putChar(c); - digest.update(scratch.array(), 0, Chars.BYTES); - scratch.clear(); - return this; - } - - public Hasher putString(CharSequence charSequence) { - for (int i = 0; i < charSequence.length(); i++) { - putChar(charSequence.charAt(i)); - } - return this; - } - - public Hasher putString(CharSequence charSequence, Charset charset) { - ByteBuffer buf = charset.encode(CharBuffer.wrap(charSequence)); - if (buf.hasArray()) { - return putBytes( - buf.array(), buf.arrayOffset() + buf.position(), buf.limit() + buf.arrayOffset()); - } else { - byte[] tmp = new byte[buf.remaining()]; - buf.get(tmp); - return putBytes(tmp); - } - } - - public Hasher putObject(T instance, Funnel funnel) { - checkNotDone(); - funnel.funnel(instance, this); - return this; - } - - private void checkNotDone() { - checkState(!done, "Cannot use Hasher after calling #hash() on it"); - } - - public HashCode hash() { - done = true; - return HashCodes.fromBytesNoCopy(digest.digest()); - } - } -} diff --git a/src/com/google/common/hash/PrimitiveSink.java b/src/com/google/common/hash/PrimitiveSink.java deleted file mode 100755 index c851a1e6..00000000 --- a/src/com/google/common/hash/PrimitiveSink.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.google.common.hash; - -import com.google.common.annotations.Beta; - -import java.nio.charset.Charset; - -/** - * An object which can receive a stream of primitive values. - * - * @author Kevin Bourrillion - * @since 12.0 (in 11.0 as {@code Sink}) - */ -@Beta -public interface PrimitiveSink { - /** - * Puts a byte into this sink. - * - * @param b a byte - * @return this instance - */ - PrimitiveSink putByte(byte b); - - /** - * Puts an array of bytes into this sink. - * - * @param bytes a byte array - * @return this instance - */ - PrimitiveSink putBytes(byte[] bytes); - - /** - * Puts a chunk of an array of bytes into this sink. {@code bytes[off]} is the first byte written, - * {@code bytes[off + len - 1]} is the last. - * - * @param bytes a byte array - * @param off the start offset in the array - * @param len the number of bytes to write - * @return this instance - * @throws IndexOutOfBoundsException if {@code off < 0} or {@code off + len > bytes.length} or - * {@code len < 0} - */ - PrimitiveSink putBytes(byte[] bytes, int off, int len); - - /** - * Puts a short into this sink. - */ - PrimitiveSink putShort(short s); - - /** - * Puts an int into this sink. - */ - PrimitiveSink putInt(int i); - - /** - * Puts a long into this sink. - */ - PrimitiveSink putLong(long l); - - /** - * Puts a float into this sink. - */ - PrimitiveSink putFloat(float f); - - /** - * Puts a double into this sink. - */ - PrimitiveSink putDouble(double d); - - /** - * Puts a boolean into this sink. - */ - PrimitiveSink putBoolean(boolean b); - - /** - * Puts a character into this sink. - */ - PrimitiveSink putChar(char c); - - /** - * Puts a string into this sink. - */ - PrimitiveSink putString(CharSequence charSequence); - - /** - * Puts a string into this sink using the given charset. - */ - PrimitiveSink putString(CharSequence charSequence, Charset charset); -} diff --git a/src/com/google/common/hash/package-info.java b/src/com/google/common/hash/package-info.java deleted file mode 100755 index 7df4e732..00000000 --- a/src/com/google/common/hash/package-info.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -// TODO(user): when things stabilize, flesh this out -/** - * Hash functions and related structures. - * - *

    See the Guava User Guide article on - * hashing. - */ -@ParametersAreNonnullByDefault -package com.google.common.hash; - -import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/com/google/common/io/AppendableWriter.java b/src/com/google/common/io/AppendableWriter.java deleted file mode 100755 index a9fb62c3..00000000 --- a/src/com/google/common/io/AppendableWriter.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (C) 2006 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import java.io.Closeable; -import java.io.Flushable; -import java.io.IOException; -import java.io.Writer; - -/** - * Writer that places all output on an {@link Appendable} target. If the target - * is {@link Flushable} or {@link Closeable}, flush()es and close()s will also - * be delegated to the target. - * - * @author Alan Green - * @author Sebastian Kanthak - * @since 1.0 - */ -class AppendableWriter extends Writer { - private final Appendable target; - private boolean closed; - - /** - * Creates a new writer that appends everything it writes to {@code target}. - * - * @param target target to which to append output - */ - AppendableWriter(Appendable target) { - this.target = target; - } - - /* - * Abstract methods from Writer - */ - - - @Override - public void write(char cbuf[], int off, int len) - throws IOException { - checkNotClosed(); - // It turns out that creating a new String is usually as fast, or faster - // than wrapping cbuf in a light-weight CharSequence. - target.append(new String(cbuf, off, len)); - } - - - @Override - public void flush() throws IOException { - checkNotClosed(); - if (target instanceof Flushable) { - ((Flushable) target).flush(); - } - } - - - @Override - public void close() throws IOException { - this.closed = true; - if (target instanceof Closeable) { - ((Closeable) target).close(); - } - } - - /* - * Override a few functions for performance reasons to avoid creating - * unnecessary strings. - */ - - - @Override - public void write(int c) throws IOException { - checkNotClosed(); - target.append((char) c); - } - - - @Override - public void write(String str) throws IOException { - checkNotClosed(); - target.append(str); - } - - - @Override - public void write(String str, int off, int len) throws IOException { - checkNotClosed(); - // tricky: append takes start, end pair... - target.append(str, off, off + len); - } - - - @Override - public Writer append(char c) throws IOException { - checkNotClosed(); - target.append(c); - return this; - } - - - @Override - public Writer append(CharSequence charSeq) throws IOException { - checkNotClosed(); - target.append(charSeq); - return this; - } - - - @Override - public Writer append(CharSequence charSeq, int start, int end) - throws IOException { - checkNotClosed(); - target.append(charSeq, start, end); - return this; - } - - private void checkNotClosed() throws IOException { - if (closed) { - throw new IOException("Cannot write to a closed writer."); - } - } -} diff --git a/src/com/google/common/io/ByteArrayDataInput.java b/src/com/google/common/io/ByteArrayDataInput.java deleted file mode 100755 index c0f71239..00000000 --- a/src/com/google/common/io/ByteArrayDataInput.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2009 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import java.io.DataInput; -import java.io.IOException; - -/** - * An extension of {@code DataInput} for reading from in-memory byte arrays; its - * methods offer identical functionality but do not throw {@link IOException}. - * - *

    Warning: The caller is responsible for not attempting to read past - * the end of the array. If any method encounters the end of the array - * prematurely, it throws {@link IllegalStateException} to signify programmer - * error. This behavior is a technical violation of the supertype's - * contract, which specifies a checked exception. - * - * @author Kevin Bourrillion - * @since 1.0 - */ -public interface ByteArrayDataInput extends DataInput { - void readFully(byte b[]); - - void readFully(byte b[], int off, int len); - - int skipBytes(int n); - - boolean readBoolean(); - - byte readByte(); - - int readUnsignedByte(); - - short readShort(); - - int readUnsignedShort(); - - char readChar(); - - int readInt(); - - long readLong(); - - float readFloat(); - - double readDouble(); - - String readLine(); - - String readUTF(); -} diff --git a/src/com/google/common/io/ByteArrayDataOutput.java b/src/com/google/common/io/ByteArrayDataOutput.java deleted file mode 100755 index b7c12b50..00000000 --- a/src/com/google/common/io/ByteArrayDataOutput.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2009 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import java.io.DataOutput; -import java.io.IOException; - -/** - * An extension of {@code DataOutput} for writing to in-memory byte arrays; its - * methods offer identical functionality but do not throw {@link IOException}. - * - * @author Jayaprabhakar Kadarkarai - * @since 1.0 - */ -public interface ByteArrayDataOutput extends DataOutput { - void write(int b); - void write(byte b[]); - void write(byte b[], int off, int len); - void writeBoolean(boolean v); - void writeByte(int v); - void writeShort(int v); - void writeChar(int v); - void writeInt(int v); - void writeLong(long v); - void writeFloat(float v); - void writeDouble(double v); - void writeChars(String s); - void writeUTF(String s); - - /** - * @deprecated This method is dangerous as it discards the high byte of - * every character. For UTF-8, use {@code write(s.getBytes(Charsets.UTF_8))}. - */ - @Deprecated void writeBytes(String s); - - /** - * Returns the contents that have been written to this instance, - * as a byte array. - */ - byte[] toByteArray(); -} diff --git a/src/com/google/common/io/ByteProcessor.java b/src/com/google/common/io/ByteProcessor.java deleted file mode 100755 index 71953be6..00000000 --- a/src/com/google/common/io/ByteProcessor.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2009 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.annotations.Beta; - -import java.io.IOException; - -/** - * A callback interface to process bytes from a stream. - * - *

    {@link #processBytes} will be called for each line that is read, and - * should return {@code false} when you want to stop processing. - * - * @author Chris Nokleberg - * @since 1.0 - */ -@Beta -public interface ByteProcessor { - /** - * This method will be called for each chunk of bytes in an - * input stream. The implementation should process the bytes - * from {@code buf[off]} through {@code buf[off + len - 1]} - * (inclusive). - * - * @param buf the byte array containing the data to process - * @param off the initial offset into the array - * @param len the length of data to be processed - * @return true to continue processing, false to stop - */ - boolean processBytes(byte[] buf, int off, int len) throws IOException; - - /** Return the result of processing all the bytes. */ - T getResult(); -} diff --git a/src/com/google/common/io/ByteStreams.java b/src/com/google/common/io/ByteStreams.java deleted file mode 100755 index 7ab9087f..00000000 --- a/src/com/google/common/io/ByteStreams.java +++ /dev/null @@ -1,868 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.annotations.Beta; -import com.google.common.base.Preconditions; -import com.google.common.hash.Funnels; -import com.google.common.hash.HashCode; -import com.google.common.hash.HashFunction; -import com.google.common.hash.Hasher; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInput; -import java.io.DataInputStream; -import java.io.DataOutput; -import java.io.DataOutputStream; -import java.io.EOFException; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.nio.ByteBuffer; -import java.nio.channels.ReadableByteChannel; -import java.nio.channels.WritableByteChannel; -import java.util.Arrays; -import java.util.zip.Checksum; - -/** - * Provides utility methods for working with byte arrays and I/O streams. - * - * @author Chris Nokleberg - * @since 1.0 - */ -@Beta -public final class ByteStreams { - private static final int BUF_SIZE = 0x1000; // 4K - - private ByteStreams() {} - - /** - * Returns a factory that will supply instances of - * {@link ByteArrayInputStream} that read from the given byte array. - * - * @param b the input buffer - * @return the factory - */ - public static InputSupplier newInputStreamSupplier( - byte[] b) { - return newInputStreamSupplier(b, 0, b.length); - } - - /** - * Returns a factory that will supply instances of - * {@link ByteArrayInputStream} that read from the given byte array. - * - * @param b the input buffer - * @param off the offset in the buffer of the first byte to read - * @param len the maximum number of bytes to read from the buffer - * @return the factory - */ - public static InputSupplier newInputStreamSupplier( - final byte[] b, final int off, final int len) { - return new InputSupplier() { - public ByteArrayInputStream getInput() { - return new ByteArrayInputStream(b, off, len); - } - }; - } - - /** - * Writes a byte array to an output stream from the given supplier. - * - * @param from the bytes to write - * @param to the output supplier - * @throws IOException if an I/O error occurs - */ - public static void write(byte[] from, - OutputSupplier to) throws IOException { - Preconditions.checkNotNull(from); - boolean threw = true; - OutputStream out = to.getOutput(); - try { - out.write(from); - threw = false; - } finally { - Closeables.close(out, threw); - } - } - - /** - * Opens input and output streams from the given suppliers, copies all - * bytes from the input to the output, and closes the streams. - * - * @param from the input factory - * @param to the output factory - * @return the number of bytes copied - * @throws IOException if an I/O error occurs - */ - public static long copy(InputSupplier from, - OutputSupplier to) throws IOException { - int successfulOps = 0; - InputStream in = from.getInput(); - try { - OutputStream out = to.getOutput(); - try { - long count = copy(in, out); - successfulOps++; - return count; - } finally { - Closeables.close(out, successfulOps < 1); - successfulOps++; - } - } finally { - Closeables.close(in, successfulOps < 2); - } - } - - /** - * Opens an input stream from the supplier, copies all bytes from the - * input to the output, and closes the input stream. Does not close - * or flush the output stream. - * - * @param from the input factory - * @param to the output stream to write to - * @return the number of bytes copied - * @throws IOException if an I/O error occurs - */ - public static long copy(InputSupplier from, - OutputStream to) throws IOException { - boolean threw = true; - InputStream in = from.getInput(); - try { - long count = copy(in, to); - threw = false; - return count; - } finally { - Closeables.close(in, threw); - } - } - - /** - * Opens an output stream from the supplier, copies all bytes from the input - * to the output, and closes the output stream. Does not close or flush the - * input stream. - * - * @param from the input stream to read from - * @param to the output factory - * @return the number of bytes copied - * @throws IOException if an I/O error occurs - * @since 10.0 - */ - public static long copy(InputStream from, - OutputSupplier to) throws IOException { - boolean threw = true; - OutputStream out = to.getOutput(); - try { - long count = copy(from, out); - threw = false; - return count; - } finally { - Closeables.close(out, threw); - } - } - - /** - * Copies all bytes from the input stream to the output stream. - * Does not close or flush either stream. - * - * @param from the input stream to read from - * @param to the output stream to write to - * @return the number of bytes copied - * @throws IOException if an I/O error occurs - */ - public static long copy(InputStream from, OutputStream to) - throws IOException { - byte[] buf = new byte[BUF_SIZE]; - long total = 0; - while (true) { - int r = from.read(buf); - if (r == -1) { - break; - } - to.write(buf, 0, r); - total += r; - } - return total; - } - - /** - * Copies all bytes from the readable channel to the writable channel. - * Does not close or flush either channel. - * - * @param from the readable channel to read from - * @param to the writable channel to write to - * @return the number of bytes copied - * @throws IOException if an I/O error occurs - */ - public static long copy(ReadableByteChannel from, - WritableByteChannel to) throws IOException { - ByteBuffer buf = ByteBuffer.allocate(BUF_SIZE); - long total = 0; - while (from.read(buf) != -1) { - buf.flip(); - while (buf.hasRemaining()) { - total += to.write(buf); - } - buf.clear(); - } - return total; - } - - /** - * Reads all bytes from an input stream into a byte array. - * Does not close the stream. - * - * @param in the input stream to read from - * @return a byte array containing all the bytes from the stream - * @throws IOException if an I/O error occurs - */ - public static byte[] toByteArray(InputStream in) throws IOException { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - copy(in, out); - return out.toByteArray(); - } - - /** - * Returns the data from a {@link InputStream} factory as a byte array. - * - * @param supplier the factory - * @throws IOException if an I/O error occurs - */ - public static byte[] toByteArray( - InputSupplier supplier) throws IOException { - boolean threw = true; - InputStream in = supplier.getInput(); - try { - byte[] result = toByteArray(in); - threw = false; - return result; - } finally { - Closeables.close(in, threw); - } - } - - /** - * Returns a new {@link ByteArrayDataInput} instance to read from the {@code - * bytes} array from the beginning. - */ - public static ByteArrayDataInput newDataInput(byte[] bytes) { - return new ByteArrayDataInputStream(bytes); - } - - /** - * Returns a new {@link ByteArrayDataInput} instance to read from the {@code - * bytes} array, starting at the given position. - * - * @throws IndexOutOfBoundsException if {@code start} is negative or greater - * than the length of the array - */ - public static ByteArrayDataInput newDataInput(byte[] bytes, int start) { - Preconditions.checkPositionIndex(start, bytes.length); - return new ByteArrayDataInputStream(bytes, start); - } - - private static class ByteArrayDataInputStream implements ByteArrayDataInput { - final DataInput input; - - ByteArrayDataInputStream(byte[] bytes) { - this.input = new DataInputStream(new ByteArrayInputStream(bytes)); - } - - ByteArrayDataInputStream(byte[] bytes, int start) { - this.input = new DataInputStream( - new ByteArrayInputStream(bytes, start, bytes.length - start)); - } - - public void readFully(byte b[]) { - try { - input.readFully(b); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - public void readFully(byte b[], int off, int len) { - try { - input.readFully(b, off, len); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - public int skipBytes(int n) { - try { - return input.skipBytes(n); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - public boolean readBoolean() { - try { - return input.readBoolean(); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - public byte readByte() { - try { - return input.readByte(); - } catch (EOFException e) { - throw new IllegalStateException(e); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - - public int readUnsignedByte() { - try { - return input.readUnsignedByte(); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - public short readShort() { - try { - return input.readShort(); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - public int readUnsignedShort() { - try { - return input.readUnsignedShort(); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - public char readChar() { - try { - return input.readChar(); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - public int readInt() { - try { - return input.readInt(); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - public long readLong() { - try { - return input.readLong(); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - public float readFloat() { - try { - return input.readFloat(); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - public double readDouble() { - try { - return input.readDouble(); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - public String readLine() { - try { - return input.readLine(); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - public String readUTF() { - try { - return input.readUTF(); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - } - - /** - * Returns a new {@link ByteArrayDataOutput} instance with a default size. - */ - public static ByteArrayDataOutput newDataOutput() { - return new ByteArrayDataOutputStream(); - } - - /** - * Returns a new {@link ByteArrayDataOutput} instance sized to hold - * {@code size} bytes before resizing. - * - * @throws IllegalArgumentException if {@code size} is negative - */ - public static ByteArrayDataOutput newDataOutput(int size) { - Preconditions.checkArgument(size >= 0, "Invalid size: %s", size); - return new ByteArrayDataOutputStream(size); - } - - @SuppressWarnings("deprecation") // for writeBytes - private static class ByteArrayDataOutputStream - implements ByteArrayDataOutput { - - final DataOutput output; - final ByteArrayOutputStream byteArrayOutputSteam; - - ByteArrayDataOutputStream() { - this(new ByteArrayOutputStream()); - } - - ByteArrayDataOutputStream(int size) { - this(new ByteArrayOutputStream(size)); - } - - ByteArrayDataOutputStream(ByteArrayOutputStream byteArrayOutputSteam) { - this.byteArrayOutputSteam = byteArrayOutputSteam; - output = new DataOutputStream(byteArrayOutputSteam); - } - - public void write(int b) { - try { - output.write(b); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - - public void write(byte[] b) { - try { - output.write(b); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - - public void write(byte[] b, int off, int len) { - try { - output.write(b, off, len); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - - public void writeBoolean(boolean v) { - try { - output.writeBoolean(v); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - - public void writeByte(int v) { - try { - output.writeByte(v); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - - public void writeBytes(String s) { - try { - output.writeBytes(s); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - - public void writeChar(int v) { - try { - output.writeChar(v); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - - public void writeChars(String s) { - try { - output.writeChars(s); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - - public void writeDouble(double v) { - try { - output.writeDouble(v); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - - public void writeFloat(float v) { - try { - output.writeFloat(v); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - - public void writeInt(int v) { - try { - output.writeInt(v); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - - public void writeLong(long v) { - try { - output.writeLong(v); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - - public void writeShort(int v) { - try { - output.writeShort(v); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - - public void writeUTF(String s) { - try { - output.writeUTF(s); - } catch (IOException impossible) { - throw new AssertionError(impossible); - } - } - - public byte[] toByteArray() { - return byteArrayOutputSteam.toByteArray(); - } - - } - - // TODO(chrisn): Not all streams support skipping. - /** Returns the length of a supplied input stream, in bytes. */ - public static long length(InputSupplier supplier) - throws IOException { - long count = 0; - boolean threw = true; - InputStream in = supplier.getInput(); - try { - while (true) { - // We skip only Integer.MAX_VALUE due to JDK overflow bugs. - long amt = in.skip(Integer.MAX_VALUE); - if (amt == 0) { - if (in.read() == -1) { - threw = false; - return count; - } - count++; - } else { - count += amt; - } - } - } finally { - Closeables.close(in, threw); - } - } - - /** - * Returns true if the supplied input streams contain the same bytes. - * - * @throws IOException if an I/O error occurs - */ - public static boolean equal(InputSupplier supplier1, - InputSupplier supplier2) throws IOException { - byte[] buf1 = new byte[BUF_SIZE]; - byte[] buf2 = new byte[BUF_SIZE]; - - boolean threw = true; - InputStream in1 = supplier1.getInput(); - try { - InputStream in2 = supplier2.getInput(); - try { - while (true) { - int read1 = read(in1, buf1, 0, BUF_SIZE); - int read2 = read(in2, buf2, 0, BUF_SIZE); - if (read1 != read2 || !Arrays.equals(buf1, buf2)) { - threw = false; - return false; - } else if (read1 != BUF_SIZE) { - threw = false; - return true; - } - } - } finally { - Closeables.close(in2, threw); - } - } finally { - Closeables.close(in1, threw); - } - } - - /** - * Attempts to read enough bytes from the stream to fill the given byte array, - * with the same behavior as {@link DataInput#readFully(byte[])}. - * Does not close the stream. - * - * @param in the input stream to read from. - * @param b the buffer into which the data is read. - * @throws EOFException if this stream reaches the end before reading all - * the bytes. - * @throws IOException if an I/O error occurs. - */ - public static void readFully(InputStream in, byte[] b) throws IOException { - readFully(in, b, 0, b.length); - } - - /** - * Attempts to read {@code len} bytes from the stream into the given array - * starting at {@code off}, with the same behavior as - * {@link DataInput#readFully(byte[], int, int)}. Does not close the - * stream. - * - * @param in the input stream to read from. - * @param b the buffer into which the data is read. - * @param off an int specifying the offset into the data. - * @param len an int specifying the number of bytes to read. - * @throws EOFException if this stream reaches the end before reading all - * the bytes. - * @throws IOException if an I/O error occurs. - */ - public static void readFully(InputStream in, byte[] b, int off, int len) - throws IOException { - if (read(in, b, off, len) != len) { - throw new EOFException(); - } - } - - /** - * Discards {@code n} bytes of data from the input stream. This method - * will block until the full amount has been skipped. Does not close the - * stream. - * - * @param in the input stream to read from - * @param n the number of bytes to skip - * @throws EOFException if this stream reaches the end before skipping all - * the bytes - * @throws IOException if an I/O error occurs, or the stream does not - * support skipping - */ - public static void skipFully(InputStream in, long n) throws IOException { - while (n > 0) { - long amt = in.skip(n); - if (amt == 0) { - // Force a blocking read to avoid infinite loop - if (in.read() == -1) { - throw new EOFException(); - } - n--; - } else { - n -= amt; - } - } - } - - /** - * Process the bytes of a supplied stream - * - * @param supplier the input stream factory - * @param processor the object to which to pass the bytes of the stream - * @return the result of the byte processor - * @throws IOException if an I/O error occurs - */ - public static T readBytes(InputSupplier supplier, - ByteProcessor processor) throws IOException { - byte[] buf = new byte[BUF_SIZE]; - boolean threw = true; - InputStream in = supplier.getInput(); - try { - int amt; - do { - amt = in.read(buf); - if (amt == -1) { - threw = false; - break; - } - } while (processor.processBytes(buf, 0, amt)); - return processor.getResult(); - } finally { - Closeables.close(in, threw); - } - } - - /** - * Computes and returns the checksum value for a supplied input stream. - * The checksum object is reset when this method returns successfully. - * - * @param supplier the input stream factory - * @param checksum the checksum object - * @return the result of {@link Checksum#getValue} after updating the - * checksum object with all of the bytes in the stream - * @throws IOException if an I/O error occurs - */ - public static long getChecksum(InputSupplier supplier, - final Checksum checksum) throws IOException { - return readBytes(supplier, new ByteProcessor() { - public boolean processBytes(byte[] buf, int off, int len) { - checksum.update(buf, off, len); - return true; - } - - public Long getResult() { - long result = checksum.getValue(); - checksum.reset(); - return result; - } - }); - } - - /** - * Computes the hash code of the data supplied by {@code supplier} using {@code - * hashFunction}. - * - * @param supplier the input stream factory - * @param hashFunction the hash function to use to hash the data - * @return the {@link HashCode} of all of the bytes in the input stream - * @throws IOException if an I/O error occurs - * @since 12.0 - */ - public static HashCode hash( - InputSupplier supplier, HashFunction hashFunction) - throws IOException { - Hasher hasher = hashFunction.newHasher(); - copy(supplier, Funnels.asOutputStream(hasher)); - return hasher.hash(); - } - - /** - * Reads some bytes from an input stream and stores them into the buffer array - * {@code b}. This method blocks until {@code len} bytes of input data have - * been read into the array, or end of file is detected. The number of bytes - * read is returned, possibly zero. Does not close the stream. - * - *

    A caller can detect EOF if the number of bytes read is less than - * {@code len}. All subsequent calls on the same stream will return zero. - * - *

    If {@code b} is null, a {@code NullPointerException} is thrown. If - * {@code off} is negative, or {@code len} is negative, or {@code off+len} is - * greater than the length of the array {@code b}, then an - * {@code IndexOutOfBoundsException} is thrown. If {@code len} is zero, then - * no bytes are read. Otherwise, the first byte read is stored into element - * {@code b[off]}, the next one into {@code b[off+1]}, and so on. The number - * of bytes read is, at most, equal to {@code len}. - * - * @param in the input stream to read from - * @param b the buffer into which the data is read - * @param off an int specifying the offset into the data - * @param len an int specifying the number of bytes to read - * @return the number of bytes read - * @throws IOException if an I/O error occurs - */ - public static int read(InputStream in, byte[] b, int off, int len) - throws IOException { - if (len < 0) { - throw new IndexOutOfBoundsException("len is negative"); - } - int total = 0; - while (total < len) { - int result = in.read(b, off + total, len - total); - if (result == -1) { - break; - } - total += result; - } - return total; - } - - /** - * Returns an {@link InputSupplier} that returns input streams from the - * an underlying supplier, where each stream starts at the given - * offset and is limited to the specified number of bytes. - * - * @param supplier the supplier from which to get the raw streams - * @param offset the offset in bytes into the underlying stream where - * the returned streams will start - * @param length the maximum length of the returned streams - * @throws IllegalArgumentException if offset or length are negative - */ - public static InputSupplier slice( - final InputSupplier supplier, - final long offset, - final long length) { - Preconditions.checkNotNull(supplier); - Preconditions.checkArgument(offset >= 0, "offset is negative"); - Preconditions.checkArgument(length >= 0, "length is negative"); - return new InputSupplier() { - public InputStream getInput() throws IOException { - InputStream in = supplier.getInput(); - if (offset > 0) { - try { - skipFully(in, offset); - } catch (IOException e) { - Closeables.closeQuietly(in); - throw e; - } - } - return new LimitInputStream(in, length); - } - }; - } - - /** - * Joins multiple {@link InputStream} suppliers into a single supplier. - * Streams returned from the supplier will contain the concatenated data from - * the streams of the underlying suppliers. - * - *

    Only one underlying input stream will be open at a time. Closing the - * joined stream will close the open underlying stream. - * - *

    Reading from the joined stream will throw a {@link NullPointerException} - * if any of the suppliers are null or return null. - * - * @param suppliers the suppliers to concatenate - * @return a supplier that will return a stream containing the concatenated - * stream data - */ - public static InputSupplier join(final - Iterable> suppliers) { - return new InputSupplier() { - public InputStream getInput() throws IOException { - return new MultiInputStream(suppliers.iterator()); - } - }; - } - - /** Varargs form of {@link #join(Iterable)}. */ - public static InputSupplier join( - InputSupplier... suppliers) { - return join(Arrays.asList(suppliers)); - } -} diff --git a/src/com/google/common/io/CharStreams.java b/src/com/google/common/io/CharStreams.java deleted file mode 100755 index 0403de02..00000000 --- a/src/com/google/common/io/CharStreams.java +++ /dev/null @@ -1,438 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.annotations.Beta; -import com.google.common.base.Charsets; -import com.google.common.base.Preconditions; - -import java.io.Closeable; -import java.io.EOFException; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.Reader; -import java.io.StringReader; -import java.io.Writer; -import java.nio.CharBuffer; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * Provides utility methods for working with character streams. - * - *

    All method parameters must be non-null unless documented otherwise. - * - *

    Some of the methods in this class take arguments with a generic type of - * {@code Readable & Closeable}. A {@link java.io.Reader} implements both of - * those interfaces. Similarly for {@code Appendable & Closeable} and - * {@link java.io.Writer}. - * - * @author Chris Nokleberg - * @author Bin Zhu - * @since 1.0 - */ -@Beta -public final class CharStreams { - private static final int BUF_SIZE = 0x800; // 2K chars (4K bytes) - - private CharStreams() {} - - /** - * Returns a factory that will supply instances of {@link StringReader} that - * read a string value. - * - * @param value the string to read - * @return the factory - */ - public static InputSupplier newReaderSupplier( - final String value) { - Preconditions.checkNotNull(value); - return new InputSupplier() { - public StringReader getInput() { - return new StringReader(value); - } - }; - } - - /** - * Returns a factory that will supply instances of {@link InputStreamReader}, - * using the given {@link InputStream} factory and character set. - * - * @param in the factory that will be used to open input streams - * @param charset the charset used to decode the input stream; see {@link - * Charsets} for helpful predefined constants - * @return the factory - */ - public static InputSupplier newReaderSupplier( - final InputSupplier in, final Charset charset) { - Preconditions.checkNotNull(in); - Preconditions.checkNotNull(charset); - return new InputSupplier() { - public InputStreamReader getInput() throws IOException { - return new InputStreamReader(in.getInput(), charset); - } - }; - } - - /** - * Returns a factory that will supply instances of {@link OutputStreamWriter}, - * using the given {@link OutputStream} factory and character set. - * - * @param out the factory that will be used to open output streams - * @param charset the charset used to encode the output stream; see {@link - * Charsets} for helpful predefined constants - * @return the factory - */ - public static OutputSupplier newWriterSupplier( - final OutputSupplier out, final Charset charset) { - Preconditions.checkNotNull(out); - Preconditions.checkNotNull(charset); - return new OutputSupplier() { - public OutputStreamWriter getOutput() throws IOException { - return new OutputStreamWriter(out.getOutput(), charset); - } - }; - } - - /** - * Writes a character sequence (such as a string) to an appendable - * object from the given supplier. - * - * @param from the character sequence to write - * @param to the output supplier - * @throws IOException if an I/O error occurs - */ - public static void write(CharSequence from, - OutputSupplier to) throws IOException { - Preconditions.checkNotNull(from); - boolean threw = true; - W out = to.getOutput(); - try { - out.append(from); - threw = false; - } finally { - Closeables.close(out, threw); - } - } - - /** - * Opens {@link Readable} and {@link Appendable} objects from the - * given factories, copies all characters between the two, and closes - * them. - * - * @param from the input factory - * @param to the output factory - * @return the number of characters copied - * @throws IOException if an I/O error occurs - */ - public static long copy(InputSupplier from, - OutputSupplier to) throws IOException { - int successfulOps = 0; - R in = from.getInput(); - try { - W out = to.getOutput(); - try { - long count = copy(in, out); - successfulOps++; - return count; - } finally { - Closeables.close(out, successfulOps < 1); - successfulOps++; - } - } finally { - Closeables.close(in, successfulOps < 2); - } - } - - /** - * Opens a {@link Readable} object from the supplier, copies all characters - * to the {@link Appendable} object, and closes the input. Does not close - * or flush the output. - * - * @param from the input factory - * @param to the object to write to - * @return the number of characters copied - * @throws IOException if an I/O error occurs - */ - public static long copy( - InputSupplier from, Appendable to) throws IOException { - boolean threw = true; - R in = from.getInput(); - try { - long count = copy(in, to); - threw = false; - return count; - } finally { - Closeables.close(in, threw); - } - } - - /** - * Copies all characters between the {@link Readable} and {@link Appendable} - * objects. Does not close or flush either object. - * - * @param from the object to read from - * @param to the object to write to - * @return the number of characters copied - * @throws IOException if an I/O error occurs - */ - public static long copy(Readable from, Appendable to) throws IOException { - CharBuffer buf = CharBuffer.allocate(BUF_SIZE); - long total = 0; - while (from.read(buf) != -1) { - buf.flip(); - to.append(buf); - total += buf.remaining(); - buf.clear(); - } - return total; - } - - /** - * Reads all characters from a {@link Readable} object into a {@link String}. - * Does not close the {@code Readable}. - * - * @param r the object to read from - * @return a string containing all the characters - * @throws IOException if an I/O error occurs - */ - public static String toString(Readable r) throws IOException { - return toStringBuilder(r).toString(); - } - - /** - * Returns the characters from a {@link Readable} & {@link Closeable} object - * supplied by a factory as a {@link String}. - * - * @param supplier the factory to read from - * @return a string containing all the characters - * @throws IOException if an I/O error occurs - */ - public static String toString( - InputSupplier supplier) throws IOException { - return toStringBuilder(supplier).toString(); - } - - /** - * Reads all characters from a {@link Readable} object into a new - * {@link StringBuilder} instance. Does not close the {@code Readable}. - * - * @param r the object to read from - * @return a {@link StringBuilder} containing all the characters - * @throws IOException if an I/O error occurs - */ - private static StringBuilder toStringBuilder(Readable r) throws IOException { - StringBuilder sb = new StringBuilder(); - copy(r, sb); - return sb; - } - - /** - * Returns the characters from a {@link Readable} & {@link Closeable} object - * supplied by a factory as a new {@link StringBuilder} instance. - * - * @param supplier the factory to read from - * @throws IOException if an I/O error occurs - */ - private static StringBuilder toStringBuilder( - InputSupplier supplier) throws IOException { - boolean threw = true; - R r = supplier.getInput(); - try { - StringBuilder result = toStringBuilder(r); - threw = false; - return result; - } finally { - Closeables.close(r, threw); - } - } - - /** - * Reads the first line from a {@link Readable} & {@link Closeable} object - * supplied by a factory. The line does not include line-termination - * characters, but does include other leading and trailing whitespace. - * - * @param supplier the factory to read from - * @return the first line, or null if the reader is empty - * @throws IOException if an I/O error occurs - */ - public static String readFirstLine( - InputSupplier supplier) throws IOException { - boolean threw = true; - R r = supplier.getInput(); - try { - String line = new LineReader(r).readLine(); - threw = false; - return line; - } finally { - Closeables.close(r, threw); - } - } - - /** - * Reads all of the lines from a {@link Readable} & {@link Closeable} object - * supplied by a factory. The lines do not include line-termination - * characters, but do include other leading and trailing whitespace. - * - * @param supplier the factory to read from - * @return a mutable {@link List} containing all the lines - * @throws IOException if an I/O error occurs - */ - public static List readLines( - InputSupplier supplier) throws IOException { - boolean threw = true; - R r = supplier.getInput(); - try { - List result = readLines(r); - threw = false; - return result; - } finally { - Closeables.close(r, threw); - } - } - - /** - * Reads all of the lines from a {@link Readable} object. The lines do - * not include line-termination characters, but do include other - * leading and trailing whitespace. - * - *

    Does not close the {@code Readable}. If reading files or resources you - * should use the {@link Files#readLines} and {@link Resources#readLines} - * methods. - * - * @param r the object to read from - * @return a mutable {@link List} containing all the lines - * @throws IOException if an I/O error occurs - */ - public static List readLines(Readable r) throws IOException { - List result = new ArrayList(); - LineReader lineReader = new LineReader(r); - String line; - while ((line = lineReader.readLine()) != null) { - result.add(line); - } - return result; - } - - /** - * Streams lines from a {@link Readable} and {@link Closeable} object - * supplied by a factory, stopping when our callback returns false, or we - * have read all of the lines. - * - * @param supplier the factory to read from - * @param callback the LineProcessor to use to handle the lines - * @return the output of processing the lines - * @throws IOException if an I/O error occurs - */ - public static T readLines( - InputSupplier supplier, LineProcessor callback) throws IOException { - boolean threw = true; - R r = supplier.getInput(); - try { - LineReader lineReader = new LineReader(r); - String line; - while ((line = lineReader.readLine()) != null) { - if (!callback.processLine(line)) { - break; - } - } - threw = false; - } finally { - Closeables.close(r, threw); - } - return callback.getResult(); - } - - /** - * Joins multiple {@link Reader} suppliers into a single supplier. - * Reader returned from the supplier will contain the concatenated data - * from the readers of the underlying suppliers. - * - *

    Reading from the joined reader will throw a {@link NullPointerException} - * if any of the suppliers are null or return null. - * - *

    Only one underlying reader will be open at a time. Closing the - * joined reader will close the open underlying reader. - * - * @param suppliers the suppliers to concatenate - * @return a supplier that will return a reader containing the concatenated - * data - */ - public static InputSupplier join( - final Iterable> suppliers) { - return new InputSupplier() { - public Reader getInput() throws IOException { - return new MultiReader(suppliers.iterator()); - } - }; - } - - /** Varargs form of {@link #join(Iterable)}. */ - public static InputSupplier join( - InputSupplier... suppliers) { - return join(Arrays.asList(suppliers)); - } - - /** - * Discards {@code n} characters of data from the reader. This method - * will block until the full amount has been skipped. Does not close the - * reader. - * - * @param reader the reader to read from - * @param n the number of characters to skip - * @throws EOFException if this stream reaches the end before skipping all - * the bytes - * @throws IOException if an I/O error occurs - */ - public static void skipFully(Reader reader, long n) throws IOException { - while (n > 0) { - long amt = reader.skip(n); - if (amt == 0) { - // force a blocking read - if (reader.read() == -1) { - throw new EOFException(); - } - n--; - } else { - n -= amt; - } - } - } - - /** - * Returns a Writer that sends all output to the given {@link Appendable} - * target. Closing the writer will close the target if it is {@link - * Closeable}, and flushing the writer will flush the target if it is {@link - * java.io.Flushable}. - * - * @param target the object to which output will be sent - * @return a new Writer object, unless target is a Writer, in which case the - * target is returned - */ - public static Writer asWriter(Appendable target) { - if (target instanceof Writer) { - return (Writer) target; - } - return new AppendableWriter(target); - } -} diff --git a/src/com/google/common/io/Closeables.java b/src/com/google/common/io/Closeables.java deleted file mode 100755 index e6198873..00000000 --- a/src/com/google/common/io/Closeables.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.annotations.Beta; -import com.google.common.annotations.VisibleForTesting; - -import java.io.Closeable; -import java.io.IOException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.annotation.Nullable; - -/** - * Utility methods for working with {@link Closeable} objects. - * - * @author Michael Lancaster - * @since 1.0 - */ -@Beta -public final class Closeables { - @VisibleForTesting static final Logger logger - = Logger.getLogger(Closeables.class.getName()); - - private Closeables() {} - - /** - * Closes a {@link Closeable}, with control over whether an - * {@code IOException} may be thrown. This is primarily useful in a - * finally block, where a thrown exception needs to be logged but not - * propagated (otherwise the original exception will be lost). - * - *

    If {@code swallowIOException} is true then we never throw - * {@code IOException} but merely log it. - * - *

    Example: - * - *

    public void useStreamNicely() throws IOException {
    -   * SomeStream stream = new SomeStream("foo");
    -   * boolean threw = true;
    -   * try {
    -   *   // Some code which does something with the Stream. May throw a
    -   *   // Throwable.
    -   *   threw = false; // No throwable thrown.
    -   * } finally {
    -   *   // Close the stream.
    -   *   // If an exception occurs, only rethrow it if (threw==false).
    -   *   Closeables.close(stream, threw);
    -   * }
    -   * 
    - * - * @param closeable the {@code Closeable} object to be closed, or null, - * in which case this method does nothing - * @param swallowIOException if true, don't propagate IO exceptions - * thrown by the {@code close} methods - * @throws IOException if {@code swallowIOException} is false and - * {@code close} throws an {@code IOException}. - */ - public static void close(@Nullable Closeable closeable, - boolean swallowIOException) throws IOException { - if (closeable == null) { - return; - } - try { - closeable.close(); - } catch (IOException e) { - if (swallowIOException) { - logger.log(Level.WARNING, - "IOException thrown while closing Closeable.", e); - } else { - throw e; - } - } - } - - /** - * Equivalent to calling {@code close(closeable, true)}, but with no - * IOException in the signature. - * @param closeable the {@code Closeable} object to be closed, or null, in - * which case this method does nothing - */ - public static void closeQuietly(@Nullable Closeable closeable) { - try { - close(closeable, true); - } catch (IOException e) { - logger.log(Level.SEVERE, "IOException should not have been thrown.", e); - } - } -} diff --git a/src/com/google/common/io/CountingInputStream.java b/src/com/google/common/io/CountingInputStream.java deleted file mode 100755 index 43451aeb..00000000 --- a/src/com/google/common/io/CountingInputStream.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.annotations.Beta; - -import java.io.FilterInputStream; -import java.io.IOException; -import java.io.InputStream; - -/** - * An {@link InputStream} that counts the number of bytes read. - * - * @author Chris Nokleberg - * @since 1.0 - */ -@Beta -public final class CountingInputStream extends FilterInputStream { - - private long count; - private long mark = -1; - - /** - * Wraps another input stream, counting the number of bytes read. - * - * @param in the input stream to be wrapped - */ - public CountingInputStream(InputStream in) { - super(in); - } - - /** Returns the number of bytes read. */ - public long getCount() { - return count; - } - - - @Override - public int read() throws IOException { - int result = in.read(); - if (result != -1) { - count++; - } - return result; - } - - - @Override - public int read(byte[] b, int off, int len) throws IOException { - int result = in.read(b, off, len); - if (result != -1) { - count += result; - } - return result; - } - - - @Override - public long skip(long n) throws IOException { - long result = in.skip(n); - count += result; - return result; - } - - - @Override - public synchronized void mark(int readlimit) { - in.mark(readlimit); - mark = count; - // it's okay to mark even if mark isn't supported, as reset won't work - } - - - @Override - public synchronized void reset() throws IOException { - if (!in.markSupported()) { - throw new IOException("Mark not supported"); - } - if (mark == -1) { - throw new IOException("Mark not set"); - } - - in.reset(); - count = mark; - } -} diff --git a/src/com/google/common/io/CountingOutputStream.java b/src/com/google/common/io/CountingOutputStream.java deleted file mode 100755 index f04c3bdc..00000000 --- a/src/com/google/common/io/CountingOutputStream.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.annotations.Beta; - -import java.io.FilterOutputStream; -import java.io.IOException; -import java.io.OutputStream; - -/** - * An OutputStream that counts the number of bytes written. - * - * @author Chris Nokleberg - * @since 1.0 - */ -@Beta -public final class CountingOutputStream extends FilterOutputStream { - - private long count; - - /** - * Wraps another output stream, counting the number of bytes written. - * - * @param out the output stream to be wrapped - */ - public CountingOutputStream(OutputStream out) { - super(out); - } - - /** Returns the number of bytes written. */ - public long getCount() { - return count; - } - - - @Override - public void write(byte[] b, int off, int len) throws IOException { - out.write(b, off, len); - count += len; - } - - - @Override - public void write(int b) throws IOException { - out.write(b); - count++; - } -} diff --git a/src/com/google/common/io/FileBackedOutputStream.java b/src/com/google/common/io/FileBackedOutputStream.java deleted file mode 100755 index 7ac64a0b..00000000 --- a/src/com/google/common/io/FileBackedOutputStream.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright (C) 2008 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.annotations.Beta; -import com.google.common.annotations.VisibleForTesting; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -/** - * An {@link OutputStream} that starts buffering to a byte array, but - * switches to file buffering once the data reaches a configurable size. - * - *

    This class is thread-safe. - * - * @author Chris Nokleberg - * @since 1.0 - */ -@Beta -public final class FileBackedOutputStream extends OutputStream { - - private final int fileThreshold; - private final boolean resetOnFinalize; - private final InputSupplier supplier; - - private OutputStream out; - private MemoryOutput memory; - private File file; - - /** ByteArrayOutputStream that exposes its internals. */ - private static class MemoryOutput extends ByteArrayOutputStream { - byte[] getBuffer() { - return buf; - } - - int getCount() { - return count; - } - } - - /** Returns the file holding the data (possibly null). */ - @VisibleForTesting synchronized File getFile() { - return file; - } - - /** - * Creates a new instance that uses the given file threshold, and does - * not reset the data when the {@link InputSupplier} returned by - * {@link #getSupplier} is finalized. - * - * @param fileThreshold the number of bytes before the stream should - * switch to buffering to a file - */ - public FileBackedOutputStream(int fileThreshold) { - this(fileThreshold, false); - } - - /** - * Creates a new instance that uses the given file threshold, and - * optionally resets the data when the {@link InputSupplier} returned - * by {@link #getSupplier} is finalized. - * - * @param fileThreshold the number of bytes before the stream should - * switch to buffering to a file - * @param resetOnFinalize if true, the {@link #reset} method will - * be called when the {@link InputSupplier} returned by {@link - * #getSupplier} is finalized - */ - public FileBackedOutputStream(int fileThreshold, boolean resetOnFinalize) { - this.fileThreshold = fileThreshold; - this.resetOnFinalize = resetOnFinalize; - memory = new MemoryOutput(); - out = memory; - - if (resetOnFinalize) { - supplier = new InputSupplier() { - public InputStream getInput() throws IOException { - return openStream(); - } - - - @Override - protected void finalize() { - try { - reset(); - } catch (Throwable t) { - t.printStackTrace(System.err); - } - } - }; - } else { - supplier = new InputSupplier() { - public InputStream getInput() throws IOException { - return openStream(); - } - }; - } - } - - /** - * Returns a supplier that may be used to retrieve the data buffered - * by this stream. - */ - public InputSupplier getSupplier() { - return supplier; - } - - private synchronized InputStream openStream() throws IOException { - if (file != null) { - return new FileInputStream(file); - } else { - return new ByteArrayInputStream( - memory.getBuffer(), 0, memory.getCount()); - } - } - - /** - * Calls {@link #close} if not already closed, and then resets this - * object back to its initial state, for reuse. If data was buffered - * to a file, it will be deleted. - * - * @throws IOException if an I/O error occurred while deleting the file buffer - */ - public synchronized void reset() throws IOException { - try { - close(); - } finally { - if (memory == null) { - memory = new MemoryOutput(); - } else { - memory.reset(); - } - out = memory; - if (file != null) { - File deleteMe = file; - file = null; - if (!deleteMe.delete()) { - throw new IOException("Could not delete: " + deleteMe); - } - } - } - } - - - @Override - public synchronized void write(int b) throws IOException { - update(1); - out.write(b); - } - - - @Override - public synchronized void write(byte[] b) throws IOException { - write(b, 0, b.length); - } - - - @Override - public synchronized void write(byte[] b, int off, int len) - throws IOException { - update(len); - out.write(b, off, len); - } - - - @Override - public synchronized void close() throws IOException { - out.close(); - } - - - @Override - public synchronized void flush() throws IOException { - out.flush(); - } - - /** - * Checks if writing {@code len} bytes would go over threshold, and - * switches to file buffering if so. - */ - private void update(int len) throws IOException { - if (file == null && (memory.getCount() + len > fileThreshold)) { - File temp = File.createTempFile("FileBackedOutputStream", null); - if (resetOnFinalize) { - // Finalizers are not guaranteed to be called on system shutdown; - // this is insurance. - temp.deleteOnExit(); - } - FileOutputStream transfer = new FileOutputStream(temp); - transfer.write(memory.getBuffer(), 0, memory.getCount()); - transfer.flush(); - - // We've successfully transferred the data; switch to writing to file - out = transfer; - file = temp; - memory = null; - } - } -} diff --git a/src/com/google/common/io/Flushables.java b/src/com/google/common/io/Flushables.java deleted file mode 100755 index 68ff860f..00000000 --- a/src/com/google/common/io/Flushables.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.annotations.Beta; - -import java.io.Flushable; -import java.io.IOException; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * Utility methods for working with {@link Flushable} objects. - * - * @author Michael Lancaster - * @since 1.0 - */ -@Beta -public final class Flushables { - private static final Logger logger - = Logger.getLogger(Flushables.class.getName()); - - private Flushables() {} - - /** - * Flush a {@link Flushable}, with control over whether an - * {@code IOException} may be thrown. - * - *

    If {@code swallowIOException} is true, then we don't rethrow - * {@code IOException}, but merely log it. - * - * @param flushable the {@code Flushable} object to be flushed. - * @param swallowIOException if true, don't propagate IO exceptions - * thrown by the {@code flush} method - * @throws IOException if {@code swallowIOException} is false and - * {@link Flushable#flush} throws an {@code IOException}. - * @see Closeables#close - */ - public static void flush(Flushable flushable, boolean swallowIOException) - throws IOException { - try { - flushable.flush(); - } catch (IOException e) { - if (swallowIOException) { - logger.log(Level.WARNING, - "IOException thrown while flushing Flushable.", e); - } else { - throw e; - } - } - } - - /** - * Equivalent to calling {@code flush(flushable, true)}, but with no - * {@code IOException} in the signature. - * - * @param flushable the {@code Flushable} object to be flushed. - */ - public static void flushQuietly(Flushable flushable) { - try { - flush(flushable, true); - } catch (IOException e) { - logger.log(Level.SEVERE, "IOException should not have been thrown.", e); - } - } -} diff --git a/src/com/google/common/io/InputSupplier.java b/src/com/google/common/io/InputSupplier.java deleted file mode 100755 index 2b6a4adb..00000000 --- a/src/com/google/common/io/InputSupplier.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import java.io.IOException; - -/** - * A factory for readable streams of bytes or characters. - * - * @author Chris Nokleberg - * @since 1.0 - */ -public interface InputSupplier { - - /** - * Returns an object that encapsulates a readable resource. - *

    - * Like {@link Iterable#iterator}, this method may be called repeatedly to - * get independent channels to the same underlying resource. - *

    - * Where the channel maintains a position within the resource, moving that - * cursor within one channel should not affect the starting position of - * channels returned by other calls. - */ - T getInput() throws IOException; -} diff --git a/src/com/google/common/io/LimitInputStream.java b/src/com/google/common/io/LimitInputStream.java deleted file mode 100755 index c2e0678d..00000000 --- a/src/com/google/common/io/LimitInputStream.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.annotations.Beta; -import com.google.common.base.Preconditions; - -import java.io.FilterInputStream; -import java.io.IOException; -import java.io.InputStream; - -/** - * An InputStream that limits the number of bytes which can be read. - * - * @author Charles Fry - * @since 1.0 - */ -@Beta -public final class LimitInputStream extends FilterInputStream { - - private long left; - private long mark = -1; - - /** - * Wraps another input stream, limiting the number of bytes which can be read. - * - * @param in the input stream to be wrapped - * @param limit the maximum number of bytes to be read - */ - public LimitInputStream(InputStream in, long limit) { - super(in); - Preconditions.checkNotNull(in); - Preconditions.checkArgument(limit >= 0, "limit must be non-negative"); - left = limit; - } - - - @Override - public int available() throws IOException { - return (int) Math.min(in.available(), left); - } - - - @Override - public synchronized void mark(int readlimit) { - in.mark(readlimit); - mark = left; - // it's okay to mark even if mark isn't supported, as reset won't work - } - - - @Override - public int read() throws IOException { - if (left == 0) { - return -1; - } - - int result = in.read(); - if (result != -1) { - --left; - } - return result; - } - - - @Override - public int read(byte[] b, int off, int len) throws IOException { - if (left == 0) { - return -1; - } - - len = (int) Math.min(len, left); - int result = in.read(b, off, len); - if (result != -1) { - left -= result; - } - return result; - } - - - @Override - public synchronized void reset() throws IOException { - if (!in.markSupported()) { - throw new IOException("Mark not supported"); - } - if (mark == -1) { - throw new IOException("Mark not set"); - } - - in.reset(); - left = mark; - } - - - @Override - public long skip(long n) throws IOException { - n = Math.min(n, left); - long skipped = in.skip(n); - left -= skipped; - return skipped; - } -} diff --git a/src/com/google/common/io/LineBuffer.java b/src/com/google/common/io/LineBuffer.java deleted file mode 100755 index 1f1c8dc2..00000000 --- a/src/com/google/common/io/LineBuffer.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import java.io.IOException; - -/** - * Package-protected abstract class that implements the line reading - * algorithm used by {@link LineReader}. Line separators are per {@link - * java.io.BufferedReader}: line feed, carriage return, or carriage - * return followed immediately by a linefeed. - * - *

    Subclasses must implement {@link #handleLine}, call {@link #add} - * to pass character data, and call {@link #finish} at the end of stream. - * - * @author Chris Nokleberg - * @since 1.0 - */ -abstract class LineBuffer { - /** Holds partial line contents. */ - private StringBuilder line = new StringBuilder(); - /** Whether a line ending with a CR is pending processing. */ - private boolean sawReturn; - - /** - * Process additional characters from the stream. When a line separator - * is found the contents of the line and the line separator itself - * are passed to the abstract {@link #handleLine} method. - * - * @param cbuf the character buffer to process - * @param off the offset into the buffer - * @param len the number of characters to process - * @throws IOException if an I/O error occurs - * @see #finish - */ - protected void add(char[] cbuf, int off, int len) throws IOException { - int pos = off; - if (sawReturn && len > 0) { - // Last call to add ended with a CR; we can handle the line now. - if (finishLine(cbuf[pos] == '\n')) { - pos++; - } - } - - int start = pos; - for (int end = off + len; pos < end; pos++) { - switch (cbuf[pos]) { - case '\r': - line.append(cbuf, start, pos - start); - sawReturn = true; - if (pos + 1 < end) { - if (finishLine(cbuf[pos + 1] == '\n')) { - pos++; - } - } - start = pos + 1; - break; - - case '\n': - line.append(cbuf, start, pos - start); - finishLine(true); - start = pos + 1; - break; - } - } - line.append(cbuf, start, off + len - start); - } - - /** Called when a line is complete. */ - private boolean finishLine(boolean sawNewline) throws IOException { - handleLine(line.toString(), sawReturn - ? (sawNewline ? "\r\n" : "\r") - : (sawNewline ? "\n" : "")); - line = new StringBuilder(); - sawReturn = false; - return sawNewline; - } - - /** - * Subclasses must call this method after finishing character processing, - * in order to ensure that any unterminated line in the buffer is - * passed to {@link #handleLine}. - * - * @throws IOException if an I/O error occurs - */ - protected void finish() throws IOException { - if (sawReturn || line.length() > 0) { - finishLine(false); - } - } - - /** - * Called for each line found in the character data passed to - * {@link #add}. - * - * @param line a line of text (possibly empty), without any line separators - * @param end the line separator; one of {@code "\r"}, {@code "\n"}, - * {@code "\r\n"}, or {@code ""} - * @throws IOException if an I/O error occurs - */ - protected abstract void handleLine(String line, String end) - throws IOException; -} diff --git a/src/com/google/common/io/LineProcessor.java b/src/com/google/common/io/LineProcessor.java deleted file mode 100755 index 9ee6a0fa..00000000 --- a/src/com/google/common/io/LineProcessor.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2009 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.annotations.Beta; - -import java.io.IOException; - -/** - * A callback to be used with the streaming {@code readLines} methods. - * - *

    {@link #processLine} will be called for each line that is read, and - * should return {@code false} when you want to stop processing. - * - * @author Miles Barr - * @since 1.0 - */ -@Beta -public interface LineProcessor { - - /** - * This method will be called once for each line. - * - * @param line the line read from the input, without delimiter - * @return true to continue processing, false to stop - */ - boolean processLine(String line) throws IOException; - - /** Return the result of processing all the lines. */ - T getResult(); -} diff --git a/src/com/google/common/io/LineReader.java b/src/com/google/common/io/LineReader.java deleted file mode 100755 index 077e3aea..00000000 --- a/src/com/google/common/io/LineReader.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.annotations.Beta; -import com.google.common.base.Preconditions; - -import java.io.IOException; -import java.io.Reader; -import java.nio.CharBuffer; -import java.util.LinkedList; -import java.util.Queue; - -/** - * A class for reading lines of text. Provides the same functionality - * as {@link java.io.BufferedReader#readLine()} but for all {@link Readable} - * objects, not just instances of {@link Reader}. - * - * @author Chris Nokleberg - * @since 1.0 - */ -@Beta -public final class LineReader { - private final Readable readable; - private final Reader reader; - private final char[] buf = new char[0x1000]; // 4K - private final CharBuffer cbuf = CharBuffer.wrap(buf); - - private final Queue lines = new LinkedList(); - private final LineBuffer lineBuf = new LineBuffer() { - - @Override - protected void handleLine(String line, String end) { - lines.add(line); - } - }; - - /** - * Creates a new instance that will read lines from the given - * {@code Readable} object. - */ - public LineReader(Readable readable) { - Preconditions.checkNotNull(readable); - this.readable = readable; - this.reader = (readable instanceof Reader) ? (Reader) readable : null; - } - - /** - * Reads a line of text. A line is considered to be terminated by any - * one of a line feed ({@code '\n'}), a carriage return - * ({@code '\r'}), or a carriage return followed immediately by a linefeed - * ({@code "\r\n"}). - * - * @return a {@code String} containing the contents of the line, not - * including any line-termination characters, or {@code null} if the - * end of the stream has been reached. - * @throws IOException if an I/O error occurs - */ - public String readLine() throws IOException { - while (lines.peek() == null) { - cbuf.clear(); - // The default implementation of Reader#read(CharBuffer) allocates a - // temporary char[], so we call Reader#read(char[], int, int) instead. - int read = (reader != null) - ? reader.read(buf, 0, buf.length) - : readable.read(cbuf); - if (read == -1) { - lineBuf.finish(); - break; - } - lineBuf.add(buf, 0, read); - } - return lines.poll(); - } -} diff --git a/src/com/google/common/io/LittleEndianDataInputStream.java b/src/com/google/common/io/LittleEndianDataInputStream.java deleted file mode 100755 index 02e3c4a2..00000000 --- a/src/com/google/common/io/LittleEndianDataInputStream.java +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.annotations.Beta; -import com.google.common.base.Preconditions; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; - -import java.io.DataInput; -import java.io.DataInputStream; -import java.io.EOFException; -import java.io.FilterInputStream; -import java.io.IOException; -import java.io.InputStream; - -/** - * An implementation of {@link DataInput} that uses little-endian byte ordering - * for reading {@code short}, {@code int}, {@code float}, {@code double}, and - * {@code long} values. - *

    - * Note: This class intentionally violates the specification of its - * supertype {@code DataInput}, which explicitly requires big-endian byte order. - * - * @author Chris Nokleberg - * @author Keith Bottner - * @since 8.0 - */ -@Beta -public final class LittleEndianDataInputStream extends FilterInputStream - implements DataInput { - - /** - * Creates a {@code LittleEndianDataInputStream} that wraps the given stream. - * - * @param in the stream to delegate to - */ - public LittleEndianDataInputStream(InputStream in) { - super(Preconditions.checkNotNull(in)); - } - - /** - * This method will throw an {@link UnsupportedOperationException}. - */ - public String readLine() { - throw new UnsupportedOperationException("readLine is not supported"); - } - - public void readFully(byte[] b) throws IOException { - ByteStreams.readFully(this, b); - } - - public void readFully(byte[] b, int off, int len) throws IOException { - ByteStreams.readFully(this, b, off, len); - } - - public int skipBytes(int n) throws IOException { - return (int) in.skip(n); - } - - public int readUnsignedByte() throws IOException { - int b1 = in.read(); - if (0 > b1) { - throw new EOFException(); - } - - return b1; - } - - /** - * Reads an unsigned {@code short} as specified by - * {@link DataInputStream#readUnsignedShort()}, except using little-endian - * byte order. - * - * @return the next two bytes of the input stream, interpreted as an - * unsigned 16-bit integer in little-endian byte order - * @throws IOException if an I/O error occurs - */ - public int readUnsignedShort() throws IOException { - byte b1 = readAndCheckByte(); - byte b2 = readAndCheckByte(); - - return Ints.fromBytes((byte) 0, (byte) 0, b2, b1); - } - - /** - * Reads an integer as specified by {@link DataInputStream#readInt()}, except - * using little-endian byte order. - * - * @return the next four bytes of the input stream, interpreted as an - * {@code int} in little-endian byte order - * @throws IOException if an I/O error occurs - */ - public int readInt() throws IOException { - byte b1 = readAndCheckByte(); - byte b2 = readAndCheckByte(); - byte b3 = readAndCheckByte(); - byte b4 = readAndCheckByte(); - - return Ints.fromBytes( b4, b3, b2, b1); - } - - /** - * Reads a {@code long} as specified by {@link DataInputStream#readLong()}, - * except using little-endian byte order. - * - * @return the next eight bytes of the input stream, interpreted as a - * {@code long} in little-endian byte order - * @throws IOException if an I/O error occurs - */ - public long readLong() throws IOException { - byte b1 = readAndCheckByte(); - byte b2 = readAndCheckByte(); - byte b3 = readAndCheckByte(); - byte b4 = readAndCheckByte(); - byte b5 = readAndCheckByte(); - byte b6 = readAndCheckByte(); - byte b7 = readAndCheckByte(); - byte b8 = readAndCheckByte(); - - return Longs.fromBytes(b8, b7, b6, b5, b4, b3, b2, b1); - } - - /** - * Reads a {@code float} as specified by {@link DataInputStream#readFloat()}, - * except using little-endian byte order. - * - * @return the next four bytes of the input stream, interpreted as a - * {@code float} in little-endian byte order - * @throws IOException if an I/O error occurs - */ - public float readFloat() throws IOException { - return Float.intBitsToFloat(readInt()); - } - - /** - * Reads a {@code double} as specified by - * {@link DataInputStream#readDouble()}, except using little-endian byte - * order. - * - * @return the next eight bytes of the input stream, interpreted as a - * {@code double} in little-endian byte order - * @throws IOException if an I/O error occurs - */ - public double readDouble() throws IOException { - return Double.longBitsToDouble(readLong()); - } - - public String readUTF() throws IOException { - return new DataInputStream(in).readUTF(); - } - - /** - * Reads a {@code short} as specified by {@link DataInputStream#readShort()}, - * except using little-endian byte order. - * - * @return the next two bytes of the input stream, interpreted as a - * {@code short} in little-endian byte order. - * @throws IOException if an I/O error occurs. - */ - public short readShort() throws IOException { - return (short) readUnsignedShort(); - } - - /** - * Reads a char as specified by {@link DataInputStream#readChar()}, except - * using little-endian byte order. - * - * @return the next two bytes of the input stream, interpreted as a - * {@code char} in little-endian byte order - * @throws IOException if an I/O error occurs - */ - public char readChar() throws IOException { - return (char) readUnsignedShort(); - } - - public byte readByte() throws IOException { - return (byte) readUnsignedByte(); - } - - public boolean readBoolean() throws IOException { - return readUnsignedByte() != 0; - } - - /** - * Reads a byte from the input stream checking that the end of file (EOF) - * has not been encountered. - * - * @return byte read from input - * @throws IOException if an error is encountered while reading - * @throws EOFException if the end of file (EOF) is encountered. - */ - private byte readAndCheckByte() throws IOException, EOFException { - int b1 = in.read(); - - if (-1 == b1) { - throw new EOFException(); - } - - return (byte) b1; - } - -} diff --git a/src/com/google/common/io/LittleEndianDataOutputStream.java b/src/com/google/common/io/LittleEndianDataOutputStream.java deleted file mode 100755 index 1946abf4..00000000 --- a/src/com/google/common/io/LittleEndianDataOutputStream.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.annotations.Beta; -import com.google.common.base.Preconditions; -import com.google.common.primitives.Longs; - -import java.io.DataOutput; -import java.io.DataOutputStream; -import java.io.FilterOutputStream; -import java.io.IOException; -import java.io.OutputStream; - -/** - * An implementation of {@link DataOutput} that uses little-endian byte ordering - * for writing {@code char}, {@code short}, {@code int}, {@code float}, {@code - * double}, and {@code long} values. - *

    - * Note: This class intentionally violates the specification of its - * supertype {@code DataOutput}, which explicitly requires big-endian byte - * order. - * - * @author Chris Nokleberg - * @author Keith Bottner - * @since 8.0 - */ -@Beta -public class LittleEndianDataOutputStream extends FilterOutputStream - implements DataOutput { - - /** - * Creates a {@code LittleEndianDataOutputStream} that wraps the given stream. - * - * @param out the stream to delegate to - */ - public LittleEndianDataOutputStream(OutputStream out) { - super(new DataOutputStream(Preconditions.checkNotNull(out))); - } - - - @Override - public void write(byte[] b, int off, int len) throws IOException { - // Override slow FilterOutputStream impl - out.write(b, off, len); - } - - public void writeBoolean(boolean v) throws IOException { - ((DataOutputStream) out).writeBoolean(v); - } - - public void writeByte(int v) throws IOException { - ((DataOutputStream) out).writeByte(v); - } - - /** - * @deprecated The semantics of {@code writeBytes(String s)} are considered - * dangerous. Please use {@link #writeUTF(String s)}, - * {@link #writeChars(String s)} or another write method instead. - */ - @Deprecated - public void writeBytes(String s) throws IOException { - ((DataOutputStream) out).writeBytes(s); - } - - /** - * Writes a char as specified by {@link DataOutputStream#writeChar(int)}, - * except using little-endian byte order. - * - * @throws IOException if an I/O error occurs - */ - public void writeChar(int v) throws IOException { - writeShort(v); - } - - /** - * Writes a {@code String} as specified by - * {@link DataOutputStream#writeChars(String)}, except each character is - * written using little-endian byte order. - * - * @throws IOException if an I/O error occurs - */ - public void writeChars(String s) throws IOException { - for (int i = 0; i < s.length(); i++) { - writeChar(s.charAt(i)); - } - } - - /** - * Writes a {@code double} as specified by - * {@link DataOutputStream#writeDouble(double)}, except using little-endian - * byte order. - * - * @throws IOException if an I/O error occurs - */ - public void writeDouble(double v) throws IOException { - writeLong(Double.doubleToLongBits(v)); - } - - /** - * Writes a {@code float} as specified by - * {@link DataOutputStream#writeFloat(float)}, except using little-endian byte - * order. - * - * @throws IOException if an I/O error occurs - */ - public void writeFloat(float v) throws IOException { - writeInt(Float.floatToIntBits(v)); - } - - /** - * Writes an {@code int} as specified by - * {@link DataOutputStream#writeInt(int)}, except using little-endian byte - * order. - * - * @throws IOException if an I/O error occurs - */ - public void writeInt(int v) throws IOException { - out.write(0xFF & v); - out.write(0xFF & (v >> 8)); - out.write(0xFF & (v >> 16)); - out.write(0xFF & (v >> 24)); - } - - /** - * Writes a {@code long} as specified by - * {@link DataOutputStream#writeLong(long)}, except using little-endian byte - * order. - * - * @throws IOException if an I/O error occurs - */ - public void writeLong(long v) throws IOException { - byte[] bytes = Longs.toByteArray(Long.reverseBytes(v)); - write(bytes, 0, bytes.length); - } - - /** - * Writes a {@code short} as specified by - * {@link DataOutputStream#writeShort(int)}, except using little-endian byte - * order. - * - * @throws IOException if an I/O error occurs - */ - public void writeShort(int v) throws IOException { - out.write(0xFF & v); - out.write(0xFF & (v >> 8)); - } - - public void writeUTF(String str) throws IOException { - ((DataOutputStream) out).writeUTF(str); - } -} diff --git a/src/com/google/common/io/MultiInputStream.java b/src/com/google/common/io/MultiInputStream.java deleted file mode 100755 index a2fec199..00000000 --- a/src/com/google/common/io/MultiInputStream.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Iterator; - -/** - * An {@link InputStream} that concatenates multiple substreams. At most - * one stream will be open at a time. - * - * @author Chris Nokleberg - * @since 1.0 - */ -final class MultiInputStream extends InputStream { - - private Iterator> it; - private InputStream in; - - /** - * Creates a new instance. - * - * @param it an iterator of I/O suppliers that will provide each substream - */ - public MultiInputStream( - Iterator> it) - throws IOException { - this.it = it; - advance(); - } - - - @Override - public void close() throws IOException { - if (in != null) { - try { - in.close(); - } finally { - in = null; - } - } - } - - /** - * Closes the current input stream and opens the next one, if any. - */ - private void advance() throws IOException { - close(); - if (it.hasNext()) { - in = it.next().getInput(); - } - } - - - @Override - public int available() throws IOException { - if (in == null) { - return 0; - } - return in.available(); - } - - - @Override - public boolean markSupported() { - return false; - } - - - @Override - public int read() throws IOException { - if (in == null) { - return -1; - } - int result = in.read(); - if (result == -1) { - advance(); - return read(); - } - return result; - } - - - @Override - public int read(byte[] b, int off, int len) throws IOException { - if (in == null) { - return -1; - } - int result = in.read(b, off, len); - if (result == -1) { - advance(); - return read(b, off, len); - } - return result; - } - - - @Override - public long skip(long n) throws IOException { - if (in == null || n <= 0) { - return 0; - } - long result = in.skip(n); - if (result != 0) { - return result; - } - if (read() == -1) { - return 0; - } - return 1 + in.skip(n - 1); - } -} diff --git a/src/com/google/common/io/MultiReader.java b/src/com/google/common/io/MultiReader.java deleted file mode 100755 index 90408257..00000000 --- a/src/com/google/common/io/MultiReader.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (C) 2008 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.base.Preconditions; - -import java.io.IOException; -import java.io.Reader; -import java.util.Iterator; - -/** - * A {@link Reader} that concatenates multiple readers. - * - * @author Bin Zhu - * @since 1.0 - */ -class MultiReader extends Reader { - private final Iterator> it; - private Reader current; - - MultiReader(Iterator> readers) - throws IOException { - this.it = readers; - advance(); - } - - /** - * Closes the current reader and opens the next one, if any. - */ - private void advance() throws IOException { - close(); - if (it.hasNext()) { - current = it.next().getInput(); - } - } - - - @Override - public int read(char cbuf[], int off, int len) throws IOException { - if (current == null) { - return -1; - } - int result = current.read(cbuf, off, len); - if (result == -1) { - advance(); - return read(cbuf, off, len); - } - return result; - } - - - @Override - public long skip(long n) throws IOException { - Preconditions.checkArgument(n >= 0, "n is negative"); - if (n > 0) { - while (current != null) { - long result = current.skip(n); - if (result > 0) { - return result; - } - advance(); - } - } - return 0; - } - - - @Override - public boolean ready() throws IOException { - return (current != null) && current.ready(); - } - - - @Override - public void close() throws IOException { - if (current != null) { - try { - current.close(); - } finally { - current = null; - } - } - } -} diff --git a/src/com/google/common/io/NullOutputStream.java b/src/com/google/common/io/NullOutputStream.java deleted file mode 100755 index 6bea09a3..00000000 --- a/src/com/google/common/io/NullOutputStream.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2004 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.annotations.Beta; - -import java.io.OutputStream; - -/** - * Implementation of {@link OutputStream} that simply discards written bytes. - * - * @author Spencer Kimball - * @since 1.0 - */ -@Beta -public final class NullOutputStream extends OutputStream { - /** Discards the specified byte. */ - - @Override - public void write(int b) { - } - - /** Discards the specified byte array. */ - - @Override - public void write(byte[] b, int off, int len) { - } -} diff --git a/src/com/google/common/io/OutputSupplier.java b/src/com/google/common/io/OutputSupplier.java deleted file mode 100755 index 185082c8..00000000 --- a/src/com/google/common/io/OutputSupplier.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import java.io.IOException; - -/** - * A factory for writable streams of bytes or characters. - * - * @author Chris Nokleberg - * @since 1.0 - */ -public interface OutputSupplier { - - /** - * Returns an object that encapsulates a writable resource. - *

    - * Like {@link Iterable#iterator}, this method may be called repeatedly to - * get independent channels to the same underlying resource. - *

    - * Where the channel maintains a position within the resource, moving that - * cursor within one channel should not affect the starting position of - * channels returned by other calls. - */ - T getOutput() throws IOException; -} diff --git a/src/com/google/common/io/PatternFilenameFilter.java b/src/com/google/common/io/PatternFilenameFilter.java deleted file mode 100755 index 82307edb..00000000 --- a/src/com/google/common/io/PatternFilenameFilter.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2006 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import com.google.common.annotations.Beta; -import com.google.common.base.Preconditions; - -import java.io.File; -import java.io.FilenameFilter; -import java.util.regex.Pattern; -import java.util.regex.PatternSyntaxException; - -import javax.annotation.Nullable; - -/** - * File name filter that only accepts files matching a regular expression. This - * class is thread-safe and immutable. - * - * @author Apple Chow - * @since 1.0 - */ -@Beta -public final class PatternFilenameFilter implements FilenameFilter { - - private final Pattern pattern; - - /** - * Constructs a pattern file name filter object. - * @param patternStr the pattern string on which to filter file names - * - * @throws PatternSyntaxException if pattern compilation fails (runtime) - */ - public PatternFilenameFilter(String patternStr) { - this(Pattern.compile(patternStr)); - } - - /** - * Constructs a pattern file name filter object. - * @param pattern the pattern on which to filter file names - */ - public PatternFilenameFilter(Pattern pattern) { - this.pattern = Preconditions.checkNotNull(pattern); - } - - public boolean accept(@Nullable File dir, String fileName) { - return pattern.matcher(fileName).matches(); - } -} diff --git a/src/com/google/common/io/Resources.java b/src/com/google/common/io/Resources.java deleted file mode 100755 index 5fe8d528..00000000 --- a/src/com/google/common/io/Resources.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.io; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.annotations.Beta; -import com.google.common.base.Charsets; - -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.net.URL; -import java.nio.charset.Charset; -import java.util.List; - -/** - * Provides utility methods for working with resources in the classpath. - * Note that even though these methods use {@link URL} parameters, they - * are usually not appropriate for HTTP or other non-classpath resources. - * - *

    All method parameters must be non-null unless documented otherwise. - * - * @author Chris Nokleberg - * @author Ben Yu - * @since 1.0 - */ -@Beta -public final class Resources { - private Resources() {} - - /** - * Returns a factory that will supply instances of {@link InputStream} that - * read from the given URL. - * - * @param url the URL to read from - * @return the factory - */ - public static InputSupplier newInputStreamSupplier( - final URL url) { - checkNotNull(url); - return new InputSupplier() { - public InputStream getInput() throws IOException { - return url.openStream(); - } - }; - } - - /** - * Returns a factory that will supply instances of - * {@link InputStreamReader} that read a URL using the given character set. - * - * @param url the URL to read from - * @param charset the charset used to decode the input stream; see {@link - * Charsets} for helpful predefined constants - * @return the factory - */ - public static InputSupplier newReaderSupplier( - URL url, Charset charset) { - return CharStreams.newReaderSupplier(newInputStreamSupplier(url), charset); - } - - /** - * Reads all bytes from a URL into a byte array. - * - * @param url the URL to read from - * @return a byte array containing all the bytes from the URL - * @throws IOException if an I/O error occurs - */ - public static byte[] toByteArray(URL url) throws IOException { - return ByteStreams.toByteArray(newInputStreamSupplier(url)); - } - - /** - * Reads all characters from a URL into a {@link String}, using the given - * character set. - * - * @param url the URL to read from - * @param charset the charset used to decode the input stream; see {@link - * Charsets} for helpful predefined constants - * @return a string containing all the characters from the URL - * @throws IOException if an I/O error occurs. - */ - public static String toString(URL url, Charset charset) throws IOException { - return CharStreams.toString(newReaderSupplier(url, charset)); - } - - /** - * Streams lines from a URL, stopping when our callback returns false, or we - * have read all of the lines. - * - * @param url the URL to read from - * @param charset the charset used to decode the input stream; see {@link - * Charsets} for helpful predefined constants - * @param callback the LineProcessor to use to handle the lines - * @return the output of processing the lines - * @throws IOException if an I/O error occurs - */ - public static T readLines(URL url, Charset charset, - LineProcessor callback) throws IOException { - return CharStreams.readLines(newReaderSupplier(url, charset), callback); - } - - /** - * Reads all of the lines from a URL. The lines do not include - * line-termination characters, but do include other leading and trailing - * whitespace. - * - * @param url the URL to read from - * @param charset the charset used to decode the input stream; see {@link - * Charsets} for helpful predefined constants - * @return a mutable {@link List} containing all the lines - * @throws IOException if an I/O error occurs - */ - public static List readLines(URL url, Charset charset) - throws IOException { - return CharStreams.readLines(newReaderSupplier(url, charset)); - } - - /** - * Copies all bytes from a URL to an output stream. - * - * @param from the URL to read from - * @param to the output stream - * @throws IOException if an I/O error occurs - */ - public static void copy(URL from, OutputStream to) throws IOException { - ByteStreams.copy(newInputStreamSupplier(from), to); - } - - /** - * Returns a {@code URL} pointing to {@code resourceName} if the resource is - * found in the class path. {@code Resources.class.getClassLoader()} is used - * to locate the resource. - * - * @throws IllegalArgumentException if resource is not found - */ - public static URL getResource(String resourceName) { - URL url = Resources.class.getClassLoader().getResource(resourceName); - checkArgument(url != null, "resource %s not found.", resourceName); - return url; - } - - /** - * Returns a {@code URL} pointing to {@code resourceName} that is relative to - * {@code contextClass}, if the resource is found in the class path. - * - * @throws IllegalArgumentException if resource is not found - */ - public static URL getResource(Class contextClass, String resourceName) { - URL url = contextClass.getResource(resourceName); - checkArgument(url != null, "resource %s relative to %s not found.", - resourceName, contextClass.getName()); - return url; - } -} diff --git a/src/com/google/common/io/package-info.java b/src/com/google/common/io/package-info.java deleted file mode 100755 index f5f83ad3..00000000 --- a/src/com/google/common/io/package-info.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * This package contains utility methods and classes for working with Java I/O, - * for example input streams, output streams, readers, writers, and files. - * - *

    Many of the methods are based on the - * {@link com.google.common.io.InputSupplier} and - * {@link com.google.common.io.OutputSupplier} interfaces. They are used as - * factories for I/O objects that might throw {@link java.io.IOException} when - * being created. The advantage of using a factory is that the helper methods in - * this package can take care of closing the resource properly, even if an - * exception is thrown. The {@link com.google.common.io.ByteStreams}, - * {@link com.google.common.io.CharStreams}, and - * {@link com.google.common.io.Files} classes all have static helper methods to - * create new factories and to work with them. - * - *

    This package is a part of the open-source - * Guava libraries. - * - * @author Chris Nokleberg - */ -@ParametersAreNonnullByDefault -package com.google.common.io; - -import javax.annotation.ParametersAreNonnullByDefault; - diff --git a/src/com/google/common/primitives/AndroidInteger.java b/src/com/google/common/primitives/AndroidInteger.java deleted file mode 100644 index 7fa8abde..00000000 --- a/src/com/google/common/primitives/AndroidInteger.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -import javax.annotation.CheckForNull; - -/** - * Static utility methods derived from Android's {@code Integer.java}. - */ -final class AndroidInteger { - /** - * See {@link Ints#tryParse(String)} for the public interface. - */ - @CheckForNull - static Integer tryParse(String string) { - return tryParse(string, 10); - } - - /** - * See {@link Ints#tryParse(String, int)} for the public interface. - */ - @CheckForNull - static Integer tryParse(String string, int radix) { - checkNotNull(string); - checkArgument(radix >= Character.MIN_RADIX, - "Invalid radix %s, min radix is %s", radix, Character.MIN_RADIX); - checkArgument(radix <= Character.MAX_RADIX, - "Invalid radix %s, max radix is %s", radix, Character.MAX_RADIX); - int length = string.length(), i = 0; - if (length == 0) { - return null; - } - boolean negative = string.charAt(i) == '-'; - if (negative && ++i == length) { - return null; - } - return tryParse(string, i, radix, negative); - } - - @CheckForNull - private static Integer tryParse(String string, int offset, int radix, - boolean negative) { - int max = Integer.MIN_VALUE / radix; - int result = 0, length = string.length(); - while (offset < length) { - int digit = Character.digit(string.charAt(offset++), radix); - if (digit == -1) { - return null; - } - if (max > result) { - return null; - } - int next = result * radix - digit; - if (next > result) { - return null; - } - result = next; - } - if (!negative) { - result = -result; - if (result < 0) { - return null; - } - } - // For GWT where ints do not overflow - if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) { - return null; - } - return result; - } - - private AndroidInteger() {} -} diff --git a/src/com/google/common/primitives/Booleans.java b/src/com/google/common/primitives/Booleans.java deleted file mode 100644 index bbcefbbb..00000000 --- a/src/com/google/common/primitives/Booleans.java +++ /dev/null @@ -1,492 +0,0 @@ -/* - * Copyright (C) 2008 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkElementIndex; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkPositionIndexes; - -import com.google.common.annotations.GwtCompatible; - -import java.io.Serializable; -import java.util.AbstractList; -import java.util.Arrays; -import java.util.BitSet; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.RandomAccess; - -/** - * Static utility methods pertaining to {@code boolean} primitives, that are not - * already found in either {@link Boolean} or {@link Arrays}. - * - *

    See the Guava User Guide article on - * primitive utilities. - * - * @author Kevin Bourrillion - * @since 1.0 - */ -@GwtCompatible -public final class Booleans { - private Booleans() {} - - /** - * Returns a hash code for {@code value}; equal to the result of invoking - * {@code ((Boolean) value).hashCode()}. - * - * @param value a primitive {@code boolean} value - * @return a hash code for the value - */ - public static int hashCode(boolean value) { - return value ? 1231 : 1237; - } - - /** - * Compares the two specified {@code boolean} values in the standard way - * ({@code false} is considered less than {@code true}). The sign of the - * value returned is the same as that of {@code ((Boolean) a).compareTo(b)}. - * - * @param a the first {@code boolean} to compare - * @param b the second {@code boolean} to compare - * @return a positive number if only {@code a} is {@code true}, a negative - * number if only {@code b} is true, or zero if {@code a == b} - */ - public static int compare(boolean a, boolean b) { - return (a == b) ? 0 : (a ? 1 : -1); - } - - /** - * Returns {@code true} if {@code target} is present as an element anywhere in - * {@code array}. - * - *

    Note: consider representing the array as a {@link - * BitSet} instead, replacing {@code Booleans.contains(array, true)} - * with {@code !bitSet.isEmpty()} and {@code Booleans.contains(array, false)} - * with {@code bitSet.nextClearBit(0) == sizeOfBitSet}. - * - * @param array an array of {@code boolean} values, possibly empty - * @param target a primitive {@code boolean} value - * @return {@code true} if {@code array[i] == target} for some value of {@code - * i} - */ - public static boolean contains(boolean[] array, boolean target) { - for (boolean value : array) { - if (value == target) { - return true; - } - } - return false; - } - - /** - * Returns the index of the first appearance of the value {@code target} in - * {@code array}. - * - *

    Note: consider representing the array as a {@link BitSet} - * instead, and using {@link BitSet#nextSetBit(int)} or {@link - * BitSet#nextClearBit(int)}. - * - * @param array an array of {@code boolean} values, possibly empty - * @param target a primitive {@code boolean} value - * @return the least index {@code i} for which {@code array[i] == target}, or - * {@code -1} if no such index exists. - */ - public static int indexOf(boolean[] array, boolean target) { - return indexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int indexOf( - boolean[] array, boolean target, int start, int end) { - for (int i = start; i < end; i++) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the start position of the first occurrence of the specified {@code - * target} within {@code array}, or {@code -1} if there is no such occurrence. - * - *

    More formally, returns the lowest index {@code i} such that {@code - * java.util.Arrays.copyOfRange(array, i, i + target.length)} contains exactly - * the same elements as {@code target}. - * - * @param array the array to search for the sequence {@code target} - * @param target the array to search for as a sub-sequence of {@code array} - */ - public static int indexOf(boolean[] array, boolean[] target) { - checkNotNull(array, "array"); - checkNotNull(target, "target"); - if (target.length == 0) { - return 0; - } - - outer: - for (int i = 0; i < array.length - target.length + 1; i++) { - for (int j = 0; j < target.length; j++) { - if (array[i + j] != target[j]) { - continue outer; - } - } - return i; - } - return -1; - } - - /** - * Returns the index of the last appearance of the value {@code target} in - * {@code array}. - * - * @param array an array of {@code boolean} values, possibly empty - * @param target a primitive {@code boolean} value - * @return the greatest index {@code i} for which {@code array[i] == target}, - * or {@code -1} if no such index exists. - */ - public static int lastIndexOf(boolean[] array, boolean target) { - return lastIndexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int lastIndexOf( - boolean[] array, boolean target, int start, int end) { - for (int i = end - 1; i >= start; i--) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the values from each provided array combined into a single array. - * For example, {@code concat(new boolean[] {a, b}, new boolean[] {}, new - * boolean[] {c}} returns the array {@code {a, b, c}}. - * - * @param arrays zero or more {@code boolean} arrays - * @return a single array containing all the values from the source arrays, in - * order - */ - public static boolean[] concat(boolean[]... arrays) { - int length = 0; - for (boolean[] array : arrays) { - length += array.length; - } - boolean[] result = new boolean[length]; - int pos = 0; - for (boolean[] array : arrays) { - System.arraycopy(array, 0, result, pos, array.length); - pos += array.length; - } - return result; - } - - /** - * Returns an array containing the same values as {@code array}, but - * guaranteed to be of a specified minimum length. If {@code array} already - * has a length of at least {@code minLength}, it is returned directly. - * Otherwise, a new array of size {@code minLength + padding} is returned, - * containing the values of {@code array}, and zeroes in the remaining places. - * - * @param array the source array - * @param minLength the minimum length the returned array must guarantee - * @param padding an extra amount to "grow" the array by if growth is - * necessary - * @throws IllegalArgumentException if {@code minLength} or {@code padding} is - * negative - * @return an array containing the values of {@code array}, with guaranteed - * minimum length {@code minLength} - */ - public static boolean[] ensureCapacity( - boolean[] array, int minLength, int padding) { - checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); - checkArgument(padding >= 0, "Invalid padding: %s", padding); - return (array.length < minLength) - ? copyOf(array, minLength + padding) - : array; - } - - // Arrays.copyOf() requires Java 6 - private static boolean[] copyOf(boolean[] original, int length) { - boolean[] copy = new boolean[length]; - System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); - return copy; - } - - /** - * Returns a string containing the supplied {@code boolean} values separated - * by {@code separator}. For example, {@code join("-", false, true, false)} - * returns the string {@code "false-true-false"}. - * - * @param separator the text that should appear between consecutive values in - * the resulting string (but not at the start or end) - * @param array an array of {@code boolean} values, possibly empty - */ - public static String join(String separator, boolean... array) { - checkNotNull(separator); - if (array.length == 0) { - return ""; - } - - // For pre-sizing a builder, just get the right order of magnitude - StringBuilder builder = new StringBuilder(array.length * 7); - builder.append(array[0]); - for (int i = 1; i < array.length; i++) { - builder.append(separator).append(array[i]); - } - return builder.toString(); - } - - /** - * Returns a comparator that compares two {@code boolean} arrays - * lexicographically. That is, it compares, using {@link - * #compare(boolean, boolean)}), the first pair of values that follow any - * common prefix, or when one array is a prefix of the other, treats the - * shorter array as the lesser. For example, - * {@code [] < [false] < [false, true] < [true]}. - * - *

    The returned comparator is inconsistent with {@link - * Object#equals(Object)} (since arrays support only identity equality), but - * it is consistent with {@link Arrays#equals(boolean[], boolean[])}. - * - * @see - * Lexicographical order article at Wikipedia - * @since 2.0 - */ - public static Comparator lexicographicalComparator() { - return LexicographicalComparator.INSTANCE; - } - - private enum LexicographicalComparator implements Comparator { - INSTANCE; - - public int compare(boolean[] left, boolean[] right) { - int minLength = Math.min(left.length, right.length); - for (int i = 0; i < minLength; i++) { - int result = Booleans.compare(left[i], right[i]); - if (result != 0) { - return result; - } - } - return left.length - right.length; - } - } - - /** - * Copies a collection of {@code Boolean} instances into a new array of - * primitive {@code boolean} values. - * - *

    Elements are copied from the argument collection as if by {@code - * collection.toArray()}. Calling this method is as thread-safe as calling - * that method. - * - *

    Note: consider representing the collection as a {@link - * BitSet} instead. - * - * @param collection a collection of {@code Boolean} objects - * @return an array containing the same values as {@code collection}, in the - * same order, converted to primitives - * @throws NullPointerException if {@code collection} or any of its elements - * is null - */ - public static boolean[] toArray(Collection collection) { - if (collection instanceof BooleanArrayAsList) { - return ((BooleanArrayAsList) collection).toBooleanArray(); - } - - Object[] boxedArray = collection.toArray(); - int len = boxedArray.length; - boolean[] array = new boolean[len]; - for (int i = 0; i < len; i++) { - // checkNotNull for GWT (do not optimize) - array[i] = (Boolean) checkNotNull(boxedArray[i]); - } - return array; - } - - /** - * Returns a fixed-size list backed by the specified array, similar to {@link - * Arrays#asList(Object[])}. The list supports {@link List#set(int, Object)}, - * but any attempt to set a value to {@code null} will result in a {@link - * NullPointerException}. - * - *

    The returned list maintains the values, but not the identities, of - * {@code Boolean} objects written to or read from it. For example, whether - * {@code list.get(0) == list.get(0)} is true for the returned list is - * unspecified. - * - * @param backingArray the array to back the list - * @return a list view of the array - */ - public static List asList(boolean... backingArray) { - if (backingArray.length == 0) { - return Collections.emptyList(); - } - return new BooleanArrayAsList(backingArray); - } - - @GwtCompatible - private static class BooleanArrayAsList extends AbstractList - implements RandomAccess, Serializable { - final boolean[] array; - final int start; - final int end; - - BooleanArrayAsList(boolean[] array) { - this(array, 0, array.length); - } - - BooleanArrayAsList(boolean[] array, int start, int end) { - this.array = array; - this.start = start; - this.end = end; - } - - - @Override - public int size() { - return end - start; - } - - - @Override - public boolean isEmpty() { - return false; - } - - - @Override - public Boolean get(int index) { - checkElementIndex(index, size()); - return array[start + index]; - } - - - @Override - public boolean contains(Object target) { - // Overridden to prevent a ton of boxing - return (target instanceof Boolean) - && Booleans.indexOf(array, (Boolean) target, start, end) != -1; - } - - - @Override - public int indexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Boolean) { - int i = Booleans.indexOf(array, (Boolean) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public int lastIndexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Boolean) { - int i = Booleans.lastIndexOf(array, (Boolean) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public Boolean set(int index, Boolean element) { - checkElementIndex(index, size()); - boolean oldValue = array[start + index]; - // checkNotNull for GWT (do not optimize) - array[start + index] = checkNotNull(element); - return oldValue; - } - - - @Override - public List subList(int fromIndex, int toIndex) { - int size = size(); - checkPositionIndexes(fromIndex, toIndex, size); - if (fromIndex == toIndex) { - return Collections.emptyList(); - } - return new BooleanArrayAsList(array, start + fromIndex, start + toIndex); - } - - - @Override - public boolean equals(Object object) { - if (object == this) { - return true; - } - if (object instanceof BooleanArrayAsList) { - BooleanArrayAsList that = (BooleanArrayAsList) object; - int size = size(); - if (that.size() != size) { - return false; - } - for (int i = 0; i < size; i++) { - if (array[start + i] != that.array[that.start + i]) { - return false; - } - } - return true; - } - return super.equals(object); - } - - - @Override - public int hashCode() { - int result = 1; - for (int i = start; i < end; i++) { - result = 31 * result + Booleans.hashCode(array[i]); - } - return result; - } - - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(size() * 7); - builder.append(array[start] ? "[true" : "[false"); - for (int i = start + 1; i < end; i++) { - builder.append(array[i] ? ", true" : ", false"); - } - return builder.append(']').toString(); - } - - boolean[] toBooleanArray() { - // Arrays.copyOfRange() is not available under GWT - int size = size(); - boolean[] result = new boolean[size]; - System.arraycopy(array, start, result, 0, size); - return result; - } - - private static final long serialVersionUID = 0; - } -} diff --git a/src/com/google/common/primitives/Bytes.java b/src/com/google/common/primitives/Bytes.java deleted file mode 100644 index 0d6347ac..00000000 --- a/src/com/google/common/primitives/Bytes.java +++ /dev/null @@ -1,411 +0,0 @@ -/* - * Copyright (C) 2008 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkElementIndex; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkPositionIndexes; - -import com.google.common.annotations.GwtCompatible; - -import java.io.Serializable; -import java.util.AbstractList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.RandomAccess; - -/** - * Static utility methods pertaining to {@code byte} primitives, that are not - * already found in either {@link Byte} or {@link Arrays}, and interpret - * bytes as neither signed nor unsigned. The methods which specifically - * treat bytes as signed or unsigned are found in {@link SignedBytes} and {@link - * UnsignedBytes}. - * - *

    See the Guava User Guide article on - * primitive utilities. - * - * @author Kevin Bourrillion - * @since 1.0 - */ -// TODO(kevinb): how to prevent warning on UnsignedBytes when building GWT -// javadoc? -@GwtCompatible -public final class Bytes { - private Bytes() {} - - /** - * Returns a hash code for {@code value}; equal to the result of invoking - * {@code ((Byte) value).hashCode()}. - * - * @param value a primitive {@code byte} value - * @return a hash code for the value - */ - public static int hashCode(byte value) { - return value; - } - - /** - * Returns {@code true} if {@code target} is present as an element anywhere in - * {@code array}. - * - * @param array an array of {@code byte} values, possibly empty - * @param target a primitive {@code byte} value - * @return {@code true} if {@code array[i] == target} for some value of {@code - * i} - */ - public static boolean contains(byte[] array, byte target) { - for (byte value : array) { - if (value == target) { - return true; - } - } - return false; - } - - /** - * Returns the index of the first appearance of the value {@code target} in - * {@code array}. - * - * @param array an array of {@code byte} values, possibly empty - * @param target a primitive {@code byte} value - * @return the least index {@code i} for which {@code array[i] == target}, or - * {@code -1} if no such index exists. - */ - public static int indexOf(byte[] array, byte target) { - return indexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int indexOf( - byte[] array, byte target, int start, int end) { - for (int i = start; i < end; i++) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the start position of the first occurrence of the specified {@code - * target} within {@code array}, or {@code -1} if there is no such occurrence. - * - *

    More formally, returns the lowest index {@code i} such that {@code - * java.util.Arrays.copyOfRange(array, i, i + target.length)} contains exactly - * the same elements as {@code target}. - * - * @param array the array to search for the sequence {@code target} - * @param target the array to search for as a sub-sequence of {@code array} - */ - public static int indexOf(byte[] array, byte[] target) { - checkNotNull(array, "array"); - checkNotNull(target, "target"); - if (target.length == 0) { - return 0; - } - - outer: - for (int i = 0; i < array.length - target.length + 1; i++) { - for (int j = 0; j < target.length; j++) { - if (array[i + j] != target[j]) { - continue outer; - } - } - return i; - } - return -1; - } - - /** - * Returns the index of the last appearance of the value {@code target} in - * {@code array}. - * - * @param array an array of {@code byte} values, possibly empty - * @param target a primitive {@code byte} value - * @return the greatest index {@code i} for which {@code array[i] == target}, - * or {@code -1} if no such index exists. - */ - public static int lastIndexOf(byte[] array, byte target) { - return lastIndexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int lastIndexOf( - byte[] array, byte target, int start, int end) { - for (int i = end - 1; i >= start; i--) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the values from each provided array combined into a single array. - * For example, {@code concat(new byte[] {a, b}, new byte[] {}, new - * byte[] {c}} returns the array {@code {a, b, c}}. - * - * @param arrays zero or more {@code byte} arrays - * @return a single array containing all the values from the source arrays, in - * order - */ - public static byte[] concat(byte[]... arrays) { - int length = 0; - for (byte[] array : arrays) { - length += array.length; - } - byte[] result = new byte[length]; - int pos = 0; - for (byte[] array : arrays) { - System.arraycopy(array, 0, result, pos, array.length); - pos += array.length; - } - return result; - } - - /** - * Returns an array containing the same values as {@code array}, but - * guaranteed to be of a specified minimum length. If {@code array} already - * has a length of at least {@code minLength}, it is returned directly. - * Otherwise, a new array of size {@code minLength + padding} is returned, - * containing the values of {@code array}, and zeroes in the remaining places. - * - * @param array the source array - * @param minLength the minimum length the returned array must guarantee - * @param padding an extra amount to "grow" the array by if growth is - * necessary - * @throws IllegalArgumentException if {@code minLength} or {@code padding} is - * negative - * @return an array containing the values of {@code array}, with guaranteed - * minimum length {@code minLength} - */ - public static byte[] ensureCapacity( - byte[] array, int minLength, int padding) { - checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); - checkArgument(padding >= 0, "Invalid padding: %s", padding); - return (array.length < minLength) - ? copyOf(array, minLength + padding) - : array; - } - - // Arrays.copyOf() requires Java 6 - private static byte[] copyOf(byte[] original, int length) { - byte[] copy = new byte[length]; - System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); - return copy; - } - - /** - * Returns an array containing each value of {@code collection}, converted to - * a {@code byte} value in the manner of {@link Number#byteValue}. - * - *

    Elements are copied from the argument collection as if by {@code - * collection.toArray()}. Calling this method is as thread-safe as calling - * that method. - * - * @param collection a collection of {@code Number} instances - * @return an array containing the same values as {@code collection}, in the - * same order, converted to primitives - * @throws NullPointerException if {@code collection} or any of its elements - * is null - * @since 1.0 (parameter was {@code Collection} before 12.0) - */ - public static byte[] toArray(Collection collection) { - if (collection instanceof ByteArrayAsList) { - return ((ByteArrayAsList) collection).toByteArray(); - } - - Object[] boxedArray = collection.toArray(); - int len = boxedArray.length; - byte[] array = new byte[len]; - for (int i = 0; i < len; i++) { - // checkNotNull for GWT (do not optimize) - array[i] = ((Number) checkNotNull(boxedArray[i])).byteValue(); - } - return array; - } - - /** - * Returns a fixed-size list backed by the specified array, similar to {@link - * Arrays#asList(Object[])}. The list supports {@link List#set(int, Object)}, - * but any attempt to set a value to {@code null} will result in a {@link - * NullPointerException}. - * - *

    The returned list maintains the values, but not the identities, of - * {@code Byte} objects written to or read from it. For example, whether - * {@code list.get(0) == list.get(0)} is true for the returned list is - * unspecified. - * - * @param backingArray the array to back the list - * @return a list view of the array - */ - public static List asList(byte... backingArray) { - if (backingArray.length == 0) { - return Collections.emptyList(); - } - return new ByteArrayAsList(backingArray); - } - - @GwtCompatible - private static class ByteArrayAsList extends AbstractList - implements RandomAccess, Serializable { - final byte[] array; - final int start; - final int end; - - ByteArrayAsList(byte[] array) { - this(array, 0, array.length); - } - - ByteArrayAsList(byte[] array, int start, int end) { - this.array = array; - this.start = start; - this.end = end; - } - - - @Override - public int size() { - return end - start; - } - - - @Override - public boolean isEmpty() { - return false; - } - - - @Override - public Byte get(int index) { - checkElementIndex(index, size()); - return array[start + index]; - } - - - @Override - public boolean contains(Object target) { - // Overridden to prevent a ton of boxing - return (target instanceof Byte) - && Bytes.indexOf(array, (Byte) target, start, end) != -1; - } - - - @Override - public int indexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Byte) { - int i = Bytes.indexOf(array, (Byte) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public int lastIndexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Byte) { - int i = Bytes.lastIndexOf(array, (Byte) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public Byte set(int index, Byte element) { - checkElementIndex(index, size()); - byte oldValue = array[start + index]; - // checkNotNull for GWT (do not optimize) - array[start + index] = checkNotNull(element); - return oldValue; - } - - - @Override - public List subList(int fromIndex, int toIndex) { - int size = size(); - checkPositionIndexes(fromIndex, toIndex, size); - if (fromIndex == toIndex) { - return Collections.emptyList(); - } - return new ByteArrayAsList(array, start + fromIndex, start + toIndex); - } - - - @Override - public boolean equals(Object object) { - if (object == this) { - return true; - } - if (object instanceof ByteArrayAsList) { - ByteArrayAsList that = (ByteArrayAsList) object; - int size = size(); - if (that.size() != size) { - return false; - } - for (int i = 0; i < size; i++) { - if (array[start + i] != that.array[that.start + i]) { - return false; - } - } - return true; - } - return super.equals(object); - } - - - @Override - public int hashCode() { - int result = 1; - for (int i = start; i < end; i++) { - result = 31 * result + Bytes.hashCode(array[i]); - } - return result; - } - - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(size() * 5); - builder.append('[').append(array[start]); - for (int i = start + 1; i < end; i++) { - builder.append(", ").append(array[i]); - } - return builder.append(']').toString(); - } - - byte[] toByteArray() { - // Arrays.copyOfRange() is not available under GWT - int size = size(); - byte[] result = new byte[size]; - System.arraycopy(array, start, result, 0, size); - return result; - } - - private static final long serialVersionUID = 0; - } -} diff --git a/src/com/google/common/primitives/Chars.java b/src/com/google/common/primitives/Chars.java deleted file mode 100644 index 70b14c66..00000000 --- a/src/com/google/common/primitives/Chars.java +++ /dev/null @@ -1,608 +0,0 @@ -/* - * Copyright (C) 2008 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkElementIndex; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkPositionIndexes; - -import com.google.common.annotations.GwtCompatible; -import com.google.common.annotations.GwtIncompatible; - -import java.io.Serializable; -import java.util.AbstractList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.RandomAccess; - -/** - * Static utility methods pertaining to {@code char} primitives, that are not - * already found in either {@link Character} or {@link Arrays}. - * - *

    All the operations in this class treat {@code char} values strictly - * numerically; they are neither Unicode-aware nor locale-dependent. - * - *

    See the Guava User Guide article on - * primitive utilities. - * - * @author Kevin Bourrillion - * @since 1.0 - */ -@GwtCompatible(emulated = true) -public final class Chars { - private Chars() {} - - /** - * The number of bytes required to represent a primitive {@code char} - * value. - */ - public static final int BYTES = Character.SIZE / Byte.SIZE; - - /** - * Returns a hash code for {@code value}; equal to the result of invoking - * {@code ((Character) value).hashCode()}. - * - * @param value a primitive {@code char} value - * @return a hash code for the value - */ - public static int hashCode(char value) { - return value; - } - - /** - * Returns the {@code char} value that is equal to {@code value}, if possible. - * - * @param value any value in the range of the {@code char} type - * @return the {@code char} value that equals {@code value} - * @throws IllegalArgumentException if {@code value} is greater than {@link - * Character#MAX_VALUE} or less than {@link Character#MIN_VALUE} - */ - public static char checkedCast(long value) { - char result = (char) value; - checkArgument(result == value, "Out of range: %s", value); - return result; - } - - /** - * Returns the {@code char} nearest in value to {@code value}. - * - * @param value any {@code long} value - * @return the same value cast to {@code char} if it is in the range of the - * {@code char} type, {@link Character#MAX_VALUE} if it is too large, - * or {@link Character#MIN_VALUE} if it is too small - */ - public static char saturatedCast(long value) { - if (value > Character.MAX_VALUE) { - return Character.MAX_VALUE; - } - if (value < Character.MIN_VALUE) { - return Character.MIN_VALUE; - } - return (char) value; - } - - /** - * Compares the two specified {@code char} values. The sign of the value - * returned is the same as that of {@code ((Character) a).compareTo(b)}. - * - * @param a the first {@code char} to compare - * @param b the second {@code char} to compare - * @return a negative value if {@code a} is less than {@code b}; a positive - * value if {@code a} is greater than {@code b}; or zero if they are equal - */ - public static int compare(char a, char b) { - return a - b; // safe due to restricted range - } - - /** - * Returns {@code true} if {@code target} is present as an element anywhere in - * {@code array}. - * - * @param array an array of {@code char} values, possibly empty - * @param target a primitive {@code char} value - * @return {@code true} if {@code array[i] == target} for some value of {@code - * i} - */ - public static boolean contains(char[] array, char target) { - for (char value : array) { - if (value == target) { - return true; - } - } - return false; - } - - /** - * Returns the index of the first appearance of the value {@code target} in - * {@code array}. - * - * @param array an array of {@code char} values, possibly empty - * @param target a primitive {@code char} value - * @return the least index {@code i} for which {@code array[i] == target}, or - * {@code -1} if no such index exists. - */ - public static int indexOf(char[] array, char target) { - return indexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int indexOf( - char[] array, char target, int start, int end) { - for (int i = start; i < end; i++) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the start position of the first occurrence of the specified {@code - * target} within {@code array}, or {@code -1} if there is no such occurrence. - * - *

    More formally, returns the lowest index {@code i} such that {@code - * java.util.Arrays.copyOfRange(array, i, i + target.length)} contains exactly - * the same elements as {@code target}. - * - * @param array the array to search for the sequence {@code target} - * @param target the array to search for as a sub-sequence of {@code array} - */ - public static int indexOf(char[] array, char[] target) { - checkNotNull(array, "array"); - checkNotNull(target, "target"); - if (target.length == 0) { - return 0; - } - - outer: - for (int i = 0; i < array.length - target.length + 1; i++) { - for (int j = 0; j < target.length; j++) { - if (array[i + j] != target[j]) { - continue outer; - } - } - return i; - } - return -1; - } - - /** - * Returns the index of the last appearance of the value {@code target} in - * {@code array}. - * - * @param array an array of {@code char} values, possibly empty - * @param target a primitive {@code char} value - * @return the greatest index {@code i} for which {@code array[i] == target}, - * or {@code -1} if no such index exists. - */ - public static int lastIndexOf(char[] array, char target) { - return lastIndexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int lastIndexOf( - char[] array, char target, int start, int end) { - for (int i = end - 1; i >= start; i--) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the least value present in {@code array}. - * - * @param array a nonempty array of {@code char} values - * @return the value present in {@code array} that is less than or equal to - * every other value in the array - * @throws IllegalArgumentException if {@code array} is empty - */ - public static char min(char... array) { - checkArgument(array.length > 0); - char min = array[0]; - for (int i = 1; i < array.length; i++) { - if (array[i] < min) { - min = array[i]; - } - } - return min; - } - - /** - * Returns the greatest value present in {@code array}. - * - * @param array a nonempty array of {@code char} values - * @return the value present in {@code array} that is greater than or equal to - * every other value in the array - * @throws IllegalArgumentException if {@code array} is empty - */ - public static char max(char... array) { - checkArgument(array.length > 0); - char max = array[0]; - for (int i = 1; i < array.length; i++) { - if (array[i] > max) { - max = array[i]; - } - } - return max; - } - - /** - * Returns the values from each provided array combined into a single array. - * For example, {@code concat(new char[] {a, b}, new char[] {}, new - * char[] {c}} returns the array {@code {a, b, c}}. - * - * @param arrays zero or more {@code char} arrays - * @return a single array containing all the values from the source arrays, in - * order - */ - public static char[] concat(char[]... arrays) { - int length = 0; - for (char[] array : arrays) { - length += array.length; - } - char[] result = new char[length]; - int pos = 0; - for (char[] array : arrays) { - System.arraycopy(array, 0, result, pos, array.length); - pos += array.length; - } - return result; - } - - /** - * Returns a big-endian representation of {@code value} in a 2-element byte - * array; equivalent to {@code - * ByteBuffer.allocate(2).putChar(value).array()}. For example, the input - * value {@code '\\u5432'} would yield the byte array {@code {0x54, 0x32}}. - * - *

    If you need to convert and concatenate several values (possibly even of - * different types), use a shared {@link java.nio.ByteBuffer} instance, or use - * {@link com.google.common.io.ByteStreams#newDataOutput()} to get a growable - * buffer. - */ - @GwtIncompatible("doesn't work") - public static byte[] toByteArray(char value) { - return new byte[] { - (byte) (value >> 8), - (byte) value}; - } - - /** - * Returns the {@code char} value whose big-endian representation is - * stored in the first 2 bytes of {@code bytes}; equivalent to {@code - * ByteBuffer.wrap(bytes).getChar()}. For example, the input byte array - * {@code {0x54, 0x32}} would yield the {@code char} value {@code '\\u5432'}. - * - *

    Arguably, it's preferable to use {@link java.nio.ByteBuffer}; that - * library exposes much more flexibility at little cost in readability. - * - * @throws IllegalArgumentException if {@code bytes} has fewer than 2 - * elements - */ - @GwtIncompatible("doesn't work") - public static char fromByteArray(byte[] bytes) { - checkArgument(bytes.length >= BYTES, - "array too small: %s < %s", bytes.length, BYTES); - return fromBytes(bytes[0], bytes[1]); - } - - /** - * Returns the {@code char} value whose byte representation is the given 2 - * bytes, in big-endian order; equivalent to {@code Chars.fromByteArray(new - * byte[] {b1, b2})}. - * - * @since 7.0 - */ - @GwtIncompatible("doesn't work") - public static char fromBytes(byte b1, byte b2) { - return (char) ((b1 << 8) | (b2 & 0xFF)); - } - - /** - * Returns an array containing the same values as {@code array}, but - * guaranteed to be of a specified minimum length. If {@code array} already - * has a length of at least {@code minLength}, it is returned directly. - * Otherwise, a new array of size {@code minLength + padding} is returned, - * containing the values of {@code array}, and zeroes in the remaining places. - * - * @param array the source array - * @param minLength the minimum length the returned array must guarantee - * @param padding an extra amount to "grow" the array by if growth is - * necessary - * @throws IllegalArgumentException if {@code minLength} or {@code padding} is - * negative - * @return an array containing the values of {@code array}, with guaranteed - * minimum length {@code minLength} - */ - public static char[] ensureCapacity( - char[] array, int minLength, int padding) { - checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); - checkArgument(padding >= 0, "Invalid padding: %s", padding); - return (array.length < minLength) - ? copyOf(array, minLength + padding) - : array; - } - - // Arrays.copyOf() requires Java 6 - private static char[] copyOf(char[] original, int length) { - char[] copy = new char[length]; - System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); - return copy; - } - - /** - * Returns a string containing the supplied {@code char} values separated - * by {@code separator}. For example, {@code join("-", '1', '2', '3')} returns - * the string {@code "1-2-3"}. - * - * @param separator the text that should appear between consecutive values in - * the resulting string (but not at the start or end) - * @param array an array of {@code char} values, possibly empty - */ - public static String join(String separator, char... array) { - checkNotNull(separator); - int len = array.length; - if (len == 0) { - return ""; - } - - StringBuilder builder - = new StringBuilder(len + separator.length() * (len - 1)); - builder.append(array[0]); - for (int i = 1; i < len; i++) { - builder.append(separator).append(array[i]); - } - return builder.toString(); - } - - /** - * Returns a comparator that compares two {@code char} arrays - * lexicographically. That is, it compares, using {@link - * #compare(char, char)}), the first pair of values that follow any - * common prefix, or when one array is a prefix of the other, treats the - * shorter array as the lesser. For example, - * {@code [] < ['a'] < ['a', 'b'] < ['b']}. - * - *

    The returned comparator is inconsistent with {@link - * Object#equals(Object)} (since arrays support only identity equality), but - * it is consistent with {@link Arrays#equals(char[], char[])}. - * - * @see - * Lexicographical order article at Wikipedia - * @since 2.0 - */ - public static Comparator lexicographicalComparator() { - return LexicographicalComparator.INSTANCE; - } - - private enum LexicographicalComparator implements Comparator { - INSTANCE; - - public int compare(char[] left, char[] right) { - int minLength = Math.min(left.length, right.length); - for (int i = 0; i < minLength; i++) { - int result = Chars.compare(left[i], right[i]); - if (result != 0) { - return result; - } - } - return left.length - right.length; - } - } - - /** - * Copies a collection of {@code Character} instances into a new array of - * primitive {@code char} values. - * - *

    Elements are copied from the argument collection as if by {@code - * collection.toArray()}. Calling this method is as thread-safe as calling - * that method. - * - * @param collection a collection of {@code Character} objects - * @return an array containing the same values as {@code collection}, in the - * same order, converted to primitives - * @throws NullPointerException if {@code collection} or any of its elements - * is null - */ - public static char[] toArray(Collection collection) { - if (collection instanceof CharArrayAsList) { - return ((CharArrayAsList) collection).toCharArray(); - } - - Object[] boxedArray = collection.toArray(); - int len = boxedArray.length; - char[] array = new char[len]; - for (int i = 0; i < len; i++) { - // checkNotNull for GWT (do not optimize) - array[i] = (Character) checkNotNull(boxedArray[i]); - } - return array; - } - - /** - * Returns a fixed-size list backed by the specified array, similar to {@link - * Arrays#asList(Object[])}. The list supports {@link List#set(int, Object)}, - * but any attempt to set a value to {@code null} will result in a {@link - * NullPointerException}. - * - *

    The returned list maintains the values, but not the identities, of - * {@code Character} objects written to or read from it. For example, whether - * {@code list.get(0) == list.get(0)} is true for the returned list is - * unspecified. - * - * @param backingArray the array to back the list - * @return a list view of the array - */ - public static List asList(char... backingArray) { - if (backingArray.length == 0) { - return Collections.emptyList(); - } - return new CharArrayAsList(backingArray); - } - - @GwtCompatible - private static class CharArrayAsList extends AbstractList - implements RandomAccess, Serializable { - final char[] array; - final int start; - final int end; - - CharArrayAsList(char[] array) { - this(array, 0, array.length); - } - - CharArrayAsList(char[] array, int start, int end) { - this.array = array; - this.start = start; - this.end = end; - } - - - @Override - public int size() { - return end - start; - } - - - @Override - public boolean isEmpty() { - return false; - } - - - @Override - public Character get(int index) { - checkElementIndex(index, size()); - return array[start + index]; - } - - - @Override - public boolean contains(Object target) { - // Overridden to prevent a ton of boxing - return (target instanceof Character) - && Chars.indexOf(array, (Character) target, start, end) != -1; - } - - - @Override - public int indexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Character) { - int i = Chars.indexOf(array, (Character) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public int lastIndexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Character) { - int i = Chars.lastIndexOf(array, (Character) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public Character set(int index, Character element) { - checkElementIndex(index, size()); - char oldValue = array[start + index]; - // checkNotNull for GWT (do not optimize) - array[start + index] = checkNotNull(element); - return oldValue; - } - - - @Override - public List subList(int fromIndex, int toIndex) { - int size = size(); - checkPositionIndexes(fromIndex, toIndex, size); - if (fromIndex == toIndex) { - return Collections.emptyList(); - } - return new CharArrayAsList(array, start + fromIndex, start + toIndex); - } - - - @Override - public boolean equals(Object object) { - if (object == this) { - return true; - } - if (object instanceof CharArrayAsList) { - CharArrayAsList that = (CharArrayAsList) object; - int size = size(); - if (that.size() != size) { - return false; - } - for (int i = 0; i < size; i++) { - if (array[start + i] != that.array[that.start + i]) { - return false; - } - } - return true; - } - return super.equals(object); - } - - - @Override - public int hashCode() { - int result = 1; - for (int i = start; i < end; i++) { - result = 31 * result + Chars.hashCode(array[i]); - } - return result; - } - - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(size() * 3); - builder.append('[').append(array[start]); - for (int i = start + 1; i < end; i++) { - builder.append(", ").append(array[i]); - } - return builder.append(']').toString(); - } - - char[] toCharArray() { - // Arrays.copyOfRange() is not available under GWT - int size = size(); - char[] result = new char[size]; - System.arraycopy(array, start, result, 0, size); - return result; - } - - private static final long serialVersionUID = 0; - } -} diff --git a/src/com/google/common/primitives/Doubles.java b/src/com/google/common/primitives/Doubles.java deleted file mode 100644 index d6b557e4..00000000 --- a/src/com/google/common/primitives/Doubles.java +++ /dev/null @@ -1,555 +0,0 @@ -/* - * Copyright (C) 2008 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkElementIndex; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkPositionIndexes; -import static java.lang.Double.NEGATIVE_INFINITY; -import static java.lang.Double.POSITIVE_INFINITY; - -import com.google.common.annotations.GwtCompatible; - -import java.io.Serializable; -import java.util.AbstractList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.RandomAccess; - -/** - * Static utility methods pertaining to {@code double} primitives, that are not - * already found in either {@link Double} or {@link Arrays}. - * - *

    See the Guava User Guide article on - * primitive utilities. - * - * @author Kevin Bourrillion - * @since 1.0 - */ -@GwtCompatible -public final class Doubles { - private Doubles() {} - - /** - * The number of bytes required to represent a primitive {@code double} - * value. - * - * @since 10.0 - */ - public static final int BYTES = Double.SIZE / Byte.SIZE; - - /** - * Returns a hash code for {@code value}; equal to the result of invoking - * {@code ((Double) value).hashCode()}. - * - * @param value a primitive {@code double} value - * @return a hash code for the value - */ - public static int hashCode(double value) { - return ((Double) value).hashCode(); - // TODO(kevinb): do it this way when we can (GWT problem): - // long bits = Double.doubleToLongBits(value); - // return (int)(bits ^ (bits >>> 32)); - } - - /** - * Compares the two specified {@code double} values. The sign of the value - * returned is the same as that of ((Double) a).{@linkplain - * Double#compareTo compareTo}(b). As with that method, {@code NaN} is - * treated as greater than all other values, and {@code 0.0 > -0.0}. - * - * @param a the first {@code double} to compare - * @param b the second {@code double} to compare - * @return a negative value if {@code a} is less than {@code b}; a positive - * value if {@code a} is greater than {@code b}; or zero if they are equal - */ - public static int compare(double a, double b) { - return Double.compare(a, b); - } - - /** - * Returns {@code true} if {@code value} represents a real number. This is - * equivalent to, but not necessarily implemented as, - * {@code !(Double.isInfinite(value) || Double.isNaN(value))}. - * - * @since 10.0 - */ - public static boolean isFinite(double value) { - return NEGATIVE_INFINITY < value & value < POSITIVE_INFINITY; - } - - /** - * Returns {@code true} if {@code target} is present as an element anywhere in - * {@code array}. Note that this always returns {@code false} when {@code - * target} is {@code NaN}. - * - * @param array an array of {@code double} values, possibly empty - * @param target a primitive {@code double} value - * @return {@code true} if {@code array[i] == target} for some value of {@code - * i} - */ - public static boolean contains(double[] array, double target) { - for (double value : array) { - if (value == target) { - return true; - } - } - return false; - } - - /** - * Returns the index of the first appearance of the value {@code target} in - * {@code array}. Note that this always returns {@code -1} when {@code target} - * is {@code NaN}. - * - * @param array an array of {@code double} values, possibly empty - * @param target a primitive {@code double} value - * @return the least index {@code i} for which {@code array[i] == target}, or - * {@code -1} if no such index exists. - */ - public static int indexOf(double[] array, double target) { - return indexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int indexOf( - double[] array, double target, int start, int end) { - for (int i = start; i < end; i++) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the start position of the first occurrence of the specified {@code - * target} within {@code array}, or {@code -1} if there is no such occurrence. - * - *

    More formally, returns the lowest index {@code i} such that {@code - * java.util.Arrays.copyOfRange(array, i, i + target.length)} contains exactly - * the same elements as {@code target}. - * - *

    Note that this always returns {@code -1} when {@code target} contains - * {@code NaN}. - * - * @param array the array to search for the sequence {@code target} - * @param target the array to search for as a sub-sequence of {@code array} - */ - public static int indexOf(double[] array, double[] target) { - checkNotNull(array, "array"); - checkNotNull(target, "target"); - if (target.length == 0) { - return 0; - } - - outer: - for (int i = 0; i < array.length - target.length + 1; i++) { - for (int j = 0; j < target.length; j++) { - if (array[i + j] != target[j]) { - continue outer; - } - } - return i; - } - return -1; - } - - /** - * Returns the index of the last appearance of the value {@code target} in - * {@code array}. Note that this always returns {@code -1} when {@code target} - * is {@code NaN}. - * - * @param array an array of {@code double} values, possibly empty - * @param target a primitive {@code double} value - * @return the greatest index {@code i} for which {@code array[i] == target}, - * or {@code -1} if no such index exists. - */ - public static int lastIndexOf(double[] array, double target) { - return lastIndexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int lastIndexOf( - double[] array, double target, int start, int end) { - for (int i = end - 1; i >= start; i--) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the least value present in {@code array}, using the same rules of - * comparison as {@link Math#min(double, double)}. - * - * @param array a nonempty array of {@code double} values - * @return the value present in {@code array} that is less than or equal to - * every other value in the array - * @throws IllegalArgumentException if {@code array} is empty - */ - public static double min(double... array) { - checkArgument(array.length > 0); - double min = array[0]; - for (int i = 1; i < array.length; i++) { - min = Math.min(min, array[i]); - } - return min; - } - - /** - * Returns the greatest value present in {@code array}, using the same rules - * of comparison as {@link Math#max(double, double)}. - * - * @param array a nonempty array of {@code double} values - * @return the value present in {@code array} that is greater than or equal to - * every other value in the array - * @throws IllegalArgumentException if {@code array} is empty - */ - public static double max(double... array) { - checkArgument(array.length > 0); - double max = array[0]; - for (int i = 1; i < array.length; i++) { - max = Math.max(max, array[i]); - } - return max; - } - - /** - * Returns the values from each provided array combined into a single array. - * For example, {@code concat(new double[] {a, b}, new double[] {}, new - * double[] {c}} returns the array {@code {a, b, c}}. - * - * @param arrays zero or more {@code double} arrays - * @return a single array containing all the values from the source arrays, in - * order - */ - public static double[] concat(double[]... arrays) { - int length = 0; - for (double[] array : arrays) { - length += array.length; - } - double[] result = new double[length]; - int pos = 0; - for (double[] array : arrays) { - System.arraycopy(array, 0, result, pos, array.length); - pos += array.length; - } - return result; - } - - /** - * Returns an array containing the same values as {@code array}, but - * guaranteed to be of a specified minimum length. If {@code array} already - * has a length of at least {@code minLength}, it is returned directly. - * Otherwise, a new array of size {@code minLength + padding} is returned, - * containing the values of {@code array}, and zeroes in the remaining places. - * - * @param array the source array - * @param minLength the minimum length the returned array must guarantee - * @param padding an extra amount to "grow" the array by if growth is - * necessary - * @throws IllegalArgumentException if {@code minLength} or {@code padding} is - * negative - * @return an array containing the values of {@code array}, with guaranteed - * minimum length {@code minLength} - */ - public static double[] ensureCapacity( - double[] array, int minLength, int padding) { - checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); - checkArgument(padding >= 0, "Invalid padding: %s", padding); - return (array.length < minLength) - ? copyOf(array, minLength + padding) - : array; - } - - // Arrays.copyOf() requires Java 6 - private static double[] copyOf(double[] original, int length) { - double[] copy = new double[length]; - System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); - return copy; - } - - /** - * Returns a string containing the supplied {@code double} values, converted - * to strings as specified by {@link Double#toString(double)}, and separated - * by {@code separator}. For example, {@code join("-", 1.0, 2.0, 3.0)} returns - * the string {@code "1.0-2.0-3.0"}. - * - *

    Note that {@link Double#toString(double)} formats {@code double} - * differently in GWT sometimes. In the previous example, it returns the - * string {@code "1-2-3"}. - * - * @param separator the text that should appear between consecutive values in - * the resulting string (but not at the start or end) - * @param array an array of {@code double} values, possibly empty - */ - public static String join(String separator, double... array) { - checkNotNull(separator); - if (array.length == 0) { - return ""; - } - - // For pre-sizing a builder, just get the right order of magnitude - StringBuilder builder = new StringBuilder(array.length * 12); - builder.append(array[0]); - for (int i = 1; i < array.length; i++) { - builder.append(separator).append(array[i]); - } - return builder.toString(); - } - - /** - * Returns a comparator that compares two {@code double} arrays - * lexicographically. That is, it compares, using {@link - * #compare(double, double)}), the first pair of values that follow any - * common prefix, or when one array is a prefix of the other, treats the - * shorter array as the lesser. For example, - * {@code [] < [1.0] < [1.0, 2.0] < [2.0]}. - * - *

    The returned comparator is inconsistent with {@link - * Object#equals(Object)} (since arrays support only identity equality), but - * it is consistent with {@link Arrays#equals(double[], double[])}. - * - * @see - * Lexicographical order article at Wikipedia - * @since 2.0 - */ - public static Comparator lexicographicalComparator() { - return LexicographicalComparator.INSTANCE; - } - - private enum LexicographicalComparator implements Comparator { - INSTANCE; - - public int compare(double[] left, double[] right) { - int minLength = Math.min(left.length, right.length); - for (int i = 0; i < minLength; i++) { - int result = Doubles.compare(left[i], right[i]); - if (result != 0) { - return result; - } - } - return left.length - right.length; - } - } - - /** - * Returns an array containing each value of {@code collection}, converted to - * a {@code double} value in the manner of {@link Number#doubleValue}. - * - *

    Elements are copied from the argument collection as if by {@code - * collection.toArray()}. Calling this method is as thread-safe as calling - * that method. - * - * @param collection a collection of {@code Number} instances - * @return an array containing the same values as {@code collection}, in the - * same order, converted to primitives - * @throws NullPointerException if {@code collection} or any of its elements - * is null - * @since 1.0 (parameter was {@code Collection} before 12.0) - */ - public static double[] toArray(Collection collection) { - if (collection instanceof DoubleArrayAsList) { - return ((DoubleArrayAsList) collection).toDoubleArray(); - } - - Object[] boxedArray = collection.toArray(); - int len = boxedArray.length; - double[] array = new double[len]; - for (int i = 0; i < len; i++) { - // checkNotNull for GWT (do not optimize) - array[i] = ((Number) checkNotNull(boxedArray[i])).doubleValue(); - } - return array; - } - - /** - * Returns a fixed-size list backed by the specified array, similar to {@link - * Arrays#asList(Object[])}. The list supports {@link List#set(int, Object)}, - * but any attempt to set a value to {@code null} will result in a {@link - * NullPointerException}. - * - *

    The returned list maintains the values, but not the identities, of - * {@code Double} objects written to or read from it. For example, whether - * {@code list.get(0) == list.get(0)} is true for the returned list is - * unspecified. - * - *

    The returned list may have unexpected behavior if it contains {@code - * NaN}, or if {@code NaN} is used as a parameter to any of its methods. - * - * @param backingArray the array to back the list - * @return a list view of the array - */ - public static List asList(double... backingArray) { - if (backingArray.length == 0) { - return Collections.emptyList(); - } - return new DoubleArrayAsList(backingArray); - } - - @GwtCompatible - private static class DoubleArrayAsList extends AbstractList - implements RandomAccess, Serializable { - final double[] array; - final int start; - final int end; - - DoubleArrayAsList(double[] array) { - this(array, 0, array.length); - } - - DoubleArrayAsList(double[] array, int start, int end) { - this.array = array; - this.start = start; - this.end = end; - } - - - @Override - public int size() { - return end - start; - } - - - @Override - public boolean isEmpty() { - return false; - } - - - @Override - public Double get(int index) { - checkElementIndex(index, size()); - return array[start + index]; - } - - - @Override - public boolean contains(Object target) { - // Overridden to prevent a ton of boxing - return (target instanceof Double) - && Doubles.indexOf(array, (Double) target, start, end) != -1; - } - - - @Override - public int indexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Double) { - int i = Doubles.indexOf(array, (Double) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public int lastIndexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Double) { - int i = Doubles.lastIndexOf(array, (Double) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public Double set(int index, Double element) { - checkElementIndex(index, size()); - double oldValue = array[start + index]; - // checkNotNull for GWT (do not optimize) - array[start + index] = checkNotNull(element); - return oldValue; - } - - - @Override - public List subList(int fromIndex, int toIndex) { - int size = size(); - checkPositionIndexes(fromIndex, toIndex, size); - if (fromIndex == toIndex) { - return Collections.emptyList(); - } - return new DoubleArrayAsList(array, start + fromIndex, start + toIndex); - } - - - @Override - public boolean equals(Object object) { - if (object == this) { - return true; - } - if (object instanceof DoubleArrayAsList) { - DoubleArrayAsList that = (DoubleArrayAsList) object; - int size = size(); - if (that.size() != size) { - return false; - } - for (int i = 0; i < size; i++) { - if (array[start + i] != that.array[that.start + i]) { - return false; - } - } - return true; - } - return super.equals(object); - } - - - @Override - public int hashCode() { - int result = 1; - for (int i = start; i < end; i++) { - result = 31 * result + Doubles.hashCode(array[i]); - } - return result; - } - - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(size() * 12); - builder.append('[').append(array[start]); - for (int i = start + 1; i < end; i++) { - builder.append(", ").append(array[i]); - } - return builder.append(']').toString(); - } - - double[] toDoubleArray() { - // Arrays.copyOfRange() is not available under GWT - int size = size(); - double[] result = new double[size]; - System.arraycopy(array, start, result, 0, size); - return result; - } - - private static final long serialVersionUID = 0; - } -} diff --git a/src/com/google/common/primitives/Floats.java b/src/com/google/common/primitives/Floats.java deleted file mode 100644 index d04a477e..00000000 --- a/src/com/google/common/primitives/Floats.java +++ /dev/null @@ -1,552 +0,0 @@ -/* - * Copyright (C) 2008 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkElementIndex; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkPositionIndexes; -import static java.lang.Float.NEGATIVE_INFINITY; -import static java.lang.Float.POSITIVE_INFINITY; - -import com.google.common.annotations.GwtCompatible; - -import java.io.Serializable; -import java.util.AbstractList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.RandomAccess; - -/** - * Static utility methods pertaining to {@code float} primitives, that are not - * already found in either {@link Float} or {@link Arrays}. - * - *

    See the Guava User Guide article on - * primitive utilities. - * - * @author Kevin Bourrillion - * @since 1.0 - */ -@GwtCompatible -public final class Floats { - private Floats() {} - - /** - * The number of bytes required to represent a primitive {@code float} - * value. - * - * @since 10.0 - */ - public static final int BYTES = Float.SIZE / Byte.SIZE; - - /** - * Returns a hash code for {@code value}; equal to the result of invoking - * {@code ((Float) value).hashCode()}. - * - * @param value a primitive {@code float} value - * @return a hash code for the value - */ - public static int hashCode(float value) { - // TODO(kevinb): is there a better way, that's still gwt-safe? - return ((Float) value).hashCode(); - } - - /** - * Compares the two specified {@code float} values using {@link - * Float#compare(float, float)}. You may prefer to invoke that method - * directly; this method exists only for consistency with the other utilities - * in this package. - * - * @param a the first {@code float} to compare - * @param b the second {@code float} to compare - * @return the result of invoking {@link Float#compare(float, float)} - */ - public static int compare(float a, float b) { - return Float.compare(a, b); - } - - /** - * Returns {@code true} if {@code value} represents a real number. This is - * equivalent to, but not necessarily implemented as, - * {@code !(Float.isInfinite(value) || Float.isNaN(value))}. - * - * @since 10.0 - */ - public static boolean isFinite(float value) { - return NEGATIVE_INFINITY < value & value < POSITIVE_INFINITY; - } - - /** - * Returns {@code true} if {@code target} is present as an element anywhere in - * {@code array}. Note that this always returns {@code false} when {@code - * target} is {@code NaN}. - * - * @param array an array of {@code float} values, possibly empty - * @param target a primitive {@code float} value - * @return {@code true} if {@code array[i] == target} for some value of {@code - * i} - */ - public static boolean contains(float[] array, float target) { - for (float value : array) { - if (value == target) { - return true; - } - } - return false; - } - - /** - * Returns the index of the first appearance of the value {@code target} in - * {@code array}. Note that this always returns {@code -1} when {@code target} - * is {@code NaN}. - * - * @param array an array of {@code float} values, possibly empty - * @param target a primitive {@code float} value - * @return the least index {@code i} for which {@code array[i] == target}, or - * {@code -1} if no such index exists. - */ - public static int indexOf(float[] array, float target) { - return indexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int indexOf( - float[] array, float target, int start, int end) { - for (int i = start; i < end; i++) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the start position of the first occurrence of the specified {@code - * target} within {@code array}, or {@code -1} if there is no such occurrence. - * - *

    More formally, returns the lowest index {@code i} such that {@code - * java.util.Arrays.copyOfRange(array, i, i + target.length)} contains exactly - * the same elements as {@code target}. - * - *

    Note that this always returns {@code -1} when {@code target} contains - * {@code NaN}. - * - * @param array the array to search for the sequence {@code target} - * @param target the array to search for as a sub-sequence of {@code array} - */ - public static int indexOf(float[] array, float[] target) { - checkNotNull(array, "array"); - checkNotNull(target, "target"); - if (target.length == 0) { - return 0; - } - - outer: - for (int i = 0; i < array.length - target.length + 1; i++) { - for (int j = 0; j < target.length; j++) { - if (array[i + j] != target[j]) { - continue outer; - } - } - return i; - } - return -1; - } - - /** - * Returns the index of the last appearance of the value {@code target} in - * {@code array}. Note that this always returns {@code -1} when {@code target} - * is {@code NaN}. - * - * @param array an array of {@code float} values, possibly empty - * @param target a primitive {@code float} value - * @return the greatest index {@code i} for which {@code array[i] == target}, - * or {@code -1} if no such index exists. - */ - public static int lastIndexOf(float[] array, float target) { - return lastIndexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int lastIndexOf( - float[] array, float target, int start, int end) { - for (int i = end - 1; i >= start; i--) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the least value present in {@code array}, using the same rules of - * comparison as {@link Math#min(float, float)}. - * - * @param array a nonempty array of {@code float} values - * @return the value present in {@code array} that is less than or equal to - * every other value in the array - * @throws IllegalArgumentException if {@code array} is empty - */ - public static float min(float... array) { - checkArgument(array.length > 0); - float min = array[0]; - for (int i = 1; i < array.length; i++) { - min = Math.min(min, array[i]); - } - return min; - } - - /** - * Returns the greatest value present in {@code array}, using the same rules - * of comparison as {@link Math#min(float, float)}. - * - * @param array a nonempty array of {@code float} values - * @return the value present in {@code array} that is greater than or equal to - * every other value in the array - * @throws IllegalArgumentException if {@code array} is empty - */ - public static float max(float... array) { - checkArgument(array.length > 0); - float max = array[0]; - for (int i = 1; i < array.length; i++) { - max = Math.max(max, array[i]); - } - return max; - } - - /** - * Returns the values from each provided array combined into a single array. - * For example, {@code concat(new float[] {a, b}, new float[] {}, new - * float[] {c}} returns the array {@code {a, b, c}}. - * - * @param arrays zero or more {@code float} arrays - * @return a single array containing all the values from the source arrays, in - * order - */ - public static float[] concat(float[]... arrays) { - int length = 0; - for (float[] array : arrays) { - length += array.length; - } - float[] result = new float[length]; - int pos = 0; - for (float[] array : arrays) { - System.arraycopy(array, 0, result, pos, array.length); - pos += array.length; - } - return result; - } - - /** - * Returns an array containing the same values as {@code array}, but - * guaranteed to be of a specified minimum length. If {@code array} already - * has a length of at least {@code minLength}, it is returned directly. - * Otherwise, a new array of size {@code minLength + padding} is returned, - * containing the values of {@code array}, and zeroes in the remaining places. - * - * @param array the source array - * @param minLength the minimum length the returned array must guarantee - * @param padding an extra amount to "grow" the array by if growth is - * necessary - * @throws IllegalArgumentException if {@code minLength} or {@code padding} is - * negative - * @return an array containing the values of {@code array}, with guaranteed - * minimum length {@code minLength} - */ - public static float[] ensureCapacity( - float[] array, int minLength, int padding) { - checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); - checkArgument(padding >= 0, "Invalid padding: %s", padding); - return (array.length < minLength) - ? copyOf(array, minLength + padding) - : array; - } - - // Arrays.copyOf() requires Java 6 - private static float[] copyOf(float[] original, int length) { - float[] copy = new float[length]; - System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); - return copy; - } - - /** - * Returns a string containing the supplied {@code float} values, converted - * to strings as specified by {@link Float#toString(float)}, and separated by - * {@code separator}. For example, {@code join("-", 1.0f, 2.0f, 3.0f)} - * returns the string {@code "1.0-2.0-3.0"}. - * - *

    Note that {@link Float#toString(float)} formats {@code float} - * differently in GWT. In the previous example, it returns the string {@code - * "1-2-3"}. - * - * @param separator the text that should appear between consecutive values in - * the resulting string (but not at the start or end) - * @param array an array of {@code float} values, possibly empty - */ - public static String join(String separator, float... array) { - checkNotNull(separator); - if (array.length == 0) { - return ""; - } - - // For pre-sizing a builder, just get the right order of magnitude - StringBuilder builder = new StringBuilder(array.length * 12); - builder.append(array[0]); - for (int i = 1; i < array.length; i++) { - builder.append(separator).append(array[i]); - } - return builder.toString(); - } - - /** - * Returns a comparator that compares two {@code float} arrays - * lexicographically. That is, it compares, using {@link - * #compare(float, float)}), the first pair of values that follow any - * common prefix, or when one array is a prefix of the other, treats the - * shorter array as the lesser. For example, {@code [] < [1.0f] < [1.0f, 2.0f] - * < [2.0f]}. - * - *

    The returned comparator is inconsistent with {@link - * Object#equals(Object)} (since arrays support only identity equality), but - * it is consistent with {@link Arrays#equals(float[], float[])}. - * - * @see - * Lexicographical order article at Wikipedia - * @since 2.0 - */ - public static Comparator lexicographicalComparator() { - return LexicographicalComparator.INSTANCE; - } - - private enum LexicographicalComparator implements Comparator { - INSTANCE; - - public int compare(float[] left, float[] right) { - int minLength = Math.min(left.length, right.length); - for (int i = 0; i < minLength; i++) { - int result = Floats.compare(left[i], right[i]); - if (result != 0) { - return result; - } - } - return left.length - right.length; - } - } - - /** - * Returns an array containing each value of {@code collection}, converted to - * a {@code float} value in the manner of {@link Number#floatValue}. - * - *

    Elements are copied from the argument collection as if by {@code - * collection.toArray()}. Calling this method is as thread-safe as calling - * that method. - * - * @param collection a collection of {@code Number} instances - * @return an array containing the same values as {@code collection}, in the - * same order, converted to primitives - * @throws NullPointerException if {@code collection} or any of its elements - * is null - * @since 1.0 (parameter was {@code Collection} before 12.0) - */ - public static float[] toArray(Collection collection) { - if (collection instanceof FloatArrayAsList) { - return ((FloatArrayAsList) collection).toFloatArray(); - } - - Object[] boxedArray = collection.toArray(); - int len = boxedArray.length; - float[] array = new float[len]; - for (int i = 0; i < len; i++) { - // checkNotNull for GWT (do not optimize) - array[i] = ((Number) checkNotNull(boxedArray[i])).floatValue(); - } - return array; - } - - /** - * Returns a fixed-size list backed by the specified array, similar to {@link - * Arrays#asList(Object[])}. The list supports {@link List#set(int, Object)}, - * but any attempt to set a value to {@code null} will result in a {@link - * NullPointerException}. - * - *

    The returned list maintains the values, but not the identities, of - * {@code Float} objects written to or read from it. For example, whether - * {@code list.get(0) == list.get(0)} is true for the returned list is - * unspecified. - * - *

    The returned list may have unexpected behavior if it contains {@code - * NaN}, or if {@code NaN} is used as a parameter to any of its methods. - * - * @param backingArray the array to back the list - * @return a list view of the array - */ - public static List asList(float... backingArray) { - if (backingArray.length == 0) { - return Collections.emptyList(); - } - return new FloatArrayAsList(backingArray); - } - - @GwtCompatible - private static class FloatArrayAsList extends AbstractList - implements RandomAccess, Serializable { - final float[] array; - final int start; - final int end; - - FloatArrayAsList(float[] array) { - this(array, 0, array.length); - } - - FloatArrayAsList(float[] array, int start, int end) { - this.array = array; - this.start = start; - this.end = end; - } - - - @Override - public int size() { - return end - start; - } - - - @Override - public boolean isEmpty() { - return false; - } - - - @Override - public Float get(int index) { - checkElementIndex(index, size()); - return array[start + index]; - } - - - @Override - public boolean contains(Object target) { - // Overridden to prevent a ton of boxing - return (target instanceof Float) - && Floats.indexOf(array, (Float) target, start, end) != -1; - } - - - @Override - public int indexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Float) { - int i = Floats.indexOf(array, (Float) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public int lastIndexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Float) { - int i = Floats.lastIndexOf(array, (Float) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public Float set(int index, Float element) { - checkElementIndex(index, size()); - float oldValue = array[start + index]; - // checkNotNull for GWT (do not optimize) - array[start + index] = checkNotNull(element); - return oldValue; - } - - - @Override - public List subList(int fromIndex, int toIndex) { - int size = size(); - checkPositionIndexes(fromIndex, toIndex, size); - if (fromIndex == toIndex) { - return Collections.emptyList(); - } - return new FloatArrayAsList(array, start + fromIndex, start + toIndex); - } - - - @Override - public boolean equals(Object object) { - if (object == this) { - return true; - } - if (object instanceof FloatArrayAsList) { - FloatArrayAsList that = (FloatArrayAsList) object; - int size = size(); - if (that.size() != size) { - return false; - } - for (int i = 0; i < size; i++) { - if (array[start + i] != that.array[that.start + i]) { - return false; - } - } - return true; - } - return super.equals(object); - } - - - @Override - public int hashCode() { - int result = 1; - for (int i = start; i < end; i++) { - result = 31 * result + Floats.hashCode(array[i]); - } - return result; - } - - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(size() * 12); - builder.append('[').append(array[start]); - for (int i = start + 1; i < end; i++) { - builder.append(", ").append(array[i]); - } - return builder.append(']').toString(); - } - - float[] toFloatArray() { - // Arrays.copyOfRange() is not available under GWT - int size = size(); - float[] result = new float[size]; - System.arraycopy(array, start, result, 0, size); - return result; - } - - private static final long serialVersionUID = 0; - } -} diff --git a/src/com/google/common/primitives/Ints.java b/src/com/google/common/primitives/Ints.java deleted file mode 100644 index 5752e492..00000000 --- a/src/com/google/common/primitives/Ints.java +++ /dev/null @@ -1,641 +0,0 @@ -/* - * Copyright (C) 2008 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkElementIndex; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkPositionIndexes; - -import com.google.common.annotations.Beta; -import com.google.common.annotations.GwtCompatible; -import com.google.common.annotations.GwtIncompatible; - -import java.io.Serializable; -import java.util.AbstractList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.RandomAccess; - -import javax.annotation.CheckForNull; - -/** - * Static utility methods pertaining to {@code int} primitives, that are not - * already found in either {@link Integer} or {@link Arrays}. - * - *

    See the Guava User Guide article on - * primitive utilities. - * - * @author Kevin Bourrillion - * @since 1.0 - */ -@GwtCompatible(emulated = true) -public final class Ints { - private Ints() {} - - /** - * The number of bytes required to represent a primitive {@code int} - * value. - */ - public static final int BYTES = Integer.SIZE / Byte.SIZE; - - /** - * The largest power of two that can be represented as an {@code int}. - * - * @since 10.0 - */ - public static final int MAX_POWER_OF_TWO = 1 << (Integer.SIZE - 2); - - /** - * Returns a hash code for {@code value}; equal to the result of invoking - * {@code ((Integer) value).hashCode()}. - * - * @param value a primitive {@code int} value - * @return a hash code for the value - */ - public static int hashCode(int value) { - return value; - } - - /** - * Returns the {@code int} value that is equal to {@code value}, if possible. - * - * @param value any value in the range of the {@code int} type - * @return the {@code int} value that equals {@code value} - * @throws IllegalArgumentException if {@code value} is greater than {@link - * Integer#MAX_VALUE} or less than {@link Integer#MIN_VALUE} - */ - public static int checkedCast(long value) { - int result = (int) value; - checkArgument(result == value, "Out of range: %s", value); - return result; - } - - /** - * Returns the {@code int} nearest in value to {@code value}. - * - * @param value any {@code long} value - * @return the same value cast to {@code int} if it is in the range of the - * {@code int} type, {@link Integer#MAX_VALUE} if it is too large, - * or {@link Integer#MIN_VALUE} if it is too small - */ - public static int saturatedCast(long value) { - if (value > Integer.MAX_VALUE) { - return Integer.MAX_VALUE; - } - if (value < Integer.MIN_VALUE) { - return Integer.MIN_VALUE; - } - return (int) value; - } - - /** - * Compares the two specified {@code int} values. The sign of the value - * returned is the same as that of {@code ((Integer) a).compareTo(b)}. - * - * @param a the first {@code int} to compare - * @param b the second {@code int} to compare - * @return a negative value if {@code a} is less than {@code b}; a positive - * value if {@code a} is greater than {@code b}; or zero if they are equal - */ - public static int compare(int a, int b) { - return (a < b) ? -1 : ((a > b) ? 1 : 0); - } - - /** - * Returns {@code true} if {@code target} is present as an element anywhere in - * {@code array}. - * - * @param array an array of {@code int} values, possibly empty - * @param target a primitive {@code int} value - * @return {@code true} if {@code array[i] == target} for some value of {@code - * i} - */ - public static boolean contains(int[] array, int target) { - for (int value : array) { - if (value == target) { - return true; - } - } - return false; - } - - /** - * Returns the index of the first appearance of the value {@code target} in - * {@code array}. - * - * @param array an array of {@code int} values, possibly empty - * @param target a primitive {@code int} value - * @return the least index {@code i} for which {@code array[i] == target}, or - * {@code -1} if no such index exists. - */ - public static int indexOf(int[] array, int target) { - return indexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int indexOf( - int[] array, int target, int start, int end) { - for (int i = start; i < end; i++) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the start position of the first occurrence of the specified {@code - * target} within {@code array}, or {@code -1} if there is no such occurrence. - * - *

    More formally, returns the lowest index {@code i} such that {@code - * java.util.Arrays.copyOfRange(array, i, i + target.length)} contains exactly - * the same elements as {@code target}. - * - * @param array the array to search for the sequence {@code target} - * @param target the array to search for as a sub-sequence of {@code array} - */ - public static int indexOf(int[] array, int[] target) { - checkNotNull(array, "array"); - checkNotNull(target, "target"); - if (target.length == 0) { - return 0; - } - - outer: - for (int i = 0; i < array.length - target.length + 1; i++) { - for (int j = 0; j < target.length; j++) { - if (array[i + j] != target[j]) { - continue outer; - } - } - return i; - } - return -1; - } - - /** - * Returns the index of the last appearance of the value {@code target} in - * {@code array}. - * - * @param array an array of {@code int} values, possibly empty - * @param target a primitive {@code int} value - * @return the greatest index {@code i} for which {@code array[i] == target}, - * or {@code -1} if no such index exists. - */ - public static int lastIndexOf(int[] array, int target) { - return lastIndexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int lastIndexOf( - int[] array, int target, int start, int end) { - for (int i = end - 1; i >= start; i--) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the least value present in {@code array}. - * - * @param array a nonempty array of {@code int} values - * @return the value present in {@code array} that is less than or equal to - * every other value in the array - * @throws IllegalArgumentException if {@code array} is empty - */ - public static int min(int... array) { - checkArgument(array.length > 0); - int min = array[0]; - for (int i = 1; i < array.length; i++) { - if (array[i] < min) { - min = array[i]; - } - } - return min; - } - - /** - * Returns the greatest value present in {@code array}. - * - * @param array a nonempty array of {@code int} values - * @return the value present in {@code array} that is greater than or equal to - * every other value in the array - * @throws IllegalArgumentException if {@code array} is empty - */ - public static int max(int... array) { - checkArgument(array.length > 0); - int max = array[0]; - for (int i = 1; i < array.length; i++) { - if (array[i] > max) { - max = array[i]; - } - } - return max; - } - - /** - * Returns the values from each provided array combined into a single array. - * For example, {@code concat(new int[] {a, b}, new int[] {}, new - * int[] {c}} returns the array {@code {a, b, c}}. - * - * @param arrays zero or more {@code int} arrays - * @return a single array containing all the values from the source arrays, in - * order - */ - public static int[] concat(int[]... arrays) { - int length = 0; - for (int[] array : arrays) { - length += array.length; - } - int[] result = new int[length]; - int pos = 0; - for (int[] array : arrays) { - System.arraycopy(array, 0, result, pos, array.length); - pos += array.length; - } - return result; - } - - /** - * Returns a big-endian representation of {@code value} in a 4-element byte - * array; equivalent to {@code ByteBuffer.allocate(4).putInt(value).array()}. - * For example, the input value {@code 0x12131415} would yield the byte array - * {@code {0x12, 0x13, 0x14, 0x15}}. - * - *

    If you need to convert and concatenate several values (possibly even of - * different types), use a shared {@link java.nio.ByteBuffer} instance, or use - * {@link com.google.common.io.ByteStreams#newDataOutput()} to get a growable - * buffer. - */ - @GwtIncompatible("doesn't work") - public static byte[] toByteArray(int value) { - return new byte[] { - (byte) (value >> 24), - (byte) (value >> 16), - (byte) (value >> 8), - (byte) value}; - } - - /** - * Returns the {@code int} value whose big-endian representation is stored in - * the first 4 bytes of {@code bytes}; equivalent to {@code - * ByteBuffer.wrap(bytes).getInt()}. For example, the input byte array {@code - * {0x12, 0x13, 0x14, 0x15, 0x33}} would yield the {@code int} value {@code - * 0x12131415}. - * - *

    Arguably, it's preferable to use {@link java.nio.ByteBuffer}; that - * library exposes much more flexibility at little cost in readability. - * - * @throws IllegalArgumentException if {@code bytes} has fewer than 4 elements - */ - @GwtIncompatible("doesn't work") - public static int fromByteArray(byte[] bytes) { - checkArgument(bytes.length >= BYTES, - "array too small: %s < %s", bytes.length, BYTES); - return fromBytes(bytes[0], bytes[1], bytes[2], bytes[3]); - } - - /** - * Returns the {@code int} value whose byte representation is the given 4 - * bytes, in big-endian order; equivalent to {@code Ints.fromByteArray(new - * byte[] {b1, b2, b3, b4})}. - * - * @since 7.0 - */ - @GwtIncompatible("doesn't work") - public static int fromBytes(byte b1, byte b2, byte b3, byte b4) { - return b1 << 24 | (b2 & 0xFF) << 16 | (b3 & 0xFF) << 8 | (b4 & 0xFF); - } - - /** - * Returns an array containing the same values as {@code array}, but - * guaranteed to be of a specified minimum length. If {@code array} already - * has a length of at least {@code minLength}, it is returned directly. - * Otherwise, a new array of size {@code minLength + padding} is returned, - * containing the values of {@code array}, and zeroes in the remaining places. - * - * @param array the source array - * @param minLength the minimum length the returned array must guarantee - * @param padding an extra amount to "grow" the array by if growth is - * necessary - * @throws IllegalArgumentException if {@code minLength} or {@code padding} is - * negative - * @return an array containing the values of {@code array}, with guaranteed - * minimum length {@code minLength} - */ - public static int[] ensureCapacity( - int[] array, int minLength, int padding) { - checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); - checkArgument(padding >= 0, "Invalid padding: %s", padding); - return (array.length < minLength) - ? copyOf(array, minLength + padding) - : array; - } - - // Arrays.copyOf() requires Java 6 - private static int[] copyOf(int[] original, int length) { - int[] copy = new int[length]; - System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); - return copy; - } - - /** - * Returns a string containing the supplied {@code int} values separated - * by {@code separator}. For example, {@code join("-", 1, 2, 3)} returns - * the string {@code "1-2-3"}. - * - * @param separator the text that should appear between consecutive values in - * the resulting string (but not at the start or end) - * @param array an array of {@code int} values, possibly empty - */ - public static String join(String separator, int... array) { - checkNotNull(separator); - if (array.length == 0) { - return ""; - } - - // For pre-sizing a builder, just get the right order of magnitude - StringBuilder builder = new StringBuilder(array.length * 5); - builder.append(array[0]); - for (int i = 1; i < array.length; i++) { - builder.append(separator).append(array[i]); - } - return builder.toString(); - } - - /** - * Returns a comparator that compares two {@code int} arrays - * lexicographically. That is, it compares, using {@link - * #compare(int, int)}), the first pair of values that follow any - * common prefix, or when one array is a prefix of the other, treats the - * shorter array as the lesser. For example, {@code [] < [1] < [1, 2] < [2]}. - * - *

    The returned comparator is inconsistent with {@link - * Object#equals(Object)} (since arrays support only identity equality), but - * it is consistent with {@link Arrays#equals(int[], int[])}. - * - * @see - * Lexicographical order article at Wikipedia - * @since 2.0 - */ - public static Comparator lexicographicalComparator() { - return LexicographicalComparator.INSTANCE; - } - - private enum LexicographicalComparator implements Comparator { - INSTANCE; - - public int compare(int[] left, int[] right) { - int minLength = Math.min(left.length, right.length); - for (int i = 0; i < minLength; i++) { - int result = Ints.compare(left[i], right[i]); - if (result != 0) { - return result; - } - } - return left.length - right.length; - } - } - - /** - * Returns an array containing each value of {@code collection}, converted to - * a {@code int} value in the manner of {@link Number#intValue}. - * - *

    Elements are copied from the argument collection as if by {@code - * collection.toArray()}. Calling this method is as thread-safe as calling - * that method. - * - * @param collection a collection of {@code Number} instances - * @return an array containing the same values as {@code collection}, in the - * same order, converted to primitives - * @throws NullPointerException if {@code collection} or any of its elements - * is null - * @since 1.0 (parameter was {@code Collection} before 12.0) - */ - public static int[] toArray(Collection collection) { - if (collection instanceof IntArrayAsList) { - return ((IntArrayAsList) collection).toIntArray(); - } - - Object[] boxedArray = collection.toArray(); - int len = boxedArray.length; - int[] array = new int[len]; - for (int i = 0; i < len; i++) { - // checkNotNull for GWT (do not optimize) - array[i] = ((Number) checkNotNull(boxedArray[i])).intValue(); - } - return array; - } - - /** - * Returns a fixed-size list backed by the specified array, similar to {@link - * Arrays#asList(Object[])}. The list supports {@link List#set(int, Object)}, - * but any attempt to set a value to {@code null} will result in a {@link - * NullPointerException}. - * - *

    The returned list maintains the values, but not the identities, of - * {@code Integer} objects written to or read from it. For example, whether - * {@code list.get(0) == list.get(0)} is true for the returned list is - * unspecified. - * - * @param backingArray the array to back the list - * @return a list view of the array - */ - public static List asList(int... backingArray) { - if (backingArray.length == 0) { - return Collections.emptyList(); - } - return new IntArrayAsList(backingArray); - } - - @GwtCompatible - private static class IntArrayAsList extends AbstractList - implements RandomAccess, Serializable { - final int[] array; - final int start; - final int end; - - IntArrayAsList(int[] array) { - this(array, 0, array.length); - } - - IntArrayAsList(int[] array, int start, int end) { - this.array = array; - this.start = start; - this.end = end; - } - - - @Override - public int size() { - return end - start; - } - - - @Override - public boolean isEmpty() { - return false; - } - - - @Override - public Integer get(int index) { - checkElementIndex(index, size()); - return array[start + index]; - } - - - @Override - public boolean contains(Object target) { - // Overridden to prevent a ton of boxing - return (target instanceof Integer) - && Ints.indexOf(array, (Integer) target, start, end) != -1; - } - - - @Override - public int indexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Integer) { - int i = Ints.indexOf(array, (Integer) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public int lastIndexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Integer) { - int i = Ints.lastIndexOf(array, (Integer) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public Integer set(int index, Integer element) { - checkElementIndex(index, size()); - int oldValue = array[start + index]; - // checkNotNull for GWT (do not optimize) - array[start + index] = checkNotNull(element); - return oldValue; - } - - - @Override - public List subList(int fromIndex, int toIndex) { - int size = size(); - checkPositionIndexes(fromIndex, toIndex, size); - if (fromIndex == toIndex) { - return Collections.emptyList(); - } - return new IntArrayAsList(array, start + fromIndex, start + toIndex); - } - - - @Override - public boolean equals(Object object) { - if (object == this) { - return true; - } - if (object instanceof IntArrayAsList) { - IntArrayAsList that = (IntArrayAsList) object; - int size = size(); - if (that.size() != size) { - return false; - } - for (int i = 0; i < size; i++) { - if (array[start + i] != that.array[that.start + i]) { - return false; - } - } - return true; - } - return super.equals(object); - } - - - @Override - public int hashCode() { - int result = 1; - for (int i = start; i < end; i++) { - result = 31 * result + Ints.hashCode(array[i]); - } - return result; - } - - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(size() * 5); - builder.append('[').append(array[start]); - for (int i = start + 1; i < end; i++) { - builder.append(", ").append(array[i]); - } - return builder.append(']').toString(); - } - - int[] toIntArray() { - // Arrays.copyOfRange() is not available under GWT - int size = size(); - int[] result = new int[size]; - System.arraycopy(array, start, result, 0, size); - return result; - } - - private static final long serialVersionUID = 0; - } - - /** - * Parses the specified string as a signed decimal integer value. The ASCII - * character {@code '-'} ('\u002D') is recognized as the - * minus sign. - * - *

    Unlike {@link Integer#parseInt(String)}, this method returns - * {@code null} instead of throwing an exception if parsing fails. - * - *

    Note that strings prefixed with ASCII {@code '+'} are rejected, even - * under JDK 7, despite the change to {@link Integer#parseInt(String)} for - * that version. - * - * @param string the string representation of an integer value - * @return the integer value represented by {@code string}, or {@code null} if - * {@code string} has a length of zero or cannot be parsed as an integer - * value - * @since 11.0 - */ - @Beta - @CheckForNull - @GwtIncompatible("TODO") - public static Integer tryParse(String string) { - return AndroidInteger.tryParse(string, 10); - } -} diff --git a/src/com/google/common/primitives/Longs.java b/src/com/google/common/primitives/Longs.java deleted file mode 100644 index b99f6db6..00000000 --- a/src/com/google/common/primitives/Longs.java +++ /dev/null @@ -1,596 +0,0 @@ -/* - * Copyright (C) 2008 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkElementIndex; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkPositionIndexes; - -import com.google.common.annotations.GwtCompatible; - -import java.io.Serializable; -import java.util.AbstractList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.RandomAccess; - -/** - * Static utility methods pertaining to {@code long} primitives, that are not - * already found in either {@link Long} or {@link Arrays}. - * - *

    See the Guava User Guide article on - * primitive utilities. - * - * @author Kevin Bourrillion - * @since 1.0 - */ -@GwtCompatible -public final class Longs { - private Longs() {} - - /** - * The number of bytes required to represent a primitive {@code long} - * value. - */ - public static final int BYTES = Long.SIZE / Byte.SIZE; - - /** - * The largest power of two that can be represented as a {@code long}. - * - * @since 10.0 - */ - public static final long MAX_POWER_OF_TWO = 1L << (Long.SIZE - 2); - - /** - * Returns a hash code for {@code value}; equal to the result of invoking - * {@code ((Long) value).hashCode()}. - * - *

    This method always return the value specified by {@link - * Long#hashCode()} in java, which might be different from - * {@code ((Long) value).hashCode()} in GWT because {@link Long#hashCode()} - * in GWT does not obey the JRE contract. - * - * @param value a primitive {@code long} value - * @return a hash code for the value - */ - public static int hashCode(long value) { - return (int) (value ^ (value >>> 32)); - } - - /** - * Compares the two specified {@code long} values. The sign of the value - * returned is the same as that of {@code ((Long) a).compareTo(b)}. - * - * @param a the first {@code long} to compare - * @param b the second {@code long} to compare - * @return a negative value if {@code a} is less than {@code b}; a positive - * value if {@code a} is greater than {@code b}; or zero if they are equal - */ - public static int compare(long a, long b) { - return (a < b) ? -1 : ((a > b) ? 1 : 0); - } - - /** - * Returns {@code true} if {@code target} is present as an element anywhere in - * {@code array}. - * - * @param array an array of {@code long} values, possibly empty - * @param target a primitive {@code long} value - * @return {@code true} if {@code array[i] == target} for some value of {@code - * i} - */ - public static boolean contains(long[] array, long target) { - for (long value : array) { - if (value == target) { - return true; - } - } - return false; - } - - /** - * Returns the index of the first appearance of the value {@code target} in - * {@code array}. - * - * @param array an array of {@code long} values, possibly empty - * @param target a primitive {@code long} value - * @return the least index {@code i} for which {@code array[i] == target}, or - * {@code -1} if no such index exists. - */ - public static int indexOf(long[] array, long target) { - return indexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int indexOf( - long[] array, long target, int start, int end) { - for (int i = start; i < end; i++) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the start position of the first occurrence of the specified {@code - * target} within {@code array}, or {@code -1} if there is no such occurrence. - * - *

    More formally, returns the lowest index {@code i} such that {@code - * java.util.Arrays.copyOfRange(array, i, i + target.length)} contains exactly - * the same elements as {@code target}. - * - * @param array the array to search for the sequence {@code target} - * @param target the array to search for as a sub-sequence of {@code array} - */ - public static int indexOf(long[] array, long[] target) { - checkNotNull(array, "array"); - checkNotNull(target, "target"); - if (target.length == 0) { - return 0; - } - - outer: - for (int i = 0; i < array.length - target.length + 1; i++) { - for (int j = 0; j < target.length; j++) { - if (array[i + j] != target[j]) { - continue outer; - } - } - return i; - } - return -1; - } - - /** - * Returns the index of the last appearance of the value {@code target} in - * {@code array}. - * - * @param array an array of {@code long} values, possibly empty - * @param target a primitive {@code long} value - * @return the greatest index {@code i} for which {@code array[i] == target}, - * or {@code -1} if no such index exists. - */ - public static int lastIndexOf(long[] array, long target) { - return lastIndexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int lastIndexOf( - long[] array, long target, int start, int end) { - for (int i = end - 1; i >= start; i--) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the least value present in {@code array}. - * - * @param array a nonempty array of {@code long} values - * @return the value present in {@code array} that is less than or equal to - * every other value in the array - * @throws IllegalArgumentException if {@code array} is empty - */ - public static long min(long... array) { - checkArgument(array.length > 0); - long min = array[0]; - for (int i = 1; i < array.length; i++) { - if (array[i] < min) { - min = array[i]; - } - } - return min; - } - - /** - * Returns the greatest value present in {@code array}. - * - * @param array a nonempty array of {@code long} values - * @return the value present in {@code array} that is greater than or equal to - * every other value in the array - * @throws IllegalArgumentException if {@code array} is empty - */ - public static long max(long... array) { - checkArgument(array.length > 0); - long max = array[0]; - for (int i = 1; i < array.length; i++) { - if (array[i] > max) { - max = array[i]; - } - } - return max; - } - - /** - * Returns the values from each provided array combined into a single array. - * For example, {@code concat(new long[] {a, b}, new long[] {}, new - * long[] {c}} returns the array {@code {a, b, c}}. - * - * @param arrays zero or more {@code long} arrays - * @return a single array containing all the values from the source arrays, in - * order - */ - public static long[] concat(long[]... arrays) { - int length = 0; - for (long[] array : arrays) { - length += array.length; - } - long[] result = new long[length]; - int pos = 0; - for (long[] array : arrays) { - System.arraycopy(array, 0, result, pos, array.length); - pos += array.length; - } - return result; - } - - /** - * Returns a big-endian representation of {@code value} in an 8-element byte - * array; equivalent to {@code ByteBuffer.allocate(8).putLong(value).array()}. - * For example, the input value {@code 0x1213141516171819L} would yield the - * byte array {@code {0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19}}. - * - *

    If you need to convert and concatenate several values (possibly even of - * different types), use a shared {@link java.nio.ByteBuffer} instance, or use - * {@link com.google.common.io.ByteStreams#newDataOutput()} to get a growable - * buffer. - */ - public static byte[] toByteArray(long value) { - // Note that this code needs to stay compatible with GWT, which has known - // bugs when narrowing byte casts of long values occur. - byte[] result = new byte[8]; - for (int i = 7; i >= 0; i--) { - result[i] = (byte) (value & 0xffL); - value >>= 8; - } - return result; - } - - /** - * Returns the {@code long} value whose big-endian representation is - * stored in the first 8 bytes of {@code bytes}; equivalent to {@code - * ByteBuffer.wrap(bytes).getLong()}. For example, the input byte array - * {@code {0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19}} would yield the - * {@code long} value {@code 0x1213141516171819L}. - * - *

    Arguably, it's preferable to use {@link java.nio.ByteBuffer}; that - * library exposes much more flexibility at little cost in readability. - * - * @throws IllegalArgumentException if {@code bytes} has fewer than 8 - * elements - */ - public static long fromByteArray(byte[] bytes) { - checkArgument(bytes.length >= BYTES, - "array too small: %s < %s", bytes.length, BYTES); - return fromBytes(bytes[0], bytes[1], bytes[2], bytes[3], - bytes[4], bytes[5], bytes[6], bytes[7]) ; - } - - /** - * Returns the {@code long} value whose byte representation is the given 8 - * bytes, in big-endian order; equivalent to {@code Longs.fromByteArray(new - * byte[] {b1, b2, b3, b4, b5, b6, b7, b8})}. - * - * @since 7.0 - */ - public static long fromBytes(byte b1, byte b2, byte b3, byte b4, - byte b5, byte b6, byte b7, byte b8) { - return (b1 & 0xFFL) << 56 - | (b2 & 0xFFL) << 48 - | (b3 & 0xFFL) << 40 - | (b4 & 0xFFL) << 32 - | (b5 & 0xFFL) << 24 - | (b6 & 0xFFL) << 16 - | (b7 & 0xFFL) << 8 - | (b8 & 0xFFL); - } - - /** - * Returns an array containing the same values as {@code array}, but - * guaranteed to be of a specified minimum length. If {@code array} already - * has a length of at least {@code minLength}, it is returned directly. - * Otherwise, a new array of size {@code minLength + padding} is returned, - * containing the values of {@code array}, and zeroes in the remaining places. - * - * @param array the source array - * @param minLength the minimum length the returned array must guarantee - * @param padding an extra amount to "grow" the array by if growth is - * necessary - * @throws IllegalArgumentException if {@code minLength} or {@code padding} is - * negative - * @return an array containing the values of {@code array}, with guaranteed - * minimum length {@code minLength} - */ - public static long[] ensureCapacity( - long[] array, int minLength, int padding) { - checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); - checkArgument(padding >= 0, "Invalid padding: %s", padding); - return (array.length < minLength) - ? copyOf(array, minLength + padding) - : array; - } - - // Arrays.copyOf() requires Java 6 - private static long[] copyOf(long[] original, int length) { - long[] copy = new long[length]; - System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); - return copy; - } - - /** - * Returns a string containing the supplied {@code long} values separated - * by {@code separator}. For example, {@code join("-", 1L, 2L, 3L)} returns - * the string {@code "1-2-3"}. - * - * @param separator the text that should appear between consecutive values in - * the resulting string (but not at the start or end) - * @param array an array of {@code long} values, possibly empty - */ - public static String join(String separator, long... array) { - checkNotNull(separator); - if (array.length == 0) { - return ""; - } - - // For pre-sizing a builder, just get the right order of magnitude - StringBuilder builder = new StringBuilder(array.length * 10); - builder.append(array[0]); - for (int i = 1; i < array.length; i++) { - builder.append(separator).append(array[i]); - } - return builder.toString(); - } - - /** - * Returns a comparator that compares two {@code long} arrays - * lexicographically. That is, it compares, using {@link - * #compare(long, long)}), the first pair of values that follow any - * common prefix, or when one array is a prefix of the other, treats the - * shorter array as the lesser. For example, - * {@code [] < [1L] < [1L, 2L] < [2L]}. - * - *

    The returned comparator is inconsistent with {@link - * Object#equals(Object)} (since arrays support only identity equality), but - * it is consistent with {@link Arrays#equals(long[], long[])}. - * - * @see - * Lexicographical order article at Wikipedia - * @since 2.0 - */ - public static Comparator lexicographicalComparator() { - return LexicographicalComparator.INSTANCE; - } - - private enum LexicographicalComparator implements Comparator { - INSTANCE; - - public int compare(long[] left, long[] right) { - int minLength = Math.min(left.length, right.length); - for (int i = 0; i < minLength; i++) { - int result = Longs.compare(left[i], right[i]); - if (result != 0) { - return result; - } - } - return left.length - right.length; - } - } - - /** - * Returns an array containing each value of {@code collection}, converted to - * a {@code long} value in the manner of {@link Number#longValue}. - * - *

    Elements are copied from the argument collection as if by {@code - * collection.toArray()}. Calling this method is as thread-safe as calling - * that method. - * - * @param collection a collection of {@code Number} instances - * @return an array containing the same values as {@code collection}, in the - * same order, converted to primitives - * @throws NullPointerException if {@code collection} or any of its elements - * is null - * @since 1.0 (parameter was {@code Collection} before 12.0) - */ - public static long[] toArray(Collection collection) { - if (collection instanceof LongArrayAsList) { - return ((LongArrayAsList) collection).toLongArray(); - } - - Object[] boxedArray = collection.toArray(); - int len = boxedArray.length; - long[] array = new long[len]; - for (int i = 0; i < len; i++) { - // checkNotNull for GWT (do not optimize) - array[i] = ((Number) checkNotNull(boxedArray[i])).longValue(); - } - return array; - } - - /** - * Returns a fixed-size list backed by the specified array, similar to {@link - * Arrays#asList(Object[])}. The list supports {@link List#set(int, Object)}, - * but any attempt to set a value to {@code null} will result in a {@link - * NullPointerException}. - * - *

    The returned list maintains the values, but not the identities, of - * {@code Long} objects written to or read from it. For example, whether - * {@code list.get(0) == list.get(0)} is true for the returned list is - * unspecified. - * - * @param backingArray the array to back the list - * @return a list view of the array - */ - public static List asList(long... backingArray) { - if (backingArray.length == 0) { - return Collections.emptyList(); - } - return new LongArrayAsList(backingArray); - } - - @GwtCompatible - private static class LongArrayAsList extends AbstractList - implements RandomAccess, Serializable { - final long[] array; - final int start; - final int end; - - LongArrayAsList(long[] array) { - this(array, 0, array.length); - } - - LongArrayAsList(long[] array, int start, int end) { - this.array = array; - this.start = start; - this.end = end; - } - - - @Override - public int size() { - return end - start; - } - - - @Override - public boolean isEmpty() { - return false; - } - - - @Override - public Long get(int index) { - checkElementIndex(index, size()); - return array[start + index]; - } - - - @Override - public boolean contains(Object target) { - // Overridden to prevent a ton of boxing - return (target instanceof Long) - && Longs.indexOf(array, (Long) target, start, end) != -1; - } - - - @Override - public int indexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Long) { - int i = Longs.indexOf(array, (Long) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public int lastIndexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Long) { - int i = Longs.lastIndexOf(array, (Long) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public Long set(int index, Long element) { - checkElementIndex(index, size()); - long oldValue = array[start + index]; - // checkNotNull for GWT (do not optimize) - array[start + index] = checkNotNull(element); - return oldValue; - } - - - @Override - public List subList(int fromIndex, int toIndex) { - int size = size(); - checkPositionIndexes(fromIndex, toIndex, size); - if (fromIndex == toIndex) { - return Collections.emptyList(); - } - return new LongArrayAsList(array, start + fromIndex, start + toIndex); - } - - - @Override - public boolean equals(Object object) { - if (object == this) { - return true; - } - if (object instanceof LongArrayAsList) { - LongArrayAsList that = (LongArrayAsList) object; - int size = size(); - if (that.size() != size) { - return false; - } - for (int i = 0; i < size; i++) { - if (array[start + i] != that.array[that.start + i]) { - return false; - } - } - return true; - } - return super.equals(object); - } - - - @Override - public int hashCode() { - int result = 1; - for (int i = start; i < end; i++) { - result = 31 * result + Longs.hashCode(array[i]); - } - return result; - } - - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(size() * 10); - builder.append('[').append(array[start]); - for (int i = start + 1; i < end; i++) { - builder.append(", ").append(array[i]); - } - return builder.append(']').toString(); - } - - long[] toLongArray() { - // Arrays.copyOfRange() is not available under GWT - int size = size(); - long[] result = new long[size]; - System.arraycopy(array, start, result, 0, size); - return result; - } - - private static final long serialVersionUID = 0; - } -} diff --git a/src/com/google/common/primitives/ParseRequest.java b/src/com/google/common/primitives/ParseRequest.java deleted file mode 100644 index 98f29b4d..00000000 --- a/src/com/google/common/primitives/ParseRequest.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import com.google.common.annotations.GwtCompatible; - -/** - * A string to be parsed as a number and the radix to interpret it in. - */ -@GwtCompatible -final class ParseRequest { - final String rawValue; - final int radix; - - private ParseRequest(String rawValue, int radix) { - this.rawValue = rawValue; - this.radix = radix; - } - - static ParseRequest fromString(String stringValue) { - if (stringValue.length() == 0) { - throw new NumberFormatException("empty string"); - } - - // Handle radix specifier if present - String rawValue; - int radix; - char firstChar = stringValue.charAt(0); - if (stringValue.startsWith("0x") || stringValue.startsWith("0X")) { - rawValue = stringValue.substring(2); - radix = 16; - } else if (firstChar == '#') { - rawValue = stringValue.substring(1); - radix = 16; - } else if (firstChar == '0' && stringValue.length() > 1) { - rawValue = stringValue.substring(1); - radix = 8; - } else { - rawValue = stringValue; - radix = 10; - } - - return new ParseRequest(rawValue, radix); - } -} diff --git a/src/com/google/common/primitives/Primitives.java b/src/com/google/common/primitives/Primitives.java deleted file mode 100644 index 08c6f31e..00000000 --- a/src/com/google/common/primitives/Primitives.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright (C) 2007 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -/** - * Contains static utility methods pertaining to primitive types and their - * corresponding wrapper types. - * - * @author Kevin Bourrillion - * @since 1.0 - */ -public final class Primitives { - private Primitives() {} - - /** A map from primitive types to their corresponding wrapper types. */ - private static final Map, Class> PRIMITIVE_TO_WRAPPER_TYPE; - - /** A map from wrapper types to their corresponding primitive types. */ - private static final Map, Class> WRAPPER_TO_PRIMITIVE_TYPE; - - // Sad that we can't use a BiMap. :( - - static { - Map, Class> primToWrap = new HashMap, Class>(16); - Map, Class> wrapToPrim = new HashMap, Class>(16); - - add(primToWrap, wrapToPrim, boolean.class, Boolean.class); - add(primToWrap, wrapToPrim, byte.class, Byte.class); - add(primToWrap, wrapToPrim, char.class, Character.class); - add(primToWrap, wrapToPrim, double.class, Double.class); - add(primToWrap, wrapToPrim, float.class, Float.class); - add(primToWrap, wrapToPrim, int.class, Integer.class); - add(primToWrap, wrapToPrim, long.class, Long.class); - add(primToWrap, wrapToPrim, short.class, Short.class); - add(primToWrap, wrapToPrim, void.class, Void.class); - - PRIMITIVE_TO_WRAPPER_TYPE = Collections.unmodifiableMap(primToWrap); - WRAPPER_TO_PRIMITIVE_TYPE = Collections.unmodifiableMap(wrapToPrim); - } - - private static void add(Map, Class> forward, - Map, Class> backward, Class key, Class value) { - forward.put(key, value); - backward.put(value, key); - } - - /** - * Returns an immutable set of all nine primitive types (including {@code - * void}). Note that a simpler way to test whether a {@code Class} instance - * is a member of this set is to call {@link Class#isPrimitive}. - * - * @since 3.0 - */ - public static Set> allPrimitiveTypes() { - return PRIMITIVE_TO_WRAPPER_TYPE.keySet(); - } - - /** - * Returns an immutable set of all nine primitive-wrapper types (including - * {@link Void}). - * - * @since 3.0 - */ - public static Set> allWrapperTypes() { - return WRAPPER_TO_PRIMITIVE_TYPE.keySet(); - } - - /** - * Returns {@code true} if {@code type} is one of the nine - * primitive-wrapper types, such as {@link Integer}. - * - * @see Class#isPrimitive - */ - public static boolean isWrapperType(Class type) { - return WRAPPER_TO_PRIMITIVE_TYPE.containsKey(checkNotNull(type)); - } - - /** - * Returns the corresponding wrapper type of {@code type} if it is a primitive - * type; otherwise returns {@code type} itself. Idempotent. - *

    -   *     wrap(int.class) == Integer.class
    -   *     wrap(Integer.class) == Integer.class
    -   *     wrap(String.class) == String.class
    -   * 
    - */ - public static Class wrap(Class type) { - checkNotNull(type); - - // cast is safe: long.class and Long.class are both of type Class - @SuppressWarnings("unchecked") - Class wrapped = (Class) PRIMITIVE_TO_WRAPPER_TYPE.get(type); - return (wrapped == null) ? type : wrapped; - } - - /** - * Returns the corresponding primitive type of {@code type} if it is a - * wrapper type; otherwise returns {@code type} itself. Idempotent. - *
    -   *     unwrap(Integer.class) == int.class
    -   *     unwrap(int.class) == int.class
    -   *     unwrap(String.class) == String.class
    -   * 
    - */ - public static Class unwrap(Class type) { - checkNotNull(type); - - // cast is safe: long.class and Long.class are both of type Class - @SuppressWarnings("unchecked") - Class unwrapped = (Class) WRAPPER_TO_PRIMITIVE_TYPE.get(type); - return (unwrapped == null) ? type : unwrapped; - } -} diff --git a/src/com/google/common/primitives/Shorts.java b/src/com/google/common/primitives/Shorts.java deleted file mode 100644 index b1413aea..00000000 --- a/src/com/google/common/primitives/Shorts.java +++ /dev/null @@ -1,614 +0,0 @@ -/* - * Copyright (C) 2008 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkElementIndex; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkPositionIndexes; - -import com.google.common.annotations.GwtCompatible; -import com.google.common.annotations.GwtIncompatible; - -import java.io.Serializable; -import java.util.AbstractList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.RandomAccess; - -/** - * Static utility methods pertaining to {@code short} primitives, that are not - * already found in either {@link Short} or {@link Arrays}. - * - *

    See the Guava User Guide article on - * primitive utilities. - * - * @author Kevin Bourrillion - * @since 1.0 - */ -@GwtCompatible(emulated = true) -public final class Shorts { - private Shorts() {} - - /** - * The number of bytes required to represent a primitive {@code short} - * value. - */ - public static final int BYTES = Short.SIZE / Byte.SIZE; - - /** - * The largest power of two that can be represented as a {@code short}. - * - * @since 10.0 - */ - public static final short MAX_POWER_OF_TWO = 1 << (Short.SIZE - 2); - - /** - * Returns a hash code for {@code value}; equal to the result of invoking - * {@code ((Short) value).hashCode()}. - * - * @param value a primitive {@code short} value - * @return a hash code for the value - */ - public static int hashCode(short value) { - return value; - } - - /** - * Returns the {@code short} value that is equal to {@code value}, if - * possible. - * - * @param value any value in the range of the {@code short} type - * @return the {@code short} value that equals {@code value} - * @throws IllegalArgumentException if {@code value} is greater than {@link - * Short#MAX_VALUE} or less than {@link Short#MIN_VALUE} - */ - public static short checkedCast(long value) { - short result = (short) value; - checkArgument(result == value, "Out of range: %s", value); - return result; - } - - /** - * Returns the {@code short} nearest in value to {@code value}. - * - * @param value any {@code long} value - * @return the same value cast to {@code short} if it is in the range of the - * {@code short} type, {@link Short#MAX_VALUE} if it is too large, - * or {@link Short#MIN_VALUE} if it is too small - */ - public static short saturatedCast(long value) { - if (value > Short.MAX_VALUE) { - return Short.MAX_VALUE; - } - if (value < Short.MIN_VALUE) { - return Short.MIN_VALUE; - } - return (short) value; - } - - /** - * Compares the two specified {@code short} values. The sign of the value - * returned is the same as that of {@code ((Short) a).compareTo(b)}. - * - * @param a the first {@code short} to compare - * @param b the second {@code short} to compare - * @return a negative value if {@code a} is less than {@code b}; a positive - * value if {@code a} is greater than {@code b}; or zero if they are equal - */ - public static int compare(short a, short b) { - return a - b; // safe due to restricted range - } - - /** - * Returns {@code true} if {@code target} is present as an element anywhere in - * {@code array}. - * - * @param array an array of {@code short} values, possibly empty - * @param target a primitive {@code short} value - * @return {@code true} if {@code array[i] == target} for some value of {@code - * i} - */ - public static boolean contains(short[] array, short target) { - for (short value : array) { - if (value == target) { - return true; - } - } - return false; - } - - /** - * Returns the index of the first appearance of the value {@code target} in - * {@code array}. - * - * @param array an array of {@code short} values, possibly empty - * @param target a primitive {@code short} value - * @return the least index {@code i} for which {@code array[i] == target}, or - * {@code -1} if no such index exists. - */ - public static int indexOf(short[] array, short target) { - return indexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int indexOf( - short[] array, short target, int start, int end) { - for (int i = start; i < end; i++) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the start position of the first occurrence of the specified {@code - * target} within {@code array}, or {@code -1} if there is no such occurrence. - * - *

    More formally, returns the lowest index {@code i} such that {@code - * java.util.Arrays.copyOfRange(array, i, i + target.length)} contains exactly - * the same elements as {@code target}. - * - * @param array the array to search for the sequence {@code target} - * @param target the array to search for as a sub-sequence of {@code array} - */ - public static int indexOf(short[] array, short[] target) { - checkNotNull(array, "array"); - checkNotNull(target, "target"); - if (target.length == 0) { - return 0; - } - - outer: - for (int i = 0; i < array.length - target.length + 1; i++) { - for (int j = 0; j < target.length; j++) { - if (array[i + j] != target[j]) { - continue outer; - } - } - return i; - } - return -1; - } - - /** - * Returns the index of the last appearance of the value {@code target} in - * {@code array}. - * - * @param array an array of {@code short} values, possibly empty - * @param target a primitive {@code short} value - * @return the greatest index {@code i} for which {@code array[i] == target}, - * or {@code -1} if no such index exists. - */ - public static int lastIndexOf(short[] array, short target) { - return lastIndexOf(array, target, 0, array.length); - } - - // TODO(kevinb): consider making this public - private static int lastIndexOf( - short[] array, short target, int start, int end) { - for (int i = end - 1; i >= start; i--) { - if (array[i] == target) { - return i; - } - } - return -1; - } - - /** - * Returns the least value present in {@code array}. - * - * @param array a nonempty array of {@code short} values - * @return the value present in {@code array} that is less than or equal to - * every other value in the array - * @throws IllegalArgumentException if {@code array} is empty - */ - public static short min(short... array) { - checkArgument(array.length > 0); - short min = array[0]; - for (int i = 1; i < array.length; i++) { - if (array[i] < min) { - min = array[i]; - } - } - return min; - } - - /** - * Returns the greatest value present in {@code array}. - * - * @param array a nonempty array of {@code short} values - * @return the value present in {@code array} that is greater than or equal to - * every other value in the array - * @throws IllegalArgumentException if {@code array} is empty - */ - public static short max(short... array) { - checkArgument(array.length > 0); - short max = array[0]; - for (int i = 1; i < array.length; i++) { - if (array[i] > max) { - max = array[i]; - } - } - return max; - } - - /** - * Returns the values from each provided array combined into a single array. - * For example, {@code concat(new short[] {a, b}, new short[] {}, new - * short[] {c}} returns the array {@code {a, b, c}}. - * - * @param arrays zero or more {@code short} arrays - * @return a single array containing all the values from the source arrays, in - * order - */ - public static short[] concat(short[]... arrays) { - int length = 0; - for (short[] array : arrays) { - length += array.length; - } - short[] result = new short[length]; - int pos = 0; - for (short[] array : arrays) { - System.arraycopy(array, 0, result, pos, array.length); - pos += array.length; - } - return result; - } - - /** - * Returns a big-endian representation of {@code value} in a 2-element byte - * array; equivalent to {@code - * ByteBuffer.allocate(2).putShort(value).array()}. For example, the input - * value {@code (short) 0x1234} would yield the byte array {@code {0x12, - * 0x34}}. - * - *

    If you need to convert and concatenate several values (possibly even of - * different types), use a shared {@link java.nio.ByteBuffer} instance, or use - * {@link com.google.common.io.ByteStreams#newDataOutput()} to get a growable - * buffer. - */ - @GwtIncompatible("doesn't work") - public static byte[] toByteArray(short value) { - return new byte[] { - (byte) (value >> 8), - (byte) value}; - } - - /** - * Returns the {@code short} value whose big-endian representation is - * stored in the first 2 bytes of {@code bytes}; equivalent to {@code - * ByteBuffer.wrap(bytes).getShort()}. For example, the input byte array - * {@code {0x54, 0x32}} would yield the {@code short} value {@code 0x5432}. - * - *

    Arguably, it's preferable to use {@link java.nio.ByteBuffer}; that - * library exposes much more flexibility at little cost in readability. - * - * @throws IllegalArgumentException if {@code bytes} has fewer than 2 - * elements - */ - @GwtIncompatible("doesn't work") - public static short fromByteArray(byte[] bytes) { - checkArgument(bytes.length >= BYTES, - "array too small: %s < %s", bytes.length, BYTES); - return fromBytes(bytes[0], bytes[1]); - } - - /** - * Returns the {@code short} value whose byte representation is the given 2 - * bytes, in big-endian order; equivalent to {@code Shorts.fromByteArray(new - * byte[] {b1, b2})}. - * - * @since 7.0 - */ - @GwtIncompatible("doesn't work") - public static short fromBytes(byte b1, byte b2) { - return (short) ((b1 << 8) | (b2 & 0xFF)); - } - - /** - * Returns an array containing the same values as {@code array}, but - * guaranteed to be of a specified minimum length. If {@code array} already - * has a length of at least {@code minLength}, it is returned directly. - * Otherwise, a new array of size {@code minLength + padding} is returned, - * containing the values of {@code array}, and zeroes in the remaining places. - * - * @param array the source array - * @param minLength the minimum length the returned array must guarantee - * @param padding an extra amount to "grow" the array by if growth is - * necessary - * @throws IllegalArgumentException if {@code minLength} or {@code padding} is - * negative - * @return an array containing the values of {@code array}, with guaranteed - * minimum length {@code minLength} - */ - public static short[] ensureCapacity( - short[] array, int minLength, int padding) { - checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); - checkArgument(padding >= 0, "Invalid padding: %s", padding); - return (array.length < minLength) - ? copyOf(array, minLength + padding) - : array; - } - - // Arrays.copyOf() requires Java 6 - private static short[] copyOf(short[] original, int length) { - short[] copy = new short[length]; - System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); - return copy; - } - - /** - * Returns a string containing the supplied {@code short} values separated - * by {@code separator}. For example, {@code join("-", (short) 1, (short) 2, - * (short) 3)} returns the string {@code "1-2-3"}. - * - * @param separator the text that should appear between consecutive values in - * the resulting string (but not at the start or end) - * @param array an array of {@code short} values, possibly empty - */ - public static String join(String separator, short... array) { - checkNotNull(separator); - if (array.length == 0) { - return ""; - } - - // For pre-sizing a builder, just get the right order of magnitude - StringBuilder builder = new StringBuilder(array.length * 6); - builder.append(array[0]); - for (int i = 1; i < array.length; i++) { - builder.append(separator).append(array[i]); - } - return builder.toString(); - } - - /** - * Returns a comparator that compares two {@code short} arrays - * lexicographically. That is, it compares, using {@link - * #compare(short, short)}), the first pair of values that follow any - * common prefix, or when one array is a prefix of the other, treats the - * shorter array as the lesser. For example, {@code [] < [(short) 1] < - * [(short) 1, (short) 2] < [(short) 2]}. - * - *

    The returned comparator is inconsistent with {@link - * Object#equals(Object)} (since arrays support only identity equality), but - * it is consistent with {@link Arrays#equals(short[], short[])}. - * - * @see - * Lexicographical order article at Wikipedia - * @since 2.0 - */ - public static Comparator lexicographicalComparator() { - return LexicographicalComparator.INSTANCE; - } - - private enum LexicographicalComparator implements Comparator { - INSTANCE; - - public int compare(short[] left, short[] right) { - int minLength = Math.min(left.length, right.length); - for (int i = 0; i < minLength; i++) { - int result = Shorts.compare(left[i], right[i]); - if (result != 0) { - return result; - } - } - return left.length - right.length; - } - } - - /** - * Returns an array containing each value of {@code collection}, converted to - * a {@code short} value in the manner of {@link Number#shortValue}. - * - *

    Elements are copied from the argument collection as if by {@code - * collection.toArray()}. Calling this method is as thread-safe as calling - * that method. - * - * @param collection a collection of {@code Number} instances - * @return an array containing the same values as {@code collection}, in the - * same order, converted to primitives - * @throws NullPointerException if {@code collection} or any of its elements - * is null - * @since 1.0 (parameter was {@code Collection} before 12.0) - */ - public static short[] toArray(Collection collection) { - if (collection instanceof ShortArrayAsList) { - return ((ShortArrayAsList) collection).toShortArray(); - } - - Object[] boxedArray = collection.toArray(); - int len = boxedArray.length; - short[] array = new short[len]; - for (int i = 0; i < len; i++) { - // checkNotNull for GWT (do not optimize) - array[i] = ((Number) checkNotNull(boxedArray[i])).shortValue(); - } - return array; - } - - /** - * Returns a fixed-size list backed by the specified array, similar to {@link - * Arrays#asList(Object[])}. The list supports {@link List#set(int, Object)}, - * but any attempt to set a value to {@code null} will result in a {@link - * NullPointerException}. - * - *

    The returned list maintains the values, but not the identities, of - * {@code Short} objects written to or read from it. For example, whether - * {@code list.get(0) == list.get(0)} is true for the returned list is - * unspecified. - * - * @param backingArray the array to back the list - * @return a list view of the array - */ - public static List asList(short... backingArray) { - if (backingArray.length == 0) { - return Collections.emptyList(); - } - return new ShortArrayAsList(backingArray); - } - - @GwtCompatible - private static class ShortArrayAsList extends AbstractList - implements RandomAccess, Serializable { - final short[] array; - final int start; - final int end; - - ShortArrayAsList(short[] array) { - this(array, 0, array.length); - } - - ShortArrayAsList(short[] array, int start, int end) { - this.array = array; - this.start = start; - this.end = end; - } - - - @Override - public int size() { - return end - start; - } - - - @Override - public boolean isEmpty() { - return false; - } - - - @Override - public Short get(int index) { - checkElementIndex(index, size()); - return array[start + index]; - } - - - @Override - public boolean contains(Object target) { - // Overridden to prevent a ton of boxing - return (target instanceof Short) - && Shorts.indexOf(array, (Short) target, start, end) != -1; - } - - - @Override - public int indexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Short) { - int i = Shorts.indexOf(array, (Short) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public int lastIndexOf(Object target) { - // Overridden to prevent a ton of boxing - if (target instanceof Short) { - int i = Shorts.lastIndexOf(array, (Short) target, start, end); - if (i >= 0) { - return i - start; - } - } - return -1; - } - - - @Override - public Short set(int index, Short element) { - checkElementIndex(index, size()); - short oldValue = array[start + index]; - // checkNotNull for GWT (do not optimize) - array[start + index] = checkNotNull(element); - return oldValue; - } - - - @Override - public List subList(int fromIndex, int toIndex) { - int size = size(); - checkPositionIndexes(fromIndex, toIndex, size); - if (fromIndex == toIndex) { - return Collections.emptyList(); - } - return new ShortArrayAsList(array, start + fromIndex, start + toIndex); - } - - - @Override - public boolean equals(Object object) { - if (object == this) { - return true; - } - if (object instanceof ShortArrayAsList) { - ShortArrayAsList that = (ShortArrayAsList) object; - int size = size(); - if (that.size() != size) { - return false; - } - for (int i = 0; i < size; i++) { - if (array[start + i] != that.array[that.start + i]) { - return false; - } - } - return true; - } - return super.equals(object); - } - - - @Override - public int hashCode() { - int result = 1; - for (int i = start; i < end; i++) { - result = 31 * result + Shorts.hashCode(array[i]); - } - return result; - } - - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(size() * 6); - builder.append('[').append(array[start]); - for (int i = start + 1; i < end; i++) { - builder.append(", ").append(array[i]); - } - return builder.append(']').toString(); - } - - short[] toShortArray() { - // Arrays.copyOfRange() is not available under GWT - int size = size(); - short[] result = new short[size]; - System.arraycopy(array, start, result, 0, size); - return result; - } - - private static final long serialVersionUID = 0; - } -} diff --git a/src/com/google/common/primitives/SignedBytes.java b/src/com/google/common/primitives/SignedBytes.java deleted file mode 100644 index 45545aec..00000000 --- a/src/com/google/common/primitives/SignedBytes.java +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright (C) 2009 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.annotations.GwtCompatible; - -import java.util.Comparator; - -/** - * Static utility methods pertaining to {@code byte} primitives that - * interpret values as signed. The corresponding methods that treat the values - * as unsigned are found in {@link UnsignedBytes}, and the methods for which - * signedness is not an issue are in {@link Bytes}. - * - *

    See the Guava User Guide article on - * primitive utilities. - * - * @author Kevin Bourrillion - * @since 1.0 - */ -// TODO(kevinb): how to prevent warning on UnsignedBytes when building GWT -// javadoc? -@GwtCompatible -public final class SignedBytes { - private SignedBytes() {} - - /** - * The largest power of two that can be represented as a signed {@code byte}. - * - * @since 10.0 - */ - public static final byte MAX_POWER_OF_TWO = 1 << 6; - - /** - * Returns the {@code byte} value that is equal to {@code value}, if possible. - * - * @param value any value in the range of the {@code byte} type - * @return the {@code byte} value that equals {@code value} - * @throws IllegalArgumentException if {@code value} is greater than {@link - * Byte#MAX_VALUE} or less than {@link Byte#MIN_VALUE} - */ - public static byte checkedCast(long value) { - byte result = (byte) value; - checkArgument(result == value, "Out of range: %s", value); - return result; - } - - /** - * Returns the {@code byte} nearest in value to {@code value}. - * - * @param value any {@code long} value - * @return the same value cast to {@code byte} if it is in the range of the - * {@code byte} type, {@link Byte#MAX_VALUE} if it is too large, - * or {@link Byte#MIN_VALUE} if it is too small - */ - public static byte saturatedCast(long value) { - if (value > Byte.MAX_VALUE) { - return Byte.MAX_VALUE; - } - if (value < Byte.MIN_VALUE) { - return Byte.MIN_VALUE; - } - return (byte) value; - } - - /** - * Compares the two specified {@code byte} values. The sign of the value - * returned is the same as that of {@code ((Byte) a).compareTo(b)}. - * - * @param a the first {@code byte} to compare - * @param b the second {@code byte} to compare - * @return a negative value if {@code a} is less than {@code b}; a positive - * value if {@code a} is greater than {@code b}; or zero if they are equal - */ - public static int compare(byte a, byte b) { - return a - b; // safe due to restricted range - } - - /** - * Returns the least value present in {@code array}. - * - * @param array a nonempty array of {@code byte} values - * @return the value present in {@code array} that is less than or equal to - * every other value in the array - * @throws IllegalArgumentException if {@code array} is empty - */ - public static byte min(byte... array) { - checkArgument(array.length > 0); - byte min = array[0]; - for (int i = 1; i < array.length; i++) { - if (array[i] < min) { - min = array[i]; - } - } - return min; - } - - /** - * Returns the greatest value present in {@code array}. - * - * @param array a nonempty array of {@code byte} values - * @return the value present in {@code array} that is greater than or equal to - * every other value in the array - * @throws IllegalArgumentException if {@code array} is empty - */ - public static byte max(byte... array) { - checkArgument(array.length > 0); - byte max = array[0]; - for (int i = 1; i < array.length; i++) { - if (array[i] > max) { - max = array[i]; - } - } - return max; - } - - /** - * Returns a string containing the supplied {@code byte} values separated - * by {@code separator}. For example, {@code join(":", 0x01, 0x02, -0x01)} - * returns the string {@code "1:2:-1"}. - * - * @param separator the text that should appear between consecutive values in - * the resulting string (but not at the start or end) - * @param array an array of {@code byte} values, possibly empty - */ - public static String join(String separator, byte... array) { - checkNotNull(separator); - if (array.length == 0) { - return ""; - } - - // For pre-sizing a builder, just get the right order of magnitude - StringBuilder builder = new StringBuilder(array.length * 5); - builder.append(array[0]); - for (int i = 1; i < array.length; i++) { - builder.append(separator).append(array[i]); - } - return builder.toString(); - } - - /** - * Returns a comparator that compares two {@code byte} arrays - * lexicographically. That is, it compares, using {@link - * #compare(byte, byte)}), the first pair of values that follow any common - * prefix, or when one array is a prefix of the other, treats the shorter - * array as the lesser. For example, {@code [] < [0x01] < [0x01, 0x80] < - * [0x01, 0x7F] < [0x02]}. Values are treated as signed. - * - *

    The returned comparator is inconsistent with {@link - * Object#equals(Object)} (since arrays support only identity equality), but - * it is consistent with {@link java.util.Arrays#equals(byte[], byte[])}. - * - * @see - * Lexicographical order article at Wikipedia - * @since 2.0 - */ - public static Comparator lexicographicalComparator() { - return LexicographicalComparator.INSTANCE; - } - - private enum LexicographicalComparator implements Comparator { - INSTANCE; - - public int compare(byte[] left, byte[] right) { - int minLength = Math.min(left.length, right.length); - for (int i = 0; i < minLength; i++) { - int result = SignedBytes.compare(left[i], right[i]); - if (result != 0) { - return result; - } - } - return left.length - right.length; - } - } -} diff --git a/src/com/google/common/primitives/UnsignedInteger.java b/src/com/google/common/primitives/UnsignedInteger.java deleted file mode 100644 index 285f5bc6..00000000 --- a/src/com/google/common/primitives/UnsignedInteger.java +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.primitives.UnsignedInts.INT_MASK; -import static com.google.common.primitives.UnsignedInts.compare; -import static com.google.common.primitives.UnsignedInts.toLong; - -import com.google.common.annotations.Beta; -import com.google.common.annotations.GwtCompatible; -import com.google.common.annotations.GwtIncompatible; - -import java.math.BigInteger; - -import javax.annotation.Nullable; - -/** - * A wrapper class for unsigned {@code int} values, supporting arithmetic operations. - * - *

    In some cases, when speed is more important than code readability, it may be faster simply to - * treat primitive {@code int} values as unsigned, using the methods from {@link UnsignedInts}. - * - *

    See the Guava User Guide article on - * unsigned primitive utilities. - * - * @author Louis Wasserman - * @since 11.0 - */ -@Beta -@GwtCompatible(emulated = true) -public final class UnsignedInteger extends Number implements Comparable { - public static final UnsignedInteger ZERO = asUnsigned(0); - public static final UnsignedInteger ONE = asUnsigned(1); - public static final UnsignedInteger MAX_VALUE = asUnsigned(-1); - - private final int value; - - private UnsignedInteger(int value) { - this.value = value & 0xffffffff; - } - - /** - * Returns an {@code UnsignedInteger} that, when treated as signed, is - * equal to {@code value}. - */ - public static UnsignedInteger asUnsigned(int value) { - return new UnsignedInteger(value); - } - - /** - * Returns an {@code UnsignedInteger} that is equal to {@code value}, - * if possible. The inverse operation of {@link #longValue()}. - */ - public static UnsignedInteger valueOf(long value) { - checkArgument((value & INT_MASK) == value, - "value (%s) is outside the range for an unsigned integer value", value); - return asUnsigned((int) value); - } - - /** - * Returns a {@code UnsignedInteger} representing the same value as the specified - * {@link BigInteger}. This is the inverse operation of {@link #bigIntegerValue()}. - * - * @throws IllegalArgumentException if {@code value} is negative or {@code value >= 2^32} - */ - public static UnsignedInteger valueOf(BigInteger value) { - checkNotNull(value); - checkArgument(value.signum() >= 0 && value.bitLength() <= Integer.SIZE, - "value (%s) is outside the range for an unsigned integer value", value); - return asUnsigned(value.intValue()); - } - - /** - * Returns an {@code UnsignedInteger} holding the value of the specified {@code String}, parsed - * as an unsigned {@code int} value. - * - * @throws NumberFormatException if the string does not contain a parsable unsigned {@code int} - * value - */ - public static UnsignedInteger valueOf(String string) { - return valueOf(string, 10); - } - - /** - * Returns an {@code UnsignedInteger} holding the value of the specified {@code String}, parsed - * as an unsigned {@code int} value in the specified radix. - * - * @throws NumberFormatException if the string does not contain a parsable unsigned {@code int} - * value - */ - public static UnsignedInteger valueOf(String string, int radix) { - return asUnsigned(UnsignedInts.parseUnsignedInt(string, radix)); - } - - /** - * Returns the result of adding this and {@code val}. If the result would have more than 32 bits, - * returns the low 32 bits of the result. - */ - public UnsignedInteger add(UnsignedInteger val) { - checkNotNull(val); - return asUnsigned(this.value + val.value); - } - - /** - * Returns the result of subtracting this and {@code val}. If the result would be negative, - * returns the low 32 bits of the result. - */ - public UnsignedInteger subtract(UnsignedInteger val) { - checkNotNull(val); - return asUnsigned(this.value - val.value); - } - - /** - * Returns the result of multiplying this and {@code val}. If the result would have more than 32 - * bits, returns the low 32 bits of the result. - */ - @GwtIncompatible("Does not truncate correctly") - public UnsignedInteger multiply(UnsignedInteger val) { - checkNotNull(val); - return asUnsigned(value * val.value); - } - - /** - * Returns the result of dividing this by {@code val}. - */ - public UnsignedInteger divide(UnsignedInteger val) { - checkNotNull(val); - return asUnsigned(UnsignedInts.divide(value, val.value)); - } - - /** - * Returns the remainder of dividing this by {@code val}. - */ - public UnsignedInteger remainder(UnsignedInteger val) { - checkNotNull(val); - return asUnsigned(UnsignedInts.remainder(value, val.value)); - } - - /** - * Returns the value of this {@code UnsignedInteger} as an {@code int}. This is an inverse - * operation to {@link #asUnsigned}. - * - *

    Note that if this {@code UnsignedInteger} holds a value {@code >= 2^31}, the returned value - * will be equal to {@code this - 2^32}. - */ - - @Override - public int intValue() { - return value; - } - - /** - * Returns the value of this {@code UnsignedInteger} as a {@code long}. - */ - - @Override - public long longValue() { - return toLong(value); - } - - /** - * Returns the value of this {@code UnsignedInteger} as a {@code float}, analogous to a widening - * primitive conversion from {@code int} to {@code float}, and correctly rounded. - */ - - @Override - public float floatValue() { - return longValue(); - } - - /** - * Returns the value of this {@code UnsignedInteger} as a {@code float}, analogous to a widening - * primitive conversion from {@code int} to {@code double}, and correctly rounded. - */ - - @Override - public double doubleValue() { - return longValue(); - } - - /** - * Returns the value of this {@code UnsignedInteger} as a {@link BigInteger}. - */ - public BigInteger bigIntegerValue() { - return BigInteger.valueOf(longValue()); - } - - /** - * Compares this unsigned integer to another unsigned integer. - * Returns {@code 0} if they are equal, a negative number if {@code this < other}, - * and a positive number if {@code this > other}. - */ - public int compareTo(UnsignedInteger other) { - checkNotNull(other); - return compare(value, other.value); - } - - - @Override - public int hashCode() { - return value; - } - - - @Override - public boolean equals(@Nullable Object obj) { - if (obj instanceof UnsignedInteger) { - UnsignedInteger other = (UnsignedInteger) obj; - return value == other.value; - } - return false; - } - - /** - * Returns a string representation of the {@code UnsignedInteger} value, in base 10. - */ - - @Override - public String toString() { - return toString(10); - } - - /** - * Returns a string representation of the {@code UnsignedInteger} value, in base {@code radix}. - * If {@code radix < Character.MIN_RADIX} or {@code radix > Character.MAX_RADIX}, the radix - * {@code 10} is used. - */ - public String toString(int radix) { - return UnsignedInts.toString(value, radix); - } -} diff --git a/src/com/google/common/primitives/UnsignedInts.java b/src/com/google/common/primitives/UnsignedInts.java deleted file mode 100644 index 55fcab31..00000000 --- a/src/com/google/common/primitives/UnsignedInts.java +++ /dev/null @@ -1,274 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.annotations.Beta; -import com.google.common.annotations.GwtCompatible; - -import java.util.Arrays; -import java.util.Comparator; - -/** - * Static utility methods pertaining to {@code int} primitives that interpret values as - * unsigned (that is, any negative value {@code x} is treated as the positive value - * {@code 2^32 + x}). The methods for which signedness is not an issue are in {@link Ints}, as well - * as signed versions of methods for which signedness is an issue. - * - *

    In addition, this class provides several static methods for converting an {@code int} to a - * {@code String} and a {@code String} to an {@code int} that treat the {@code int} as an unsigned - * number. - * - *

    Users of these utilities must be extremely careful not to mix up signed and unsigned - * {@code int} values. When possible, it is recommended that the {@link UnsignedInteger} wrapper - * class be used, at a small efficiency penalty, to enforce the distinction in the type system. - * - *

    See the Guava User Guide article on - * unsigned primitive utilities. - * - * @author Louis Wasserman - * @since 11.0 - */ -@Beta -@GwtCompatible -public final class UnsignedInts { - static final long INT_MASK = 0xffffffffL; - - private UnsignedInts() {} - - static int flip(int value) { - return value ^ Integer.MIN_VALUE; - } - - /** - * Compares the two specified {@code int} values, treating them as unsigned values between - * {@code 0} and {@code 2^32 - 1} inclusive. - * - * @param a the first unsigned {@code int} to compare - * @param b the second unsigned {@code int} to compare - * @return a negative value if {@code a} is less than {@code b}; a positive value if {@code a} is - * greater than {@code b}; or zero if they are equal - */ - public static int compare(int a, int b) { - return Ints.compare(flip(a), flip(b)); - } - - /** - * Returns the value of the given {@code int} as a {@code long}, when treated as unsigned. - */ - public static long toLong(int value) { - return value & INT_MASK; - } - - /** - * Returns the least value present in {@code array}, treating values as unsigned. - * - * @param array a nonempty array of unsigned {@code int} values - * @return the value present in {@code array} that is less than or equal to every other value in - * the array according to {@link #compare} - * @throws IllegalArgumentException if {@code array} is empty - */ - public static int min(int... array) { - checkArgument(array.length > 0); - int min = flip(array[0]); - for (int i = 1; i < array.length; i++) { - int next = flip(array[i]); - if (next < min) { - min = next; - } - } - return flip(min); - } - - /** - * Returns the greatest value present in {@code array}, treating values as unsigned. - * - * @param array a nonempty array of unsigned {@code int} values - * @return the value present in {@code array} that is greater than or equal to every other value - * in the array according to {@link #compare} - * @throws IllegalArgumentException if {@code array} is empty - */ - public static int max(int... array) { - checkArgument(array.length > 0); - int max = flip(array[0]); - for (int i = 1; i < array.length; i++) { - int next = flip(array[i]); - if (next > max) { - max = next; - } - } - return flip(max); - } - - /** - * Returns a string containing the supplied unsigned {@code int} values separated by - * {@code separator}. For example, {@code join("-", 1, 2, 3)} returns the string {@code "1-2-3"}. - * - * @param separator the text that should appear between consecutive values in the resulting - * string (but not at the start or end) - * @param array an array of unsigned {@code int} values, possibly empty - */ - public static String join(String separator, int... array) { - checkNotNull(separator); - if (array.length == 0) { - return ""; - } - - // For pre-sizing a builder, just get the right order of magnitude - StringBuilder builder = new StringBuilder(array.length * 5); - builder.append(toString(array[0])); - for (int i = 1; i < array.length; i++) { - builder.append(separator).append(toString(array[i])); - } - return builder.toString(); - } - - /** - * Returns a comparator that compares two arrays of unsigned {@code int} values lexicographically. - * That is, it compares, using {@link #compare(int, int)}), the first pair of values that follow - * any common prefix, or when one array is a prefix of the other, treats the shorter array as the - * lesser. For example, {@code [] < [1] < [1, 2] < [2] < [1 << 31]}. - * - *

    The returned comparator is inconsistent with {@link Object#equals(Object)} (since arrays - * support only identity equality), but it is consistent with {@link Arrays#equals(int[], int[])}. - * - * @see Lexicographical order - * article at Wikipedia - */ - public static Comparator lexicographicalComparator() { - return LexicographicalComparator.INSTANCE; - } - - enum LexicographicalComparator implements Comparator { - INSTANCE; - - public int compare(int[] left, int[] right) { - int minLength = Math.min(left.length, right.length); - for (int i = 0; i < minLength; i++) { - if (left[i] != right[i]) { - return UnsignedInts.compare(left[i], right[i]); - } - } - return left.length - right.length; - } - } - - /** - * Returns dividend / divisor, where the dividend and divisor are treated as unsigned 32-bit - * quantities. - * - * @param dividend the dividend (numerator) - * @param divisor the divisor (denominator) - * @throws ArithmeticException if divisor is 0 - */ - public static int divide(int dividend, int divisor) { - return (int) (toLong(dividend) / toLong(divisor)); - } - - /** - * Returns dividend % divisor, where the dividend and divisor are treated as unsigned 32-bit - * quantities. - * - * @param dividend the dividend (numerator) - * @param divisor the divisor (denominator) - * @throws ArithmeticException if divisor is 0 - */ - public static int remainder(int dividend, int divisor) { - return (int) (toLong(dividend) % toLong(divisor)); - } - - /** - * Returns the unsigned {@code int} value represented by the given string. - * - * Accepts a decimal, hexadecimal, or octal number given by specifying the following prefix: - * - *

      - *
    • {@code 0x}HexDigits - *
    • {@code 0X}HexDigits - *
    • {@code #}HexDigits - *
    • {@code 0}OctalDigits - *
    - * - * @throws NumberFormatException if the string does not contain a valid unsigned {@code int} - * value - * @since 13.0 - */ - public static int decode(String stringValue) { - ParseRequest request = ParseRequest.fromString(stringValue); - - try { - return parseUnsignedInt(request.rawValue, request.radix); - } catch (NumberFormatException e) { - NumberFormatException decodeException = - new NumberFormatException("Error parsing value: " + stringValue); - decodeException.initCause(e); - throw decodeException; - } - } - - /** - * Returns the unsigned {@code int} value represented by the given decimal string. - * - * @throws NumberFormatException if the string does not contain a valid unsigned integer, or if - * the value represented is too large to fit in an unsigned {@code int}. - * @throws NullPointerException if {@code s} is null - */ - public static int parseUnsignedInt(String s) { - return parseUnsignedInt(s, 10); - } - - /** - * Returns the unsigned {@code int} value represented by a string with the given radix. - * - * @param string the string containing the unsigned integer representation to be parsed. - * @param radix the radix to use while parsing {@code s}; must be between - * {@link Character#MIN_RADIX} and {@link Character#MAX_RADIX}. - * @throws NumberFormatException if the string does not contain a valid unsigned {@code int}, or - * if supplied radix is invalid. - */ - public static int parseUnsignedInt(String string, int radix) { - checkNotNull(string); - long result = Long.parseLong(string, radix); - if ((result & INT_MASK) != result) { - throw new NumberFormatException("Input " + string + " in base " + radix - + " is not in the range of an unsigned integer"); - } - return (int) result; - } - - /** - * Returns a string representation of x, where x is treated as unsigned. - */ - public static String toString(int x) { - return toString(x, 10); - } - - /** - * Returns a string representation of {@code x} for the given radix, where {@code x} is treated - * as unsigned. - * - * @param x the value to convert to a string. - * @param radix the radix to use while working with {@code x} - * @throws IllegalArgumentException if {@code radix} is not between {@link Character#MIN_RADIX} - * and {@link Character#MAX_RADIX}. - */ - public static String toString(int x, int radix) { - long asLong = x & INT_MASK; - return Long.toString(asLong, radix); - } -} diff --git a/src/com/google/common/primitives/UnsignedLong.java b/src/com/google/common/primitives/UnsignedLong.java deleted file mode 100644 index 456f2d95..00000000 --- a/src/com/google/common/primitives/UnsignedLong.java +++ /dev/null @@ -1,249 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.annotations.Beta; -import com.google.common.annotations.GwtCompatible; - -import java.io.Serializable; -import java.math.BigInteger; - -import javax.annotation.Nullable; - -/** - * A wrapper class for unsigned {@code long} values, supporting arithmetic operations. - * - *

    In some cases, when speed is more important than code readability, it may be faster simply to - * treat primitive {@code long} values as unsigned, using the methods from {@link UnsignedLongs}. - * - *

    See the Guava User Guide article on - * unsigned primitive utilities. - * - * @author Louis Wasserman - * @author Colin Evans - * @since 11.0 - */ -@Beta -@GwtCompatible(serializable = true) -public final class UnsignedLong extends Number implements Comparable, Serializable { - - private static final long UNSIGNED_MASK = 0x7fffffffffffffffL; - - public static final UnsignedLong ZERO = new UnsignedLong(0); - public static final UnsignedLong ONE = new UnsignedLong(1); - public static final UnsignedLong MAX_VALUE = new UnsignedLong(-1L); - - private final long value; - - private UnsignedLong(long value) { - this.value = value; - } - - /** - * Returns an {@code UnsignedLong} that, when treated as signed, is equal to {@code value}. The - * inverse operation is {@link #longValue()}. - * - *

    Put another way, if {@code value} is negative, the returned result will be equal to - * {@code 2^64 + value}; otherwise, the returned result will be equal to {@code value}. - */ - public static UnsignedLong asUnsigned(long value) { - return new UnsignedLong(value); - } - - /** - * Returns a {@code UnsignedLong} representing the same value as the specified {@code BigInteger} - * . This is the inverse operation of {@link #bigIntegerValue()}. - * - * @throws IllegalArgumentException if {@code value} is negative or {@code value >= 2^64} - */ - public static UnsignedLong valueOf(BigInteger value) { - checkNotNull(value); - checkArgument(value.signum() >= 0 && value.bitLength() <= Long.SIZE, - "value (%s) is outside the range for an unsigned long value", value); - return asUnsigned(value.longValue()); - } - - /** - * Returns an {@code UnsignedLong} holding the value of the specified {@code String}, parsed as - * an unsigned {@code long} value. - * - * @throws NumberFormatException if the string does not contain a parsable unsigned {@code long} - * value - */ - public static UnsignedLong valueOf(String string) { - return valueOf(string, 10); - } - - /** - * Returns an {@code UnsignedLong} holding the value of the specified {@code String}, parsed as - * an unsigned {@code long} value in the specified radix. - * - * @throws NumberFormatException if the string does not contain a parsable unsigned {@code long} - * value, or {@code radix} is not between {@link Character#MIN_RADIX} and - * {@link Character#MAX_RADIX} - */ - public static UnsignedLong valueOf(String string, int radix) { - return asUnsigned(UnsignedLongs.parseUnsignedLong(string, radix)); - } - - /** - * Returns the result of adding this and {@code val}. If the result would have more than 64 bits, - * returns the low 64 bits of the result. - */ - public UnsignedLong add(UnsignedLong val) { - checkNotNull(val); - return asUnsigned(this.value + val.value); - } - - /** - * Returns the result of subtracting this and {@code val}. If the result would be negative, - * returns the low 64 bits of the result. - */ - public UnsignedLong subtract(UnsignedLong val) { - checkNotNull(val); - return asUnsigned(this.value - val.value); - } - - /** - * Returns the result of multiplying this and {@code val}. If the result would have more than 64 - * bits, returns the low 64 bits of the result. - */ - public UnsignedLong multiply(UnsignedLong val) { - checkNotNull(val); - return asUnsigned(value * val.value); - } - - /** - * Returns the result of dividing this by {@code val}. - */ - public UnsignedLong divide(UnsignedLong val) { - checkNotNull(val); - return asUnsigned(UnsignedLongs.divide(value, val.value)); - } - - /** - * Returns the remainder of dividing this by {@code val}. - */ - public UnsignedLong remainder(UnsignedLong val) { - checkNotNull(val); - return asUnsigned(UnsignedLongs.remainder(value, val.value)); - } - - /** - * Returns the value of this {@code UnsignedLong} as an {@code int}. - */ - - @Override - public int intValue() { - return (int) value; - } - - /** - * Returns the value of this {@code UnsignedLong} as a {@code long}. This is an inverse operation - * to {@link #asUnsigned}. - * - *

    Note that if this {@code UnsignedLong} holds a value {@code >= 2^63}, the returned value - * will be equal to {@code this - 2^64}. - */ - - @Override - public long longValue() { - return value; - } - - /** - * Returns the value of this {@code UnsignedLong} as a {@code float}, analogous to a widening - * primitive conversion from {@code long} to {@code float}, and correctly rounded. - */ - - @Override - public float floatValue() { - @SuppressWarnings("cast") - float fValue = (float) (value & UNSIGNED_MASK); - if (value < 0) { - fValue += 0x1.0p63f; - } - return fValue; - } - - /** - * Returns the value of this {@code UnsignedLong} as a {@code double}, analogous to a widening - * primitive conversion from {@code long} to {@code double}, and correctly rounded. - */ - - @Override - public double doubleValue() { - @SuppressWarnings("cast") - double dValue = (double) (value & UNSIGNED_MASK); - if (value < 0) { - dValue += 0x1.0p63; - } - return dValue; - } - - /** - * Returns the value of this {@code UnsignedLong} as a {@link BigInteger}. - */ - public BigInteger bigIntegerValue() { - BigInteger bigInt = BigInteger.valueOf(value & UNSIGNED_MASK); - if (value < 0) { - bigInt = bigInt.setBit(Long.SIZE - 1); - } - return bigInt; - } - - public int compareTo(UnsignedLong o) { - checkNotNull(o); - return UnsignedLongs.compare(value, o.value); - } - - - @Override - public int hashCode() { - return Longs.hashCode(value); - } - - - @Override - public boolean equals(@Nullable Object obj) { - if (obj instanceof UnsignedLong) { - UnsignedLong other = (UnsignedLong) obj; - return value == other.value; - } - return false; - } - - /** - * Returns a string representation of the {@code UnsignedLong} value, in base 10. - */ - - @Override - public String toString() { - return UnsignedLongs.toString(value); - } - - /** - * Returns a string representation of the {@code UnsignedLong} value, in base {@code radix}. If - * {@code radix < Character.MIN_RADIX} or {@code radix > Character.MAX_RADIX}, the radix - * {@code 10} is used. - */ - public String toString(int radix) { - return UnsignedLongs.toString(value, radix); - } -} diff --git a/src/com/google/common/primitives/UnsignedLongs.java b/src/com/google/common/primitives/UnsignedLongs.java deleted file mode 100644 index fbb9f4d9..00000000 --- a/src/com/google/common/primitives/UnsignedLongs.java +++ /dev/null @@ -1,390 +0,0 @@ -/* - * Copyright (C) 2011 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.primitives; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.annotations.Beta; -import com.google.common.annotations.GwtCompatible; - -import java.math.BigInteger; -import java.util.Arrays; -import java.util.Comparator; - -/** - * Static utility methods pertaining to {@code long} primitives that interpret values as - * unsigned (that is, any negative value {@code x} is treated as the positive value - * {@code 2^64 + x}). The methods for which signedness is not an issue are in {@link Longs}, as - * well as signed versions of methods for which signedness is an issue. - * - *

    In addition, this class provides several static methods for converting a {@code long} to a - * {@code String} and a {@code String} to a {@code long} that treat the {@code long} as an unsigned - * number. - * - *

    Users of these utilities must be extremely careful not to mix up signed and unsigned - * {@code long} values. When possible, it is recommended that the {@link UnsignedLong} wrapper - * class be used, at a small efficiency penalty, to enforce the distinction in the type system. - * - *

    See the Guava User Guide article on - * unsigned primitive utilities. - * - * @author Louis Wasserman - * @author Brian Milch - * @author Colin Evans - * @since 10.0 - */ -@Beta -@GwtCompatible -public final class UnsignedLongs { - private UnsignedLongs() {} - - public static final long MAX_VALUE = -1L; // Equivalent to 2^64 - 1 - - /** - * A (self-inverse) bijection which converts the ordering on unsigned longs to the ordering on - * longs, that is, {@code a <= b} as unsigned longs if and only if {@code flip(a) <= flip(b)} - * as signed longs. - */ - private static long flip(long a) { - return a ^ Long.MIN_VALUE; - } - - /** - * Compares the two specified {@code long} values, treating them as unsigned values between - * {@code 0} and {@code 2^64 - 1} inclusive. - * - * @param a the first unsigned {@code long} to compare - * @param b the second unsigned {@code long} to compare - * @return a negative value if {@code a} is less than {@code b}; a positive value if {@code a} is - * greater than {@code b}; or zero if they are equal - */ - public static int compare(long a, long b) { - return Longs.compare(flip(a), flip(b)); - } - - /** - * Returns the least value present in {@code array}, treating values as unsigned. - * - * @param array a nonempty array of unsigned {@code long} values - * @return the value present in {@code array} that is less than or equal to every other value in - * the array according to {@link #compare} - * @throws IllegalArgumentException if {@code array} is empty - */ - public static long min(long... array) { - checkArgument(array.length > 0); - long min = flip(array[0]); - for (int i = 1; i < array.length; i++) { - long next = flip(array[i]); - if (next < min) { - min = next; - } - } - return flip(min); - } - - /** - * Returns the greatest value present in {@code array}, treating values as unsigned. - * - * @param array a nonempty array of unsigned {@code long} values - * @return the value present in {@code array} that is greater than or equal to every other value - * in the array according to {@link #compare} - * @throws IllegalArgumentException if {@code array} is empty - */ - public static long max(long... array) { - checkArgument(array.length > 0); - long max = flip(array[0]); - for (int i = 1; i < array.length; i++) { - long next = flip(array[i]); - if (next > max) { - max = next; - } - } - return flip(max); - } - - /** - * Returns a string containing the supplied unsigned {@code long} values separated by - * {@code separator}. For example, {@code join("-", 1, 2, 3)} returns the string {@code "1-2-3"}. - * - * @param separator the text that should appear between consecutive values in the resulting - * string (but not at the start or end) - * @param array an array of unsigned {@code long} values, possibly empty - */ - public static String join(String separator, long... array) { - checkNotNull(separator); - if (array.length == 0) { - return ""; - } - - // For pre-sizing a builder, just get the right order of magnitude - StringBuilder builder = new StringBuilder(array.length * 5); - builder.append(toString(array[0])); - for (int i = 1; i < array.length; i++) { - builder.append(separator).append(toString(array[i])); - } - return builder.toString(); - } - - /** - * Returns a comparator that compares two arrays of unsigned {@code long} values - * lexicographically. That is, it compares, using {@link #compare(long, long)}), the first pair of - * values that follow any common prefix, or when one array is a prefix of the other, treats the - * shorter array as the lesser. For example, {@code [] < [1L] < [1L, 2L] < [2L] < [1L << 63]}. - * - *

    The returned comparator is inconsistent with {@link Object#equals(Object)} (since arrays - * support only identity equality), but it is consistent with - * {@link Arrays#equals(long[], long[])}. - * - * @see Lexicographical order - * article at Wikipedia - */ - public static Comparator lexicographicalComparator() { - return LexicographicalComparator.INSTANCE; - } - - enum LexicographicalComparator implements Comparator { - INSTANCE; - - public int compare(long[] left, long[] right) { - int minLength = Math.min(left.length, right.length); - for (int i = 0; i < minLength; i++) { - if (left[i] != right[i]) { - return UnsignedLongs.compare(left[i], right[i]); - } - } - return left.length - right.length; - } - } - - /** - * Returns dividend / divisor, where the dividend and divisor are treated as unsigned 64-bit - * quantities. - * - * @param dividend the dividend (numerator) - * @param divisor the divisor (denominator) - * @throws ArithmeticException if divisor is 0 - */ - public static long divide(long dividend, long divisor) { - if (divisor < 0) { // i.e., divisor >= 2^63: - if (compare(dividend, divisor) < 0) { - return 0; // dividend < divisor - } else { - return 1; // dividend >= divisor - } - } - - // Optimization - use signed division if dividend < 2^63 - if (dividend >= 0) { - return dividend / divisor; - } - - /* - * Otherwise, approximate the quotient, check, and correct if necessary. Our approximation is - * guaranteed to be either exact or one less than the correct value. This follows from fact - * that floor(floor(x)/i) == floor(x/i) for any real x and integer i != 0. The proof is not - * quite trivial. - */ - long quotient = ((dividend >>> 1) / divisor) << 1; - long rem = dividend - quotient * divisor; - return quotient + (compare(rem, divisor) >= 0 ? 1 : 0); - } - - /** - * Returns dividend % divisor, where the dividend and divisor are treated as unsigned 64-bit - * quantities. - * - * @param dividend the dividend (numerator) - * @param divisor the divisor (denominator) - * @throws ArithmeticException if divisor is 0 - * @since 11.0 - */ - public static long remainder(long dividend, long divisor) { - if (divisor < 0) { // i.e., divisor >= 2^63: - if (compare(dividend, divisor) < 0) { - return dividend; // dividend < divisor - } else { - return dividend - divisor; // dividend >= divisor - } - } - - // Optimization - use signed modulus if dividend < 2^63 - if (dividend >= 0) { - return dividend % divisor; - } - - /* - * Otherwise, approximate the quotient, check, and correct if necessary. Our approximation is - * guaranteed to be either exact or one less than the correct value. This follows from fact - * that floor(floor(x)/i) == floor(x/i) for any real x and integer i != 0. The proof is not - * quite trivial. - */ - long quotient = ((dividend >>> 1) / divisor) << 1; - long rem = dividend - quotient * divisor; - return rem - (compare(rem, divisor) >= 0 ? divisor : 0); - } - - /** - * Returns the unsigned {@code long} value represented by the given decimal string. - * - * @throws NumberFormatException if the string does not contain a valid unsigned {@code long} - * value - */ - public static long parseUnsignedLong(String s) { - return parseUnsignedLong(s, 10); - } - - /** - * Returns the unsigned {@code long} value represented by the given string. - * - * Accepts a decimal, hexadecimal, or octal number given by specifying the following prefix: - * - *

      - *
    • {@code 0x}HexDigits - *
    • {@code 0X}HexDigits - *
    • {@code #}HexDigits - *
    • {@code 0}OctalDigits - *
    - * - * @throws NumberFormatException if the string does not contain a valid unsigned {@code long} - * value - * @since 13.0 - */ - public static long decode(String stringValue) { - ParseRequest request = ParseRequest.fromString(stringValue); - - try { - return parseUnsignedLong(request.rawValue, request.radix); - } catch (NumberFormatException e) { - NumberFormatException decodeException = - new NumberFormatException("Error parsing value: " + stringValue); - decodeException.initCause(e); - throw decodeException; - } - } - - /** - * Returns the unsigned {@code long} value represented by a string with the given radix. - * - * @param s the string containing the unsigned {@code long} representation to be parsed. - * @param radix the radix to use while parsing {@code s} - * @throws NumberFormatException if the string does not contain a valid unsigned {@code long} - * with the given radix, or if {@code radix} is not between {@link Character#MIN_RADIX} - * and {@link Character#MAX_RADIX}. - */ - public static long parseUnsignedLong(String s, int radix) { - checkNotNull(s); - if (s.length() == 0) { - throw new NumberFormatException("empty string"); - } - if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX) { - throw new NumberFormatException("illegal radix: " + radix); - } - - int max_safe_pos = maxSafeDigits[radix] - 1; - long value = 0; - for (int pos = 0; pos < s.length(); pos++) { - int digit = Character.digit(s.charAt(pos), radix); - if (digit == -1) { - throw new NumberFormatException(s); - } - if (pos > max_safe_pos && overflowInParse(value, digit, radix)) { - throw new NumberFormatException("Too large for unsigned long: " + s); - } - value = (value * radix) + digit; - } - - return value; - } - - /** - * Returns true if (current * radix) + digit is a number too large to be represented by an - * unsigned long. This is useful for detecting overflow while parsing a string representation of - * a number. Does not verify whether supplied radix is valid, passing an invalid radix will give - * undefined results or an ArrayIndexOutOfBoundsException. - */ - private static boolean overflowInParse(long current, int digit, int radix) { - if (current >= 0) { - if (current < maxValueDivs[radix]) { - return false; - } - if (current > maxValueDivs[radix]) { - return true; - } - // current == maxValueDivs[radix] - return (digit > maxValueMods[radix]); - } - - // current < 0: high bit is set - return true; - } - - /** - * Returns a string representation of x, where x is treated as unsigned. - */ - public static String toString(long x) { - return toString(x, 10); - } - - /** - * Returns a string representation of {@code x} for the given radix, where {@code x} is treated - * as unsigned. - * - * @param x the value to convert to a string. - * @param radix the radix to use while working with {@code x} - * @throws IllegalArgumentException if {@code radix} is not between {@link Character#MIN_RADIX} - * and {@link Character#MAX_RADIX}. - */ - public static String toString(long x, int radix) { - checkArgument(radix >= Character.MIN_RADIX && radix <= Character.MAX_RADIX, - "radix (%s) must be between Character.MIN_RADIX and Character.MAX_RADIX", radix); - if (x == 0) { - // Simply return "0" - return "0"; - } else { - char[] buf = new char[64]; - int i = buf.length; - if (x < 0) { - // Separate off the last digit using unsigned division. That will leave - // a number that is nonnegative as a signed integer. - long quotient = divide(x, radix); - long rem = x - quotient * radix; - buf[--i] = Character.forDigit((int) rem, radix); - x = quotient; - } - // Simple modulo/division approach - while (x > 0) { - buf[--i] = Character.forDigit((int) (x % radix), radix); - x /= radix; - } - // Generate string - return new String(buf, i, buf.length - i); - } - } - - // calculated as 0xffffffffffffffff / radix - private static final long[] maxValueDivs = new long[Character.MAX_RADIX + 1]; - private static final int[] maxValueMods = new int[Character.MAX_RADIX + 1]; - private static final int[] maxSafeDigits = new int[Character.MAX_RADIX + 1]; - static { - BigInteger overflow = new BigInteger("10000000000000000", 16); - for (int i = Character.MIN_RADIX; i <= Character.MAX_RADIX; i++) { - maxValueDivs[i] = divide(MAX_VALUE, i); - maxValueMods[i] = (int) remainder(MAX_VALUE, i); - maxSafeDigits[i] = overflow.toString(i).length() - 1; - } - } -} diff --git a/src/com/google/common/primitives/package-info.java b/src/com/google/common/primitives/package-info.java deleted file mode 100644 index 205183f1..00000000 --- a/src/com/google/common/primitives/package-info.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2010 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Static utilities for working with the eight primitive types and {@code void}, - * and value types for treating them as unsigned. - * - *

    This package is a part of the open-source - * Guava libraries. - * - *

    See the Guava User Guide article on - * primitive utilities. - * - *

    Contents

    - * - *

    General static utilities

    - * - *
      - *
    • {@link com.google.common.primitives.Primitives} - *
    - * - *

    Per-type static utilities

    - * - *
      - *
    • {@link com.google.common.primitives.Booleans} - *
    • {@link com.google.common.primitives.Bytes} - *
        - *
      • {@link com.google.common.primitives.SignedBytes} - *
      • {@link com.google.common.primitives.UnsignedBytes} - *
      - *
    • {@link com.google.common.primitives.Chars} - *
    • {@link com.google.common.primitives.Doubles} - *
    • {@link com.google.common.primitives.Floats} - *
    • {@link com.google.common.primitives.Ints} - *
        - *
      • {@link com.google.common.primitives.UnsignedInts} - *
      - *
    • {@link com.google.common.primitives.Longs} - *
        - *
      • {@link com.google.common.primitives.UnsignedLongs} - *
      - *
    • {@link com.google.common.primitives.Shorts} - *
    - * - *

    Value types

    - *
      - *
    • {@link com.google.common.primitives.UnsignedInteger} - *
    • {@link com.google.common.primitives.UnsignedLong} - *
    - */ -@ParametersAreNonnullByDefault -package com.google.common.primitives; - -import javax.annotation.ParametersAreNonnullByDefault; - From d32127da6088456084b288f53632ce2a655e5222 Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Mon, 15 Apr 2013 19:59:09 -0700 Subject: [PATCH 13/76] SkyDrive secrets --- src/org/brandroid/openmanager/util/PrivatePreferences.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/org/brandroid/openmanager/util/PrivatePreferences.java b/src/org/brandroid/openmanager/util/PrivatePreferences.java index 605d375d..a805c323 100644 --- a/src/org/brandroid/openmanager/util/PrivatePreferences.java +++ b/src/org/brandroid/openmanager/util/PrivatePreferences.java @@ -34,6 +34,8 @@ public static final String getBoxAPIKey() { privateKeys.put("drive_client_id", "645291897772-c540moos4f9bo15jg7aqfat5c0cj5d0v.apps.googleusercontent.com"); privateKeys.put("drive_secret", "4Q7GP50Vc412WEx0T2LY40p_"); privateKeys.put("google_api_key", "AIzaSyCaxVyRcOV5nej6x-6iONgKOsrNGmrk4ZI"); + privateKeys.put("skydrive_client_id", "00000000400F4500"); + privateKeys.put("skydrive_secret", "0uUmcI0Bjdxux9KdSWVxmgRCZcpzacyz"); privateKeys.put("master_key", "I'm not sure why I'm going " + "through the trouble of making this " + "encryption mechanism so secure. " + From 184f3fe28d94d4fa7b5673d1494fdd6e2580195a Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Thu, 2 May 2013 16:13:57 -0700 Subject: [PATCH 14/76] Clean up secrets --- .../openmanager/util/PrivatePreferences.java | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/org/brandroid/openmanager/util/PrivatePreferences.java b/src/org/brandroid/openmanager/util/PrivatePreferences.java index a805c323..7cda4744 100644 --- a/src/org/brandroid/openmanager/util/PrivatePreferences.java +++ b/src/org/brandroid/openmanager/util/PrivatePreferences.java @@ -19,26 +19,18 @@ public static final String getKey(String name, String defValue) { } public static final String getBoxAPIKey() { - return getKey("box_api"); + return getKey("box_key"); } static { // All Private Keys should go here like this: - privateKeys.put("box_api", "zqjxn1m3i4eg4iud158e0nz7u9oi2cpu"); + privateKeys.put("box_key", "zqjxn1m3i4eg4iud158e0nz7u9oi2cpu"); privateKeys.put("box_secret", "BcTh1GpJpma1cJc58sqcfZSjDZeuiYZ2"); privateKeys.put("dropbox_key", "vajaedmhzkkp3sw"); privateKeys.put("dropbox_secret", "plkrfrygu17glgn"); - privateKeys.put("oauth_drive_client_id", "645291897772.apps.googleusercontent.com"); - privateKeys.put("oauth_drive_secret", "xo9-oPP7P7Rj5er3J1qmzhoG"); - privateKeys.put("debug_drive_client_id", "645291897772-j66m64an4a8kj8he60ciarpmj12428ul.apps.googleusercontent.com"); - privateKeys.put("drive_client_id", "645291897772-c540moos4f9bo15jg7aqfat5c0cj5d0v.apps.googleusercontent.com"); - privateKeys.put("drive_secret", "4Q7GP50Vc412WEx0T2LY40p_"); - privateKeys.put("google_api_key", "AIzaSyCaxVyRcOV5nej6x-6iONgKOsrNGmrk4ZI"); - privateKeys.put("skydrive_client_id", "00000000400F4500"); - privateKeys.put("skydrive_secret", "0uUmcI0Bjdxux9KdSWVxmgRCZcpzacyz"); - privateKeys.put("master_key", "I'm not sure why I'm going " + - "through the trouble of making this " + - "encryption mechanism so secure. " + - "I doubt anyone will ever try to hack it."); + privateKeys.put("drive_key", "645291897772.apps.googleusercontent.com"); + privateKeys.put("drive_secret", "xo9-oPP7P7Rj5er3J1qmzhoG"); +// privateKeys.put("skydrive_key", "00000000400F4500"); +// privateKeys.put("skydrive_secret", "0uUmcI0Bjdxux9KdSWVxmgRCZcpzacyz"); } } From 0d4f0acc5fcd5c1009f46644b8e97fe5add92750 Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Fri, 10 May 2013 00:19:03 -0700 Subject: [PATCH 15/76] Disable FTP upload after build --- custom_rules.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_rules.xml b/custom_rules.xml index 6a974ff4..ba89fb44 100644 --- a/custom_rules.xml +++ b/custom_rules.xml @@ -194,12 +194,12 @@ in.package="${out.unaligned.file}" out.package="${out.final.file}" /> Release Package: ${out.final.file} - Uploading to release server + From a223cb8a9da4568218a06312ef7ec51c8e856c31 Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Fri, 10 May 2013 16:56:40 -0700 Subject: [PATCH 16/76] Stericsson Root Tools update --- src/com/stericson/RootTools/Constants.java | 13 + src/com/stericson/RootTools/RootTools.java | 1066 ++++++----- src/com/stericson/RootTools/Shell.java | 351 ---- .../RootTools/containers/.svn/all-wcprops | 23 + .../RootTools/containers/.svn/entries | 130 ++ .../.svn/text-base/Mount.java.svn-base | 64 + .../.svn/text-base/Permissions.java.svn-base | 124 ++ .../.svn/text-base/Symlink.java.svn-base | 43 + .../RootTools/{ => containers}/Mount.java | 15 +- .../{ => containers}/Permissions.java | 34 +- .../RootTools/{ => containers}/Symlink.java | 4 +- .../RootTools/exceptions/.svn/all-wcprops | 17 + .../RootTools/exceptions/.svn/entries | 96 + .../RootDeniedException.java.svn-base | 36 + .../RootToolsException.java.svn-base | 36 + .../exceptions/RootDeniedException.java | 36 + .../{ => exceptions}/RootToolsException.java | 2 +- .../RootTools/execution/.svn/all-wcprops | 35 + .../RootTools/execution/.svn/entries | 198 ++ .../.svn/text-base/Command.java.svn-base | 136 ++ .../text-base/CommandCapture.java.svn-base | 50 + .../.svn/text-base/Executer.java.svn-base | 290 +++ .../.svn/text-base/IResult.java.svn-base | 46 + .../.svn/text-base/Shell.java.svn-base | 454 +++++ .../RootTools/{ => execution}/Command.java | 15 +- .../{ => execution}/CommandCapture.java | 4 +- .../RootTools/{ => execution}/Executer.java | 17 +- .../RootTools/{ => execution}/IResult.java | 2 +- .../stericson/RootTools/execution/Shell.java | 454 +++++ .../RootTools/internal/.svn/all-wcprops | 35 + .../stericson/RootTools/internal/.svn/entries | 198 ++ .../.svn/text-base/Installer.java.svn-base | 167 ++ .../text-base/InternalVariables.java.svn-base | 63 + .../.svn/text-base/Remounter.java.svn-base | 145 ++ .../RootToolsInternalMethods.java.svn-base} | 326 ++-- .../.svn/text-base/Runner.java.svn-base | 67 + .../RootTools/{ => internal}/Installer.java | 6 +- .../{ => internal}/InternalVariables.java | 24 +- .../RootTools/{ => internal}/Remounter.java | 19 +- .../internal/RootToolsInternalMethods.java | 1586 +++++++++++++++++ .../RootTools/{ => internal}/Runner.java | 8 +- .../stericson/RootTools/test/.svn/all-wcprops | 11 + src/com/stericson/RootTools/test/.svn/entries | 62 + .../SanityCheckRootTools.java.svn-base | 401 +++++ .../{ => test}/SanityCheckRootTools.java | 49 +- 45 files changed, 5998 insertions(+), 960 deletions(-) create mode 100644 src/com/stericson/RootTools/Constants.java delete mode 100644 src/com/stericson/RootTools/Shell.java create mode 100644 src/com/stericson/RootTools/containers/.svn/all-wcprops create mode 100644 src/com/stericson/RootTools/containers/.svn/entries create mode 100644 src/com/stericson/RootTools/containers/.svn/text-base/Mount.java.svn-base create mode 100644 src/com/stericson/RootTools/containers/.svn/text-base/Permissions.java.svn-base create mode 100644 src/com/stericson/RootTools/containers/.svn/text-base/Symlink.java.svn-base rename src/com/stericson/RootTools/{ => containers}/Mount.java (82%) rename src/com/stericson/RootTools/{ => containers}/Permissions.java (84%) rename src/com/stericson/RootTools/{ => containers}/Symlink.java (93%) create mode 100644 src/com/stericson/RootTools/exceptions/.svn/all-wcprops create mode 100644 src/com/stericson/RootTools/exceptions/.svn/entries create mode 100644 src/com/stericson/RootTools/exceptions/.svn/text-base/RootDeniedException.java.svn-base create mode 100644 src/com/stericson/RootTools/exceptions/.svn/text-base/RootToolsException.java.svn-base create mode 100644 src/com/stericson/RootTools/exceptions/RootDeniedException.java rename src/com/stericson/RootTools/{ => exceptions}/RootToolsException.java (96%) create mode 100644 src/com/stericson/RootTools/execution/.svn/all-wcprops create mode 100644 src/com/stericson/RootTools/execution/.svn/entries create mode 100644 src/com/stericson/RootTools/execution/.svn/text-base/Command.java.svn-base create mode 100644 src/com/stericson/RootTools/execution/.svn/text-base/CommandCapture.java.svn-base create mode 100644 src/com/stericson/RootTools/execution/.svn/text-base/Executer.java.svn-base create mode 100644 src/com/stericson/RootTools/execution/.svn/text-base/IResult.java.svn-base create mode 100644 src/com/stericson/RootTools/execution/.svn/text-base/Shell.java.svn-base rename src/com/stericson/RootTools/{ => execution}/Command.java (92%) rename src/com/stericson/RootTools/{ => execution}/CommandCapture.java (94%) rename src/com/stericson/RootTools/{ => execution}/Executer.java (95%) rename src/com/stericson/RootTools/{ => execution}/IResult.java (97%) create mode 100644 src/com/stericson/RootTools/execution/Shell.java create mode 100644 src/com/stericson/RootTools/internal/.svn/all-wcprops create mode 100644 src/com/stericson/RootTools/internal/.svn/entries create mode 100644 src/com/stericson/RootTools/internal/.svn/text-base/Installer.java.svn-base create mode 100644 src/com/stericson/RootTools/internal/.svn/text-base/InternalVariables.java.svn-base create mode 100644 src/com/stericson/RootTools/internal/.svn/text-base/Remounter.java.svn-base rename src/com/stericson/RootTools/{InternalMethods.java => internal/.svn/text-base/RootToolsInternalMethods.java.svn-base} (84%) create mode 100644 src/com/stericson/RootTools/internal/.svn/text-base/Runner.java.svn-base rename src/com/stericson/RootTools/{ => internal}/Installer.java (96%) rename src/com/stericson/RootTools/{ => internal}/InternalVariables.java (74%) rename src/com/stericson/RootTools/{ => internal}/Remounter.java (87%) create mode 100644 src/com/stericson/RootTools/internal/RootToolsInternalMethods.java rename src/com/stericson/RootTools/{ => internal}/Runner.java (90%) create mode 100644 src/com/stericson/RootTools/test/.svn/all-wcprops create mode 100644 src/com/stericson/RootTools/test/.svn/entries create mode 100644 src/com/stericson/RootTools/test/.svn/text-base/SanityCheckRootTools.java.svn-base rename src/com/stericson/RootTools/{ => test}/SanityCheckRootTools.java (94%) diff --git a/src/com/stericson/RootTools/Constants.java b/src/com/stericson/RootTools/Constants.java new file mode 100644 index 00000000..67d1030a --- /dev/null +++ b/src/com/stericson/RootTools/Constants.java @@ -0,0 +1,13 @@ +package com.stericson.RootTools; + +public class Constants +{ + public static final String TAG = "RootTools v2.6"; + public static final int FPS = 1; + public static final int IAG = 2; + public static final int BBA = 3; + public static final int BBV = 4; + public static final int GI = 5; + public static final int GS = 6; + public static final int GSYM = 7; +} diff --git a/src/com/stericson/RootTools/RootTools.java b/src/com/stericson/RootTools/RootTools.java index ffb1bc00..35c443da 100644 --- a/src/com/stericson/RootTools/RootTools.java +++ b/src/com/stericson/RootTools/RootTools.java @@ -29,7 +29,6 @@ import java.util.Set; import java.util.concurrent.TimeoutException; -import org.brandroid.openmanager.activities.OpenExplorer; import org.brandroid.utils.Logger; import android.app.Activity; @@ -37,55 +36,80 @@ import android.content.Intent; import android.util.Log; -public class RootTools { +import com.stericson.RootTools.containers.Mount; +import com.stericson.RootTools.containers.Permissions; +import com.stericson.RootTools.containers.Symlink; +import com.stericson.RootTools.exceptions.RootDeniedException; +import com.stericson.RootTools.exceptions.RootToolsException; +import com.stericson.RootTools.execution.Command; +import com.stericson.RootTools.execution.Executer; +import com.stericson.RootTools.execution.IResult; +import com.stericson.RootTools.execution.Shell; +import com.stericson.RootTools.internal.Remounter; +import com.stericson.RootTools.internal.RootToolsInternalMethods; +import com.stericson.RootTools.internal.Runner; + +public final class RootTools { /** - * This class is the gateway to every functionality within the RootTools - * library.The developer should only have access to this class and this - * class only.This means that this class should be the only one to be - * public.The rest of the classes within this library must not have the - * public modifier. All methods and Variables that the developer may need to - * have access to should be here. If a method, or a specific functionality, - * requires a fair amount of code, or work to be done, then that - * functionality should probably be moved to its own class and the call to - * it done here.For examples of this being done, look at the remount - * functionality. + * This class is the gateway to every functionality within the RootTools library.The developer + * should only have access to this class and this class only.This means that this class should + * be the only one to be public.The rest of the classes within this library must not have the + * public modifier. + * + * All methods and Variables that the developer may need to have access to should be here. + * + * If a method, or a specific functionality, requires a fair amount of code, or work to be done, + * then that functionality should probably be moved to its own class and the call to it done + * here.For examples of this being done, look at the remount functionality. */ + private static RootToolsInternalMethods rim = null; + + public static void setRim(RootToolsInternalMethods rim) { + RootTools.rim = rim; + } + + private static final RootToolsInternalMethods getInternals() { + if (rim == null) { + RootToolsInternalMethods.getInstance(); + return rim; + } else { + return rim; + } + } + // -------------------- // # Public Variables # // -------------------- - public static boolean debugMode = OpenExplorer.IS_DEBUG_BUILD && false; + public static boolean debugMode = false; public static List lastFoundBinaryPaths = new ArrayList(); public static int lastExitCode; public static String utilPath; - public static Boolean access = null; + private static boolean accessRequested = false; /** - * You can use this to force sendshell to use a shell other than the - * deafult. + * You can use this to force sendshell to use a shell other than the deafult. */ public static String customShell = ""; /** - * Change this to a lower/higher setting to speed up/slow down shell - * commands if things are taking too long or you are having constant crashes - * or timeout exceptions. + * Change this to a lower/higher setting to speed up/slow down shell commands if things are + * taking too long or you are having constant crashes or timeout exceptions. */ public static int shellDelay = 0; /** - * Many Functions here use root by default, but there may be times that you - * do not want them to use root. This can be useful when running a lot of - * commands at once. By default, if all of these functions are requesting - * root access then superuser will notify the user everytime that root is - * requested...this can lead to a flood of toast messages from superuser - * notifying the user that root access is being requested. Setting this to - * false will cause sendShell to not use root by default. So any commands - * sent to the shell will not have root access unless specifically directed - * to obtain root access by you. Some commands will not work properly - * without root access, so use this with care. + * Many Functions here use root by default, but there may be times that you do not want them to + * use root. This can be useful when running a lot of commands at once. By default, if all of + * these functions are requesting root access then superuser will notify the user everytime that + * root is requested...this can lead to a flood of toast messages from superuser notifying the + * user that root access is being requested. + * + * Setting this to false will cause sendShell to not use root by default. So any commands sent + * to the shell will not have root access unless specifically directed to obtain root access by + * you. Some commands will not work properly without root access, so use this with care. */ public static boolean useRoot = true; @@ -96,371 +120,526 @@ public class RootTools { // ------------------ // # Public Methods # // ------------------ + + public static boolean isAccessRequested() { return accessRequested; } /** - * This will check a given binary, determine if it exists and determine that - * it has either the permissions 755, 775, or 777. + * This will check a given binary, determine if it exists and determine that it has either the + * permissions 755, 775, or 777. + * * - * @param String Name of the utility to check. - * @return boolean to indicate whether the binary is installed and has - * appropriate permissions. + * @param util + * Name of the utility to check. + * + * @return boolean to indicate whether the binary is installed and has appropriate permissions. */ public static boolean checkUtil(String util) { - - return InternalMethods.checkUtil(util); + + return getInternals().checkUtil(util); } /** * This will close all open shells. * - * @throws IOException + * @throws IOException + * */ - public static void closeAllShells() throws IOException { - Shell.closeAll(); - access = null; + public static void closeAllShells() throws IOException + { + Shell.closeAll(); } /** * This will close the custom shell that you opened. * - * @throws IOException + * @throws IOException + * */ - public static void closeCustomShell() throws IOException { - Shell.closeCustomShell(); + public static void closeCustomShell() throws IOException + { + Shell.closeCustomShell(); } - + /** - * This will close either the root shell or the standard shell depending on - * what you specify. + * This will close either the root shell or the standard shell depending on what you specify. * - * @param root a boolean to specify whether to close the root - * shell or the standard shell. - * @throws IOException + * @param root + * a boolean to specify whether to close the root shell or the standard shell. + * + * @throws IOException + * */ - public static void closeShell(boolean root) throws IOException { - if (root) - Shell.closeRootShell(); - else - Shell.closeShell(); + public static void closeShell(boolean root) throws IOException + { + if (root) + Shell.closeRootShell(); + else + Shell.closeShell(); } - + /** - * Copys a file to a destination. Because cp is not available on all android - * devices, we have a fallback on the cat command + * Copys a file to a destination. Because cp is not available on all android devices, we have a + * fallback on the cat command * - * @param source example: /data/data/org.adaway/files/hosts - * @param destination example: /system/etc/hosts - * @param remountAsRw remounts the destination as read/write before writing - * to it - * @param preserveFileAttributes tries to copy file attributes from source - * to destination, if only cat is available only permissions are - * preserved + * @param source + * example: /data/data/org.adaway/files/hosts + * @param destination + * example: /system/etc/hosts + * @param remountAsRw + * remounts the destination as read/write before writing to it + * @param preserveFileAttributes + * tries to copy file attributes from source to destination, if only cat is available + * only permissions are preserved * @return true if it was successfully copied */ - public static boolean copyFile(String source, String destination, boolean remountAsRw, - boolean preserveFileAttributes) { - return InternalMethods.copyFile(source, destination, remountAsRw, preserveFileAttributes); + public static boolean copyFile(String source, String destination, boolean remountAsRw, + boolean preserveFileAttributes) { + return getInternals().copyFile(source, destination, remountAsRw, preserveFileAttributes); } /** - * Use this to check whether or not a file exists on the filesystem. - * - * @param file String that represent the file, including the full path to - * the file and its name. - * @return a boolean that will indicate whether or not the file exists. + * Deletes a file or directory + * + * @param target + * example: /data/data/org.adaway/files/hosts + * @param remountAsRw + * remounts the destination as read/write before writing to it + * @return true if it was successfully deleted */ - public static boolean exists(final String file) { - return InternalMethods.exists(file); + public boolean deleteFileOrDirectory(String target, boolean remountAsRw) { + return getInternals().deleteFileOrDirectory(target, remountAsRw); } + /** + * Use this to check whether or not a file exists on the filesystem. + * + * @param file + * String that represent the file, including the full path to the + * file and its name. + * + * @return a boolean that will indicate whether or not the file exists. + * + */ + public static boolean exists(final String file) + { + return getInternals().exists(file); + } + /** - * This will try and fix a given binary. (This is for Busybox applets or - * Toolbox applets) By "fix", I mean it will try and symlink the binary from - * either toolbox or Busybox and fix the permissions if the permissions are - * not correct. + * This will try and fix a given binary. (This is for Busybox applets or Toolbox applets) By + * "fix", I mean it will try and symlink the binary from either toolbox or Busybox and fix the + * permissions if the permissions are not correct. * - * @param String Name of the utility to fix. - * @param String path to the toolbox that provides ln, rm, and chmod. This - * can be a blank string, a path to a binary that will provide - * these, or you can use RootTools.getWorkingToolbox() + * @param util + * Name of the utility to fix. + * @param utilPath + * path to the toolbox that provides ln, rm, and chmod. This can be a blank string, a + * path to a binary that will provide these, or you can use + * RootTools.getWorkingToolbox() */ public static void fixUtil(String util, String utilPath) { - InternalMethods.fixUtil(util, utilPath); + getInternals().fixUtil(util, utilPath); } - + /** - * This will check an array of binaries, determine if they exist and - * determine that it has either the permissions 755, 775, or 777. If an - * applet is not setup correctly it will try and fix it. (This is for - * Busybox applets or Toolbox applets) + * This will check an array of binaries, determine if they exist and determine that it has + * either the permissions 755, 775, or 777. If an applet is not setup correctly it will try and + * fix it. (This is for Busybox applets or Toolbox applets) + * + * @param utils + * Name of the utility to check. * - * @param String Name of the utility to check. - * @throws Exception if the operation cannot be completed. - * @return boolean to indicate whether the operation completed. Note that - * this is not indicative of whether the problem was fixed, just - * that the method did not encounter any exceptions. + * @throws Exception + * if the operation cannot be completed. + * + * @return boolean to indicate whether the operation completed. Note that this is not indicative + * of whether the problem was fixed, just that the method did not encounter any + * exceptions. */ public static boolean fixUtils(String[] utils) throws Exception { - return InternalMethods.fixUtils(utils); + return getInternals().fixUtils(utils); } - + /** - * @param binaryName String that represent the binary to find. - * @return true if the specified binary was found. Also, the - * path the binary was found at can be retrieved via the variable - * lastFoundBinaryPath, if the binary was found in more than one - * location this will contain all of these locations. + * + * @param binaryName + * String that represent the binary to find. + * + * @return true if the specified binary was found. Also, the path the binary was + * found at can be retrieved via the variable lastFoundBinaryPath, if the binary was + * found in more than one location this will contain all of these locations. + * */ public static boolean findBinary(String binaryName) { - return InternalMethods.findBinary(binaryName); + return getInternals().findBinary(binaryName); + } + + /** + * @param path + * String that represents the path to the Busybox binary you want to retrieve the version of. + * + * @return BusyBox version is found, "" if not found. + */ + public static String getBusyBoxVersion(String path) { + return getInternals().getBusyBoxVersion(path); } /** * @return BusyBox version is found, "" if not found. */ public static String getBusyBoxVersion() { - return InternalMethods.getBusyBoxVersion(); + return RootTools.getBusyBoxVersion(""); } /** - * This will return an List of Strings. Each string represents an applet - * available from BusyBox. + * This will return an List of Strings. Each string represents an applet available from BusyBox. *

    * - * @return List a List of strings representing the - * applets available from Busybox. - * @throws Exception if we cannot return the applets available. + * @return List a List of strings representing the applets available from + * Busybox. + * + * @return null If we cannot return the list of applets. + * */ public static List getBusyBoxApplets() throws Exception { - return InternalMethods.getBusyBoxApplets(); + return RootTools.getBusyBoxApplets(""); } - + /** - * This will open or return, if one is already open, a custom shell, you are - * responsible for managing the shell, reading the output and for closing - * the shell when you are done using it. + * This will return an List of Strings. Each string represents an applet available from BusyBox. + *

    + * + * @param path + * Path to the busybox binary that you want the list of applets from. + * + * @return List a List of strings representing the applets available from + * Busybox. + * + * @return null If we cannot return the list of applets. * - * @param shellPath a String to Indicate the path to the shell - * that you want to open. - * @throws IOException */ - public static Shell getCustomShell(String shellPath) throws IOException { - return Shell.startCustomShell(shellPath); + public static List getBusyBoxApplets(String path) throws Exception { + return getInternals().getBusyBoxApplets(path); } /** - * @param file String that represent the file, including the full path to - * the file and its name. - * @return An instance of the class permissions from which you can get the - * permissions of the file or if the file could not be found or - * permissions couldn't be determined then permissions will be null. + * This will open or return, if one is already open, a custom shell, you are responsible for managing the shell, reading the output + * and for closing the shell when you are done using it. + * + * @param shellPath + * a String to Indicate the path to the shell that you want to open. + * + * @param timeout + * an int to Indicate the length of time before giving up on opening a shell. + * + * @throws IOException + * @throws TimeoutException + * @throws RootDeniedException + * + */ + public static Shell getCustomShell(String shellPath, int timeout) throws IOException, TimeoutException, RootDeniedException + { + return Shell.startCustomShell(shellPath, timeout); + } + + /** + * This will open or return, if one is already open, a custom shell, you are responsible for managing the shell, reading the output + * and for closing the shell when you are done using it. + * + * @param shellPath + * a String to Indicate the path to the shell that you want to open. + * + * @throws IOException + * @throws TimeoutException + * @throws RootDeniedException + * + */ + public static Shell getCustomShell(String shellPath) throws IOException, TimeoutException, RootDeniedException + { + return RootTools.getCustomShell(shellPath, 10000); + } + + /** + * + * @param file + * String that represent the file, including the full path to the file and its name. + * + * @return An instance of the class permissions from which you can get the permissions of the + * file or if the file could not be found or permissions couldn't be determined then + * permissions will be null. + * */ public static Permissions getFilePermissionsSymlinks(String file) { - return InternalMethods.getFilePermissionsSymlinks(file); + return getInternals().getFilePermissionsSymlinks(file); } - + /** - * This method will return the inode number of a file. This method is - * dependent on having a version of ls that supports the -i parameter. + * This method will return the inode number of a file. This method is dependent on having a version of + * ls that supports the -i parameter. * - * @param String path to the file that you wish to return the inode number - * @return String The inode number for this file or "" if the inode number - * could not be found. + * @param file path to the file that you wish to return the inode number + * + * @return String The inode number for this file or "" if the inode number could not be found. */ - public static String getInode(String file) { - return InternalMethods.getInode(file); + public static String getInode(String file) + { + return getInternals().getInode(file); } /** - * This will return an ArrayList of the class Mount. The class mount - * contains the following property's: device mountPoint type flags + * This will return an ArrayList of the class Mount. The class mount contains the following + * property's: device mountPoint type flags *

    - * These will provide you with any information you need to work with the - * mount points. + * These will provide you with any information you need to work with the mount points. * * @return ArrayList an ArrayList of the class Mount. - * @throws Exception if we cannot return the mount points. + * @throws Exception + * if we cannot return the mount points. */ public static ArrayList getMounts() throws Exception { - return InternalMethods.getMounts(); + return getInternals().getMounts(); } - + /** * This will tell you how the specified mount is mounted. rw, ro, etc... *

    + * @param path The mount you want to check * - * @param The mount you want to check * @return String What the mount is mounted as. - * @throws Exception if we cannot determine how the mount is mounted. + * @throws Exception + * if we cannot determine how the mount is mounted. */ public static String getMountedAs(String path) throws Exception { - return InternalMethods.getMountedAs(path); + return getInternals().getMountedAs(path); } - + /** * This will return the environment variable $PATH * - * @return Set A Set of Strings representing the - * environment variable $PATH - * @throws Exception if we cannot return the $PATH variable + * @return Set A Set of Strings representing the environment variable $PATH + * @throws Exception + * if we cannot return the $PATH variable */ public static Set getPath() throws Exception { - return InternalMethods.getPath(); + return getInternals().getPath(); } /** - * This will open or return, if one is already open, a shell, you are - * responsible for managing the shell, reading the output and for closing - * the shell when you are done using it. - * - * @param root a boolean to Indicate whether or not you want to - * open a root shell or a standard shell - * @throws IOException + * This will open or return, if one is already open, a shell, you are responsible for managing the shell, reading the output + * and for closing the shell when you are done using it. + * + * @param root + * a boolean to Indicate whether or not you want to open a root shell or a standard shell + * + * @param timeout + * an int to Indicate the length of time to wait before giving up on opening a shell. + * + * @param retry + * a int to indicate how many times the ROOT shell should try to open with root priviliges... + * + * @throws IOException + * @throws TimeoutException + * @throws RootDeniedException + * */ - public static Shell getShell(boolean root) throws IOException { - if (root) - return Shell.startRootShell(); - else - return Shell.startShell(); + public static Shell getShell(boolean root, int timeout, int retry) throws IOException, TimeoutException, RootDeniedException + { + if (root) + return Shell.startRootShell(timeout); + else + return Shell.startShell(timeout); } + /** + * This will open or return, if one is already open, a shell, you are responsible for managing the shell, reading the output + * and for closing the shell when you are done using it. + * + * @param root + * a boolean to Indicate whether or not you want to open a root shell or a standard shell + * + * @param timeout + * an int to Indicate the length of time to wait before giving up on opening a shell. + * + * @throws IOException + * @throws TimeoutException + * @throws RootDeniedException + * + */ + public static Shell getShell(boolean root, int timeout) throws IOException, TimeoutException, RootDeniedException + { + return getShell(root, timeout, 3); + } + + /** + * This will open or return, if one is already open, a shell, you are responsible for managing the shell, reading the output + * and for closing the shell when you are done using it. + * + * @param root + * a boolean to Indicate whether or not you want to open a root shell or a standard shell + * + * @throws IOException + * @throws TimeoutException + * @throws RootDeniedException + * + */ + public static Shell getShell(boolean root) throws IOException, TimeoutException, RootDeniedException + { + return RootTools.getShell(root, 10000); + } + /** * Get the space for a desired partition. * - * @param path The partition to find the space for. - * @return the amount if space found within the desired partition. If the - * space was not found then the value is -1 + * @param path + * The partition to find the space for. + * @return the amount if space found within the desired partition. If the space was not found + * then the value is -1 * @throws TimeoutException */ public static long getSpace(String path) { - return InternalMethods.getSpace(path); + return getInternals().getSpace(path); } /** - * This will return a String that represent the symlink for a specified - * file. + * This will return a String that represent the symlink for a specified file. *

    * - * @param The path to the file to get the Symlink for. (must have absolute - * path) - * @return String a String that represent the symlink for a - * specified file or an empty string if no symlink exists. + * @param file + * path to the file to get the Symlink for. (must have absolute path) + * + * @return String a String that represent the symlink for a specified file or an + * empty string if no symlink exists. */ public static String getSymlink(String file) { - return InternalMethods.getSymlink(file); + return getInternals().getSymlink(file); } - + /** - * This will return an ArrayList of the class Symlink. The class Symlink - * contains the following property's: path SymplinkPath + * This will return an ArrayList of the class Symlink. The class Symlink contains the following + * property's: path SymplinkPath *

    * These will provide you with any Symlinks in the given path. * - * @param The path to search for Symlinks. + * @param path + * path to search for Symlinks. + * * @return ArrayList an ArrayList of the class Symlink. - * @throws Exception if we cannot return the Symlinks. + * @throws Exception + * if we cannot return the Symlinks. */ public static ArrayList getSymlinks(String path) throws Exception { - return InternalMethods.getSymlinks(path); + return getInternals().getSymlinks(path); } - + /** - * This will return to you a string to be used in your shell commands which - * will represent the valid working toolbox with correct permissions. For - * instance, if Busybox is available it will return "busybox", if busybox is - * not available but toolbox is then it will return "toolbox" + * This will return to you a string to be used in your shell commands which will represent the + * valid working toolbox with correct permissions. For instance, if Busybox is available it will + * return "busybox", if busybox is not available but toolbox is then it will return "toolbox" * - * @return String that indicates the available toolbox to use for accessing - * applets. + * @return String that indicates the available toolbox to use for accessing applets. */ public static String getWorkingToolbox() { - return InternalMethods.getWorkingToolbox(); + return getInternals().getWorkingToolbox(); } - + /** * Checks if there is enough Space on SDCard * - * @param updateSize size to Check (long) - * @return true if the Update will fit on SDCard, - * false if not enough space on SDCard. Will also - * return false, if the SDCard is not mounted as + * @param updateSize + * size to Check (long) + * @return true if the Update will fit on SDCard, false if not enough + * space on SDCard. Will also return false, if the SDCard is not mounted as * read/write */ public static boolean hasEnoughSpaceOnSdCard(long updateSize) { - return InternalMethods.hasEnoughSpaceOnSdCard(updateSize); + return getInternals().hasEnoughSpaceOnSdCard(updateSize); } /** * Checks whether the toolbox or busybox binary contains a specific util * * @param util - * @param box Should contain "toolbox" or "busybox" + * @param box + * Should contain "toolbox" or "busybox" * @return true if it contains this util */ public static boolean hasUtil(final String util, final String box) { - // TODO Convert this to use the new shell. - return InternalMethods.hasUtil(util, box); + //TODO Convert this to use the new shell. + return getInternals().hasUtil(util, box); } /** - * This method can be used to unpack a binary from the raw resources folder - * and store it in /data/data/app.package/files/ This is typically useful if - * you provide your own C- or C++-based binary. This binary can then be - * executed using sendShell() and its full path. + * This method can be used to unpack a binary from the raw resources folder and store it in + * /data/data/app.package/files/ This is typically useful if you provide your own C- or + * C++-based binary. This binary can then be executed using sendShell() and its full path. * - * @param context the current activity's Context - * @param sourceId resource id; typically R.raw.id - * @param destName destination file name; appended to - * /data/data/app.package/files/ - * @param mode chmod value for this file - * @return a boolean which indicates whether or not we were - * able to create the new file. + * @param context + * the current activity's Context + * @param sourceId + * resource id; typically R.raw.id + * @param destName + * destination file name; appended to /data/data/app.package/files/ + * @param mode + * chmod value for this file + * @return a boolean which indicates whether or not we were able to create the new + * file. */ public static boolean installBinary(Context context, int sourceId, String destName, String mode) { - return InternalMethods.installBinary(context, sourceId, destName, mode); + return getInternals().installBinary(context, sourceId, destName, mode); } /** - * This method can be used to unpack a binary from the raw resources folder - * and store it in /data/data/app.package/files/ This is typically useful if - * you provide your own C- or C++-based binary. This binary can then be - * executed using sendShell() and its full path. + * This method can be used to unpack a binary from the raw resources folder and store it in + * /data/data/app.package/files/ This is typically useful if you provide your own C- or + * C++-based binary. This binary can then be executed using sendShell() and its full path. * - * @param context the current activity's Context - * @param sourceId resource id; typically R.raw.id - * @param binaryName destination file name; appended to - * /data/data/app.package/files/ - * @return a boolean which indicates whether or not we were - * able to create the new file. + * @param context + * the current activity's Context + * @param sourceId + * resource id; typically R.raw.id + * @param binaryName + * destination file name; appended to /data/data/app.package/files/ + * @return a boolean which indicates whether or not we were able to create the new + * file. */ public static boolean installBinary(Context context, int sourceId, String binaryName) { return installBinary(context, sourceId, binaryName, "700"); } + + /** + * This will let you know if an applet is available from BusyBox + *

    + * + * @param applet The applet to check for. + * @param path + * Path to the busybox binary that you want to check. (do not include binary name) + * + * @return true if applet is available, false otherwise. + */ + public static boolean isAppletAvailable(String applet, String path) { + return getInternals().isAppletAvailable(applet, path); + } /** * This will let you know if an applet is available from BusyBox *

    * - * @param String The applet to check for. + * @param applet The applet to check for. + * * @return true if applet is available, false otherwise. */ - public static boolean isAppletAvailable(String Applet) { - return InternalMethods.isAppletAvailable(Applet); + public static boolean isAppletAvailable(String applet) { + return RootTools.isAppletAvailable(applet, ""); } /** * @return true if your app has been given root access. - * @throws TimeoutException if this operation times out. (cannot determine - * if access is given) + * @throws TimeoutException + * if this operation times out. (cannot determine if access is given) */ public static boolean isAccessGiven() { - if (access == null) - access = InternalMethods.isAccessGiven(); - return access; - } - - public static boolean isAccessRequested() { - return access == null; + accessRequested = true; + return getInternals().isAccessGiven(); } /** @@ -469,111 +648,119 @@ public static boolean isAccessRequested() { public static boolean isBusyboxAvailable() { return findBinary("busybox"); } - + public static boolean isNativeToolsReady(int nativeToolsId, Context context) { - return InternalMethods.isNativeToolsReady(nativeToolsId, context); + return getInternals().isNativeToolsReady(nativeToolsId, context); } - + /** * This method can be used to to check if a process is running * - * @param processName name of process to check + * @param processName + * name of process to check * @return true if process was found - * @throws TimeoutException (Could not determine if the process is running) + * @throws TimeoutException + * (Could not determine if the process is running) */ public static boolean isProcessRunning(final String processName) { - // TODO convert to new shell - return InternalMethods.isProcessRunning(processName); + //TODO convert to new shell + return getInternals().isProcessRunning(processName); } - + /** * @return true if su was found. */ public static boolean isRootAvailable() { return findBinary("su"); } - + /** * This method can be used to kill a running process * - * @param processName name of process to kill + * @param processName + * name of process to kill * @return true if process was found and killed successfully */ public static boolean killProcess(final String processName) { - // TODO convert to new shell - return InternalMethods.killProcess(processName); + //TODO convert to new shell + return getInternals().killProcess(processName); } - + /** * This will launch the Android market looking for BusyBox * - * @param activity pass in your Activity + * @param activity + * pass in your Activity */ public static void offerBusyBox(Activity activity) { - InternalMethods.offerBusyBox(activity); + getInternals().offerBusyBox(activity); } /** - * This will launch the Android market looking for BusyBox, but will return - * the intent fired and starts the activity with startActivityForResult + * This will launch the Android market looking for BusyBox, but will return the intent fired and + * starts the activity with startActivityForResult * - * @param activity pass in your Activity - * @param requestCode pass in the request code + * @param activity + * pass in your Activity + * @param requestCode + * pass in the request code * @return intent fired */ public static Intent offerBusyBox(Activity activity, int requestCode) { - return InternalMethods.offerBusyBox(activity, requestCode); + return getInternals().offerBusyBox(activity, requestCode); } /** * This will launch the Android market looking for SuperUser * - * @param activity pass in your Activity + * @param activity + * pass in your Activity */ public static void offerSuperUser(Activity activity) { - InternalMethods.offerSuperUser(activity); + getInternals().offerSuperUser(activity); } /** - * This will launch the Android market looking for SuperUser, but will - * return the intent fired and starts the activity with - * startActivityForResult + * This will launch the Android market looking for SuperUser, but will return the intent fired + * and starts the activity with startActivityForResult * - * @param activity pass in your Activity - * @param requestCode pass in the request code + * @param activity + * pass in your Activity + * @param requestCode + * pass in the request code * @return intent fired */ public static Intent offerSuperUser(Activity activity, int requestCode) { - return InternalMethods.offerSuperUser(activity, requestCode); + return getInternals().offerSuperUser(activity, requestCode); } - + /** - * This will take a path, which can contain the file name as well, and - * attempt to remount the underlying partition. + * This will take a path, which can contain the file name as well, and attempt to remount the + * underlying partition. *

    * For example, passing in the following string: - * "/system/bin/some/directory/that/really/would/never/exist" will result in - * /system ultimately being remounted. However, keep in mind that the longer - * the path you supply, the more work this has to do, and the slower it will - * run. + * "/system/bin/some/directory/that/really/would/never/exist" will result in /system ultimately + * being remounted. However, keep in mind that the longer the path you supply, the more work + * this has to do, and the slower it will run. * - * @param file file path - * @param mountType mount type: pass in RO (Read only) or RW (Read Write) - * @return a boolean which indicates whether or not the - * partition has been remounted as specified. + * @param file + * file path + * @param mountType + * mount type: pass in RO (Read only) or RW (Read Write) + * @return a boolean which indicates whether or not the partition has been + * remounted as specified. */ public static boolean remount(String file, String mountType) { - // Recieved a request, get an instance of Remounter + // Recieved a request, get an instance of Remounter Remounter remounter = new Remounter(); // send the request. return (remounter.remount(file, mountType)); } /** - * This restarts only Android OS without rebooting the whole device. This - * does NOT work on all devices. This is done by killing the main init - * process named zygote. Zygote is restarted automatically by Android after - * killing it. + * This restarts only Android OS without rebooting the whole device. This does NOT work on all + * devices. This is done by killing the main init process named zygote. Zygote is restarted + * automatically by Android after killing it. * * @throws TimeoutException */ @@ -583,51 +770,60 @@ public static void restartAndroid() { } /** - * Executes binary in a separated process. Before using this method, the - * binary has to be installed in /data/data/app.package/files/ using the - * installBinary method. + * Executes binary in a separated process. Before using this method, the binary has to be + * installed in /data/data/app.package/files/ using the installBinary method. * - * @param context the current activity's Context - * @param binaryName name of installed binary - * @param parameter parameter to append to binary like "-vxf" + * @param context + * the current activity's Context + * @param binaryName + * name of installed binary + * @param parameter + * parameter to append to binary like "-vxf" */ public static void runBinary(Context context, String binaryName, String parameter) { - Runner runner = new Runner(context, binaryName, parameter); + Runner runner = new Runner(context, binaryName, parameter); runner.start(); } /** - * Executes a given command with root access or without depending on the - * value of the boolean passed. This will also start a root shell or a - * standard shell without you having to open it specifically. You will still - * need to close the shell after you are done using the shell. + * Executes a given command with root access or without depending on the value of the boolean passed. + * This will also start a root shell or a standard shell without you having to open it specifically. * - * @param shell The shell to execute the command on, this can be a root - * shell or a standard shell. - * @param command The command to execute in the shell + * You will still need to close the shell after you are done using the shell. + * + * @param shell + * The shell to execute the command on, this can be a root shell or a standard shell. + * + * @param command + * The command to execute in the shell + * * @throws IOException */ - public static void runShellCommand(Shell shell, Command command) throws IOException { - shell.add(command); - } - + public static void runShellCommand(Shell shell, Command command) throws IOException { + shell.add(command); + } + /** * Sends several shell command as su (attempts to) * - * @param commands array of commands to send to the shell - * @param sleepTime time to sleep between each command, delay. - * @param result injected result object that implements the Result class - * @param timeout How long to wait before throwing TimeoutException, - * sometimes when running root commands on certain devices or - * roms ANR's may occur because a process never returns or - * readline never returns. This allows you to protect your - * application from throwing an ANR. if you pass -1, then the - * default timeout is 5 minutes. - * @return a LinkedList containing each line that was returned - * by the shell after executing or while trying to execute the given - * commands. You must iterate over this list, it does not allow - * random access, so no specifying an index of an item you want, not - * like you're going to know that anyways. + * @param commands + * array of commands to send to the shell + * @param sleepTime + * time to sleep between each command, delay. + * @param result + * injected result object that implements the Result class + * @param timeout + * How long to wait before throwing TimeoutException, sometimes when running root + * commands on certain devices or roms ANR's may occur because a process never + * returns or readline never returns. This allows you to protect your application + * from throwing an ANR. + * + * if you pass -1, then the default timeout is 5 minutes. + * + * @return a LinkedList containing each line that was returned by the shell after + * executing or while trying to execute the given commands. You must iterate over this + * list, it does not allow random access, so no specifying an index of an item you want, + * not like you're going to know that anyways. * @throws InterruptedException * @throws IOException * @throws TimeoutException @@ -638,24 +834,31 @@ public static List sendShell(String[] commands, int sleepTime, Result re } /** - * Sends several shell command as su (attempts to) if useRoot is true; as - * the current user (app_xxx) otherwise. - * - * @param commands array of commands to send to the shell - * @param sleepTime time to sleep between each command, delay. - * @param result injected result object that implements the Result class - * @param useRoot whether to use root or not when issuing these commands. - * @param timeout How long to wait before throwing TimeoutException, - * sometimes when running root commands on certain devices or - * roms ANR's may occur because a process never returns or - * readline never returns. This allows you to protect your - * application from throwing an ANR. if you pass -1, then the - * default timeout is 5 minutes. - * @return a LinkedList containing each line that was returned - * by the shell after executing or while trying to execute the given - * commands. You must iterate over this list, it does not allow - * random access, so no specifying an index of an item you want, not - * like you're going to know that anyways. + * Sends several shell command as su (attempts to) if useRoot is true; as the current user + * (app_xxx) otherwise. + * + * @deprecated + * + * @param commands + * array of commands to send to the shell + * @param sleepTime + * time to sleep between each command, delay. + * @param result + * injected result object that implements the Result class + * @param useRoot + * whether to use root or not when issuing these commands. + * @param timeout + * How long to wait before throwing TimeoutException, sometimes when running root + * commands on certain devices or roms ANR's may occur because a process never + * returns or readline never returns. This allows you to protect your application + * from throwing an ANR. + * + * if you pass -1, then the default timeout is 5 minutes. + * + * @return a LinkedList containing each line that was returned by the shell after + * executing or while trying to execute the given commands. You must iterate over this + * list, it does not allow random access, so no specifying an index of an item you want, + * not like you're going to know that anyways. * @throws InterruptedException * @throws IOException * @throws TimeoutException @@ -668,19 +871,25 @@ public static List sendShell(String[] commands, int sleepTime, Result re /** * Sends several shell command as su, unless useRoot is set to false * - * @param commands array of commands to send to the shell - * @param sleepTime time to sleep between each command, delay. - * @param timeout How long to wait before throwing TimeoutException, - * sometimes when running root commands on certain devices or - * roms ANR's may occur because a process never returns or - * readline never returns. This allows you to protect your - * application from throwing an ANR. if you pass -1, then the - * default timeout is 5 minutes. - * @return a LinkedList containing each line that was returned by the shell - * after executing or while trying to execute the given commands. - * You must iterate over this list, it does not allow random access, - * so no specifying an index of an item you want, not like you're - * going to know that anyways. + * @deprecated + * + * @param commands + * array of commands to send to the shell + * @param sleepTime + * time to sleep between each command, delay. + * @param timeout + * How long to wait before throwing TimeoutException, sometimes when running root + * commands on certain devices or roms ANR's may occur because a process never + * returns or readline never returns. This allows you to protect your application + * from throwing an ANR. + * + * if you pass -1, then the default timeout is 5 minutes. + * + * @return a LinkedList containing each line that was returned by the shell after executing or + * while trying to execute the given commands. You must iterate over this list, it does + * not allow random access, so no specifying an index of an item you want, not like + * you're going to know that anyways. + * * @throws InterruptedException * @throws IOException * @throws TimeoutException @@ -693,19 +902,25 @@ public static List sendShell(String[] commands, int sleepTime, int timeo /** * Sends one shell command as su, unless useRoot is set to false * - * @param command command to send to the shell - * @param result injected result object that implements the Result class - * @param timeout How long to wait before throwing TimeoutException, - * sometimes when running root commands on certain devices or - * roms ANR's may occur because a process never returns or - * readline never returns. This allows you to protect your - * application from throwing an ANR. if you pass -1, then the - * default timeout is 5 minutes. - * @return a LinkedList containing each line that was returned - * by the shell after executing or while trying to execute the given - * commands. You must iterate over this list, it does not allow - * random access, so no specifying an index of an item you want, not - * like you're going to know that anyways. + * @deprecated + * + * @param command + * command to send to the shell + * @param result + * injected result object that implements the Result class + * @param timeout + * How long to wait before throwing TimeoutException, sometimes when running root + * commands on certain devices or roms ANR's may occur because a process never + * returns or readline never returns. This allows you to protect your application + * from throwing an ANR. + * + * if you pass -1, then the default timeout is 5 minutes. + * + * @return a LinkedList containing each line that was returned by the shell after + * executing or while trying to execute the given commands. You must iterate over this + * list, it does not allow random access, so no specifying an index of an item you want, + * not like you're going to know that anyways. + * * @throws InterruptedException * @throws IOException * @throws RootToolsException @@ -713,26 +928,28 @@ public static List sendShell(String[] commands, int sleepTime, int timeo */ public static List sendShell(String command, Result result, int timeout) throws IOException, RootToolsException, TimeoutException { - return sendShell(new String[] { - command - }, 0, result, timeout); + return sendShell(new String[] { command }, 0, result, timeout); } /** * Sends one shell command as su, unless useRoot is set to false * - * @param command command to send to the shell - * @param timeout How long to wait before throwing TimeoutException, - * sometimes when running root commands on certain devices or - * roms ANR's may occur because a process never returns or - * readline never returns. This allows you to protect your - * application from throwing an ANR. if you pass -1, then the - * default timeout is 5 minutes. - * @return a LinkedList containing each line that was returned by the shell - * after executing or while trying to execute the given commands. - * You must iterate over this list, it does not allow random access, - * so no specifying an index of an item you want, not like you're - * going to know that anyways. + * @deprecated + * + * @param command + * command to send to the shell + * @param timeout + * How long to wait before throwing TimeoutException, sometimes when running root + * commands on certain devices or roms ANR's may occur because a process never + * returns or readline never returns. This allows you to protect your application + * from throwing an ANR. + * + * if you pass -1, then the default timeout is 5 minutes. + * + * @return a LinkedList containing each line that was returned by the shell after executing or + * while trying to execute the given commands. You must iterate over this list, it does + * not allow random access, so no specifying an index of an item you want, not like + * you're going to know that anyways. * @throws InterruptedException * @throws IOException * @throws TimeoutException @@ -782,67 +999,108 @@ public int getError() { return error; } } + /** - * This method allows you to output debug messages only when debugging is - * on. This will allow you to add a debug option to your app, which by - * default can be left off for performance. However, when you need debugging - * information, a simple switch can enable it and provide you with detailed - * logging. + * This method allows you to output debug messages only when debugging is on. This will allow + * you to add a debug option to your app, which by default can be left off for performance. + * However, when you need debugging information, a simple switch can enable it and provide you + * with detailed logging. *

    - * This method handles whether or not to log the information you pass it - * depending whether or not RootTools.debugMode is on. So you can use this - * and not have to worry about handling it yourself. - * - * @param TAG Optional parameter to define the tag that the Log will use. - * @param msg The message to output. - * @param type The type of log, 1 for verbose, 2 for error, 3 for debug - * @param exception The exception that was thrown (Needed for errors) + * This method handles whether or not to log the information you pass it depending whether or + * not RootTools.debugMode is on. So you can use this and not have to worry about handling it + * yourself. + * + * @param msg + * The message to output. */ public static void log(String msg) { - if(debugMode) - Logger.LogDebug("Root Tools: " + msg); - // log(null, msg, 3, null); + log(null, msg, 3, null); } + /** + * This method allows you to output debug messages only when debugging is on. This will allow + * you to add a debug option to your app, which by default can be left off for performance. + * However, when you need debugging information, a simple switch can enable it and provide you + * with detailed logging. + *

    + * This method handles whether or not to log the information you pass it depending whether or + * not RootTools.debugMode is on. So you can use this and not have to worry about handling it + * yourself. + * + * @param TAG + * Optional parameter to define the tag that the Log will use. + * @param msg + * The message to output. + * + */ public static void log(String TAG, String msg) { - if(debugMode) - Logger.LogDebug("RootTools: " + TAG + ": " + msg); - // log(TAG, msg, 3, null); + log(TAG, msg, 3, null); } + /** + * This method allows you to output debug messages only when debugging is on. This will allow + * you to add a debug option to your app, which by default can be left off for performance. + * However, when you need debugging information, a simple switch can enable it and provide you + * with detailed logging. + *

    + * This method handles whether or not to log the information you pass it depending whether or + * not RootTools.debugMode is on. So you can use this and not have to worry about handling it + * yourself. + * + * @param msg + * The message to output. + * + * @param type + * The type of log, 1 for verbose, 2 for error, 3 for debug + * + * @param e + * The exception that was thrown (Needed for errors) + */ public static void log(String msg, int type, Exception e) { - if(!debugMode && type != 2) return; - if (type == 1) - Logger.LogVerbose("Root Tools: " + msg, e); - else if (type == 2) - Logger.LogError("Root Tools: " + msg, e); - else - Logger.LogDebug("Root Tools: " + msg, e); - // log(null, msg, type, e); + log(null, msg, type, e); } + /** + * This method allows you to output debug messages only when debugging is on. This will allow + * you to add a debug option to your app, which by default can be left off for performance. + * However, when you need debugging information, a simple switch can enable it and provide you + * with detailed logging. + *

    + * This method handles whether or not to log the information you pass it depending whether or + * not RootTools.debugMode is on. So you can use this and not have to worry about handling it + * yourself. + * + * @param TAG + * Optional parameter to define the tag that the Log will use. + * @param msg + * The message to output. + * + * @param type + * The type of log, 1 for verbose, 2 for error, 3 for debug + * + * @param e + * The exception that was thrown (Needed for errors) + */ public static void log(String TAG, String msg, int type, Exception e) { if (msg != null && !msg.equals("")) { if (debugMode) { if (TAG == null) { - TAG = InternalVariables.TAG; - } - - switch (type) { - case 1: - Logger.LogVerbose("Root Tools: (" + TAG + ") " + msg, e); - // Log.v(TAG, msg); - break; - case 2: - Logger.LogError("Root Tools: (" + TAG + ") " + msg, e); - // Log.e(TAG, msg, e); - break; - case 3: - Logger.LogDebug("Root Tools: (" + TAG + ") " + msg, e); - // Log.d(TAG, msg); - break; + TAG = Constants.TAG; } + + switch (type) + { + case 1: + Logger.LogVerbose(TAG + ": " + msg); + break; + case 2: + Logger.LogError(TAG + ": " + msg, e); + break; + case 3: + Logger.LogDebug(TAG + ": " + msg); + break; + } } } } diff --git a/src/com/stericson/RootTools/Shell.java b/src/com/stericson/RootTools/Shell.java deleted file mode 100644 index 437798fc..00000000 --- a/src/com/stericson/RootTools/Shell.java +++ /dev/null @@ -1,351 +0,0 @@ -/* - * This file is part of the RootTools Project: http://code.google.com/p/roottools/ - * - * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks - * - * This code is dual-licensed under the terms of the Apache License Version 2.0 and - * the terms of the General Public License (GPL) Version 2. - * You may use this code according to either of these licenses as is most appropriate - * for your project on a case-by-case basis. - * - * The terms of each license can be found in the root directory of this project's repository as well as at: - * - * * http://www.apache.org/licenses/LICENSE-2.0 - * * http://www.gnu.org/licenses/gpl-2.0.txt - * - * Unless required by applicable law or agreed to in writing, software - * distributed under these Licenses is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See each License for the specific language governing permissions and - * limitations under that License. - */ - -/* - *Special thanks to Jeremy Lakeman for the following code and for teaching me something new. - * - *Stephen - */ - -package com.stericson.RootTools; - -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.EOFException; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import android.os.SystemClock; - -public class Shell { - private final Process proc; - private final DataInputStream in; - private final DataOutputStream out; - private final List commands = new ArrayList(); - private boolean close = false; - - private static final String token = "F*D^W@#FGF"; - private static Shell rootShell = null; - private static Shell shell = null; - private static Shell customShell = null; - - public static Shell getOpenShell() - { - if (customShell != null) - return customShell; - else if (rootShell != null) - return rootShell; - else - return shell; - } - - public static Shell startRootShell() throws IOException { - if (rootShell == null) { - RootTools.log("Starting Root Shell!"); - String cmd = "su"; - // keep prompting the user until they accept, we hit 10 retries, or - // the attempt fails quickly - int retries = 0; - while (rootShell == null) { - long start = SystemClock.elapsedRealtime(); - try { - rootShell = new Shell(cmd); - } catch (IOException e) { - long delay = SystemClock.elapsedRealtime() - start; - if (delay < 500 || retries++ >= 2) - { - RootTools.log("IOException, could not start shell"); - throw e; - } - } - } - } - else - { - RootTools.log("Using Existing Root Shell!"); - } - - return rootShell; - } - - public static Shell startCustomShell(String shellPath) throws IOException { - if (customShell == null) { - RootTools.log("Starting Custom Shell!"); - customShell = new Shell(shellPath); - } - else - RootTools.log("Using Existing Custom Shell!"); - - return customShell; - } - - public static Shell startShell() throws IOException { - if (shell == null) { - RootTools.log("Starting Shell!"); - shell = new Shell("/system/bin/sh"); - } - else - RootTools.log("Using Existing Shell!"); - return shell; - } - - public static void runRootCommand(Command command) throws IOException { - startRootShell().add(command); - } - - public static void runCommand(Command command) throws IOException { - startShell().add(command); - } - - public static void closeCustomShell() throws IOException { - if (customShell == null) - return; - customShell.close(); - } - - public static void closeRootShell() throws IOException { - if (rootShell == null) - return; - rootShell.close(); - } - - public static void closeShell() throws IOException { - if (shell == null) - return; - shell.close(); - } - - public static void closeAll() throws IOException - { - closeShell(); - closeRootShell(); - closeCustomShell(); - } - - public static boolean isShellOpen() - { - if (shell == null) - return false; - else - return true; - } - - public static boolean isCustomShellOpen() - { - if (customShell == null) - return false; - else - return true; - } - - public static boolean isRootShellOpen() - { - if (rootShell == null) - return false; - else - return true; - } - - public static boolean isAnyShellOpen() - { - if (shell != null) - return true; - else if (rootShell != null) - return true; - else if (customShell != null) - return true; - else - return false; - } - - private Shell(String cmd) throws IOException { - - RootTools.log("Starting shell: " + cmd); - - proc = new ProcessBuilder(cmd).redirectErrorStream(true).start(); - in = new DataInputStream(proc.getInputStream()); - out = new DataOutputStream(proc.getOutputStream()); - - out.write("echo Started\n".getBytes()); - out.flush(); - - while (true) { - String line = in.readLine(); - if (line == null) - throw new EOFException(); - if ("".equals(line)) - continue; - if ("Started".equals(line)) - break; - - proc.destroy(); - throw new IOException("Unable to start shell, unexpected output \"" - + line + "\""); - } - - new Thread(input, "Shell Input").start(); - new Thread(output, "Shell Output").start(); - } - - private Runnable input = new Runnable() { - public void run() { - try { - writeCommands(); - } catch (IOException e) { - RootTools.log(e.getMessage(), 2, e); - } - } - }; - - private void writeCommands() throws IOException { - try { - int write = 0; - while (true) { - DataOutputStream out; - synchronized (commands) { - while (!close && write >= commands.size()) { - commands.wait(); - } - out = this.out; - } - if (write < commands.size()) { - Command next = commands.get(write); - next.writeCommand(out); - String line = "\necho " + token + " " + write + " $?\n"; - out.write(line.getBytes()); - out.flush(); - write++; - } else if (close) { - out.write("\nexit 0\n".getBytes()); - out.flush(); - out.close(); - RootTools.log("Closing shell"); - return; - } - } - } catch (InterruptedException e) { - RootTools.log(e.getMessage(), 2, e); - } - } - - private Runnable output = new Runnable() { - public void run() { - try { - readOutput(); - } catch (IOException e) { - RootTools.log(e.getMessage(), 2, e); - } catch (InterruptedException e) { - RootTools.log(e.getMessage(), 2, e); - } - } - }; - - private void readOutput() throws IOException, InterruptedException { - Command command = null; - int read = 0; - while (true) { - String line = in.readLine(); - - // terminate on EOF - if (line == null) - break; - - // Log.v("Shell", "Out; \"" + line + "\""); - if (command == null) { - if (read >= commands.size()) - { - if (close) - break; - continue; - } - command = commands.get(read); - } - - int pos = line.indexOf(token); - if (pos > 0) - command.output(command.id, line.substring(0, pos)); - if (pos >= 0) { - line = line.substring(pos); - String fields[] = line.split(" "); - int id = Integer.parseInt(fields[1]); - if (id == read) { - command.setExitCode(Integer.parseInt(fields[2])); - read++; - command = null; - continue; - } - } - command.output(command.id, line); - } - RootTools.log("Read all output"); - proc.waitFor(); - proc.destroy(); - RootTools.log("Shell destroyed"); - - while (read < commands.size()) { - if (command == null) - command = commands.get(read); - command.terminated("Unexpected Termination."); - command = null; - read++; - } - } - - public Command add(Command command) throws IOException { - if (close) - throw new IllegalStateException( - "Unable to add commands to a closed shell"); - synchronized (commands) { - commands.add(command); - commands.notifyAll(); - } - - return command; - } - - public void close() throws IOException { - if (this == rootShell) - rootShell = null; - if (this == shell) - shell = null; - if (this == customShell) - customShell = null; - synchronized (commands) { - this.close = true; - commands.notifyAll(); - } - } - - public int countCommands() { - return commands.size(); - } - - public void waitFor() throws IOException, InterruptedException { - close(); - if (commands.size() > 0) - { - Command command = commands.get(commands.size() - 1); - command.exitCode(); - } - } -} \ No newline at end of file diff --git a/src/com/stericson/RootTools/containers/.svn/all-wcprops b/src/com/stericson/RootTools/containers/.svn/all-wcprops new file mode 100644 index 00000000..ad34c77e --- /dev/null +++ b/src/com/stericson/RootTools/containers/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 99 +/svn/!svn/ver/232/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/containers +END +Mount.java +K 25 +svn:wc:ra_dav:version-url +V 110 +/svn/!svn/ver/232/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/containers/Mount.java +END +Symlink.java +K 25 +svn:wc:ra_dav:version-url +V 112 +/svn/!svn/ver/228/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/containers/Symlink.java +END +Permissions.java +K 25 +svn:wc:ra_dav:version-url +V 116 +/svn/!svn/ver/228/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/containers/Permissions.java +END diff --git a/src/com/stericson/RootTools/containers/.svn/entries b/src/com/stericson/RootTools/containers/.svn/entries new file mode 100644 index 00000000..b719c990 --- /dev/null +++ b/src/com/stericson/RootTools/containers/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +249 +http://roottools.googlecode.com/svn/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/containers +http://roottools.googlecode.com/svn + + + +2013-02-14T03:55:31.156897Z +232 +stericson.g1 + + + + + + + + + + + + + + +326c17ea-325e-592a-0117-b1346ba49fde + +Mount.java +file + + + + +2013-05-10T21:35:37.000000Z +dd7d6231470ff5e53ec144588e267641 +2013-02-14T03:55:31.156897Z +232 +stericson.g1 + + + + + + + + + + + + + + + + + + + + + +2006 + +Symlink.java +file + + + + +2013-05-10T21:35:37.000000Z +a69328e41c26c1bb6714a79802b3109e +2012-10-04T15:16:32.967479Z +228 +Stericson.g1@gmail.com + + + + + + + + + + + + + + + + + + + + + +1447 + +Permissions.java +file + + + + +2013-05-10T21:35:37.000000Z +cc18d537d419ca864bfda3ccfb063cab +2012-10-04T15:16:32.967479Z +228 +Stericson.g1@gmail.com + + + + + + + + + + + + + + + + + + + + + +2593 + diff --git a/src/com/stericson/RootTools/containers/.svn/text-base/Mount.java.svn-base b/src/com/stericson/RootTools/containers/.svn/text-base/Mount.java.svn-base new file mode 100644 index 00000000..585087bf --- /dev/null +++ b/src/com/stericson/RootTools/containers/.svn/text-base/Mount.java.svn-base @@ -0,0 +1,64 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +package com.stericson.RootTools.containers; + +import java.io.File; +import java.util.Arrays; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.Set; + +public class Mount { + final File mDevice; + final File mMountPoint; + final String mType; + final Set mFlags; + + public Mount(File device, File path, String type, String flagsStr) { + mDevice = device; + mMountPoint = path; + mType = type; + mFlags = new LinkedHashSet(Arrays.asList(flagsStr.split(","))); + } + + public File getDevice() { + return mDevice; + } + + public File getMountPoint() { + return mMountPoint; + } + + public String getType() { + return mType; + } + + public Set getFlags() { + return mFlags; + } + + @Override + public String toString() { + return String.format("%s on %s type %s %s", mDevice, mMountPoint, mType, mFlags); + } +} diff --git a/src/com/stericson/RootTools/containers/.svn/text-base/Permissions.java.svn-base b/src/com/stericson/RootTools/containers/.svn/text-base/Permissions.java.svn-base new file mode 100644 index 00000000..d9f14c00 --- /dev/null +++ b/src/com/stericson/RootTools/containers/.svn/text-base/Permissions.java.svn-base @@ -0,0 +1,124 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +package com.stericson.RootTools.containers; + +public class Permissions { + String type; + String user; + String group; + String other; + String symlink; + int permissions; + + public String getSymlink() + { + return this.symlink; + } + + public String getType() + { + return type; + } + + public int getPermissions() + { + return this.permissions; + } + + public String getUserPermissions() + { + return this.user; + } + + public String getGroupPermissions() + { + return this.group; + } + + public String getOtherPermissions() + { + return this.other; + } + + public void setSymlink(String symlink) + { + this.symlink = symlink; + } + + public void setType(String type) + { + this.type = type; + } + + public void setPermissions(int permissions) + { + this.permissions = permissions; + } + + public void setUserPermissions(String user) + { + this.user = user; + } + + public void setGroupPermissions(String group) + { + this.group = group; + } + + public void setOtherPermissions(String other) + { + this.other = other; + } + + public String getUser() + { + return user; + } + + public void setUser(String user) + { + this.user = user; + } + + public String getGroup() + { + return group; + } + + public void setGroup(String group) + { + this.group = group; + } + + public String getOther() + { + return other; + } + + public void setOther(String other) + { + this.other = other; + } + + +} diff --git a/src/com/stericson/RootTools/containers/.svn/text-base/Symlink.java.svn-base b/src/com/stericson/RootTools/containers/.svn/text-base/Symlink.java.svn-base new file mode 100644 index 00000000..0162756b --- /dev/null +++ b/src/com/stericson/RootTools/containers/.svn/text-base/Symlink.java.svn-base @@ -0,0 +1,43 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +package com.stericson.RootTools.containers; + +import java.io.File; + +public class Symlink { + protected final File file; + protected final File symlinkPath; + + public Symlink(File file, File path) { + this.file = file; + symlinkPath = path; + } + + public File getFile() { + return this.file; + } + + public File getSymlinkPath() { + return symlinkPath; + } +} diff --git a/src/com/stericson/RootTools/Mount.java b/src/com/stericson/RootTools/containers/Mount.java similarity index 82% rename from src/com/stericson/RootTools/Mount.java rename to src/com/stericson/RootTools/containers/Mount.java index 62c5c5f3..585087bf 100644 --- a/src/com/stericson/RootTools/Mount.java +++ b/src/com/stericson/RootTools/containers/Mount.java @@ -20,24 +20,25 @@ * limitations under that License. */ -package com.stericson.RootTools; +package com.stericson.RootTools.containers; import java.io.File; import java.util.Arrays; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.Set; public class Mount { - protected final File mDevice; - protected final File mMountPoint; - protected final String mType; - protected final Set mFlags; + final File mDevice; + final File mMountPoint; + final String mType; + final Set mFlags; - Mount(File device, File path, String type, String flagsStr) { + public Mount(File device, File path, String type, String flagsStr) { mDevice = device; mMountPoint = path; mType = type; - mFlags = new HashSet(Arrays.asList(flagsStr.split(","))); + mFlags = new LinkedHashSet(Arrays.asList(flagsStr.split(","))); } public File getDevice() { diff --git a/src/com/stericson/RootTools/Permissions.java b/src/com/stericson/RootTools/containers/Permissions.java similarity index 84% rename from src/com/stericson/RootTools/Permissions.java rename to src/com/stericson/RootTools/containers/Permissions.java index 3cbdb541..d9f14c00 100644 --- a/src/com/stericson/RootTools/Permissions.java +++ b/src/com/stericson/RootTools/containers/Permissions.java @@ -20,7 +20,7 @@ * limitations under that License. */ -package com.stericson.RootTools; +package com.stericson.RootTools.containers; public class Permissions { String type; @@ -89,4 +89,36 @@ public void setOtherPermissions(String other) { this.other = other; } + + public String getUser() + { + return user; + } + + public void setUser(String user) + { + this.user = user; + } + + public String getGroup() + { + return group; + } + + public void setGroup(String group) + { + this.group = group; + } + + public String getOther() + { + return other; + } + + public void setOther(String other) + { + this.other = other; + } + + } diff --git a/src/com/stericson/RootTools/Symlink.java b/src/com/stericson/RootTools/containers/Symlink.java similarity index 93% rename from src/com/stericson/RootTools/Symlink.java rename to src/com/stericson/RootTools/containers/Symlink.java index ad57656e..0162756b 100644 --- a/src/com/stericson/RootTools/Symlink.java +++ b/src/com/stericson/RootTools/containers/Symlink.java @@ -20,7 +20,7 @@ * limitations under that License. */ -package com.stericson.RootTools; +package com.stericson.RootTools.containers; import java.io.File; @@ -28,7 +28,7 @@ public class Symlink { protected final File file; protected final File symlinkPath; - Symlink(File file, File path) { + public Symlink(File file, File path) { this.file = file; symlinkPath = path; } diff --git a/src/com/stericson/RootTools/exceptions/.svn/all-wcprops b/src/com/stericson/RootTools/exceptions/.svn/all-wcprops new file mode 100644 index 00000000..c27c7236 --- /dev/null +++ b/src/com/stericson/RootTools/exceptions/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 99 +/svn/!svn/ver/228/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/exceptions +END +RootToolsException.java +K 25 +svn:wc:ra_dav:version-url +V 123 +/svn/!svn/ver/228/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/exceptions/RootToolsException.java +END +RootDeniedException.java +K 25 +svn:wc:ra_dav:version-url +V 124 +/svn/!svn/ver/228/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/exceptions/RootDeniedException.java +END diff --git a/src/com/stericson/RootTools/exceptions/.svn/entries b/src/com/stericson/RootTools/exceptions/.svn/entries new file mode 100644 index 00000000..63fa024e --- /dev/null +++ b/src/com/stericson/RootTools/exceptions/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +249 +http://roottools.googlecode.com/svn/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/exceptions +http://roottools.googlecode.com/svn + + + +2012-10-04T15:16:32.967479Z +228 +Stericson.g1@gmail.com + + + + + + + + + + + + + + +326c17ea-325e-592a-0117-b1346ba49fde + +RootToolsException.java +file + + + + +2013-05-10T21:35:37.000000Z +ed9da4638143f8dbdced0a69fbb0a178 +2012-10-04T15:16:32.967479Z +228 +Stericson.g1@gmail.com + + + + + + + + + + + + + + + + + + + + + +1383 + +RootDeniedException.java +file + + + + +2013-05-10T21:35:37.000000Z +329b8057a8dc12770b4c5f90836f4911 +2012-10-04T15:16:32.967479Z +228 +Stericson.g1@gmail.com + + + + + + + + + + + + + + + + + + + + + +1382 + diff --git a/src/com/stericson/RootTools/exceptions/.svn/text-base/RootDeniedException.java.svn-base b/src/com/stericson/RootTools/exceptions/.svn/text-base/RootDeniedException.java.svn-base new file mode 100644 index 00000000..d150e596 --- /dev/null +++ b/src/com/stericson/RootTools/exceptions/.svn/text-base/RootDeniedException.java.svn-base @@ -0,0 +1,36 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +package com.stericson.RootTools.exceptions; + +/** + * Developers may throw this exception from within their code + * when using IResult as a means to change the program flow. + */ +public class RootDeniedException extends Exception { + + private static final long serialVersionUID = -8713947214162841310L; + + public RootDeniedException(String error) { + super(error); + } +} diff --git a/src/com/stericson/RootTools/exceptions/.svn/text-base/RootToolsException.java.svn-base b/src/com/stericson/RootTools/exceptions/.svn/text-base/RootToolsException.java.svn-base new file mode 100644 index 00000000..d9c06573 --- /dev/null +++ b/src/com/stericson/RootTools/exceptions/.svn/text-base/RootToolsException.java.svn-base @@ -0,0 +1,36 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +package com.stericson.RootTools.exceptions; + +/** + * Developers may throw this exception from within their code + * when using IResult as a means to change the program flow. + */ +public class RootToolsException extends Exception { + + private static final long serialVersionUID = -4431771251773644144L; + + public RootToolsException(Throwable th) { + super(th); + } +} diff --git a/src/com/stericson/RootTools/exceptions/RootDeniedException.java b/src/com/stericson/RootTools/exceptions/RootDeniedException.java new file mode 100644 index 00000000..d150e596 --- /dev/null +++ b/src/com/stericson/RootTools/exceptions/RootDeniedException.java @@ -0,0 +1,36 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +package com.stericson.RootTools.exceptions; + +/** + * Developers may throw this exception from within their code + * when using IResult as a means to change the program flow. + */ +public class RootDeniedException extends Exception { + + private static final long serialVersionUID = -8713947214162841310L; + + public RootDeniedException(String error) { + super(error); + } +} diff --git a/src/com/stericson/RootTools/RootToolsException.java b/src/com/stericson/RootTools/exceptions/RootToolsException.java similarity index 96% rename from src/com/stericson/RootTools/RootToolsException.java rename to src/com/stericson/RootTools/exceptions/RootToolsException.java index be8d5838..d9c06573 100644 --- a/src/com/stericson/RootTools/RootToolsException.java +++ b/src/com/stericson/RootTools/exceptions/RootToolsException.java @@ -20,7 +20,7 @@ * limitations under that License. */ -package com.stericson.RootTools; +package com.stericson.RootTools.exceptions; /** * Developers may throw this exception from within their code diff --git a/src/com/stericson/RootTools/execution/.svn/all-wcprops b/src/com/stericson/RootTools/execution/.svn/all-wcprops new file mode 100644 index 00000000..d5b3a2ea --- /dev/null +++ b/src/com/stericson/RootTools/execution/.svn/all-wcprops @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 98 +/svn/!svn/ver/233/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/execution +END +CommandCapture.java +K 25 +svn:wc:ra_dav:version-url +V 118 +/svn/!svn/ver/228/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/execution/CommandCapture.java +END +Executer.java +K 25 +svn:wc:ra_dav:version-url +V 112 +/svn/!svn/ver/228/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/execution/Executer.java +END +IResult.java +K 25 +svn:wc:ra_dav:version-url +V 111 +/svn/!svn/ver/228/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/execution/IResult.java +END +Shell.java +K 25 +svn:wc:ra_dav:version-url +V 109 +/svn/!svn/ver/233/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/execution/Shell.java +END +Command.java +K 25 +svn:wc:ra_dav:version-url +V 111 +/svn/!svn/ver/232/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/execution/Command.java +END diff --git a/src/com/stericson/RootTools/execution/.svn/entries b/src/com/stericson/RootTools/execution/.svn/entries new file mode 100644 index 00000000..d3babda2 --- /dev/null +++ b/src/com/stericson/RootTools/execution/.svn/entries @@ -0,0 +1,198 @@ +10 + +dir +249 +http://roottools.googlecode.com/svn/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/execution +http://roottools.googlecode.com/svn + + + +2013-02-14T21:30:45.116390Z +233 +stericson.g1 + + + + + + + + + + + + + + +326c17ea-325e-592a-0117-b1346ba49fde + +CommandCapture.java +file + + + + +2013-05-10T21:35:37.000000Z +66476aa0e8a8e22b23cb994056708763 +2012-10-04T15:16:32.967479Z +228 +Stericson.g1@gmail.com + + + + + + + + + + + + + + + + + + + + + +1596 + +Executer.java +file + + + + +2013-05-10T21:35:37.000000Z +6ee3e08accce93d7892f4fe75dd9b3a3 +2012-10-04T15:16:32.967479Z +228 +Stericson.g1@gmail.com + + + + + + + + + + + + + + + + + + + + + +7959 + +IResult.java +file + + + + +2013-05-10T21:35:37.000000Z +cb08d8633b472987ea5942e72149beee +2012-10-04T15:16:32.967479Z +228 +Stericson.g1@gmail.com + + + + + + + + + + + + + + + + + + + + + +1809 + +Shell.java +file + + + + +2013-05-10T21:35:37.000000Z +e737943fdd5f33aadd0d82da513c1b2e +2013-02-14T21:30:45.116390Z +233 +stericson.g1 + + + + + + + + + + + + + + + + + + + + + +11261 + +Command.java +file + + + + +2013-05-10T21:35:37.000000Z +dc1fbc8c767e641d93234bddf52db4b1 +2013-02-14T03:55:31.156897Z +232 +stericson.g1 + + + + + + + + + + + + + + + + + + + + + +3462 + diff --git a/src/com/stericson/RootTools/execution/.svn/text-base/Command.java.svn-base b/src/com/stericson/RootTools/execution/.svn/text-base/Command.java.svn-base new file mode 100644 index 00000000..d734179c --- /dev/null +++ b/src/com/stericson/RootTools/execution/.svn/text-base/Command.java.svn-base @@ -0,0 +1,136 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +/* + *Special thanks to Jeremy Lakeman for the following code and for teaching me something new. + * + *Stephen + */ + +package com.stericson.RootTools.execution; + +import java.io.IOException; +import java.io.OutputStreamWriter; + +import com.stericson.RootTools.RootTools; + +public abstract class Command { + final String[] command; + boolean finished = false; + int exitCode; + int id = 0; + int timeout = 5000; + + public Command(int id, String... command) { + this.command = command; + this.id = id; + } + + public Command(int id, int timeout, String... command) { + this.command = command; + this.id = id; + this.timeout = timeout; + } + + public String getCommand() { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < command.length; i++) { + sb.append(command[i]); + sb.append('\n'); + } + RootTools.log("Sending command(s): " + sb.toString()); + return sb.toString(); + } + + public void writeCommand(OutputStreamWriter out) throws IOException { + out.write(getCommand()); + } + + public abstract void output(int id, String line); + + public void commandFinished(int id) + { + RootTools.log("Command " + id + "finished."); + } + + public void setExitCode(int code) { + synchronized (this) { + exitCode = code; + finished = true; + commandFinished(id); + this.notifyAll(); + } + } + + public void terminate(String reason) { + try + { + Shell.closeAll(); + RootTools.log("Terminating all shells."); + terminated(reason); + } + catch (IOException e) {} + } + + public void terminated(String reason) { + setExitCode(-1); + RootTools.log("Command " + id + " did not finish."); + } + + // waits for this command to finish + public void waitForFinish(int timeout) throws InterruptedException { + synchronized (this) { + while (!finished) { + this.wait(timeout); + + if (!finished) + { + finished = true; + RootTools.log("Timeout Exception has occurred."); + terminate("Timeout Exception"); + } + } + } + } + + // waits for this command to finish and returns the exit code + public int exitCode(int timeout) throws InterruptedException { + synchronized (this) { + waitForFinish(timeout); + } + return exitCode; + } + + // waits for this command to finish + public void waitForFinish() throws InterruptedException { + synchronized (this) { + waitForFinish(timeout); + } + } + + // waits for this command to finish and returns the exit code + public int exitCode() throws InterruptedException { + synchronized (this) { + return exitCode(timeout); + } + } +} \ No newline at end of file diff --git a/src/com/stericson/RootTools/execution/.svn/text-base/CommandCapture.java.svn-base b/src/com/stericson/RootTools/execution/.svn/text-base/CommandCapture.java.svn-base new file mode 100644 index 00000000..65cf7ff3 --- /dev/null +++ b/src/com/stericson/RootTools/execution/.svn/text-base/CommandCapture.java.svn-base @@ -0,0 +1,50 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +/* + *Special thanks to Jeremy Lakeman for the following code and for teaching me something new. + * + *Stephen + */ + +package com.stericson.RootTools.execution; + +import com.stericson.RootTools.RootTools; + +public class CommandCapture extends Command { + private StringBuilder sb = new StringBuilder(); + + public CommandCapture(int id, String... command) { + super(id, command); + } + + @Override + public void output(int id, String line) { + sb.append(line).append('\n'); + RootTools.log("Command", "ID: " + id + ", " + line); + } + + @Override + public String toString() { + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/com/stericson/RootTools/execution/.svn/text-base/Executer.java.svn-base b/src/com/stericson/RootTools/execution/.svn/text-base/Executer.java.svn-base new file mode 100644 index 00000000..e9af009a --- /dev/null +++ b/src/com/stericson/RootTools/execution/.svn/text-base/Executer.java.svn-base @@ -0,0 +1,290 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +package com.stericson.RootTools.execution; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.LinkedList; +import java.util.List; +import java.util.concurrent.TimeoutException; + +import com.stericson.RootTools.RootTools; +import com.stericson.RootTools.RootTools.Result; +import com.stericson.RootTools.exceptions.RootToolsException; + +public class Executer { + + protected Process process = null; + protected Result result = null; + + // ------------ + // # Executer # + // ------------ + + /** + * Sends several shell command as su (attempts to) + * + * @deprecated + * + * @param commands + * array of commands to send to the shell + * + * @param sleepTime + * time to sleep between each command, delay. + * + * @param result + * injected result object that implements the Result class + * + * @return a LinkedList containing each line that was returned + * by the shell after executing or while trying to execute the given + * commands. You must iterate over this list, it does not allow + * random access, so no specifying an index of an item you want, not + * like you're going to know that anyways. + * + * @throws InterruptedException + * + * @throws IOException + * @throws TimeoutException + * + */ + public synchronized List sendShell(String[] commands, int sleepTime, + Result result, boolean useRoot, int timeout) throws IOException, + RootToolsException, TimeoutException { + + RootTools.log("Sending " + commands.length + " shell command" + (commands.length > 1 ? "s" : "")); + + Worker worker = new Worker(this, commands, sleepTime, result, useRoot); + worker.start(); + + try + { + if (timeout == -1) + { + timeout = 300000; + } + + worker.join(timeout); + + //small pause, let things catch up + Thread.sleep(RootTools.shellDelay); + + if (worker.exit != -911) + return worker.finalResponse; + else + throw new TimeoutException(); + } + catch(InterruptedException ex) + { + worker.interrupt(); + Thread.currentThread().interrupt(); + throw new TimeoutException(); + } + + } + + private static class Worker extends Thread + { + private String[] commands; + private int sleepTime; + private boolean useRoot; + public int exit = -911; + public List finalResponse; + private Executer executer; + + + private Worker(Executer executer, String[] commands, int sleepTime, Result result, boolean useRoot) + { + this.commands = commands; + this.sleepTime = sleepTime; + this.executer = executer; + this.executer.result = result; + this.useRoot = useRoot; + } + public void run() + { + DataOutputStream os = null; + InputStreamReader osRes = null; + InputStreamReader osErr = null; + + try + { + if (executer.process == null) + { + Runtime.getRuntime().gc(); + + if (RootTools.customShell.equals("")) + { + executer.process = Runtime.getRuntime().exec(useRoot ? "su" : "sh"); + RootTools.log(useRoot ? "Using Root" : "Using sh"); + } + else + { + executer.process = Runtime.getRuntime().exec(RootTools.customShell); + RootTools.log("Using custom shell: " + RootTools.customShell); + } + + if (null != executer.result) { + executer.result.setProcess(executer.process); + } + } + + os = new DataOutputStream(executer.process.getOutputStream()); + osRes = new InputStreamReader(executer.process.getInputStream()); + osErr = new InputStreamReader(executer.process.getErrorStream()); + BufferedReader reader = new BufferedReader(osRes); + BufferedReader reader_error = new BufferedReader(osErr); + + List response = null; + + if (null == executer.result) { + response = new LinkedList(); + } + + try { + + // Doing Stuff ;) + for (String single : commands) { + RootTools.log("Shell command: " + single); + os.writeBytes(single + "\n"); + os.flush(); + Thread.sleep(sleepTime); + } + + os.writeBytes("exit \n"); + os.flush(); + + String line = reader.readLine(); + String line_error = reader_error.readLine(); + + while (line != null) { + if (null == executer.result) { + response.add(line); + } else { + executer.result.process(line); + } + + RootTools.log("input stream: " + line); + + line = reader.readLine(); + } + + RootTools.log("Done reading input stream"); + + while (line_error != null) { + if (null == executer.result) { + response.add(line_error); + } else { + executer.result.processError(line_error); + } + + RootTools.log("error stream: " + line_error); + line_error = reader_error.readLine(); + } + + RootTools.log("Done reading error stream"); + + } + catch (Exception ex) + { + if (RootTools.debugMode) { + RootTools.log("Error: " + ex.getMessage()); + } + + if (null != executer.result) + { + executer.result.onFailure(ex); + } + } finally { + RootTools.log("In finally block"); + + if (executer.process != null) { + RootTools.log("Getting Exit"); + finalResponse = response; + exit = -1; + exit = executer.process.waitFor(); + RootTools.log("Exit done..."); + RootTools.lastExitCode = exit; + + if (null != executer.result) { + executer.result.onComplete(exit); + } else { + response.add(Integer.toString(exit)); + } + } + } + } + catch (InterruptedException ignore) + { + return; + } + catch (Exception e) { + if (RootTools.debugMode) { + e.printStackTrace(); + RootTools.log("Error: " + e.getMessage()); + } + } finally { + + try { + + if (os != null) { + os.writeBytes("exit \n"); + os.flush(); + os.close(); + os = null; + } + if (osRes != null) { + osRes.close(); + osRes = null; + } + if (osErr != null) { + osErr.close(); + osErr = null; + } + } catch (Exception ignore) {} + + + executer.closeShell(); + + } + } + } + + private void closeShell() + { + if (this.process != null) + { + try { + //if this fails, ignore it and dont crash. + this.process.destroy(); + } catch (Exception ignore) {} + this.process = null; + } + + if (this.result != null) + { + this.result = null; + } + } +} diff --git a/src/com/stericson/RootTools/execution/.svn/text-base/IResult.java.svn-base b/src/com/stericson/RootTools/execution/.svn/text-base/IResult.java.svn-base new file mode 100644 index 00000000..83196974 --- /dev/null +++ b/src/com/stericson/RootTools/execution/.svn/text-base/IResult.java.svn-base @@ -0,0 +1,46 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +package com.stericson.RootTools.execution; + +import java.io.Serializable; + +/** + * Implement this interface and inject the resulting object + * when invoking sendShell. + * RootTools comes with a reference implementation: + * RootTools.Result + */ +public interface IResult { + public abstract void process(String line) throws Exception; + public abstract void processError(String line) throws Exception; + public abstract void onFailure(Exception ex); + public abstract void onComplete(int diag); + + public IResult setProcess(Process process); + public Process getProcess(); + public IResult setData(Serializable data); + public Serializable getData(); + public IResult setError(int error); + public int getError(); + +} diff --git a/src/com/stericson/RootTools/execution/.svn/text-base/Shell.java.svn-base b/src/com/stericson/RootTools/execution/.svn/text-base/Shell.java.svn-base new file mode 100644 index 00000000..575553fd --- /dev/null +++ b/src/com/stericson/RootTools/execution/.svn/text-base/Shell.java.svn-base @@ -0,0 +1,454 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +/* + *Special thanks to Jeremy Lakeman for the following code and for teaching me something new. + * + *Stephen + */ + +package com.stericson.RootTools.execution; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.TimeoutException; + +import com.stericson.RootTools.RootTools; +import com.stericson.RootTools.exceptions.RootDeniedException; + +public class Shell { + + private final Process proc; + private final BufferedReader in; + private final OutputStreamWriter out; + private final List commands = new ArrayList(); + private boolean close = false; + + private static String error = ""; + private static final String token = "F*D^W@#FGF"; + private static Shell rootShell = null; + private static Shell shell = null; + private static Shell customShell = null; + + private static int shellTimeout = 10000; + + private Shell(String cmd) throws IOException, TimeoutException, RootDeniedException { + + RootTools.log("Starting shell: " + cmd); + + proc = new ProcessBuilder(cmd).redirectErrorStream(true).start(); + in = new BufferedReader(new InputStreamReader(proc.getInputStream())); + out = new OutputStreamWriter(proc.getOutputStream(), "UTF-8"); + + Worker worker = new Worker(proc, in, out); + worker.start(); + + try + { + worker.join(shellTimeout); + + if (worker.exit == -911) { + proc.destroy(); + + throw new TimeoutException(error); + } + if (worker.exit == -42) { + proc.destroy(); + + throw new RootDeniedException("Root Access Denied"); + } + else + { + new Thread(input, "Shell Input").start(); + new Thread(output, "Shell Output").start(); + } + } + catch(InterruptedException ex) + { + worker.interrupt(); + Thread.currentThread().interrupt(); + throw new TimeoutException(); + } + } + + + public Command add(Command command) throws IOException { + if (close) + throw new IllegalStateException( + "Unable to add commands to a closed shell"); + synchronized (commands) { + commands.add(command); + commands.notifyAll(); + } + + return command; + } + + public void close() throws IOException { + if (this == rootShell) + rootShell = null; + if (this == shell) + shell = null; + if (this == customShell) + customShell = null; + synchronized (commands) { + this.close = true; + commands.notifyAll(); + } + } + + public int countCommands() { + return commands.size(); + } + + public static void closeCustomShell() throws IOException { + if (customShell == null) + return; + customShell.close(); + } + + public static void closeRootShell() throws IOException { + if (rootShell == null) + return; + rootShell.close(); + } + + public static void closeShell() throws IOException { + if (shell == null) + return; + shell.close(); + } + + public static void closeAll() throws IOException + { + closeShell(); + closeRootShell(); + closeCustomShell(); + } + + public static Shell getOpenShell() + { + if (customShell != null) + return customShell; + else if (rootShell != null) + return rootShell; + else + return shell; + } + + public static boolean isShellOpen() + { + if (shell == null) + return false; + else + return true; + } + + public static boolean isCustomShellOpen() + { + if (customShell == null) + return false; + else + return true; + } + + public static boolean isRootShellOpen() + { + if (rootShell == null) + return false; + else + return true; + } + + public static boolean isAnyShellOpen() + { + if (shell != null) + return true; + else if (rootShell != null) + return true; + else if (customShell != null) + return true; + else + return false; + } + + private Runnable input = new Runnable() { + public void run() { + try { + writeCommands(); + } catch (IOException e) { + RootTools.log(e.getMessage(), 2, e); + } + } + }; + + private Runnable output = new Runnable() { + public void run() { + try { + readOutput(); + } catch (IOException e) { + RootTools.log(e.getMessage(), 2, e); + } catch (InterruptedException e) { + RootTools.log(e.getMessage(), 2, e); + } + } + }; + + private void readOutput() throws IOException, InterruptedException { + Command command = null; + int read = 0; + while (true) { + String line = in.readLine(); + + // terminate on EOF + if (line == null) + break; + + // Log.v("Shell", "Out; \"" + line + "\""); + if (command == null) { + if (read >= commands.size()) + { + if (close) + break; + continue; + } + command = commands.get(read); + } + + int pos = line.indexOf(token); + if (pos > 0) + command.output(command.id, line.substring(0, pos)); + if (pos >= 0) { + line = line.substring(pos); + String fields[] = line.split(" "); + if (fields.length >= 2 && fields[1] != null) + { + int id=0; + try { + id = Integer.parseInt(fields[1]); + } + catch (NumberFormatException e) { + } + int exitCode = -1; + try { + exitCode = Integer.parseInt(fields[2]); + } + catch (NumberFormatException e) { + } + if (id == read) { + command.setExitCode(exitCode); + read++; + command = null; + continue; + } + } + } + command.output(command.id, line); + } + RootTools.log("Read all output"); + proc.waitFor(); + proc.destroy(); + RootTools.log("Shell destroyed"); + + while (read < commands.size()) { + if (command == null) + command = commands.get(read); + command.terminated("Unexpected Termination."); + command = null; + read++; + } + } + + public static void runRootCommand(Command command) throws IOException, TimeoutException, RootDeniedException { + startRootShell().add(command); + } + + public static void runCommand(Command command) throws IOException, TimeoutException { + startShell().add(command); + } + + public static Shell startRootShell() throws IOException, TimeoutException, RootDeniedException { + return Shell.startRootShell(20000, 3); + } + + public static Shell startRootShell(int timeout) throws IOException, TimeoutException, RootDeniedException { + return Shell.startRootShell(timeout, 3); + } + + public static Shell startRootShell(int timeout, int retry) throws IOException, TimeoutException, RootDeniedException { + + Shell.shellTimeout = timeout; + + if (rootShell == null) { + RootTools.log("Starting Root Shell!"); + String cmd = "su"; + // keep prompting the user until they accept for x amount of times... + int retries = 0; + while (rootShell == null) { + try { + rootShell = new Shell(cmd); + } catch (IOException e) { + if (retries++ >= retry) + { + RootTools.log("IOException, could not start shell"); + throw e; + } + } + } + } + else + { + RootTools.log("Using Existing Root Shell!"); + } + + return rootShell; + } + + public static Shell startCustomShell(String shellPath) throws IOException, TimeoutException, RootDeniedException { + return Shell.startCustomShell(shellPath, 20000); + } + + public static Shell startCustomShell(String shellPath, int timeout) throws IOException, TimeoutException, RootDeniedException { + Shell.shellTimeout = timeout; + + if (customShell == null) { + RootTools.log("Starting Custom Shell!"); + customShell = new Shell(shellPath); + } + else + RootTools.log("Using Existing Custom Shell!"); + + return customShell; + } + + public static Shell startShell() throws IOException, TimeoutException { + return Shell.startShell(20000); + } + + public static Shell startShell(int timeout) throws IOException, TimeoutException { + Shell.shellTimeout = timeout; + + try { + if (shell == null) { + RootTools.log("Starting Shell!"); + shell = new Shell("/system/bin/sh"); + } + else + RootTools.log("Using Existing Shell!"); + return shell; + } catch (RootDeniedException e) { + //Root Denied should never be thrown. + throw new IOException(); + } + } + + public void waitFor() throws IOException, InterruptedException { + close(); + if (commands.size() > 0) + { + Command command = commands.get(commands.size() - 1); + command.exitCode(); + } + } + + protected static class Worker extends Thread + { + public int exit = -911; + + public Process proc; + public BufferedReader in; + public OutputStreamWriter out; + + private Worker(Process proc, BufferedReader in, OutputStreamWriter out) { + this.proc = proc; + this.in = in; + this.out = out; + } + + public void run() + { + + try + { + out.write("echo Started\n"); + out.flush(); + + while (true) { + String line = in.readLine(); + if (line == null) { + throw new EOFException(); + } + if ("".equals(line)) + continue; + if ("Started".equals(line)) + { + this.exit = 1; + break; + } + Shell.error = "unkown error occured."; + } + } + catch (IOException e) + { + exit = -42; + if (e.getMessage() != null) + Shell.error = e.getMessage(); + else + Shell.error = "RootAccess denied?."; + } + + } + } + + private void writeCommands() throws IOException { + try { + int write = 0; + while (true) { + OutputStreamWriter out; + synchronized (commands) { + while (!close && write >= commands.size()) { + commands.wait(); + } + out = this.out; + } + if (write < commands.size()) { + Command next = commands.get(write); + next.writeCommand(out); + String line = "\necho " + token + " " + write + " $?\n"; + out.write(line); + out.flush(); + write++; + } else if (close) { + out.write("\nexit 0\n"); + out.flush(); + out.close(); + RootTools.log("Closing shell"); + return; + } + } + } catch (InterruptedException e) { + RootTools.log(e.getMessage(), 2, e); + } + } + +} \ No newline at end of file diff --git a/src/com/stericson/RootTools/Command.java b/src/com/stericson/RootTools/execution/Command.java similarity index 92% rename from src/com/stericson/RootTools/Command.java rename to src/com/stericson/RootTools/execution/Command.java index 267646c6..d734179c 100644 --- a/src/com/stericson/RootTools/Command.java +++ b/src/com/stericson/RootTools/execution/Command.java @@ -26,18 +26,19 @@ *Stephen */ -package com.stericson.RootTools; +package com.stericson.RootTools.execution; import java.io.IOException; -import java.io.OutputStream; -import java.util.concurrent.TimeoutException; +import java.io.OutputStreamWriter; + +import com.stericson.RootTools.RootTools; public abstract class Command { - final String command[]; + final String[] command; boolean finished = false; int exitCode; int id = 0; - int timeout = InternalVariables.timeout; + int timeout = 5000; public Command(int id, String... command) { this.command = command; @@ -60,8 +61,8 @@ public String getCommand() { return sb.toString(); } - public void writeCommand(OutputStream out) throws IOException { - out.write(getCommand().getBytes()); + public void writeCommand(OutputStreamWriter out) throws IOException { + out.write(getCommand()); } public abstract void output(int id, String line); diff --git a/src/com/stericson/RootTools/CommandCapture.java b/src/com/stericson/RootTools/execution/CommandCapture.java similarity index 94% rename from src/com/stericson/RootTools/CommandCapture.java rename to src/com/stericson/RootTools/execution/CommandCapture.java index 7e8fbc30..65cf7ff3 100644 --- a/src/com/stericson/RootTools/CommandCapture.java +++ b/src/com/stericson/RootTools/execution/CommandCapture.java @@ -26,7 +26,9 @@ *Stephen */ -package com.stericson.RootTools; +package com.stericson.RootTools.execution; + +import com.stericson.RootTools.RootTools; public class CommandCapture extends Command { private StringBuilder sb = new StringBuilder(); diff --git a/src/com/stericson/RootTools/Executer.java b/src/com/stericson/RootTools/execution/Executer.java similarity index 95% rename from src/com/stericson/RootTools/Executer.java rename to src/com/stericson/RootTools/execution/Executer.java index 712d6122..e9af009a 100644 --- a/src/com/stericson/RootTools/Executer.java +++ b/src/com/stericson/RootTools/execution/Executer.java @@ -20,7 +20,7 @@ * limitations under that License. */ -package com.stericson.RootTools; +package com.stericson.RootTools.execution; import java.io.BufferedReader; import java.io.DataOutputStream; @@ -30,9 +30,11 @@ import java.util.List; import java.util.concurrent.TimeoutException; +import com.stericson.RootTools.RootTools; import com.stericson.RootTools.RootTools.Result; +import com.stericson.RootTools.exceptions.RootToolsException; -class Executer { +public class Executer { protected Process process = null; protected Result result = null; @@ -44,6 +46,8 @@ class Executer { /** * Sends several shell command as su (attempts to) * + * @deprecated + * * @param commands * array of commands to send to the shell * @@ -62,9 +66,10 @@ class Executer { * @throws InterruptedException * * @throws IOException - * @throws TimeoutException + * @throws TimeoutException + * */ - synchronized List sendShell(String[] commands, int sleepTime, + public synchronized List sendShell(String[] commands, int sleepTime, Result result, boolean useRoot, int timeout) throws IOException, RootToolsException, TimeoutException { @@ -99,7 +104,7 @@ synchronized List sendShell(String[] commands, int sleepTime, } - protected static class Worker extends Thread + private static class Worker extends Thread { private String[] commands; private int sleepTime; @@ -266,7 +271,7 @@ public void run() } } - public void closeShell() + private void closeShell() { if (this.process != null) { diff --git a/src/com/stericson/RootTools/IResult.java b/src/com/stericson/RootTools/execution/IResult.java similarity index 97% rename from src/com/stericson/RootTools/IResult.java rename to src/com/stericson/RootTools/execution/IResult.java index 7cc49bde..83196974 100644 --- a/src/com/stericson/RootTools/IResult.java +++ b/src/com/stericson/RootTools/execution/IResult.java @@ -20,7 +20,7 @@ * limitations under that License. */ -package com.stericson.RootTools; +package com.stericson.RootTools.execution; import java.io.Serializable; diff --git a/src/com/stericson/RootTools/execution/Shell.java b/src/com/stericson/RootTools/execution/Shell.java new file mode 100644 index 00000000..575553fd --- /dev/null +++ b/src/com/stericson/RootTools/execution/Shell.java @@ -0,0 +1,454 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +/* + *Special thanks to Jeremy Lakeman for the following code and for teaching me something new. + * + *Stephen + */ + +package com.stericson.RootTools.execution; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.TimeoutException; + +import com.stericson.RootTools.RootTools; +import com.stericson.RootTools.exceptions.RootDeniedException; + +public class Shell { + + private final Process proc; + private final BufferedReader in; + private final OutputStreamWriter out; + private final List commands = new ArrayList(); + private boolean close = false; + + private static String error = ""; + private static final String token = "F*D^W@#FGF"; + private static Shell rootShell = null; + private static Shell shell = null; + private static Shell customShell = null; + + private static int shellTimeout = 10000; + + private Shell(String cmd) throws IOException, TimeoutException, RootDeniedException { + + RootTools.log("Starting shell: " + cmd); + + proc = new ProcessBuilder(cmd).redirectErrorStream(true).start(); + in = new BufferedReader(new InputStreamReader(proc.getInputStream())); + out = new OutputStreamWriter(proc.getOutputStream(), "UTF-8"); + + Worker worker = new Worker(proc, in, out); + worker.start(); + + try + { + worker.join(shellTimeout); + + if (worker.exit == -911) { + proc.destroy(); + + throw new TimeoutException(error); + } + if (worker.exit == -42) { + proc.destroy(); + + throw new RootDeniedException("Root Access Denied"); + } + else + { + new Thread(input, "Shell Input").start(); + new Thread(output, "Shell Output").start(); + } + } + catch(InterruptedException ex) + { + worker.interrupt(); + Thread.currentThread().interrupt(); + throw new TimeoutException(); + } + } + + + public Command add(Command command) throws IOException { + if (close) + throw new IllegalStateException( + "Unable to add commands to a closed shell"); + synchronized (commands) { + commands.add(command); + commands.notifyAll(); + } + + return command; + } + + public void close() throws IOException { + if (this == rootShell) + rootShell = null; + if (this == shell) + shell = null; + if (this == customShell) + customShell = null; + synchronized (commands) { + this.close = true; + commands.notifyAll(); + } + } + + public int countCommands() { + return commands.size(); + } + + public static void closeCustomShell() throws IOException { + if (customShell == null) + return; + customShell.close(); + } + + public static void closeRootShell() throws IOException { + if (rootShell == null) + return; + rootShell.close(); + } + + public static void closeShell() throws IOException { + if (shell == null) + return; + shell.close(); + } + + public static void closeAll() throws IOException + { + closeShell(); + closeRootShell(); + closeCustomShell(); + } + + public static Shell getOpenShell() + { + if (customShell != null) + return customShell; + else if (rootShell != null) + return rootShell; + else + return shell; + } + + public static boolean isShellOpen() + { + if (shell == null) + return false; + else + return true; + } + + public static boolean isCustomShellOpen() + { + if (customShell == null) + return false; + else + return true; + } + + public static boolean isRootShellOpen() + { + if (rootShell == null) + return false; + else + return true; + } + + public static boolean isAnyShellOpen() + { + if (shell != null) + return true; + else if (rootShell != null) + return true; + else if (customShell != null) + return true; + else + return false; + } + + private Runnable input = new Runnable() { + public void run() { + try { + writeCommands(); + } catch (IOException e) { + RootTools.log(e.getMessage(), 2, e); + } + } + }; + + private Runnable output = new Runnable() { + public void run() { + try { + readOutput(); + } catch (IOException e) { + RootTools.log(e.getMessage(), 2, e); + } catch (InterruptedException e) { + RootTools.log(e.getMessage(), 2, e); + } + } + }; + + private void readOutput() throws IOException, InterruptedException { + Command command = null; + int read = 0; + while (true) { + String line = in.readLine(); + + // terminate on EOF + if (line == null) + break; + + // Log.v("Shell", "Out; \"" + line + "\""); + if (command == null) { + if (read >= commands.size()) + { + if (close) + break; + continue; + } + command = commands.get(read); + } + + int pos = line.indexOf(token); + if (pos > 0) + command.output(command.id, line.substring(0, pos)); + if (pos >= 0) { + line = line.substring(pos); + String fields[] = line.split(" "); + if (fields.length >= 2 && fields[1] != null) + { + int id=0; + try { + id = Integer.parseInt(fields[1]); + } + catch (NumberFormatException e) { + } + int exitCode = -1; + try { + exitCode = Integer.parseInt(fields[2]); + } + catch (NumberFormatException e) { + } + if (id == read) { + command.setExitCode(exitCode); + read++; + command = null; + continue; + } + } + } + command.output(command.id, line); + } + RootTools.log("Read all output"); + proc.waitFor(); + proc.destroy(); + RootTools.log("Shell destroyed"); + + while (read < commands.size()) { + if (command == null) + command = commands.get(read); + command.terminated("Unexpected Termination."); + command = null; + read++; + } + } + + public static void runRootCommand(Command command) throws IOException, TimeoutException, RootDeniedException { + startRootShell().add(command); + } + + public static void runCommand(Command command) throws IOException, TimeoutException { + startShell().add(command); + } + + public static Shell startRootShell() throws IOException, TimeoutException, RootDeniedException { + return Shell.startRootShell(20000, 3); + } + + public static Shell startRootShell(int timeout) throws IOException, TimeoutException, RootDeniedException { + return Shell.startRootShell(timeout, 3); + } + + public static Shell startRootShell(int timeout, int retry) throws IOException, TimeoutException, RootDeniedException { + + Shell.shellTimeout = timeout; + + if (rootShell == null) { + RootTools.log("Starting Root Shell!"); + String cmd = "su"; + // keep prompting the user until they accept for x amount of times... + int retries = 0; + while (rootShell == null) { + try { + rootShell = new Shell(cmd); + } catch (IOException e) { + if (retries++ >= retry) + { + RootTools.log("IOException, could not start shell"); + throw e; + } + } + } + } + else + { + RootTools.log("Using Existing Root Shell!"); + } + + return rootShell; + } + + public static Shell startCustomShell(String shellPath) throws IOException, TimeoutException, RootDeniedException { + return Shell.startCustomShell(shellPath, 20000); + } + + public static Shell startCustomShell(String shellPath, int timeout) throws IOException, TimeoutException, RootDeniedException { + Shell.shellTimeout = timeout; + + if (customShell == null) { + RootTools.log("Starting Custom Shell!"); + customShell = new Shell(shellPath); + } + else + RootTools.log("Using Existing Custom Shell!"); + + return customShell; + } + + public static Shell startShell() throws IOException, TimeoutException { + return Shell.startShell(20000); + } + + public static Shell startShell(int timeout) throws IOException, TimeoutException { + Shell.shellTimeout = timeout; + + try { + if (shell == null) { + RootTools.log("Starting Shell!"); + shell = new Shell("/system/bin/sh"); + } + else + RootTools.log("Using Existing Shell!"); + return shell; + } catch (RootDeniedException e) { + //Root Denied should never be thrown. + throw new IOException(); + } + } + + public void waitFor() throws IOException, InterruptedException { + close(); + if (commands.size() > 0) + { + Command command = commands.get(commands.size() - 1); + command.exitCode(); + } + } + + protected static class Worker extends Thread + { + public int exit = -911; + + public Process proc; + public BufferedReader in; + public OutputStreamWriter out; + + private Worker(Process proc, BufferedReader in, OutputStreamWriter out) { + this.proc = proc; + this.in = in; + this.out = out; + } + + public void run() + { + + try + { + out.write("echo Started\n"); + out.flush(); + + while (true) { + String line = in.readLine(); + if (line == null) { + throw new EOFException(); + } + if ("".equals(line)) + continue; + if ("Started".equals(line)) + { + this.exit = 1; + break; + } + Shell.error = "unkown error occured."; + } + } + catch (IOException e) + { + exit = -42; + if (e.getMessage() != null) + Shell.error = e.getMessage(); + else + Shell.error = "RootAccess denied?."; + } + + } + } + + private void writeCommands() throws IOException { + try { + int write = 0; + while (true) { + OutputStreamWriter out; + synchronized (commands) { + while (!close && write >= commands.size()) { + commands.wait(); + } + out = this.out; + } + if (write < commands.size()) { + Command next = commands.get(write); + next.writeCommand(out); + String line = "\necho " + token + " " + write + " $?\n"; + out.write(line); + out.flush(); + write++; + } else if (close) { + out.write("\nexit 0\n"); + out.flush(); + out.close(); + RootTools.log("Closing shell"); + return; + } + } + } catch (InterruptedException e) { + RootTools.log(e.getMessage(), 2, e); + } + } + +} \ No newline at end of file diff --git a/src/com/stericson/RootTools/internal/.svn/all-wcprops b/src/com/stericson/RootTools/internal/.svn/all-wcprops new file mode 100644 index 00000000..a782c41d --- /dev/null +++ b/src/com/stericson/RootTools/internal/.svn/all-wcprops @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 97 +/svn/!svn/ver/231/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/internal +END +Remounter.java +K 25 +svn:wc:ra_dav:version-url +V 112 +/svn/!svn/ver/228/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/internal/Remounter.java +END +RootToolsInternalMethods.java +K 25 +svn:wc:ra_dav:version-url +V 127 +/svn/!svn/ver/231/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/internal/RootToolsInternalMethods.java +END +InternalVariables.java +K 25 +svn:wc:ra_dav:version-url +V 120 +/svn/!svn/ver/228/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/internal/InternalVariables.java +END +Runner.java +K 25 +svn:wc:ra_dav:version-url +V 109 +/svn/!svn/ver/228/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/internal/Runner.java +END +Installer.java +K 25 +svn:wc:ra_dav:version-url +V 112 +/svn/!svn/ver/228/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/internal/Installer.java +END diff --git a/src/com/stericson/RootTools/internal/.svn/entries b/src/com/stericson/RootTools/internal/.svn/entries new file mode 100644 index 00000000..2352c920 --- /dev/null +++ b/src/com/stericson/RootTools/internal/.svn/entries @@ -0,0 +1,198 @@ +10 + +dir +249 +http://roottools.googlecode.com/svn/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/internal +http://roottools.googlecode.com/svn + + + +2013-01-29T22:05:41.000183Z +231 +stericson.g1 + + + + + + + + + + + + + + +326c17ea-325e-592a-0117-b1346ba49fde + +Remounter.java +file + + + + +2013-05-10T21:35:38.000000Z +aa3559967af11ba967830c94d7babafa +2012-10-04T15:16:32.967479Z +228 +Stericson.g1@gmail.com + + + + + + + + + + + + + + + + + + + + + +5798 + +RootToolsInternalMethods.java +file + + + + +2013-05-10T21:35:38.000000Z +c6a7da8de3242c0e8f780bd1fbaf51e4 +2013-01-29T22:05:41.000183Z +231 +stericson.g1 + + + + + + + + + + + + + + + + + + + + + +47964 + +InternalVariables.java +file + + + + +2013-05-10T21:35:38.000000Z +ba85bb5e9c8eb7137574c9712dad288c +2012-10-04T15:16:32.967479Z +228 +Stericson.g1@gmail.com + + + + + + + + + + + + + + + + + + + + + +2267 + +Runner.java +file + + + + +2013-05-10T21:35:38.000000Z +d3b89caa4502dbe7902645a0351cf2c5 +2012-10-04T15:16:32.967479Z +228 +Stericson.g1@gmail.com + + + + + + + + + + + + + + + + + + + + + +2331 + +Installer.java +file + + + + +2013-05-10T21:35:38.000000Z +b2fef1e27c2da2bcbb10c52a6a4fea5f +2012-10-04T15:16:32.967479Z +228 +Stericson.g1@gmail.com + + + + + + + + + + + + + + + + + + + + + +5917 + diff --git a/src/com/stericson/RootTools/internal/.svn/text-base/Installer.java.svn-base b/src/com/stericson/RootTools/internal/.svn/text-base/Installer.java.svn-base new file mode 100644 index 00000000..31d0d425 --- /dev/null +++ b/src/com/stericson/RootTools/internal/.svn/text-base/Installer.java.svn-base @@ -0,0 +1,167 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +package com.stericson.RootTools.internal; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; + +import com.stericson.RootTools.RootTools; +import com.stericson.RootTools.execution.CommandCapture; +import com.stericson.RootTools.execution.Shell; + +import android.content.Context; +import android.util.Log; + +class Installer { + + //------------- + //# Installer # + //------------- + + private static final String LOG_TAG = "RootTools::Installer"; + + private static final String BOGUS_FILE_NAME = "bogus"; + + private Context context; + private String filesPath; + + public Installer(Context context) + throws IOException { + + this.context = context; + this.filesPath = context.getFilesDir().getCanonicalPath(); + } + + /** + * This method can be used to unpack a binary from the raw resources folder and store it in + * /data/data/app.package/files/ + * This is typically useful if you provide your own C- or C++-based binary. + * This binary can then be executed using sendShell() and its full path. + * + * @param sourceId resource id; typically R.raw.id + * + * @param destName destination file name; appended to /data/data/app.package/files/ + * + * @param mode chmod value for this file + * + * @return a boolean which indicates whether or not we were + * able to create the new file. + */ + protected boolean installBinary(int sourceId, String destName, String mode) { + File mf = new File(filesPath + File.separator + destName); + if(!mf.exists()) { + // First, does our files/ directory even exist? + // We cannot wait for android to lazily create it as we will soon + // need it. + try { + FileInputStream fis = context.openFileInput(BOGUS_FILE_NAME); + fis.close(); + } catch (FileNotFoundException e) { + FileOutputStream fos = null; + try { + fos = context.openFileOutput("bogus", Context.MODE_PRIVATE); + fos.write("justcreatedfilesdirectory".getBytes()); + } catch (Exception ex) { + if (RootTools.debugMode) { + Log.e(LOG_TAG, ex.toString()); + } + return false; + } + finally { + if(null != fos) { + try { + fos.close(); + context.deleteFile(BOGUS_FILE_NAME); + } catch (IOException e1) {} + } + } + } + catch(IOException ex) { + if (RootTools.debugMode) { + Log.e(LOG_TAG, ex.toString()); + } + return false; + } + + // Only now can we start creating our actual file + InputStream iss = context.getResources().openRawResource(sourceId); + FileOutputStream oss = null; + try { + oss = new FileOutputStream(mf); + byte [] buffer = new byte[4096]; + int len; + try { + while(-1 != (len = iss.read(buffer))) { + oss.write(buffer, 0, len); + } + } catch (IOException ex) { + if (RootTools.debugMode) { + Log.e(LOG_TAG, ex.toString()); + } + return false; + } + } catch (FileNotFoundException ex) { + if (RootTools.debugMode) { + Log.e(LOG_TAG, ex.toString()); + } + return false; + } + finally { + if(oss != null) { + try { + oss.close(); + } catch (IOException e) {} + } + } + try { + iss.close(); + } catch (IOException ex) { + if (RootTools.debugMode) { + Log.e(LOG_TAG, ex.toString()); + } + return false; + } + + try { + CommandCapture command = new CommandCapture(0, "chmod " + mode + " " + filesPath + File.separator + destName); + Shell.startRootShell().add(command); + command.waitForFinish(); + } catch (Exception e) {} + } + return true; + } + + protected boolean isBinaryInstalled(String destName) { + boolean installed = false; + File mf = new File(filesPath + File.separator + destName); + if(mf.exists()) { + installed = true; + // TODO: pass mode as argument and check it matches + } + return installed; + } +} diff --git a/src/com/stericson/RootTools/internal/.svn/text-base/InternalVariables.java.svn-base b/src/com/stericson/RootTools/internal/.svn/text-base/InternalVariables.java.svn-base new file mode 100644 index 00000000..7654d87f --- /dev/null +++ b/src/com/stericson/RootTools/internal/.svn/text-base/InternalVariables.java.svn-base @@ -0,0 +1,63 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +package com.stericson.RootTools.internal; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.regex.Pattern; + +import com.stericson.RootTools.containers.Mount; +import com.stericson.RootTools.containers.Permissions; +import com.stericson.RootTools.containers.Symlink; + +public class InternalVariables { + + // ---------------------- + // # Internal Variables # + // ---------------------- + + + protected static boolean accessGiven = false; + protected static boolean nativeToolsReady = false; + protected static boolean found = false; + protected static String[] space; + protected static String getSpaceFor; + protected static String busyboxVersion; + protected static Set path; + protected static ArrayList mounts; + protected static ArrayList symlinks; + protected static List results; + protected static String inode = ""; + protected static Permissions permissions; + + + + // regex to get pid out of ps line, example: + // root 2611 0.0 0.0 19408 2104 pts/2 S 13:41 0:00 bash + protected static final String PS_REGEX = "^\\S+\\s+([0-9]+).*$"; + protected static Pattern psPattern; + static { + psPattern = Pattern.compile(PS_REGEX); + } +} diff --git a/src/com/stericson/RootTools/internal/.svn/text-base/Remounter.java.svn-base b/src/com/stericson/RootTools/internal/.svn/text-base/Remounter.java.svn-base new file mode 100644 index 00000000..78b722c4 --- /dev/null +++ b/src/com/stericson/RootTools/internal/.svn/text-base/Remounter.java.svn-base @@ -0,0 +1,145 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +package com.stericson.RootTools.internal; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; + +import android.util.Log; + +import com.stericson.RootTools.Constants; +import com.stericson.RootTools.RootTools; +import com.stericson.RootTools.containers.Mount; +import com.stericson.RootTools.execution.CommandCapture; +import com.stericson.RootTools.execution.Shell; + +public class Remounter { + + //------------- + //# Remounter # + //------------- + + /** + * This will take a path, which can contain the file name as well, + * and attempt to remount the underlying partition. + *

    + * For example, passing in the following string: + * "/system/bin/some/directory/that/really/would/never/exist" + * will result in /system ultimately being remounted. + * However, keep in mind that the longer the path you supply, the more work this has to do, + * and the slower it will run. + * + * @param file file path + * @param mountType mount type: pass in RO (Read only) or RW (Read Write) + * @return a boolean which indicates whether or not the partition + * has been remounted as specified. + */ + + public boolean remount(String file, String mountType) { + + //if the path has a trailing slash get rid of it. + if (file.endsWith("/") && !file.equals("/")) { + file = file.substring(0, file.lastIndexOf("/")); + } + //Make sure that what we are trying to remount is in the mount list. + boolean foundMount = false; + while (!foundMount) { + try { + for (Mount mount : RootTools.getMounts()) { + RootTools.log(mount.getMountPoint().toString()); + + if (file.equals(mount.getMountPoint().toString())) { + foundMount = true; + break; + } + } + } catch (Exception e) { + if (RootTools.debugMode) { + e.printStackTrace(); + } + return false; + } + if (!foundMount) { + try { + file = (new File(file).getParent()).toString(); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + } + Mount mountPoint = findMountPointRecursive(file); + + RootTools.log(Constants.TAG, "Remounting " + mountPoint.getMountPoint().getAbsolutePath() + " as " + mountType.toLowerCase()); + final boolean isMountMode = mountPoint.getFlags().contains(mountType.toLowerCase()); + + if (!isMountMode) { + //grab an instance of the internal class + try { + CommandCapture command = new CommandCapture(0, + "busybox mount -o remount," + mountType.toLowerCase() + " " + mountPoint.getDevice().getAbsolutePath() + " " + mountPoint.getMountPoint().getAbsolutePath(), + "toolbox mount -o remount," + mountType.toLowerCase() + " " + mountPoint.getDevice().getAbsolutePath() + " " + mountPoint.getMountPoint().getAbsolutePath(), + "mount -o remount," + mountType.toLowerCase() + " " + mountPoint.getDevice().getAbsolutePath() + " " + mountPoint.getMountPoint().getAbsolutePath(), + "/system/bin/toolbox mount -o remount," + mountType.toLowerCase() + " " + mountPoint.getDevice().getAbsolutePath() + " " + mountPoint.getMountPoint().getAbsolutePath() + ); + + Shell.startRootShell().add(command); + command.waitForFinish(); + + } catch (Exception e) {} + + mountPoint = findMountPointRecursive(file); + } + + Log.i(Constants.TAG, mountPoint.getFlags() + " AND " + mountType.toLowerCase()); + if (mountPoint.getFlags().contains(mountType.toLowerCase())) { + RootTools.log(mountPoint.getFlags().toString()); + return true; + } else { + RootTools.log(mountPoint.getFlags().toString()); + return false; + } + } + + private Mount findMountPointRecursive(String file) { + try { + ArrayList mounts = RootTools.getMounts(); + for (File path = new File(file); path != null; ) { + for (Mount mount : mounts) { + if (mount.getMountPoint().equals(path)) { + return mount; + } + } + } + return null; + } catch (IOException e) { + throw new RuntimeException(e); + } catch (Exception e) { + if (RootTools.debugMode) { + e.printStackTrace(); + } + } + return null; + } +} diff --git a/src/com/stericson/RootTools/InternalMethods.java b/src/com/stericson/RootTools/internal/.svn/text-base/RootToolsInternalMethods.java.svn-base similarity index 84% rename from src/com/stericson/RootTools/InternalMethods.java rename to src/com/stericson/RootTools/internal/.svn/text-base/RootToolsInternalMethods.java.svn-base index f07ff7e3..12570a5c 100644 --- a/src/com/stericson/RootTools/InternalMethods.java +++ b/src/com/stericson/RootTools/internal/.svn/text-base/RootToolsInternalMethods.java.svn-base @@ -20,7 +20,7 @@ * limitations under that License. */ -package com.stericson.RootTools; +package com.stericson.RootTools.internal; import java.io.File; import java.io.FileNotFoundException; @@ -32,7 +32,6 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; -import java.util.Locale; import java.util.Set; import java.util.concurrent.TimeoutException; import java.util.regex.Matcher; @@ -44,17 +43,33 @@ import android.os.Environment; import android.os.StatFs; +import com.stericson.RootTools.Constants; +import com.stericson.RootTools.RootTools; import com.stericson.RootTools.RootTools.Result; - -//no modifier, this is package-private which means that no one but the library can access it. -class InternalMethods +import com.stericson.RootTools.containers.Mount; +import com.stericson.RootTools.containers.Permissions; +import com.stericson.RootTools.containers.Symlink; +import com.stericson.RootTools.execution.Command; +import com.stericson.RootTools.execution.CommandCapture; +import com.stericson.RootTools.execution.Shell; + +public final class RootToolsInternalMethods { // -------------------- // # Internal methods # // -------------------- - - protected boolean returnPath() throws TimeoutException + boolean instantiated = false; + + protected RootToolsInternalMethods() {} + + public static void getInstance() { + //this will allow RootTools to be the only one to get an instance of this class. + RootTools.setRim(new RootToolsInternalMethods()); + } + + + public boolean returnPath() throws TimeoutException { CommandCapture command = null; @@ -112,7 +127,7 @@ protected boolean returnPath() throws TimeoutException } } - protected ArrayList getSymLinks() throws FileNotFoundException, + public ArrayList getSymLinks() throws FileNotFoundException, IOException { LineNumberReader lnr = null; @@ -140,7 +155,7 @@ protected ArrayList getSymLinks() throws FileNotFoundException, } } - protected Permissions getPermissions(String line) + public Permissions getPermissions(String line) { String[] lineArray = line.split(" "); @@ -187,7 +202,7 @@ protected Permissions getPermissions(String line) return null; } - protected int parsePermissions(String permission) + public int parsePermissions(String permission) { int tmp; if(permission.charAt(0) == 'r') @@ -217,7 +232,7 @@ protected int parsePermissions(String permission) return tmp; } - protected int parseSpecialPermissions(String permission) + public int parseSpecialPermissions(String permission) { int tmp = 0; if(permission.charAt(2) == 's') @@ -249,7 +264,7 @@ protected int parseSpecialPermissions(String permission) * only permissions are preserved * @return true if it was successfully copied */ - public static boolean copyFile(String source, String destination, boolean remountAsRw, + public boolean copyFile(String source, String destination, boolean remountAsRw, boolean preserveFileAttributes) { boolean result = true; @@ -290,7 +305,7 @@ public static boolean copyFile(String source, String destination, boolean remoun if (preserveFileAttributes) { // get permissions of source before overwriting Permissions permissions = getFilePermissionsSymlinks(source); - filePermission = permissions.permissions; + filePermission = permissions.getPermissions(); } CommandCapture command; @@ -326,13 +341,13 @@ public static boolean copyFile(String source, String destination, boolean remoun * it has either the permissions 755, 775, or 777. * * - * @param String + * @param util * Name of the utility to check. * * @return boolean to indicate whether the binary is installed and has * appropriate permissions. */ - static boolean checkUtil(String util) + public boolean checkUtil(String util) { if(RootTools.findBinary(util)) { @@ -368,6 +383,58 @@ static boolean checkUtil(String util) } + /** + * Deletes a file or directory + * + * @param target + * example: /data/data/org.adaway/files/hosts + * @param remountAsRw + * remounts the destination as read/write before writing to it + * @return true if it was successfully deleted + */ + public boolean deleteFileOrDirectory(String target, boolean remountAsRw) { + boolean result = true; + + try { + // mount destination as rw before writing to it + if (remountAsRw) { + RootTools.remount(target, "RW"); + } + + if (hasUtil("rm", "toolbox")) { + RootTools.log("rm command is available!"); + + CommandCapture command = new CommandCapture(0, "rm -r " + target); + Shell.startRootShell().add(command).waitForFinish(); + if (command.exitCode() != 0) { + RootTools.log("target not exist or unable to delete file"); + result = false; + } + } else { + if (checkUtil("busybox") && hasUtil("rm", "busybox")) { + RootTools.log("busybox cp command is available!"); + + CommandCapture command = new CommandCapture(0, "busybox rm -rf " + target); + Shell.startRootShell().add(command).waitForFinish(); + if (command.exitCode() != 0) { + RootTools.log("target not exist or unable to delete file"); + result = false; + } + } + } + + // mount destination back to ro + if (remountAsRw) { + RootTools.remount(target, "RO"); + } + } catch (Exception e) { + e.printStackTrace(); + result = false; + } + + return result; + } + /** * Use this to check whether or not a file exists on the filesystem. * @@ -378,7 +445,7 @@ static boolean checkUtil(String util) * @return a boolean that will indicate whether or not the file exists. * */ - public static boolean exists(final String file) + public boolean exists(final String file) { final List result = new ArrayList(); @@ -449,14 +516,14 @@ public void output(int arg0, String arg1) * "fix", I mean it will try and symlink the binary from either toolbox or Busybox and fix the * permissions if the permissions are not correct. * - * @param String + * @param util * Name of the utility to fix. - * @param String + * @param utilPath * path to the toolbox that provides ln, rm, and chmod. This can be a blank string, a * path to a binary that will provide these, or you can use * RootTools.getWorkingToolbox() */ - public static void fixUtil(String util, String utilPath) { + public void fixUtil(String util, String utilPath) { try { RootTools.remount("/system", "rw"); @@ -482,7 +549,7 @@ public static void fixUtil(String util, String utilPath) { * either the permissions 755, 775, or 777. If an applet is not setup correctly it will try and * fix it. (This is for Busybox applets or Toolbox applets) * - * @param String + * @param utils * Name of the utility to check. * * @throws Exception @@ -492,7 +559,7 @@ public static void fixUtil(String util, String utilPath) { * of whether the problem was fixed, just that the method did not encounter any * exceptions. */ - static boolean fixUtils(String[] utils) throws Exception { + public boolean fixUtils(String[] utils) throws Exception { for (String util : utils) { if (!checkUtil(util)) { @@ -525,7 +592,7 @@ static boolean fixUtils(String[] utils) throws Exception { * found in more than one location this will contain all of these locations. * */ - static boolean findBinary(String binaryName) { + public boolean findBinary(String binaryName) { boolean found = false; RootTools.lastFoundBinaryPaths.clear(); @@ -588,25 +655,33 @@ static boolean findBinary(String binaryName) { * This will return an List of Strings. Each string represents an applet available from BusyBox. *

    * + * @param path + * Path to the busybox binary that you want the list of applets from. + * * @return List a List of strings representing the applets available from * Busybox. - * @throws Exception - * if we cannot return the applets available. + * + * @return null If we cannot return the list of applets. */ - static List getBusyBoxApplets() throws Exception { + public List getBusyBoxApplets(String path) throws Exception { + if (path != null && !path.endsWith("/") && !path.equals("")) { + path += "/"; + } else if (path == null) { + //Don't know what the user wants to do...what am I pshycic? + throw new Exception("Path is null, please specifiy a path"); + } + final List results = new ArrayList(); - Command command = new Command(InternalVariables.BBA, "busybox --list") - { + Command command = new Command(Constants.BBA, path + "busybox --list") { @Override - public void output(int id, String line) - { - if (id == InternalVariables.BBA) - { - if (!line.trim().equals("")) + public void output(int id, String line) { + if (id == Constants.BBA) { + if (!line.trim().equals("") && !line.trim().contains("not found")) { results.add(line); + } } } }; @@ -614,29 +689,30 @@ public void output(int id, String line) Shell.startRootShell().add(command); command.waitForFinish(); - if (InternalVariables.results != null) { - return InternalVariables.results; - } else { - throw new Exception(); - } + return results; } /** * @return BusyBox version is found, "" if not found. */ - static String getBusyBoxVersion() { + public String getBusyBoxVersion(String path) { + + if (!path.equals("") && !path.endsWith("/")) + { + path += "/"; + } + RootTools.log("Getting BusyBox Version"); - InternalVariables.busyboxVersion = null; + InternalVariables.busyboxVersion = ""; try { - Command command = new Command(InternalVariables.BBV, "busybox") + Command command = new Command(Constants.BBV, path + "busybox") { - @Override public void output(int id, String line) { - if (id == InternalVariables.BBV) + if (id == Constants.BBV) { - if (line.startsWith("BusyBox")) { + if (line.startsWith("BusyBox") && InternalVariables.busyboxVersion.equals("")) { String[] temp = line.split(" "); InternalVariables.busyboxVersion = temp[1]; } @@ -651,13 +727,14 @@ public void output(int id, String line) RootTools.log("BusyBox was not found, more information MAY be available with Debugging on."); return ""; } + return InternalVariables.busyboxVersion; } /** * @return long Size, converted to kilobytes (from xxx or xxxm or xxxk etc.) */ - protected long getConvertedSpace(String spaceStr) + public long getConvertedSpace(String spaceStr) { try { @@ -693,21 +770,21 @@ else if(c == 'g' || c == 'G') * This method will return the inode number of a file. This method is dependent on having a version of * ls that supports the -i parameter. * - * @param String path to the file that you wish to return the inode number + * @param file path to the file that you wish to return the inode number * * @return String The inode number for this file or "" if the inode number could not be found. */ - static String getInode(String file) + public String getInode(String file) { try { - Command command = new Command(InternalVariables.GI, "/data/local/ls -i " + file) + Command command = new Command(Constants.GI, "/data/local/ls -i " + file) { @Override public void output(int id, String line) { - if (id == InternalVariables.GI) + if (id == Constants.GI) { if (!line.trim().equals("") && Character.isDigit((char) line.trim().substring(0, 1).toCharArray()[0])) { @@ -732,17 +809,17 @@ public void output(int id, String line) * @throws TimeoutException * if this operation times out. (cannot determine if access is given) */ - static boolean isAccessGiven() { + public boolean isAccessGiven() { try { RootTools.log("Checking for Root access"); InternalVariables.accessGiven = false; - Command command = new Command(InternalVariables.IAG, "id") + Command command = new Command(Constants.IAG, "id") { @Override public void output(int id, String line) { - if (id == InternalVariables.IAG) + if (id == Constants.IAG) { Set ID = new HashSet(Arrays.asList(line.split(" "))); for (String userid : ID) { @@ -772,8 +849,6 @@ public void output(int id, String line) } } catch (Exception e) { - if(e.getMessage().toLowerCase(Locale.US).contains("denied")) - return false; e.printStackTrace(); return false; } finally { @@ -781,7 +856,7 @@ public void output(int id, String line) } } - static boolean isNativeToolsReady(int nativeToolsId, Context context) { + public boolean isNativeToolsReady(int nativeToolsId, Context context) { RootTools.log("Preparing Native Tools"); InternalVariables.nativeToolsReady = false; @@ -815,7 +890,7 @@ static boolean isNativeToolsReady(int nativeToolsId, Context context) { * permissions couldn't be determined then permissions will be null. * */ - static Permissions getFilePermissionsSymlinks(String file) + public Permissions getFilePermissionsSymlinks(String file) { RootTools.log("Checking permissions for " + file); if(RootTools.exists(file)) @@ -825,7 +900,7 @@ static Permissions getFilePermissionsSymlinks(String file) { Command command = new Command( - InternalVariables.FPS, "ls -l " + file, + Constants.FPS, "ls -l " + file, "busybox ls -l " + file, "/system/bin/failsafe/toolbox ls -l " + file, "toolbox ls -l " + file) @@ -833,7 +908,7 @@ static Permissions getFilePermissionsSymlinks(String file) @Override public void output(int id, String line) { - if(id == InternalVariables.FPS) + if(id == Constants.FPS) { String symlink_final = ""; @@ -860,7 +935,7 @@ public void output(int id, String line) try { - InternalVariables.permissions = new InternalMethods().getPermissions(line); + InternalVariables.permissions = getPermissions(line); if(InternalVariables.permissions != null) { InternalVariables.permissions.setSymlink(symlink_final); @@ -900,7 +975,7 @@ public void output(int id, String line) * @throws Exception * if we cannot return the mount points. */ - protected static ArrayList getMounts() throws Exception + public ArrayList getMounts() throws Exception { LineNumberReader lnr = null; lnr = new LineNumberReader(new FileReader("/proc/mounts")); @@ -930,13 +1005,13 @@ protected static ArrayList getMounts() throws Exception /** * This will tell you how the specified mount is mounted. rw, ro, etc... *

    - * @param The mount you want to check + * @param path mount you want to check * * @return String What the mount is mounted as. * @throws Exception * if we cannot determine how the mount is mounted. */ - static String getMountedAs(String path) throws Exception { + public String getMountedAs(String path) throws Exception { InternalVariables.mounts = getMounts(); if (InternalVariables.mounts != null) { for (Mount mount : InternalVariables.mounts) @@ -963,11 +1038,11 @@ static String getMountedAs(String path) throws Exception { * @throws Exception * if we cannot return the $PATH variable */ - static Set getPath() throws Exception { + public Set getPath() throws Exception { if (InternalVariables.path != null) { return InternalVariables.path; } else { - if (new InternalMethods().returnPath()) { + if (returnPath()) { return InternalVariables.path; } else { throw new Exception(); @@ -984,20 +1059,20 @@ static Set getPath() throws Exception { * then the value is -1 * @throws TimeoutException */ - static long getSpace(String path) { + public long getSpace(String path) { InternalVariables.getSpaceFor = path; boolean found = false; RootTools.log("Looking for Space"); try { - Command command = new Command(InternalVariables.GS, "df " + path) + final Command command = new Command(Constants.GS, "df " + path) { @Override public void output(int id, String line) { - if (id == InternalVariables.GS) + if (id == Constants.GS) { - if (line.contains(command[0].substring(2, command[0].length()).trim())) { + if (line.contains(InternalVariables.getSpaceFor.trim())) { InternalVariables.space = line.split(" "); } } @@ -1016,7 +1091,7 @@ public void output(int id, String line) RootTools.log(spaceSearch); if (found) { - return new InternalMethods().getConvertedSpace(spaceSearch); + return getConvertedSpace(spaceSearch); } else if (spaceSearch.equals("used,")) { found = true; } @@ -1037,7 +1112,7 @@ public void output(int id, String line) if (spaceSearch.length() > 0) { RootTools.log(spaceSearch + ("Valid")); if (count == targetCount) { - return new InternalMethods().getConvertedSpace(spaceSearch); + return getConvertedSpace(spaceSearch); } count++; } @@ -1051,25 +1126,25 @@ public void output(int id, String line) * This will return a String that represent the symlink for a specified file. *

    * - * @param The + * @param file * file to get the Symlink for. (must have absolute path) * * @return String a String that represent the symlink for a specified file or an * empty string if no symlink exists. */ - static String getSymlink(String file) { + public String getSymlink(String file) { RootTools.log("Looking for Symlink for " + file); try { final List results = new ArrayList(); - Command command = new Command(InternalVariables.GSYM, "ls -l " + file) + Command command = new Command(Constants.GSYM, "ls -l " + file) { @Override public void output(int id, String line) { - if (id == InternalVariables.GSYM) + if (id == Constants.GSYM) { if (!line.trim().equals("")) { @@ -1124,14 +1199,14 @@ public void output(int id, String line) *

    * These will provide you with any Symlinks in the given path. * - * @param The + * @param path * path to search for Symlinks. * * @return ArrayList an ArrayList of the class Symlink. * @throws Exception * if we cannot return the Symlinks. */ - static ArrayList getSymlinks(String path) throws Exception { + public ArrayList getSymlinks(String path) throws Exception { // this command needs find if (!checkUtil("find")) { @@ -1142,7 +1217,7 @@ static ArrayList getSymlinks(String path) throws Exception { Shell.startRootShell().add(command); command.waitForFinish(); - InternalVariables.symlinks = new InternalMethods().getSymLinks(); + InternalVariables.symlinks = getSymLinks(); if (InternalVariables.symlinks != null) { return InternalVariables.symlinks; } else { @@ -1157,7 +1232,7 @@ static ArrayList getSymlinks(String path) throws Exception { * * @return String that indicates the available toolbox to use for accessing applets. */ - static String getWorkingToolbox() { + public String getWorkingToolbox() { if (RootTools.checkUtil("busybox")) { return "busybox"; } else if (RootTools.checkUtil("toolbox")) { @@ -1176,7 +1251,7 @@ static String getWorkingToolbox() { * space on SDCard. Will also return false, if the SDCard is not mounted as * read/write */ - public static boolean hasEnoughSpaceOnSdCard(long updateSize) { + public boolean hasEnoughSpaceOnSdCard(long updateSize) { RootTools.log("Checking SDcard size and that it is mounted as RW"); String status = Environment.getExternalStorageState(); if (!status.equals(Environment.MEDIA_MOUNTED)) { @@ -1197,64 +1272,41 @@ public static boolean hasEnoughSpaceOnSdCard(long updateSize) { * Should contain "toolbox" or "busybox" * @return true if it contains this util */ - public static boolean hasUtil(final String util, final String box) { - + public boolean hasUtil(final String util, final String box) { + + InternalVariables.found = false; + // only for busybox and toolbox - if (!(box.equals("toolbox") || box.equals("busybox"))) { + if (!(box.endsWith("toolbox") || box.endsWith("busybox"))) { return false; } - + try { - Result result = new Result() { - @Override - public void process(String line) throws Exception { - // TODO: blocking shell commands like "toolbox watchprops" makes this stuck - // possible fix could be terminating the running process after one line output - if (box.equals("toolbox")) { + + Command command = new Command(0, box.endsWith("toolbox") ? box + " " + util : box + " --list" ) { + + @Override + public void output(int id, String line) + { + if (box.endsWith("toolbox")) { if (line.contains("no such tool")) { - setError(1); + InternalVariables.found = true; } - } else if (box.equals("busybox")) { + } else if (box.endsWith("busybox")) { // go through all lines of busybox --list if (line.contains(util)) { RootTools.log("Found util!"); - setData(1); + InternalVariables.found = true; } - } - } - - @Override - public void onFailure(Exception ex) { - setError(2); - } - - @Override - public void onComplete(int diag) { - } - - @Override - public void processError(String arg0) throws Exception { - getProcess().destroy(); - } - - }; - if (box.equals("toolbox")) { - RootTools.sendShell(new String[] { "toolbox " + util }, 0, result, false, - InternalVariables.timeout); - } else if (box.equals("busybox")) { - RootTools.sendShell(new String[] { "busybox --list" }, 0, result, false, - InternalVariables.timeout); - } - - if (result.getError() == 0) { - // if data has been set process is running - if (result.getData() != null) { - RootTools.log("Box contains " + util + " util!"); - return true; - } else { - RootTools.log("Box does not contain " + util + " util!"); - return false; - } + } + } + + }; + RootTools.getShell(true).add(command).waitForFinish(5000); + + if (InternalVariables.found) { + RootTools.log("Box contains " + util + " util!"); + return true; } else { RootTools.log("Box does not contain " + util + " util!"); return false; @@ -1281,7 +1333,7 @@ public void processError(String arg0) throws Exception { * @return a boolean which indicates whether or not we were able to create the new * file. */ - static boolean installBinary(Context context, int sourceId, String destName, String mode) { + public boolean installBinary(Context context, int sourceId, String destName, String mode) { Installer installer; try { @@ -1300,14 +1352,14 @@ static boolean installBinary(Context context, int sourceId, String destName, Str * This will let you know if an applet is available from BusyBox *

    * - * @param String The applet to check for. + * @param applet The applet to check for. * * @return true if applet is available, false otherwise. */ - public static boolean isAppletAvailable(String Applet) { + public boolean isAppletAvailable(String applet, String binaryPath) { try { - for (String applet : getBusyBoxApplets()) { - if (applet.equals(Applet)) { + for (String aplet : getBusyBoxApplets(binaryPath)) { + if (aplet.equals(applet)) { return true; } } @@ -1327,7 +1379,7 @@ public static boolean isAppletAvailable(String Applet) { * @throws TimeoutException * (Could not determine if the process is running) */ - static boolean isProcessRunning(final String processName) { + public boolean isProcessRunning(final String processName) { RootTools.log("Checks if process is running: " + processName); boolean processRunning = false; @@ -1376,7 +1428,7 @@ public void processError(String arg0) throws Exception { * name of process to kill * @return true if process was found and killed successfully */ - static boolean killProcess(final String processName) + public boolean killProcess(final String processName) { RootTools.log("Killing process " + processName); @@ -1476,7 +1528,7 @@ public void processError(String arg0) throws Exception * @param activity * pass in your Activity */ - static void offerBusyBox(Activity activity) { + public void offerBusyBox(Activity activity) { RootTools.log("Launching Market for BusyBox"); Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=stericson.busybox")); @@ -1493,7 +1545,7 @@ static void offerBusyBox(Activity activity) { * pass in the request code * @return intent fired */ - static Intent offerBusyBox(Activity activity, int requestCode) { + public Intent offerBusyBox(Activity activity, int requestCode) { RootTools.log("Launching Market for BusyBox"); Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=stericson.busybox")); @@ -1507,7 +1559,7 @@ static Intent offerBusyBox(Activity activity, int requestCode) { * @param activity * pass in your Activity */ - static void offerSuperUser(Activity activity) { + public void offerSuperUser(Activity activity) { RootTools.log("Launching Market for SuperUser"); Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.noshufou.android.su")); @@ -1524,7 +1576,7 @@ static void offerSuperUser(Activity activity) { * pass in the request code * @return intent fired */ - static Intent offerSuperUser(Activity activity, int requestCode) { + public Intent offerSuperUser(Activity activity, int requestCode) { RootTools.log("Launching Market for SuperUser"); Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.noshufou.android.su")); diff --git a/src/com/stericson/RootTools/internal/.svn/text-base/Runner.java.svn-base b/src/com/stericson/RootTools/internal/.svn/text-base/Runner.java.svn-base new file mode 100644 index 00000000..253d1ea9 --- /dev/null +++ b/src/com/stericson/RootTools/internal/.svn/text-base/Runner.java.svn-base @@ -0,0 +1,67 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +package com.stericson.RootTools.internal; + +import java.io.IOException; + +import com.stericson.RootTools.RootTools; +import com.stericson.RootTools.execution.CommandCapture; +import com.stericson.RootTools.execution.Shell; + +import android.content.Context; +import android.util.Log; + +public class Runner extends Thread { + + private static final String LOG_TAG = "RootTools::Runner"; + + Context context; + String binaryName; + String parameter; + + public Runner(Context context, String binaryName, String parameter) { + this.context = context; + this.binaryName = binaryName; + this.parameter = parameter; + } + + public void run() { + String privateFilesPath = null; + try { + privateFilesPath = context.getFilesDir().getCanonicalPath(); + } catch (IOException e) { + if (RootTools.debugMode) { + Log.e(LOG_TAG, "Problem occured while trying to locate private files directory!"); + } + e.printStackTrace(); + } + if (privateFilesPath != null) { + try { + CommandCapture command = new CommandCapture(0, privateFilesPath + "/" + binaryName + " " + parameter); + Shell.startRootShell().add(command); + command.waitForFinish(); + } catch (Exception e) {} + } + } + +} diff --git a/src/com/stericson/RootTools/Installer.java b/src/com/stericson/RootTools/internal/Installer.java similarity index 96% rename from src/com/stericson/RootTools/Installer.java rename to src/com/stericson/RootTools/internal/Installer.java index 857cbedb..31d0d425 100644 --- a/src/com/stericson/RootTools/Installer.java +++ b/src/com/stericson/RootTools/internal/Installer.java @@ -20,7 +20,7 @@ * limitations under that License. */ -package com.stericson.RootTools; +package com.stericson.RootTools.internal; import java.io.File; import java.io.FileInputStream; @@ -29,6 +29,10 @@ import java.io.IOException; import java.io.InputStream; +import com.stericson.RootTools.RootTools; +import com.stericson.RootTools.execution.CommandCapture; +import com.stericson.RootTools.execution.Shell; + import android.content.Context; import android.util.Log; diff --git a/src/com/stericson/RootTools/InternalVariables.java b/src/com/stericson/RootTools/internal/InternalVariables.java similarity index 74% rename from src/com/stericson/RootTools/InternalVariables.java rename to src/com/stericson/RootTools/internal/InternalVariables.java index eb876557..7654d87f 100644 --- a/src/com/stericson/RootTools/InternalVariables.java +++ b/src/com/stericson/RootTools/internal/InternalVariables.java @@ -20,38 +20,30 @@ * limitations under that License. */ -package com.stericson.RootTools; +package com.stericson.RootTools.internal; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.regex.Pattern; -//no modifier, this is package-private which means that no one but the library can access it. -//If we need public variables just create the class for it. -class InternalVariables { +import com.stericson.RootTools.containers.Mount; +import com.stericson.RootTools.containers.Permissions; +import com.stericson.RootTools.containers.Symlink; + +public class InternalVariables { // ---------------------- // # Internal Variables # // ---------------------- - //Constants - // Version numbers should be maintained here. - protected static String TAG = "RootTools v2."; - protected static int timeout = 5000; - protected static int FPS = 1; - protected static int IAG = 2; - protected static int BBA = 3; - protected static int BBV = 4; - protected static int GI = 5; - protected static int GS = 6; - protected static int GSYM = 7; protected static boolean accessGiven = false; protected static boolean nativeToolsReady = false; + protected static boolean found = false; protected static String[] space; protected static String getSpaceFor; - protected static String busyboxVersion = ""; + protected static String busyboxVersion; protected static Set path; protected static ArrayList mounts; protected static ArrayList symlinks; diff --git a/src/com/stericson/RootTools/Remounter.java b/src/com/stericson/RootTools/internal/Remounter.java similarity index 87% rename from src/com/stericson/RootTools/Remounter.java rename to src/com/stericson/RootTools/internal/Remounter.java index 63fb7a06..78b722c4 100644 --- a/src/com/stericson/RootTools/Remounter.java +++ b/src/com/stericson/RootTools/internal/Remounter.java @@ -20,7 +20,7 @@ * limitations under that License. */ -package com.stericson.RootTools; +package com.stericson.RootTools.internal; import java.io.File; import java.io.IOException; @@ -28,8 +28,13 @@ import android.util.Log; -//no modifier, this means it is package-private. Only our internal classes can use this. -class Remounter { +import com.stericson.RootTools.Constants; +import com.stericson.RootTools.RootTools; +import com.stericson.RootTools.containers.Mount; +import com.stericson.RootTools.execution.CommandCapture; +import com.stericson.RootTools.execution.Shell; + +public class Remounter { //------------- //# Remounter # @@ -51,7 +56,7 @@ class Remounter { * has been remounted as specified. */ - protected boolean remount(String file, String mountType) { + public boolean remount(String file, String mountType) { //if the path has a trailing slash get rid of it. if (file.endsWith("/") && !file.equals("/")) { @@ -86,14 +91,14 @@ protected boolean remount(String file, String mountType) { } Mount mountPoint = findMountPointRecursive(file); - RootTools.log(InternalVariables.TAG, "Remounting " + mountPoint.getMountPoint().getAbsolutePath() + " as " + mountType.toLowerCase()); + RootTools.log(Constants.TAG, "Remounting " + mountPoint.getMountPoint().getAbsolutePath() + " as " + mountType.toLowerCase()); final boolean isMountMode = mountPoint.getFlags().contains(mountType.toLowerCase()); if (!isMountMode) { //grab an instance of the internal class try { CommandCapture command = new CommandCapture(0, - "busybox mount -o remount," + mountType.toLowerCase() + " " + mountPoint.getDevice().getAbsolutePath() + " -t yaffs2 " + mountPoint.getMountPoint().getAbsolutePath(), + "busybox mount -o remount," + mountType.toLowerCase() + " " + mountPoint.getDevice().getAbsolutePath() + " " + mountPoint.getMountPoint().getAbsolutePath(), "toolbox mount -o remount," + mountType.toLowerCase() + " " + mountPoint.getDevice().getAbsolutePath() + " " + mountPoint.getMountPoint().getAbsolutePath(), "mount -o remount," + mountType.toLowerCase() + " " + mountPoint.getDevice().getAbsolutePath() + " " + mountPoint.getMountPoint().getAbsolutePath(), "/system/bin/toolbox mount -o remount," + mountType.toLowerCase() + " " + mountPoint.getDevice().getAbsolutePath() + " " + mountPoint.getMountPoint().getAbsolutePath() @@ -107,7 +112,7 @@ protected boolean remount(String file, String mountType) { mountPoint = findMountPointRecursive(file); } - Log.i(InternalVariables.TAG, mountPoint.getFlags() + " AND " + mountType.toLowerCase()); + Log.i(Constants.TAG, mountPoint.getFlags() + " AND " + mountType.toLowerCase()); if (mountPoint.getFlags().contains(mountType.toLowerCase())) { RootTools.log(mountPoint.getFlags().toString()); return true; diff --git a/src/com/stericson/RootTools/internal/RootToolsInternalMethods.java b/src/com/stericson/RootTools/internal/RootToolsInternalMethods.java new file mode 100644 index 00000000..114f9ecd --- /dev/null +++ b/src/com/stericson/RootTools/internal/RootToolsInternalMethods.java @@ -0,0 +1,1586 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +package com.stericson.RootTools.internal; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.io.LineNumberReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeoutException; +import java.util.regex.Matcher; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.os.Environment; +import android.os.StatFs; + +import com.stericson.RootTools.Constants; +import com.stericson.RootTools.RootTools; +import com.stericson.RootTools.RootTools.Result; +import com.stericson.RootTools.containers.Mount; +import com.stericson.RootTools.containers.Permissions; +import com.stericson.RootTools.containers.Symlink; +import com.stericson.RootTools.execution.Command; +import com.stericson.RootTools.execution.CommandCapture; +import com.stericson.RootTools.execution.Shell; + +public final class RootToolsInternalMethods +{ + + // -------------------- + // # Internal methods # + // -------------------- + boolean instantiated = false; + + protected RootToolsInternalMethods() {} + + public static void getInstance() { + //this will allow RootTools to be the only one to get an instance of this class. + RootTools.setRim(new RootToolsInternalMethods()); + } + + + public boolean returnPath() throws TimeoutException + { + + CommandCapture command = null; + + try + { + if(!RootTools.exists("/data/local/tmp")) + { + command = new CommandCapture(0, "mkdir /data/local/tmp"); + Shell.startRootShell().add(command).waitForFinish(); + } + + InternalVariables.path = new HashSet(); + // Try to read from the file. + LineNumberReader lnr = null; + + String mountedas = RootTools.getMountedAs("/"); + RootTools.remount("/", "rw"); + + command = new CommandCapture(0, "chmod 0777 /init.rc"); + Shell.startRootShell().add(command); + command = new CommandCapture(0, + "dd if=/init.rc of=/data/local/tmp/init.rc"); + Shell.startRootShell().add(command); + command = new CommandCapture(0, + "chmod 0777 /data/local/tmp/init.rc"); + Shell.startRootShell().add(command).waitForFinish(); + + RootTools.remount("/", mountedas); + + lnr = new LineNumberReader( + new FileReader("/data/local/tmp/init.rc")); + String line; + while ((line = lnr.readLine()) != null) + { + RootTools.log(line); + if(line.contains("export PATH")) + { + int tmp = line.indexOf("/"); + InternalVariables.path = new HashSet( + Arrays.asList(line.substring(tmp).split(":"))); + return true; + } + } + return false; + } + catch (Exception e) + { + if(RootTools.debugMode) + { + RootTools.log("Error: " + e.getMessage()); + e.printStackTrace(); + } + return false; + } + } + + public ArrayList getSymLinks() throws FileNotFoundException, + IOException + { + LineNumberReader lnr = null; + try + { + lnr = new LineNumberReader(new FileReader( + "/data/local/symlinks.txt")); + String line; + ArrayList symlink = new ArrayList(); + while ((line = lnr.readLine()) != null) + { + + RootTools.log(line); + + String[] fields = line.split(" "); + symlink.add(new Symlink(new File(fields[fields.length - 3]), // file + new File(fields[fields.length - 1]) // SymlinkPath + )); + } + return symlink; + } + finally + { + // no need to do anything here. + } + } + + public Permissions getPermissions(String line) + { + + String[] lineArray = line.split(" "); + String rawPermissions = lineArray[0]; + + if(rawPermissions.length() == 10 + && (rawPermissions.charAt(0) == '-' + || rawPermissions.charAt(0) == 'd' || rawPermissions + .charAt(0) == 'l') + && (rawPermissions.charAt(1) == '-' || rawPermissions.charAt(1) == 'r') + && (rawPermissions.charAt(2) == '-' || rawPermissions.charAt(2) == 'w')) + { + RootTools.log(rawPermissions); + + Permissions permissions = new Permissions(); + + permissions.setType(rawPermissions.substring(0, 1)); + + RootTools.log(permissions.getType()); + + permissions.setUserPermissions(rawPermissions.substring(1, 4)); + + RootTools.log(permissions.getUserPermissions()); + + permissions.setGroupPermissions(rawPermissions.substring(4, 7)); + + RootTools.log(permissions.getGroupPermissions()); + + permissions.setOtherPermissions(rawPermissions.substring(7, 10)); + + RootTools.log(permissions.getOtherPermissions()); + + StringBuilder finalPermissions = new StringBuilder(); + finalPermissions.append(parseSpecialPermissions(rawPermissions)); + finalPermissions.append(parsePermissions(permissions.getUserPermissions())); + finalPermissions.append(parsePermissions(permissions.getGroupPermissions())); + finalPermissions.append(parsePermissions(permissions.getOtherPermissions())); + + permissions.setPermissions(Integer.parseInt(finalPermissions.toString())); + + return permissions; + } + + return null; + } + + public int parsePermissions(String permission) + { + int tmp; + if(permission.charAt(0) == 'r') + tmp = 4; + else + tmp = 0; + + RootTools.log("permission " + tmp); + RootTools.log("character " + permission.charAt(0)); + + if(permission.charAt(1) == 'w') + tmp += 2; + else + tmp += 0; + + RootTools.log("permission " + tmp); + RootTools.log("character " + permission.charAt(1)); + + if(permission.charAt(2) == 'x') + tmp += 1; + else + tmp += 0; + + RootTools.log("permission " + tmp); + RootTools.log("character " + permission.charAt(2)); + + return tmp; + } + + public int parseSpecialPermissions(String permission) + { + int tmp = 0; + if(permission.charAt(2) == 's') + tmp += 4; + + if(permission.charAt(5) == 's') + tmp += 2; + + if(permission.charAt(8) == 't') + tmp += 1; + + RootTools.log("special permissions " + tmp); + + return tmp; + } + + /** + * Copys a file to a destination. Because cp is not available on all android devices, we have a + * fallback on the cat command + * + * @param source + * example: /data/data/org.adaway/files/hosts + * @param destination + * example: /system/etc/hosts + * @param remountAsRw + * remounts the destination as read/write before writing to it + * @param preserveFileAttributes + * tries to copy file attributes from source to destination, if only cat is available + * only permissions are preserved + * @return true if it was successfully copied + */ + public boolean copyFile(String source, String destination, boolean remountAsRw, + boolean preserveFileAttributes) { + boolean result = true; + + try { + // mount destination as rw before writing to it + if (remountAsRw) { + RootTools.remount(destination, "RW"); + } + + // if cp is available and has appropriate permissions + if (checkUtil("cp")) { + RootTools.log("cp command is available!"); + + if (preserveFileAttributes) { + CommandCapture command = new CommandCapture(0, "cp -fp " + source + " " + destination); + Shell.startRootShell().add(command).waitForFinish(); + } else { + CommandCapture command = new CommandCapture(0, "cp -f " + source + " " + destination); + Shell.startRootShell().add(command).waitForFinish(); + } + } else { + if (checkUtil("busybox") && hasUtil("cp", "busybox")) { + RootTools.log("busybox cp command is available!"); + + if (preserveFileAttributes) { + CommandCapture command = new CommandCapture(0, "busybox cp -fp " + source + " " + destination); + Shell.startRootShell().add(command).waitForFinish(); + } else { + CommandCapture command = new CommandCapture(0, "busybox cp -f " + source + " " + destination); + Shell.startRootShell().add(command).waitForFinish(); + } + } else { // if cp is not available use cat + // if cat is available and has appropriate permissions + if (checkUtil("cat")) { + RootTools.log("cp is not available, use cat!"); + + int filePermission = -1; + if (preserveFileAttributes) { + // get permissions of source before overwriting + Permissions permissions = getFilePermissionsSymlinks(source); + filePermission = permissions.getPermissions(); + } + + CommandCapture command; + // copy with cat + command = new CommandCapture(0, "cat " + source + " > " + destination); + Shell.startRootShell().add(command).waitForFinish(); + + if (preserveFileAttributes) { + // set premissions of source to destination + command = new CommandCapture(0, "chmod " + filePermission + " " + destination); + Shell.startRootShell().add(command).waitForFinish(); + } + } else { + result = false; + } + } + } + + // mount destination back to ro + if (remountAsRw) { + RootTools.remount(destination, "RO"); + } + } catch (Exception e) { + e.printStackTrace(); + result = false; + } + + return result; + } + + /** + * This will check a given binary, determine if it exists and determine that + * it has either the permissions 755, 775, or 777. + * + * + * @param util + * Name of the utility to check. + * + * @return boolean to indicate whether the binary is installed and has + * appropriate permissions. + */ + public boolean checkUtil(String util) + { + if(RootTools.findBinary(util)) + { + + List binaryPaths = new ArrayList(); + binaryPaths.addAll(RootTools.lastFoundBinaryPaths); + + for(String path : binaryPaths) + { + Permissions permissions = RootTools + .getFilePermissionsSymlinks(path + "/" + util); + + if(permissions != null) + { + String permission; + + if (Integer.toString(permissions.getPermissions()).length() > 3) + permission = Integer.toString(permissions.getPermissions()).substring(1); + else + permission = Integer.toString(permissions.getPermissions()); + + if(permission.equals("755") || permission.equals("777") + || permission.equals("775")) + { + RootTools.utilPath = path + "/" + util; + return true; + } + } + } + } + + return false; + + } + + /** + * Deletes a file or directory + * + * @param target + * example: /data/data/org.adaway/files/hosts + * @param remountAsRw + * remounts the destination as read/write before writing to it + * @return true if it was successfully deleted + */ + public boolean deleteFileOrDirectory(String target, boolean remountAsRw) { + boolean result = true; + + try { + // mount destination as rw before writing to it + if (remountAsRw) { + RootTools.remount(target, "RW"); + } + + if (hasUtil("rm", "toolbox")) { + RootTools.log("rm command is available!"); + + CommandCapture command = new CommandCapture(0, "rm -r " + target); + Shell.startRootShell().add(command).waitForFinish(); + if (command.exitCode() != 0) { + RootTools.log("target not exist or unable to delete file"); + result = false; + } + } else { + if (checkUtil("busybox") && hasUtil("rm", "busybox")) { + RootTools.log("busybox cp command is available!"); + + CommandCapture command = new CommandCapture(0, "busybox rm -rf " + target); + Shell.startRootShell().add(command).waitForFinish(); + if (command.exitCode() != 0) { + RootTools.log("target not exist or unable to delete file"); + result = false; + } + } + } + + // mount destination back to ro + if (remountAsRw) { + RootTools.remount(target, "RO"); + } + } catch (Exception e) { + e.printStackTrace(); + result = false; + } + + return result; + } + + /** + * Use this to check whether or not a file exists on the filesystem. + * + * @param file + * String that represent the file, including the full path to the + * file and its name. + * + * @return a boolean that will indicate whether or not the file exists. + * + */ + public boolean exists(final String file) + { + final List result = new ArrayList(); + + Command command = new Command(0, "ls " + file) + { + @Override + public void output(int arg0, String arg1) + { + RootTools.log(arg1); + result.add(arg1); + } + }; + + try + { + //Try not to open a new shell if one is open. + if (!Shell.isAnyShellOpen()) + Shell.startShell().add(command).waitForFinish(); + else + Shell.getOpenShell().add(command).waitForFinish(); + } + catch (Exception e) + { + return false; + } + + for (String line : result) + { + if (line.trim().equals(file)) + { + return true; + } + } + + try + { + RootTools.closeShell(false); + } catch (Exception e) {} + + result.clear(); + try + { + Shell.startRootShell().add(command).waitForFinish(); + } + catch (Exception e) + { + return false; + } + + //Avoid concurrent modification... + List final_result = new ArrayList(); + final_result.addAll(result); + + for (String line : final_result) + { + if (line.trim().equals(file)) + { + return true; + } + } + + return false; + + } + + /** + * This will try and fix a given binary. (This is for Busybox applets or Toolbox applets) By + * "fix", I mean it will try and symlink the binary from either toolbox or Busybox and fix the + * permissions if the permissions are not correct. + * + * @param util + * Name of the utility to fix. + * @param utilPath + * path to the toolbox that provides ln, rm, and chmod. This can be a blank string, a + * path to a binary that will provide these, or you can use + * RootTools.getWorkingToolbox() + */ + public void fixUtil(String util, String utilPath) { + try { + RootTools.remount("/system", "rw"); + + if (RootTools.findBinary(util)) { + List paths = new ArrayList(); + paths.addAll(RootTools.lastFoundBinaryPaths); + for (String path : paths) + { + CommandCapture command = new CommandCapture(0, utilPath + " rm " + path + "/" + util); + Shell.startRootShell().add(command).waitForFinish(); + } + + CommandCapture command = new CommandCapture(0, utilPath + " ln -s " + utilPath + " /system/bin/" + util, utilPath + " chmod 0755 /system/bin/" + util); + Shell.startRootShell().add(command).waitForFinish(); + } + + RootTools.remount("/system", "ro"); + } catch (Exception e) {} + } + + /** + * This will check an array of binaries, determine if they exist and determine that it has + * either the permissions 755, 775, or 777. If an applet is not setup correctly it will try and + * fix it. (This is for Busybox applets or Toolbox applets) + * + * @param utils + * Name of the utility to check. + * + * @throws Exception + * if the operation cannot be completed. + * + * @return boolean to indicate whether the operation completed. Note that this is not indicative + * of whether the problem was fixed, just that the method did not encounter any + * exceptions. + */ + public boolean fixUtils(String[] utils) throws Exception { + + for (String util : utils) { + if (!checkUtil(util)) { + if (checkUtil("busybox")) { + if (hasUtil(util, "busybox")) { + fixUtil(util, RootTools.utilPath); + } + } else { + if (checkUtil("toolbox")) { + if (hasUtil(util, "toolbox")) { + fixUtil(util, RootTools.utilPath); + } + } else { + return false; + } + } + } + } + + return true; + } + + /** + * + * @param binaryName + * String that represent the binary to find. + * + * @return true if the specified binary was found. Also, the path the binary was + * found at can be retrieved via the variable lastFoundBinaryPath, if the binary was + * found in more than one location this will contain all of these locations. + * + */ + public boolean findBinary(String binaryName) { + boolean found = false; + RootTools.lastFoundBinaryPaths.clear(); + + List list = new ArrayList(); + + RootTools.log("Checking for " + binaryName); + + try { + Set paths = RootTools.getPath(); + if (paths.size() > 0) + { + for (String path : paths) { + if (RootTools.exists(path + "/" + binaryName)) { + RootTools.log(binaryName + " was found here: " + path); + list.add(path); + found = true; + } else { + RootTools.log(binaryName + " was NOT found here: " + path); + } + } + } + } catch (TimeoutException ex) { + RootTools.log("TimeoutException!!!"); + } catch (Exception e) { + RootTools.log(binaryName + " was not found, more information MAY be available with Debugging on."); + } + + if (!found) { + RootTools.log("Trying second method"); + RootTools.log("Checking for " + binaryName); + String[] places = { "/sbin/", "/system/bin/", "/system/xbin/", "/data/local/xbin/", + "/data/local/bin/", "/system/sd/xbin/", "/system/bin/failsafe/", "/data/local/" }; + for (String where : places) { + if (RootTools.exists(where + binaryName)) { + RootTools.log(binaryName + " was found here: " + where); + list.add(where); + found = true; + } else { + RootTools.log(binaryName + " was NOT found here: " + where); + } + } + } + + if (RootTools.debugMode) + { + for (String path : list) + { + RootTools.log("Paths: " + path); + } + } + + Collections.reverse(list); + + RootTools.lastFoundBinaryPaths.addAll(list); + + return found; + } + + /** + * This will return an List of Strings. Each string represents an applet available from BusyBox. + *

    + * + * @param path + * Path to the busybox binary that you want the list of applets from. + * + * @return List a List of strings representing the applets available from + * Busybox. + * + * @return null If we cannot return the list of applets. + */ + public List getBusyBoxApplets(String path) throws Exception { + + if (path != null && !path.endsWith("/") && !path.equals("")) { + path += "/"; + } else if (path == null) { + //Don't know what the user wants to do...what am I pshycic? + throw new Exception("Path is null, please specifiy a path"); + } + + final List results = new ArrayList(); + + Command command = new Command(Constants.BBA, path + "busybox --list") { + + @Override + public void output(int id, String line) { + if (id == Constants.BBA) { + if (!line.trim().equals("") && !line.trim().contains("not found")) { + results.add(line); + } + } + } + }; + + Shell.startRootShell().add(command); + command.waitForFinish(); + + return results; + } + + /** + * @return BusyBox version is found, "" if not found. + */ + public String getBusyBoxVersion(String path) { + + if (!path.equals("") && !path.endsWith("/")) + { + path += "/"; + } + + RootTools.log("Getting BusyBox Version"); + InternalVariables.busyboxVersion = ""; + try { + Command command = new Command(Constants.BBV, path + "busybox") + { + @Override + public void output(int id, String line) + { + if (id == Constants.BBV) + { + if (line.startsWith("BusyBox") && InternalVariables.busyboxVersion.equals("")) { + String[] temp = line.split(" "); + InternalVariables.busyboxVersion = temp[1]; + } + } + } + }; + + Shell.startRootShell().add(command); + command.waitForFinish(); + + } catch (Exception e) { + RootTools.log("BusyBox was not found, more information MAY be available with Debugging on."); + return ""; + } + + return InternalVariables.busyboxVersion; + } + + /** + * @return long Size, converted to kilobytes (from xxx or xxxm or xxxk etc.) + */ + public long getConvertedSpace(String spaceStr) + { + try + { + double multiplier = 1.0; + char c; + StringBuffer sb = new StringBuffer(); + for(int i = 0; i < spaceStr.length(); i++) + { + c = spaceStr.charAt(i); + if(!Character.isDigit(c) && c != '.') + { + if(c == 'm' || c == 'M') + { + multiplier = 1024.0; + } + else if(c == 'g' || c == 'G') + { + multiplier = 1024.0 * 1024.0; + } + break; + } + sb.append(spaceStr.charAt(i)); + } + return (long) Math.ceil(Double.valueOf(sb.toString()) * multiplier); + } + catch (Exception e) + { + return -1; + } + } + + /** + * This method will return the inode number of a file. This method is dependent on having a version of + * ls that supports the -i parameter. + * + * @param file path to the file that you wish to return the inode number + * + * @return String The inode number for this file or "" if the inode number could not be found. + */ + public String getInode(String file) + { + try + { + Command command = new Command(Constants.GI, "/data/local/ls -i " + file) + { + + @Override + public void output(int id, String line) + { + if (id == Constants.GI) + { + if (!line.trim().equals("") && Character.isDigit((char) line.trim().substring(0, 1).toCharArray()[0])) + { + InternalVariables.inode = line.trim().split(" ")[0].toString(); + } + } + } + }; + Shell.startRootShell().add(command); + command.waitForFinish(); + + return InternalVariables.inode; + } + catch (Exception ignore) + { + return ""; + } + } + + /** + * @return true if your app has been given root access. + * @throws TimeoutException + * if this operation times out. (cannot determine if access is given) + */ + public boolean isAccessGiven() { + try { + RootTools.log("Checking for Root access"); + InternalVariables.accessGiven = false; + + Command command = new Command(Constants.IAG, "id") + { + @Override + public void output(int id, String line) + { + if (id == Constants.IAG) + { + Set ID = new HashSet(Arrays.asList(line.split(" "))); + for (String userid : ID) { + RootTools.log(userid); + + if (userid.toLowerCase().contains("uid=0")) { + InternalVariables.accessGiven = true; + RootTools.log("Access Given"); + break; + } + } + if (!InternalVariables.accessGiven) { + RootTools.log("Access Denied?"); + } + } + } + }; + + Shell.startRootShell().add(command); + command.waitForFinish(); + + + if (InternalVariables.accessGiven) { + return true; + } else { + return false; + } + + } catch (Exception e) { + e.printStackTrace(); + return false; + } finally { + RootTools.shellDelay = 0; + } + } + + public boolean isNativeToolsReady(int nativeToolsId, Context context) { + RootTools.log("Preparing Native Tools"); + InternalVariables.nativeToolsReady = false; + + Installer installer; + try { + installer = new Installer(context); + } catch (IOException ex) { + if (RootTools.debugMode) { + ex.printStackTrace(); + } + return false; + } + + if (installer.isBinaryInstalled("nativetools")) { + InternalVariables.nativeToolsReady = true; + } else { + InternalVariables.nativeToolsReady = installer.installBinary(nativeToolsId, + "nativetools", "700"); + } + return InternalVariables.nativeToolsReady; + } + + /** + * + * @param file + * String that represent the file, including the full path to the + * file and its name. + * + * @return An instance of the class permissions from which you can get the + * permissions of the file or if the file could not be found or + * permissions couldn't be determined then permissions will be null. + * + */ + public Permissions getFilePermissionsSymlinks(String file) + { + RootTools.log("Checking permissions for " + file); + if(RootTools.exists(file)) + { + RootTools.log(file + " was found."); + try + { + + Command command = new Command( + Constants.FPS, "ls -l " + file, + "busybox ls -l " + file, + "/system/bin/failsafe/toolbox ls -l " + file, + "toolbox ls -l " + file) + { + @Override + public void output(int id, String line) + { + if(id == Constants.FPS) + { + String symlink_final = ""; + + String[] lineArray = line.split(" "); + if(lineArray[0].length() != 10) + { + return; + } + + RootTools.log("Line " + line); + + try + { + String[] symlink = line.split(" "); + if(symlink[symlink.length - 2].equals("->")) + { + RootTools.log("Symlink found."); + symlink_final = symlink[symlink.length - 1]; + } + } + catch (Exception e) + { + } + + try + { + InternalVariables.permissions = getPermissions(line); + if(InternalVariables.permissions != null) + { + InternalVariables.permissions.setSymlink(symlink_final); + } + } + catch (Exception e) + { + RootTools.log(e.getMessage()); + } + } + } + + }; + Shell.startRootShell().add(command); + command.waitForFinish(); + + return InternalVariables.permissions; + + } + catch (Exception e) + { + RootTools.log(e.getMessage()); + return null; + } + } + + return null; + } + + /** + * This will return an ArrayList of the class Mount. The class mount contains the following + * property's: device mountPoint type flags + *

    + * These will provide you with any information you need to work with the mount points. + * + * @return ArrayList an ArrayList of the class Mount. + * @throws Exception + * if we cannot return the mount points. + */ + public ArrayList getMounts() throws Exception + { + LineNumberReader lnr = null; + lnr = new LineNumberReader(new FileReader("/proc/mounts")); + String line; + ArrayList mounts = new ArrayList(); + while ((line = lnr.readLine()) != null) + { + + RootTools.log(line); + + String[] fields = line.split(" "); + mounts.add(new Mount(new File(fields[0]), // device + new File(fields[1]), // mountPoint + fields[2], // fstype + fields[3] // flags + )); + } + InternalVariables.mounts = mounts; + + if (InternalVariables.mounts != null) { + return InternalVariables.mounts; + } else { + throw new Exception(); + } + } + + /** + * This will tell you how the specified mount is mounted. rw, ro, etc... + *

    + * @param path mount you want to check + * + * @return String What the mount is mounted as. + * @throws Exception + * if we cannot determine how the mount is mounted. + */ + public String getMountedAs(String path) throws Exception { + InternalVariables.mounts = getMounts(); + if (InternalVariables.mounts != null) { + for (Mount mount : InternalVariables.mounts) + { + if (path.equalsIgnoreCase(mount.getMountPoint().getAbsolutePath())) + { + RootTools.log((String) mount.getFlags().toArray()[0] + " :: " + mount.toString()); + return (String) mount.getFlags().toArray()[0]; + } + } + + throw new Exception(); + } + else + { + throw new Exception(); + } + } + + /** + * This will return the environment variable $PATH + * + * @return Set A Set of Strings representing the environment variable $PATH + * @throws Exception + * if we cannot return the $PATH variable + */ + public Set getPath() throws Exception { + if (InternalVariables.path != null) { + return InternalVariables.path; + } else { + if (returnPath()) { + return InternalVariables.path; + } else { + throw new Exception(); + } + } + } + + /** + * Get the space for a desired partition. + * + * @param path + * The partition to find the space for. + * @return the amount if space found within the desired partition. If the space was not found + * then the value is -1 + * @throws TimeoutException + */ + public long getSpace(String path) { + InternalVariables.getSpaceFor = path; + boolean found = false; + RootTools.log("Looking for Space"); + try { + final Command command = new Command(Constants.GS, "df " + path) + { + + @Override + public void output(int id, String line) + { + if (id == Constants.GS) + { + if (line.contains(InternalVariables.getSpaceFor.trim())) { + InternalVariables.space = line.split(" "); + } + } + } + }; + + Shell.startRootShell().add(command); + command.waitForFinish(); + } catch (Exception e) {} + + if (InternalVariables.space != null) { + RootTools.log("First Method"); + + for (String spaceSearch : InternalVariables.space) { + + RootTools.log(spaceSearch); + + if (found) { + return getConvertedSpace(spaceSearch); + } else if (spaceSearch.equals("used,")) { + found = true; + } + } + + // Try this way + int count = 0, targetCount = 3; + + RootTools.log("Second Method"); + + if (InternalVariables.space[0].length() <= 5 ) { + targetCount = 2; + } + + for (String spaceSearch : InternalVariables.space) { + + RootTools.log(spaceSearch); + if (spaceSearch.length() > 0) { + RootTools.log(spaceSearch + ("Valid")); + if (count == targetCount) { + return getConvertedSpace(spaceSearch); + } + count++; + } + } + } + RootTools.log("Returning -1, space could not be determined."); + return -1; + } + + /** + * This will return a String that represent the symlink for a specified file. + *

    + * + * @param file + * file to get the Symlink for. (must have absolute path) + * + * @return String a String that represent the symlink for a specified file or an + * empty string if no symlink exists. + */ + public String getSymlink(String file) { + RootTools.log("Looking for Symlink for " + file); + + try { + final List results = new ArrayList(); + + Command command = new Command(Constants.GSYM, "ls -l " + file) + { + + @Override + public void output(int id, String line) + { + if (id == Constants.GSYM) + { + if (!line.trim().equals("")) + { + results.add(line); + } + } + } + }; + + Shell.startRootShell().add(command); + command.waitForFinish(); + + String[] symlink = results.get(0).split(" "); + if (symlink[symlink.length - 2].equals("->")) { + RootTools.log("Symlink found."); + + String final_symlink = ""; + if (!symlink[symlink.length - 1].equals("") && !symlink[symlink.length - 1].contains("/")) + { + //We assume that we need to get the path for this symlink as it is probably not absolute. + findBinary(symlink[symlink.length - 1]); + if (RootTools.lastFoundBinaryPaths.size() > 0) + { + //We return the first found location. + final_symlink = RootTools.lastFoundBinaryPaths.get(0) + "/" + symlink[symlink.length - 1]; + } + else + { + //we couldnt find a path, return the symlink by itself. + final_symlink = symlink[symlink.length - 1]; + } + } + else + { + final_symlink = symlink[symlink.length - 1]; + } + + return final_symlink; + } + } catch (Exception e) { + if (RootTools.debugMode) + e.printStackTrace(); + } + + RootTools.log("Symlink not found"); + return ""; + } + + /** + * This will return an ArrayList of the class Symlink. The class Symlink contains the following + * property's: path SymplinkPath + *

    + * These will provide you with any Symlinks in the given path. + * + * @param path + * path to search for Symlinks. + * + * @return ArrayList an ArrayList of the class Symlink. + * @throws Exception + * if we cannot return the Symlinks. + */ + public ArrayList getSymlinks(String path) throws Exception { + + // this command needs find + if (!checkUtil("find")) { + throw new Exception(); + } + + CommandCapture command = new CommandCapture(0, "find " + path + " -type l -exec ls -l {} \\; > /data/local/symlinks.txt;"); + Shell.startRootShell().add(command); + command.waitForFinish(); + + InternalVariables.symlinks = getSymLinks(); + if (InternalVariables.symlinks != null) { + return InternalVariables.symlinks; + } else { + throw new Exception(); + } + } + + /** + * This will return to you a string to be used in your shell commands which will represent the + * valid working toolbox with correct permissions. For instance, if Busybox is available it will + * return "busybox", if busybox is not available but toolbox is then it will return "toolbox" + * + * @return String that indicates the available toolbox to use for accessing applets. + */ + public String getWorkingToolbox() { + if (RootTools.checkUtil("busybox")) { + return "busybox"; + } else if (RootTools.checkUtil("toolbox")) { + return "toolbox"; + } else { + return ""; + } + } + + /** + * Checks if there is enough Space on SDCard + * + * @param updateSize + * size to Check (long) + * @return true if the Update will fit on SDCard, false if not enough + * space on SDCard. Will also return false, if the SDCard is not mounted as + * read/write + */ + public boolean hasEnoughSpaceOnSdCard(long updateSize) { + RootTools.log("Checking SDcard size and that it is mounted as RW"); + String status = Environment.getExternalStorageState(); + if (!status.equals(Environment.MEDIA_MOUNTED)) { + return false; + } + File path = Environment.getExternalStorageDirectory(); + StatFs stat = new StatFs(path.getPath()); + long blockSize = stat.getBlockSize(); + long availableBlocks = stat.getAvailableBlocks(); + return (updateSize < availableBlocks * blockSize); + } + + /** + * Checks whether the toolbox or busybox binary contains a specific util + * + * @param util + * @param box + * Should contain "toolbox" or "busybox" + * @return true if it contains this util + */ + public boolean hasUtil(final String util, final String box) { + + InternalVariables.found = false; + + // only for busybox and toolbox + if (!(box.endsWith("toolbox") || box.endsWith("busybox"))) { + return false; + } + + try { + + Command command = new Command(0, box.endsWith("toolbox") ? box + " " + util : box + " --list" ) { + + @Override + public void output(int id, String line) + { + if (box.endsWith("toolbox")) { + if (line.contains("no such tool")) { + InternalVariables.found = true; + } + } else if (box.endsWith("busybox")) { + // go through all lines of busybox --list + if (line.contains(util)) { + RootTools.log("Found util!"); + InternalVariables.found = true; + } + } + } + + }; + RootTools.getShell(true).add(command).waitForFinish(5000); + + if (InternalVariables.found) { + RootTools.log("Box contains " + util + " util!"); + return true; + } else { + RootTools.log("Box does not contain " + util + " util!"); + return false; + } + } catch (Exception e) { + RootTools.log(e.getMessage()); + return false; + } + } + + /** + * This method can be used to unpack a binary from the raw resources folder and store it in + * /data/data/app.package/files/ This is typically useful if you provide your own C- or + * C++-based binary. This binary can then be executed using sendShell() and its full path. + * + * @param context + * the current activity's Context + * @param sourceId + * resource id; typically R.raw.id + * @param destName + * destination file name; appended to /data/data/app.package/files/ + * @param mode + * chmod value for this file + * @return a boolean which indicates whether or not we were able to create the new + * file. + */ + public boolean installBinary(Context context, int sourceId, String destName, String mode) { + Installer installer; + + try { + installer = new Installer(context); + } catch (IOException ex) { + if (RootTools.debugMode) { + ex.printStackTrace(); + } + return false; + } + + return (installer.installBinary(sourceId, destName, mode)); + } + + /** + * This will let you know if an applet is available from BusyBox + *

    + * + * @param applet The applet to check for. + * + * @return true if applet is available, false otherwise. + */ + public boolean isAppletAvailable(String applet, String binaryPath) { + try { + for (String aplet : getBusyBoxApplets(binaryPath)) { + if (aplet.equals(applet)) { + return true; + } + } + return false; + } catch (Exception e) { + RootTools.log(e.toString()); + return false; + } + } + + /** + * This method can be used to to check if a process is running + * + * @param processName + * name of process to check + * @return true if process was found + * @throws TimeoutException + * (Could not determine if the process is running) + */ + public boolean isProcessRunning(final String processName) { + RootTools.log("Checks if process is running: " + processName); + + boolean processRunning = false; + try { + Result result = new Result() { + @Override + public void process(String line) throws Exception { + if (line.contains(processName)) { + setData(1); + } + } + + @Override + public void onFailure(Exception ex) { + setError(1); + } + + @Override + public void onComplete(int diag) { + } + + @Override + public void processError(String arg0) throws Exception { + } + + }; + RootTools.sendShell(new String[] { "ps" }, 1, result, -1); + + if (result.getError() == 0) { + // if data has been set process is running + if (result.getData() != null) { + processRunning = true; + } + } + } catch (Exception e) { + RootTools.log(e.getMessage()); + } + + return processRunning; + } + + /** + * This method can be used to kill a running process + * + * @param processName + * name of process to kill + * @return true if process was found and killed successfully + */ + public boolean killProcess(final String processName) + { + RootTools.log("Killing process " + processName); + + boolean processKilled = false; + try + { + Result result = new Result() + { + @Override + public void process(String line) throws Exception + { + if(line.contains(processName)) + { + Matcher psMatcher = InternalVariables.psPattern.matcher(line); + + try + { + if(psMatcher.find()) + { + String pid = psMatcher.group(1); + // concatenate to existing pids, to use later in + // kill + if(getData() != null) + { + setData(getData() + " " + pid); + } + else + { + setData(pid); + } + RootTools.log("Found pid: " + pid); + } + else + { + RootTools.log("Matching in ps command failed!"); + } + } + catch (Exception e) + { + RootTools.log("Error with regex!"); + e.printStackTrace(); + } + } + } + + @Override + public void onFailure(Exception ex) + { + setError(1); + } + + @Override + public void onComplete(int diag) + { + } + + @Override + public void processError(String arg0) throws Exception + { + } + + }; + RootTools.sendShell(new String[] { "ps" }, 1, result, -1); + + if(result.getError() == 0) + { + // get all pids in one string, created in process method + String pids = (String) result.getData(); + + // kill processes + if(pids != null) + { + try + { + // example: kill -9 1234 1222 5343 + RootTools.sendShell(new String[] { "kill -9 " + pids }, 1, -1); + processKilled = true; + } + catch (Exception e) + { + RootTools.log(e.getMessage()); + } + } + } + } + catch (Exception e) + { + RootTools.log(e.getMessage()); + } + + return processKilled; + } + + /** + * This will launch the Android market looking for BusyBox + * + * @param activity + * pass in your Activity + */ + public void offerBusyBox(Activity activity) { + RootTools.log("Launching Market for BusyBox"); + Intent i = new Intent(Intent.ACTION_VIEW, + Uri.parse("market://details?id=stericson.busybox")); + activity.startActivity(i); + } + + /** + * This will launch the Android market looking for BusyBox, but will return the intent fired and + * starts the activity with startActivityForResult + * + * @param activity + * pass in your Activity + * @param requestCode + * pass in the request code + * @return intent fired + */ + public Intent offerBusyBox(Activity activity, int requestCode) { + RootTools.log("Launching Market for BusyBox"); + Intent i = new Intent(Intent.ACTION_VIEW, + Uri.parse("market://details?id=stericson.busybox")); + activity.startActivityForResult(i, requestCode); + return i; + } + + /** + * This will launch the Android market looking for SuperUser + * + * @param activity + * pass in your Activity + */ + public void offerSuperUser(Activity activity) { + RootTools.log("Launching Market for SuperUser"); + Intent i = new Intent(Intent.ACTION_VIEW, + Uri.parse("market://details?id=com.noshufou.android.su")); + activity.startActivity(i); + } + + /** + * This will launch the Android market looking for SuperUser, but will return the intent fired + * and starts the activity with startActivityForResult + * + * @param activity + * pass in your Activity + * @param requestCode + * pass in the request code + * @return intent fired + */ + public Intent offerSuperUser(Activity activity, int requestCode) { + RootTools.log("Launching Market for SuperUser"); + Intent i = new Intent(Intent.ACTION_VIEW, + Uri.parse("market://details?id=com.noshufou.android.su")); + activity.startActivityForResult(i, requestCode); + return i; + } +} diff --git a/src/com/stericson/RootTools/Runner.java b/src/com/stericson/RootTools/internal/Runner.java similarity index 90% rename from src/com/stericson/RootTools/Runner.java rename to src/com/stericson/RootTools/internal/Runner.java index 5f5de371..253d1ea9 100644 --- a/src/com/stericson/RootTools/Runner.java +++ b/src/com/stericson/RootTools/internal/Runner.java @@ -20,14 +20,18 @@ * limitations under that License. */ -package com.stericson.RootTools; +package com.stericson.RootTools.internal; import java.io.IOException; +import com.stericson.RootTools.RootTools; +import com.stericson.RootTools.execution.CommandCapture; +import com.stericson.RootTools.execution.Shell; + import android.content.Context; import android.util.Log; -class Runner extends Thread { +public class Runner extends Thread { private static final String LOG_TAG = "RootTools::Runner"; diff --git a/src/com/stericson/RootTools/test/.svn/all-wcprops b/src/com/stericson/RootTools/test/.svn/all-wcprops new file mode 100644 index 00000000..ba70effe --- /dev/null +++ b/src/com/stericson/RootTools/test/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 93 +/svn/!svn/ver/230/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/test +END +SanityCheckRootTools.java +K 25 +svn:wc:ra_dav:version-url +V 119 +/svn/!svn/ver/230/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/test/SanityCheckRootTools.java +END diff --git a/src/com/stericson/RootTools/test/.svn/entries b/src/com/stericson/RootTools/test/.svn/entries new file mode 100644 index 00000000..e8de5de7 --- /dev/null +++ b/src/com/stericson/RootTools/test/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +249 +http://roottools.googlecode.com/svn/trunk/Developmental/RootTools_sdk3_generic/src/com/stericson/RootTools/test +http://roottools.googlecode.com/svn + + + +2013-01-29T03:44:12.016408Z +230 +stericson.g1 + + + + + + + + + + + + + + +326c17ea-325e-592a-0117-b1346ba49fde + +SanityCheckRootTools.java +file + + + + +2013-05-10T21:35:37.000000Z +b60134aa19e5d1a192f87c0c875f408b +2013-01-29T03:44:12.016408Z +230 +stericson.g1 + + + + + + + + + + + + + + + + + + + + + +15839 + diff --git a/src/com/stericson/RootTools/test/.svn/text-base/SanityCheckRootTools.java.svn-base b/src/com/stericson/RootTools/test/.svn/text-base/SanityCheckRootTools.java.svn-base new file mode 100644 index 00000000..4c6c0cff --- /dev/null +++ b/src/com/stericson/RootTools/test/.svn/text-base/SanityCheckRootTools.java.svn-base @@ -0,0 +1,401 @@ +/* + * This file is part of the RootTools Project: http://code.google.com/p/roottools/ + * + * Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks + * + * This code is dual-licensed under the terms of the Apache License Version 2.0 and + * the terms of the General Public License (GPL) Version 2. + * You may use this code according to either of these licenses as is most appropriate + * for your project on a case-by-case basis. + * + * The terms of each license can be found in the root directory of this project's repository as well as at: + * + * * http://www.apache.org/licenses/LICENSE-2.0 + * * http://www.gnu.org/licenses/gpl-2.0.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under these Licenses is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See each License for the specific language governing permissions and + * limitations under that License. + */ + +package com.stericson.RootTools.test; + +import java.io.IOException; +import java.util.List; +import java.util.concurrent.TimeoutException; + +import android.app.Activity; +import android.app.ProgressDialog; +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.widget.ScrollView; +import android.widget.TextView; + +import com.stericson.RootTools.RootTools; +import com.stericson.RootTools.containers.Permissions; +import com.stericson.RootTools.exceptions.RootDeniedException; +import com.stericson.RootTools.exceptions.RootToolsException; +import com.stericson.RootTools.execution.Shell; + +public class SanityCheckRootTools extends Activity { + private ScrollView mScrollView; + private TextView mTextView; + private ProgressDialog mPDialog; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + RootTools.debugMode = true; + + mTextView = new TextView(this); + mTextView.setText(""); + mScrollView = new ScrollView(this); + mScrollView.addView(mTextView); + setContentView(mScrollView); + + // Great the user with our version number + String version = "?"; + try { + PackageInfo packageInfo = + this.getPackageManager().getPackageInfo(this.getPackageName(), 0); + version = packageInfo.versionName; + } catch (PackageManager.NameNotFoundException e) { + } + + print("SanityCheckRootTools v " + version + "\n\n"); + + try + { + Shell.startRootShell(); + } + catch (IOException e2) + { + // TODO Auto-generated catch block + e2.printStackTrace(); + } + catch (TimeoutException e) + { + print("[ TIMEOUT EXCEPTION! ]\n"); + e.printStackTrace(); + } + catch (RootDeniedException e) + { + print("[ ROOT DENIED EXCEPTION! ]\n"); + e.printStackTrace(); + } + + try { + if (false == RootTools.isAccessGiven()) { + print("ERROR: No root access to this device.\n"); + return; + } + } catch (Exception e) { + print("ERROR: could not determine root access to this device.\n"); + return; + } + + // Display infinite progress bar + mPDialog = new ProgressDialog(this); + mPDialog.setCancelable(false); + mPDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); + + new SanityCheckThread(this, new TestHandler()).start(); + } + + protected void print(CharSequence text) { + mTextView.append(text); + mScrollView.post(new Runnable() { + public void run() { + mScrollView.fullScroll(ScrollView.FOCUS_DOWN); + } + }); + } + + // Run our long-running tests in their separate thread so as to + // not interfere with proper rendering. + private class SanityCheckThread extends Thread { + private Handler mHandler; + + public SanityCheckThread(Context context, Handler handler) { + mHandler = handler; + } + + public void run() { + visualUpdate(TestHandler.ACTION_SHOW, null); + + // First test: Install a binary file for future use + // if it wasn't already installed. + /* + visualUpdate(TestHandler.ACTION_PDISPLAY, "Installing binary if needed"); + if(false == RootTools.installBinary(mContext, R.raw.nes, "nes_binary")) { + visualUpdate(TestHandler.ACTION_HIDE, "ERROR: Failed to install binary. Please see log file."); + return; + } + */ + + boolean result; + + visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing Find Binary"); + result = RootTools.isRootAvailable(); + visualUpdate(TestHandler.ACTION_DISPLAY, "[ Checking Root ]\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, result + " k\n\n"); + + visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing file exists"); + visualUpdate(TestHandler.ACTION_DISPLAY, "[ Checking Exists() ]\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, RootTools.exists("/system/sbin/[") + " k\n\n"); + + visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing Is Access Given"); + result = RootTools.isAccessGiven(); + visualUpdate(TestHandler.ACTION_DISPLAY, "[ Checking for Access to Root ]\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, result + " k\n\n"); + + visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing Remount"); + result = RootTools.remount("/system", "rw"); + visualUpdate(TestHandler.ACTION_DISPLAY, "[ Remounting System as RW ]\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, result + " k\n\n"); + + visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing CheckUtil"); + visualUpdate(TestHandler.ACTION_DISPLAY, "[ Checking busybox is setup ]\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, RootTools.checkUtil("busybox") + " k\n\n"); + + visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing getBusyBoxVersion"); + visualUpdate(TestHandler.ACTION_DISPLAY, "[ Checking busybox version ]\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, RootTools.getBusyBoxVersion("/system/bin/") + " k\n\n"); + + try + { + visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing fixUtils"); + visualUpdate(TestHandler.ACTION_DISPLAY, "[ Checking Utils ]\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, RootTools.fixUtils(new String[] {"ls", "rm", "ln", "dd", "chmod", "mount"}) + " k\n\n"); + } + catch (Exception e2) + { + // TODO Auto-generated catch block + e2.printStackTrace(); + } + + try + { + visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing getSymlink"); + visualUpdate(TestHandler.ACTION_DISPLAY, "[ Checking [[ for symlink ]\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, RootTools.getSymlink("/system/bin/[[") + " k\n\n"); + } + catch (Exception e2) + { + // TODO Auto-generated catch block + e2.printStackTrace(); + } + + visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing getInode"); + visualUpdate(TestHandler.ACTION_DISPLAY, "[ Checking Inodes ]\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, RootTools.getInode("/system/bin/busybox") + " k\n\n"); + + visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing GetBusyBoxapplets"); + try + { + + visualUpdate(TestHandler.ACTION_DISPLAY, "[ Getting all available Busybox applets ]\n"); + for (String applet : RootTools.getBusyBoxApplets("/data/data/stericson.busybox.donate/files/bb")) + { + visualUpdate(TestHandler.ACTION_DISPLAY, applet + " k\n\n"); + } + + } + catch (Exception e1) + { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing getFilePermissionsSymlinks"); + Permissions permissions = RootTools.getFilePermissionsSymlinks("/system/bin/busybox"); + visualUpdate(TestHandler.ACTION_DISPLAY, "[ Checking busybox permissions and symlink ]\n"); + + if (permissions != null) + { + visualUpdate(TestHandler.ACTION_DISPLAY, "Symlink: " + permissions.getSymlink() + " k\n\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, "Group Permissions: " + permissions.getGroupPermissions() + " k\n\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, "Owner Permissions: " + permissions.getOtherPermissions() + " k\n\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, "Permissions: " + permissions.getPermissions() + " k\n\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, "Type: " + permissions.getType() + " k\n\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, "User Permissions: " + permissions.getUserPermissions() + " k\n\n"); + } + else + { + visualUpdate(TestHandler.ACTION_DISPLAY, "Permissions == null k\n\n"); + } + + visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing df"); + long spaceValue = RootTools.getSpace("/data"); + visualUpdate(TestHandler.ACTION_DISPLAY, "[ Checking /data partition size]\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, spaceValue + "k\n\n"); + + visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing sendShell() w/ return array"); + try { + List response = RootTools.sendShell("ls /", -1); + visualUpdate(TestHandler.ACTION_DISPLAY, "[ Listing of / (passing a List)]\n"); + for (String line : response) { + visualUpdate(TestHandler.ACTION_DISPLAY, line + "\n"); + } + } catch (IOException e) { + visualUpdate(TestHandler.ACTION_HIDE, "ERROR: " + e); + return; + } catch (RootToolsException e) { + visualUpdate(TestHandler.ACTION_HIDE, "DEV-DEFINED ERROR: " + e); + return; + } catch (TimeoutException e) { + visualUpdate(TestHandler.ACTION_HIDE, "Timeout.. " + e); + return; + } + + visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing sendShell() w/ callbacks"); + try { + visualUpdate(TestHandler.ACTION_DISPLAY, "\n[ Listing of / (callback)]\n"); + RootTools.Result result2 = new RootTools.Result() { + @Override + public void process(String line) throws Exception { + visualUpdate(TestHandler.ACTION_DISPLAY, line + "\n"); + } + + @Override + public void onFailure(Exception ex) { + visualUpdate(TestHandler.ACTION_HIDE, "ERROR: " + ex); + setError(1); + } + + @Override + public void onComplete(int diag) { + visualUpdate(TestHandler.ACTION_DISPLAY, "------\nDone.\n"); + } + + @Override + public void processError(String line) throws Exception { + visualUpdate(TestHandler.ACTION_DISPLAY, line + "\n"); + } + }; + RootTools.sendShell("ls /", result2, -1); + if (0 != result2.getError()) + return; + } catch (IOException e) { + visualUpdate(TestHandler.ACTION_HIDE, "ERROR: " + e); + return; + } catch (RootToolsException e) { + visualUpdate(TestHandler.ACTION_HIDE, "DEV-DEFINED ERROR: " + e); + return; + } catch (TimeoutException e) { + visualUpdate(TestHandler.ACTION_HIDE, "Timeout.. " + e); + return; + } + + visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing sendShell() for multiple commands"); + try { + visualUpdate(TestHandler.ACTION_DISPLAY, "\n[ ps + ls + date / (callback)]\n"); + RootTools.Result result2 = new RootTools.Result() { + @Override + public void process(String line) throws Exception { + visualUpdate(TestHandler.ACTION_DISPLAY, line + "\n"); + } + + @Override + public void onFailure(Exception ex) { + visualUpdate(TestHandler.ACTION_HIDE, "ERROR: " + ex); + setError(1); + } + + @Override + public void onComplete(int diag) { + visualUpdate(TestHandler.ACTION_DISPLAY, "------\nDone.\n"); + } + + @Override + public void processError(String line) throws Exception { + visualUpdate(TestHandler.ACTION_DISPLAY, line + "\n"); + } + + }; + RootTools.sendShell( + new String[]{ + "echo \"* PS:\"", + "ps", + "echo \"* LS:\"", + "ls", + "echo \"* DATE:\"", + "date"}, + 0, + result2, + -1 + ); + if (0 != result2.getError()) + return; + } catch (IOException e) { + visualUpdate(TestHandler.ACTION_HIDE, "ERROR: " + e); + } catch (RootToolsException e) { + visualUpdate(TestHandler.ACTION_HIDE, "DEV-DEFINED ERROR: " + e); + } catch (TimeoutException e) { + visualUpdate(TestHandler.ACTION_HIDE, "Timeout.. " + e); + return; + } + + visualUpdate(TestHandler.ACTION_PDISPLAY, "All tests complete."); + visualUpdate(TestHandler.ACTION_HIDE, null); + + try + { + RootTools.closeAllShells(); + } + catch (IOException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + private void visualUpdate(int action, String text) { + Message msg = mHandler.obtainMessage(); + Bundle bundle = new Bundle(); + bundle.putInt(TestHandler.ACTION, action); + bundle.putString(TestHandler.TEXT, text); + msg.setData(bundle); + mHandler.sendMessage(msg); + } + } + + private class TestHandler extends Handler { + static final public String ACTION = "action"; + static final public int ACTION_SHOW = 0x01; + static final public int ACTION_HIDE = 0x02; + static final public int ACTION_DISPLAY = 0x03; + static final public int ACTION_PDISPLAY = 0x04; + static final public String TEXT = "text"; + + public void handleMessage(Message msg) { + int action = msg.getData().getInt(ACTION); + String text = msg.getData().getString(TEXT); + + switch (action) { + case ACTION_SHOW: + mPDialog.show(); + mPDialog.setMessage("Running Root Library Tests..."); + break; + case ACTION_HIDE: + if (null != text) + print(text); + mPDialog.hide(); + break; + case ACTION_DISPLAY: + print(text); + break; + case ACTION_PDISPLAY: + mPDialog.setMessage(text); + break; + } + } + } +} diff --git a/src/com/stericson/RootTools/SanityCheckRootTools.java b/src/com/stericson/RootTools/test/SanityCheckRootTools.java similarity index 94% rename from src/com/stericson/RootTools/SanityCheckRootTools.java rename to src/com/stericson/RootTools/test/SanityCheckRootTools.java index 792bf5c3..4c6c0cff 100644 --- a/src/com/stericson/RootTools/SanityCheckRootTools.java +++ b/src/com/stericson/RootTools/test/SanityCheckRootTools.java @@ -20,7 +20,7 @@ * limitations under that License. */ -package com.stericson.RootTools; +package com.stericson.RootTools.test; import java.io.IOException; import java.util.List; @@ -37,6 +37,12 @@ import android.widget.ScrollView; import android.widget.TextView; +import com.stericson.RootTools.RootTools; +import com.stericson.RootTools.containers.Permissions; +import com.stericson.RootTools.exceptions.RootDeniedException; +import com.stericson.RootTools.exceptions.RootToolsException; +import com.stericson.RootTools.execution.Shell; + public class SanityCheckRootTools extends Activity { private ScrollView mScrollView; private TextView mTextView; @@ -64,6 +70,27 @@ public void onCreate(Bundle savedInstanceState) { } print("SanityCheckRootTools v " + version + "\n\n"); + + try + { + Shell.startRootShell(); + } + catch (IOException e2) + { + // TODO Auto-generated catch block + e2.printStackTrace(); + } + catch (TimeoutException e) + { + print("[ TIMEOUT EXCEPTION! ]\n"); + e.printStackTrace(); + } + catch (RootDeniedException e) + { + print("[ ROOT DENIED EXCEPTION! ]\n"); + e.printStackTrace(); + } + try { if (false == RootTools.isAccessGiven()) { print("ERROR: No root access to this device.\n"); @@ -112,16 +139,6 @@ public void run() { return; } */ - - try - { - Shell.startRootShell(); - } - catch (IOException e2) - { - // TODO Auto-generated catch block - e2.printStackTrace(); - } boolean result; @@ -150,7 +167,7 @@ public void run() { visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing getBusyBoxVersion"); visualUpdate(TestHandler.ACTION_DISPLAY, "[ Checking busybox version ]\n"); - visualUpdate(TestHandler.ACTION_DISPLAY, RootTools.getBusyBoxVersion() + " k\n\n"); + visualUpdate(TestHandler.ACTION_DISPLAY, RootTools.getBusyBoxVersion("/system/bin/") + " k\n\n"); try { @@ -185,7 +202,7 @@ public void run() { { visualUpdate(TestHandler.ACTION_DISPLAY, "[ Getting all available Busybox applets ]\n"); - for (String applet : RootTools.getBusyBoxApplets()) + for (String applet : RootTools.getBusyBoxApplets("/data/data/stericson.busybox.donate/files/bb")) { visualUpdate(TestHandler.ACTION_DISPLAY, applet + " k\n\n"); } @@ -222,7 +239,7 @@ public void run() { visualUpdate(TestHandler.ACTION_PDISPLAY, "Testing sendShell() w/ return array"); try { - List response = RootTools.sendShell("ls /", InternalVariables.timeout); + List response = RootTools.sendShell("ls /", -1); visualUpdate(TestHandler.ACTION_DISPLAY, "[ Listing of / (passing a List)]\n"); for (String line : response) { visualUpdate(TestHandler.ACTION_DISPLAY, line + "\n"); @@ -263,7 +280,7 @@ public void processError(String line) throws Exception { visualUpdate(TestHandler.ACTION_DISPLAY, line + "\n"); } }; - RootTools.sendShell("ls /", result2, InternalVariables.timeout); + RootTools.sendShell("ls /", result2, -1); if (0 != result2.getError()) return; } catch (IOException e) { @@ -313,7 +330,7 @@ public void processError(String line) throws Exception { "date"}, 0, result2, - InternalVariables.timeout + -1 ); if (0 != result2.getError()) return; From b359a6fb46a5d6c5911a0dfb90d89bb58b84665c Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Fri, 10 May 2013 16:59:47 -0700 Subject: [PATCH 17/76] Root implementation fixes Fix system mounter in prefs Test mounts properly --- .../openmanager/activities/OpenExplorer.java | 41 ++++++++++++------ .../activities/SettingsActivity.java | 37 +++++++++++++--- .../openmanager/adapters/OpenBookmarks.java | 3 +- .../brandroid/openmanager/data/OpenFile.java | 8 +++- .../openmanager/data/OpenFileRoot.java | 43 ++++++++++--------- .../openmanager/util/RootManager.java | 29 +++++++------ 6 files changed, 107 insertions(+), 54 deletions(-) diff --git a/src/org/brandroid/openmanager/activities/OpenExplorer.java b/src/org/brandroid/openmanager/activities/OpenExplorer.java index f1a5a77c..fdd85bf8 100644 --- a/src/org/brandroid/openmanager/activities/OpenExplorer.java +++ b/src/org/brandroid/openmanager/activities/OpenExplorer.java @@ -132,6 +132,7 @@ import java.util.Set; import java.util.UUID; import java.util.concurrent.RejectedExecutionException; +import java.util.concurrent.TimeoutException; import java.util.logging.Level; import java.util.logging.LogRecord; @@ -217,6 +218,7 @@ import com.android.gallery3d.util.ThreadPool; import com.jcraft.jsch.JSchException; import com.stericson.RootTools.RootTools; +import com.stericson.RootTools.exceptions.RootDeniedException; import com.viewpagerindicator.TabPageIndicator; import org.xmlpull.v1.XmlPullParserException; @@ -756,6 +758,12 @@ public void run() { } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); + } catch (TimeoutException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (RootDeniedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } } }).start(); @@ -1498,11 +1506,14 @@ public void updatePagerTitle(int page) { left += "/"; } } - SpannableString srLeft = new SpannableString(left); - if(left.length() > 0) - srLeft.setSpan(new ForegroundColorSpan(Color.GRAY), 0, left.length(), - Spanned.SPAN_COMPOSING); - ssb.append(srLeft); + if(!left.equals("")) + { + SpannableString srLeft = new SpannableString(left); + if(left.length() > 0) + srLeft.setSpan(new ForegroundColorSpan(Color.GRAY), 0, left.length(), + Spanned.SPAN_COMPOSING); + ssb.append(srLeft); + } // ssb.setSpan(new ForegroundColorSpan(Color.GRAY), 0, left.length(), // Spanned.SPAN_COMPOSING); OpenFragment curr = mViewPagerAdapter.getItem(page); @@ -1522,10 +1533,13 @@ public void updatePagerTitle(int page) { right += "/"; } } - SpannableString srRight = new SpannableString(right); - srRight.setSpan(new ForegroundColorSpan(Color.GRAY), 0, right.length(), - Spanned.SPAN_COMPOSING); - ssb.append(srRight); + if(!right.equals("")) + { + SpannableString srRight = new SpannableString(right); + srRight.setSpan(new ForegroundColorSpan(Color.GRAY), 0, right.length(), + Spanned.SPAN_COMPOSING); + ssb.append(srRight); + } updateTitle(ssb); } @@ -2323,9 +2337,12 @@ public void updateTitle(CharSequence cs) { { SpannableStringBuilder sb = new SpannableStringBuilder(getResources().getString( R.string.app_title)); - sb.append(cs.equals("") ? "" : " - "); - sb.append(cs); - setTitle(cs); + if(!cs.equals("")) + { + sb.append(cs.equals("") ? "" : " - "); + sb.append(cs); + } + setTitle(sb); } } diff --git a/src/org/brandroid/openmanager/activities/SettingsActivity.java b/src/org/brandroid/openmanager/activities/SettingsActivity.java index f8c110b9..80626923 100644 --- a/src/org/brandroid/openmanager/activities/SettingsActivity.java +++ b/src/org/brandroid/openmanager/activities/SettingsActivity.java @@ -83,6 +83,7 @@ import android.preference.PreferenceGroup; import android.preference.PreferenceManager; import android.preference.PreferenceScreen; +import android.text.Spannable; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.Toast; @@ -219,7 +220,14 @@ public void onCreate(Bundle savedInstanceState) { CheckBoxPreference pSystem = (CheckBoxPreference)findPreference("pref_system_mount"); if (pSystem != null) - pSystem.setChecked(RootManager.isSystemMounted()); + { + try { + String sysrw = RootTools.getMountedAs("/system"); + pSystem.setChecked(sysrw.equals("rw")); + } catch(Exception e) { + pSystem.setChecked(false); + } + } // getPreferences(MODE_PRIVATE); prefs = new Preferences(getApplicationContext()); @@ -579,7 +587,7 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preferen } public static boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, - Preference preference, Activity activity) { + Preference preference, final Activity activity) { final String key = preference.getKey(); if (key.equals("pref_global")) { Intent intentGlobal = new Intent(activity, SettingsActivity.class); @@ -600,16 +608,35 @@ public static boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, return true; } else if (key.equals("pref_system_mount")) { final CheckBoxPreference pSystem = (CheckBoxPreference)preference; + pSystem.setEnabled(false); + final Handler handler = new Handler(); final boolean checked = pSystem.isChecked(); + RootManager.Default.setHandler(); new Thread(new Runnable() { public void run() { String mode; try { mode = !checked ? "ro" : "rw"; RootTools.remount("/system", mode); - if (DEBUG) - Logger.LogDebug("New /system: " + RootTools.getMountedAs("/system")); - // pSystem.setChecked(RootTools.getMountedAs("/system").equalsIgnoreCase("rw")); + final String newmode = RootTools.getMountedAs("/system"); + final boolean success = newmode.equals(mode); + if(!success) + { + final boolean success2 = RootManager.mountSystem(checked); + handler.post(new Runnable() { + public void run() { + pSystem.setEnabled(true); + pSystem.setChecked(checked && success2); + if(!success2) + Toast.makeText(activity, "System mount failed", Toast.LENGTH_SHORT).show(); + } + }); + } else + handler.post(new Runnable() { + public void run() { + pSystem.setEnabled(true); + pSystem.setChecked(newmode.equals("rw")); + }}); } catch (Exception e) { Logger.LogError("Unable to remount system", e); } diff --git a/src/org/brandroid/openmanager/adapters/OpenBookmarks.java b/src/org/brandroid/openmanager/adapters/OpenBookmarks.java index 66180c5e..a9385559 100644 --- a/src/org/brandroid/openmanager/adapters/OpenBookmarks.java +++ b/src/org/brandroid/openmanager/adapters/OpenBookmarks.java @@ -37,8 +37,9 @@ import org.brandroid.utils.Preferences; import org.brandroid.utils.ViewUtils; -import com.stericson.RootTools.Mount; import com.stericson.RootTools.RootTools; +import com.stericson.RootTools.containers.Mount; + import android.animation.Animator; import android.annotation.SuppressLint; import android.content.Context; diff --git a/src/org/brandroid/openmanager/data/OpenFile.java b/src/org/brandroid/openmanager/data/OpenFile.java index 3ad50df3..448bc1ed 100644 --- a/src/org/brandroid/openmanager/data/OpenFile.java +++ b/src/org/brandroid/openmanager/data/OpenFile.java @@ -424,11 +424,15 @@ public Long lastModified() { @Override public Boolean canRead() { + if(!mFile.canRead() && RootTools.isAccessGiven()) + return true; return mFile.canRead(); } @Override public Boolean canWrite() { + if(!mFile.canWrite() && RootTools.isAccessGiven()) + return true; return mFile.canWrite(); } @@ -496,7 +500,9 @@ public Boolean isFile() { @Override public Boolean delete() { Logger.LogDebug("Deleting " + getPath()); - return mFile.delete(); + if(!mFile.delete()) + return new OpenFileRoot(this).delete(); + return true; } @Override diff --git a/src/org/brandroid/openmanager/data/OpenFileRoot.java b/src/org/brandroid/openmanager/data/OpenFileRoot.java index 6f4268f4..0de61543 100644 --- a/src/org/brandroid/openmanager/data/OpenFileRoot.java +++ b/src/org/brandroid/openmanager/data/OpenFileRoot.java @@ -10,6 +10,7 @@ import java.util.Calendar; import java.util.Date; import java.util.List; +import java.util.concurrent.TimeoutException; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -17,9 +18,11 @@ import org.brandroid.openmanager.data.OpenPath.*; import org.brandroid.openmanager.util.FileManager; import org.brandroid.utils.Logger; -import com.stericson.RootTools.Command; import com.stericson.RootTools.RootTools; -import com.stericson.RootTools.Shell; +import com.stericson.RootTools.exceptions.RootToolsException; +import com.stericson.RootTools.execution.Command; +import com.stericson.RootTools.execution.Shell; + import android.annotation.SuppressLint; import android.net.Uri; import android.os.AsyncTask; @@ -363,7 +366,9 @@ public Long lastModified() { @Override public Boolean canWrite() { - if (mPerms != null) + if (RootTools.isAccessGiven()) + return true; + if (mPerms != null && mPerms.length() > 0) return mPerms.indexOf("w") > -1; return getFile().canWrite(); } @@ -371,14 +376,14 @@ public Boolean canWrite() { @SuppressLint("NewApi") @Override public Boolean canExecute() { - if (mPerms != null) + if (mPerms != null && mPerms.length() > 0) return mPerms.indexOf("x") > -1; return Build.VERSION.SDK_INT > 8 ? getFile().canExecute() : true; } @Override public Boolean delete() { - execute("rm -rf " + getPath(), false); + if(execute("rm -rf " + getPath(), false) == null) return false; return true; } @@ -444,24 +449,20 @@ else if (lastModified() <= tmp.lastModified()) } private String execute(final String cmd, boolean useBusyBox) { - final boolean[] waiting = new boolean[] { - true - }; - final String[] ret = new String[] { - "" - }; - final String bb = useBusyBox && RootTools.isBusyboxAvailable() ? "busybox " : ""; try { - new Command(0, 500, bb + cmd) { - @Override - public void output(int id, String line) { - ret[0] = ret[0] + (ret[0] == "" ? "" : "\n") + line; - } - }.waitForFinish(500); - } catch (Exception e) { - Logger.LogError("Could not execute: " + cmd, e); + final List result = RootTools.sendShell(cmd, 500); + return result.get(0); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } catch (RootToolsException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } catch (TimeoutException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); } - return ret[0]; + return null; } public static boolean copy(final OpenPath src, final OpenPath dest) { diff --git a/src/org/brandroid/openmanager/util/RootManager.java b/src/org/brandroid/openmanager/util/RootManager.java index 2905b5b5..b92350cf 100644 --- a/src/org/brandroid/openmanager/util/RootManager.java +++ b/src/org/brandroid/openmanager/util/RootManager.java @@ -23,15 +23,12 @@ import java.io.IOException; import java.lang.Thread.State; import java.util.HashSet; -import java.util.Hashtable; -import java.util.concurrent.TimeoutException; import org.brandroid.openmanager.data.OpenFile; import org.brandroid.utils.ByteQueue; import org.brandroid.utils.Logger; import com.stericson.RootTools.RootTools; -import com.stericson.RootTools.RootToolsException; import android.os.Handler; import android.os.Message; @@ -77,18 +74,22 @@ public interface UpdateCallback { } private boolean mIsRunning = false; - private Handler mMsgHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - if (!mIsRunning) { - Logger.LogWarning("Handler exited"); - return; - } - if (msg.what == NEW_INPUT) { - readFromProcess(); + private Handler mMsgHandler; + + public void setHandler() { + mMsgHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + if (!mIsRunning) { + Logger.LogWarning("Handler exited"); + return; + } + if (msg.what == NEW_INPUT) { + readFromProcess(); + } } - } - }; + }; + } @Override protected void finalize() throws Throwable { From 4c52c49a6f6527e92cbe1d6f4d90c1afb4dc267f Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Fri, 10 May 2013 17:00:23 -0700 Subject: [PATCH 18/76] Menu Item shifts If disabled, don't put menu items in action bar --- src/org/brandroid/openmanager/fragments/ContentFragment.java | 4 ++-- src/org/brandroid/utils/MenuUtils.java | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/org/brandroid/openmanager/fragments/ContentFragment.java b/src/org/brandroid/openmanager/fragments/ContentFragment.java index 4f01f0d8..c367a8c1 100644 --- a/src/org/brandroid/openmanager/fragments/ContentFragment.java +++ b/src/org/brandroid/openmanager/fragments/ContentFragment.java @@ -2398,9 +2398,9 @@ public boolean onMenuItemClick(MenuItem item) { OpenPath last = mContentAdapter.getSelectedSet().get(getSelectedCount() - 1); MenuUtils.setMenuEnabled(menu, writable, R.id.menu_context_delete, - R.id.menu_context_cut); + R.id.menu_context_cut, R.id.menu_context_rename); MenuUtils.setMenuEnabled(menu, readable, R.id.menu_context_copy, R.id.menu_context_cut, - R.id.menu_context_download, R.id.menu_context_rename, R.id.menu_context_zip); + R.id.menu_context_download, R.id.menu_context_zip, R.id.menu_context_share); if(last instanceof CloudOpsHandler) MenuUtils.setMenuShowAsAction(menu, MenuItem.SHOW_AS_ACTION_ALWAYS, R.id.menu_context_download); diff --git a/src/org/brandroid/utils/MenuUtils.java b/src/org/brandroid/utils/MenuUtils.java index 6ca0b23d..704cbd05 100644 --- a/src/org/brandroid/utils/MenuUtils.java +++ b/src/org/brandroid/utils/MenuUtils.java @@ -171,6 +171,8 @@ public static void setMenuEnabled(Menu menu, boolean enabled, int... ids) { item.setEnabled(enabled); if (enabled) item.setVisible(true); + else + item.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); } } From 80a1429644092e784eb1143b5eebab7a28192036 Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Fri, 10 May 2013 17:00:40 -0700 Subject: [PATCH 19/76] Fix SpannableStringBuilder bugs --- .../openmanager/activities/ServerSetupActivity.java | 1 + src/org/brandroid/openmanager/adapters/ContentAdapter.java | 7 ++++--- src/org/brandroid/openmanager/fragments/OpenFragment.java | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/org/brandroid/openmanager/activities/ServerSetupActivity.java b/src/org/brandroid/openmanager/activities/ServerSetupActivity.java index 58305b9e..83a85601 100644 --- a/src/org/brandroid/openmanager/activities/ServerSetupActivity.java +++ b/src/org/brandroid/openmanager/activities/ServerSetupActivity.java @@ -336,6 +336,7 @@ public CharSequence colorify(int resId, int color) { } public static CharSequence colorify(String txt, int color) { + if(txt.equals("")) return txt; if (color != 0) { color = Color.rgb(Color.red(color), Color.green(color), Color.blue(color)); SpannableString line = new SpannableString(txt); diff --git a/src/org/brandroid/openmanager/adapters/ContentAdapter.java b/src/org/brandroid/openmanager/adapters/ContentAdapter.java index be735fb9..830f3e33 100644 --- a/src/org/brandroid/openmanager/adapters/ContentAdapter.java +++ b/src/org/brandroid/openmanager/adapters/ContentAdapter.java @@ -49,6 +49,7 @@ import android.text.Html; import android.text.Spannable; import android.text.SpannableStringBuilder; +import android.text.Spanned; import android.text.style.StyleSpan; import android.util.SparseArray; import android.view.Gravity; @@ -349,10 +350,10 @@ public View getView(int position, View view, ViewGroup parent) { SpannableStringBuilder sInfo = new SpannableStringBuilder(String.format( file.getDetails(getShowHiddenFiles()), getResources() .getString(R.string.s_files))); - if (OpenPath.Sorting.getType() == Type.SIZE - || OpenPath.Sorting.getType() == Type.SIZE_DESC) + if ((OpenPath.Sorting.getType() == Type.SIZE + || OpenPath.Sorting.getType() == Type.SIZE_DESC) && sInfo.length() > 0) sInfo.setSpan(new StyleSpan(Typeface.BOLD), 0, sInfo.length(), - Spannable.SPAN_INCLUSIVE_INCLUSIVE); + Spanned.SPAN_COMPOSING); if (mShowDetails && mParent.showChildPath()) { sInfo.append(" :: " + file.getPath().replace(file.getName(), "")); showLongDate = false; diff --git a/src/org/brandroid/openmanager/fragments/OpenFragment.java b/src/org/brandroid/openmanager/fragments/OpenFragment.java index 260dd191..053c8609 100644 --- a/src/org/brandroid/openmanager/fragments/OpenFragment.java +++ b/src/org/brandroid/openmanager/fragments/OpenFragment.java @@ -79,7 +79,7 @@ public abstract class OpenFragment extends SherlockFragment implements View.OnCl // public static boolean CONTENT_FRAGMENT_FREE = true; // public boolean isFragmentValid = true; private boolean mHasOptions = false; - protected boolean DEBUG = OpenExplorer.IS_DEBUG_BUILD && true; + protected boolean DEBUG = OpenExplorer.IS_DEBUG_BUILD && false; private OnFragmentDPADListener mDPAD = null; private boolean mDestroyed = false; From 6a412fb0030c20d602f7399a762732aca0da4c38 Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Fri, 10 May 2013 17:11:00 -0700 Subject: [PATCH 20/76] Comic Book filetypes --- res/xml/mimetypes.xml | 6 ++++++ .../brandroid/openmanager/fragments/ContentFragment.java | 8 +++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/res/xml/mimetypes.xml b/res/xml/mimetypes.xml index a39d5a05..532ce296 100644 --- a/res/xml/mimetypes.xml +++ b/res/xml/mimetypes.xml @@ -105,9 +105,15 @@ + + diff --git a/src/org/brandroid/openmanager/fragments/ContentFragment.java b/src/org/brandroid/openmanager/fragments/ContentFragment.java index c367a8c1..8b29d944 100644 --- a/src/org/brandroid/openmanager/fragments/ContentFragment.java +++ b/src/org/brandroid/openmanager/fragments/ContentFragment.java @@ -824,11 +824,13 @@ private void extractSet(final OpenPath archive, final OpenPath dest, final Strin private void browseArchive(OpenPath archive) { - if (archive.getExtension().equalsIgnoreCase("zip")) + String mime = archive.getMimeType(); + String ext = archive.getExtension(); + if (mime.equals("application/zip")) getExplorer().changePath(new OpenZip((OpenFile)archive)); - else if (archive.getMimeType().endsWith("rar")) + else if (mime.endsWith("rar")) getExplorer().changePath(new OpenRAR((OpenFile)archive)); - else if (archive.getMimeType().contains("7z") || archive.getMimeType().contains("lzma")) + else if (mime.contains("7z") || mime.contains("lzma")) getExplorer().changePath(new OpenLZMA((OpenFile)archive)); else getExplorer().changePath(new OpenTar((OpenFile)archive)); From b59f15b17d2a591c0658102adb957fc2bf9c3454 Mon Sep 17 00:00:00 2001 From: Brandon Bowles Date: Fri, 10 May 2013 20:06:30 -0700 Subject: [PATCH 21/76] v229 Manifest Update --- AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 194755d0..83dbddde 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -19,8 +19,8 @@ + android:versionCode="229" + android:versionName="0.229" > Date: Fri, 10 May 2013 20:46:45 -0700 Subject: [PATCH 22/76] Dialog when Large implementation --- AndroidManifest.xml | 4 +++- res/values/themes.xml | 4 ++-- .../openmanager/activities/ServerSetupActivity.java | 11 +++++------ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 83dbddde..773fc7fb 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -60,7 +60,7 @@ android:name="org.brandroid.openmanager.activities.OpenApplication" android:allowBackup="true" android:icon="@drawable/icon_flat" - android:label="@string/app_name" + android:label="@string/app_name" android:largeHeap="true" android:theme="@style/AppTheme.Dark" > diff --git a/res/values/themes.xml b/res/values/themes.xml index 569f31a8..f2ababce 100644 --- a/res/values/themes.xml +++ b/res/values/themes.xml @@ -319,7 +319,7 @@ - -

    KHw)HPj=l{+#KFPH{ae*6wHU- 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 literal 0 HcmV?d00001 diff --git a/src/com/google/common/annotations/Beta.java b/src/com/google/common/annotations/Beta.java deleted file mode 100644 index 5eefe9ab..00000000 --- a/src/com/google/common/annotations/Beta.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (C) 2010 The Guava Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.common.annotations; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Signifies that a public API (public class, method or field) is subject to - * incompatible changes, or even removal, in a future release. An API bearing - * this annotation is exempt from any compatibility guarantees made by its - * containing library. Note that the presence of this annotation implies nothing - * about the quality or performance of the API in question, only the fact that - * it is not "API-frozen." - * - *

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%0DF=*H@b*>PY=}L1tDRE@0pOuK3qa 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